├── .gitignore
├── .idea
├── .gitignore
├── mallplus-milktea.iml
├── misc.xml
├── modules.xml
└── vcs.xml
├── App.vue
├── LICENSE
├── api
├── addresses.js
├── attendance-list.js
├── attendance.js
├── custom-points.js
├── customer-coupons.js
├── goods.js
├── index.js
├── level-benefits.js
├── member.js
├── orders.js
├── packages.js
├── points-flow.js
├── points-mall.js
├── rechargeCards.js
├── store.js
└── today-attendance.js
├── common
├── api.js
├── uqrcode.js
└── util.js
├── components
├── jyf-parser
│ ├── jyf-parser.vue
│ └── libs
│ │ ├── CssHandler.js
│ │ ├── MpHtmlParser.js
│ │ ├── config.js
│ │ ├── handler.sjs
│ │ ├── handler.wxs
│ │ └── trees.vue
├── list-cell
│ └── list-cell.vue
├── loading.vue
├── modal
│ └── modal.vue
├── navbar-back-button.vue
├── popup-layer
│ └── popup-layer.vue
├── uni-icons
│ ├── icons.js
│ └── uni-icons.vue
└── uni-steps
│ └── uni-steps.vue
├── main.js
├── manifest.json
├── pages.json
├── pages
├── address
│ ├── add.vue
│ └── address.vue
├── attendance
│ ├── attendance.vue
│ └── uni-calendar
│ │ ├── calendar.js
│ │ ├── uni-calendar-item.vue
│ │ ├── uni-calendar.vue
│ │ └── util.js
├── balance
│ └── balance.vue
├── coupons
│ └── coupons.vue
├── index
│ └── index.vue
├── integrals
│ ├── detail.vue
│ ├── flow.vue
│ └── integrals.vue
├── login
│ └── login.vue
├── menu
│ ├── menu.scss
│ ├── menu.vue
│ └── menu1.vue
├── mine
│ ├── member-code.vue
│ ├── mine.vue
│ └── userinfo.vue
├── orders
│ ├── detail.vue
│ └── orders.vue
├── packages
│ ├── detail.vue
│ └── index.vue
├── pay
│ └── pay.vue
├── remark
│ └── remark.vue
├── review
│ ├── rate-form-item
│ │ └── index.vue
│ └── review.vue
└── take-foods
│ └── take-foods.vue
├── readme.md
├── static
├── iconfont
│ └── iconfont.scss
├── images
│ ├── attendance
│ │ ├── 9c8e57f5287b4362.png
│ │ ├── bg.png
│ │ ├── cup.png
│ │ └── gift.png
│ ├── back.png
│ ├── balance.png
│ ├── close.png
│ ├── customer-level
│ │ ├── 1.png
│ │ ├── 10.png
│ │ ├── 11.png
│ │ ├── 2.png
│ │ ├── 3.png
│ │ ├── 4.png
│ │ ├── 5.png
│ │ ├── 8.png
│ │ └── 9.png
│ ├── edit.png
│ ├── empty.png
│ ├── index
│ │ ├── arrow-right.png
│ │ ├── csc.png
│ │ ├── hyjb.png
│ │ ├── hyjb_bg.png
│ │ ├── mcsb.png
│ │ ├── mcsb_bg.png
│ │ ├── qrcode.png
│ │ ├── wm.png
│ │ ├── yzclh.png
│ │ └── zq.png
│ ├── integrals
│ │ ├── arrow-left.png
│ │ ├── banner.png
│ │ ├── bg.png
│ │ ├── goal.png
│ │ ├── integral.png
│ │ └── ticket.png
│ ├── loading.gif
│ ├── loading2.gif
│ ├── logo.png
│ ├── menu
│ │ ├── cart.png
│ │ ├── close.png
│ │ ├── common-use.png
│ │ └── share-good.png
│ ├── mine
│ │ ├── arrow-right.png
│ │ ├── banner.png
│ │ ├── default.png
│ │ ├── gdfw.png
│ │ ├── hym.png
│ │ ├── jfdh.png
│ │ ├── jfqd.png
│ │ ├── level.png
│ │ ├── lxkf.png
│ │ ├── nxbz.png
│ │ ├── nxlw.png
│ │ ├── nxsc.png
│ │ ├── rhyl.png
│ │ ├── shdz.png
│ │ ├── sjtq.png
│ │ ├── srtq.png
│ │ ├── stxy.png
│ │ ├── wddd.png
│ │ ├── wdzl.png
│ │ └── wechat.png
│ ├── navigator-1.png
│ ├── navigator.png
│ ├── order
│ │ ├── 0edf1df4a0a61f3361.png
│ │ ├── 3b28b05baffebf512f.png
│ │ ├── bottom.png
│ │ ├── delivered.png
│ │ ├── delivered_selected.png
│ │ ├── delivery.png
│ │ ├── delivery_selected.png
│ │ ├── ec82f8f760b8e2fa.png
│ │ ├── location.png
│ │ ├── mobile.png
│ │ ├── navigation.png
│ │ ├── ordered.png
│ │ ├── ordered_selected.png
│ │ ├── production.png
│ │ ├── production_selected.png
│ │ └── right.png
│ ├── pay
│ │ ├── 163e5de32d731e3c.png
│ │ ├── b7d73adba18305af.png
│ │ └── close.png
│ ├── services
│ │ ├── bzzx.png
│ │ ├── cjwt.png
│ │ ├── djsm.png
│ │ ├── gynx.png
│ │ ├── hyxy.png
│ │ ├── wdzl.png
│ │ └── ystk.png
│ ├── success.png
│ └── tabBar
│ │ ├── drink.png
│ │ ├── drink_selected.png
│ │ ├── index.png
│ │ ├── index_selected.png
│ │ ├── mine.png
│ │ ├── mine_selected.png
│ │ ├── take.png
│ │ └── take_selected.png
├── logo.png
└── style
│ └── app.scss
├── store
└── index.js
└── uni.scss
/.gitignore:
--------------------------------------------------------------------------------
1 | # Maven #
2 | target/
3 |
4 | # IDEA #
5 | .idea/
6 | *.iml
7 | *.zip
8 | # Eclipse #
9 | .settings/
10 | .classpath
11 | .project
12 |
13 |
14 | /vue
15 | /unpackage
16 | */vue
--------------------------------------------------------------------------------
/.idea/.gitignore:
--------------------------------------------------------------------------------
1 | # Default ignored files
2 | /shelf/
3 | /workspace.xml
4 |
--------------------------------------------------------------------------------
/.idea/mallplus-milktea.iml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/.idea/misc.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/.idea/modules.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/.idea/vcs.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/App.vue:
--------------------------------------------------------------------------------
1 |
14 |
15 |
19 |
--------------------------------------------------------------------------------
/api/addresses.js:
--------------------------------------------------------------------------------
1 | export default [
2 | {
3 | "id": 1,
4 | "accept_name": "隔壁老王",
5 | "mobile": "18666600000",
6 | "province_name": "广东省",
7 | "area": 440306,
8 | "city": 440300,
9 | "sex": 0,
10 | "district": {
11 | "districts": "广东省深圳市南山区",
12 | "area": "宝安区",
13 | "city": "深圳市",
14 | "province": "广东省"
15 | },
16 | "street": "有一间公寓八栋",
17 | "inner": false,
18 | "lat": "",
19 | "door_number": "AB1234",
20 | "is_default": 0,
21 | "province": 440000,
22 | "area_name": "南山区",
23 | "city_name": "深圳市",
24 | "poiname": ""
25 | }
26 | ]
--------------------------------------------------------------------------------
/api/attendance-list.js:
--------------------------------------------------------------------------------
1 | export default [{
2 | "attendance_id": 1,
3 | "updated_at": "2020-04-25 02:46:36",
4 | "id": 1,
5 | "created_at": "2020-04-25 02:46:36",
6 | "attendance_coupon": 0,
7 | "nickname": "tinypuppet",
8 | "num": 0,
9 | "reward_days": 1,
10 | "user_id": "1",
11 | "date": "2020-04-25",
12 | "attendance_point": 1,
13 | "store_id": 1
14 | },
15 | {
16 | "attendance_id": 1,
17 | "updated_at": "2020-05-02 03:30:42",
18 | "id": 2,
19 | "created_at": "2020-05-02 03:30:42",
20 | "attendance_coupon": 0,
21 | "nickname": "tinypuppet",
22 | "num": 0,
23 | "reward_days": 1,
24 | "user_id": "1",
25 | "date": "2020-05-02",
26 | "attendance_point": 1,
27 | "store_id": 1
28 | },
29 | {
30 | "attendance_id": 1,
31 | "updated_at": "2020-05-03 19:37:12",
32 | "id": 3,
33 | "created_at": "2020-05-03 19:37:12",
34 | "attendance_coupon": 0,
35 | "nickname": "tinypuppet",
36 | "num": 0,
37 | "reward_days": 1,
38 | "user_id": "1",
39 | "date": "2020-05-03",
40 | "attendance_point": 1,
41 | "store_id": 1
42 | },
43 | {
44 | "attendance_id": 1,
45 | "updated_at": "2020-05-06 10:38:42",
46 | "id": 4,
47 | "created_at": "2020-05-06 10:38:42",
48 | "attendance_coupon": 0,
49 | "nickname": "tinypuppet",
50 | "num": 0,
51 | "reward_days": 1,
52 | "user_id": "1",
53 | "date": "2020-05-06",
54 | "attendance_point": 1,
55 | "store_id": 1
56 | }
57 | ]
58 |
--------------------------------------------------------------------------------
/api/attendance.js:
--------------------------------------------------------------------------------
1 | export default [{
2 | "points": 1,
3 | "day_name": 1,
4 | "is_day": 1
5 | },
6 | {
7 | "points": 2,
8 | "day_name": 2,
9 | "is_day": 0
10 | },
11 | {
12 | "points": 3,
13 | "day_name": 3,
14 | "is_day": 0
15 | },
16 | {
17 | "points": 4,
18 | "day_name": 4,
19 | "is_day": 0
20 | },
21 | {
22 | "points": 1,
23 | "day_name": 5,
24 | "is_day": 1
25 | },
26 | {
27 | "points": 1,
28 | "day_name": 6,
29 | "is_day": 0
30 | },
31 | {
32 | "points": 10,
33 | "day_name": 7,
34 | "is_day": 0
35 | }
36 | ]
37 |
--------------------------------------------------------------------------------
/api/custom-points.js:
--------------------------------------------------------------------------------
1 | export default {
2 | "soonExpiredPoints": 0,
3 | "totalPoints": 487,
4 | "expiredTime": null,
5 | "foreverPoints": 0
6 | }
7 |
--------------------------------------------------------------------------------
/api/customer-coupons.js:
--------------------------------------------------------------------------------
1 | export default [
2 | {
3 | "couponExplain": "
1. 在有效期内,凭此券在奈雪内地任意门店(机场店、奈雪梦工厂除外)及“奈雪点单”小程序免费兑换任意饮品或软欧包一份,菜单上标有红色雪花产品除外
2. 此券不可兑换现金,不设找零,优惠券抵扣金额不予积分
3. 此券每单仅限使用一张,不得与其他优惠券同时使用
4. 此券不适用于第三方外送服务
5. 券面图片仅供参考,产品以实物为准
",
4 | "discountUnit": 1,
5 | "imageUrl": "https://images.qmai.cn/s23107/2019/10/09/ea5b8ed493c0cc310d.jpg",
6 | "id": "1",
7 | "discountAmount": null,
8 | "beginAt": "2020-05-10 00:00:00",
9 | "useTimeScope": "[{\"begin\":\"00:00:00\",\"end\":\"23:59:59\"}]",
10 | "endAt": "2020-06-08 23:59:59",
11 | "createdAt": "2020-05-10 02:06:00",
12 | "title": "生日免费券",
13 | "couponId": "1",
14 | "deletedAt": null,
15 | "sellerName": "奈雪の茶",
16 | "updatedAt": "2020-05-10 02:06:00",
17 | "couponType": 1
18 | },
19 | {
20 | "couponExplain": "1. 适用商品:免费兑换生日特调鸡尾酒一杯\n2. 适用门店:仅限内地奈雪酒屋任意门店堂食使用\n3. 适用场景:线下门店出示会员码使用\n4. 本券仅限消费酒类产品,依法不支持未成年人使用\n5. 此券每单仅限使用一张,不可兑换现金,不设找零,优惠券抵扣金额不予积分\n6. 此券不适用于第三方外送服务\n7. 券面图片仅供参考,产品以实物为准",
21 | "discountUnit": null,
22 | "imageUrl": "https://images.qmai.cn/s34747/2019/12/04/5d97da76e82bfe26d3.png",
23 | "id": "2",
24 | "discountAmount": null,
25 | "beginAt": "2020-05-10 00:00:00",
26 | "useTimeScope": "[{\"begin\":\"00:00:00\",\"end\":\"23:59:59\"}]",
27 | "endAt": "2020-06-08 23:59:59",
28 | "createdAt": "2020-05-10 02:06:00",
29 | "title": "生日特调券",
30 | "couponId": "2",
31 | "deletedAt": null,
32 | "sellerName": "奈雪酒屋",
33 | "updatedAt": "2020-05-10 02:06:00",
34 | "couponType": 2
35 | },
36 | {
37 | "couponExplain": "1. 使用条件:在有效期内,免费兑换鸡尾酒一杯,每周五、周六与法定节假日19点后不支持使用\n2. 适用商品:鸡尾酒/红葡萄酒/白葡萄酒,具体以门店营业信息为准\n3. 适用门店:仅限内地奈雪酒屋任意门店堂食使用\n4. 适用场景:线下门店出示会员码使用\n5. 本券仅限消费酒类产品,依法不支持未成年人使用\n6. 此券每单仅限使用一张,不可兑换现金,不设找零,优惠券抵扣金额不予积分\n7. 此券不适用于第三方外送服务8. 券面图片仅供参考,产品以实物为准",
38 | "discountUnit": null,
39 | "imageUrl": "https://images.qmai.cn/s34747/2019/12/04/5d97da76e82bfe26d3.png",
40 | "id": "3",
41 | "discountAmount": null,
42 | "beginAt": "2020-05-08 00:00:00",
43 | "useTimeScope": "[{\"begin\":\"00:00:00\",\"end\":\"23:59:59\"}]",
44 | "endAt": "2020-06-06 23:59:59",
45 | "createdAt": "2020-05-08 19:25:41",
46 | "title": "酒屋特调券",
47 | "couponId": "3",
48 | "deletedAt": null,
49 | "sellerName": "奈雪酒屋",
50 | "updatedAt": "2020-05-08 19:25:41",
51 | "couponType": 2
52 | },
53 | {
54 | "couponExplain": "1. 在有效期内,凭此券可在奈雪内地任意门店(机场店、奈雪梦工厂除外)及“奈雪点单”小程序购买任意茶饮一杯,可免费获得软欧包一个(价格不高于茶饮),菜单上标有红色雪花产品除外
2. 此券不可兑换现金,不设找零,优惠券抵扣金额不予积分
3. 此券每单仅限使用一张,不得与其他优惠券同时使用
4. 此券不适用于第三方外送服务
5. 券面图片仅供参考,产品以实物为准
",
55 | "discountUnit": 2,
56 | "imageUrl": "https://images.qmai.cn/s23107/2019/10/10/8a8be6ddf7a4140944.jpg",
57 | "id": "4",
58 | "discountAmount": 0,
59 | "beginAt": "2020-05-08 00:00:00",
60 | "useTimeScope": "[{\"begin\":\"00:00:00\",\"end\":\"23:59:59\"}]",
61 | "endAt": "2020-06-06 23:59:59",
62 | "createdAt": "2020-05-08 19:25:41",
63 | "title": "升级好友券",
64 | "couponId": "4",
65 | "deletedAt": null,
66 | "sellerName": "奈雪の茶",
67 | "updatedAt": "2020-05-08 19:25:41",
68 | "couponType": 1
69 | },
70 | {
71 | "couponExplain": "1. 在有效期内,凭此券可在奈雪内地任意门店(机场店、奈雪梦工厂除外)及“奈雪点单”小程序享受购买任意茶饮满两杯赠一杯(赠送产品价格不高于购买产品),菜单上标有红色雪花产品除外
2. 此券不可兑换现金,不设找零,优惠券抵扣金额不予积分
3. 此券每单仅限使用一张,不得与其他优惠券同时使用
4. 此券不适用于第三方外送服务
5. 券面图片仅供参考,产品以实物为准
",
72 | "discountUnit": 2,
73 | "imageUrl": "https://images.qmai.cn/s23107/2019/10/09/ea5b8ed493c0cc310d.jpg",
74 | "id": "5",
75 | "discountAmount": 0,
76 | "beginAt": "2020-05-08 00:00:00",
77 | "useTimeScope": "[{\"begin\":\"00:00:00\",\"end\":\"23:59:59\"}]",
78 | "endAt": "2020-06-06 23:59:59",
79 | "createdAt": "2020-05-08 19:25:41",
80 | "title": "茶饮满二赠一券",
81 | "couponId": "5",
82 | "deletedAt": null,
83 | "sellerName": "奈雪の茶",
84 | "updatedAt": "2020-05-08 19:25:41",
85 | "couponType": 1
86 | },
87 | {
88 | "couponExplain": "1. 在有效期内,凭此券可在“奈雪点单”小程序外卖(机场店、奈雪梦工厂除外)购买任意茶饮或软欧包减免5元优惠
2. 此券不可兑换现金,不设找零,优惠券抵扣金额不予积分
3. 此券每单仅限使用一张,不得与其他优惠券同时使用
4. 此券不适用于第三方外送服务
5. 券面图片仅供参考,产品以实物为准
",
89 | "imageUrl": "https://images.qmai.cn/s23107/2019/12/04/fcb80e25ea8b39c1ac.jpg",
90 | "id": "6",
91 | "discountAmount": 5,
92 | "beginAt": "2020-05-08 00:00:00",
93 | "useTimeScope": "[{\"begin\":\"00:00:00\",\"end\":\"23:59:59\"}]",
94 | "endAt": "2020-06-06 23:59:59",
95 | "createdAt": "2020-05-08 19:25:40",
96 | "title": "小程序外卖5元现金券",
97 | "couponId": "6",
98 | "deletedAt": null,
99 | "sellerName": "奈雪の茶",
100 | "updatedAt": "2020-05-08 19:25:40",
101 | "couponType": 1
102 | }
103 | ]
104 |
--------------------------------------------------------------------------------
/api/index.js:
--------------------------------------------------------------------------------
1 | import packages from './packages'
2 | import store from './store'
3 | import goods from './goods'
4 | import levelBenefits from './level-benefits'
5 | import member from './member'
6 | import rechargeCards from './rechargeCards'
7 | import addresses from './addresses'
8 | import attendance from './attendance'
9 | import customPoints from './custom-points'
10 | import pointsMall from './points-mall'
11 | import attendanceList from './attendance-list'
12 | import todayAttendance from './today-attendance'
13 | import orders from './orders'
14 | import customerCoupons from './customer-coupons'
15 |
16 | const json = {
17 | packages,
18 | store,
19 | goods,
20 | levelBenefits,
21 | member,
22 | rechargeCards,
23 | addresses,
24 | attendance,
25 | customPoints,
26 | pointsMall,
27 | attendanceList,
28 | todayAttendance,
29 | orders,
30 | customerCoupons
31 | }
32 |
33 | export default (name) => new Promise(resolve => resolve(json[name]), 500)
--------------------------------------------------------------------------------
/api/level-benefits.js:
--------------------------------------------------------------------------------
1 | export default [{
2 | "picture": "https://images.qmai.cn/s33123/2020/01/20/f6bdc61b9356e87d03.jpg",
3 | "cardName": "V1",
4 | "benefitsSummaries": [{
5 | "benefitsItemSummaries": [{
6 | "unitType": 0,
7 | "benefitsType": 0,
8 | "num": 2
9 | }],
10 | "benefitsName": "开卡特权",
11 | "benefitsType": 0
12 | },
13 | {
14 | "benefitsItemSummaries": [{
15 | "unitType": 0,
16 | "benefitsType": 0,
17 | "num": 1
18 | }],
19 | "benefitsName": "会员日特权",
20 | "benefitsType": 4
21 | }
22 | ],
23 | "level": 1
24 | },
25 | {
26 | "picture": "https://images.qmai.cn/s33123/2020/01/20/fd13fff0e873b8c06d.jpg",
27 | "cardName": "V2",
28 | "benefitsSummaries": [{
29 | "benefitsItemSummaries": [{
30 | "unitType": 0,
31 | "benefitsType": 0,
32 | "num": 2
33 | }],
34 | "benefitsName": "升级特权",
35 | "benefitsType": 1
36 | },
37 | {
38 | "benefitsItemSummaries": [{
39 | "unitType": 0,
40 | "benefitsType": 0,
41 | "num": 1
42 | }],
43 | "benefitsName": "生日特权",
44 | "benefitsType": 3
45 | },
46 | {
47 | "benefitsItemSummaries": [{
48 | "unitType": 0,
49 | "benefitsType": 0,
50 | "num": 1
51 | }],
52 | "benefitsName": "会员日特权",
53 | "benefitsType": 4
54 | }
55 | ],
56 | "level": 2
57 | },
58 | {
59 | "picture": "https://images.qmai.cn/s33123/2020/01/20/a292980f9803aa4504.jpg",
60 | "cardName": "V3",
61 | "benefitsSummaries": [{
62 | "benefitsItemSummaries": [{
63 | "unitType": 0,
64 | "benefitsType": 0,
65 | "num": 3
66 | }],
67 | "benefitsName": "升级特权",
68 | "benefitsType": 1
69 | },
70 | {
71 | "benefitsItemSummaries": [{
72 | "unitType": 0,
73 | "benefitsType": 0,
74 | "num": 1
75 | }],
76 | "benefitsName": "生日特权",
77 | "benefitsType": 3
78 | },
79 | {
80 | "benefitsItemSummaries": [{
81 | "unitType": 0,
82 | "benefitsType": 0,
83 | "num": 1
84 | }],
85 | "benefitsName": "会员日特权",
86 | "benefitsType": 4
87 | }
88 | ],
89 | "level": 3
90 | },
91 | {
92 | "picture": "https://images.qmai.cn/s33123/2020/01/20/6fc9b939b9912c4387.jpg",
93 | "cardName": "V4",
94 | "benefitsSummaries": [{
95 | "benefitsItemSummaries": [{
96 | "unitType": 0,
97 | "benefitsType": 0,
98 | "num": 3
99 | }],
100 | "benefitsName": "升级特权",
101 | "benefitsType": 1
102 | },
103 | {
104 | "benefitsItemSummaries": [{
105 | "unitType": 0,
106 | "benefitsType": 0,
107 | "num": 1
108 | }],
109 | "benefitsName": "生日特权",
110 | "benefitsType": 3
111 | },
112 | {
113 | "benefitsItemSummaries": [{
114 | "unitType": 0,
115 | "benefitsType": 0,
116 | "num": 1
117 | }],
118 | "benefitsName": "会员日特权",
119 | "benefitsType": 4
120 | }
121 | ],
122 | "level": 4
123 | },
124 | {
125 | "picture": "https://images.qmai.cn/s33123/2020/01/20/460bdca3e1e7f87def.jpg",
126 | "cardName": "V5",
127 | "benefitsSummaries": [{
128 | "benefitsItemSummaries": [{
129 | "unitType": 0,
130 | "benefitsType": 0,
131 | "num": 6
132 | }],
133 | "benefitsName": "升级特权",
134 | "benefitsType": 1
135 | },
136 | {
137 | "benefitsItemSummaries": [{
138 | "unitType": 0,
139 | "benefitsType": 0,
140 | "num": 1
141 | }],
142 | "benefitsName": "生日特权",
143 | "benefitsType": 3
144 | }
145 | ],
146 | "level": 5
147 | },
148 | {
149 | "picture": "https://images.qmai.cn/s33123/2020/01/20/508ea53092bcf504f3.jpg",
150 | "cardName": "V6",
151 | "benefitsSummaries": [{
152 | "benefitsItemSummaries": [{
153 | "unitType": 0,
154 | "benefitsType": 0,
155 | "num": 6
156 | }],
157 | "benefitsName": "升级特权",
158 | "benefitsType": 1
159 | },
160 | {
161 | "benefitsItemSummaries": [{
162 | "unitType": 0,
163 | "benefitsType": 0,
164 | "num": 1
165 | }],
166 | "benefitsName": "生日特权",
167 | "benefitsType": 3
168 | }
169 | ],
170 | "level": 6
171 | }
172 | ]
173 |
--------------------------------------------------------------------------------
/api/member.js:
--------------------------------------------------------------------------------
1 | export default {
2 | "storeId": null,
3 | "mobilePhone": "18666600000",
4 | "nickname": "tinypuppet",
5 | "avatar": "/static/images/mine/default.png",
6 | "country": "",
7 | "cardName": "V2",
8 | "memberLevel": 2,
9 | "city": "",
10 | "cardNo": "39390020696322222",
11 | "openingCardDate": "2018-10-20 15:10:10",
12 | "customerId": "343400246943295100",
13 | "district": null,
14 | "unionId": "",
15 | "address": null,
16 | "storeName": null,
17 | "gender": 1,
18 | "province": "",
19 | "memberOrigin": "wechat",
20 | "username": "我是新人",
21 | "memberLevelName": "VIP2",
22 | "birthday": "",
23 | "pointNum": 413,
24 | "couponNum": 6,
25 | "rechargeBalance": null,
26 | "balance": 0,
27 | "giftBalance": 0,
28 | "expenseAmount": null,
29 | "conditionType": 3,
30 | "ruleList": null,
31 | "expiredTime": null,
32 | "currentValue": 410,
33 | "level": 2,
34 | "cardUrl": "https://images.qmai.cn/s33123/2020/01/20/fd13fff0e873b8c06d.jpg",
35 | "needValue": 90,
36 | "cardName": "V2",
37 | "max": false
38 | }
39 |
--------------------------------------------------------------------------------
/api/points-flow.js:
--------------------------------------------------------------------------------
1 | export default [
2 | {
3 | "happenedDate": "2020-05-11",
4 | "sourceType": 5,
5 | "sellerName": "奈雪の茶",
6 | "changeNum": 1,
7 | "changeType": 1,
8 | "reason": "积分签到奖励",
9 | "createdAt": "2020-05-11 00:17:47",
10 | "id": 1
11 | },
12 | {
13 | "happenedDate": "2020-05-10",
14 | "sourceType": 5,
15 | "sellerName": "奈雪の茶",
16 | "changeNum": 1,
17 | "changeType": 1,
18 | "reason": "积分签到奖励",
19 | "createdAt": "2020-05-10 22:23:36",
20 | "id": 2
21 | },
22 | {
23 | "happenedDate": "2020-05-09",
24 | "sourceType": 5,
25 | "sellerName": "奈雪の茶",
26 | "changeNum": 1,
27 | "changeType": 1,
28 | "reason": "积分签到奖励",
29 | "createdAt": "2020-05-09 02:14:24",
30 | "id": 3
31 | },
32 | {
33 | "happenedDate": "2020-05-08",
34 | "sourceType": 1,
35 | "sellerName": "奈雪の茶",
36 | "changeNum": 50,
37 | "changeType": 1,
38 | "reason": "消费增加",
39 | "createdAt": "2020-05-08 19:25:40",
40 | "id": 4
41 | },
42 | {
43 | "happenedDate": "2020-05-08",
44 | "sourceType": 5,
45 | "sellerName": "奈雪の茶",
46 | "changeNum": 1,
47 | "changeType": 1,
48 | "reason": "积分签到奖励",
49 | "createdAt": "2020-05-08 18:43:14",
50 | "id": 5
51 | },
52 | {
53 | "happenedDate": "2020-05-07",
54 | "sourceType": 5,
55 | "sellerName": "奈雪の茶",
56 | "changeNum": 1,
57 | "changeType": 1,
58 | "reason": "积分签到奖励",
59 | "createdAt": "2020-05-07 16:25:46",
60 | "id": 6
61 | },
62 | {
63 | "happenedDate": "2020-05-06",
64 | "sourceType": 5,
65 | "sellerName": "奈雪の茶",
66 | "changeNum": 1,
67 | "changeType": 1,
68 | "reason": "积分签到奖励",
69 | "createdAt": "2020-05-06 10:38:42",
70 | "id": 7
71 | },
72 | {
73 | "happenedDate": "2020-05-05",
74 | "sourceType": 1,
75 | "sellerName": "奈雪の茶",
76 | "changeNum": 73,
77 | "changeType": 1,
78 | "reason": "消费增加",
79 | "createdAt": "2020-05-05 20:42:47",
80 | "id": 8
81 | },
82 | {
83 | "happenedDate": "2020-05-03",
84 | "sourceType": 5,
85 | "sellerName": "奈雪の茶",
86 | "changeNum": 1,
87 | "changeType": 1,
88 | "reason": "积分签到奖励",
89 | "createdAt": "2020-05-03 19:37:12",
90 | "id": 9
91 | },
92 | {
93 | "happenedDate": "2020-05-02",
94 | "sourceType": 5,
95 | "sellerName": "奈雪の茶",
96 | "changeNum": 1,
97 | "changeType": 1,
98 | "reason": "积分签到奖励",
99 | "createdAt": "2020-05-02 03:30:42",
100 | "id": 10
101 | },
102 | {
103 | "happenedDate": "2020-04-25",
104 | "sourceType": 1,
105 | "sellerName": "奈雪の茶",
106 | "changeNum": 43,
107 | "changeType": 1,
108 | "reason": "消费增加",
109 | "createdAt": "2020-04-25 20:48:26",
110 | "id": 11
111 | },
112 | {
113 | "happenedDate": "2020-04-25",
114 | "sourceType": 5,
115 | "sellerName": "奈雪の茶",
116 | "changeNum": 1,
117 | "changeType": 1,
118 | "reason": "积分签到奖励",
119 | "createdAt": "2020-04-25 02:46:36",
120 | "id": 12
121 | },
122 | {
123 | "happenedDate": "2020-04-24",
124 | "sourceType": 1,
125 | "sellerName": "奈雪の茶",
126 | "changeNum": 57,
127 | "changeType": 1,
128 | "reason": "消费增加",
129 | "createdAt": "2020-04-24 20:23:45",
130 | "id": 13
131 | },
132 | {
133 | "happenedDate": "2020-04-18",
134 | "sourceType": 1,
135 | "sellerName": "奈雪の茶",
136 | "changeNum": 56,
137 | "changeType": 1,
138 | "reason": "消费增加",
139 | "createdAt": "2020-04-18 20:20:08",
140 | "id": 14
141 | },
142 | {
143 | "happenedDate": "2020-04-10",
144 | "sourceType": 1,
145 | "sellerName": "奈雪の茶",
146 | "changeNum": 33,
147 | "changeType": 1,
148 | "reason": "消费增加",
149 | "createdAt": "2020-04-10 20:40:44",
150 | "id": 15
151 | }
152 | ]
--------------------------------------------------------------------------------
/api/rechargeCards.js:
--------------------------------------------------------------------------------
1 | export default [
2 | {
3 | "updated_at": "2020-05-03 20:31:46",
4 | "id": 1948,
5 | "sales": 314,
6 | "image": "/s1000106/2018/07/09/cfbc38cae535a8ad8a.jpeg",
7 | "value": "100.00",
8 | "deleted_at": null,
9 | "sort": 999,
10 | "status_text": "启用",
11 | "status": 1,
12 | "created_at": "2020-01-03 15:46:36",
13 | "desc": "1. 储值成功后,不可退款,请根据自己的消费情况充值。\n2. 储值余额不可提现,不可转移、转赠。\n3. 储值金额按国家法律、法规开具符合规定的发票,后续凭储值余额消费时,不再开具发票。如需发票请至奈雪点单小程序个人中心联系客服。\n4. 储值不累计会员成长值、积分与宝石,订单消费时以实际订单支付金额累计会员成长值、积分与宝石。\n5. 储值余额可在奈雪的茶内地线下门店、奈雪酒屋全国门店、奈雪点单小程序在线支付使用。",
14 | "store_id": 23107,
15 | "gifts": [],
16 | "type": 0,
17 | "full_image": "https://img-shop.qmimg.cn/s1000106/2018/07/09/cfbc38cae535a8ad8a.jpeg",
18 | "name": "100元",
19 | "sell_price": "100.00"
20 | },
21 | {
22 | "updated_at": "2020-05-02 21:59:50",
23 | "id": 1972,
24 | "sales": 112,
25 | "image": "/s1000106/2018/07/09/cfbc38cae535a8ad8a.jpeg",
26 | "value": "200.00",
27 | "deleted_at": null,
28 | "sort": 999,
29 | "status_text": "启用",
30 | "status": 1,
31 | "created_at": "2020-01-09 23:37:52",
32 | "desc": "1. 储值成功后,不可退款,请根据自己的消费情况充值。\n2. 储值余额不可提现,不可转移、转赠。\n3. 储值金额按国家法律、法规开具符合规定的发票,后续凭储值余额消费时,不再开具发票。如需发票请至奈雪点单小程序个人中心联系客服。\n4. 储值不累计会员成长值、积分与宝石,订单消费时以实际订单支付金额累计会员成长值、积分与宝石。\n5. 储值余额可在奈雪的茶内地线下门店、奈雪酒屋全国门店、奈雪点单小程序在线支付使用。",
33 | "store_id": 23107,
34 | "gifts": [],
35 | "type": 0,
36 | "full_image": "https://img-shop.qmimg.cn/s1000106/2018/07/09/cfbc38cae535a8ad8a.jpeg",
37 | "name": "200元",
38 | "sell_price": "200.00"
39 | },
40 | {
41 | "updated_at": "2020-05-01 20:19:41",
42 | "id": 1973,
43 | "sales": 31,
44 | "image": "/s1000106/2018/07/09/cfbc38cae535a8ad8a.jpeg",
45 | "value": "300.00",
46 | "deleted_at": null,
47 | "sort": 999,
48 | "status_text": "启用",
49 | "status": 1,
50 | "created_at": "2020-01-09 23:38:10",
51 | "desc": "1. 储值成功后,不可退款,请根据自己的消费情况充值。\n2. 储值余额不可提现,不可转移、转赠。\n3. 储值金额按国家法律、法规开具符合规定的发票,后续凭储值余额消费时,不再开具发票。如需发票请至奈雪点单小程序个人中心联系客服。\n4. 储值不累计会员成长值、积分与宝石,订单消费时以实际订单支付金额累计会员成长值、积分与宝石。\n5. 储值余额可在奈雪的茶内地线下门店、奈雪酒屋全国门店、奈雪点单小程序在线支付使用。",
52 | "store_id": 23107,
53 | "gifts": [],
54 | "type": 0,
55 | "full_image": "https://img-shop.qmimg.cn/s1000106/2018/07/09/cfbc38cae535a8ad8a.jpeg",
56 | "name": "300元",
57 | "sell_price": "300.00"
58 | },
59 | {
60 | "updated_at": "2020-05-03 13:12:35",
61 | "id": 1974,
62 | "sales": 14,
63 | "image": "/s1000106/2018/07/09/cfbc38cae535a8ad8a.jpeg",
64 | "value": "400.00",
65 | "deleted_at": null,
66 | "sort": 999,
67 | "status_text": "启用",
68 | "status": 1,
69 | "created_at": "2020-01-09 23:38:30",
70 | "desc": "1. 储值成功后,不可退款,请根据自己的消费情况充值。\n2. 储值余额不可提现,不可转移、转赠。\n3. 储值金额按国家法律、法规开具符合规定的发票,后续凭储值余额消费时,不再开具发票。如需发票请至奈雪点单小程序个人中心联系客服。\n4. 储值不累计会员成长值、积分与宝石,订单消费时以实际订单支付金额累计会员成长值、积分与宝石。\n5. 储值余额可在奈雪的茶内地线下门店、奈雪酒屋全国门店、奈雪点单小程序在线支付使用。",
71 | "store_id": 23107,
72 | "gifts": [],
73 | "type": 0,
74 | "full_image": "https://img-shop.qmimg.cn/s1000106/2018/07/09/cfbc38cae535a8ad8a.jpeg",
75 | "name": "400元",
76 | "sell_price": "400.00"
77 | },
78 | {
79 | "updated_at": "2020-04-18 07:43:07",
80 | "id": 1975,
81 | "sales": 7,
82 | "image": "/s1000106/2018/07/09/cfbc38cae535a8ad8a.jpeg",
83 | "value": "600.00",
84 | "deleted_at": null,
85 | "sort": 999,
86 | "status_text": "启用",
87 | "status": 1,
88 | "created_at": "2020-01-09 23:38:44",
89 | "desc": "1. 储值成功后,不可退款,请根据自己的消费情况充值。\n2. 储值余额不可提现,不可转移、转赠。\n3. 储值金额按国家法律、法规开具符合规定的发票,后续凭储值余额消费时,不再开具发票。如需发票请至奈雪点单小程序个人中心联系客服。\n4. 储值不累计会员成长值、积分与宝石,订单消费时以实际订单支付金额累计会员成长值、积分与宝石。\n5. 储值余额可在奈雪的茶内地线下门店、奈雪酒屋全国门店、奈雪点单小程序在线支付使用。",
90 | "store_id": 23107,
91 | "gifts": [],
92 | "type": 0,
93 | "full_image": "https://img-shop.qmimg.cn/s1000106/2018/07/09/cfbc38cae535a8ad8a.jpeg",
94 | "name": "600元",
95 | "sell_price": "600.00"
96 | },
97 | {
98 | "updated_at": "2020-04-29 19:48:32",
99 | "id": 1976,
100 | "sales": 18,
101 | "image": "/s1000106/2018/07/09/cfbc38cae535a8ad8a.jpeg",
102 | "value": "800.00",
103 | "deleted_at": null,
104 | "sort": 999,
105 | "status_text": "启用",
106 | "status": 1,
107 | "created_at": "2020-01-09 23:38:58",
108 | "desc": "1. 储值成功后,不可退款,请根据自己的消费情况充值。\n2. 储值余额不可提现,不可转移、转赠。\n3. 储值金额按国家法律、法规开具符合规定的发票,后续凭储值余额消费时,不再开具发票。如需发票请至奈雪点单小程序个人中心联系客服。\n4. 储值不累计会员成长值、积分与宝石,订单消费时以实际订单支付金额累计会员成长值、积分与宝石。\n5. 储值余额可在奈雪的茶内地线下门店、奈雪酒屋全国门店、奈雪点单小程序在线支付使用。",
109 | "store_id": 23107,
110 | "gifts": [],
111 | "type": 0,
112 | "full_image": "https://img-shop.qmimg.cn/s1000106/2018/07/09/cfbc38cae535a8ad8a.jpeg",
113 | "name": "800元",
114 | "sell_price": "800.00"
115 | }
116 | ]
117 |
--------------------------------------------------------------------------------
/api/store.js:
--------------------------------------------------------------------------------
1 | export default {
2 | "longitude": "114.065927",
3 | "latitude": "22.537361",
4 | "area_name": "福田区",
5 | "photo": "[\"s23107\\\/2019\\\/03\\\/25\\\/e4a12f9f81bd3e8f4d.jpg\"]",
6 | "is_show": 1,
7 | "mobile": "0755-82722513",
8 | "takeout_server_status": true,
9 | "is_open": true,
10 | "server_status": true,
11 | "created_at": "1568194697",
12 | "street": "深圳市福田区海田路与福华一路交汇深圳天元5栋1层N136",
13 | "area_id": 440304,
14 | "notice": "",
15 | "city_name": "深圳市",
16 | "id_card": "222222222222222222",
17 | "alipay_store_id": "",
18 | "takeout_server_time": "10:00-23:59",
19 | "id": 1,
20 | "forhere_server_time": "10:00-23:59",
21 | "province_id": 440000,
22 | "forhere_is_open": true,
23 | "is_floor_stall": 0,
24 | "is_eat": 1,
25 | "share_description": "",
26 | "distance": 896,
27 | "distance_text": "896m",
28 | "stalls": [],
29 | "tel": "0755-82722513",
30 | "is_takeout": 1,
31 | "images": [
32 | "https:\/\/img-shop.qmimg.cn\/s23107\/2019\/03\/25\/e4a12f9f81bd3e8f4d.jpg?imageView2\/0\/w\/200\/h\/200"
33 | ],
34 | "shop_day": "",
35 | "image": "https:\/\/img-shop.qmimg.cn\/s23107\/2019\/03\/25\/e4a12f9f81bd3e8f4d.jpg",
36 | "server_time": "10:00-23:59",
37 | "status": 1,
38 | "multi_mark": "NXHNSZ0055",
39 | "per_price": "1.00",
40 | "balance": "0.00",
41 | "name": "卓悦中心ONE AVENUE店",
42 | "updated_at": "1578227762",
43 | "packing_fee": "2.00",
44 | "delivery_cost": "2.00",
45 | "min_price": "30.00",
46 | "avg_delivery_cost_time": "40"
47 | }
48 |
--------------------------------------------------------------------------------
/api/today-attendance.js:
--------------------------------------------------------------------------------
1 | export default {
2 | "is_attendance": 2,
3 | "total_points": 0,
4 | "attendance_points": 1,
5 | "attendance_category": 1,
6 | "attendance_continuity_day": 1,
7 | "list": [{
8 | "points": 1,
9 | "updated_at": "2020-01-15 05:29:25",
10 | "attendances_id": 312,
11 | "id": 770,
12 | "status": 0,
13 | "receive_type": 0,
14 | "created_at": "2019-10-23 19:17:21",
15 | "coupon_name": "",
16 | "attendance_category": 1,
17 | "coupon_id": "0",
18 | "attendance_day": 1,
19 | "coupon_num": 0,
20 | "deleted_at": null
21 | }]
22 | }
23 |
--------------------------------------------------------------------------------
/common/util.js:
--------------------------------------------------------------------------------
1 | function formatTime(time) {
2 | if (typeof time !== 'number' || time < 0) {
3 | return time
4 | }
5 |
6 | var hour = parseInt(time / 3600)
7 | time = time % 3600
8 | var minute = parseInt(time / 60)
9 | time = time % 60
10 | var second = time
11 |
12 | return ([hour, minute, second]).map(function(n) {
13 | n = n.toString()
14 | return n[1] ? n : '0' + n
15 | }).join(':')
16 | }
17 |
18 | function formatDateTime(date, fmt = 'yyyy-MM-dd hh:mm:ss') {
19 | if(!date) {
20 | return ''
21 | }
22 | if (typeof (date) === 'number') {
23 | date = new Date(date)
24 | }
25 | var o = {
26 | "M+": date.getMonth() + 1, //月份
27 | "d+": date.getDate(), //日
28 | "h+": date.getHours(), //小时
29 | "m+": date.getMinutes(), //分
30 | "s+": date.getSeconds(), //秒
31 | "q+": Math.floor((date.getMonth() + 3) / 3), //季度
32 | "S": date.getMilliseconds() //毫秒
33 | }
34 | if (/(y+)/.test(fmt)) fmt = fmt.replace(RegExp.$1, (date.getFullYear() + "").substr(4 - RegExp.$1.length))
35 | for (var k in o)
36 | if (new RegExp("(" + k + ")").test(fmt))
37 | fmt = fmt.replace(RegExp.$1, (RegExp.$1.length == 1) ? (o[k]) : (("00" + o[k]).substr(("" + o[k]).length)))
38 | return fmt
39 | }
40 |
41 | function formatLocation(longitude, latitude) {
42 | if (typeof longitude === 'string' && typeof latitude === 'string') {
43 | longitude = parseFloat(longitude)
44 | latitude = parseFloat(latitude)
45 | }
46 |
47 | longitude = longitude.toFixed(2)
48 | latitude = latitude.toFixed(2)
49 |
50 | return {
51 | longitude: longitude.toString().split('.'),
52 | latitude: latitude.toString().split('.')
53 | }
54 | }
55 |
56 | var dateUtils = {
57 | UNITS: {
58 | '年': 31557600000,
59 | '月': 2629800000,
60 | '天': 86400000,
61 | '小时': 3600000,
62 | '分钟': 60000,
63 | '秒': 1000
64 | },
65 | humanize: function(milliseconds) {
66 | var humanize = '';
67 | for (var key in this.UNITS) {
68 | if (milliseconds >= this.UNITS[key]) {
69 | humanize = Math.floor(milliseconds / this.UNITS[key]) + key + '前';
70 | break;
71 | }
72 | }
73 | return humanize || '刚刚';
74 | },
75 | format: function(dateStr) {
76 | var date = this.parse(dateStr)
77 | var diff = Date.now() - date.getTime();
78 | if (diff < this.UNITS['天']) {
79 | return this.humanize(diff);
80 | }
81 | var _format = function(number) {
82 | return (number < 10 ? ('0' + number) : number);
83 | };
84 | return date.getFullYear() + '/' + _format(date.getMonth() + 1) + '/' + _format(date.getDate()) + '-' +
85 | _format(date.getHours()) + ':' + _format(date.getMinutes());
86 | },
87 | parse: function(str) { //将"yyyy-mm-dd HH:MM:ss"格式的字符串,转化为一个Date对象
88 | var a = str.split(/[^0-9]/);
89 | return new Date(a[0], a[1] - 1, a[2], a[3], a[4], a[5]);
90 | }
91 | };
92 |
93 | module.exports = {
94 | formatTime,
95 | formatDateTime,
96 | formatLocation,
97 | dateUtils
98 | }
99 |
--------------------------------------------------------------------------------
/components/jyf-parser/libs/CssHandler.js:
--------------------------------------------------------------------------------
1 | /*
2 | 解析和匹配 Css 的选择器
3 | github:https://github.com/jin-yufeng/Parser
4 | docs:https://jin-yufeng.github.io/Parser
5 | author:JinYufeng
6 | update:2020/03/15
7 | */
8 | var cfg = require('./config.js');
9 | class CssHandler {
10 | constructor(tagStyle) {
11 | var styles = Object.assign({}, cfg.userAgentStyles);
12 | for (var item in tagStyle)
13 | styles[item] = (styles[item] ? styles[item] + ';' : '') + tagStyle[item];
14 | this.styles = styles;
15 | }
16 | getStyle = data => this.styles = new CssParser(data, this.styles).parse();
17 | match(name, attrs) {
18 | var tmp, matched = (tmp = this.styles[name]) ? tmp + ';' : '';
19 | if (attrs.class) {
20 | var items = attrs.class.split(' ');
21 | for (var i = 0, item; item = items[i]; i++)
22 | if (tmp = this.styles['.' + item])
23 | matched += tmp + ';';
24 | }
25 | if (tmp = this.styles['#' + attrs.id])
26 | matched += tmp + ';';
27 | return matched;
28 | }
29 | }
30 | module.exports = CssHandler;
31 | class CssParser {
32 | constructor(data, init) {
33 | this.data = data;
34 | this.floor = 0;
35 | this.i = 0;
36 | this.list = [];
37 | this.res = init;
38 | this.state = this.Space;
39 | }
40 | parse() {
41 | for (var c; c = this.data[this.i]; this.i++)
42 | this.state(c);
43 | return this.res;
44 | }
45 | section = () => this.data.substring(this.start, this.i);
46 | isLetter = c => (c >= 'a' && c <= 'z') || (c >= 'A' && c <= 'Z');
47 | // 状态机
48 | Space(c) {
49 | if (c == '.' || c == '#' || this.isLetter(c)) {
50 | this.start = this.i;
51 | this.state = this.Name;
52 | } else if (c == '/' && this.data[this.i + 1] == '*')
53 | this.Comment();
54 | else if (!cfg.blankChar[c] && c != ';')
55 | this.state = this.Ignore;
56 | }
57 | Comment() {
58 | this.i = this.data.indexOf('*/', this.i) + 1;
59 | if (!this.i) this.i = this.data.length;
60 | this.state = this.Space;
61 | }
62 | Ignore(c) {
63 | if (c == '{') this.floor++;
64 | else if (c == '}' && !--this.floor) this.state = this.Space;
65 | }
66 | Name(c) {
67 | if (cfg.blankChar[c]) {
68 | this.list.push(this.section());
69 | this.state = this.NameSpace;
70 | } else if (c == '{') {
71 | this.list.push(this.section());
72 | this.Content();
73 | } else if (c == ',') {
74 | this.list.push(this.section());
75 | this.Comma();
76 | } else if (!this.isLetter(c) && (c < '0' || c > '9') && c != '-' && c != '_')
77 | this.state = this.Ignore;
78 | }
79 | NameSpace(c) {
80 | if (c == '{') this.Content();
81 | else if (c == ',') this.Comma();
82 | else if (!cfg.blankChar[c]) this.state = this.Ignore;
83 | }
84 | Comma() {
85 | while (cfg.blankChar[this.data[++this.i]]);
86 | if (this.data[this.i] == '{') this.Content();
87 | else {
88 | this.start = this.i--;
89 | this.state = this.Name;
90 | }
91 | }
92 | Content() {
93 | this.start = ++this.i;
94 | if ((this.i = this.data.indexOf('}', this.i)) == -1) this.i = this.data.length;
95 | var content = this.section();
96 | for (var i = 0, item; item = this.list[i++];)
97 | if (this.res[item]) this.res[item] += ';' + content;
98 | else this.res[item] = content;
99 | this.list = [];
100 | this.state = this.Space;
101 | }
102 | }
103 |
--------------------------------------------------------------------------------
/components/jyf-parser/libs/config.js:
--------------------------------------------------------------------------------
1 | /* 配置文件 */
2 | // #ifdef MP-WEIXIN
3 | const canIUse = wx.canIUse('editor'); // 高基础库标识,用于兼容
4 | // #endif
5 | module.exports = {
6 | // 过滤器函数
7 | filter: null,
8 | // 代码高亮函数
9 | highlight: null,
10 | // 文本处理函数
11 | onText: null,
12 | // 实体编码列表
13 | entities: {
14 | quot: '"',
15 | apos: "'",
16 | semi: ';',
17 | nbsp: '\xA0',
18 | ensp: '\u2002',
19 | emsp: '\u2003',
20 | ndash: '–',
21 | mdash: '—',
22 | middot: '·',
23 | lsquo: '‘',
24 | rsquo: '’',
25 | ldquo: '“',
26 | rdquo: '”',
27 | bull: '•',
28 | hellip: '…'
29 | },
30 | blankChar: makeMap(' ,\xA0,\t,\r,\n,\f'),
31 | // 块级标签,将被转为 div
32 | blockTags: makeMap('address,article,aside,body,caption,center,cite,footer,header,html,nav,section' + (
33 | // #ifdef MP-WEIXIN
34 | canIUse ? '' :
35 | // #endif
36 | ',pre')),
37 | // 将被移除的标签
38 | ignoreTags: makeMap(
39 | 'area,base,basefont,canvas,command,frame,input,isindex,keygen,link,map,meta,param,script,source,style,svg,textarea,title,track,use,wbr'
40 | // #ifdef MP-WEIXIN
41 | + (canIUse ? ',rp' : '')
42 | // #endif
43 | // #ifndef APP-PLUS
44 | + ',embed,iframe'
45 | // #endif
46 | ),
47 | // 只能被 rich-text 显示的标签
48 | richOnlyTags: makeMap('a,colgroup,fieldset,legend,picture,table'
49 | // #ifdef MP-WEIXIN
50 | + (canIUse ? ',bdi,bdo,caption,rt,ruby' : '')
51 | // #endif
52 | ),
53 | // 自闭合的标签
54 | selfClosingTags: makeMap(
55 | 'area,base,basefont,br,col,circle,ellipse,embed,frame,hr,img,input,isindex,keygen,line,link,meta,param,path,polygon,rect,source,track,use,wbr'
56 | ),
57 | // 信任的属性
58 | trustAttrs: makeMap(
59 | 'align,alt,app-id,author,autoplay,border,cellpadding,cellspacing,class,color,colspan,controls,data-src,dir,face,height,href,id,ignore,loop,media,muted,name,path,poster,rowspan,size,span,src,start,style,type,unit-id,width,xmlns'
60 | ),
61 | // bool 型的属性
62 | boolAttrs: makeMap('autoplay,controls,ignore,loop,muted'),
63 | // 信任的标签
64 | trustTags: makeMap(
65 | 'a,abbr,ad,audio,b,blockquote,br,code,col,colgroup,dd,del,dl,dt,div,em,fieldset,h1,h2,h3,h4,h5,h6,hr,i,img,ins,label,legend,li,ol,p,q,source,span,strong,sub,sup,table,tbody,td,tfoot,th,thead,tr,title,ul,video'
66 | // #ifdef MP-WEIXIN
67 | + (canIUse ? ',bdi,bdo,caption,pre,rt,ruby' : '')
68 | // #endif
69 | // #ifdef APP-PLUS
70 | + ',embed,iframe'
71 | // #endif
72 | ),
73 | // 默认的标签样式
74 | userAgentStyles: {
75 | address: 'font-style:italic',
76 | big: 'display:inline;font-size:1.2em',
77 | blockquote: 'background-color:#f6f6f6;border-left:3px solid #dbdbdb;color:#6c6c6c;padding:5px 0 5px 10px',
78 | caption: 'display:table-caption;text-align:center',
79 | center: 'text-align:center',
80 | cite: 'font-style:italic',
81 | dd: 'margin-left:40px',
82 | mark: 'background-color:yellow',
83 | pre: 'font-family:monospace;white-space:pre;overflow:scroll',
84 | s: 'text-decoration:line-through',
85 | small: 'display:inline;font-size:0.8em',
86 | u: 'text-decoration:underline'
87 | }
88 | }
89 |
90 | function makeMap(str) {
91 | var map = {},
92 | list = str.split(',');
93 | for (var i = list.length; i--;)
94 | map[list[i]] = true;
95 | return map;
96 | }
97 |
--------------------------------------------------------------------------------
/components/jyf-parser/libs/handler.sjs:
--------------------------------------------------------------------------------
1 | var inlineTags = {
2 | abbr: 1,
3 | b: 1,
4 | big: 1,
5 | code: 1,
6 | del: 1,
7 | em: 1,
8 | i: 1,
9 | ins: 1,
10 | label: 1,
11 | q: 1,
12 | small: 1,
13 | span: 1,
14 | strong: 1
15 | }
16 | export default {
17 | useRichText: function(item) {
18 | return !item.c && !inlineTags[item.name] && (item.attrs.style || '').indexOf('display:inline') == -1;
19 | }
20 | }
21 |
--------------------------------------------------------------------------------
/components/jyf-parser/libs/handler.wxs:
--------------------------------------------------------------------------------
1 | var inlineTags = {
2 | abbr: 1,
3 | b: 1,
4 | big: 1,
5 | code: 1,
6 | del: 1,
7 | em: 1,
8 | i: 1,
9 | ins: 1,
10 | label: 1,
11 | q: 1,
12 | small: 1,
13 | span: 1,
14 | strong: 1
15 | }
16 | module.exports = {
17 | useRichText: function(item) {
18 | return !item.c && !inlineTags[item.name] && (item.attrs.style || '').indexOf('display:inline') == -1;
19 | }
20 | }
21 |
--------------------------------------------------------------------------------
/components/list-cell/list-cell.vue:
--------------------------------------------------------------------------------
1 |
2 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
78 |
79 |
134 |
--------------------------------------------------------------------------------
/components/loading.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
17 |
18 |
34 |
--------------------------------------------------------------------------------
/components/modal/modal.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 | {{title}}
9 |
10 |
11 |
12 |
13 |
14 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
132 |
133 |
399 |
--------------------------------------------------------------------------------
/components/navbar-back-button.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
39 |
40 |
42 |
--------------------------------------------------------------------------------
/components/popup-layer/popup-layer.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
5 |
8 |
9 |
10 |
11 |
133 |
134 |
156 |
--------------------------------------------------------------------------------
/components/uni-icons/icons.js:
--------------------------------------------------------------------------------
1 | export default {
2 | 'contact': '\ue100',
3 | 'person': '\ue101',
4 | 'personadd': '\ue102',
5 | 'contact-filled': '\ue130',
6 | 'person-filled': '\ue131',
7 | 'personadd-filled': '\ue132',
8 | 'phone': '\ue200',
9 | 'email': '\ue201',
10 | 'chatbubble': '\ue202',
11 | 'chatboxes': '\ue203',
12 | 'phone-filled': '\ue230',
13 | 'email-filled': '\ue231',
14 | 'chatbubble-filled': '\ue232',
15 | 'chatboxes-filled': '\ue233',
16 | 'weibo': '\ue260',
17 | 'weixin': '\ue261',
18 | 'pengyouquan': '\ue262',
19 | 'chat': '\ue263',
20 | 'qq': '\ue264',
21 | 'videocam': '\ue300',
22 | 'camera': '\ue301',
23 | 'mic': '\ue302',
24 | 'location': '\ue303',
25 | 'mic-filled': '\ue332',
26 | 'speech': '\ue332',
27 | 'location-filled': '\ue333',
28 | 'micoff': '\ue360',
29 | 'image': '\ue363',
30 | 'map': '\ue364',
31 | 'compose': '\ue400',
32 | 'trash': '\ue401',
33 | 'upload': '\ue402',
34 | 'download': '\ue403',
35 | 'close': '\ue404',
36 | 'redo': '\ue405',
37 | 'undo': '\ue406',
38 | 'refresh': '\ue407',
39 | 'star': '\ue408',
40 | 'plus': '\ue409',
41 | 'minus': '\ue410',
42 | 'circle': '\ue411',
43 | 'checkbox': '\ue411',
44 | 'close-filled': '\ue434',
45 | 'clear': '\ue434',
46 | 'refresh-filled': '\ue437',
47 | 'star-filled': '\ue438',
48 | 'plus-filled': '\ue439',
49 | 'minus-filled': '\ue440',
50 | 'circle-filled': '\ue441',
51 | 'checkbox-filled': '\ue442',
52 | 'closeempty': '\ue460',
53 | 'refreshempty': '\ue461',
54 | 'reload': '\ue462',
55 | 'starhalf': '\ue463',
56 | 'spinner': '\ue464',
57 | 'spinner-cycle': '\ue465',
58 | 'search': '\ue466',
59 | 'plusempty': '\ue468',
60 | 'forward': '\ue470',
61 | 'back': '\ue471',
62 | 'left-nav': '\ue471',
63 | 'checkmarkempty': '\ue472',
64 | 'home': '\ue500',
65 | 'navigate': '\ue501',
66 | 'gear': '\ue502',
67 | 'paperplane': '\ue503',
68 | 'info': '\ue504',
69 | 'help': '\ue505',
70 | 'locked': '\ue506',
71 | 'more': '\ue507',
72 | 'flag': '\ue508',
73 | 'home-filled': '\ue530',
74 | 'gear-filled': '\ue532',
75 | 'info-filled': '\ue534',
76 | 'help-filled': '\ue535',
77 | 'more-filled': '\ue537',
78 | 'settings': '\ue560',
79 | 'list': '\ue562',
80 | 'bars': '\ue563',
81 | 'loop': '\ue565',
82 | 'paperclip': '\ue567',
83 | 'eye': '\ue568',
84 | 'arrowup': '\ue580',
85 | 'arrowdown': '\ue581',
86 | 'arrowleft': '\ue582',
87 | 'arrowright': '\ue583',
88 | 'arrowthinup': '\ue584',
89 | 'arrowthindown': '\ue585',
90 | 'arrowthinleft': '\ue586',
91 | 'arrowthinright': '\ue587',
92 | 'pulldown': '\ue588',
93 | 'closefill': '\ue589',
94 | 'sound': '\ue590',
95 | 'scan': '\ue612'
96 | }
97 |
--------------------------------------------------------------------------------
/components/uni-steps/uni-steps.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | {{item.title}}
7 |
8 |
9 |
10 |
12 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
27 |
28 |
29 |
30 |
31 | {{item.desc}}
32 |
33 |
34 |
35 |
36 |
37 |
38 |
82 |
83 |
260 |
--------------------------------------------------------------------------------
/main.js:
--------------------------------------------------------------------------------
1 | import Vue from 'vue'
2 | import App from './App'
3 | import api from './api'
4 | import util from './common/util'
5 | import store from './store'
6 |
7 | Vue.config.productionTip = false
8 |
9 | App.mpType = 'app'
10 |
11 | Vue.prototype.$store = store
12 | Vue.prototype.$api = api
13 | Vue.prototype.$util = util
14 |
15 | const app = new Vue({
16 | store,
17 | ...App
18 | })
19 | app.$mount()
20 |
--------------------------------------------------------------------------------
/manifest.json:
--------------------------------------------------------------------------------
1 | {
2 | "name" : "nxdc-milktea",
3 | "appid" : "",
4 | "description" : "",
5 | "versionName" : "1.0.0",
6 | "versionCode" : "100",
7 | "transformPx" : false,
8 | /* 5+App特有相关 */
9 | "app-plus" : {
10 | "usingComponents" : true,
11 | "nvueCompiler" : "uni-app",
12 | "compilerVersion" : 3,
13 | "splashscreen" : {
14 | "alwaysShowBeforeRender" : true,
15 | "waiting" : true,
16 | "autoclose" : true,
17 | "delay" : 0
18 | },
19 | /* 模块配置 */
20 | "modules" : {},
21 | /* 应用发布信息 */
22 | "distribute" : {
23 | /* android打包配置 */
24 | "android" : {
25 | "permissions" : [
26 | "",
27 | "",
28 | "",
29 | "",
30 | "",
31 | "",
32 | "",
33 | "",
34 | "",
35 | "",
36 | "",
37 | "",
38 | "",
39 | "",
40 | "",
41 | "",
42 | "",
43 | "",
44 | "",
45 | "",
46 | "",
47 | ""
48 | ]
49 | },
50 | /* ios打包配置 */
51 | "ios" : {},
52 | /* SDK配置 */
53 | "sdkConfigs" : {}
54 | }
55 | },
56 | /* 快应用特有相关 */
57 | "quickapp" : {},
58 | /* 小程序特有相关 */
59 | "mp-weixin" : {
60 | "appid" : "",
61 | "setting" : {
62 | "urlCheck" : false,
63 | "es6" : false
64 | },
65 | "usingComponents" : true
66 | },
67 | "mp-alipay" : {
68 | "usingComponents" : true
69 | },
70 | "mp-baidu" : {
71 | "usingComponents" : true
72 | },
73 | "mp-toutiao" : {
74 | "usingComponents" : true
75 | }
76 | }
77 |
--------------------------------------------------------------------------------
/pages.json:
--------------------------------------------------------------------------------
1 | {
2 | "pages": [ //pages数组中第一项表示应用启动页,参考:https://uniapp.dcloud.io/collocation/pages
3 | {
4 | "path": "pages/index/index",
5 | "style": {
6 | "navigationStyle": "custom"
7 | }
8 | }, {
9 | "path": "pages/menu/menu",
10 | "style": {
11 | "navigationBarTitleText": "奈雪の茶",
12 | "navigationBarTextStyle": "black",
13 | "navigationBarBackgroundColor": "#ffffff"
14 | }
15 | }, {
16 | "path": "pages/menu/menu1",
17 | "style": {
18 | "navigationBarTitleText": "奈雪の茶",
19 | "navigationBarTextStyle": "black",
20 | "navigationBarBackgroundColor": "#ffffff"
21 | }
22 | },{
23 | "path": "pages/take-foods/take-foods",
24 | "style": {
25 | "navigationBarTitleText": "奈雪の茶",
26 | "navigationBarTextStyle": "black",
27 | "navigationBarBackgroundColor": "#ffffff"
28 | }
29 | }, {
30 | "path": "pages/mine/mine",
31 | "style": {
32 | "navigationBarTitleText": "奈雪乐园",
33 | "navigationBarTextStyle": "black",
34 | "navigationBarBackgroundColor": "#ffffff"
35 | }
36 | }
37 | ,{
38 | "path" : "pages/pay/pay",
39 | "style" : {
40 | "navigationBarTitleText": "奈雪の茶",
41 | "navigationBarTextStyle": "black",
42 | "navigationBarBackgroundColor": "#ffffff"
43 | }
44 | }
45 | ,{
46 | "path" : "pages/remark/remark",
47 | "style" : {
48 | "navigationBarTitleText": "奈雪の茶",
49 | "navigationBarTextStyle": "black",
50 | "navigationBarBackgroundColor": "#ffffff"
51 | }
52 | }
53 | ,{
54 | "path" : "pages/packages/index",
55 | "style" : {
56 | "navigationBarTitleText": "券包商品",
57 | "navigationBarTextStyle": "black",
58 | "navigationBarBackgroundColor": "#ffffff",
59 | "enablePullDownRefresh": true
60 | }
61 | }
62 | ,{
63 | "path" : "pages/packages/detail",
64 | "style" : {
65 | "navigationBarTitleText": "购买劵包",
66 | "navigationBarTextStyle": "black",
67 | "navigationBarBackgroundColor": "#ffffff",
68 | "enablePullDownRefresh": true
69 | }
70 | }
71 | ,{
72 | "path" : "pages/balance/balance",
73 | "style" : {
74 | "navigationBarTitleText": "会员储值",
75 | "navigationBarTextStyle": "black",
76 | "navigationBarBackgroundColor": "#ffffff"
77 | }
78 | }
79 | ,{
80 | "path" : "pages/login/login",
81 | "style" : {
82 | "navigationBarTitleText": "登录",
83 | "navigationBarTextStyle": "black",
84 | "navigationBarBackgroundColor": "#ffffff"
85 | }
86 | }
87 | ,{
88 | "path" : "pages/address/address",
89 | "style" : {
90 | "navigationBarTitleText": "我的地址",
91 | "navigationBarTextStyle": "black",
92 | "navigationBarBackgroundColor": "#ffffff"
93 | }
94 | }
95 | ,{
96 | "path" : "pages/address/add",
97 | "style" : {
98 | "navigationBarTitleText": "奈雪の茶",
99 | "navigationBarTextStyle": "black",
100 | "navigationBarBackgroundColor": "#ffffff"
101 | }
102 | }
103 | ,{
104 | "path" : "pages/integrals/integrals",
105 | "style" : {
106 | "navigationStyle":"custom",
107 | "onReachBottomDistance": 50
108 | }
109 | }
110 | ,{
111 | "path" : "pages/attendance/attendance",
112 | "style" : {
113 | "navigationStyle":"custom"
114 | }
115 | }
116 | ,{
117 | "path" : "pages/orders/orders",
118 | "style" : {
119 | "navigationBarTitleText": "历史订单",
120 | "navigationBarTextStyle": "black",
121 | "navigationBarBackgroundColor": "#ffffff",
122 | "enablePullDownRefresh": true,
123 | "onReachBottomDistance": 50
124 | }
125 | }
126 | ,{
127 | "path" : "pages/orders/detail",
128 | "style" : {
129 | "navigationBarTitleText": "订单详情",
130 | "navigationBarTextStyle": "black",
131 | "navigationBarBackgroundColor": "#ffffff"
132 | }
133 | }
134 | ,{
135 | "path" : "pages/mine/member-code",
136 | "style" : {
137 | "navigationBarTitleText": "会员码",
138 | "navigationBarTextStyle": "black",
139 | "navigationBarBackgroundColor": "#ffffff"
140 | }
141 | }
142 | ,{
143 | "path" : "pages/coupons/coupons",
144 | "style" : {
145 | "navigationBarTitleText": "我的卡券",
146 | "navigationBarTextStyle": "black",
147 | "navigationBarBackgroundColor": "#ffffff"
148 | }
149 | }
150 | ,{
151 | "path" : "pages/mine/userinfo",
152 | "style" : {
153 | "navigationBarTitleText": "用户信息",
154 | "navigationBarTextStyle": "black",
155 | "navigationBarBackgroundColor": "#ffffff"
156 | }
157 | },
158 | {
159 | "path" : "pages/integrals/flow",
160 | "style" : {
161 | "navigationBarTitleText": "积分明细",
162 | "navigationBarTextStyle": "black",
163 | "navigationBarBackgroundColor": "#ffffff"
164 | }
165 | },
166 | {
167 | "path" : "pages/integrals/detail",
168 | "style" : {
169 | "navigationBarTitleText": "兑换详情",
170 | "navigationBarTextStyle": "black",
171 | "navigationBarBackgroundColor": "#ffffff"
172 | }
173 | }
174 | ,{
175 | "path" : "pages/review/review",
176 | "style" : {
177 | "navigationBarTitleText": "奈雪の茶",
178 | "navigationBarTextStyle": "black",
179 | "navigationBarBackgroundColor": "#ffffff"
180 | }
181 | }
182 | ],
183 | "globalStyle": {
184 | "navigationBarTextStyle": "black",
185 | "navigationBarTitleText": "uni-app",
186 | "navigationBarBackgroundColor": "#F8F8F8",
187 | "backgroundColor": "#F8F8F8"
188 | },
189 | "tabBar": {
190 | "color": "#919293",
191 | "selectedColor": "#97AF13",
192 | "backgroundColor": "#fff",
193 | "borderStyle": "black",
194 | "list": [{
195 | "pagePath": "pages/index/index",
196 | "text": "首页",
197 | "iconPath": "static/images/tabBar/index.png",
198 | "selectedIconPath": "static/images/tabBar/index_selected.png"
199 | }, {
200 | "pagePath": "pages/menu/menu",
201 | "text": "点餐",
202 | "iconPath": "static/images/tabBar/drink.png",
203 | "selectedIconPath": "static/images/tabBar/drink_selected.png"
204 | }, {
205 | "pagePath": "pages/take-foods/take-foods",
206 | "text": "取餐",
207 | "iconPath": "static/images/tabBar/take.png",
208 | "selectedIconPath": "static/images/tabBar/take_selected.png"
209 | }, {
210 | "pagePath": "pages/mine/mine",
211 | "text": "我的",
212 | "iconPath": "static/images/tabBar/mine.png",
213 | "selectedIconPath": "static/images/tabBar/mine_selected.png"
214 | }]
215 | }
216 | }
217 |
--------------------------------------------------------------------------------
/pages/address/add.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 | 收货人
8 |
9 |
10 |
11 |
12 |
13 | 性别
14 |
15 | 先生
16 | 女士
17 |
18 |
19 |
20 |
21 |
22 | 联系方式
23 |
24 |
25 |
26 |
27 |
28 | 收货地址
29 |
30 |
31 |
32 |
33 |
34 | 门牌号
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
44 |
45 |
46 |
86 |
87 |
152 |
--------------------------------------------------------------------------------
/pages/address/address.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | {{ address.detailAddress }}
7 |
8 | {{ address.name }} {{ address.postCode==0 ? '先生' : '女士' }} {{ address.phoneNumber }}
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
75 |
76 |
129 |
--------------------------------------------------------------------------------
/pages/attendance/attendance.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
18 |
19 |
20 | 当前积分
21 | {{ member.integration }}
22 |
23 |
24 |
25 |
28 |
29 |
30 |
31 |
32 |
35 |
36 | 赠送的1积分已发到您的账户中
37 | 连续签到1天可额外获得1积分
38 |
39 |
40 |
41 |
42 |
43 |
44 |
45 |
46 |
47 |
90 |
91 |
203 |
--------------------------------------------------------------------------------
/pages/attendance/uni-calendar/uni-calendar-item.vue:
--------------------------------------------------------------------------------
1 |
2 |
9 |
10 |
11 |
12 |
13 |
14 | {{weeks.date}}
21 | {{weeks.isDay?'今天': (weeks.lunar.IDayCn === '初一'?weeks.lunar.IMonthCn:weeks.lunar.IDayCn)}}
28 | {{weeks.extraInfo.info}}
36 |
37 |
38 |
39 |
40 |
41 |
77 |
78 |
176 |
--------------------------------------------------------------------------------
/pages/attendance/uni-calendar/util.js:
--------------------------------------------------------------------------------
1 | import CALENDAR from './calendar.js'
2 |
3 | class Calendar {
4 | constructor({
5 | date,
6 | selected,
7 | startDate,
8 | endDate,
9 | range
10 | } = {}) {
11 | // 当前日期
12 | this.date = this.getDate(date) // 当前初入日期
13 | // 打点信息
14 | this.selected = selected || [];
15 | // 范围开始
16 | this.startDate = startDate
17 | // 范围结束
18 | this.endDate = endDate
19 | this.range = range
20 | // 多选状态
21 | this.multipleStatus = {
22 | before: '',
23 | after: '',
24 | data: []
25 | }
26 | // 每周日期
27 | this.weeks = {}
28 |
29 | this._getWeek(this.date.fullDate)
30 | }
31 |
32 | /**
33 | * 获取任意时间
34 | */
35 | getDate(date, AddDayCount = 0, str = 'day') {
36 | if (!date) {
37 | date = new Date()
38 | }
39 | if (typeof date !== 'object') {
40 | date = date.replace(/-/g, '/')
41 | }
42 | const dd = new Date(date)
43 | switch (str) {
44 | case 'day':
45 | dd.setDate(dd.getDate() + AddDayCount) // 获取AddDayCount天后的日期
46 | break
47 | case 'month':
48 | if (dd.getDate() === 31) {
49 | dd.setDate(dd.getDate() + AddDayCount)
50 | } else {
51 | dd.setMonth(dd.getMonth() + AddDayCount) // 获取AddDayCount天后的日期
52 | }
53 | break
54 | case 'year':
55 | dd.setFullYear(dd.getFullYear() + AddDayCount) // 获取AddDayCount天后的日期
56 | break
57 | }
58 | const y = dd.getFullYear()
59 | const m = dd.getMonth() + 1 < 10 ? '0' + (dd.getMonth() + 1) : dd.getMonth() + 1 // 获取当前月份的日期,不足10补0
60 | const d = dd.getDate() < 10 ? '0' + dd.getDate() : dd.getDate() // 获取当前几号,不足10补0
61 | return {
62 | fullDate: y + '-' + m + '-' + d,
63 | year: y,
64 | month: m,
65 | date: d,
66 | day: dd.getDay()
67 | }
68 | }
69 |
70 |
71 | /**
72 | * 获取上月剩余天数
73 | */
74 | _getLastMonthDays(firstDay, full) {
75 | let dateArr = []
76 | for (let i = firstDay; i > 0; i--) {
77 | const beforeDate = new Date(full.year, full.month - 1, -i + 1).getDate()
78 | dateArr.push({
79 | date: beforeDate,
80 | month: full.month - 1,
81 | lunar: this.getlunar(full.year, full.month - 1, beforeDate),
82 | disable: true
83 | })
84 | }
85 | return dateArr
86 | }
87 | /**
88 | * 获取本月天数
89 | */
90 | _currentMonthDys(dateData, full) {
91 | let dateArr = []
92 | let fullDate = this.date.fullDate
93 | for (let i = 1; i <= dateData; i++) {
94 | let isinfo = false
95 | let nowDate = full.year + '-' + (full.month < 10 ?
96 | full.month : full.month) + '-' + (i < 10 ?
97 | '0' + i : i)
98 | // 是否今天
99 | let isDay = fullDate === nowDate
100 | // 获取打点信息
101 | let info = this.selected && this.selected.find((item) => {
102 | if (this.dateEqual(nowDate, item.date)) {
103 | return item
104 | }
105 | })
106 |
107 | // 日期禁用
108 | let disableBefore = true
109 | let disableAfter = true
110 | if (this.startDate) {
111 | let dateCompBefore = this.dateCompare(this.startDate, fullDate)
112 | disableBefore = this.dateCompare(dateCompBefore ? this.startDate : fullDate, nowDate)
113 | }
114 |
115 | if (this.endDate) {
116 | let dateCompAfter = this.dateCompare(fullDate, this.endDate)
117 | disableAfter = this.dateCompare(nowDate, dateCompAfter ? this.endDate : fullDate)
118 | }
119 |
120 | let multiples = this.multipleStatus.data
121 | let checked = false
122 | let multiplesStatus = -1
123 | if (this.range) {
124 | if (multiples) {
125 | multiplesStatus = multiples.findIndex((item) => {
126 | return this.dateEqual(item, nowDate)
127 | })
128 | }
129 | if (multiplesStatus !== -1) {
130 | checked = true
131 | }
132 | }
133 |
134 | let data = {
135 | fullDate: nowDate,
136 | year: full.year,
137 | date: i,
138 | multiple: this.range ? checked : false,
139 | month: full.month,
140 | lunar: this.getlunar(full.year, full.month, i),
141 | disable: !disableBefore || !disableAfter,
142 | isDay
143 | }
144 | if (info) {
145 | data.extraInfo = info
146 | }
147 |
148 | dateArr.push(data)
149 | }
150 | return dateArr
151 | }
152 | /**
153 | * 获取下月天数
154 | */
155 | _getNextMonthDays(surplus, full) {
156 | let dateArr = []
157 | for (let i = 1; i < surplus + 1; i++) {
158 | dateArr.push({
159 | date: i,
160 | month: Number(full.month) + 1,
161 | lunar: this.getlunar(full.year, Number(full.month) + 1, i),
162 | disable: true
163 | })
164 | }
165 | return dateArr
166 | }
167 | /**
168 | * 设置日期
169 | * @param {Object} date
170 | */
171 | setDate(date) {
172 | this._getWeek(date)
173 | }
174 | /**
175 | * 获取当前日期详情
176 | * @param {Object} date
177 | */
178 | getInfo(date) {
179 | if (!date) {
180 | date = new Date()
181 | }
182 | const dateInfo = this.canlender.find(item => item.fullDate === this.getDate(date).fullDate)
183 | return dateInfo
184 | }
185 |
186 | /**
187 | * 比较时间大小
188 | */
189 | dateCompare(startDate, endDate) {
190 | // 计算截止时间
191 | startDate = new Date(startDate.replace('-', '/').replace('-', '/'))
192 | // 计算详细项的截止时间
193 | endDate = new Date(endDate.replace('-', '/').replace('-', '/'))
194 | if (startDate <= endDate) {
195 | return true
196 | } else {
197 | return false
198 | }
199 | }
200 |
201 | /**
202 | * 比较时间是否相等
203 | */
204 | dateEqual(before, after) {
205 | // 计算截止时间
206 | before = new Date(before.replace('-', '/').replace('-', '/'))
207 | // 计算详细项的截止时间
208 | after = new Date(after.replace('-', '/').replace('-', '/'))
209 | if (before.getTime() - after.getTime() === 0) {
210 | return true
211 | } else {
212 | return false
213 | }
214 | }
215 |
216 |
217 | /**
218 | * 获取日期范围内所有日期
219 | * @param {Object} begin
220 | * @param {Object} end
221 | */
222 | geDateAll(begin, end) {
223 | var arr = []
224 | var ab = begin.split('-')
225 | var ae = end.split('-')
226 | var db = new Date()
227 | db.setFullYear(ab[0], ab[1] - 1, ab[2])
228 | var de = new Date()
229 | de.setFullYear(ae[0], ae[1] - 1, ae[2])
230 | var unixDb = db.getTime() - 24 * 60 * 60 * 1000
231 | var unixDe = de.getTime() - 24 * 60 * 60 * 1000
232 | for (var k = unixDb; k <= unixDe;) {
233 | k = k + 24 * 60 * 60 * 1000
234 | arr.push(this.getDate(new Date(parseInt(k))).fullDate)
235 | }
236 | return arr
237 | }
238 | /**
239 | * 计算阴历日期显示
240 | */
241 | getlunar(year, month, date) {
242 | return CALENDAR.solar2lunar(year, month, date)
243 | }
244 | /**
245 | * 设置打点
246 | */
247 | setSelectInfo(data, value) {
248 | this.selected = value
249 | this._getWeek(data)
250 | }
251 |
252 | /**
253 | * 获取多选状态
254 | */
255 | setMultiple(fullDate) {
256 | let {
257 | before,
258 | after
259 | } = this.multipleStatus
260 | if (!this.range) return
261 | if (before && after) {
262 | this.multipleStatus.before = ''
263 | this.multipleStatus.after = ''
264 | this.multipleStatus.data = []
265 | this._getWeek(fullDate)
266 | } else {
267 | if (!before) {
268 | this.multipleStatus.before = fullDate
269 | } else {
270 | this.multipleStatus.after = fullDate
271 | if (this.dateCompare(this.multipleStatus.before, this.multipleStatus.after)) {
272 | this.multipleStatus.data = this.geDateAll(this.multipleStatus.before, this.multipleStatus.after);
273 | } else {
274 | this.multipleStatus.data = this.geDateAll(this.multipleStatus.after, this.multipleStatus.before);
275 | }
276 | this._getWeek(fullDate)
277 | }
278 | }
279 | }
280 |
281 | /**
282 | * 获取每周数据
283 | * @param {Object} dateData
284 | */
285 | _getWeek(dateData) {
286 | const {
287 | fullDate,
288 | year,
289 | month,
290 | date,
291 | day
292 | } = this.getDate(dateData)
293 | let firstDay = new Date(year, month - 1, 1).getDay()
294 | let currentDay = new Date(year, month, 0).getDate()
295 | let dates = {
296 | lastMonthDays: this._getLastMonthDays(firstDay, this.getDate(dateData)), // 上个月末尾几天
297 | currentMonthDys: this._currentMonthDys(currentDay, this.getDate(dateData)), // 本月天数
298 | nextMonthDays: [], // 下个月开始几天
299 | weeks: []
300 | }
301 | let canlender = []
302 | const surplus = 42 - (dates.lastMonthDays.length + dates.currentMonthDys.length)
303 | dates.nextMonthDays = this._getNextMonthDays(surplus, this.getDate(dateData))
304 | canlender = canlender.concat(dates.lastMonthDays, dates.currentMonthDys, dates.nextMonthDays)
305 | let weeks = {}
306 | // 拼接数组 上个月开始几天 + 本月天数+ 下个月开始几天
307 | for (let i = 0; i < canlender.length; i++) {
308 | if (i % 7 === 0) {
309 | weeks[parseInt(i / 7)] = new Array(7)
310 | }
311 | weeks[parseInt(i / 7)][i % 7] = canlender[i]
312 | }
313 | this.canlender = canlender
314 | this.weeks = weeks
315 | }
316 |
317 | //静态方法
318 | // static init(date) {
319 | // if (!this.instance) {
320 | // this.instance = new Calendar(date);
321 | // }
322 | // return this.instance;
323 | // }
324 | }
325 |
326 |
327 | export default Calendar
328 |
--------------------------------------------------------------------------------
/pages/balance/balance.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 | 账户余额(元)
9 |
10 | 交易记录
11 |
12 |
13 |
14 |
15 | 储值金额
16 |
17 |
18 |
21 |
22 | 元
23 |
24 |
25 |
26 |
27 | 使用说明
28 |
29 | {{ rechargeCard.desc }}
30 |
31 |
32 |
33 |
34 |
35 |
36 |
38 | 我已阅读并同意
39 | 《储值协议》
40 |
41 |
42 |
43 |
44 |
45 |
46 |
47 |
48 |
49 |
50 |
74 |
75 |
123 |
--------------------------------------------------------------------------------
/pages/coupons/coupons.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 | 查看兑换规则
9 |
10 |
11 |
13 | {{ item.title }}
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 | {{ item.title }}
24 | 有效期至{{ item.endAt }}
25 |
26 |
27 |
28 | 查看详情
29 |
30 |
31 |
32 |
33 |
34 |
35 | 历史卡券
36 | 赠送记录
37 | 第三方权益
38 |
39 |
40 |
41 |
42 |
43 | 有效期:{{ coupon.beginAt }}至{{ coupon.endAt }}
44 |
45 |
46 |
47 |
48 |
49 |
50 |
51 |
52 |
53 |
54 |
55 |
56 |
129 |
130 |
302 |
--------------------------------------------------------------------------------
/pages/integrals/detail.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 | 积分
12 |
13 | +
14 |
15 |
16 | 元
17 |
18 |
19 |
20 |
23 |
24 | 剩余{{ pointGood.goods_stock }}件
25 |
26 |
27 |
28 |
29 |
30 | 商品详情
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 | {{ pointGood.goods_name }}
42 | 有效期:领券当日开始90天内有效
43 |
44 |
45 |
46 |
47 |
48 | {{ pointGood.points_price }}
49 | 积分
50 |
51 |
52 | 剩余{{ pointGood.goods_stock }}件
53 |
54 |
55 |
56 | 兑换须知
57 |
58 |
59 |
60 | 使用须知
61 |
62 | {{ item.title }}:
63 | {{ item.value }}
64 |
65 |
66 |
67 |
68 |
69 |
72 |
73 |
74 |
75 |
76 |
77 |
109 |
110 |
201 |
--------------------------------------------------------------------------------
/pages/integrals/flow.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | {{ pointNum }}
5 | 查看积分规则
6 |
7 |
8 |
9 |
10 |
11 | {{ item.reason }}
12 | {{ item.createdAt }}
13 |
14 |
15 |
16 | {{ item.changeType == 1 ? '+' : '-' }}{{ item.changeNum }}
17 |
18 | {{ item.sellerName }}
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
47 |
48 |
73 |
--------------------------------------------------------------------------------
/pages/integrals/integrals.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
20 |
21 |
22 | 连续签到赚积分
23 |
24 |
25 |
26 | 查看签到日历
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 | {{ items.name }}
37 |
38 |
39 |
40 |
41 |
42 |
43 |
44 | {{ item.title }}
45 |
46 |
47 | {{ item.price }}
48 | 积分
49 |
50 | +
51 |
52 | {{ parseFloat(item.price) }}
53 | 元
54 |
55 |
56 | 剩余{{ item.stock }}件
57 |
58 |
59 |
60 |
61 |
62 |
63 |
64 |
65 |
66 |
67 |
145 |
146 |
229 |
--------------------------------------------------------------------------------
/pages/login/login.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | 一杯好茶,一口软欧包
7 |
8 | 在奈雪遇见两种美好
9 |
10 |
11 |
12 |
13 |
16 |
17 |
18 |
22 |
23 |
24 | 新用户登录即加入会员,享会员权益
25 |
26 |
27 |
28 | 入会有礼
29 |
30 |
31 |
32 | 积分兑换
33 |
34 |
35 |
36 | 升级特权
37 |
38 |
39 |
40 | 生日特权
41 |
42 |
43 |
44 | 奈雪宝藏
45 |
46 |
47 | 会员权益说明
48 |
49 |
50 |
51 |
52 |
53 |
106 |
107 |
163 |
--------------------------------------------------------------------------------
/pages/mine/member-code.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 | {{ member.memberLevelName }}
10 |
11 |
12 |
13 |
14 |
15 | {{ member.nickname }}
16 |
17 |
18 |
19 | {{ couponList.length }}
20 | 奈雪券
21 |
22 |
23 | {{ member.integration }}
24 | 积分
25 |
26 |
27 | {{ member.blance }}
28 | 余额
29 |
30 |
31 | {{ member.integration }}
32 | 礼品卡
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 | 支付前出示可累计积分,会员码每30秒更新
41 |
42 |
43 |
44 |
48 |
49 |
50 |
51 |
52 |
53 |
54 |
55 |
56 |
57 |
134 |
135 |
226 |
--------------------------------------------------------------------------------
/pages/mine/userinfo.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | 昵称
7 |
8 |
10 |
11 |
12 |
13 |
14 |
15 | 手机号码
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 | 性别
24 |
25 |
26 | 先生
27 | 女士
28 |
29 |
30 |
31 |
32 |
33 |
34 | 生日
35 |
36 |
37 | 生日当天有惊喜
38 |
39 |
40 |
41 |
42 |
43 |
44 |
45 | 入会时间
46 |
47 |
48 |
49 |
50 |
51 |
52 |
53 |
54 |
55 |
56 |
57 |
58 |
108 |
109 |
162 |
--------------------------------------------------------------------------------
/pages/orders/detail.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 | {{ order.store.name }}
11 |
12 |
13 | {{ order.store.address }}
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 | {{ good.name }}
29 | {{ good.property }}
30 |
31 |
32 | x{{ good.number }}
33 | ¥{{ good.price }}
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
44 |
45 | 支付方式
46 | {{ order.pay_mode }}
47 |
48 |
49 | 金额总计
50 | ¥{{ order.amount }}
51 |
52 |
53 |
54 |
55 |
56 |
57 |
58 |
59 |
60 |
61 | 下单时间
62 | {{ $util.formatDateTime(order.created_at) }}
63 |
64 |
65 | 下单门店
66 | {{ order.store.name }}
67 |
68 |
69 | 支付方式
70 | {{ order.pay_mode }}
71 |
72 |
73 | 订单号
74 | {{ order.order_no }}
75 |
76 |
77 |
78 |
79 |
80 |
81 |
82 |
83 |
84 | 取单号
85 | {{ order.sort_num }}
86 |
87 |
88 | 享用方式
89 | 自取
90 |
91 |
92 | 取餐时间
93 | 立即取餐
94 |
95 |
96 | 完成制作时间
97 | {{ order.productioned_time }}
98 |
99 |
100 | 备注
101 | {{ order.postscript }}
102 |
103 |
104 |
105 |
106 |
107 |
108 |
109 |
110 | 去开发票
111 |
112 |
113 |
114 |
115 |
116 |
117 |
118 |
119 |
120 |
121 |
122 |
123 |
149 |
150 |
238 |
--------------------------------------------------------------------------------
/pages/orders/orders.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 | {{ item.storeName }}
10 |
11 | 订单编号:{{ item.id }}
12 |
13 |
14 | {{ item.statusName }}
15 |
16 |
17 |
18 |
19 |
20 |
21 | {{ orderGoodsName(item.orderItemList) }}
22 |
23 |
24 |
25 | {{ $util.formatDateTime(item.createTime) }}
26 |
27 |
28 | 共{{ item.orderItemList.length }}件商品,实付
29 | ¥{{ item.payAmount }}
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
44 |
45 |
46 |
139 |
140 |
143 |
--------------------------------------------------------------------------------
/pages/packages/detail.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | {{ package.title }}
7 | 购买记录
8 |
9 |
10 | 共{{couponNum}}张优惠券
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 | x{{ coupon.coupon_num }}
19 |
22 | {{ coupon.detail.expire }}
23 |
24 |
25 |
26 |
27 | 使用时段:{{ coupon.detail && coupon.detail.coupon_use_time[0].use_time_start}}-{{coupon.detail && coupon.detail.coupon_use_time[0].use_time_end}}
28 |
29 |
30 | 查看详情
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 | 售卖时间:{{ package.start_at.split(' ')[0] }}~{{ package.end_at.split(' ')[0] }}
39 |
40 |
41 | 购买限制:无限制
42 |
43 |
44 | {{ package.content }}
45 |
46 |
47 |
48 |
52 |
53 |
54 |
55 |
58 |
59 | {{ coupon.detail.expire }}
60 |
61 |
62 | {{ coupon.detail.desc }}
63 |
64 |
65 |
66 |
67 |
68 |
69 |
109 |
110 |
138 |
--------------------------------------------------------------------------------
/pages/packages/index.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
7 |
8 |
9 | {{ item.title }}
10 |
11 | ¥{{ item.amount }}
12 |
13 |
14 |
15 |
16 |
17 |
19 | 购买记录
20 |
21 |
22 |
23 |
24 |
25 |
58 |
59 |
74 |
--------------------------------------------------------------------------------
/pages/remark/remark.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
8 |
9 | {{ remarkLength }}/50
10 |
11 |
12 |
13 | 快捷输入
14 |
15 |
16 |
17 | {{ item }}
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
59 |
60 |
103 |
--------------------------------------------------------------------------------
/pages/review/rate-form-item/index.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
9 |
10 |
11 | {{ tips }}
12 |
13 |
14 |
15 |
16 |
48 |
49 |
60 |
--------------------------------------------------------------------------------
/pages/review/review.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | {{ storename }}
7 | {{ date }}
8 | {{ typeCate == 1 ? '堂食' : '外卖' }}
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
22 | {{ form.opinion.length }}/500
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
82 |
83 |
126 |
--------------------------------------------------------------------------------
/readme.md:
--------------------------------------------------------------------------------
1 | ### 简介
2 |
3 | 项目qq群 123153551 725021772
4 | 一套仿奈雪の茶小程序的项目模板。
5 |
6 | ### 说明
7 |
8 | 1. 本项目包含:
9 |
10 | - 首页
11 | - 点餐(自取和外卖两种方式,有基本的点餐逻辑处理)
12 | - 取餐
13 | - 我的
14 | - 积分商城
15 | - 积分商城详情页
16 | - 积分签到
17 | - 会员码
18 | - 我的卡券
19 | - 收货地址
20 | - 我的资料
21 | - 我的订单
22 | - 订单详情
23 | - 余额
24 | - 会员卷包
25 | - 卷包详情
26 | - 订单评价
27 |
28 | 2. 所有数据都是 common/api.js
29 |
30 | 后端管理和接口项目 https://gitee.com/zscat/mallplus
31 | ### 个人说明
32 | ###
33 | 接触uniapp不到一个月,觉得uniapp挺不错的,便想着通过仿(shan)照(zhai)别人的小程序来学习uniapp,于是就有了这个项目。
34 |
35 | ### 展示效果
36 | 
37 | 
38 | 
39 | 
40 | 
41 |
42 | 1. 下载编辑器HBuilderX.
43 | 1. 下载微信开发者工具.
44 | 1. 点击HBuilderX顶部菜单->文件->导入->从git导入.
45 | 1. 鼠标点击App.vue获取焦点,无需打开文件.
46 | 1. 点击HBuilderX编辑器顶部菜单->运行->运行到小程序模拟器.
47 | 1. 如果启动不了微信开发者工具,请手动启动微信开发者工具,手动添加项目(项目路径为unpackage/dev/mp-weixin)
48 | 1. 打 包: 7.1 打包app:点击HBuilderX顶部导航->发行->原生APP云打包. 7.2 打包微信小程序:把项目路径unpackage/dev/mp-weixin文件夹拷贝出来即可。
49 |
50 |
51 | 另外的配置修改
52 |
53 | 
54 |
55 | 
56 |
57 | 多商户版本需要去总后台 微信小程序appId等信息 和3种支付信息配置
58 | 
59 |
60 | 
--------------------------------------------------------------------------------
/static/iconfont/iconfont.scss:
--------------------------------------------------------------------------------
1 | @font-face {
2 | font-family: "iconfont";
3 | src: url('//at.alicdn.com/t/font_1789197_z1gzlwq7idq.ttf?t=1589441233693') format('truetype');
4 | }
5 |
6 | .iconfont {
7 | font-family: "iconfont" !important;
8 | font-size: 16px;
9 | font-style: normal;
10 | -webkit-font-smoothing: antialiased;
11 | -moz-osx-font-smoothing: grayscale;
12 | }
13 |
14 | .iconshoucang:before {
15 | content: "\e667";
16 | }
17 |
18 | .iconshoucangfill:before {
19 | content: "\e6c9";
20 | }
21 |
22 | .iconjifen:before {
23 | content: "\e642";
24 | }
25 |
26 | .iconradio-button-off:before {
27 | content: "\e688";
28 | }
29 |
30 | .iconradio-button-on:before {
31 | content: "\e689";
32 | }
33 |
34 | .iconhelp:before {
35 | content: "\e752";
36 | }
37 |
38 | .iconwxpay:before {
39 | content: "\e611";
40 | }
41 |
42 | .iconbalance:before {
43 | content: "\e619";
44 | }
45 |
46 | .iconadd-select:before {
47 | content: "\e7b0";
48 | }
49 |
50 | .iconsami-select:before {
51 | content: "\e7b1";
52 | }
53 |
54 | .iconmap:before {
55 | content: "\e758";
56 | }
57 |
58 | .iconsuccess:before {
59 | content: "\e767";
60 | }
61 |
62 | .iconsuccess-fill:before {
63 | content: "\e78d";
64 | }
65 |
66 | .iconiconset0136:before {
67 | content: "\e623";
68 | }
69 |
70 | .iconzan:before {
71 | content: "\e640";
72 | }
73 |
74 | .iconjifenqiandao:before {
75 | content: "\e6a6";
76 | }
77 |
78 | .iconshouyeshouye:before {
79 | content: "\e606";
80 | }
81 |
82 | .icondaohang:before {
83 | content: "\e641";
84 | }
85 |
86 | .iconwodelianxikefu:before {
87 | content: "\e671";
88 | }
89 |
90 | .iconwodexinyuan:before {
91 | content: "\e675";
92 | }
93 |
94 | .iconphone:before {
95 | content: "\e6dd";
96 | }
97 |
98 | .icondingdan:before {
99 | content: "\e645";
100 | }
101 |
102 | .iconliwu:before {
103 | content: "\e61c";
104 | }
105 |
106 | .iconyinpinyinliao:before {
107 | content: "\e60d";
108 | }
109 |
110 | .iconyinpin:before {
111 | content: "\e70b";
112 | }
113 |
114 | .iconwaimaixinxi:before {
115 | content: "\e685";
116 | }
117 |
118 | .iconico:before {
119 | content: "\e646";
120 | }
121 |
122 | .iconwode:before {
123 | content: "\e616";
124 | }
125 |
126 | .icongengduofuwu:before {
127 | content: "\e607";
128 | }
129 |
130 | .iconqucan:before {
131 | content: "\e625";
132 | }
133 |
134 | .iconyou:before {
135 | content: "\e618";
136 | }
137 |
138 | .iconshouhuodizhi:before {
139 | content: "\e666";
140 | }
141 |
142 | .iconshangcheng:before {
143 | content: "\e63b";
144 | }
145 |
146 | .iconadd:before {
147 | content: "\e742";
148 | }
149 |
150 | .iconarrow-right:before {
151 | content: "\e743";
152 | }
153 |
154 | .iconarrow-lift:before {
155 | content: "\e744";
156 | }
157 |
158 | .iconarrow-up:before {
159 | content: "\e745";
160 | }
161 |
162 | .iconclose:before {
163 | content: "\e747";
164 | }
165 |
166 | .iconleftbutton:before {
167 | content: "\e755";
168 | }
169 |
170 | .iconreduce:before {
171 | content: "\e75e";
172 | }
173 |
174 | .iconseleted:before {
175 | content: "\e763";
176 | }
177 |
178 | .iconRightbutton:before {
179 | content: "\e765";
180 | }
181 |
182 | .iconleftbutton-fill:before {
183 | content: "\e782";
184 | }
185 |
186 | .iconRightbutton-fill:before {
187 | content: "\e78a";
188 | }
189 |
190 | .iconarrow-down:before {
191 | content: "\e7b2";
192 | }
193 |
194 | .iconaixin1:before {
195 | content: "\e63c";
196 | }
--------------------------------------------------------------------------------
/static/images/attendance/9c8e57f5287b4362.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/shop-develop/mallplus-milktea/960130c0823a5c10d79dc9ef94f3d9cbb1154fc0/static/images/attendance/9c8e57f5287b4362.png
--------------------------------------------------------------------------------
/static/images/attendance/bg.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/shop-develop/mallplus-milktea/960130c0823a5c10d79dc9ef94f3d9cbb1154fc0/static/images/attendance/bg.png
--------------------------------------------------------------------------------
/static/images/attendance/cup.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/shop-develop/mallplus-milktea/960130c0823a5c10d79dc9ef94f3d9cbb1154fc0/static/images/attendance/cup.png
--------------------------------------------------------------------------------
/static/images/attendance/gift.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/shop-develop/mallplus-milktea/960130c0823a5c10d79dc9ef94f3d9cbb1154fc0/static/images/attendance/gift.png
--------------------------------------------------------------------------------
/static/images/back.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/shop-develop/mallplus-milktea/960130c0823a5c10d79dc9ef94f3d9cbb1154fc0/static/images/back.png
--------------------------------------------------------------------------------
/static/images/balance.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/shop-develop/mallplus-milktea/960130c0823a5c10d79dc9ef94f3d9cbb1154fc0/static/images/balance.png
--------------------------------------------------------------------------------
/static/images/close.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/shop-develop/mallplus-milktea/960130c0823a5c10d79dc9ef94f3d9cbb1154fc0/static/images/close.png
--------------------------------------------------------------------------------
/static/images/customer-level/1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/shop-develop/mallplus-milktea/960130c0823a5c10d79dc9ef94f3d9cbb1154fc0/static/images/customer-level/1.png
--------------------------------------------------------------------------------
/static/images/customer-level/10.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/shop-develop/mallplus-milktea/960130c0823a5c10d79dc9ef94f3d9cbb1154fc0/static/images/customer-level/10.png
--------------------------------------------------------------------------------
/static/images/customer-level/11.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/shop-develop/mallplus-milktea/960130c0823a5c10d79dc9ef94f3d9cbb1154fc0/static/images/customer-level/11.png
--------------------------------------------------------------------------------
/static/images/customer-level/2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/shop-develop/mallplus-milktea/960130c0823a5c10d79dc9ef94f3d9cbb1154fc0/static/images/customer-level/2.png
--------------------------------------------------------------------------------
/static/images/customer-level/3.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/shop-develop/mallplus-milktea/960130c0823a5c10d79dc9ef94f3d9cbb1154fc0/static/images/customer-level/3.png
--------------------------------------------------------------------------------
/static/images/customer-level/4.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/shop-develop/mallplus-milktea/960130c0823a5c10d79dc9ef94f3d9cbb1154fc0/static/images/customer-level/4.png
--------------------------------------------------------------------------------
/static/images/customer-level/5.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/shop-develop/mallplus-milktea/960130c0823a5c10d79dc9ef94f3d9cbb1154fc0/static/images/customer-level/5.png
--------------------------------------------------------------------------------
/static/images/customer-level/8.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/shop-develop/mallplus-milktea/960130c0823a5c10d79dc9ef94f3d9cbb1154fc0/static/images/customer-level/8.png
--------------------------------------------------------------------------------
/static/images/customer-level/9.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/shop-develop/mallplus-milktea/960130c0823a5c10d79dc9ef94f3d9cbb1154fc0/static/images/customer-level/9.png
--------------------------------------------------------------------------------
/static/images/edit.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/shop-develop/mallplus-milktea/960130c0823a5c10d79dc9ef94f3d9cbb1154fc0/static/images/edit.png
--------------------------------------------------------------------------------
/static/images/empty.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/shop-develop/mallplus-milktea/960130c0823a5c10d79dc9ef94f3d9cbb1154fc0/static/images/empty.png
--------------------------------------------------------------------------------
/static/images/index/arrow-right.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/shop-develop/mallplus-milktea/960130c0823a5c10d79dc9ef94f3d9cbb1154fc0/static/images/index/arrow-right.png
--------------------------------------------------------------------------------
/static/images/index/csc.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/shop-develop/mallplus-milktea/960130c0823a5c10d79dc9ef94f3d9cbb1154fc0/static/images/index/csc.png
--------------------------------------------------------------------------------
/static/images/index/hyjb.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/shop-develop/mallplus-milktea/960130c0823a5c10d79dc9ef94f3d9cbb1154fc0/static/images/index/hyjb.png
--------------------------------------------------------------------------------
/static/images/index/hyjb_bg.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/shop-develop/mallplus-milktea/960130c0823a5c10d79dc9ef94f3d9cbb1154fc0/static/images/index/hyjb_bg.png
--------------------------------------------------------------------------------
/static/images/index/mcsb.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/shop-develop/mallplus-milktea/960130c0823a5c10d79dc9ef94f3d9cbb1154fc0/static/images/index/mcsb.png
--------------------------------------------------------------------------------
/static/images/index/mcsb_bg.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/shop-develop/mallplus-milktea/960130c0823a5c10d79dc9ef94f3d9cbb1154fc0/static/images/index/mcsb_bg.png
--------------------------------------------------------------------------------
/static/images/index/qrcode.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/shop-develop/mallplus-milktea/960130c0823a5c10d79dc9ef94f3d9cbb1154fc0/static/images/index/qrcode.png
--------------------------------------------------------------------------------
/static/images/index/wm.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/shop-develop/mallplus-milktea/960130c0823a5c10d79dc9ef94f3d9cbb1154fc0/static/images/index/wm.png
--------------------------------------------------------------------------------
/static/images/index/yzclh.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/shop-develop/mallplus-milktea/960130c0823a5c10d79dc9ef94f3d9cbb1154fc0/static/images/index/yzclh.png
--------------------------------------------------------------------------------
/static/images/index/zq.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/shop-develop/mallplus-milktea/960130c0823a5c10d79dc9ef94f3d9cbb1154fc0/static/images/index/zq.png
--------------------------------------------------------------------------------
/static/images/integrals/arrow-left.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/shop-develop/mallplus-milktea/960130c0823a5c10d79dc9ef94f3d9cbb1154fc0/static/images/integrals/arrow-left.png
--------------------------------------------------------------------------------
/static/images/integrals/banner.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/shop-develop/mallplus-milktea/960130c0823a5c10d79dc9ef94f3d9cbb1154fc0/static/images/integrals/banner.png
--------------------------------------------------------------------------------
/static/images/integrals/bg.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/shop-develop/mallplus-milktea/960130c0823a5c10d79dc9ef94f3d9cbb1154fc0/static/images/integrals/bg.png
--------------------------------------------------------------------------------
/static/images/integrals/goal.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/shop-develop/mallplus-milktea/960130c0823a5c10d79dc9ef94f3d9cbb1154fc0/static/images/integrals/goal.png
--------------------------------------------------------------------------------
/static/images/integrals/integral.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/shop-develop/mallplus-milktea/960130c0823a5c10d79dc9ef94f3d9cbb1154fc0/static/images/integrals/integral.png
--------------------------------------------------------------------------------
/static/images/integrals/ticket.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/shop-develop/mallplus-milktea/960130c0823a5c10d79dc9ef94f3d9cbb1154fc0/static/images/integrals/ticket.png
--------------------------------------------------------------------------------
/static/images/loading.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/shop-develop/mallplus-milktea/960130c0823a5c10d79dc9ef94f3d9cbb1154fc0/static/images/loading.gif
--------------------------------------------------------------------------------
/static/images/loading2.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/shop-develop/mallplus-milktea/960130c0823a5c10d79dc9ef94f3d9cbb1154fc0/static/images/loading2.gif
--------------------------------------------------------------------------------
/static/images/logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/shop-develop/mallplus-milktea/960130c0823a5c10d79dc9ef94f3d9cbb1154fc0/static/images/logo.png
--------------------------------------------------------------------------------
/static/images/menu/cart.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/shop-develop/mallplus-milktea/960130c0823a5c10d79dc9ef94f3d9cbb1154fc0/static/images/menu/cart.png
--------------------------------------------------------------------------------
/static/images/menu/close.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/shop-develop/mallplus-milktea/960130c0823a5c10d79dc9ef94f3d9cbb1154fc0/static/images/menu/close.png
--------------------------------------------------------------------------------
/static/images/menu/common-use.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/shop-develop/mallplus-milktea/960130c0823a5c10d79dc9ef94f3d9cbb1154fc0/static/images/menu/common-use.png
--------------------------------------------------------------------------------
/static/images/menu/share-good.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/shop-develop/mallplus-milktea/960130c0823a5c10d79dc9ef94f3d9cbb1154fc0/static/images/menu/share-good.png
--------------------------------------------------------------------------------
/static/images/mine/arrow-right.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/shop-develop/mallplus-milktea/960130c0823a5c10d79dc9ef94f3d9cbb1154fc0/static/images/mine/arrow-right.png
--------------------------------------------------------------------------------
/static/images/mine/banner.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/shop-develop/mallplus-milktea/960130c0823a5c10d79dc9ef94f3d9cbb1154fc0/static/images/mine/banner.png
--------------------------------------------------------------------------------
/static/images/mine/default.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/shop-develop/mallplus-milktea/960130c0823a5c10d79dc9ef94f3d9cbb1154fc0/static/images/mine/default.png
--------------------------------------------------------------------------------
/static/images/mine/gdfw.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/shop-develop/mallplus-milktea/960130c0823a5c10d79dc9ef94f3d9cbb1154fc0/static/images/mine/gdfw.png
--------------------------------------------------------------------------------
/static/images/mine/hym.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/shop-develop/mallplus-milktea/960130c0823a5c10d79dc9ef94f3d9cbb1154fc0/static/images/mine/hym.png
--------------------------------------------------------------------------------
/static/images/mine/jfdh.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/shop-develop/mallplus-milktea/960130c0823a5c10d79dc9ef94f3d9cbb1154fc0/static/images/mine/jfdh.png
--------------------------------------------------------------------------------
/static/images/mine/jfqd.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/shop-develop/mallplus-milktea/960130c0823a5c10d79dc9ef94f3d9cbb1154fc0/static/images/mine/jfqd.png
--------------------------------------------------------------------------------
/static/images/mine/level.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/shop-develop/mallplus-milktea/960130c0823a5c10d79dc9ef94f3d9cbb1154fc0/static/images/mine/level.png
--------------------------------------------------------------------------------
/static/images/mine/lxkf.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/shop-develop/mallplus-milktea/960130c0823a5c10d79dc9ef94f3d9cbb1154fc0/static/images/mine/lxkf.png
--------------------------------------------------------------------------------
/static/images/mine/nxbz.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/shop-develop/mallplus-milktea/960130c0823a5c10d79dc9ef94f3d9cbb1154fc0/static/images/mine/nxbz.png
--------------------------------------------------------------------------------
/static/images/mine/nxlw.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/shop-develop/mallplus-milktea/960130c0823a5c10d79dc9ef94f3d9cbb1154fc0/static/images/mine/nxlw.png
--------------------------------------------------------------------------------
/static/images/mine/nxsc.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/shop-develop/mallplus-milktea/960130c0823a5c10d79dc9ef94f3d9cbb1154fc0/static/images/mine/nxsc.png
--------------------------------------------------------------------------------
/static/images/mine/rhyl.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/shop-develop/mallplus-milktea/960130c0823a5c10d79dc9ef94f3d9cbb1154fc0/static/images/mine/rhyl.png
--------------------------------------------------------------------------------
/static/images/mine/shdz.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/shop-develop/mallplus-milktea/960130c0823a5c10d79dc9ef94f3d9cbb1154fc0/static/images/mine/shdz.png
--------------------------------------------------------------------------------
/static/images/mine/sjtq.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/shop-develop/mallplus-milktea/960130c0823a5c10d79dc9ef94f3d9cbb1154fc0/static/images/mine/sjtq.png
--------------------------------------------------------------------------------
/static/images/mine/srtq.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/shop-develop/mallplus-milktea/960130c0823a5c10d79dc9ef94f3d9cbb1154fc0/static/images/mine/srtq.png
--------------------------------------------------------------------------------
/static/images/mine/stxy.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/shop-develop/mallplus-milktea/960130c0823a5c10d79dc9ef94f3d9cbb1154fc0/static/images/mine/stxy.png
--------------------------------------------------------------------------------
/static/images/mine/wddd.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/shop-develop/mallplus-milktea/960130c0823a5c10d79dc9ef94f3d9cbb1154fc0/static/images/mine/wddd.png
--------------------------------------------------------------------------------
/static/images/mine/wdzl.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/shop-develop/mallplus-milktea/960130c0823a5c10d79dc9ef94f3d9cbb1154fc0/static/images/mine/wdzl.png
--------------------------------------------------------------------------------
/static/images/mine/wechat.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/shop-develop/mallplus-milktea/960130c0823a5c10d79dc9ef94f3d9cbb1154fc0/static/images/mine/wechat.png
--------------------------------------------------------------------------------
/static/images/navigator-1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/shop-develop/mallplus-milktea/960130c0823a5c10d79dc9ef94f3d9cbb1154fc0/static/images/navigator-1.png
--------------------------------------------------------------------------------
/static/images/navigator.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/shop-develop/mallplus-milktea/960130c0823a5c10d79dc9ef94f3d9cbb1154fc0/static/images/navigator.png
--------------------------------------------------------------------------------
/static/images/order/0edf1df4a0a61f3361.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/shop-develop/mallplus-milktea/960130c0823a5c10d79dc9ef94f3d9cbb1154fc0/static/images/order/0edf1df4a0a61f3361.png
--------------------------------------------------------------------------------
/static/images/order/3b28b05baffebf512f.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/shop-develop/mallplus-milktea/960130c0823a5c10d79dc9ef94f3d9cbb1154fc0/static/images/order/3b28b05baffebf512f.png
--------------------------------------------------------------------------------
/static/images/order/bottom.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/shop-develop/mallplus-milktea/960130c0823a5c10d79dc9ef94f3d9cbb1154fc0/static/images/order/bottom.png
--------------------------------------------------------------------------------
/static/images/order/delivered.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/shop-develop/mallplus-milktea/960130c0823a5c10d79dc9ef94f3d9cbb1154fc0/static/images/order/delivered.png
--------------------------------------------------------------------------------
/static/images/order/delivered_selected.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/shop-develop/mallplus-milktea/960130c0823a5c10d79dc9ef94f3d9cbb1154fc0/static/images/order/delivered_selected.png
--------------------------------------------------------------------------------
/static/images/order/delivery.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/shop-develop/mallplus-milktea/960130c0823a5c10d79dc9ef94f3d9cbb1154fc0/static/images/order/delivery.png
--------------------------------------------------------------------------------
/static/images/order/delivery_selected.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/shop-develop/mallplus-milktea/960130c0823a5c10d79dc9ef94f3d9cbb1154fc0/static/images/order/delivery_selected.png
--------------------------------------------------------------------------------
/static/images/order/ec82f8f760b8e2fa.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/shop-develop/mallplus-milktea/960130c0823a5c10d79dc9ef94f3d9cbb1154fc0/static/images/order/ec82f8f760b8e2fa.png
--------------------------------------------------------------------------------
/static/images/order/location.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/shop-develop/mallplus-milktea/960130c0823a5c10d79dc9ef94f3d9cbb1154fc0/static/images/order/location.png
--------------------------------------------------------------------------------
/static/images/order/mobile.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/shop-develop/mallplus-milktea/960130c0823a5c10d79dc9ef94f3d9cbb1154fc0/static/images/order/mobile.png
--------------------------------------------------------------------------------
/static/images/order/navigation.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/shop-develop/mallplus-milktea/960130c0823a5c10d79dc9ef94f3d9cbb1154fc0/static/images/order/navigation.png
--------------------------------------------------------------------------------
/static/images/order/ordered.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/shop-develop/mallplus-milktea/960130c0823a5c10d79dc9ef94f3d9cbb1154fc0/static/images/order/ordered.png
--------------------------------------------------------------------------------
/static/images/order/ordered_selected.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/shop-develop/mallplus-milktea/960130c0823a5c10d79dc9ef94f3d9cbb1154fc0/static/images/order/ordered_selected.png
--------------------------------------------------------------------------------
/static/images/order/production.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/shop-develop/mallplus-milktea/960130c0823a5c10d79dc9ef94f3d9cbb1154fc0/static/images/order/production.png
--------------------------------------------------------------------------------
/static/images/order/production_selected.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/shop-develop/mallplus-milktea/960130c0823a5c10d79dc9ef94f3d9cbb1154fc0/static/images/order/production_selected.png
--------------------------------------------------------------------------------
/static/images/order/right.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/shop-develop/mallplus-milktea/960130c0823a5c10d79dc9ef94f3d9cbb1154fc0/static/images/order/right.png
--------------------------------------------------------------------------------
/static/images/pay/163e5de32d731e3c.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/shop-develop/mallplus-milktea/960130c0823a5c10d79dc9ef94f3d9cbb1154fc0/static/images/pay/163e5de32d731e3c.png
--------------------------------------------------------------------------------
/static/images/pay/b7d73adba18305af.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/shop-develop/mallplus-milktea/960130c0823a5c10d79dc9ef94f3d9cbb1154fc0/static/images/pay/b7d73adba18305af.png
--------------------------------------------------------------------------------
/static/images/pay/close.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/shop-develop/mallplus-milktea/960130c0823a5c10d79dc9ef94f3d9cbb1154fc0/static/images/pay/close.png
--------------------------------------------------------------------------------
/static/images/services/bzzx.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/shop-develop/mallplus-milktea/960130c0823a5c10d79dc9ef94f3d9cbb1154fc0/static/images/services/bzzx.png
--------------------------------------------------------------------------------
/static/images/services/cjwt.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/shop-develop/mallplus-milktea/960130c0823a5c10d79dc9ef94f3d9cbb1154fc0/static/images/services/cjwt.png
--------------------------------------------------------------------------------
/static/images/services/djsm.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/shop-develop/mallplus-milktea/960130c0823a5c10d79dc9ef94f3d9cbb1154fc0/static/images/services/djsm.png
--------------------------------------------------------------------------------
/static/images/services/gynx.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/shop-develop/mallplus-milktea/960130c0823a5c10d79dc9ef94f3d9cbb1154fc0/static/images/services/gynx.png
--------------------------------------------------------------------------------
/static/images/services/hyxy.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/shop-develop/mallplus-milktea/960130c0823a5c10d79dc9ef94f3d9cbb1154fc0/static/images/services/hyxy.png
--------------------------------------------------------------------------------
/static/images/services/wdzl.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/shop-develop/mallplus-milktea/960130c0823a5c10d79dc9ef94f3d9cbb1154fc0/static/images/services/wdzl.png
--------------------------------------------------------------------------------
/static/images/services/ystk.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/shop-develop/mallplus-milktea/960130c0823a5c10d79dc9ef94f3d9cbb1154fc0/static/images/services/ystk.png
--------------------------------------------------------------------------------
/static/images/success.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/shop-develop/mallplus-milktea/960130c0823a5c10d79dc9ef94f3d9cbb1154fc0/static/images/success.png
--------------------------------------------------------------------------------
/static/images/tabBar/drink.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/shop-develop/mallplus-milktea/960130c0823a5c10d79dc9ef94f3d9cbb1154fc0/static/images/tabBar/drink.png
--------------------------------------------------------------------------------
/static/images/tabBar/drink_selected.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/shop-develop/mallplus-milktea/960130c0823a5c10d79dc9ef94f3d9cbb1154fc0/static/images/tabBar/drink_selected.png
--------------------------------------------------------------------------------
/static/images/tabBar/index.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/shop-develop/mallplus-milktea/960130c0823a5c10d79dc9ef94f3d9cbb1154fc0/static/images/tabBar/index.png
--------------------------------------------------------------------------------
/static/images/tabBar/index_selected.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/shop-develop/mallplus-milktea/960130c0823a5c10d79dc9ef94f3d9cbb1154fc0/static/images/tabBar/index_selected.png
--------------------------------------------------------------------------------
/static/images/tabBar/mine.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/shop-develop/mallplus-milktea/960130c0823a5c10d79dc9ef94f3d9cbb1154fc0/static/images/tabBar/mine.png
--------------------------------------------------------------------------------
/static/images/tabBar/mine_selected.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/shop-develop/mallplus-milktea/960130c0823a5c10d79dc9ef94f3d9cbb1154fc0/static/images/tabBar/mine_selected.png
--------------------------------------------------------------------------------
/static/images/tabBar/take.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/shop-develop/mallplus-milktea/960130c0823a5c10d79dc9ef94f3d9cbb1154fc0/static/images/tabBar/take.png
--------------------------------------------------------------------------------
/static/images/tabBar/take_selected.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/shop-develop/mallplus-milktea/960130c0823a5c10d79dc9ef94f3d9cbb1154fc0/static/images/tabBar/take_selected.png
--------------------------------------------------------------------------------
/static/logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/shop-develop/mallplus-milktea/960130c0823a5c10d79dc9ef94f3d9cbb1154fc0/static/logo.png
--------------------------------------------------------------------------------
/static/style/app.scss:
--------------------------------------------------------------------------------
1 | @import '~@/uni.scss';
2 |
3 | page,
4 | view,
5 | scroll-view,
6 | text,
7 | image,
8 | textarea,
9 | button,
10 | input {
11 | box-sizing: border-box;
12 | }
13 |
14 | page {
15 | background-color: #F1F8FA;
16 | height: 100%;
17 | }
18 |
19 | .container {
20 | width: 100%;
21 | height: 100%;
22 | }
23 |
24 | button {
25 | margin: 0;
26 |
27 | &[type='primary'] {
28 | background-color: $color-primary;
29 | color: #ffffff;
30 | font-size: $font-size-base;
31 |
32 | &[disabled] {
33 | background-color: #D1D78C;
34 | }
35 |
36 | &[plain] {
37 | color: $color-primary;
38 | border: 1rpx solid $color-primary;
39 | }
40 | &.button-hover {
41 | background-color: #d5da91;
42 | }
43 | &::after {
44 | border: 0;
45 | }
46 | }
47 |
48 | &[type='default'] {
49 | &[plain] {
50 | color: $text-color-assist;
51 | border: 1rpx solid $text-color-assist;
52 | }
53 | }
54 | }
55 |
56 | .bg-base {
57 | background-color: $bg-color;
58 | }
59 |
60 | .bg-white {
61 | background-color: #ffffff;
62 | }
63 |
64 | .bg-transparent {
65 | background-color: transparent !important;
66 | }
67 |
68 | .bg-primary {
69 | background-color: $color-primary;
70 | }
71 |
72 | .bg-warning {
73 | background-color: $color-warning;
74 | }
75 |
76 | .d-flex {
77 | display: flex;
78 | }
79 |
80 | .d-none {
81 | display: none !important;
82 | }
83 |
84 | .invisible {
85 | visibility: hidden !important;
86 | }
87 |
88 | .d-inline {
89 | display: inline !important;
90 | }
91 |
92 | .d-inline-block {
93 | display: inline-block !important;
94 | }
95 |
96 | .d-block {
97 | display: block !important;
98 | }
99 |
100 | .flex-column {
101 | -ms-flex-direction: column !important;
102 | flex-direction: column !important;
103 | }
104 |
105 | .justify-content-start {
106 | justify-content: flex-start;
107 | }
108 |
109 | .justify-content-end {
110 | justify-content: flex-end;
111 | }
112 |
113 | .justify-content-between {
114 | justify-content: space-between;
115 | }
116 |
117 | .just-content-center {
118 | justify-content: center;
119 | }
120 |
121 | .justify-content-evenly {
122 | justify-content: space-evenly !important;
123 | }
124 |
125 | .just-content-around {
126 | justify-content: space-around;
127 | }
128 |
129 | .align-items-start {
130 | align-items: flex-start;
131 | }
132 |
133 | .align-items-end {
134 | align-items: flex-end;
135 | }
136 |
137 | .align-items-center {
138 | align-items: center;
139 | }
140 |
141 | .align-items-between {
142 | align-items: space-between;
143 | }
144 |
145 | .align-items-around {
146 | align-items: space-around;
147 | }
148 |
149 | .align-items-stretch {
150 | align-items: stretch;
151 | }
152 |
153 | .align-items-baseline {
154 | -ms-flex-align: baseline !important;
155 | align-items: baseline !important;
156 | }
157 |
158 | .flex-fill {
159 | -ms-flex: 1 1 auto !important;
160 | flex: 1 1 auto !important;
161 | }
162 |
163 | .flex-wrap {
164 | -ms-flex-wrap: wrap !important;
165 | flex-wrap: wrap !important;
166 | }
167 |
168 | .flex-nowrap {
169 | -ms-flex-wrap: nowrap !important;
170 | flex-wrap: nowrap !important;
171 | }
172 |
173 | .flex-shrink-0 {
174 | -ms-flex-negative: 0 !important;
175 | flex-shrink: 0 !important;
176 | }
177 |
178 | .font-size-base {
179 | font-size: 28rpx;
180 | }
181 |
182 | .font-size-sm {
183 | font-size: 24rpx;
184 | }
185 |
186 | .font-size-medium {
187 | font-size: 26rpx;
188 | }
189 |
190 | .font-size-lg {
191 | font-size: 32rpx;
192 | }
193 |
194 | .font-size-extra-lg {
195 | font-size: 40rpx;
196 | }
197 |
198 | .text-color-base {
199 | color: $text-color-base;
200 | }
201 |
202 | .text-color-assist {
203 | color: $text-color-assist;
204 | }
205 |
206 | .text-color-primary {
207 | color: $color-primary;
208 | }
209 |
210 | .text-color-danger {
211 | color: $color-error;
212 | }
213 |
214 | .text-color-white {
215 | color: #ffffff;
216 | }
217 |
218 | .text-color-warning {
219 | color: $color-warning;
220 | }
221 |
222 | .text-truncate {
223 | overflow: hidden;
224 | text-overflow: ellipsis;
225 | white-space: nowrap;
226 | }
227 |
228 | .font-weight-bold {
229 | font-weight: 700 !important;
230 | }
231 |
232 | .font-weight-light {
233 | font-weight: 300 !important;
234 | }
235 |
236 | .font-weight-lighter {
237 | font-weight: lighter !important;
238 | }
239 |
240 | .font-weight-normal {
241 | font-weight: 400 !important;
242 | }
243 |
244 | .overflow-auto {
245 | overflow: auto !important;
246 | }
247 |
248 | .overflow-hidden {
249 | overflow: hidden !important;
250 | }
251 |
252 | .position-relative {
253 | position: relative !important;
254 | }
255 |
256 | .position-absolute {
257 | position: absolute !important;
258 | }
259 |
260 | .position-fixed {
261 | position: fixed !important;
262 | }
263 |
264 | .fixed-top {
265 | position: fixed;
266 | top: 0;
267 | right: 0;
268 | left: 0;
269 | z-index: 1030;
270 | }
271 |
272 | .fixed-bottom {
273 | position: fixed;
274 | right: 0;
275 | bottom: 0;
276 | left: 0;
277 | z-index: 1030;
278 | }
279 |
280 | .line-height-100 {
281 | line-height: 100%;
282 | }
283 |
284 | .line-height-2 {
285 | line-height: 2rem !important;
286 | }
287 |
288 | .line-height-50 {
289 | line-height: 50rem !important;
290 | }
291 |
292 | .w-25 {
293 | width: 25% !important;
294 | }
295 |
296 | .w-50 {
297 | width: 50% !important;
298 | }
299 |
300 | .w-75 {
301 | width: 75% !important;
302 | }
303 |
304 | .w-80 {
305 | width: 80% !important;
306 | }
307 |
308 | .w-100 {
309 | width: 100% !important;
310 | }
311 |
312 | .h-100 {
313 | height: 100% !important;
314 | }
315 |
316 | .text-left {
317 | text-align: left !important;
318 | }
319 |
320 | .text-right {
321 | text-align: right !important;
322 | }
323 |
324 | .text-center {
325 | text-align: center !important;
326 | }
327 |
328 | .border-box {
329 | box-sizing: border-box;
330 | }
331 |
332 | .rounded-circle {
333 | border-radius: 50% !important;
334 | }
335 |
336 | .rounded-pill {
337 | border-radius: 50rem !important;
338 | }
339 |
340 | .pre-line {
341 | white-space: pre-line;
342 | }
343 |
344 | .align-top {
345 | vertical-align: top !important;
346 | }
347 |
348 | .align-middle {
349 | vertical-align: middle !important;
350 | }
351 |
352 | .align-bottom {
353 | vertical-align: bottom !important;
354 | }
355 |
356 | .align-text-bottom {
357 | vertical-align: text-bottom !important;
358 | }
359 |
360 | .align-text-top {
361 | vertical-align: text-top !important;
362 | }
363 |
364 | .w-60 {
365 | width: 60%;
366 | }
367 |
368 | .w-40 {
369 | width: 40%;
370 | }
371 |
372 | .mb-10 {
373 | margin-bottom: 10rpx;
374 | }
375 |
376 | .mb-20 {
377 | margin-bottom: 20rpx;
378 | }
379 |
380 | .mb-30 {
381 | margin-bottom: 30rpx;
382 | }
383 |
384 | .mb-40 {
385 | margin-bottom: 40rpx;
386 | }
387 |
388 | .mb-50 {
389 | margin-bottom: 50rpx;
390 | }
391 |
392 | .mt-30 {
393 | margin-top: 30rpx;
394 | }
395 |
396 | .ml-10 {
397 | margin-left: 10rpx;
398 | }
399 |
400 | .ml-20 {
401 | margin-left: 20rpx;
402 | }
403 |
404 | .ml-30 {
405 | margin-left: 30rpx;
406 | }
407 |
408 | .mr-10 {
409 | margin-right: 10rpx;
410 | }
411 |
412 | .mr-20 {
413 | margin-right: 20rpx;
414 | }
415 |
416 | .mr-30 {
417 | margin-right: 30rpx;
418 | }
419 |
420 | .mr-40 {
421 | margin-right: 40rpx;
422 | }
423 |
424 | .pl-30 {
425 | padding-left: 30rpx;
426 | }
--------------------------------------------------------------------------------
/store/index.js:
--------------------------------------------------------------------------------
1 | import Vue from 'vue'
2 | import Vuex from 'vuex'
3 | import api from '@/api'
4 | import addresses from '@/api/addresses'
5 |
6 | Vue.use(Vuex)
7 |
8 | const store = new Vuex.Store({
9 | state: {
10 | store: {},
11 | cart: [],
12 | orderType: 'takein',
13 | address: {},
14 | addresses: addresses,
15 | member: {},
16 | order: {}
17 | },
18 | getters: {
19 |
20 | isLogin: state => uni.getStorageSync('token') || '' //是否登录
21 | },
22 | mutations: {
23 | SET_ORDER_TYPE(state, type) {
24 | state.orderType = type
25 | },
26 | SET_MEMBER(state, member) {
27 | state.member = member
28 | },
29 | SET_ADDRESS(state, address) {
30 | state.address = address
31 | },
32 | SET_STORE(state, store) {
33 | state.store = store
34 | },
35 | SET_CART(state, cart) {
36 | state.cart = cart
37 | },
38 | REMOVE_CART(state) {
39 | state.cart = []
40 | },
41 | SET_ORDER(state, order) {
42 | state.order = order
43 | }
44 | },
45 | actions: {
46 | async getStore({commit}) {
47 | const store = await api('store')
48 | commit('SET_STORE', store)
49 | }
50 | }
51 | })
52 |
53 | export default store
--------------------------------------------------------------------------------
/uni.scss:
--------------------------------------------------------------------------------
1 | /**
2 | * 这里是uni-app内置的常用样式变量
3 | *
4 | * uni-app 官方扩展插件及插件市场(https://ext.dcloud.net.cn)上很多三方插件均使用了这些样式变量
5 | * 如果你是插件开发者,建议你使用scss预处理,并在插件代码中直接使用这些变量(无需 import 这个文件),方便用户通过搭积木的方式开发整体风格一致的App
6 | *
7 | */
8 |
9 | /**
10 | * 如果你是App开发者(插件使用者),你可以通过修改这些变量来定制自己的插件主题,实现自定义主题功能
11 | *
12 | * 如果你的项目同样使用了scss预处理,你也可以直接在你的 scss 代码中使用如下变量,同时无需 import 这个文件
13 | */
14 |
15 | /* 颜色变量 */
16 | /* 行为相关颜色 */
17 | $color-primary: #ADB838;
18 | $color-success: #4cd964;
19 | $color-warning: #FAB714;
20 | $color-error: #D12E32;
21 |
22 | /* 文字基本颜色 */
23 | $text-color-base: #5A5B5C; //基本色
24 | $text-color-assist: #919293; //辅助色
25 | $text-color-black: #3B3C3E; //黑
26 | $text-color-grey: #878889; //灰
27 | $text-color-white: #ffffff; //白
28 |
29 | /* 背景颜色 */
30 | $bg-color: #F1F8FA;
31 | $bg-color-grey: #F5F5F5;
32 | $bg-color-primary: #E8EACF;
33 |
34 | /* 边框颜色 */
35 | $border-color:#e2e2e2;
36 |
37 | /* 尺寸变量 */
38 |
39 | /* 文字尺寸 */
40 | $font-size-sm:24rpx;
41 | $font-size-base:28rpx;
42 | $font-size-lg:32rpx;
43 |
44 | /* 图片尺寸 */
45 | $img-size-sm:40rpx;
46 | $img-size-base:52rpx;
47 | $img-size-lg:80rpx;
48 |
49 | /* Border Radius */
50 | $border-radius-sm: 4rpx;
51 | $border-radius-base: 6rpx;
52 | $border-radius-lg: 12rpx;
53 | $border-radius-circle: 50%;
54 |
55 | /* 水平间距 */
56 | $spacing-row-sm: 10px;
57 | $spacing-row-base: 20rpx;
58 | $spacing-row-lg: 30rpx;
59 |
60 | /* 垂直间距 */
61 | $spacing-col-sm: 8rpx;
62 | $spacing-col-base: 16rpx;
63 | $spacing-col-lg: 24rpx;
64 |
65 | /* 透明度 */
66 | $opacity-disabled: 0.3; // 组件禁用态的透明度
67 |
68 | /* 文章场景相关 */
69 | $color-title: #2C405A; // 文章标题颜色
70 | $font-size-title:40rpx;
71 | $color-subtitle: #555555; // 二级标题颜色
72 | $font-size-subtitle:36rpx;
73 | $color-paragraph: #3F536E; // 文章段落颜色
74 | $font-size-paragraph:30rpx;
75 |
76 | $box-shadow: 0 20rpx 20rpx -20rpx rgba($color: #333, $alpha: 0.1);
77 |
78 | @import '~@/static/iconfont/iconfont.scss';
--------------------------------------------------------------------------------