├── .editorconfig
├── .eslintrc.js
├── .gitattributes
├── .github
└── issue_template.md
├── .gitignore
├── LICENSE
├── README.md
├── README_zh-EN.md
├── assets
├── images
│ ├── add.png
│ ├── benefit.gif
│ ├── cart.svg
│ ├── cart2.svg
│ └── sprite-avatar.png
├── services
│ ├── common.js
│ ├── shopping.js
│ └── user.js
├── styles
│ ├── base.scss
│ ├── iconfont.scss
│ └── mixin.scss
└── utils
│ ├── request.js
│ ├── tool.js
│ └── validate.js
├── components
├── ratingStar.vue
├── shopList.vue
├── svg.vue
└── tabbar.vue
├── config
└── index.js
├── dist
├── .nojekyll
├── 200.html
├── discover
│ └── index.html
├── download
│ └── index.html
├── favicon.ico
├── index.html
├── login
│ └── index.html
├── newretail
│ └── index.html
├── nuxt
│ ├── 0540702f607b62192bec.js
│ ├── 08564482ad21262a60cc.js
│ ├── 0f7ece06e41b1d42755e.js
│ ├── 1556fba2b785fd22c0e6.js
│ ├── 2563ac12edb147b973ef.js
│ ├── 2d96f02b6e76718c60f9.js
│ ├── 2e6602af1f9e1a92ceb2.js
│ ├── 304042af442e88979d27.js
│ ├── 36e21aca6d5f734fc3d0.js
│ ├── 375572cd74e141c9280b.js
│ ├── 3c856f4921cf276b63e6.js
│ ├── 420383f182311cfb08fa.js
│ ├── 5455e8fbdd4d0f5a6254.js
│ ├── 5865da82b7a58b6331ef.js
│ ├── 5d2fd86eba958ee3e0b9.js
│ ├── 81a11e366a76ecb7fd21.js
│ ├── 81cbb94a52a968507b35.js
│ ├── 8a742fc72447bfb3fe47.js
│ ├── 910bf465f75eb44872dd.js
│ ├── 942b5b960cde6491f42d.js
│ ├── LICENSES
│ ├── ad79a751146a41a1bf69.js
│ ├── af39b561142935cada55.js
│ ├── b55c5287f2d8d2abdbaa.js
│ ├── c83d4103a4ad4f73ef76.js
│ ├── d1fdb79693a4f11e1701.js
│ ├── eb373e3b4d9cf2501ba1.js
│ ├── eb7154e09515daf5b694.js
│ ├── f52491409b34f058c284.js
│ ├── f9fd03ccf0fc51dedeeb.js
│ └── img
│ │ ├── 3ffb5d8.png
│ │ ├── 4c99015.png
│ │ ├── 8ecc9f8.svg
│ │ └── e50a008.svg
├── order
│ └── index.html
├── robots.txt
├── search
│ └── index.html
├── shop
│ ├── components
│ │ ├── goods
│ │ │ ├── cartcontrol
│ │ │ │ └── index.html
│ │ │ ├── index.html
│ │ │ └── shopcart
│ │ │ │ └── index.html
│ │ ├── header
│ │ │ └── index.html
│ │ ├── ratings
│ │ │ ├── index.html
│ │ │ └── ratingselect
│ │ │ │ └── index.html
│ │ └── seller
│ │ │ └── index.html
│ └── index.html
└── user
│ ├── addAddress
│ └── index.html
│ ├── address
│ └── index.html
│ ├── benefit
│ └── index.html
│ ├── forget
│ └── index.html
│ ├── index.html
│ ├── info
│ └── index.html
│ ├── service
│ └── index.html
│ └── username
│ └── index.html
├── layouts
├── default.vue
└── error.vue
├── middleware
└── README.md
├── nuxt.config.js
├── package.json
├── pages
├── discover.vue
├── download.vue
├── index.vue
├── login.vue
├── newretail.vue
├── order.vue
├── search.vue
├── shop
│ ├── components
│ │ ├── goods
│ │ │ ├── cartcontrol.vue
│ │ │ ├── index.vue
│ │ │ └── shopcart.vue
│ │ ├── header.vue
│ │ ├── ratings
│ │ │ ├── index.vue
│ │ │ └── ratingselect.vue
│ │ └── seller.vue
│ └── index.vue
└── user
│ ├── addAddress.vue
│ ├── address.vue
│ ├── benefit.vue
│ ├── forget.vue
│ ├── index.vue
│ ├── info.vue
│ ├── service.vue
│ └── username.vue
├── plugins
└── mint-ui.js
├── screenshots
├── 1.gif
├── 1.png
├── 2.gif
├── 2.png
├── 3.gif
├── 3.png
├── 4.gif
├── 4.png
├── 5.gif
├── 5.png
├── alipay.jpg
├── gh_44a51ea2dd08_430.jpg
├── gh_a896d27a50a3_430.jpg
├── qr-code.png
└── wechat.jpg
├── server
└── index.js
├── static
├── favicon.ico
└── robots.txt
├── store
├── index.js
├── modules
│ └── userInfo.js
└── types.js
└── template.js
/.editorconfig:
--------------------------------------------------------------------------------
1 | # editorconfig.org
2 | root = true
3 |
4 | [*]
5 | indent_style = space
6 | indent_size = 2
7 | end_of_line = lf
8 | charset = utf-8
9 | trim_trailing_whitespace = true
10 | insert_final_newline = true
11 |
12 |
13 | [*.md]
14 | trim_trailing_whitespace = false
15 |
--------------------------------------------------------------------------------
/.eslintrc.js:
--------------------------------------------------------------------------------
1 | module.exports = {
2 | root: true,
3 | env: {
4 | browser: true,
5 | node: true
6 | },
7 | parserOptions: {
8 | parser: 'babel-eslint'
9 | },
10 | extends: [
11 | 'plugin:vue/recommended'
12 | ],
13 | // required to lint *.vue files
14 | plugins: [
15 | 'vue'
16 | ],
17 | // add your custom rules here
18 | rules: {
19 | 'no-console': process.env.NODE_ENV === 'production' ? 'error' : 'off',
20 | 'no-debugger': process.env.NODE_ENV === 'production' ? 'error' : 'off',
21 | 'vue/require-prop-types': 'off',
22 | }
23 | }
24 |
--------------------------------------------------------------------------------
/.gitattributes:
--------------------------------------------------------------------------------
1 | *.js linguist-language=Vue
2 | *.css linguist-language=Vue
3 | *.scss linguist-language=Vue
4 |
--------------------------------------------------------------------------------
/.github/issue_template.md:
--------------------------------------------------------------------------------
1 | 如果是提交 bug,请搜索文档和 issue,确认以下事项:
2 |
3 | * 该问题没有在其他 issue 和文档讨论到,不属于重复内容
4 |
5 | * 分割线以下的模板除了「 补充信息」每一样都必填
6 |
7 | 🙏🙏🙏
8 | 阅读完后请在提交的issue中删除以上内容,包括分割线。
9 | ------------------------
10 |
11 | **问题描述**
12 | [问题描述:站在其它人的角度尽可能清晰地、简洁地把问题描述清楚]
13 |
14 | **复现步骤**
15 | [复现问题的步骤]
16 | 1. Go to '...'
17 | 2. Click on '....'
18 | 3. Scroll down to '....'
19 | 4. See error
20 |
21 | [或者可以直接贴源代码,能贴文字就不要截图]
22 |
23 | ```js
24 | // 这里可以贴代码
25 |
26 | ```
27 |
28 | **期望行为**
29 | [这里请用简洁清晰的语言描述你期望的行为]
30 |
31 | **报错信息**
32 |
33 | [这里请贴上你的**完整**报错截图或文字]
34 |
35 | **系统信息**
36 |
37 | - 操作系统: [e.g. Windows 10]
38 | - Node.js 版本 [e.g. v10.13.0]
39 |
40 | **补充信息**
41 | [可选]
42 | [根据你的调查研究,出现这个问题的原因可能在哪里?]
43 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | # dependencies
2 | node_modules
3 |
4 | # logs
5 | npm-debug.log
6 |
7 | # Nuxt build
8 | .nuxt
9 |
10 | # Nuxt generate
11 | dist
12 |
13 | .DS_Store
14 | .eslintcache
15 | selenium-debug.log
16 | test/unit/coverage
17 | test/e2e/reports
18 | cordova/platforms
19 | cordova/plugins
20 | thumbs.db
21 | !.gitkeep
22 | .idea/
23 | .vscode
24 | .project
25 | typings/
26 | typings.json
27 | build/
28 | package-lock.json
29 |
--------------------------------------------------------------------------------
/assets/images/add.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/EasyTuan/nuxt-elm/d92f7c5f461af06ee739444f2ebb2a524a499a37/assets/images/add.png
--------------------------------------------------------------------------------
/assets/images/benefit.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/EasyTuan/nuxt-elm/d92f7c5f461af06ee739444f2ebb2a524a499a37/assets/images/benefit.gif
--------------------------------------------------------------------------------
/assets/images/cart.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/assets/images/cart2.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/assets/images/sprite-avatar.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/EasyTuan/nuxt-elm/d92f7c5f461af06ee739444f2ebb2a524a499a37/assets/images/sprite-avatar.png
--------------------------------------------------------------------------------
/assets/services/common.js:
--------------------------------------------------------------------------------
1 | import request from '../utils/request';
2 |
3 | const prefix = '/common';
4 |
5 | export const getHomeData = (params) => {
6 | return request({
7 | url: `${prefix}/getHomeData`,
8 | method: 'GET',
9 | data: params,
10 | })
11 | }
12 |
--------------------------------------------------------------------------------
/assets/services/shopping.js:
--------------------------------------------------------------------------------
1 | import request from '../utils/request';
2 |
3 | const prefix = '/shopping';
4 |
5 | export const restaurants = (params) => {
6 | return request({
7 | url: `${prefix}/restaurants`,
8 | method: 'GET',
9 | data: params,
10 | })
11 | }
12 |
13 | export const seller = (params) => {
14 | return request({
15 | url: `${prefix}/seller`,
16 | method: 'GET',
17 | data: params,
18 | })
19 | }
20 | export const goods = (params) => {
21 | return request({
22 | url: `${prefix}/goods`,
23 | method: 'GET',
24 | data: params,
25 | })
26 | }
27 | export const ratings = (params) => {
28 | return request({
29 | url: `${prefix}/ratings`,
30 | method: 'GET',
31 | data: params,
32 | })
33 | }
34 |
--------------------------------------------------------------------------------
/assets/services/user.js:
--------------------------------------------------------------------------------
1 | import request from '../utils/request';
2 |
3 | const prefix = '/user';
4 |
5 | // 登录
6 | export const loginApi = (params) => {
7 | return request({
8 | url: `${prefix}/login`,
9 | method: 'POST',
10 | data: params,
11 | })
12 | }
13 |
14 | // 修改昵称
15 | export const retsetName = (params) => {
16 | return request({
17 | url: `${prefix}/retsetName`,
18 | method: 'POST',
19 | data: params,
20 | })
21 | }
22 |
23 | // 修改密码
24 | export const retsetPassword = (params) => {
25 | return request({
26 | url: `${prefix}/retsetPassword`,
27 | method: 'POST',
28 | data: params,
29 | })
30 | }
31 |
32 | // 获取用户地址列表
33 | export const getAddress = (params) => {
34 | return request({
35 | url: `${prefix}/getAddress`,
36 | method: 'GET',
37 | data: params,
38 | })
39 | }
40 |
41 | // 获取用户地址
42 | export const getAddAddressById = (params) => {
43 | return request({
44 | url: `${prefix}/getAddAddressById`,
45 | method: 'GET',
46 | data: params,
47 | })
48 | }
49 |
50 | // 添加用户地址
51 | export const addAddress = (params) => {
52 | return request({
53 | url: `${prefix}/addAddress`,
54 | method: 'POST',
55 | data: params,
56 | })
57 | }
58 |
59 | // 删除用户地址
60 | export const deleteAddress = (params) => {
61 | return request({
62 | url: `${prefix}/deleteAddress`,
63 | method: 'DELETE',
64 | data: params,
65 | })
66 | }
67 |
--------------------------------------------------------------------------------
/assets/styles/base.scss:
--------------------------------------------------------------------------------
1 | @import './mixin';
2 | @import './iconfont';
3 |
4 | * {
5 | word-break: break-all;
6 | }
7 |
8 | input[disabled] {
9 | background: #fff;
10 | opacity: 1;
11 | }
12 |
13 | ul,
14 | li {
15 | list-style: none;
16 | padding: 0;
17 | }
18 |
19 | a:link,
20 | a:visited,
21 | a:hover,
22 | a:active {
23 | text-decoration: none;
24 | }
25 |
26 | @media screen and (min-width: 500px) {
27 |
28 | body,
29 | .mint-tabbar,
30 | .mint-header {
31 | max-width: 500px;
32 | margin: 0 auto;
33 | position: relative;
34 | }
35 | }
36 |
37 | .mint-header {
38 | height: px2rem(88px);
39 | font-size: px2rem(36px);
40 |
41 | .mintui {
42 | font-size: px2rem(36px);
43 | }
44 | }
45 |
46 | body,
47 | html {
48 | @include wh(100%, 100%);
49 | background-color: $fill-base;
50 | }
51 |
52 | img {
53 | display: block;
54 | max-width: 100%;
55 | }
56 |
--------------------------------------------------------------------------------
/assets/styles/mixin.scss:
--------------------------------------------------------------------------------
1 | //******颜色变量******/
2 | $primary: #4aa5f0;
3 | $secondary: #fff100;
4 | $danger: #d81e06;
5 | $blue: #1070ff;
6 | $light: #eee;
7 | $dark: #333;
8 |
9 | $fc: #fff;
10 | $fill-base: #f5f5f5;
11 |
12 |
13 |
14 | @function px2rem($px, $base-font-size: 46.875px) {
15 | @return ($px / $base-font-size) * 1rem;
16 | }
17 |
18 | // 背景图片地址和大小
19 | @mixin bg($url) {
20 | background-image: url($url);
21 | background-repeat: no-repeat;
22 | background-size: 100% 100%;
23 | }
24 |
25 | @mixin borderRadius($radius:4px) {
26 | -webkit-border-radius: $radius;
27 | -moz-border-radius: $radius;
28 | -ms-border-radius: $radius;
29 | -o-border-radius: $radius;
30 | border-radius: $radius;
31 | }
32 |
33 | //定位全屏
34 | @mixin allcover {
35 | position: fixed;
36 | top: 0;
37 | left: 0;
38 | width: 100%;
39 | height: 100%;
40 | }
41 |
42 | //定位上下左右居中
43 | @mixin center {
44 | position: absolute;
45 | top: 50%;
46 | left: 50%;
47 | transform: translate(-50%, -50%);
48 | }
49 |
50 |
51 | //定位上下居中
52 | @mixin ct {
53 | position: absolute;
54 | top: 50%;
55 | transform: translateY(-50%);
56 | }
57 |
58 | //定位上下居中
59 | @mixin cl {
60 | position: absolute;
61 | left: 50%;
62 | transform: translateX(-50%);
63 | }
64 |
65 | //宽高
66 | @mixin wh($width, $height) {
67 | width: $width;
68 | height: $height;
69 | }
70 |
71 | //字体大小、行高、字体
72 | @mixin font($size, $line-height, $family: 'Microsoft YaHei') {
73 | font: #{$size}/#{$line-height} $family;
74 | }
75 |
76 | //字体大小,颜色
77 | @mixin sc($size, $color) {
78 | font-size: $size;
79 | color: $color;
80 | }
81 |
82 | //flex 布局和 子元素 对其方式
83 | @mixin fj($type: space-between) {
84 | display: -webkit-flex;
85 | display: -webkit-box;
86 | display: flex;
87 | -webkit-justify-content: $type;
88 | justify-content: $type;
89 | }
90 |
--------------------------------------------------------------------------------
/assets/utils/request.js:
--------------------------------------------------------------------------------
1 | import axios from 'axios';
2 | import config from '~/config';
3 | import { Toast } from 'mint-ui';
4 |
5 | axios.defaults.baseURL = config.BASE_URL;
6 | axios.defaults.timeout = config.TIMEOUT;
7 | axios.defaults.headers = config.HEADERS;
8 |
9 | // 请求拦截器
10 | axios.interceptors.request.use( request => {
11 | if (!config.IS_RELEASE) {
12 | console.log(
13 | `${new Date().toLocaleString()}【 M=${request.url} 】P=`,
14 | request.params || request.data,
15 | );
16 | }
17 | return request;
18 | }, error => {
19 | return Promise.reject(error);
20 | });
21 |
22 | export default async (options = { method: 'GET' }) => {
23 | let isdata = true;
24 | if (
25 | options.method.toUpperCase() !== 'POST'
26 | && options.method.toUpperCase() !== 'PUT'
27 | && options.method.toUpperCase() !== 'PATCH'
28 | ) {
29 | isdata = false;
30 | }
31 | const res = await axios({
32 | method: options.method,
33 | url: options.url,
34 | data: isdata ? options.data : null,
35 | params: !isdata ? options.data : null,
36 | });
37 | if (res.status >= 200 && res.status < 300) {
38 | if (!config.IS_RELEASE) {
39 | console.log(
40 | `${new Date().toLocaleString()}【接口响应:】`,
41 | res.data,
42 | );
43 | }
44 | // 浏览器环境弹出报错信息
45 | if(typeof window !== "undefined" && res.data.code !== 0) {
46 | Toast(res.data.msg);
47 | }
48 | return res.data;
49 | }else {
50 | if(typeof window !== "undefined" && res.data.code !== 0) {
51 | Toast('请求错误');
52 | }
53 | }
54 |
55 | };
56 |
--------------------------------------------------------------------------------
/assets/utils/tool.js:
--------------------------------------------------------------------------------
1 | /**
2 | * 常用工具
3 | */
4 | export default class Tool {
5 | /**
6 | * 存储localStorage
7 | */
8 | static setStore(name, content) {
9 | if (!name) return;
10 | if (typeof content !== 'string') {
11 | content = JSON.stringify(content);
12 | }
13 | window.localStorage.setItem(name, content);
14 | }
15 |
16 | /**
17 | * 获取localStorage
18 | */
19 | static getStore(name) {
20 | if (!name) return;
21 | return window.localStorage.getItem(name);
22 | }
23 |
24 | /**
25 | * 删除localStorage
26 | */
27 | static removeStore(name) {
28 | if (!name) return;
29 | window.localStorage.removeItem(name);
30 | }
31 | }
32 |
--------------------------------------------------------------------------------
/assets/utils/validate.js:
--------------------------------------------------------------------------------
1 | /**
2 | * 表单验证工具类
3 | */
4 | export default class Validate {
5 | /**
6 | * 判断输入值是否为空
7 | */
8 | static required(value) {
9 | if (typeof value === 'number') {
10 | value = value.toString();
11 | } else if (typeof value === 'boolean') {
12 | return !0;
13 | }
14 | return value && value.length > 0;
15 | }
16 |
17 | /**
18 | * 重复验证
19 | */
20 | static noDuplicate(values) {
21 | for (let i = 0; i < values.length; i++) {
22 | for (let j = 0; j < values.length; j++) {
23 | if (values[i] == values[j] && i != j) {
24 | return false;
25 | }
26 | }
27 | }
28 | return true;
29 | }
30 |
31 | /**
32 | * 验证电子邮箱格式
33 | */
34 | static email(value) {
35 | return /^[a-zA-Z0-9.!#$%&'*+\/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/.test(value);
36 | }
37 |
38 | /**
39 | * 验证手机格式
40 | */
41 | static tel(value) {
42 | return /^1[234578]\d{9}$/.test(value);
43 | }
44 |
45 | /**
46 | * 验证电话格式
47 | */
48 | static phone(value) {
49 | return /^0?(13[0-9]|15[012356789]|17[013678]|18[0-9]|14[57])[0-9]{8}$/.test(value);
50 | }
51 |
52 | /**
53 | * 验证联系方式(固话&手机)
54 | */
55 | static call(value) {
56 | return /(^(0[0-9]{2,3}\-)?([2-9][0-9]{6,7})+(\-[0-9]{1,4})?$)|(^((\(\d{3}\))|(\d{3}\-))?(1[358]\d{9})$)/.test(value);
57 | }
58 |
59 | /**
60 | * 验证传真格式
61 | */
62 | static fax(value) {
63 | return /^(\d{3,4}-)\d{7,8}$/.test(value);
64 | }
65 |
66 | /**
67 | * 验证URL格式
68 | */
69 | static url(value) {
70 | return /^(?:(?:(?:https?|ftp):)?\/\/)(?:\S+(?::\S*)?@)?(?:(?!(?:10|127)(?:\.\d{1,3}){3})(?!(?:169\.254|192\.168)(?:\.\d{1,3}){2})(?!172\.(?:1[6-9]|2\d|3[0-1])(?:\.\d{1,3}){2})(?:[1-9]\d?|1\d\d|2[01]\d|22[0-3])(?:\.(?:1?\d{1,2}|2[0-4]\d|25[0-5])){2}(?:\.(?:[1-9]\d?|1\d\d|2[0-4]\d|25[0-4]))|(?:(?:[a-z\u00a1-\uffff0-9]-*)*[a-z\u00a1-\uffff0-9]+)(?:\.(?:[a-z\u00a1-\uffff0-9]-*)*[a-z\u00a1-\uffff0-9]+)*(?:\.(?:[a-z\u00a1-\uffff]{2,})).?)(?::\d{2,5})?(?:[/?#]\S*)?$/i.test(value);
71 | }
72 |
73 | /**
74 | * 验证日期格式
75 | */
76 | static date(value) {
77 | return !/Invalid|NaN/.test(new Date(value).toString());
78 | }
79 |
80 | /**
81 | * 验证ISO类型的日期格式
82 | */
83 | static dateISO(value) {
84 | return /^\d{4}[\/\-](0?[1-9]|1[012])[\/\-](0?[1-9]|[12][0-9]|3[01])$/.test(value);
85 | }
86 |
87 | /**
88 | * 验证十进制数字
89 | */
90 | static number(value) {
91 | return /^(?:-?\d+|-?\d{1,3}(?:,\d{3})+)?(?:\.\d+)?$/.test(value);
92 | }
93 |
94 | /**
95 | * 验证整数
96 | */
97 | static digits(value) {
98 | return /^\d+$/.test(value);
99 | }
100 |
101 | /**
102 | * 验证正整数
103 | */
104 | static amount(value) {
105 | return /^[1-9]\d*$/.test(value);
106 | }
107 |
108 | /**
109 | * 验证身份证号码
110 | */
111 | static idcard(value) {
112 | return /^[1-9]\d{5}[1-9]\d{3}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{3}([0-9]|X)$/.test(value);
113 | }
114 |
115 | /**
116 | * 验证内容是否相同
117 | */
118 | static equalTo(value, param) {
119 | return value == param;
120 | }
121 |
122 | /**
123 | * 验证是否包含某个值
124 | */
125 | static contains(value, param) {
126 | return value.indexOf(param) >= 0;
127 | }
128 |
129 | /**
130 | * 验证最小长度
131 | */
132 | static minlength(value, param) {
133 | return value.length >= param;
134 | }
135 |
136 | /**
137 | * 验证最大长度
138 | */
139 | static maxlength(value, param) {
140 | return value.length <= param;
141 | }
142 |
143 | /**
144 | * 验证一个长度范围[min, max]
145 | */
146 | static rangelength(value, param) {
147 | return (value.length >= param[0] && value.length <= param[1]);
148 | }
149 |
150 | /**
151 | * 验证最小值
152 | */
153 | static min(value, param) {
154 | return Number(value) >= Number(param);
155 | }
156 |
157 | /**
158 | * 验证最大值
159 | */
160 | static max(value, param) {
161 | return Number(value) <= Number(param);
162 | }
163 |
164 | /**
165 | * 验证一个值范围[min, max]
166 | */
167 | static range(value, param) {
168 | return (value >= param[0] && value <= param[1]);
169 | }
170 |
171 | }
172 |
--------------------------------------------------------------------------------
/components/ratingStar.vue:
--------------------------------------------------------------------------------
1 |
2 |
s)return NaN;return parseInt(l,i)}}return+e};if(!f(" 0o1")||!f("0b1")||f("+0x1")){f=function(t){var e=arguments.length<1?0:t,n=this;return n instanceof f&&(h?l(function(){d.valueOf.call(n)}):"Number"!=a(n))?r(new v(x(e)),n,f):x(e)};for(var y,_=n(6)?o(v):"MAX_VALUE,MIN_VALUE,NaN,NEGATIVE_INFINITY,POSITIVE_INFINITY,EPSILON,isFinite,isInteger,isNaN,isSafeInteger,MAX_SAFE_INTEGER,MIN_SAFE_INTEGER,parseFloat,parseInt,isInteger".split(","),k=0;_.length>k;k++)s(v,y=_[k])&&!s(f,y)&&g(f,y,p(v,y));f.prototype=d,d.constructor=f,n(11)(i,"Number",f)}},191:function(t,e,n){var i=n(5),s=n(19),a=n(10),r=n(192),c="["+r+"]",l=RegExp("^"+c+c+"*"),o=RegExp(c+c+"*$"),p=function(t,e,n){var s={},c=a(function(){return!!r[t]()||"
"!="
"[t]()}),l=s[t]=c?e(g):r[t];n&&(s[n]=l),i(i.P+i.F*c,"String",s)},g=p.trim=function(t,e){return t=String(s(t)),1&e&&(t=t.replace(l,"")),2&e&&(t=t.replace(o,"")),t};t.exports=p},192:function(t,e){t.exports="\t\n\v\f\r \u2028\u2029\ufeff"},194:function(t,e,n){var i=n(211);"string"==typeof i&&(i=[[t.i,i,""]]),i.locals&&(t.exports=i.locals);(0,n(18).default)("be294624",i,!0,{sourceMap:!1})},210:function(t,e,n){"use strict";var i=n(194);n.n(i).a},211:function(t,e,n){(t.exports=n(17)(!1)).push([t.i,"\n.ratingselect .rating-type{padding:18px 0;margin:0 18px;font-size:0\n}\n.ratingselect .rating-type .block{display:inline-block;padding:8px 12px;margin-right:8px;line-height:16px;border-radius:1px;font-size:12px;color:#4d555d\n}\n.ratingselect .rating-type .block.active{color:#fff\n}\n.ratingselect .rating-type .block .count{margin-left:2px;font-size:12px\n}\n.ratingselect .rating-type .block.positive{background:rgba(0,160,220,.2)\n}\n.ratingselect .rating-type .block.positive.active{background:#00a0dc\n}\n.ratingselect .rating-type .block.negative{background:rgba(77,85,93,.2)\n}\n.ratingselect .rating-type .block.negative.active{background:#4d555d\n}\n.ratingselect .switch{display:flex;align-items:center;padding:12px 18px;line-height:24px;border-bottom:1px solid rgba(7,17,27,.1);color:#93999f;font-size:0\n}\n.ratingselect .switch svg{margin-right:5px;fill:#e8e8e8\n}\n.ratingselect .switch.on .check{fill:#76d572\n}\n.ratingselect .switch .icon-check_circle{display:inline-block;vertical-align:top;margin-right:4px;font-size:24px\n}\n.ratingselect .switch .text{display:inline-block;vertical-align:top;font-size:12px\n}",""])},35:function(t,e,n){"use strict";n.r(e);n(190);var i={props:{ratings:{type:Array,default:function(){return[]}},selectType:{type:Number,default:2},onlyContent:{type:Boolean,default:!1},desc:{type:Object,default:function(){return{all:"全部",positive:"满意",negative:"不满意"}}}},computed:{positives:function(){return this.ratings.filter(function(t){return 0===t.rateType})},negatives:function(){return this.ratings.filter(function(t){return 1===t.rateType})}},methods:{select:function(t,e){this.$emit("select",t)},toggleContent:function(t){this.$emit("toggle")}}},s=(n(210),n(13)),a=Object(s.a)(i,function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("div",{staticClass:"ratingselect"},[n("div",{staticClass:"rating-type border-1px"},[n("span",{staticClass:"block positive",class:{active:2===t.selectType},on:{click:function(e){t.select(2,e)}}},[t._v(t._s(t.desc.all)+"\n "),n("span",{staticClass:"count"},[t._v(t._s(t.ratings.length))])]),t._v(" "),n("span",{staticClass:"block positive",class:{active:0===t.selectType},on:{click:function(e){t.select(0,e)}}},[t._v(t._s(t.desc.positive)),n("span",{staticClass:"count"},[t._v(t._s(t.positives.length))])]),t._v(" "),n("span",{staticClass:"block negative",class:{active:1===t.selectType},on:{click:function(e){t.select(1,e)}}},[t._v(t._s(t.desc.negative)),n("span",{staticClass:"count"},[t._v(t._s(t.negatives.length))])])]),t._v(" "),n("div",{staticClass:"switch",class:{on:t.onlyContent},on:{click:t.toggleContent}},[n("svg",{staticClass:"check",attrs:{width:"12",height:"12"}},[n("use",{attrs:{"xlink:href":"#select"}})]),t._v(" "),n("span",{staticClass:"text"},[t._v("只看有内容的评价")])])])},[],!1,null,null,null);a.options.__file="ratingselect.vue";e.default=a.exports}}]);
--------------------------------------------------------------------------------
/dist/nuxt/img/3ffb5d8.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/EasyTuan/nuxt-elm/d92f7c5f461af06ee739444f2ebb2a524a499a37/dist/nuxt/img/3ffb5d8.png
--------------------------------------------------------------------------------
/dist/nuxt/img/4c99015.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/EasyTuan/nuxt-elm/d92f7c5f461af06ee739444f2ebb2a524a499a37/dist/nuxt/img/4c99015.png
--------------------------------------------------------------------------------
/dist/nuxt/img/8ecc9f8.svg:
--------------------------------------------------------------------------------
1 |
—— 推荐商家 ——
51 |登陆后查看外卖订单
12 |暂无订单信息
13 | 17 |
23 |
{{ seller.bulletin }}
10 | 查看品牌故事 13 | 14 |由蜂鸟快送提供配送,约{{ seller.deliveryTime }}分钟送达,距离2.1km
16 |配送费¥{{ seller.deliveryPrice }}
17 |19 | {{ item.name }} 20 | {{ item.phone }} 21 |
22 |{{ item.address }} {{ item.details }}
23 |快去抢几个吧
18 |用户名长度在5到24位之间
27 | 30 |用户名长度在2到24位之间
18 | 21 |