├── .browserslistrc ├── .commitlintrc.js ├── .editorconfig ├── .eslintignore ├── .eslintrc.js ├── .github └── workflows │ └── deploy.yml ├── .gitignore ├── LICENSE ├── README.md ├── alias.config.js ├── babel.config.js ├── docs ├── images │ └── create-api原理.png └── server │ └── prod.server.js ├── jsconfig.json ├── package.json ├── public ├── data.json ├── favicon.png ├── img │ └── icons │ │ ├── android-chrome-192x192.png │ │ ├── android-chrome-512x512.png │ │ ├── android-chrome-maskable-192x192.png │ │ ├── android-chrome-maskable-512x512.png │ │ ├── apple-touch-icon-120x120.png │ │ ├── apple-touch-icon-152x152.png │ │ ├── apple-touch-icon-180x180.png │ │ ├── apple-touch-icon-60x60.png │ │ ├── apple-touch-icon-76x76.png │ │ ├── apple-touch-icon.png │ │ ├── favicon-16x16.png │ │ ├── favicon-32x32.png │ │ ├── msapplication-icon-144x144.png │ │ ├── mstile-150x150.png │ │ └── safari-pinned-tab.svg ├── index.html └── robots.txt ├── src ├── App.vue ├── api │ ├── index.js │ └── request.js ├── assets │ ├── fonts │ │ ├── sell-icon.eot │ │ ├── sell-icon.svg │ │ ├── sell-icon.ttf │ │ └── sell-icon.woff │ └── stylus │ │ ├── base.styl │ │ ├── icon.styl │ │ ├── index.styl │ │ ├── mixin.styl │ │ ├── theme.styl │ │ └── variable.styl ├── components │ ├── bubble │ │ └── bubble.vue │ ├── cart-control │ │ └── cart-control.vue │ ├── food │ │ └── food.vue │ ├── goods │ │ └── goods.vue │ ├── header-detail │ │ └── header-detail.vue │ ├── rating-select │ │ └── rating-select.vue │ ├── ratings │ │ └── ratings.vue │ ├── seller │ │ └── seller.vue │ ├── shop-cart-list │ │ └── shop-cart-list.vue │ ├── shop-cart-sticky │ │ └── shop-cart-sticky.vue │ ├── shop-cart │ │ └── shop-cart.vue │ ├── split │ │ └── split.vue │ ├── star │ │ ├── star.vue │ │ ├── star24_half@2x.png │ │ ├── star24_half@3x.png │ │ ├── star24_off@2x.png │ │ ├── star24_off@3x.png │ │ ├── star24_on@2x.png │ │ ├── star24_on@3x.png │ │ ├── star36_half@2x.png │ │ ├── star36_half@3x.png │ │ ├── star36_off@2x.png │ │ ├── star36_off@3x.png │ │ ├── star36_on@2x.png │ │ ├── star36_on@3x.png │ │ ├── star48_half@2x.png │ │ ├── star48_half@3x.png │ │ ├── star48_off@2x.png │ │ ├── star48_off@3x.png │ │ ├── star48_on@2x.png │ │ └── star48_on@3x.png │ ├── support-ico │ │ ├── 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 │ │ ├── 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 │ │ └── support-ico.vue │ ├── tab │ │ └── tab.vue │ └── v-header │ │ ├── brand@2x.png │ │ ├── brand@3x.png │ │ ├── bulletin@2x.png │ │ ├── bulletin@3x.png │ │ └── v-header.vue ├── configs │ ├── cube-ui.js │ └── registerServiceWorker.js ├── main.js └── utils │ ├── mixins │ ├── popup.js │ └── rating.js │ ├── register.js │ └── storage.js ├── vue.config.js └── yarn.lock /.browserslistrc: -------------------------------------------------------------------------------- 1 | > 1% 2 | last 2 versions 3 | 4 | not ie <= 11 5 | Android >= 4.0 6 | iOS >= 8 7 | -------------------------------------------------------------------------------- /.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 | -------------------------------------------------------------------------------- /.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 | -------------------------------------------------------------------------------- /.eslintignore: -------------------------------------------------------------------------------- 1 | public 2 | dist 3 | -------------------------------------------------------------------------------- /.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 | -------------------------------------------------------------------------------- /.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 | -------------------------------------------------------------------------------- /.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 | -------------------------------------------------------------------------------- /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 | -------------------------------------------------------------------------------- /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 | -------------------------------------------------------------------------------- /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 | -------------------------------------------------------------------------------- /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/4df84980029a89be4d77f32357c4e2279b6f794b/docs/images/create-api原理.png -------------------------------------------------------------------------------- /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 | -------------------------------------------------------------------------------- /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 | -------------------------------------------------------------------------------- /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 | -------------------------------------------------------------------------------- /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 | -------------------------------------------------------------------------------- /public/favicon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wkl007/vue-sell/4df84980029a89be4d77f32357c4e2279b6f794b/public/favicon.png -------------------------------------------------------------------------------- /public/img/icons/android-chrome-192x192.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wkl007/vue-sell/4df84980029a89be4d77f32357c4e2279b6f794b/public/img/icons/android-chrome-192x192.png -------------------------------------------------------------------------------- /public/img/icons/android-chrome-512x512.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wkl007/vue-sell/4df84980029a89be4d77f32357c4e2279b6f794b/public/img/icons/android-chrome-512x512.png -------------------------------------------------------------------------------- /public/img/icons/android-chrome-maskable-192x192.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wkl007/vue-sell/4df84980029a89be4d77f32357c4e2279b6f794b/public/img/icons/android-chrome-maskable-192x192.png -------------------------------------------------------------------------------- /public/img/icons/android-chrome-maskable-512x512.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wkl007/vue-sell/4df84980029a89be4d77f32357c4e2279b6f794b/public/img/icons/android-chrome-maskable-512x512.png -------------------------------------------------------------------------------- /public/img/icons/apple-touch-icon-120x120.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wkl007/vue-sell/4df84980029a89be4d77f32357c4e2279b6f794b/public/img/icons/apple-touch-icon-120x120.png -------------------------------------------------------------------------------- /public/img/icons/apple-touch-icon-152x152.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wkl007/vue-sell/4df84980029a89be4d77f32357c4e2279b6f794b/public/img/icons/apple-touch-icon-152x152.png -------------------------------------------------------------------------------- /public/img/icons/apple-touch-icon-180x180.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wkl007/vue-sell/4df84980029a89be4d77f32357c4e2279b6f794b/public/img/icons/apple-touch-icon-180x180.png -------------------------------------------------------------------------------- /public/img/icons/apple-touch-icon-60x60.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wkl007/vue-sell/4df84980029a89be4d77f32357c4e2279b6f794b/public/img/icons/apple-touch-icon-60x60.png -------------------------------------------------------------------------------- /public/img/icons/apple-touch-icon-76x76.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wkl007/vue-sell/4df84980029a89be4d77f32357c4e2279b6f794b/public/img/icons/apple-touch-icon-76x76.png -------------------------------------------------------------------------------- /public/img/icons/apple-touch-icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wkl007/vue-sell/4df84980029a89be4d77f32357c4e2279b6f794b/public/img/icons/apple-touch-icon.png -------------------------------------------------------------------------------- /public/img/icons/favicon-16x16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wkl007/vue-sell/4df84980029a89be4d77f32357c4e2279b6f794b/public/img/icons/favicon-16x16.png -------------------------------------------------------------------------------- /public/img/icons/favicon-32x32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wkl007/vue-sell/4df84980029a89be4d77f32357c4e2279b6f794b/public/img/icons/favicon-32x32.png -------------------------------------------------------------------------------- /public/img/icons/msapplication-icon-144x144.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wkl007/vue-sell/4df84980029a89be4d77f32357c4e2279b6f794b/public/img/icons/msapplication-icon-144x144.png -------------------------------------------------------------------------------- /public/img/icons/mstile-150x150.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wkl007/vue-sell/4df84980029a89be4d77f32357c4e2279b6f794b/public/img/icons/mstile-150x150.png -------------------------------------------------------------------------------- /public/img/icons/safari-pinned-tab.svg: -------------------------------------------------------------------------------- 1 | 2 | 4 | 7 | 8 | Created by potrace 1.11, written by Peter Selinger 2001-2013 9 | 10 | 12 | 148 | 149 | 150 | -------------------------------------------------------------------------------- /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 | -------------------------------------------------------------------------------- /public/robots.txt: -------------------------------------------------------------------------------- 1 | User-agent: * 2 | Disallow: 3 | -------------------------------------------------------------------------------- /src/App.vue: -------------------------------------------------------------------------------- 1 | 9 | 10 | 75 | 87 | -------------------------------------------------------------------------------- /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/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 | -------------------------------------------------------------------------------- /src/assets/fonts/sell-icon.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wkl007/vue-sell/4df84980029a89be4d77f32357c4e2279b6f794b/src/assets/fonts/sell-icon.eot -------------------------------------------------------------------------------- /src/assets/fonts/sell-icon.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Generated by IcoMoon 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | -------------------------------------------------------------------------------- /src/assets/fonts/sell-icon.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wkl007/vue-sell/4df84980029a89be4d77f32357c4e2279b6f794b/src/assets/fonts/sell-icon.ttf -------------------------------------------------------------------------------- /src/assets/fonts/sell-icon.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wkl007/vue-sell/4df84980029a89be4d77f32357c4e2279b6f794b/src/assets/fonts/sell-icon.woff -------------------------------------------------------------------------------- /src/assets/stylus/base.styl: -------------------------------------------------------------------------------- 1 | html, body 2 | height: 100% 3 | overflow: hidden 4 | -------------------------------------------------------------------------------- /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/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 | -------------------------------------------------------------------------------- /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/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/components/bubble/bubble.vue: -------------------------------------------------------------------------------- 1 | 6 | 7 | 18 | 34 | -------------------------------------------------------------------------------- /src/components/cart-control/cart-control.vue: -------------------------------------------------------------------------------- 1 | 12 | 13 | 46 | 47 | 91 | -------------------------------------------------------------------------------- /src/components/food/food.vue: -------------------------------------------------------------------------------- 1 | 78 | 79 | 145 | 329 | -------------------------------------------------------------------------------- /src/components/goods/goods.vue: -------------------------------------------------------------------------------- 1 | 78 | 79 | 201 | 325 | -------------------------------------------------------------------------------- /src/components/header-detail/header-detail.vue: -------------------------------------------------------------------------------- 1 | 49 | 50 | 72 | 169 | -------------------------------------------------------------------------------- /src/components/rating-select/rating-select.vue: -------------------------------------------------------------------------------- 1 | 17 | 18 | 76 | 130 | -------------------------------------------------------------------------------- /src/components/ratings/ratings.vue: -------------------------------------------------------------------------------- 1 | 75 | 76 | 138 | 292 | -------------------------------------------------------------------------------- /src/components/seller/seller.vue: -------------------------------------------------------------------------------- 1 | 86 | 87 | 139 | 140 | 295 | -------------------------------------------------------------------------------- /src/components/shop-cart-list/shop-cart-list.vue: -------------------------------------------------------------------------------- 1 | 41 | 42 | 100 | 165 | -------------------------------------------------------------------------------- /src/components/shop-cart-sticky/shop-cart-sticky.vue: -------------------------------------------------------------------------------- 1 | 13 | 14 | 57 | 67 | -------------------------------------------------------------------------------- /src/components/shop-cart/shop-cart.vue: -------------------------------------------------------------------------------- 1 | 39 | 40 | 237 | 238 | 344 | -------------------------------------------------------------------------------- /src/components/split/split.vue: -------------------------------------------------------------------------------- 1 | 6 | 7 | 15 | 17 | -------------------------------------------------------------------------------- /src/components/star/star.vue: -------------------------------------------------------------------------------- 1 | 15 | 16 | 55 | 123 | -------------------------------------------------------------------------------- /src/components/star/star24_half@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wkl007/vue-sell/4df84980029a89be4d77f32357c4e2279b6f794b/src/components/star/star24_half@2x.png -------------------------------------------------------------------------------- /src/components/star/star24_half@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wkl007/vue-sell/4df84980029a89be4d77f32357c4e2279b6f794b/src/components/star/star24_half@3x.png -------------------------------------------------------------------------------- /src/components/star/star24_off@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wkl007/vue-sell/4df84980029a89be4d77f32357c4e2279b6f794b/src/components/star/star24_off@2x.png -------------------------------------------------------------------------------- /src/components/star/star24_off@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wkl007/vue-sell/4df84980029a89be4d77f32357c4e2279b6f794b/src/components/star/star24_off@3x.png -------------------------------------------------------------------------------- /src/components/star/star24_on@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wkl007/vue-sell/4df84980029a89be4d77f32357c4e2279b6f794b/src/components/star/star24_on@2x.png -------------------------------------------------------------------------------- /src/components/star/star24_on@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wkl007/vue-sell/4df84980029a89be4d77f32357c4e2279b6f794b/src/components/star/star24_on@3x.png -------------------------------------------------------------------------------- /src/components/star/star36_half@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wkl007/vue-sell/4df84980029a89be4d77f32357c4e2279b6f794b/src/components/star/star36_half@2x.png -------------------------------------------------------------------------------- /src/components/star/star36_half@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wkl007/vue-sell/4df84980029a89be4d77f32357c4e2279b6f794b/src/components/star/star36_half@3x.png -------------------------------------------------------------------------------- /src/components/star/star36_off@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wkl007/vue-sell/4df84980029a89be4d77f32357c4e2279b6f794b/src/components/star/star36_off@2x.png -------------------------------------------------------------------------------- /src/components/star/star36_off@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wkl007/vue-sell/4df84980029a89be4d77f32357c4e2279b6f794b/src/components/star/star36_off@3x.png -------------------------------------------------------------------------------- /src/components/star/star36_on@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wkl007/vue-sell/4df84980029a89be4d77f32357c4e2279b6f794b/src/components/star/star36_on@2x.png -------------------------------------------------------------------------------- /src/components/star/star36_on@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wkl007/vue-sell/4df84980029a89be4d77f32357c4e2279b6f794b/src/components/star/star36_on@3x.png -------------------------------------------------------------------------------- /src/components/star/star48_half@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wkl007/vue-sell/4df84980029a89be4d77f32357c4e2279b6f794b/src/components/star/star48_half@2x.png -------------------------------------------------------------------------------- /src/components/star/star48_half@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wkl007/vue-sell/4df84980029a89be4d77f32357c4e2279b6f794b/src/components/star/star48_half@3x.png -------------------------------------------------------------------------------- /src/components/star/star48_off@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wkl007/vue-sell/4df84980029a89be4d77f32357c4e2279b6f794b/src/components/star/star48_off@2x.png -------------------------------------------------------------------------------- /src/components/star/star48_off@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wkl007/vue-sell/4df84980029a89be4d77f32357c4e2279b6f794b/src/components/star/star48_off@3x.png -------------------------------------------------------------------------------- /src/components/star/star48_on@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wkl007/vue-sell/4df84980029a89be4d77f32357c4e2279b6f794b/src/components/star/star48_on@2x.png -------------------------------------------------------------------------------- /src/components/star/star48_on@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wkl007/vue-sell/4df84980029a89be4d77f32357c4e2279b6f794b/src/components/star/star48_on@3x.png -------------------------------------------------------------------------------- /src/components/support-ico/decrease_1@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wkl007/vue-sell/4df84980029a89be4d77f32357c4e2279b6f794b/src/components/support-ico/decrease_1@2x.png -------------------------------------------------------------------------------- /src/components/support-ico/decrease_1@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wkl007/vue-sell/4df84980029a89be4d77f32357c4e2279b6f794b/src/components/support-ico/decrease_1@3x.png -------------------------------------------------------------------------------- /src/components/support-ico/decrease_2@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wkl007/vue-sell/4df84980029a89be4d77f32357c4e2279b6f794b/src/components/support-ico/decrease_2@2x.png -------------------------------------------------------------------------------- /src/components/support-ico/decrease_2@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wkl007/vue-sell/4df84980029a89be4d77f32357c4e2279b6f794b/src/components/support-ico/decrease_2@3x.png -------------------------------------------------------------------------------- /src/components/support-ico/decrease_3@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wkl007/vue-sell/4df84980029a89be4d77f32357c4e2279b6f794b/src/components/support-ico/decrease_3@2x.png -------------------------------------------------------------------------------- /src/components/support-ico/decrease_3@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wkl007/vue-sell/4df84980029a89be4d77f32357c4e2279b6f794b/src/components/support-ico/decrease_3@3x.png -------------------------------------------------------------------------------- /src/components/support-ico/decrease_4@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wkl007/vue-sell/4df84980029a89be4d77f32357c4e2279b6f794b/src/components/support-ico/decrease_4@2x.png -------------------------------------------------------------------------------- /src/components/support-ico/decrease_4@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wkl007/vue-sell/4df84980029a89be4d77f32357c4e2279b6f794b/src/components/support-ico/decrease_4@3x.png -------------------------------------------------------------------------------- /src/components/support-ico/discount_1@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wkl007/vue-sell/4df84980029a89be4d77f32357c4e2279b6f794b/src/components/support-ico/discount_1@2x.png -------------------------------------------------------------------------------- /src/components/support-ico/discount_1@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wkl007/vue-sell/4df84980029a89be4d77f32357c4e2279b6f794b/src/components/support-ico/discount_1@3x.png -------------------------------------------------------------------------------- /src/components/support-ico/discount_2@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wkl007/vue-sell/4df84980029a89be4d77f32357c4e2279b6f794b/src/components/support-ico/discount_2@2x.png -------------------------------------------------------------------------------- /src/components/support-ico/discount_2@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wkl007/vue-sell/4df84980029a89be4d77f32357c4e2279b6f794b/src/components/support-ico/discount_2@3x.png -------------------------------------------------------------------------------- /src/components/support-ico/discount_3@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wkl007/vue-sell/4df84980029a89be4d77f32357c4e2279b6f794b/src/components/support-ico/discount_3@2x.png -------------------------------------------------------------------------------- /src/components/support-ico/discount_3@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wkl007/vue-sell/4df84980029a89be4d77f32357c4e2279b6f794b/src/components/support-ico/discount_3@3x.png -------------------------------------------------------------------------------- /src/components/support-ico/discount_4@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wkl007/vue-sell/4df84980029a89be4d77f32357c4e2279b6f794b/src/components/support-ico/discount_4@2x.png -------------------------------------------------------------------------------- /src/components/support-ico/discount_4@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wkl007/vue-sell/4df84980029a89be4d77f32357c4e2279b6f794b/src/components/support-ico/discount_4@3x.png -------------------------------------------------------------------------------- /src/components/support-ico/guarantee_1@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wkl007/vue-sell/4df84980029a89be4d77f32357c4e2279b6f794b/src/components/support-ico/guarantee_1@2x.png -------------------------------------------------------------------------------- /src/components/support-ico/guarantee_1@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wkl007/vue-sell/4df84980029a89be4d77f32357c4e2279b6f794b/src/components/support-ico/guarantee_1@3x.png -------------------------------------------------------------------------------- /src/components/support-ico/guarantee_2@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wkl007/vue-sell/4df84980029a89be4d77f32357c4e2279b6f794b/src/components/support-ico/guarantee_2@2x.png -------------------------------------------------------------------------------- /src/components/support-ico/guarantee_2@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wkl007/vue-sell/4df84980029a89be4d77f32357c4e2279b6f794b/src/components/support-ico/guarantee_2@3x.png -------------------------------------------------------------------------------- /src/components/support-ico/guarantee_3@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wkl007/vue-sell/4df84980029a89be4d77f32357c4e2279b6f794b/src/components/support-ico/guarantee_3@2x.png -------------------------------------------------------------------------------- /src/components/support-ico/guarantee_3@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wkl007/vue-sell/4df84980029a89be4d77f32357c4e2279b6f794b/src/components/support-ico/guarantee_3@3x.png -------------------------------------------------------------------------------- /src/components/support-ico/guarantee_4@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wkl007/vue-sell/4df84980029a89be4d77f32357c4e2279b6f794b/src/components/support-ico/guarantee_4@2x.png -------------------------------------------------------------------------------- /src/components/support-ico/guarantee_4@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wkl007/vue-sell/4df84980029a89be4d77f32357c4e2279b6f794b/src/components/support-ico/guarantee_4@3x.png -------------------------------------------------------------------------------- /src/components/support-ico/invoice_1@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wkl007/vue-sell/4df84980029a89be4d77f32357c4e2279b6f794b/src/components/support-ico/invoice_1@2x.png -------------------------------------------------------------------------------- /src/components/support-ico/invoice_1@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wkl007/vue-sell/4df84980029a89be4d77f32357c4e2279b6f794b/src/components/support-ico/invoice_1@3x.png -------------------------------------------------------------------------------- /src/components/support-ico/invoice_2@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wkl007/vue-sell/4df84980029a89be4d77f32357c4e2279b6f794b/src/components/support-ico/invoice_2@2x.png -------------------------------------------------------------------------------- /src/components/support-ico/invoice_2@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wkl007/vue-sell/4df84980029a89be4d77f32357c4e2279b6f794b/src/components/support-ico/invoice_2@3x.png -------------------------------------------------------------------------------- /src/components/support-ico/invoice_3@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wkl007/vue-sell/4df84980029a89be4d77f32357c4e2279b6f794b/src/components/support-ico/invoice_3@2x.png -------------------------------------------------------------------------------- /src/components/support-ico/invoice_3@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wkl007/vue-sell/4df84980029a89be4d77f32357c4e2279b6f794b/src/components/support-ico/invoice_3@3x.png -------------------------------------------------------------------------------- /src/components/support-ico/invoice_4@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wkl007/vue-sell/4df84980029a89be4d77f32357c4e2279b6f794b/src/components/support-ico/invoice_4@2x.png -------------------------------------------------------------------------------- /src/components/support-ico/invoice_4@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wkl007/vue-sell/4df84980029a89be4d77f32357c4e2279b6f794b/src/components/support-ico/invoice_4@3x.png -------------------------------------------------------------------------------- /src/components/support-ico/special_1@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wkl007/vue-sell/4df84980029a89be4d77f32357c4e2279b6f794b/src/components/support-ico/special_1@2x.png -------------------------------------------------------------------------------- /src/components/support-ico/special_1@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wkl007/vue-sell/4df84980029a89be4d77f32357c4e2279b6f794b/src/components/support-ico/special_1@3x.png -------------------------------------------------------------------------------- /src/components/support-ico/special_2@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wkl007/vue-sell/4df84980029a89be4d77f32357c4e2279b6f794b/src/components/support-ico/special_2@2x.png -------------------------------------------------------------------------------- /src/components/support-ico/special_2@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wkl007/vue-sell/4df84980029a89be4d77f32357c4e2279b6f794b/src/components/support-ico/special_2@3x.png -------------------------------------------------------------------------------- /src/components/support-ico/special_3@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wkl007/vue-sell/4df84980029a89be4d77f32357c4e2279b6f794b/src/components/support-ico/special_3@2x.png -------------------------------------------------------------------------------- /src/components/support-ico/special_3@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wkl007/vue-sell/4df84980029a89be4d77f32357c4e2279b6f794b/src/components/support-ico/special_3@3x.png -------------------------------------------------------------------------------- /src/components/support-ico/special_4@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wkl007/vue-sell/4df84980029a89be4d77f32357c4e2279b6f794b/src/components/support-ico/special_4@2x.png -------------------------------------------------------------------------------- /src/components/support-ico/special_4@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wkl007/vue-sell/4df84980029a89be4d77f32357c4e2279b6f794b/src/components/support-ico/special_4@3x.png -------------------------------------------------------------------------------- /src/components/support-ico/support-ico.vue: -------------------------------------------------------------------------------- 1 | 4 | 5 | 24 | 111 | -------------------------------------------------------------------------------- /src/components/tab/tab.vue: -------------------------------------------------------------------------------- 1 | 37 | 38 | 95 | 110 | -------------------------------------------------------------------------------- /src/components/v-header/brand@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wkl007/vue-sell/4df84980029a89be4d77f32357c4e2279b6f794b/src/components/v-header/brand@2x.png -------------------------------------------------------------------------------- /src/components/v-header/brand@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wkl007/vue-sell/4df84980029a89be4d77f32357c4e2279b6f794b/src/components/v-header/brand@3x.png -------------------------------------------------------------------------------- /src/components/v-header/bulletin@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wkl007/vue-sell/4df84980029a89be4d77f32357c4e2279b6f794b/src/components/v-header/bulletin@2x.png -------------------------------------------------------------------------------- /src/components/v-header/bulletin@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wkl007/vue-sell/4df84980029a89be4d77f32357c4e2279b6f794b/src/components/v-header/bulletin@3x.png -------------------------------------------------------------------------------- /src/components/v-header/v-header.vue: -------------------------------------------------------------------------------- 1 | 43 | 44 | 72 | 194 | -------------------------------------------------------------------------------- /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/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 | -------------------------------------------------------------------------------- /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 | -------------------------------------------------------------------------------- /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/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 | -------------------------------------------------------------------------------- /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 中