├── .eslintignore
├── public
├── robots.txt
├── favicon.png
├── img
│ └── icons
│ │ ├── favicon-16x16.png
│ │ ├── favicon-32x32.png
│ │ ├── mstile-150x150.png
│ │ ├── apple-touch-icon.png
│ │ ├── android-chrome-192x192.png
│ │ ├── android-chrome-512x512.png
│ │ ├── apple-touch-icon-60x60.png
│ │ ├── apple-touch-icon-76x76.png
│ │ ├── apple-touch-icon-120x120.png
│ │ ├── apple-touch-icon-152x152.png
│ │ ├── apple-touch-icon-180x180.png
│ │ ├── msapplication-icon-144x144.png
│ │ ├── android-chrome-maskable-192x192.png
│ │ ├── android-chrome-maskable-512x512.png
│ │ └── safari-pinned-tab.svg
├── index.html
└── data.json
├── src
├── assets
│ ├── stylus
│ │ ├── index.styl
│ │ ├── mixin.styl
│ │ ├── base.styl
│ │ ├── variable.styl
│ │ ├── icon.styl
│ │ └── theme.styl
│ └── fonts
│ │ ├── sell-icon.eot
│ │ ├── sell-icon.ttf
│ │ ├── sell-icon.woff
│ │ └── sell-icon.svg
├── components
│ ├── star
│ │ ├── star24_on@2x.png
│ │ ├── star24_on@3x.png
│ │ ├── star36_on@2x.png
│ │ ├── star36_on@3x.png
│ │ ├── star48_on@2x.png
│ │ ├── star48_on@3x.png
│ │ ├── star24_half@2x.png
│ │ ├── star24_half@3x.png
│ │ ├── star24_off@2x.png
│ │ ├── star24_off@3x.png
│ │ ├── star36_half@2x.png
│ │ ├── star36_half@3x.png
│ │ ├── star36_off@2x.png
│ │ ├── star36_off@3x.png
│ │ ├── star48_half@2x.png
│ │ ├── star48_half@3x.png
│ │ ├── star48_off@2x.png
│ │ ├── star48_off@3x.png
│ │ └── star.vue
│ ├── v-header
│ │ ├── brand@2x.png
│ │ ├── brand@3x.png
│ │ ├── bulletin@2x.png
│ │ ├── bulletin@3x.png
│ │ └── v-header.vue
│ ├── support-ico
│ │ ├── invoice_1@2x.png
│ │ ├── invoice_1@3x.png
│ │ ├── invoice_2@2x.png
│ │ ├── invoice_2@3x.png
│ │ ├── invoice_3@2x.png
│ │ ├── invoice_3@3x.png
│ │ ├── invoice_4@2x.png
│ │ ├── invoice_4@3x.png
│ │ ├── special_1@2x.png
│ │ ├── special_1@3x.png
│ │ ├── special_2@2x.png
│ │ ├── special_2@3x.png
│ │ ├── special_3@2x.png
│ │ ├── special_3@3x.png
│ │ ├── special_4@2x.png
│ │ ├── special_4@3x.png
│ │ ├── decrease_1@2x.png
│ │ ├── decrease_1@3x.png
│ │ ├── decrease_2@2x.png
│ │ ├── decrease_2@3x.png
│ │ ├── decrease_3@2x.png
│ │ ├── decrease_3@3x.png
│ │ ├── decrease_4@2x.png
│ │ ├── decrease_4@3x.png
│ │ ├── discount_1@2x.png
│ │ ├── discount_1@3x.png
│ │ ├── discount_2@2x.png
│ │ ├── discount_2@3x.png
│ │ ├── discount_3@2x.png
│ │ ├── discount_3@3x.png
│ │ ├── discount_4@2x.png
│ │ ├── discount_4@3x.png
│ │ ├── guarantee_1@2x.png
│ │ ├── guarantee_1@3x.png
│ │ ├── guarantee_2@2x.png
│ │ ├── guarantee_2@3x.png
│ │ ├── guarantee_3@2x.png
│ │ ├── guarantee_3@3x.png
│ │ ├── guarantee_4@2x.png
│ │ ├── guarantee_4@3x.png
│ │ └── support-ico.vue
│ ├── split
│ │ └── split.vue
│ ├── bubble
│ │ └── bubble.vue
│ ├── shop-cart-sticky
│ │ └── shop-cart-sticky.vue
│ ├── cart-control
│ │ └── cart-control.vue
│ ├── tab
│ │ └── tab.vue
│ ├── rating-select
│ │ └── rating-select.vue
│ ├── shop-cart-list
│ │ └── shop-cart-list.vue
│ ├── header-detail
│ │ └── header-detail.vue
│ ├── seller
│ │ └── seller.vue
│ ├── ratings
│ │ └── ratings.vue
│ ├── goods
│ │ └── goods.vue
│ ├── food
│ │ └── food.vue
│ └── shop-cart
│ │ └── shop-cart.vue
├── main.js
├── utils
│ ├── mixins
│ │ ├── popup.js
│ │ └── rating.js
│ ├── register.js
│ └── storage.js
├── api
│ ├── request.js
│ └── index.js
├── configs
│ ├── registerServiceWorker.js
│ └── cube-ui.js
└── App.vue
├── .browserslistrc
├── babel.config.js
├── docs
├── images
│ └── create-api原理.png
└── server
│ └── prod.server.js
├── .editorconfig
├── alias.config.js
├── jsconfig.json
├── .gitignore
├── README.md
├── .github
└── workflows
│ └── deploy.yml
├── .commitlintrc.js
├── .eslintrc.js
├── LICENSE
├── package.json
└── vue.config.js
/.eslintignore:
--------------------------------------------------------------------------------
1 | public
2 | dist
3 |
--------------------------------------------------------------------------------
/public/robots.txt:
--------------------------------------------------------------------------------
1 | User-agent: *
2 | Disallow:
3 |
--------------------------------------------------------------------------------
/src/assets/stylus/index.styl:
--------------------------------------------------------------------------------
1 | @import "./icon.styl"
2 | @import "./base.styl"
3 |
--------------------------------------------------------------------------------
/src/assets/stylus/mixin.styl:
--------------------------------------------------------------------------------
1 | @import "~cube-ui/src/common/stylus/mixin.styl"
2 |
--------------------------------------------------------------------------------
/public/favicon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/wkl007/vue-sell/HEAD/public/favicon.png
--------------------------------------------------------------------------------
/src/assets/stylus/base.styl:
--------------------------------------------------------------------------------
1 | html, body
2 | height: 100%
3 | overflow: hidden
4 |
--------------------------------------------------------------------------------
/.browserslistrc:
--------------------------------------------------------------------------------
1 | > 1%
2 | last 2 versions
3 |
4 | not ie <= 11
5 | Android >= 4.0
6 | iOS >= 8
7 |
--------------------------------------------------------------------------------
/babel.config.js:
--------------------------------------------------------------------------------
1 | module.exports = {
2 | presets: [
3 | '@vue/cli-plugin-babel/preset'
4 | ]
5 | }
6 |
--------------------------------------------------------------------------------
/docs/images/create-api原理.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/wkl007/vue-sell/HEAD/docs/images/create-api原理.png
--------------------------------------------------------------------------------
/src/assets/fonts/sell-icon.eot:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/wkl007/vue-sell/HEAD/src/assets/fonts/sell-icon.eot
--------------------------------------------------------------------------------
/src/assets/fonts/sell-icon.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/wkl007/vue-sell/HEAD/src/assets/fonts/sell-icon.ttf
--------------------------------------------------------------------------------
/src/assets/fonts/sell-icon.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/wkl007/vue-sell/HEAD/src/assets/fonts/sell-icon.woff
--------------------------------------------------------------------------------
/public/img/icons/favicon-16x16.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/wkl007/vue-sell/HEAD/public/img/icons/favicon-16x16.png
--------------------------------------------------------------------------------
/public/img/icons/favicon-32x32.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/wkl007/vue-sell/HEAD/public/img/icons/favicon-32x32.png
--------------------------------------------------------------------------------
/public/img/icons/mstile-150x150.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/wkl007/vue-sell/HEAD/public/img/icons/mstile-150x150.png
--------------------------------------------------------------------------------
/src/components/star/star24_on@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/wkl007/vue-sell/HEAD/src/components/star/star24_on@2x.png
--------------------------------------------------------------------------------
/src/components/star/star24_on@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/wkl007/vue-sell/HEAD/src/components/star/star24_on@3x.png
--------------------------------------------------------------------------------
/src/components/star/star36_on@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/wkl007/vue-sell/HEAD/src/components/star/star36_on@2x.png
--------------------------------------------------------------------------------
/src/components/star/star36_on@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/wkl007/vue-sell/HEAD/src/components/star/star36_on@3x.png
--------------------------------------------------------------------------------
/src/components/star/star48_on@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/wkl007/vue-sell/HEAD/src/components/star/star48_on@2x.png
--------------------------------------------------------------------------------
/src/components/star/star48_on@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/wkl007/vue-sell/HEAD/src/components/star/star48_on@3x.png
--------------------------------------------------------------------------------
/src/components/v-header/brand@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/wkl007/vue-sell/HEAD/src/components/v-header/brand@2x.png
--------------------------------------------------------------------------------
/src/components/v-header/brand@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/wkl007/vue-sell/HEAD/src/components/v-header/brand@3x.png
--------------------------------------------------------------------------------
/public/img/icons/apple-touch-icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/wkl007/vue-sell/HEAD/public/img/icons/apple-touch-icon.png
--------------------------------------------------------------------------------
/src/components/star/star24_half@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/wkl007/vue-sell/HEAD/src/components/star/star24_half@2x.png
--------------------------------------------------------------------------------
/src/components/star/star24_half@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/wkl007/vue-sell/HEAD/src/components/star/star24_half@3x.png
--------------------------------------------------------------------------------
/src/components/star/star24_off@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/wkl007/vue-sell/HEAD/src/components/star/star24_off@2x.png
--------------------------------------------------------------------------------
/src/components/star/star24_off@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/wkl007/vue-sell/HEAD/src/components/star/star24_off@3x.png
--------------------------------------------------------------------------------
/src/components/star/star36_half@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/wkl007/vue-sell/HEAD/src/components/star/star36_half@2x.png
--------------------------------------------------------------------------------
/src/components/star/star36_half@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/wkl007/vue-sell/HEAD/src/components/star/star36_half@3x.png
--------------------------------------------------------------------------------
/src/components/star/star36_off@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/wkl007/vue-sell/HEAD/src/components/star/star36_off@2x.png
--------------------------------------------------------------------------------
/src/components/star/star36_off@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/wkl007/vue-sell/HEAD/src/components/star/star36_off@3x.png
--------------------------------------------------------------------------------
/src/components/star/star48_half@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/wkl007/vue-sell/HEAD/src/components/star/star48_half@2x.png
--------------------------------------------------------------------------------
/src/components/star/star48_half@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/wkl007/vue-sell/HEAD/src/components/star/star48_half@3x.png
--------------------------------------------------------------------------------
/src/components/star/star48_off@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/wkl007/vue-sell/HEAD/src/components/star/star48_off@2x.png
--------------------------------------------------------------------------------
/src/components/star/star48_off@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/wkl007/vue-sell/HEAD/src/components/star/star48_off@3x.png
--------------------------------------------------------------------------------
/src/components/v-header/bulletin@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/wkl007/vue-sell/HEAD/src/components/v-header/bulletin@2x.png
--------------------------------------------------------------------------------
/src/components/v-header/bulletin@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/wkl007/vue-sell/HEAD/src/components/v-header/bulletin@3x.png
--------------------------------------------------------------------------------
/public/img/icons/android-chrome-192x192.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/wkl007/vue-sell/HEAD/public/img/icons/android-chrome-192x192.png
--------------------------------------------------------------------------------
/public/img/icons/android-chrome-512x512.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/wkl007/vue-sell/HEAD/public/img/icons/android-chrome-512x512.png
--------------------------------------------------------------------------------
/public/img/icons/apple-touch-icon-60x60.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/wkl007/vue-sell/HEAD/public/img/icons/apple-touch-icon-60x60.png
--------------------------------------------------------------------------------
/public/img/icons/apple-touch-icon-76x76.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/wkl007/vue-sell/HEAD/public/img/icons/apple-touch-icon-76x76.png
--------------------------------------------------------------------------------
/src/components/support-ico/invoice_1@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/wkl007/vue-sell/HEAD/src/components/support-ico/invoice_1@2x.png
--------------------------------------------------------------------------------
/src/components/support-ico/invoice_1@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/wkl007/vue-sell/HEAD/src/components/support-ico/invoice_1@3x.png
--------------------------------------------------------------------------------
/src/components/support-ico/invoice_2@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/wkl007/vue-sell/HEAD/src/components/support-ico/invoice_2@2x.png
--------------------------------------------------------------------------------
/src/components/support-ico/invoice_2@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/wkl007/vue-sell/HEAD/src/components/support-ico/invoice_2@3x.png
--------------------------------------------------------------------------------
/src/components/support-ico/invoice_3@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/wkl007/vue-sell/HEAD/src/components/support-ico/invoice_3@2x.png
--------------------------------------------------------------------------------
/src/components/support-ico/invoice_3@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/wkl007/vue-sell/HEAD/src/components/support-ico/invoice_3@3x.png
--------------------------------------------------------------------------------
/src/components/support-ico/invoice_4@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/wkl007/vue-sell/HEAD/src/components/support-ico/invoice_4@2x.png
--------------------------------------------------------------------------------
/src/components/support-ico/invoice_4@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/wkl007/vue-sell/HEAD/src/components/support-ico/invoice_4@3x.png
--------------------------------------------------------------------------------
/src/components/support-ico/special_1@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/wkl007/vue-sell/HEAD/src/components/support-ico/special_1@2x.png
--------------------------------------------------------------------------------
/src/components/support-ico/special_1@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/wkl007/vue-sell/HEAD/src/components/support-ico/special_1@3x.png
--------------------------------------------------------------------------------
/src/components/support-ico/special_2@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/wkl007/vue-sell/HEAD/src/components/support-ico/special_2@2x.png
--------------------------------------------------------------------------------
/src/components/support-ico/special_2@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/wkl007/vue-sell/HEAD/src/components/support-ico/special_2@3x.png
--------------------------------------------------------------------------------
/src/components/support-ico/special_3@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/wkl007/vue-sell/HEAD/src/components/support-ico/special_3@2x.png
--------------------------------------------------------------------------------
/src/components/support-ico/special_3@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/wkl007/vue-sell/HEAD/src/components/support-ico/special_3@3x.png
--------------------------------------------------------------------------------
/src/components/support-ico/special_4@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/wkl007/vue-sell/HEAD/src/components/support-ico/special_4@2x.png
--------------------------------------------------------------------------------
/src/components/support-ico/special_4@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/wkl007/vue-sell/HEAD/src/components/support-ico/special_4@3x.png
--------------------------------------------------------------------------------
/public/img/icons/apple-touch-icon-120x120.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/wkl007/vue-sell/HEAD/public/img/icons/apple-touch-icon-120x120.png
--------------------------------------------------------------------------------
/public/img/icons/apple-touch-icon-152x152.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/wkl007/vue-sell/HEAD/public/img/icons/apple-touch-icon-152x152.png
--------------------------------------------------------------------------------
/public/img/icons/apple-touch-icon-180x180.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/wkl007/vue-sell/HEAD/public/img/icons/apple-touch-icon-180x180.png
--------------------------------------------------------------------------------
/src/components/support-ico/decrease_1@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/wkl007/vue-sell/HEAD/src/components/support-ico/decrease_1@2x.png
--------------------------------------------------------------------------------
/src/components/support-ico/decrease_1@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/wkl007/vue-sell/HEAD/src/components/support-ico/decrease_1@3x.png
--------------------------------------------------------------------------------
/src/components/support-ico/decrease_2@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/wkl007/vue-sell/HEAD/src/components/support-ico/decrease_2@2x.png
--------------------------------------------------------------------------------
/src/components/support-ico/decrease_2@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/wkl007/vue-sell/HEAD/src/components/support-ico/decrease_2@3x.png
--------------------------------------------------------------------------------
/src/components/support-ico/decrease_3@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/wkl007/vue-sell/HEAD/src/components/support-ico/decrease_3@2x.png
--------------------------------------------------------------------------------
/src/components/support-ico/decrease_3@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/wkl007/vue-sell/HEAD/src/components/support-ico/decrease_3@3x.png
--------------------------------------------------------------------------------
/src/components/support-ico/decrease_4@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/wkl007/vue-sell/HEAD/src/components/support-ico/decrease_4@2x.png
--------------------------------------------------------------------------------
/src/components/support-ico/decrease_4@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/wkl007/vue-sell/HEAD/src/components/support-ico/decrease_4@3x.png
--------------------------------------------------------------------------------
/src/components/support-ico/discount_1@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/wkl007/vue-sell/HEAD/src/components/support-ico/discount_1@2x.png
--------------------------------------------------------------------------------
/src/components/support-ico/discount_1@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/wkl007/vue-sell/HEAD/src/components/support-ico/discount_1@3x.png
--------------------------------------------------------------------------------
/src/components/support-ico/discount_2@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/wkl007/vue-sell/HEAD/src/components/support-ico/discount_2@2x.png
--------------------------------------------------------------------------------
/src/components/support-ico/discount_2@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/wkl007/vue-sell/HEAD/src/components/support-ico/discount_2@3x.png
--------------------------------------------------------------------------------
/src/components/support-ico/discount_3@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/wkl007/vue-sell/HEAD/src/components/support-ico/discount_3@2x.png
--------------------------------------------------------------------------------
/src/components/support-ico/discount_3@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/wkl007/vue-sell/HEAD/src/components/support-ico/discount_3@3x.png
--------------------------------------------------------------------------------
/src/components/support-ico/discount_4@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/wkl007/vue-sell/HEAD/src/components/support-ico/discount_4@2x.png
--------------------------------------------------------------------------------
/src/components/support-ico/discount_4@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/wkl007/vue-sell/HEAD/src/components/support-ico/discount_4@3x.png
--------------------------------------------------------------------------------
/src/components/support-ico/guarantee_1@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/wkl007/vue-sell/HEAD/src/components/support-ico/guarantee_1@2x.png
--------------------------------------------------------------------------------
/src/components/support-ico/guarantee_1@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/wkl007/vue-sell/HEAD/src/components/support-ico/guarantee_1@3x.png
--------------------------------------------------------------------------------
/src/components/support-ico/guarantee_2@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/wkl007/vue-sell/HEAD/src/components/support-ico/guarantee_2@2x.png
--------------------------------------------------------------------------------
/src/components/support-ico/guarantee_2@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/wkl007/vue-sell/HEAD/src/components/support-ico/guarantee_2@3x.png
--------------------------------------------------------------------------------
/src/components/support-ico/guarantee_3@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/wkl007/vue-sell/HEAD/src/components/support-ico/guarantee_3@2x.png
--------------------------------------------------------------------------------
/src/components/support-ico/guarantee_3@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/wkl007/vue-sell/HEAD/src/components/support-ico/guarantee_3@3x.png
--------------------------------------------------------------------------------
/src/components/support-ico/guarantee_4@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/wkl007/vue-sell/HEAD/src/components/support-ico/guarantee_4@2x.png
--------------------------------------------------------------------------------
/src/components/support-ico/guarantee_4@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/wkl007/vue-sell/HEAD/src/components/support-ico/guarantee_4@3x.png
--------------------------------------------------------------------------------
/public/img/icons/msapplication-icon-144x144.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/wkl007/vue-sell/HEAD/public/img/icons/msapplication-icon-144x144.png
--------------------------------------------------------------------------------
/.editorconfig:
--------------------------------------------------------------------------------
1 | [*.{js,jsx,ts,tsx,vue}]
2 | indent_style = space
3 | indent_size = 2
4 | trim_trailing_whitespace = true
5 | insert_final_newline = true
6 |
--------------------------------------------------------------------------------
/public/img/icons/android-chrome-maskable-192x192.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/wkl007/vue-sell/HEAD/public/img/icons/android-chrome-maskable-192x192.png
--------------------------------------------------------------------------------
/public/img/icons/android-chrome-maskable-512x512.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/wkl007/vue-sell/HEAD/public/img/icons/android-chrome-maskable-512x512.png
--------------------------------------------------------------------------------
/alias.config.js:
--------------------------------------------------------------------------------
1 | const resolve = dir => require('path').join(__dirname, dir)
2 |
3 | module.exports = {
4 | resolve: {
5 | alias: {
6 | '@': resolve('src'),
7 | }
8 | }
9 | }
10 |
--------------------------------------------------------------------------------
/jsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "compilerOptions": {
3 | "baseUrl": ".",
4 | "paths": {
5 | "@/*": [
6 | "src/*"
7 | ]
8 | }
9 | },
10 | "exclude": [
11 | "node_modules",
12 | "dist"
13 | ]
14 | }
15 |
--------------------------------------------------------------------------------
/src/components/split/split.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
15 |
17 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | .DS_Store
2 | node_modules
3 | /dist
4 |
5 | # local env files
6 | .env.local
7 | .env.*.local
8 |
9 | # Log files
10 | npm-debug.log*
11 | yarn-debug.log*
12 | yarn-error.log*
13 |
14 | # Editor directories and files
15 | .idea
16 | .vscode
17 | *.suo
18 | *.ntvs*
19 | *.njsproj
20 | *.sln
21 | *.sw?
22 |
--------------------------------------------------------------------------------
/src/main.js:
--------------------------------------------------------------------------------
1 | import Vue from 'vue'
2 | import App from '@/App.vue'
3 | import '@/configs/cube-ui'
4 | import '@/configs/registerServiceWorker'
5 | import '@/utils/register'
6 |
7 | import '@/assets/stylus/base.styl'
8 |
9 | Vue.config.productionTip = false
10 |
11 | new Vue({
12 | render: h => h(App)
13 | }).$mount('#app')
14 |
--------------------------------------------------------------------------------
/src/utils/mixins/popup.js:
--------------------------------------------------------------------------------
1 | const EVENT_SHOW = 'show'
2 | const EVENT_HIDE = 'hide'
3 |
4 | export default {
5 | data () {
6 | return {
7 | visible: false
8 | }
9 | },
10 | methods: {
11 | show () {
12 | this.visible = true
13 | this.$emit(EVENT_SHOW)
14 | },
15 | hide () {
16 | this.visible = false
17 | this.$emit(EVENT_HIDE)
18 | }
19 | }
20 | }
21 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # vue-sell
2 |
3 | ## Project setup
4 | ```shell
5 | yarn install
6 | ```
7 |
8 | ### Compiles and hot-reloads for development
9 | ```shell
10 | yarn serve
11 | ```
12 |
13 | ### Compiles and minifies for production
14 | ```shell
15 | yarn build
16 | ```
17 |
18 | ### Lints and fixes files
19 | ```shell
20 | yarn lint
21 | ```
22 |
23 | ### Customize configuration
24 | See [Configuration Reference](https://cli.vuejs.org/config/).
25 |
--------------------------------------------------------------------------------
/src/utils/register.js:
--------------------------------------------------------------------------------
1 | import Vue from 'vue'
2 | import { createAPI } from 'cube-ui'
3 | import HeaderDetail from '@/components/header-detail/header-detail'
4 | import ShopCartList from '@/components/shop-cart-list/shop-cart-list'
5 | import ShopCartSticky from '@/components/shop-cart-sticky/shop-cart-sticky'
6 | import Food from '@/components/food/food'
7 |
8 | createAPI(Vue, HeaderDetail)
9 | createAPI(Vue, ShopCartList)
10 | createAPI(Vue, ShopCartSticky)
11 | createAPI(Vue, Food)
12 |
--------------------------------------------------------------------------------
/src/utils/storage.js:
--------------------------------------------------------------------------------
1 | import storage from 'good-storage'
2 |
3 | const SELLER_KEY = '__seller__'
4 |
5 | export function saveToLocal (id, key, val) {
6 | const seller = storage.get(SELLER_KEY, {})
7 | if (!seller[id]) {
8 | seller[id] = {}
9 | }
10 | seller[id][key] = val
11 | storage.set(SELLER_KEY, seller)
12 | }
13 |
14 | export function loadFromLocal (id, key, def) {
15 | const seller = storage.get(SELLER_KEY, {})
16 | if (!seller[id]) {
17 | return def
18 | }
19 | return seller[id][key] || def
20 | }
21 |
--------------------------------------------------------------------------------
/src/assets/stylus/variable.styl:
--------------------------------------------------------------------------------
1 | @import "~cube-ui/src/common/stylus/variable.styl"
2 |
3 | $color-background = rgba(7, 17, 27, 1)
4 | $color-background-s = rgba(7, 17, 27, 0.8)
5 | $color-background-ss = rgba(7, 17, 27, 0.5)
6 | $color-background-sss = rgba(7, 17, 27, 0.2)
7 | $color-background-ssss = #f3f5f7
8 |
9 | $color-red = rgb(240, 20, 20)
10 | $color-blue = rgb(0, 160, 220)
11 | $color-light-blue = rgba(0, 160, 220, 0.2)
12 | $color-green = #00b43c
13 |
14 | $color-col-line = #d9dde1
15 | $color-row-line = rgba(7, 17, 27, 0.1)
16 |
--------------------------------------------------------------------------------
/src/api/request.js:
--------------------------------------------------------------------------------
1 | import axios from 'axios'
2 |
3 | const service = axios.create({
4 | baseURL: 'https://vue-sell-1256738511.cos.ap-chengdu.myqcloud.com/', // api的base_url
5 | timeout: 5000, // request timeout
6 | })
7 |
8 | // http 请求拦截器
9 | service.interceptors.request.use(config => {
10 | return config
11 | }, error => {
12 | return Promise.reject(error)
13 | })
14 |
15 | // http 响应拦截器
16 | service.interceptors.response.use(response => {
17 | const res = response.data
18 | if (res.status === 1) {
19 | return res.data
20 | }
21 | }, error => {
22 | return Promise.reject(error)
23 | })
24 |
25 | export default service
26 |
--------------------------------------------------------------------------------
/.github/workflows/deploy.yml:
--------------------------------------------------------------------------------
1 | name: Vue Sell
2 | on: [push]
3 | jobs:
4 | build-and-deploy:
5 | runs-on: ubuntu-latest
6 | steps:
7 | - name: Checkout
8 | uses: actions/checkout@v2.0.0
9 | with:
10 | ref: master
11 | - name: Install
12 | run: |
13 | npm install
14 | npm run-script lint
15 | npm run-script build
16 | - name: Deploy
17 | uses: JamesIves/github-pages-deploy-action@releases/v3
18 | with:
19 | ACCESS_TOKEN: ${{ secrets.ACCESS_TOKEN }}
20 | BASE_BRANCH: master
21 | BRANCH: gh-pages
22 | FOLDER: dist
23 | CLEAN: true
24 |
--------------------------------------------------------------------------------
/src/api/index.js:
--------------------------------------------------------------------------------
1 | import request from '@/api/request'
2 |
3 | export default class ApiServer {
4 | // 获取商家信息
5 | static getSeller (params) {
6 | const url = 'seller.json'
7 | return request({
8 | url: url,
9 | method: 'get',
10 | params: params,
11 | })
12 | }
13 |
14 | // 获取商品信息
15 | static getGoods (params) {
16 | const url = 'goods.json'
17 | return request({
18 | url: url,
19 | method: 'get',
20 | params: params,
21 | })
22 | }
23 |
24 | // 获取评论信息
25 | static getRatings (params) {
26 | const url = 'ratings.json'
27 | return request({
28 | url: url,
29 | method: 'get',
30 | params: params,
31 | })
32 | }
33 | }
34 |
--------------------------------------------------------------------------------
/src/utils/mixins/rating.js:
--------------------------------------------------------------------------------
1 | const ALL = 2
2 |
3 | export default {
4 | data () {
5 | return {
6 | selectType: ALL,
7 | onlyContent: true,
8 | }
9 | },
10 | computed: {
11 | computedRatings () {
12 | const ret = []
13 | this.ratings.forEach((rating) => {
14 | if (this.onlyContent && !rating.text) return
15 | if (this.selectType === ALL || rating.rateType === this.selectType) {
16 | ret.push(rating)
17 | }
18 | })
19 | return ret
20 | },
21 | },
22 | methods: {
23 | onSelect (type) {
24 | this.selectType = type
25 | },
26 | onToggle () {
27 | this.onlyContent = !this.onlyContent
28 | },
29 | },
30 | }
31 |
--------------------------------------------------------------------------------
/src/components/bubble/bubble.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 | {{num}}
4 |
5 |
6 |
7 |
18 |
34 |
--------------------------------------------------------------------------------
/public/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 | <%= htmlWebpackPlugin.options.title %>
13 |
14 |
15 |
19 |
20 |
21 |
22 |
23 |
--------------------------------------------------------------------------------
/.commitlintrc.js:
--------------------------------------------------------------------------------
1 | module.exports = {
2 | extends: ['@commitlint/config-conventional'],
3 | rules: {
4 | 'subject-case': [0, 'never'],
5 | 'type-enum': [
6 | 2,
7 | 'always',
8 | [
9 | 'build', // 构建
10 | 'ci', // ci配置,脚本文件等更新
11 | 'chore', // Other changes that don't modify src or test files. 改变构建流程、或者增加依赖库、工具等
12 | 'docs', // Adds or alters documentation. 仅仅修改了文档,比如README, CHANGELOG, CONTRIBUTE等等
13 | 'feat', // Adds a new feature. 新增feature
14 | 'fix', // Solves a bug. 修复bug
15 | 'perf', // Improves performance. 优化相关,比如提升性能、体验
16 | 'refactor', // Rewrites code without feature, performance or bug changes. 代码重构,没有加新功能或者修复bug
17 | 'revert', // Reverts a previous commit. 回滚到上一个版本
18 | 'style', // Improves formatting, white-space. 仅仅修改了空格、格式缩进、逗号等等,不改变代码逻辑
19 | 'test' // Adds or modifies tests. 测试用例,包括单元测试、集成测试等
20 | ]
21 | ]
22 | }
23 | }
24 |
--------------------------------------------------------------------------------
/docs/server/prod.server.js:
--------------------------------------------------------------------------------
1 | const express = require('express')
2 |
3 | const app = express()
4 |
5 | const appData = require('./data.json')
6 | const seller = appData.seller
7 | const goods = appData.goods
8 | const ratings = appData.ratings
9 |
10 | const router = express.Router()
11 |
12 | router.get('/seller', function (req, res) {
13 | res.json({
14 | errno: 0,
15 | data: seller
16 | })
17 | })
18 |
19 | router.get('/goods', function (req, res) {
20 | res.json({
21 | errno: 0,
22 | data: goods
23 | })
24 | })
25 |
26 | router.get('/ratings', function (req, res) {
27 | res.json({
28 | errno: 0,
29 | data: ratings
30 | })
31 | })
32 |
33 | app.use('/api', router)
34 |
35 | app.use(express.static('./dist'))
36 |
37 | const port = process.env.PORT || 8900
38 |
39 | module.exports = app.listen(port, function (err) {
40 | if (err) {
41 | console.log(err)
42 | return
43 | }
44 | console.log('Listening at http://localhost:' + port + '\n')
45 | })
46 |
--------------------------------------------------------------------------------
/.eslintrc.js:
--------------------------------------------------------------------------------
1 | module.exports = {
2 | root: true,
3 | parserOptions: {
4 | parser: 'babel-eslint',
5 | sourceType: 'module'
6 | },
7 | env: {
8 | browser: true,
9 | node: true,
10 | es6: true,
11 | },
12 | extends: [
13 | 'plugin:vue/essential',
14 | '@vue/standard'
15 | ],
16 | rules: {
17 | camelcase: 0, // 强制驼峰法命名
18 | 'comma-dangle': [0, 'never'], // 对象字面量项尾不能有逗号
19 | 'handle-callback-err': 0, // nodejs 处理错误
20 | 'no-console': 0, // 禁止使用console
21 | 'no-debugger': process.env.NODE_ENV === 'production' ? 'error' : 'off',
22 | 'no-unused-vars': [0, {
23 | // 允许声明未使用变量
24 | vars: 'local',
25 | // 参数不检查
26 | args: 'none'
27 | }],
28 | 'no-undef': 0, // 不能有未定义的变量
29 | 'object-curly-spacing': [0, 'never'], // 大括号内是否允许不必要的空格
30 | 'space-before-function-paren': 0, // 函数定义时括号前面要不要有空格
31 | 'spaced-comment': 2, // 注释空格
32 | 'vue/no-unused-vars': 0,
33 | 'standard/no-callback-literal': 0
34 | },
35 | }
36 |
--------------------------------------------------------------------------------
/src/configs/registerServiceWorker.js:
--------------------------------------------------------------------------------
1 | /* eslint-disable no-console */
2 |
3 | import { register } from 'register-service-worker'
4 |
5 | if (process.env.NODE_ENV === 'production') {
6 | register(`${process.env.BASE_URL}service-worker.js`, {
7 | ready () {
8 | console.log(
9 | 'App is being served from cache by a service worker.\n' +
10 | 'For more details, visit https://goo.gl/AFskqB'
11 | )
12 | },
13 | registered () {
14 | console.log('Service worker has been registered.')
15 | },
16 | cached () {
17 | console.log('Content has been cached for offline use.')
18 | },
19 | updatefound () {
20 | console.log('New content is downloading.')
21 | },
22 | updated () {
23 | console.log('New content is available; please refresh.')
24 | },
25 | offline () {
26 | console.log('No internet connection found. App is running in offline mode.')
27 | },
28 | error (error) {
29 | console.error('Error during service worker registration:', error)
30 | }
31 | })
32 | }
33 |
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | MIT License
2 |
3 | Copyright (c) 2020 wkl
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | SOFTWARE.
22 |
--------------------------------------------------------------------------------
/src/components/shop-cart-sticky/shop-cart-sticky.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
11 |
12 |
13 |
14 |
57 |
67 |
--------------------------------------------------------------------------------
/src/assets/stylus/icon.styl:
--------------------------------------------------------------------------------
1 | @font-face
2 | font-family: 'sell-icon'
3 | src: url('../fonts/sell-icon.eot?k5xf13');
4 | src: url('../fonts/sell-icon.eot?k5xf13#iefix') format('embedded-opentype'),
5 | url('../fonts/sell-icon.ttf?k5xf13') format('truetype'),
6 | url('../fonts/sell-icon.woff?k5xf13') format('woff'),
7 | url('../fonts/sell-icon.svg?k5xf13#sell-icon') format('svg')
8 | font-weight: normal
9 | font-style: normal
10 |
11 | [class^="icon-"], [class*=" icon-"]
12 | /* use !important to prevent issues with browser extensions that change fonts */
13 | font-family: 'sell-icon' !important
14 | speak: none
15 | font-style: normal
16 | font-weight: normal
17 | font-variant: normal
18 | text-transform: none
19 | line-height: 1
20 |
21 | /* Better Font Rendering =========== */
22 | -webkit-font-smoothing: antialiased
23 | -moz-osx-font-smoothing: grayscale
24 |
25 | .icon-arrow_lift:before
26 | content: "\e900"
27 |
28 | .icon-thumb_up:before
29 | content: "\e901"
30 |
31 | .icon-thumb_down:before
32 | content: "\e902"
33 |
34 | .icon-shopping_cart:before
35 | content: "\e903"
36 |
37 | .icon-favorite:before
38 | content: "\e904"
39 |
40 | .icon-check_circle:before
41 | content: "\e905"
42 |
43 | .icon-close:before
44 | content: "\e906"
45 |
46 | .icon-remove_circle_outline:before
47 | content: "\e907"
48 |
49 | .icon-add_circle:before
50 | content: "\e908"
51 |
52 | .icon-keyboard_arrow_right:before
53 | content: "\e909"
54 |
55 |
56 |
--------------------------------------------------------------------------------
/src/configs/cube-ui.js:
--------------------------------------------------------------------------------
1 | import Vue from 'vue'
2 |
3 | // By default we import all the components.
4 | // Only reserve the components on demand and remove the rest.
5 | // Style is always required.
6 | import {
7 | /* eslint-disable no-unused-vars */
8 | Style,
9 | // basic
10 | Button,
11 | Loading,
12 | Tip,
13 | Toolbar,
14 | TabBar,
15 | TabPanels,
16 | // form
17 | Checkbox,
18 | CheckboxGroup,
19 | Checker,
20 | Radio,
21 | RadioGroup,
22 | Input,
23 | Textarea,
24 | Select,
25 | Switch,
26 | Rate,
27 | Validator,
28 | Upload,
29 | Form,
30 | // popup
31 | Popup,
32 | Toast,
33 | Picker,
34 | CascadePicker,
35 | DatePicker,
36 | TimePicker,
37 | SegmentPicker,
38 | Dialog,
39 | ActionSheet,
40 | Drawer,
41 | ImagePreview,
42 | // scroll
43 | Scroll,
44 | Slide,
45 | IndexList,
46 | Swipe,
47 | Sticky,
48 | ScrollNav,
49 | ScrollNavBar
50 | } from 'cube-ui'
51 |
52 | Vue.use(Button)
53 | Vue.use(Loading)
54 | Vue.use(Tip)
55 | Vue.use(Toolbar)
56 | Vue.use(TabBar)
57 | Vue.use(TabPanels)
58 | Vue.use(Checkbox)
59 | Vue.use(CheckboxGroup)
60 | Vue.use(Checker)
61 | Vue.use(Radio)
62 | Vue.use(RadioGroup)
63 | Vue.use(Input)
64 | Vue.use(Textarea)
65 | Vue.use(Select)
66 | Vue.use(Switch)
67 | Vue.use(Rate)
68 | Vue.use(Validator)
69 | Vue.use(Upload)
70 | Vue.use(Form)
71 | Vue.use(Popup)
72 | Vue.use(Toast)
73 | Vue.use(Picker)
74 | Vue.use(CascadePicker)
75 | Vue.use(DatePicker)
76 | Vue.use(TimePicker)
77 | Vue.use(SegmentPicker)
78 | Vue.use(Dialog)
79 | Vue.use(ActionSheet)
80 | Vue.use(Drawer)
81 | Vue.use(ImagePreview)
82 | Vue.use(Scroll)
83 | Vue.use(Slide)
84 | Vue.use(IndexList)
85 | Vue.use(Swipe)
86 | Vue.use(Sticky)
87 | Vue.use(ScrollNav)
88 | Vue.use(ScrollNavBar)
89 |
--------------------------------------------------------------------------------
/src/App.vue:
--------------------------------------------------------------------------------
1 |
2 |
8 |
9 |
10 |
75 |
87 |
--------------------------------------------------------------------------------
/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "vue-sell",
3 | "version": "0.1.0",
4 | "private": true,
5 | "homepage": "https://wkl007.github.io/vue-sell",
6 | "scripts": {
7 | "commit": "git-cz",
8 | "serve": "vue-cli-service serve",
9 | "build": "vue-cli-service build",
10 | "lint": "vue-cli-service lint"
11 | },
12 | "dependencies": {
13 | "axios": "^1.2.1",
14 | "core-js": "^3.27.0",
15 | "cube-ui": "^1.12.48",
16 | "good-storage": "^1.1.1",
17 | "moment": "^2.29.4",
18 | "register-service-worker": "^1.7.2",
19 | "vue": "^2.6.14"
20 | },
21 | "devDependencies": {
22 | "@commitlint/cli": "^11.0.0",
23 | "@commitlint/config-conventional": "^11.0.0",
24 | "@vue/cli-plugin-babel": "~4.5.15",
25 | "@vue/cli-plugin-eslint": "~4.5.15",
26 | "@vue/cli-plugin-pwa": "~4.5.15",
27 | "@vue/cli-service": "~4.5.15",
28 | "@vue/eslint-config-standard": "^5.1.2",
29 | "babel-eslint": "^10.1.0",
30 | "commitizen": "^4.2.6",
31 | "compression-webpack-plugin": "^6.1.0",
32 | "cz-conventional-changelog": "^3.3.0",
33 | "eslint": "^7.13.0",
34 | "eslint-plugin-import": "^2.25.4",
35 | "eslint-plugin-node": "^11.1.0",
36 | "eslint-plugin-promise": "^4.2.1",
37 | "eslint-plugin-standard": "^4.1.0",
38 | "eslint-plugin-vue": "^7.1.0",
39 | "husky": "^4.3.0",
40 | "lint-staged": "^10.5.1",
41 | "stylus": "^0.54.8",
42 | "stylus-loader": "^3.0.2",
43 | "terser-webpack-plugin": "^2.3.4",
44 | "vue-cli-plugin-cube-ui": "~0.2.5",
45 | "vue-template-compiler": "^2.6.14"
46 | },
47 | "config": {
48 | "commitizen": {
49 | "path": "./node_modules/cz-conventional-changelog"
50 | }
51 | },
52 | "husky": {
53 | "hooks": {
54 | "pre-commit": "lint-staged",
55 | "commit-msg": "commitlint -E HUSKY_GIT_PARAMS"
56 | }
57 | },
58 | "lint-staged": {
59 | "src/**/*.{js,vue}": [
60 | "vue-cli-service lint"
61 | ]
62 | },
63 | "transformModules": {
64 | "cube-ui": {
65 | "transform": "cube-ui/src/modules/${member}",
66 | "kebabCase": true
67 | }
68 | }
69 | }
70 |
--------------------------------------------------------------------------------
/src/components/cart-control/cart-control.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
{{ food.count }}
9 |
10 |
11 |
12 |
13 |
46 |
47 |
91 |
--------------------------------------------------------------------------------
/src/components/support-ico/support-ico.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
24 |
111 |
--------------------------------------------------------------------------------
/src/assets/fonts/sell-icon.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
--------------------------------------------------------------------------------
/src/components/star/star.vue:
--------------------------------------------------------------------------------
1 |
2 |
6 |
12 |
13 |
14 |
15 |
16 |
55 |
123 |
--------------------------------------------------------------------------------
/src/components/tab/tab.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
11 |
12 |
22 |
26 |
27 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
95 |
110 |
--------------------------------------------------------------------------------
/src/components/rating-select/rating-select.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | {{desc.all}}{{ratings.length}}
6 | {{desc.positive}}{{positives.length}}
8 | {{desc.negative}}{{negatives.length}}
10 |
11 |
12 |
13 | 只看有内容的评价
14 |
15 |
16 |
17 |
18 |
76 |
130 |
--------------------------------------------------------------------------------
/vue.config.js:
--------------------------------------------------------------------------------
1 | const path = require('path')
2 | const webpack = require('webpack')
3 | const appData = require('./public/data')
4 | const seller = appData.seller
5 | const goods = appData.goods
6 | const ratings = appData.ratings
7 |
8 | const TerserPlugin = require('terser-webpack-plugin')// 去console插件
9 | const CompressionWebpackPlugin = require('compression-webpack-plugin')// gzip压缩插件
10 |
11 | const resolve = dir => path.join(__dirname, dir)
12 |
13 | module.exports = {
14 | // 基本路径
15 | publicPath: process.env.NODE_ENV === 'production' ? '/vue-sell/' : '/',
16 | // 输出文件目录
17 | outputDir: 'dist',
18 | // 用于嵌套生成的静态资产(js,css,img,fonts)的目录
19 | assetsDir: '',
20 | // 指定生成的 index.html 的输出路径 (相对于 outputDir)
21 | indexPath: 'index.html',
22 | // 静态资源在它们的文件名中包含了 hash 以便更好的控制缓存
23 | filenameHashing: true,
24 | // 以多页模式构建应用程序。
25 | pages: undefined,
26 | // eslint-loader 是否在保存的时候检查
27 | lintOnSave: true,
28 | // 是否使用包含运行时编译器的Vue核心的构建。
29 | runtimeCompiler: false,
30 | // 默认情况下babel-loader忽略其中的所有文件node_modules。
31 | transpileDependencies: [],
32 | // 生产环境sourceMap
33 | productionSourceMap: false,
34 | // 设置生成的 HTML 中 和
100 |
165 |
--------------------------------------------------------------------------------
/src/components/header-detail/header-detail.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
47 |
48 |
49 |
50 |
72 |
169 |
--------------------------------------------------------------------------------
/src/components/v-header/v-header.vue:
--------------------------------------------------------------------------------
1 |
2 |
42 |
43 |
44 |
72 |
194 |
--------------------------------------------------------------------------------
/src/assets/stylus/theme.styl:
--------------------------------------------------------------------------------
1 | @require "~cube-ui/src/common/stylus/var/color.styl"
2 | @import "~@/assets/stylus/variable.styl"
3 |
4 | // action-sheet
5 | $action-sheet-color := $color-grey
6 | $action-sheet-active-color := $color-orange
7 | $action-sheet-bgc := $color-white
8 | $action-sheet-active-bgc := $color-light-grey-opacity
9 | $action-sheet-title-color := $color-dark-grey
10 | $action-sheet-space-bgc := $color-mask-bg
11 | /// picker style
12 | $action-sheet-picker-cancel-color := $color-light-grey
13 | $action-sheet-picker-cancel-active-color := $color-light-grey-s
14 |
15 | // bubble
16 |
17 | // button
18 | $btn-color := $color-white
19 | $btn-bgc := $color-regular-blue
20 | $btn-bdc := $color-regular-blue
21 | $btn-active-bgc := $color-blue
22 | $btn-active-bdc := $color-blue
23 | $btn-disabled-color := $color-white
24 | $btn-disabled-bgc := $color-light-grey-s
25 | $btn-disabled-bdc := $color-light-grey-s
26 | /// primary
27 | $btn-primary-color := $color-white
28 | $btn-primary-bgc := $color-orange
29 | $btn-primary-bdc := $color-orange
30 | $btn-primary-active-bgc := $color-dark-orange
31 | $btn-primary-active-bdc := $color-dark-orange
32 | /// light
33 | $btn-light-color := $color-grey
34 | $btn-light-bgc := $color-light-grey-sss
35 | $btn-light-bdc := $color-light-grey-sss
36 | $btn-light-active-bgc := $color-active-grey
37 | $btn-light-active-bdc := $color-active-grey
38 | /// outline
39 | $btn-outline-color := $color-grey
40 | $btn-outline-bgc := transparent
41 | $btn-outline-bdc := $color-grey
42 | $btn-outline-active-bgc := $color-grey-opacity
43 | $btn-outline-active-bdc := $color-grey
44 | /// outline-primary
45 | $btn-outline-primary-color := $color-orange
46 | $btn-outline-primary-bgc := transparent
47 | $btn-outline-primary-bdc := $color-orange
48 | $btn-outline-primary-active-bgc := $color-orange-opacity
49 | $btn-outline-primary-active-bdc := $color-dark-orange
50 |
51 | // toolbar
52 | $toolbar-bgc := $color-light-grey-sss
53 | $toolbar-active-bgc := $color-active-grey
54 |
55 | // checkbox
56 | $checkbox-color := $color-grey
57 | $checkbox-icon-color := $color-light-grey-s
58 | /// checked
59 | $checkbox-checked-icon-color := $color-orange
60 | $checkbox-checked-icon-bgc := $color-white
61 | /// disabled
62 | $checkbox-disabled-icon-color := $color-light-grey-ss
63 | $checkbox-disabled-icon-bgc := $color-light-grey-ss
64 | // checkbox hollow
65 | $checkbox-hollow-checked-icon-color := $color-orange
66 | $checkbox-hollow-disabled-icon-color := $color-light-grey-ss
67 | // checkbox-group
68 | $checkbox-group-bgc := $color-white
69 | $checkbox-group-horizontal-bdc := $color-light-grey-s
70 |
71 | // radio
72 | $radio-group-bgc := $color-white
73 | $radio-group-horizontal-bdc := $color-light-grey-s
74 | $radio-color := $color-grey
75 | $radio-icon-color := $color-light-grey-s
76 | /// selected
77 | $radio-selected-icon-color := $color-white
78 | $radio-selected-icon-bgc := $color-orange
79 | /// disabled
80 | $radio-disabled-icon-bgc := $color-light-grey-ss
81 | // radio hollow
82 | $radio-hollow-selected-icon-color := $color-orange
83 | $radio-hollow-disabled-icon-color := $color-light-grey-ss
84 |
85 | // dialog
86 | $dialog-color := $color-grey
87 | $dialog-bgc := $color-white
88 | $dialog-icon-color := $color-regular-blue
89 | $dialog-icon-bgc := $color-background
90 | $dialog-title-color := $color-dark-grey
91 | $dialog-close-color := $color-light-grey
92 | $dialog-btn-color := $color-light-grey
93 | $dialog-btn-bgc := $color-white
94 | $dialog-btn-active-bgc := $color-light-grey-opacity
95 | $dialog-btn-highlight-color := $color-orange
96 | $dialog-btn-highlight-active-bgc := $color-light-orange-opacity
97 | $dialog-btn-disabled-color := $color-light-grey
98 | $dialog-btn-disabled-active-bgc := transparent
99 | $dialog-btns-split-color := $color-row-line
100 |
101 | // index-list
102 | $index-list-bgc := $color-white
103 | $index-list-title-color := $color-dark-grey
104 | $index-list-anchor-color := $color-light-grey
105 | $index-list-anchor-bgc := #f7f7f7
106 | $index-list-item-color := $color-dark-grey
107 | $index-list-item-active-bgc := $color-light-grey-opacity
108 | $index-list-nav-color := $color-grey
109 | $index-list-nav-active-color := $color-orange
110 |
111 | // loading
112 |
113 | // picker
114 | $picker-bgc := $color-white
115 | $picker-title-color := $color-dark-grey
116 | $picker-subtitle-color := $color-light-grey
117 | $picker-confirm-btn-color := $color-orange
118 | $picker-confirm-btn-active-color := $color-light-orange
119 | $picker-cancel-btn-color := $color-light-grey
120 | $picker-cancel-btn-active-color := $color-light-grey-s
121 | $picker-item-color := $color-dark-grey
122 |
123 | // popup
124 | $popup-mask-bgc := rgb(37, 38, 45)
125 | $popup-mask-opacity := .4
126 |
127 | //scroll
128 |
129 | // slide
130 | $slide-dot-bgc := $color-light-grey-s
131 | $slide-dot-active-bgc := $color-orange
132 |
133 | // time-picker
134 |
135 | // tip
136 | $tip-color := $color-white
137 | $tip-bgc := $color-dark-grey-opacity
138 |
139 | // toast
140 | $toast-color := $color-light-grey-s
141 | $toast-bgc := rgba(37, 38, 45, 0.9)
142 |
143 | // upload
144 | $upload-btn-color := $color-grey
145 | $upload-btn-bgc := $color-white
146 | $upload-btn-active-bgc := $color-light-grey-opacity
147 | $upload-btn-box-shadow := 0 0 6px 2px $color-grey-opacity
148 | $upload-btn-border-color := #e5e5e5
149 | $upload-file-bgc := $color-white
150 | $upload-file-remove-color := rgba(0, 0, 0, .8)
151 | $upload-file-remove-bgc := $color-white
152 | $upload-file-state-bgc := $color-mask-bg
153 | $upload-file-success-color := $color-orange
154 | $upload-file-error-color := #f43530
155 | $upload-file-status-bgc := $color-white
156 | $upload-file-progress-color := $color-white
157 |
158 | // switch
159 | $switch-on-bgc := $color-orange
160 | $switch-off-bgc := $color-white
161 | $switch-off-border-color := #e4e4e4
162 |
163 | // input
164 | $input-color := $color-grey
165 | $input-bgc := $color-white
166 | $input-border-color := $color-row-line
167 | $input-focus-border-color := $color-orange
168 | $input-placeholder-color := $color-light-grey-s
169 | $input-clear-icon-color := $color-light-grey
170 |
171 | //textarea
172 | $textarea-color := $color-grey
173 | $textarea-bgc := $color-white
174 | $textarea-border-color := $color-row-line
175 | $textarea-focus-border-color := $color-orange
176 | $textarea-outline-color := $color-orange
177 | $textarea-placeholder-color := $color-light-grey-s
178 | $textarea-indicator-color := $color-light-grey-s
179 |
180 | // validator
181 | $validator-msg-def-color := #e64340
182 |
183 | // select
184 | $select-color := $color-grey
185 | $select-bgc := $color-white
186 | $select-disabled-color := #b8b8b8
187 | $select-disabled-bgc := $color-light-grey-opacity
188 | $select-border-color := $color-light-grey-s
189 | $select-border-active-color := $color-orange
190 | $select-icon-color := $color-light-grey
191 | $select-placeholder-color := $color-light-grey-s
192 |
193 | // swipe
194 | $swipe-btn-color := $color-white
195 |
196 | // form
197 | $form-color := $color-grey
198 | $form-bgc := $color-white
199 | $form-invalid-color := #e64340
200 | $form-group-legend-color := $color-light-grey
201 | $form-group-legend-bgc := $color-background
202 | $form-label-required-color := #e64340
203 |
204 | // drawer
205 | $drawer-color := $color-dark-grey
206 | $drawer-title-bdc := $color-light-grey-ss
207 | $drawer-title-bgc := $color-white
208 | $drawer-panel-bgc := $color-white
209 | $drawer-item-active-bgc := $color-light-grey-opacity
210 |
211 | // scroll-nav
212 | $scroll-nav-bgc := $color-white
213 | $scroll-nav-color := $color-grey
214 | $scroll-nav-active-color := $color-orange
215 |
216 | // image-preview
217 | $image-preview-counter-color := $color-white
218 |
219 | // tab-bar & tab-panel
220 | $tab-color := $color-grey
221 | $tab-active-color = $color-red
222 | $tab-slider-bgc = $color-red
223 |
--------------------------------------------------------------------------------
/src/components/seller/seller.vue:
--------------------------------------------------------------------------------
1 |
2 |
6 |
7 |
8 |
{{seller.name}}
9 |
10 |
11 | ({{seller.ratingCount}})
12 | 月售{{seller.sellCount}}单
13 |
14 |
34 |
35 |
36 | {{favoriteText}}
37 |
38 |
39 |
40 |
41 |
公告与活动
42 |
43 |
{{seller.bulletin}}
44 |
45 |
46 | -
51 |
52 | {{seller.supports[index].description}}
53 |
54 |
55 |
56 |
57 |
58 |
商家实景
59 |
60 |
61 | -
65 |
66 |
67 |
68 |
69 |
70 |
71 |
72 |
商家信息
73 |
74 | -
79 | {{info}}
80 |
81 |
82 |
83 |
84 |
85 |
86 |
87 |
139 |
140 |
295 |
--------------------------------------------------------------------------------
/src/components/ratings/ratings.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
8 |
9 |
10 |
11 |
{{seller.score}}
12 |
综合评分
13 |
高于周边商家{{seller.rankRate}}%
14 |
15 |
16 |
17 | 服务态度
18 |
19 | {{seller.serviceScore}}
20 |
21 |
22 | 商品评分
23 |
24 | {{seller.foodScore}}
25 |
26 |
27 | 送达时间
28 | {{seller.deliveryTime}}分钟
29 |
30 |
31 |
32 |
33 |
40 |
41 |
42 | -
47 |
48 |
![]()
49 |
50 |
51 |
{{rating.username}}
52 |
53 |
54 | {{rating.deliveryTime}}
55 |
56 |
{{rating.text}}
57 |
58 |
59 |
63 | {{item}}
64 |
65 |
66 |
{{format(rating.rateTime)}}
67 |
68 |
69 |
70 |
71 |
72 |
73 |
74 |
75 |
76 |
138 |
292 |
--------------------------------------------------------------------------------
/src/components/goods/goods.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
67 |
68 |
69 |
75 |
76 |
77 |
78 |
79 |
201 |
325 |
--------------------------------------------------------------------------------
/src/components/food/food.vue:
--------------------------------------------------------------------------------
1 |
2 |
6 |
9 |
10 |
11 |
17 |
18 |
{{food.name}}
19 |
20 | 月售{{food.sellCount}}份
21 | 好评率{{food.rating}}%
22 |
23 |
24 | ¥{{food.price}}¥{{food.oldPrice}}
25 |
26 |
27 |
28 |
29 |
30 |
31 | 加入购物车
32 |
33 |
34 |
35 |
36 |
37 |
商品信息
38 |
{{food.info}}
39 |
40 |
41 |
73 |
74 |
75 |
76 |
77 |
78 |
79 |
145 |
329 |
--------------------------------------------------------------------------------
/src/components/shop-cart/shop-cart.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 | ¥{{totalPrice}}
15 |
16 |
另需配送费¥{{deliveryPrice}}元
17 |
18 |
19 |
20 | {{payDesc}}
21 |
22 |
23 |
24 |
37 |
38 |
39 |
40 |
237 |
238 |
344 |
--------------------------------------------------------------------------------
/public/img/icons/safari-pinned-tab.svg:
--------------------------------------------------------------------------------
1 |
2 |
4 |
150 |
--------------------------------------------------------------------------------
/public/data.json:
--------------------------------------------------------------------------------
1 | {
2 | "seller": {
3 | "name": "粥品香坊(回龙观)",
4 | "description": "蜂鸟专送",
5 | "deliveryTime": 38,
6 | "score": 4.2,
7 | "serviceScore": 4.1,
8 | "foodScore": 4.3,
9 | "rankRate": 69.2,
10 | "minPrice": 20,
11 | "deliveryPrice": 4,
12 | "ratingCount": 24,
13 | "sellCount": 90,
14 | "bulletin": "粥品香坊其烹饪粥料的秘方源于中国千年古法,在融和现代制作工艺,由世界烹饪大师屈浩先生领衔研发。坚守纯天然、0添加的良心品质深得消费者青睐,发展至今成为粥类的引领品牌。是2008年奥运会和2013年园博会指定餐饮服务商。",
15 | "supports": [
16 | {
17 | "type": 0,
18 | "description": "在线支付满28减5"
19 | },
20 | {
21 | "type": 1,
22 | "description": "VC无限橙果汁全场8折"
23 | },
24 | {
25 | "type": 2,
26 | "description": "单人精彩套餐"
27 | },
28 | {
29 | "type": 3,
30 | "description": "该商家支持发票,请下单写好发票抬头"
31 | },
32 | {
33 | "type": 4,
34 | "description": "已加入“外卖保”计划,食品安全保障"
35 | }
36 | ],
37 | "avatar": "http://static.galileo.xiaojukeji.com/static/tms/seller_avatar_256px.jpg",
38 | "pics": [
39 | "http://fuss10.elemecdn.com/8/71/c5cf5715740998d5040dda6e66abfjpeg.jpeg?imageView2/1/w/180/h/180",
40 | "http://fuss10.elemecdn.com/b/6c/75bd250e5ba69868f3b1178afbda3jpeg.jpeg?imageView2/1/w/180/h/180",
41 | "http://fuss10.elemecdn.com/f/96/3d608c5811bc2d902fc9ab9a5baa7jpeg.jpeg?imageView2/1/w/180/h/180",
42 | "http://fuss10.elemecdn.com/6/ad/779f8620ff49f701cd4c58f6448b6jpeg.jpeg?imageView2/1/w/180/h/180"
43 | ],
44 | "infos": [
45 | "该商家支持发票,请下单写好发票抬头",
46 | "品类:其他菜系,包子粥店",
47 | "北京市昌平区回龙观西大街龙观置业大厦底商B座102单元1340",
48 | "营业时间:10:00-20:30"
49 | ]
50 | },
51 | "goods": [
52 | {
53 | "name": "热销榜",
54 | "type": -1,
55 | "foods": [
56 | {
57 | "name": "皮蛋瘦肉粥",
58 | "price": 10,
59 | "oldPrice": "",
60 | "description": "咸粥",
61 | "sellCount": 229,
62 | "rating": 100,
63 | "info": "一碗皮蛋瘦肉粥,总是我到粥店时的不二之选。香浓软滑,饱腹暖心,皮蛋的Q弹与瘦肉的滑嫩伴着粥香溢于满口,让人喝这样的一碗粥也觉得心满意足",
64 | "ratings": [
65 | {
66 | "username": "3******c",
67 | "rateTime": 1469281964000,
68 | "rateType": 0,
69 | "text": "很喜欢的粥",
70 | "avatar": "http://static.galileo.xiaojukeji.com/static/tms/default_header.png"
71 | },
72 | {
73 | "username": "2******3",
74 | "rateTime": 1469271264000,
75 | "rateType": 0,
76 | "text": "",
77 | "avatar": "http://static.galileo.xiaojukeji.com/static/tms/default_header.png"
78 | },
79 | {
80 | "username": "3******b",
81 | "rateTime": 1469261964000,
82 | "rateType": 1,
83 | "text": "",
84 | "avatar": "http://static.galileo.xiaojukeji.com/static/tms/default_header.png"
85 | }
86 | ],
87 | "icon": "http://fuss10.elemecdn.com/c/cd/c12745ed8a5171e13b427dbc39401jpeg.jpeg?imageView2/1/w/114/h/114",
88 | "image": "http://fuss10.elemecdn.com/c/cd/c12745ed8a5171e13b427dbc39401jpeg.jpeg?imageView2/1/w/750/h/750"
89 | },
90 | {
91 | "name": "扁豆焖面",
92 | "price": 14,
93 | "oldPrice": "",
94 | "description": "",
95 | "sellCount": 188,
96 | "rating": 96,
97 | "ratings": [
98 | {
99 | "username": "3******c",
100 | "rateTime": 1469281964000,
101 | "rateType": 0,
102 | "text": "",
103 | "avatar": "http://static.galileo.xiaojukeji.com/static/tms/default_header.png"
104 | },
105 | {
106 | "username": "2******3",
107 | "rateTime": 1469271264000,
108 | "rateType": 0,
109 | "text": "",
110 | "avatar": "http://static.galileo.xiaojukeji.com/static/tms/default_header.png"
111 | },
112 | {
113 | "username": "3******b",
114 | "rateTime": 1469261964000,
115 | "rateType": 1,
116 | "text": "",
117 | "avatar": "http://static.galileo.xiaojukeji.com/static/tms/default_header.png"
118 | }
119 | ],
120 | "info": "",
121 | "icon": "http://fuss10.elemecdn.com/c/6b/29e3d29b0db63d36f7c500bca31d8jpeg.jpeg?imageView2/1/w/114/h/114",
122 | "image": "http://fuss10.elemecdn.com/c/6b/29e3d29b0db63d36f7c500bca31d8jpeg.jpeg?imageView2/1/w/750/h/750"
123 | },
124 | {
125 | "name": "葱花饼",
126 | "price": 10,
127 | "oldPrice": "",
128 | "description": "",
129 | "sellCount": 124,
130 | "rating": 85,
131 | "info": "",
132 | "ratings": [
133 | {
134 | "username": "3******c",
135 | "rateTime": 1469281964000,
136 | "rateType": 1,
137 | "text": "没啥味道",
138 | "avatar": "http://static.galileo.xiaojukeji.com/static/tms/default_header.png"
139 | },
140 | {
141 | "username": "2******3",
142 | "rateTime": 1469271264000,
143 | "rateType": 1,
144 | "text": "很一般啊",
145 | "avatar": "http://static.galileo.xiaojukeji.com/static/tms/default_header.png"
146 | },
147 | {
148 | "username": "3******b",
149 | "rateTime": 1469261964000,
150 | "rateType": 0,
151 | "text": "",
152 | "avatar": "http://static.galileo.xiaojukeji.com/static/tms/default_header.png"
153 | }
154 | ],
155 | "icon": "http://fuss10.elemecdn.com/f/28/a51e7b18751bcdf871648a23fd3b4jpeg.jpeg?imageView2/1/w/114/h/114",
156 | "image": "http://fuss10.elemecdn.com/f/28/a51e7b18751bcdf871648a23fd3b4jpeg.jpeg?imageView2/1/w/750/h/750"
157 | },
158 | {
159 | "name": "牛肉馅饼",
160 | "price": 14,
161 | "oldPrice": "",
162 | "description": "",
163 | "sellCount": 114,
164 | "rating": 91,
165 | "info": "",
166 | "ratings": [
167 | {
168 | "username": "3******c",
169 | "rateTime": 1469281964000,
170 | "rateType": 1,
171 | "text": "难吃不推荐",
172 | "avatar": "http://static.galileo.xiaojukeji.com/static/tms/default_header.png"
173 | },
174 | {
175 | "username": "2******3",
176 | "rateTime": 1469271264000,
177 | "rateType": 0,
178 | "text": "",
179 | "avatar": "http://static.galileo.xiaojukeji.com/static/tms/default_header.png"
180 | },
181 | {
182 | "username": "3******b",
183 | "rateTime": 1469261964000,
184 | "rateType": 0,
185 | "text": "",
186 | "avatar": "http://static.galileo.xiaojukeji.com/static/tms/default_header.png"
187 | }
188 | ],
189 | "icon": "http://fuss10.elemecdn.com/d/b9/bcab0e8ad97758e65ae5a62b2664ejpeg.jpeg?imageView2/1/w/114/h/114",
190 | "image": "http://fuss10.elemecdn.com/d/b9/bcab0e8ad97758e65ae5a62b2664ejpeg.jpeg?imageView2/1/w/750/h/750"
191 | },
192 | {
193 | "name": "招牌猪肉白菜锅贴/10个",
194 | "price": 17,
195 | "oldPrice": "",
196 | "description": "",
197 | "sellCount": 101,
198 | "rating": 78,
199 | "info": "",
200 | "ratings": [
201 | {
202 | "username": "3******c",
203 | "rateTime": 1469281964000,
204 | "rateType": 1,
205 | "text": "不脆,不好吃",
206 | "avatar": "http://static.galileo.xiaojukeji.com/static/tms/default_header.png"
207 | },
208 | {
209 | "username": "2******3",
210 | "rateTime": 1469271264000,
211 | "rateType": 0,
212 | "text": "",
213 | "avatar": "http://static.galileo.xiaojukeji.com/static/tms/default_header.png"
214 | },
215 | {
216 | "username": "3******b",
217 | "rateTime": 1469261964000,
218 | "rateType": 0,
219 | "text": "",
220 | "avatar": "http://static.galileo.xiaojukeji.com/static/tms/default_header.png"
221 | }
222 | ],
223 | "icon": "http://fuss10.elemecdn.com/7/72/9a580c1462ca1e4d3c07e112bc035jpeg.jpeg?imageView2/1/w/114/h/114",
224 | "image": "http://fuss10.elemecdn.com/7/72/9a580c1462ca1e4d3c07e112bc035jpeg.jpeg?imageView2/1/w/750/h/750"
225 | },
226 | {
227 | "name": "南瓜粥",
228 | "price": 9,
229 | "oldPrice": "",
230 | "description": "甜粥",
231 | "sellCount": 91,
232 | "rating": 100,
233 | "ratings": [
234 | {
235 | "username": "3******c",
236 | "rateTime": 1469281964000,
237 | "rateType": 0,
238 | "text": "",
239 | "avatar": "http://static.galileo.xiaojukeji.com/static/tms/default_header.png"
240 | },
241 | {
242 | "username": "2******3",
243 | "rateTime": 1469271264000,
244 | "rateType": 0,
245 | "text": "",
246 | "avatar": "http://static.galileo.xiaojukeji.com/static/tms/default_header.png"
247 | },
248 | {
249 | "username": "3******b",
250 | "rateTime": 1469261964000,
251 | "rateType": 0,
252 | "text": "",
253 | "avatar": "http://static.galileo.xiaojukeji.com/static/tms/default_header.png"
254 | }
255 | ],
256 | "icon": "http://fuss10.elemecdn.com/8/a6/453f65f16b1391942af11511b7a90jpeg.jpeg?imageView2/1/w/114/h/114",
257 | "image": "http://fuss10.elemecdn.com/8/a6/453f65f16b1391942af11511b7a90jpeg.jpeg?imageView2/1/w/750/h/750"
258 | },
259 | {
260 | "name": "红豆薏米美肤粥",
261 | "price": 12,
262 | "oldPrice": "",
263 | "description": "甜粥",
264 | "sellCount": 86,
265 | "rating": 100,
266 | "info": "",
267 | "ratings": [
268 | {
269 | "username": "3******c",
270 | "rateTime": 1469281964000,
271 | "rateType": 0,
272 | "text": "",
273 | "avatar": "http://static.galileo.xiaojukeji.com/static/tms/default_header.png"
274 | },
275 | {
276 | "username": "2******3",
277 | "rateTime": 1469271264000,
278 | "rateType": 0,
279 | "text": "",
280 | "avatar": "http://static.galileo.xiaojukeji.com/static/tms/default_header.png"
281 | },
282 | {
283 | "username": "3******b",
284 | "rateTime": 1469261964000,
285 | "rateType": 0,
286 | "text": "",
287 | "avatar": "http://static.galileo.xiaojukeji.com/static/tms/default_header.png"
288 | }
289 | ],
290 | "icon": "http://fuss10.elemecdn.com/d/22/260bd78ee6ac6051136c5447fe307jpeg.jpeg?imageView2/1/w/114/h/114",
291 | "image": "http://fuss10.elemecdn.com/d/22/260bd78ee6ac6051136c5447fe307jpeg.jpeg?imageView2/1/w/750/h/750"
292 | },
293 | {
294 | "name": "八宝酱菜",
295 | "price": 4,
296 | "oldPrice": "",
297 | "description": "",
298 | "sellCount": 84,
299 | "rating": 100,
300 | "info": "",
301 | "ratings": [
302 | {
303 | "username": "3******c",
304 | "rateTime": 1469281964000,
305 | "rateType": 0,
306 | "text": "",
307 | "avatar": "http://static.galileo.xiaojukeji.com/static/tms/default_header.png"
308 | },
309 | {
310 | "username": "2******3",
311 | "rateTime": 1469271264000,
312 | "rateType": 0,
313 | "text": "",
314 | "avatar": "http://static.galileo.xiaojukeji.com/static/tms/default_header.png"
315 | },
316 | {
317 | "username": "3******b",
318 | "rateTime": 1469261964000,
319 | "rateType": 0,
320 | "text": "",
321 | "avatar": "http://static.galileo.xiaojukeji.com/static/tms/default_header.png"
322 | }
323 | ],
324 | "icon": "http://fuss10.elemecdn.com/9/b5/469d8854f9a3a03797933fd01398bjpeg.jpeg?imageView2/1/w/114/h/114",
325 | "image": "http://fuss10.elemecdn.com/9/b5/469d8854f9a3a03797933fd01398bjpeg.jpeg?imageView2/1/w/750/h/750"
326 | },
327 | {
328 | "name": "红枣山药糙米粥",
329 | "price": 10,
330 | "oldPrice": "",
331 | "description": "",
332 | "sellCount": 81,
333 | "rating": 91,
334 | "info": "",
335 | "ratings": [
336 | {
337 | "username": "3******c",
338 | "rateTime": 1469281964000,
339 | "rateType": 0,
340 | "text": "",
341 | "avatar": "http://static.galileo.xiaojukeji.com/static/tms/default_header.png"
342 | },
343 | {
344 | "username": "2******3",
345 | "rateTime": 1469271264000,
346 | "rateType": 0,
347 | "text": "",
348 | "avatar": "http://static.galileo.xiaojukeji.com/static/tms/default_header.png"
349 | },
350 | {
351 | "username": "3******b",
352 | "rateTime": 1469261964000,
353 | "rateType": 0,
354 | "text": "",
355 | "avatar": "http://static.galileo.xiaojukeji.com/static/tms/default_header.png"
356 | }
357 | ],
358 | "icon": "http://fuss10.elemecdn.com/9/b5/469d8854f9a3a03797933fd01398bjpeg.jpeg?imageView2/1/w/114/h/114",
359 | "image": "http://fuss10.elemecdn.com/9/b5/469d8854f9a3a03797933fd01398bjpeg.jpeg?imageView2/1/w/750/h/750"
360 | },
361 | {
362 | "name": "糊塌子",
363 | "price": 10,
364 | "oldPrice": "",
365 | "description": "",
366 | "sellCount": 80,
367 | "rating": 93,
368 | "info": "",
369 | "ratings": [
370 | {
371 | "username": "3******c",
372 | "rateTime": 1469281964000,
373 | "rateType": 0,
374 | "text": "",
375 | "avatar": "http://static.galileo.xiaojukeji.com/static/tms/default_header.png"
376 | },
377 | {
378 | "username": "2******3",
379 | "rateTime": 1469271264000,
380 | "rateType": 0,
381 | "text": "",
382 | "avatar": "http://static.galileo.xiaojukeji.com/static/tms/default_header.png"
383 | },
384 | {
385 | "username": "3******b",
386 | "rateTime": 1469261964000,
387 | "rateType": 0,
388 | "text": "",
389 | "avatar": "http://static.galileo.xiaojukeji.com/static/tms/default_header.png"
390 | }
391 | ],
392 | "icon": "http://fuss10.elemecdn.com/0/05/097a2a59fd2a2292d08067e16380cjpeg.jpeg?imageView2/1/w/114/h/114",
393 | "image": "http://fuss10.elemecdn.com/0/05/097a2a59fd2a2292d08067e16380cjpeg.jpeg?imageView2/1/w/750/h/750"
394 | }
395 | ]
396 | },
397 | {
398 | "name": "单人精彩套餐",
399 | "type": 2,
400 | "foods": [
401 | {
402 | "name": "红枣山药粥套餐",
403 | "price": 29,
404 | "oldPrice": 36,
405 | "description": "红枣山药糙米粥,素材包,爽口莴笋丝,四川泡菜或八宝酱菜,配菜可备注",
406 | "sellCount": 17,
407 | "rating": 100,
408 | "info": "",
409 | "ratings": [
410 | {
411 | "username": "2******3",
412 | "rateTime": 1469271264000,
413 | "rateType": 0,
414 | "text": "",
415 | "avatar": "http://static.galileo.xiaojukeji.com/static/tms/default_header.png"
416 | }
417 | ],
418 | "icon": "http://fuss10.elemecdn.com/6/72/cb844f0bb60c502c6d5c05e0bddf5jpeg.jpeg?imageView2/1/w/114/h/114",
419 | "image": "http://fuss10.elemecdn.com/6/72/cb844f0bb60c502c6d5c05e0bddf5jpeg.jpeg?imageView2/1/w/750/h/750"
420 | }
421 | ]
422 | },
423 | {
424 | "name": "冰爽饮品限时特惠",
425 | "type": 1,
426 | "foods": [
427 | {
428 | "name": "VC无限橙果汁",
429 | "price": 8,
430 | "oldPrice": 10,
431 | "description": "",
432 | "sellCount": 15,
433 | "rating": 100,
434 | "info": "",
435 | "ratings": [
436 | {
437 | "username": "3******c",
438 | "rateTime": 1469281964000,
439 | "rateType": 0,
440 | "text": "还可以",
441 | "avatar": "http://static.galileo.xiaojukeji.com/static/tms/default_header.png"
442 | },
443 | {
444 | "username": "2******3",
445 | "rateTime": 1469271264000,
446 | "rateType": 0,
447 | "text": "",
448 | "avatar": "http://static.galileo.xiaojukeji.com/static/tms/default_header.png"
449 | }
450 | ],
451 | "icon": "http://fuss10.elemecdn.com/e/c6/f348e811772016ae24e968238bcbfjpeg.jpeg?imageView2/1/w/114/h/114",
452 | "image": "http://fuss10.elemecdn.com/e/c6/f348e811772016ae24e968238bcbfjpeg.jpeg?imageView2/1/w/750/h/750"
453 | }
454 | ]
455 | },
456 | {
457 | "name": "精选热菜",
458 | "type": -1,
459 | "foods": [
460 | {
461 | "name": "娃娃菜炖豆腐",
462 | "price": 17,
463 | "oldPrice": "",
464 | "description": "",
465 | "sellCount": 43,
466 | "rating": 92,
467 | "info": "",
468 | "ratings": [
469 | {
470 | "username": "3******c",
471 | "rateTime": 1469281964000,
472 | "rateType": 0,
473 | "text": "菜量还可以,味道还可以",
474 | "avatar": "http://static.galileo.xiaojukeji.com/static/tms/default_header.png"
475 | },
476 | {
477 | "username": "2******3",
478 | "rateTime": 1469271264000,
479 | "rateType": 0,
480 | "text": "",
481 | "avatar": "http://static.galileo.xiaojukeji.com/static/tms/default_header.png"
482 | }
483 | ],
484 | "icon": "http://fuss10.elemecdn.com/d/2d/b1eb45b305635d9dd04ddf157165fjpeg.jpeg?imageView2/1/w/114/h/114",
485 | "image": "http://fuss10.elemecdn.com/d/2d/b1eb45b305635d9dd04ddf157165fjpeg.jpeg?imageView2/1/w/750/h/750"
486 | },
487 | {
488 | "name": "手撕包菜",
489 | "price": 16,
490 | "oldPrice": "",
491 | "description": "",
492 | "sellCount": 29,
493 | "rating": 100,
494 | "info": "",
495 | "ratings": [
496 | {
497 | "username": "3******c",
498 | "rateTime": 1469281964000,
499 | "rateType": 0,
500 | "text": "",
501 | "avatar": "http://static.galileo.xiaojukeji.com/static/tms/default_header.png"
502 | },
503 | {
504 | "username": "2******3",
505 | "rateTime": 1469271264000,
506 | "rateType": 0,
507 | "text": "",
508 | "avatar": "http://static.galileo.xiaojukeji.com/static/tms/default_header.png"
509 | }
510 | ],
511 | "icon": "http://fuss10.elemecdn.com/9/c6/f3bc84468820121112e79583c24efjpeg.jpeg?imageView2/1/w/114/h/114",
512 | "image": "http://fuss10.elemecdn.com/9/c6/f3bc84468820121112e79583c24efjpeg.jpeg?imageView2/1/w/750/h/750"
513 | },
514 | {
515 | "name": "香酥黄金鱼/3条",
516 | "price": 11,
517 | "oldPrice": "",
518 | "description": "",
519 | "sellCount": 15,
520 | "rating": 100,
521 | "info": "",
522 | "ratings": [
523 | {
524 | "username": "3******c",
525 | "rateTime": 1469281964000,
526 | "rateType": 0,
527 | "text": "",
528 | "avatar": "http://static.galileo.xiaojukeji.com/static/tms/default_header.png"
529 | },
530 | {
531 | "username": "2******3",
532 | "rateTime": 1469271264000,
533 | "rateType": 0,
534 | "text": "",
535 | "avatar": "http://static.galileo.xiaojukeji.com/static/tms/default_header.png"
536 | }
537 | ],
538 | "icon": "http://fuss10.elemecdn.com/4/e7/8277a6a2ea0a2e97710290499fc41jpeg.jpeg?imageView2/1/w/114/h/114",
539 | "image": "http://fuss10.elemecdn.com/4/e7/8277a6a2ea0a2e97710290499fc41jpeg.jpeg?imageView2/1/w/750/h/750"
540 | }
541 | ]
542 | },
543 | {
544 | "name": "爽口凉菜",
545 | "type": -1,
546 | "foods": [
547 | {
548 | "name": "八宝酱菜",
549 | "price": 4,
550 | "oldPrice": "",
551 | "description": "",
552 | "sellCount": 84,
553 | "rating": 100,
554 | "info": "",
555 | "ratings": [
556 | {
557 | "username": "3******c",
558 | "rateTime": 1469281964000,
559 | "rateType": 0,
560 | "text": "",
561 | "avatar": "http://static.galileo.xiaojukeji.com/static/tms/default_header.png"
562 | },
563 | {
564 | "username": "2******3",
565 | "rateTime": 1469271264000,
566 | "rateType": 0,
567 | "text": "",
568 | "avatar": "http://static.galileo.xiaojukeji.com/static/tms/default_header.png"
569 | },
570 | {
571 | "username": "3******b",
572 | "rateTime": 1469261964000,
573 | "rateType": 0,
574 | "text": "",
575 | "avatar": "http://static.galileo.xiaojukeji.com/static/tms/default_header.png"
576 | }
577 | ],
578 | "icon": "http://fuss10.elemecdn.com/9/b5/469d8854f9a3a03797933fd01398bjpeg.jpeg?imageView2/1/w/114/h/114",
579 | "image": "http://fuss10.elemecdn.com/9/b5/469d8854f9a3a03797933fd01398bjpeg.jpeg?imageView2/1/w/750/h/750"
580 | },
581 | {
582 | "name": "拍黄瓜",
583 | "price": 9,
584 | "oldPrice": "",
585 | "description": "",
586 | "sellCount": 28,
587 | "rating": 100,
588 | "info": "",
589 | "ratings": [
590 | {
591 | "username": "3******c",
592 | "rateTime": 1469281964000,
593 | "rateType": 0,
594 | "text": "",
595 | "avatar": "http://static.galileo.xiaojukeji.com/static/tms/default_header.png"
596 | },
597 | {
598 | "username": "2******3",
599 | "rateTime": 1469271264000,
600 | "rateType": 0,
601 | "text": "",
602 | "avatar": "http://static.galileo.xiaojukeji.com/static/tms/default_header.png"
603 | },
604 | {
605 | "username": "3******b",
606 | "rateTime": 1469261964000,
607 | "rateType": 0,
608 | "text": "",
609 | "avatar": "http://static.galileo.xiaojukeji.com/static/tms/default_header.png"
610 | }
611 | ],
612 | "icon": "http://fuss10.elemecdn.com/6/54/f654985b4e185f06eb07f8fa2b2e8jpeg.jpeg?imageView2/1/w/114/h/114",
613 | "image": "http://fuss10.elemecdn.com/6/54/f654985b4e185f06eb07f8fa2b2e8jpeg.jpeg?imageView2/1/w/750/h/750"
614 | }
615 | ]
616 | },
617 | {
618 | "name": "精选套餐",
619 | "type": -1,
620 | "foods": [
621 | {
622 | "name": "红豆薏米粥套餐",
623 | "price": 37,
624 | "oldPrice": "",
625 | "description": "红豆薏米粥,三鲜干蒸烧卖,拍黄瓜",
626 | "sellCount": 3,
627 | "rating": 100,
628 | "info": "",
629 | "ratings": [
630 | {
631 | "username": "2******3",
632 | "rateTime": 1469271264000,
633 | "rateType": 0,
634 | "text": "",
635 | "avatar": "http://static.galileo.xiaojukeji.com/static/tms/default_header.png"
636 | }
637 | ],
638 | "icon": "http://fuss10.elemecdn.com/f/49/27f26ed00c025b2200a9ccbb7e67ejpeg.jpeg?imageView2/1/w/114/h/114",
639 | "image": "http://fuss10.elemecdn.com/f/49/27f26ed00c025b2200a9ccbb7e67ejpeg.jpeg?imageView2/1/w/750/h/750"
640 | },
641 | {
642 | "name": "皮蛋瘦肉粥套餐",
643 | "price": 31,
644 | "oldPrice": "",
645 | "description": "",
646 | "sellCount": 12,
647 | "rating": 100,
648 | "info": "",
649 | "ratings": [
650 | {
651 | "username": "2******3",
652 | "rateTime": 1469271264000,
653 | "rateType": 0,
654 | "text": "",
655 | "avatar": "http://static.galileo.xiaojukeji.com/static/tms/default_header.png"
656 | }
657 | ],
658 | "icon": "http://fuss10.elemecdn.com/8/96/f444a8087f0e940ef264617f9d98ajpeg.jpeg?imageView2/1/w/114/h/114",
659 | "image": "http://fuss10.elemecdn.com/8/96/f444a8087f0e940ef264617f9d98ajpeg.jpeg?imageView2/1/w/750/h/750"
660 | }
661 | ]
662 | },
663 | {
664 | "name": "果拼果汁",
665 | "type": -1,
666 | "foods": [
667 | {
668 | "name": "蜜瓜圣女萝莉杯",
669 | "price": 6,
670 | "oldPrice": "",
671 | "description": "",
672 | "sellCount": 1,
673 | "rating": "",
674 | "info": "",
675 | "ratings": [],
676 | "icon": "http://fuss10.elemecdn.com/b/5f/b3b04c259d5ec9fa52e1856ee50dajpeg.jpeg?imageView2/1/w/114/h/114",
677 | "image": "http://fuss10.elemecdn.com/b/5f/b3b04c259d5ec9fa52e1856ee50dajpeg.jpeg?imageView2/1/w/750/h/750"
678 | },
679 | {
680 | "name": "加多宝",
681 | "price": 6,
682 | "oldPrice": "",
683 | "description": "",
684 | "sellCount": 7,
685 | "rating": 100,
686 | "info": "",
687 | "ratings": [
688 | {
689 | "username": "3******c",
690 | "rateTime": 1469281964000,
691 | "rateType": 0,
692 | "text": "",
693 | "avatar": "http://static.galileo.xiaojukeji.com/static/tms/default_header.png"
694 | },
695 | {
696 | "username": "2******3",
697 | "rateTime": 1469271264000,
698 | "rateType": 0,
699 | "text": "",
700 | "avatar": "http://static.galileo.xiaojukeji.com/static/tms/default_header.png"
701 | },
702 | {
703 | "username": "3******b",
704 | "rateTime": 1469261964000,
705 | "rateType": 0,
706 | "text": "",
707 | "avatar": "http://static.galileo.xiaojukeji.com/static/tms/default_header.png"
708 | }
709 | ],
710 | "icon": "http://fuss10.elemecdn.com/b/9f/5e6c99c593cf65229225c5661bcdejpeg.jpeg?imageView2/1/w/114/h/114",
711 | "image": "http://fuss10.elemecdn.com/b/9f/5e6c99c593cf65229225c5661bcdejpeg.jpeg?imageView2/1/w/750/h/750"
712 | },
713 | {
714 | "name": "VC无限橙果汁",
715 | "price": 8,
716 | "oldPrice": 10,
717 | "description": "",
718 | "sellCount": 15,
719 | "rating": 100,
720 | "info": "",
721 | "ratings": [
722 | {
723 | "username": "3******c",
724 | "rateTime": 1469281964000,
725 | "rateType": 0,
726 | "text": "还可以",
727 | "avatar": "http://static.galileo.xiaojukeji.com/static/tms/default_header.png"
728 | },
729 | {
730 | "username": "2******3",
731 | "rateTime": 1469271264000,
732 | "rateType": 0,
733 | "text": "",
734 | "avatar": "http://static.galileo.xiaojukeji.com/static/tms/default_header.png"
735 | }
736 | ],
737 | "icon": "http://fuss10.elemecdn.com/e/c6/f348e811772016ae24e968238bcbfjpeg.jpeg?imageView2/1/w/114/h/114",
738 | "image": "http://fuss10.elemecdn.com/e/c6/f348e811772016ae24e968238bcbfjpeg.jpeg?imageView2/1/w/750/h/750"
739 | }
740 | ]
741 | },
742 | {
743 | "name": "小吃主食",
744 | "type": -1,
745 | "foods": [
746 | {
747 | "name": "扁豆焖面",
748 | "price": 14,
749 | "oldPrice": "",
750 | "description": "",
751 | "sellCount": 188,
752 | "rating": 96,
753 | "info": "",
754 | "ratings": [
755 | {
756 | "username": "3******c",
757 | "rateTime": 1469281964000,
758 | "rateType": 0,
759 | "text": "",
760 | "avatar": "http://static.galileo.xiaojukeji.com/static/tms/default_header.png"
761 | },
762 | {
763 | "username": "2******3",
764 | "rateTime": 1469271264000,
765 | "rateType": 0,
766 | "text": "",
767 | "avatar": "http://static.galileo.xiaojukeji.com/static/tms/default_header.png"
768 | },
769 | {
770 | "username": "3******b",
771 | "rateTime": 1469261964000,
772 | "rateType": 1,
773 | "text": "",
774 | "avatar": "http://static.galileo.xiaojukeji.com/static/tms/default_header.png"
775 | }
776 | ],
777 | "icon": "http://fuss10.elemecdn.com/c/6b/29e3d29b0db63d36f7c500bca31d8jpeg.jpeg?imageView2/1/w/114/h/114",
778 | "image": "http://fuss10.elemecdn.com/c/6b/29e3d29b0db63d36f7c500bca31d8jpeg.jpeg?imageView2/1/w/750/h/750"
779 | },
780 | {
781 | "name": "葱花饼",
782 | "price": 10,
783 | "oldPrice": "",
784 | "description": "",
785 | "sellCount": 124,
786 | "rating": 85,
787 | "info": "",
788 | "ratings": [
789 | {
790 | "username": "3******c",
791 | "rateTime": 1469281964000,
792 | "rateType": 1,
793 | "text": "没啥味道",
794 | "avatar": "http://static.galileo.xiaojukeji.com/static/tms/default_header.png"
795 | },
796 | {
797 | "username": "2******3",
798 | "rateTime": 1469271264000,
799 | "rateType": 1,
800 | "text": "很一般啊",
801 | "avatar": "http://static.galileo.xiaojukeji.com/static/tms/default_header.png"
802 | },
803 | {
804 | "username": "3******b",
805 | "rateTime": 1469261964000,
806 | "rateType": 0,
807 | "text": "",
808 | "avatar": "http://static.galileo.xiaojukeji.com/static/tms/default_header.png"
809 | }
810 | ],
811 | "icon": "http://fuss10.elemecdn.com/f/28/a51e7b18751bcdf871648a23fd3b4jpeg.jpeg?imageView2/1/w/114/h/114",
812 | "image": "http://fuss10.elemecdn.com/f/28/a51e7b18751bcdf871648a23fd3b4jpeg.jpeg?imageView2/1/w/750/h/750"
813 | },
814 | {
815 | "name": "牛肉馅饼",
816 | "price": 14,
817 | "oldPrice": "",
818 | "description": "",
819 | "sellCount": 114,
820 | "rating": 91,
821 | "info": "",
822 | "ratings": [
823 | {
824 | "username": "3******c",
825 | "rateTime": 1469281964000,
826 | "rateType": 1,
827 | "text": "难吃不推荐",
828 | "avatar": "http://static.galileo.xiaojukeji.com/static/tms/default_header.png"
829 | },
830 | {
831 | "username": "2******3",
832 | "rateTime": 1469271264000,
833 | "rateType": 0,
834 | "text": "",
835 | "avatar": "http://static.galileo.xiaojukeji.com/static/tms/default_header.png"
836 | },
837 | {
838 | "username": "3******b",
839 | "rateTime": 1469261964000,
840 | "rateType": 0,
841 | "text": "",
842 | "avatar": "http://static.galileo.xiaojukeji.com/static/tms/default_header.png"
843 | }
844 | ],
845 | "icon": "http://fuss10.elemecdn.com/d/b9/bcab0e8ad97758e65ae5a62b2664ejpeg.jpeg?imageView2/1/w/114/h/114",
846 | "image": "http://fuss10.elemecdn.com/d/b9/bcab0e8ad97758e65ae5a62b2664ejpeg.jpeg?imageView2/1/w/750/h/750"
847 | },
848 | {
849 | "name": "招牌猪肉白菜锅贴/10个",
850 | "price": 17,
851 | "oldPrice": "",
852 | "description": "",
853 | "sellCount": 101,
854 | "rating": 78,
855 | "info": "",
856 | "ratings": [
857 | {
858 | "username": "3******c",
859 | "rateTime": 1469281964000,
860 | "rateType": 1,
861 | "text": "不脆,不好吃",
862 | "avatar": "http://static.galileo.xiaojukeji.com/static/tms/default_header.png"
863 | },
864 | {
865 | "username": "2******3",
866 | "rateTime": 1469271264000,
867 | "rateType": 0,
868 | "text": "",
869 | "avatar": "http://static.galileo.xiaojukeji.com/static/tms/default_header.png"
870 | },
871 | {
872 | "username": "3******b",
873 | "rateTime": 1469261964000,
874 | "rateType": 0,
875 | "text": "",
876 | "avatar": "http://static.galileo.xiaojukeji.com/static/tms/default_header.png"
877 | }
878 | ],
879 | "icon": "http://fuss10.elemecdn.com/7/72/9a580c1462ca1e4d3c07e112bc035jpeg.jpeg?imageView2/1/w/114/h/114",
880 | "image": "http://fuss10.elemecdn.com/7/72/9a580c1462ca1e4d3c07e112bc035jpeg.jpeg?imageView2/1/w/750/h/750"
881 | },
882 | {
883 | "name": "糊塌子",
884 | "price": 10,
885 | "oldPrice": "",
886 | "description": "",
887 | "sellCount": 80,
888 | "rating": 93,
889 | "info": "",
890 | "ratings": [
891 | {
892 | "username": "3******c",
893 | "rateTime": 1469281964000,
894 | "rateType": 0,
895 | "text": "",
896 | "avatar": "http://static.galileo.xiaojukeji.com/static/tms/default_header.png"
897 | },
898 | {
899 | "username": "2******3",
900 | "rateTime": 1469271264000,
901 | "rateType": 0,
902 | "text": "",
903 | "avatar": "http://static.galileo.xiaojukeji.com/static/tms/default_header.png"
904 | },
905 | {
906 | "username": "3******b",
907 | "rateTime": 1469261964000,
908 | "rateType": 0,
909 | "text": "",
910 | "avatar": "http://static.galileo.xiaojukeji.com/static/tms/default_header.png"
911 | }
912 | ],
913 | "icon": "http://fuss10.elemecdn.com/0/05/097a2a59fd2a2292d08067e16380cjpeg.jpeg?imageView2/1/w/114/h/114",
914 | "image": "http://fuss10.elemecdn.com/0/05/097a2a59fd2a2292d08067e16380cjpeg.jpeg?imageView2/1/w/750/h/750"
915 | }
916 | ]
917 | },
918 | {
919 | "name": "特色粥品",
920 | "type": -1,
921 | "foods": [
922 | {
923 | "name": "皮蛋瘦肉粥",
924 | "price": 10,
925 | "oldPrice": "",
926 | "description": "咸粥",
927 | "sellCount": 229,
928 | "rating": 100,
929 | "ratings": [
930 | {
931 | "username": "3******c",
932 | "rateTime": 1469281964000,
933 | "rateType": 0,
934 | "text": "很喜欢的粥",
935 | "avatar": "http://static.galileo.xiaojukeji.com/static/tms/default_header.png"
936 | },
937 | {
938 | "username": "2******3",
939 | "rateTime": 1469271264000,
940 | "rateType": 0,
941 | "text": "",
942 | "avatar": "http://static.galileo.xiaojukeji.com/static/tms/default_header.png"
943 | },
944 | {
945 | "username": "3******b",
946 | "rateTime": 1469261964000,
947 | "rateType": 1,
948 | "text": "",
949 | "avatar": "http://static.galileo.xiaojukeji.com/static/tms/default_header.png"
950 | }
951 | ],
952 | "icon": "http://fuss10.elemecdn.com/c/cd/c12745ed8a5171e13b427dbc39401jpeg.jpeg?imageView2/1/w/114/h/114",
953 | "image": "http://fuss10.elemecdn.com/c/cd/c12745ed8a5171e13b427dbc39401jpeg.jpeg?imageView2/1/w/750/h/750"
954 | },
955 | {
956 | "name": "南瓜粥",
957 | "price": 9,
958 | "oldPrice": "",
959 | "description": "甜粥",
960 | "sellCount": 91,
961 | "rating": 100,
962 | "info": "",
963 | "ratings": [
964 | {
965 | "username": "3******c",
966 | "rateTime": 1469281964000,
967 | "rateType": 0,
968 | "text": "",
969 | "avatar": "http://static.galileo.xiaojukeji.com/static/tms/default_header.png"
970 | },
971 | {
972 | "username": "2******3",
973 | "rateTime": 1469271264000,
974 | "rateType": 0,
975 | "text": "",
976 | "avatar": "http://static.galileo.xiaojukeji.com/static/tms/default_header.png"
977 | },
978 | {
979 | "username": "3******b",
980 | "rateTime": 1469261964000,
981 | "rateType": 0,
982 | "text": "",
983 | "avatar": "http://static.galileo.xiaojukeji.com/static/tms/default_header.png"
984 | }
985 | ],
986 | "icon": "http://fuss10.elemecdn.com/8/a6/453f65f16b1391942af11511b7a90jpeg.jpeg?imageView2/1/w/114/h/114",
987 | "image": "http://fuss10.elemecdn.com/8/a6/453f65f16b1391942af11511b7a90jpeg.jpeg?imageView2/1/w/750/h/750"
988 | },
989 | {
990 | "name": "红豆薏米美肤粥",
991 | "price": 12,
992 | "oldPrice": "",
993 | "description": "甜粥",
994 | "sellCount": 86,
995 | "rating": 100,
996 | "info": "",
997 | "ratings": [
998 | {
999 | "username": "3******c",
1000 | "rateTime": 1469281964000,
1001 | "rateType": 0,
1002 | "text": "",
1003 | "avatar": "http://static.galileo.xiaojukeji.com/static/tms/default_header.png"
1004 | },
1005 | {
1006 | "username": "2******3",
1007 | "rateTime": 1469271264000,
1008 | "rateType": 0,
1009 | "text": "",
1010 | "avatar": "http://static.galileo.xiaojukeji.com/static/tms/default_header.png"
1011 | },
1012 | {
1013 | "username": "3******b",
1014 | "rateTime": 1469261964000,
1015 | "rateType": 0,
1016 | "text": "",
1017 | "avatar": "http://static.galileo.xiaojukeji.com/static/tms/default_header.png"
1018 | }
1019 | ],
1020 | "icon": "http://fuss10.elemecdn.com/d/22/260bd78ee6ac6051136c5447fe307jpeg.jpeg?imageView2/1/w/114/h/114",
1021 | "image": "http://fuss10.elemecdn.com/d/22/260bd78ee6ac6051136c5447fe307jpeg.jpeg?imageView2/1/w/750/h/750"
1022 | },
1023 | {
1024 | "name": "红枣山药糙米粥",
1025 | "price": 10,
1026 | "oldPrice": "",
1027 | "description": "",
1028 | "sellCount": 81,
1029 | "rating": 91,
1030 | "info": "",
1031 | "ratings": [
1032 | {
1033 | "username": "3******c",
1034 | "rateTime": 1469281964000,
1035 | "rateType": 0,
1036 | "text": "",
1037 | "avatar": "http://static.galileo.xiaojukeji.com/static/tms/default_header.png"
1038 | },
1039 | {
1040 | "username": "2******3",
1041 | "rateTime": 1469271264000,
1042 | "rateType": 0,
1043 | "text": "",
1044 | "avatar": "http://static.galileo.xiaojukeji.com/static/tms/default_header.png"
1045 | },
1046 | {
1047 | "username": "3******b",
1048 | "rateTime": 1469261964000,
1049 | "rateType": 0,
1050 | "text": "",
1051 | "avatar": "http://static.galileo.xiaojukeji.com/static/tms/default_header.png"
1052 | }
1053 | ],
1054 | "icon": "http://fuss10.elemecdn.com/9/b5/469d8854f9a3a03797933fd01398bjpeg.jpeg?imageView2/1/w/114/h/114",
1055 | "image": "http://fuss10.elemecdn.com/9/b5/469d8854f9a3a03797933fd01398bjpeg.jpeg?imageView2/1/w/750/h/750"
1056 | },
1057 | {
1058 | "name": "鲜蔬菌菇粥",
1059 | "price": 11,
1060 | "oldPrice": "",
1061 | "description": "咸粥",
1062 | "sellCount": 56,
1063 | "rating": 100,
1064 | "info": "",
1065 | "ratings": [
1066 | {
1067 | "username": "3******c",
1068 | "rateTime": 1469281964000,
1069 | "rateType": 0,
1070 | "text": "",
1071 | "avatar": "http://static.galileo.xiaojukeji.com/static/tms/default_header.png"
1072 | },
1073 | {
1074 | "username": "2******3",
1075 | "rateTime": 1469271264000,
1076 | "rateType": 0,
1077 | "text": ""
1078 | },
1079 | {
1080 | "username": "3******b",
1081 | "rateTime": 1469261964000,
1082 | "rateType": 0,
1083 | "text": "",
1084 | "avatar": "http://static.galileo.xiaojukeji.com/static/tms/default_header.png"
1085 | }
1086 | ],
1087 | "icon": "http://fuss10.elemecdn.com/e/a3/5317c68dd618929b6ac05804e429ajpeg.jpeg?imageView2/1/w/114/h/114",
1088 | "image": "http://fuss10.elemecdn.com/e/a3/5317c68dd618929b6ac05804e429ajpeg.jpeg?imageView2/1/w/750/h/750"
1089 | },
1090 | {
1091 | "name": "田园蔬菜粥",
1092 | "price": 10,
1093 | "oldPrice": "",
1094 | "description": "咸粥",
1095 | "sellCount": 33,
1096 | "rating": 100,
1097 | "info": "",
1098 | "ratings": [
1099 | {
1100 | "username": "3******c",
1101 | "rateTime": 1469281964000,
1102 | "rateType": 0,
1103 | "text": "",
1104 | "avatar": "http://static.galileo.xiaojukeji.com/static/tms/default_header.png"
1105 | },
1106 | {
1107 | "username": "2******3",
1108 | "rateTime": 1469271264000,
1109 | "rateType": 0,
1110 | "text": "",
1111 | "avatar": "http://static.galileo.xiaojukeji.com/static/tms/default_header.png"
1112 | },
1113 | {
1114 | "username": "3******b",
1115 | "rateTime": 1469261964000,
1116 | "rateType": 0,
1117 | "text": "",
1118 | "avatar": "http://static.galileo.xiaojukeji.com/static/tms/default_header.png"
1119 | }
1120 | ],
1121 | "icon": "http://fuss10.elemecdn.com/a/94/7371083792c19df00e546b29e344cjpeg.jpeg?imageView2/1/w/114/h/114",
1122 | "image": "http://fuss10.elemecdn.com/a/94/7371083792c19df00e546b29e344cjpeg.jpeg?imageView2/1/w/750/h/750"
1123 | }
1124 | ]
1125 | }
1126 | ],
1127 | "ratings": [
1128 | {
1129 | "username": "3******c",
1130 | "rateTime": 1469281964000,
1131 | "deliveryTime": 30,
1132 | "score": 5,
1133 | "rateType": 0,
1134 | "text": "不错,粥很好喝,我经常吃这一家,非常赞,以后也会常来吃,强烈推荐.",
1135 | "avatar": "http://static.galileo.xiaojukeji.com/static/tms/default_header.png",
1136 | "recommend": [
1137 | "南瓜粥",
1138 | "皮蛋瘦肉粥",
1139 | "扁豆焖面",
1140 | "娃娃菜炖豆腐",
1141 | "牛肉馅饼"
1142 | ]
1143 | },
1144 | {
1145 | "username": "2******3",
1146 | "rateTime": 1469271264000,
1147 | "deliveryTime": "",
1148 | "score": 4,
1149 | "rateType": 0,
1150 | "text": "服务态度不错",
1151 | "avatar": "http://static.galileo.xiaojukeji.com/static/tms/default_header.png",
1152 | "recommend": [
1153 | "扁豆焖面"
1154 | ]
1155 | },
1156 | {
1157 | "username": "3******b",
1158 | "rateTime": 1469261964000,
1159 | "score": 3,
1160 | "rateType": 1,
1161 | "text": "",
1162 | "avatar": "http://static.galileo.xiaojukeji.com/static/tms/default_header.png",
1163 | "recommend": []
1164 | },
1165 | {
1166 | "username": "1******c",
1167 | "rateTime": 1469261864000,
1168 | "deliveryTime": 20,
1169 | "score": 5,
1170 | "rateType": 0,
1171 | "text": "良心店铺",
1172 | "avatar": "http://static.galileo.xiaojukeji.com/static/tms/default_header.png",
1173 | "recommend": []
1174 | },
1175 | {
1176 | "username": "2******d",
1177 | "rateTime": 1469251264000,
1178 | "deliveryTime": 10,
1179 | "score": 4,
1180 | "rateType": 0,
1181 | "text": "",
1182 | "avatar": "http://static.galileo.xiaojukeji.com/static/tms/default_header.png",
1183 | "recommend": []
1184 | },
1185 | {
1186 | "username": "9******0",
1187 | "rateTime": 1469241964000,
1188 | "deliveryTime": 70,
1189 | "score": 1,
1190 | "rateType": 1,
1191 | "text": "送货速度蜗牛一样",
1192 | "avatar": "http://static.galileo.xiaojukeji.com/static/tms/default_header.png",
1193 | "recommend": []
1194 | },
1195 | {
1196 | "username": "d******c",
1197 | "rateTime": 1469231964000,
1198 | "deliveryTime": 30,
1199 | "score": 5,
1200 | "rateType": 0,
1201 | "text": "很喜欢的粥店",
1202 | "avatar": "http://static.galileo.xiaojukeji.com/static/tms/default_header.png",
1203 | "recommend": []
1204 | },
1205 | {
1206 | "username": "2******3",
1207 | "rateTime": 1469221264000,
1208 | "deliveryTime": "",
1209 | "score": 4,
1210 | "rateType": 0,
1211 | "text": "量给的还可以",
1212 | "avatar": "http://static.galileo.xiaojukeji.com/static/tms/default_header.png",
1213 | "recommend": []
1214 | },
1215 | {
1216 | "username": "3******8",
1217 | "rateTime": 1469211964000,
1218 | "deliveryTime": "",
1219 | "score": 3,
1220 | "rateType": 1,
1221 | "text": "",
1222 | "avatar": "http://static.galileo.xiaojukeji.com/static/tms/default_header.png",
1223 | "recommend": []
1224 | },
1225 | {
1226 | "username": "a******a",
1227 | "rateTime": 1469201964000,
1228 | "deliveryTime": "",
1229 | "score": 4,
1230 | "rateType": 0,
1231 | "text": "孩子喜欢吃这家",
1232 | "avatar": "http://static.galileo.xiaojukeji.com/static/tms/default_header.png",
1233 | "recommend": [
1234 | "南瓜粥"
1235 | ]
1236 | },
1237 | {
1238 | "username": "3******3",
1239 | "rateTime": 1469191264000,
1240 | "deliveryTime": "",
1241 | "score": 4,
1242 | "rateType": 0,
1243 | "text": "粥挺好吃的",
1244 | "avatar": "http://static.galileo.xiaojukeji.com/static/tms/default_header.png",
1245 | "recommend": []
1246 | },
1247 | {
1248 | "username": "t******b",
1249 | "rateTime": 1469181964000,
1250 | "deliveryTime": "",
1251 | "score": 3,
1252 | "rateType": 1,
1253 | "text": "",
1254 | "avatar": "http://static.galileo.xiaojukeji.com/static/tms/default_header.png",
1255 | "recommend": []
1256 | },
1257 | {
1258 | "username": "f******c",
1259 | "rateTime": 1469171964000,
1260 | "deliveryTime": 15,
1261 | "score": 5,
1262 | "rateType": 0,
1263 | "text": "送货速度很快",
1264 | "avatar": "http://static.galileo.xiaojukeji.com/static/tms/default_header.png",
1265 | "recommend": []
1266 | },
1267 | {
1268 | "username": "k******3",
1269 | "rateTime": 1469161264000,
1270 | "deliveryTime": "",
1271 | "score": 4,
1272 | "rateType": 0,
1273 | "text": "",
1274 | "avatar": "http://static.galileo.xiaojukeji.com/static/tms/default_header.png",
1275 | "recommend": []
1276 | },
1277 | {
1278 | "username": "u******b",
1279 | "rateTime": 1469151964000,
1280 | "deliveryTime": "",
1281 | "score": 4,
1282 | "rateType": 0,
1283 | "text": "下雨天给快递小哥点个赞",
1284 | "avatar": "http://static.galileo.xiaojukeji.com/static/tms/default_header.png",
1285 | "recommend": []
1286 | },
1287 | {
1288 | "username": "s******c",
1289 | "rateTime": 1469141964000,
1290 | "deliveryTime": "",
1291 | "score": 4,
1292 | "rateType": 0,
1293 | "text": "好",
1294 | "avatar": "http://static.galileo.xiaojukeji.com/static/tms/default_header.png",
1295 | "recommend": []
1296 | },
1297 | {
1298 | "username": "z******3",
1299 | "rateTime": 1469131264000,
1300 | "deliveryTime": "",
1301 | "score": 5,
1302 | "rateType": 0,
1303 | "text": "吃了还想再吃",
1304 | "avatar": "http://static.galileo.xiaojukeji.com/static/tms/default_header.png",
1305 | "recommend": []
1306 | },
1307 | {
1308 | "username": "n******b",
1309 | "rateTime": 1469121964000,
1310 | "deliveryTime": "",
1311 | "score": 3,
1312 | "rateType": 1,
1313 | "text": "发票开的不对",
1314 | "avatar": "http://static.galileo.xiaojukeji.com/static/tms/default_header.png",
1315 | "recommend": []
1316 | },
1317 | {
1318 | "username": "m******c",
1319 | "rateTime": 1469111964000,
1320 | "deliveryTime": 30,
1321 | "score": 5,
1322 | "rateType": 0,
1323 | "text": "好吃",
1324 | "avatar": "http://static.galileo.xiaojukeji.com/static/tms/default_header.png",
1325 | "recommend": []
1326 | },
1327 | {
1328 | "username": "l******3",
1329 | "rateTime": 1469101264000,
1330 | "deliveryTime": 40,
1331 | "score": 5,
1332 | "rateType": 0,
1333 | "text": "还不错吧",
1334 | "avatar": "http://static.galileo.xiaojukeji.com/static/tms/default_header.png",
1335 | "recommend": []
1336 | },
1337 | {
1338 | "username": "3******o",
1339 | "rateTime": 1469091964000,
1340 | "deliveryTime": "",
1341 | "score": 2,
1342 | "rateType": 1,
1343 | "text": "",
1344 | "avatar": "http://static.galileo.xiaojukeji.com/static/tms/default_header.png",
1345 | "recommend": []
1346 | },
1347 | {
1348 | "username": "3******p",
1349 | "rateTime": 1469081964000,
1350 | "deliveryTime": "",
1351 | "score": 4,
1352 | "rateType": 0,
1353 | "text": "很喜欢的粥",
1354 | "avatar": "http://static.galileo.xiaojukeji.com/static/tms/default_header.png",
1355 | "recommend": []
1356 | },
1357 | {
1358 | "username": "o******k",
1359 | "rateTime": 1469071264000,
1360 | "deliveryTime": "",
1361 | "score": 5,
1362 | "rateType": 0,
1363 | "text": "",
1364 | "avatar": "http://static.galileo.xiaojukeji.com/static/tms/default_header.png",
1365 | "recommend": []
1366 | },
1367 | {
1368 | "username": "k******b",
1369 | "rateTime": 1469061964000,
1370 | "deliveryTime": "",
1371 | "score": 4,
1372 | "rateType": 0,
1373 | "text": "",
1374 | "avatar": "http://static.galileo.xiaojukeji.com/static/tms/default_header.png",
1375 | "recommend": []
1376 | }
1377 | ]
1378 | }
1379 |
--------------------------------------------------------------------------------