307 Commits

Author SHA1 Message Date
9f5498ac7c 更换 2020-09-25 17:42:36 +08:00
c85f1aeead 修改字体大小 2020-09-21 17:37:29 +08:00
00670f4501 图标 2020-09-18 16:40:21 +08:00
db20e52e48 Merge pull request '去掉首页下拉刷新' (#378) from zhy into master
Reviewed-on: http://git.luyuan.tk/luyuan/deming/pulls/378
2020-09-18 16:37:11 +08:00
d5cf7ae2fb 去掉首页下拉刷新 2020-09-18 16:36:35 +08:00
7644def64f Merge pull request '修改图标' (#377) from xbx into master
Reviewed-on: http://git.luyuan.tk/luyuan/deming/pulls/377
2020-09-18 10:16:19 +08:00
2add59f416 修改图标 2020-09-18 10:15:46 +08:00
689b6a03aa Merge pull request '修改了备注的高度' (#376) from xbx into master
Reviewed-on: http://git.luyuan.tk/luyuan/deming/pulls/376
2020-09-17 19:44:53 +08:00
2f8557eb42 修改了备注的高度 2020-09-17 19:42:34 +08:00
6364be1743 Merge pull request 'zhy' (#374) from zhy into master
Reviewed-on: http://git.luyuan.tk/luyuan/deming/pulls/374
2020-09-17 19:33:43 +08:00
c893ece3a4 退款 2020-09-17 19:33:04 +08:00
fa9817e7bb 退款 2020-09-17 18:48:02 +08:00
a60f61c300 Merge pull request '添加了请求接口' (#373) from xbx into master
Reviewed-on: http://git.luyuan.tk/luyuan/deming/pulls/373
2020-09-16 19:06:30 +08:00
6e40ae0daa 添加了请求接口 2020-09-16 18:35:21 +08:00
gyh
e96fcf28a9 Merge pull request 'gdpao' (#371) from gyh into master
Reviewed-on: http://git.luyuan.tk/luyuan/deming/pulls/371
2020-09-16 17:07:24 +08:00
Gdpao
8af938e0eb gdpao 2020-09-16 11:31:59 +08:00
gyh
d805b6f0bf Merge pull request 'gdpao' (#370) from gyh into master
Reviewed-on: http://git.luyuan.tk/luyuan/deming/pulls/370
2020-09-15 17:40:00 +08:00
Gdpao
10c9498985 gdpao 2020-09-15 16:44:03 +08:00
75dd6ca8d8 Merge pull request 'zhy' (#369) from zhy into master
Reviewed-on: http://git.luyuan.tk/luyuan/deming/pulls/369
2020-09-15 16:16:44 +08:00
06bc5651ae 达人申请添加身份证 2020-09-15 16:14:57 +08:00
28c324e449 达人申请添加身份证 2020-09-15 16:07:59 +08:00
8158a1e780 Merge pull request '达人申请添加身份证' (#368) from zhy into master
Reviewed-on: http://git.luyuan.tk/luyuan/deming/pulls/368
2020-09-15 15:41:38 +08:00
339f8e3346 达人申请添加身份证 2020-09-15 15:40:08 +08:00
1a9f06e722 Merge pull request '修改' (#367) from xbx into master
Reviewed-on: http://git.luyuan.tk/luyuan/deming/pulls/367
2020-09-11 20:16:16 +08:00
7a9c0eb53f 修改 2020-09-11 20:15:49 +08:00
gyh
dd15356717 Merge pull request 'gdpao' (#366) from gyh into master
Reviewed-on: http://git.luyuan.tk/luyuan/deming/pulls/366
2020-09-11 19:48:11 +08:00
Gdpao
414f50ce5d gdpao 2020-09-11 18:47:14 +08:00
d5ba314bf6 Merge pull request '修改了标题' (#365) from xbx into master
Reviewed-on: http://git.luyuan.tk/luyuan/deming/pulls/365
2020-09-11 17:59:32 +08:00
ad5ed4040c 修改了标题 2020-09-11 17:59:05 +08:00
f076c03c99 Merge pull request '添加了进入提醒' (#364) from xbx into master
Reviewed-on: http://git.luyuan.tk/luyuan/deming/pulls/364
2020-09-11 17:01:02 +08:00
d5f9055445 添加了进入提醒 2020-09-11 17:00:13 +08:00
ab4c80ae36 Merge pull request '修改美甲' (#363) from zhy into master
Reviewed-on: http://git.luyuan.tk/luyuan/deming/pulls/363
2020-09-11 14:46:32 +08:00
28832c38ae 修改美甲 2020-09-11 14:45:30 +08:00
b95f009ff3 Merge pull request '详情显示备注' (#362) from zhy into master
Reviewed-on: http://git.luyuan.tk/luyuan/deming/pulls/362
2020-09-11 11:41:25 +08:00
5616cd046f 详情显示备注 2020-09-11 11:40:53 +08:00
3fd6e953c6 Merge pull request '订单添加备注' (#361) from zhy into master
Reviewed-on: http://git.luyuan.tk/luyuan/deming/pulls/361
2020-09-11 11:26:14 +08:00
eedb40b9d0 订单添加备注 2020-09-11 11:24:05 +08:00
c162fc983f Merge pull request '修改成官方客服' (#360) from xbx into master
Reviewed-on: http://git.luyuan.tk/luyuan/deming/pulls/360
2020-09-11 09:12:10 +08:00
9efa4d198f 修改成官方客服 2020-09-11 09:08:35 +08:00
gyh
83afd6216e Merge pull request 'gdpao' (#359) from gyh into master
Reviewed-on: http://git.luyuan.tk/luyuan/deming/pulls/359
2020-09-10 16:13:21 +08:00
Gdpao
d7877a3e77 gdpao 2020-09-10 14:46:48 +08:00
b5e8936307 Merge pull request 'about page add phone number' (#358) from zhy into master
Reviewed-on: http://git.luyuan.tk/luyuan/deming/pulls/358
2020-09-10 10:39:15 +08:00
5b89988e4d about page add phone number 2020-09-10 10:38:33 +08:00
0e99c3f719 Merge pull request 'zhy' (#357) from zhy into master
Reviewed-on: http://git.luyuan.tk/luyuan/deming/pulls/357
2020-09-10 10:01:29 +08:00
51c6a3b820 送洗显示信息 2020-09-10 10:01:02 +08:00
d79e38e44c 送洗显示信息 2020-09-10 10:00:04 +08:00
a1eac2a1e8 Merge pull request 'zhy' (#356) from zhy into master
Reviewed-on: http://git.luyuan.tk/luyuan/deming/pulls/356
2020-09-10 09:21:47 +08:00
fe60d5a1cf view goods evaluation 2020-09-10 09:20:35 +08:00
8f010c634c view goods evaluation 2020-09-10 09:17:54 +08:00
b5985ce1a0 Merge pull request 'fixing bug' (#355) from zhy into master
Reviewed-on: http://git.luyuan.tk/luyuan/deming/pulls/355
2020-09-09 17:22:41 +08:00
a9477b9657 fixing bug 2020-09-09 17:21:33 +08:00
4674acac3c Merge pull request '退款样式' (#354) from zhy into master
Reviewed-on: http://git.luyuan.tk/luyuan/deming/pulls/354
2020-09-09 16:57:23 +08:00
45c087bf14 退款样式 2020-09-09 16:56:02 +08:00
7e50a6f56e Merge pull request 'zhy' (#353) from zhy into master
Reviewed-on: http://git.luyuan.tk/luyuan/deming/pulls/353
2020-09-09 09:36:34 +08:00
20e27317be fix bug 2020-09-09 09:34:08 +08:00
89ddba5321 fix bug 2020-09-09 09:33:08 +08:00
52caeef425 Merge pull request '刷新首页关注列表' (#352) from zhy into master
Reviewed-on: http://git.luyuan.tk/luyuan/deming/pulls/352
2020-09-08 08:57:22 +08:00
a14d662370 刷新首页关注列表 2020-09-08 08:55:09 +08:00
5bca242f28 Merge pull request '修复抖动' (#351) from xbx into master
Reviewed-on: http://git.luyuan.tk/luyuan/deming/pulls/351
2020-09-07 15:48:14 +08:00
dd5db56bf8 修复抖动 2020-09-07 15:47:46 +08:00
b482369760 Merge pull request '增加试穿规格' (#349) from zhy into master
Reviewed-on: http://git.luyuan.tk/luyuan/deming/pulls/349
2020-09-07 14:50:20 +08:00
dcea9608af 增加试穿规格 2020-09-07 14:47:54 +08:00
f65e2e9830 Merge pull request '修改配送方式' (#348) from zhy into master
Reviewed-on: http://git.luyuan.tk/luyuan/deming/pulls/348
2020-09-07 11:42:43 +08:00
2ad46ce2a1 修改配送方式 2020-09-07 11:32:52 +08:00
e0abb14315 Merge pull request '修改评论的图片显示' (#347) from zhy into master
Reviewed-on: http://git.luyuan.tk/luyuan/deming/pulls/347
2020-09-07 10:13:54 +08:00
57534ef7fc 修改评论的图片显示 2020-09-07 10:11:52 +08:00
gyh
50c88a9f60 Merge pull request 'gdpaoup' (#346) from gyh into master
Reviewed-on: http://git.luyuan.tk/luyuan/deming/pulls/346
2020-09-05 19:54:00 +08:00
80461f7345 Merge pull request '申请发票验证身份证号' (#345) from zhy into master
Reviewed-on: http://git.luyuan.tk/luyuan/deming/pulls/345
2020-09-05 17:36:26 +08:00
1a4f1f7edf 申请发票验证身份证号 2020-09-05 17:35:33 +08:00
ba3717cd73 Merge pull request '送洗切换申请表返回' (#344) from zhy into master
Reviewed-on: http://git.luyuan.tk/luyuan/deming/pulls/344
2020-09-05 17:17:25 +08:00
aecc65cbc6 送洗切换申请表返回 2020-09-05 17:16:12 +08:00
Gdpao
87f3517729 gdpaoup 2020-09-05 17:11:13 +08:00
ed3a83c00e Merge pull request '预览店铺执照' (#343) from zhy into master
Reviewed-on: http://git.luyuan.tk/luyuan/deming/pulls/343
2020-09-05 17:09:36 +08:00
63298679cf 预览店铺执照 2020-09-05 17:07:55 +08:00
gyh
273d984ea6 Merge pull request 'gdpao' (#342) from gyh into master
Reviewed-on: http://git.luyuan.tk/luyuan/deming/pulls/342
2020-09-05 16:35:07 +08:00
72bfc5fa18 Merge pull request '修复了订单重复' (#341) from xbx into master
Reviewed-on: http://git.luyuan.tk/luyuan/deming/pulls/341
2020-09-05 16:12:17 +08:00
13258b3b63 修复了订单重复 2020-09-05 16:11:53 +08:00
b8bcf50c8f Merge pull request '订单列表按钮顺序' (#340) from zhy into master
Reviewed-on: http://git.luyuan.tk/luyuan/deming/pulls/340
2020-09-05 15:51:51 +08:00
efb2988c8e 订单列表按钮顺序 2020-09-05 15:49:05 +08:00
gyh
f3c881cf76 Merge pull request 'gdpao' (#339) from gyh into master
Reviewed-on: http://git.luyuan.tk/luyuan/deming/pulls/339
2020-09-05 15:30:59 +08:00
5780efa878 Merge pull request 'xbx' (#338) from xbx into master
Reviewed-on: http://git.luyuan.tk/luyuan/deming/pulls/338
2020-09-05 15:29:08 +08:00
480de8da61 Merge pull request '修改返回店铺首页数据不出现的问题' (#337) from zhy into master
Reviewed-on: http://git.luyuan.tk/luyuan/deming/pulls/337
2020-09-05 15:19:39 +08:00
027b07baeb 修改返回店铺首页数据不出现的问题 2020-09-05 15:18:48 +08:00
6830d8cde7 Merge pull request '送洗评价图片预览' (#336) from zhy into master
Reviewed-on: http://git.luyuan.tk/luyuan/deming/pulls/336
2020-09-05 14:41:11 +08:00
e19ae7ed82 送洗评价图片预览 2020-09-05 14:40:15 +08:00
f190b82468 送洗评价图片预览 2020-09-05 14:38:18 +08:00
d4a1439bf9 Merge pull request 'fixing bug' (#335) from zhy into master
Reviewed-on: http://git.luyuan.tk/luyuan/deming/pulls/335
2020-09-05 14:28:11 +08:00
b653379d53 fixing bug 2020-09-05 14:26:17 +08:00
Gdpao
cf71c2ba66 gdpao 2020-09-05 12:32:58 +08:00
Gdpao
29ed3a3758 gdpao 2020-09-05 12:28:40 +08:00
a3adc35372 判读是不是空的 2020-09-05 12:10:59 +08:00
df1d1e78b4 临时解决 2020-09-05 12:07:47 +08:00
b38a2b8103 Merge pull request '手机号' (#334) from zhy into master
Reviewed-on: http://git.luyuan.tk/luyuan/deming/pulls/334
2020-09-05 10:55:50 +08:00
e1a74972f2 手机号 2020-09-05 10:54:53 +08:00
b875ddc434 Merge pull request '修改radio样式' (#333) from zhy into master
Reviewed-on: http://git.luyuan.tk/luyuan/deming/pulls/333
2020-09-05 09:37:28 +08:00
d0e58b876a 修改radio样式 2020-09-05 09:36:45 +08:00
e35f3bad71 Merge pull request '发票' (#332) from zhy into master
Reviewed-on: http://git.luyuan.tk/luyuan/deming/pulls/332
2020-09-04 17:35:05 +08:00
a81a21ac38 发票 2020-09-04 17:34:24 +08:00
23a75971f3 Merge pull request '发票' (#331) from zhy into master
Reviewed-on: http://git.luyuan.tk/luyuan/deming/pulls/331
2020-09-04 17:30:53 +08:00
83eb365628 发票 2020-09-04 17:29:45 +08:00
gyh
377f3b080a Merge pull request 'gdpao' (#330) from gyh into master
Reviewed-on: http://git.luyuan.tk/luyuan/deming/pulls/330
2020-09-04 08:44:19 +08:00
Gdpao
3d9069fa83 gdpao 2020-09-03 20:52:50 +08:00
ac1e99a54d Merge pull request '达人申请label宽度' (#329) from zhy into master
Reviewed-on: http://git.luyuan.tk/luyuan/deming/pulls/329
2020-09-03 14:34:49 +08:00
41a80b2680 达人申请label宽度 2020-09-03 14:33:56 +08:00
85fce676e5 Merge pull request '修复了返回播放' (#328) from xbx into master
Reviewed-on: http://git.luyuan.tk/luyuan/deming/pulls/328
2020-09-03 11:57:56 +08:00
e7a2a716b4 修复了返回播放 2020-09-03 11:57:40 +08:00
7e9791ef18 Merge pull request '修复了返回黑屏' (#327) from xbx into master
Reviewed-on: http://git.luyuan.tk/luyuan/deming/pulls/327
2020-09-03 11:45:02 +08:00
314508e652 修复了返回黑屏 2020-09-03 11:32:58 +08:00
1b387df66e Merge pull request '添加达人申请' (#326) from zhy into master
Reviewed-on: http://git.luyuan.tk/luyuan/deming/pulls/326
2020-09-03 11:14:03 +08:00
cfda1f7aae 添加达人申请 2020-09-03 11:12:58 +08:00
gyh
379100a097 Merge pull request 'gdpao' (#325) from gyh into master
Reviewed-on: http://git.luyuan.tk/luyuan/deming/pulls/325
2020-09-03 09:53:16 +08:00
Gdpao
adc18d80cf gdpao 2020-09-03 09:50:18 +08:00
2da546f193 Merge pull request '修改自提bug' (#324) from zhy into master
Reviewed-on: http://git.luyuan.tk/luyuan/deming/pulls/324
2020-09-02 15:33:40 +08:00
bc9290e13c 修改自提bug 2020-09-02 15:32:54 +08:00
c4f23cc5c4 Merge pull request 'zhy' (#323) from zhy into master
Reviewed-on: http://git.luyuan.tk/luyuan/deming/pulls/323
2020-09-02 08:59:57 +08:00
4911a0c948 调整会员服务样式 2020-09-02 08:55:56 +08:00
6302677c65 调整会员服务样式 2020-09-02 08:55:16 +08:00
gyh
8ec27b1598 Merge pull request 'gdpao' (#322) from gyh into master
Reviewed-on: http://git.luyuan.tk/luyuan/deming/pulls/322
2020-09-01 20:31:30 +08:00
Gdpao
2446f851c7 gdpao 2020-09-01 20:30:23 +08:00
4fa530d2d6 Merge pull request 'fixing bug' (#321) from zhy into master
Reviewed-on: http://git.luyuan.tk/luyuan/deming/pulls/321
2020-09-01 18:08:30 +08:00
0f55428656 fixing bug 2020-09-01 18:07:52 +08:00
db55c8d892 Merge pull request '消息物流添加联系骑手' (#320) from zhy into master
Reviewed-on: http://git.luyuan.tk/luyuan/deming/pulls/320
2020-09-01 17:43:18 +08:00
8259883119 消息物流添加联系骑手 2020-09-01 17:42:16 +08:00
20d20e12d1 Merge pull request '添加字体换行' (#319) from xbx into master
Reviewed-on: http://git.luyuan.tk/luyuan/deming/pulls/319
2020-09-01 17:33:31 +08:00
e54282b839 添加点击调用接口 2020-09-01 17:33:11 +08:00
69c56b4772 添加字体换行 2020-09-01 16:53:41 +08:00
edc1d0c160 Merge pull request 'xbx' (#318) from xbx into master
Reviewed-on: http://git.luyuan.tk/luyuan/deming/pulls/318
2020-09-01 16:08:20 +08:00
bc4d6bb117 Merge branch 'xbx' of http://git.luyuan.tk/luyuan/deming into xbx 2020-09-01 16:07:58 +08:00
5e140e4143 更改了提示 2020-09-01 16:07:56 +08:00
8ed1ae0020 Merge pull request '添加了提示' (#317) from xbx into master
Reviewed-on: http://git.luyuan.tk/luyuan/deming/pulls/317
2020-09-01 16:07:39 +08:00
db13a1882d Merge branch 'master' into xbx 2020-09-01 16:07:30 +08:00
f4ba8edec2 添加了提示 2020-09-01 15:55:32 +08:00
8f400e2524 Merge pull request '新增自提显示' (#316) from zhy into master
Reviewed-on: http://git.luyuan.tk/luyuan/deming/pulls/316
2020-09-01 15:02:18 +08:00
56cdbfbf5d 新增自提显示 2020-09-01 15:00:36 +08:00
e608eb2a89 Merge pull request '新增自提' (#315) from zhy into master
Reviewed-on: http://git.luyuan.tk/luyuan/deming/pulls/315
2020-09-01 10:47:34 +08:00
96e16c7af2 新增自提 2020-09-01 10:47:06 +08:00
038eb466a2 新增自提 2020-09-01 10:43:32 +08:00
89cf7b96db 新增自提 2020-09-01 10:39:59 +08:00
4ee4f43f05 Merge pull request '修改了字体和编剧' (#314) from xbx into master
Reviewed-on: http://git.luyuan.tk/luyuan/deming/pulls/314
2020-09-01 10:35:33 +08:00
ccca4992ab 修改了字体和编剧 2020-09-01 10:34:32 +08:00
gyh
704fb038df Merge pull request 'gdpao' (#313) from gyh into master
Reviewed-on: http://git.luyuan.tk/luyuan/deming/pulls/313
2020-09-01 08:40:15 +08:00
Gdpao
1fad28b7b0 gdpao 2020-09-01 08:39:08 +08:00
840ba58aa6 Merge pull request '调试完成' (#311) from xbx into master
Reviewed-on: http://git.luyuan.tk/luyuan/deming/pulls/311
2020-08-31 17:04:37 +08:00
6039328f54 添加了销量 2020-08-31 17:04:15 +08:00
gyh
0de127d351 Merge pull request 'gdpao' (#312) from gyh into master
Reviewed-on: http://git.luyuan.tk/luyuan/deming/pulls/312
2020-08-31 16:33:10 +08:00
Gdpao
b1b4298721 gdpao 2020-08-31 16:31:31 +08:00
e98ad66060 调试完成 2020-08-31 15:37:47 +08:00
gyh
2d8e738164 Merge pull request 'gyh' (#310) from gyh into master
Reviewed-on: http://git.luyuan.tk/luyuan/deming/pulls/310
2020-08-31 10:15:47 +08:00
Gdpao
ee3ba5b0dc gdpasomg 2020-08-31 09:10:40 +08:00
Gdpao
8937a31684 gdpao 2020-08-31 09:07:24 +08:00
993e1bc647 Merge pull request 'xbx' (#309) from xbx into master
Reviewed-on: http://git.luyuan.tk/luyuan/deming/pulls/309
2020-08-29 00:14:09 +08:00
97c9774cc4 添加了 分类的搜索 2020-08-28 23:11:12 +08:00
839b1728f0 商品不出现 2020-08-28 22:54:51 +08:00
0e21019107 Merge pull request 'xbx' (#307) from xbx into master
Reviewed-on: http://git.luyuan.tk/luyuan/deming/pulls/307
2020-08-27 14:04:08 +08:00
4dfacfb524 Merge pull request '第三方绑定' (#305) from zhy into master
Reviewed-on: http://git.luyuan.tk/luyuan/deming/pulls/305
2020-08-27 12:22:22 +08:00
d3154dc864 第三方绑定 2020-08-27 12:21:32 +08:00
8f02597787 Merge pull request '第三方绑定' (#304) from zhy into master
Reviewed-on: http://git.luyuan.tk/luyuan/deming/pulls/304
2020-08-27 12:18:02 +08:00
16115ba111 第三方绑定 2020-08-27 12:16:09 +08:00
36f0675689 1 2020-08-27 12:15:55 +08:00
18c99cd668 添加了消息铃声 2020-08-27 11:06:11 +08:00
5f233b8e06 Merge pull request '第三方绑定' (#303) from zhy into master
Reviewed-on: http://git.luyuan.tk/luyuan/deming/pulls/303
2020-08-27 09:37:18 +08:00
916b1e0cbd 第三方绑定 2020-08-27 09:36:12 +08:00
Gdpao
2e36f2a22f gdpao 2020-08-26 20:31:30 +08:00
af612ef89e Merge pull request '启动页按钮问题' (#302) from zhy into master
Reviewed-on: http://git.luyuan.tk/luyuan/deming/pulls/302
2020-08-25 14:39:37 +08:00
95c55de38b 启动页按钮问题 2020-08-25 14:39:11 +08:00
d06394f6ad Merge pull request 'xbx' (#300) from xbx into master
Reviewed-on: http://git.luyuan.tk/luyuan/deming/pulls/300
2020-08-25 14:38:13 +08:00
f4de9fe13b Merge branch 'master' of http://git.luyuan.tk/luyuan/deming into xbx 2020-08-25 14:37:35 +08:00
2512923891 Merge pull request '版本更新跳转' (#299) from zhy into master
Reviewed-on: http://git.luyuan.tk/luyuan/deming/pulls/299
2020-08-25 14:21:38 +08:00
4ab89711b2 版本更新跳转 2020-08-25 14:21:15 +08:00
gyh
4876ddb383 Merge pull request '1.0.1' (#298) from gyh into master
Reviewed-on: http://git.luyuan.tk/luyuan/deming/pulls/298
2020-08-25 13:04:20 +08:00
Gdpao
9b5fca48a2 1.0.1 2020-08-25 13:03:24 +08:00
81955085b5 Merge pull request '版本更新跳转' (#297) from zhy into master
Reviewed-on: http://git.luyuan.tk/luyuan/deming/pulls/297
2020-08-25 12:21:55 +08:00
ffa18c92d2 版本更新跳转 2020-08-25 12:21:26 +08:00
b63a84149e Merge pull request '版本更新跳转' (#296) from zhy into master
Reviewed-on: http://git.luyuan.tk/luyuan/deming/pulls/296
2020-08-25 12:07:07 +08:00
1aee3f3320 版本更新跳转 2020-08-25 12:06:37 +08:00
6d0c6a6b15 Merge pull request '完善' (#295) from xbx-new into master
Reviewed-on: http://git.luyuan.tk/luyuan/deming/pulls/295
2020-08-25 11:53:18 +08:00
d5e4d52dbe Merge branch 'master' of http://git.luyuan.tk/luyuan/deming into xbx-new 2020-08-25 11:53:03 +08:00
d5d9e98534 1 2020-08-25 11:52:46 +08:00
71a82a10b0 完善 2020-08-25 11:51:16 +08:00
e3e470ab88 Merge pull request 'fixing bug' (#294) from zhy into master
Reviewed-on: http://git.luyuan.tk/luyuan/deming/pulls/294
2020-08-25 11:51:13 +08:00
3d4ee2bd4c fixing bug 2020-08-25 11:50:45 +08:00
6af21ad216 Merge pull request '跳转应用商店' (#293) from zhy into master
Reviewed-on: http://git.luyuan.tk/luyuan/deming/pulls/293
2020-08-25 10:41:17 +08:00
9c026bf64d 跳转应用商店 2020-08-25 10:40:47 +08:00
4436bbd282 Merge pull request '版本更新' (#292) from zhy into master
Reviewed-on: http://git.luyuan.tk/luyuan/deming/pulls/292
2020-08-25 10:14:36 +08:00
27bdf1f2b0 版本更新 2020-08-25 10:13:49 +08:00
76d13c5a71 Merge pull request 'xbx-new' (#291) from xbx-new into master
Reviewed-on: http://git.luyuan.tk/luyuan/deming/pulls/291
2020-08-25 10:03:53 +08:00
6d4d2e5d8d 去除了视频 2020-08-25 10:01:39 +08:00
6a25fe34a7 去除视频 2020-08-24 17:01:34 +08:00
0d96af99e1 Merge pull request '视频播放' (#290) from xbx-new into master
Reviewed-on: http://git.luyuan.tk/luyuan/deming/pulls/290
2020-08-24 16:48:30 +08:00
5c47aa8e5c 视频播放 2020-08-24 16:40:38 +08:00
gyh
5ad768f842 Merge pull request 'gdpao' (#289) from gyh into master
Reviewed-on: http://git.luyuan.tk/luyuan/deming/pulls/289
2020-08-24 15:46:28 +08:00
Gdpao
e674a2c0df gdpao 2020-08-24 15:45:35 +08:00
5194e15ec8 Merge pull request '添加消息无数据提示' (#288) from zhy into master
Reviewed-on: http://git.luyuan.tk/luyuan/deming/pulls/288
2020-08-24 15:14:12 +08:00
0a5115b8f4 添加消息无数据提示 2020-08-24 15:13:38 +08:00
1d8cd6512f Merge pull request '优惠券增加新人优惠券' (#287) from zhy into master
Reviewed-on: http://git.luyuan.tk/luyuan/deming/pulls/287
2020-08-24 14:29:47 +08:00
6306573ee4 优惠券增加新人优惠券 2020-08-24 14:29:15 +08:00
3e87a5aaf5 Merge branch 'master' of http://git.luyuan.tk/luyuan/deming into xbx 2020-08-24 14:23:22 +08:00
21b9995c1c Merge pull request 'add video link' (#286) from zhy into master
Reviewed-on: http://git.luyuan.tk/luyuan/deming/pulls/286
2020-08-24 14:13:44 +08:00
065cea4e11 add video link 2020-08-24 14:13:12 +08:00
f86e9ae009 Merge pull request 'add goods details video' (#285) from zhy into master
Reviewed-on: http://git.luyuan.tk/luyuan/deming/pulls/285
2020-08-24 11:45:25 +08:00
dddbabd207 add goods details video 2020-08-24 11:44:58 +08:00
52e6489a2c 优惠券完成 2020-08-22 16:45:26 +08:00
92771d8174 图标 2020-08-22 09:46:30 +08:00
60a619fa7b fix 756 2020-08-22 09:00:00 +08:00
6f344dc550 Merge pull request '修复' (#284) from xbx into master
Reviewed-on: http://git.luyuan.tk/luyuan/deming/pulls/284
2020-08-21 18:05:07 +08:00
03c6779b96 修复 2020-08-21 18:04:11 +08:00
gyh
8518677f05 Merge pull request 'gdpao' (#282) from gyh into master
Reviewed-on: http://git.luyuan.tk/luyuan/deming/pulls/282
2020-08-21 16:05:52 +08:00
Gdpao
e0aafebcdc gdpao 2020-08-21 16:05:09 +08:00
e43003e0cd Merge pull request '消息物流跳转' (#281) from zhy into master
Reviewed-on: http://git.luyuan.tk/luyuan/deming/pulls/281
2020-08-21 14:49:08 +08:00
7f30cf8020 消息物流跳转 2020-08-21 14:48:19 +08:00
62d610b025 Merge pull request '商品规格样式' (#279) from zhy into master
Reviewed-on: http://git.luyuan.tk/luyuan/deming/pulls/279
2020-08-21 11:51:54 +08:00
5806077877 商品规格样式 2020-08-21 11:51:31 +08:00
50fb33d8e4 Merge pull request 'fixing bug' (#278) from zhy into master
Reviewed-on: http://git.luyuan.tk/luyuan/deming/pulls/278
2020-08-21 11:18:31 +08:00
164dff3db5 fixing bug 2020-08-21 11:18:01 +08:00
5b287c7049 Merge pull request '全部显示物流' (#277) from zhy into master
Reviewed-on: http://git.luyuan.tk/luyuan/deming/pulls/277
2020-08-21 10:19:17 +08:00
fc44bb5fd6 全部显示物流 2020-08-21 10:18:10 +08:00
ecea27ccff Merge pull request '调整订单数量位置' (#276) from zhy into master
Reviewed-on: http://git.luyuan.tk/luyuan/deming/pulls/276
2020-08-21 09:25:21 +08:00
3d2e0a9525 调整订单数量位置 2020-08-21 09:24:51 +08:00
gyh
4b0cbcf814 Merge pull request 'gdpao' (#275) from gyh into master
Reviewed-on: http://git.luyuan.tk/luyuan/deming/pulls/275
2020-08-21 09:15:47 +08:00
Gdpao
ecb5f19fc0 gdpao 2020-08-21 09:14:57 +08:00
f54b94f0c6 Merge pull request '去掉店铺关注背景色' (#274) from zhy into master
Reviewed-on: http://git.luyuan.tk/luyuan/deming/pulls/274
2020-08-20 17:59:02 +08:00
abda1f39f5 去掉店铺关注背景色 2020-08-20 17:58:34 +08:00
gyh
9e6c36b65a Merge pull request 'gdpaoup2' (#273) from gyh into master
Reviewed-on: http://git.luyuan.tk/luyuan/deming/pulls/273
2020-08-20 17:44:18 +08:00
Gdpao
71fb73b61a Merge branch 'master' of http://git.luyuan.tk/luyuan/deming into gyh 2020-08-20 17:42:46 +08:00
Gdpao
83b06e2ab5 gdpaoup2 2020-08-20 17:42:07 +08:00
b575501bb7 Merge pull request 'fixing bug' (#272) from zhy into master
Reviewed-on: http://git.luyuan.tk/luyuan/deming/pulls/272
2020-08-20 17:39:55 +08:00
d69486d1ab fixing bug 2020-08-20 17:39:30 +08:00
d3c68b8c93 Merge pull request '初始化运费' (#271) from zhy into master
Reviewed-on: http://git.luyuan.tk/luyuan/deming/pulls/271
2020-08-20 16:55:08 +08:00
40e4d10bd7 初始化运费 2020-08-20 16:54:39 +08:00
gyh
7790481afb Merge pull request 'gdpaoup1' (#270) from gyh into master
Reviewed-on: http://git.luyuan.tk/luyuan/deming/pulls/270
2020-08-20 16:23:32 +08:00
Gdpao
7c0720fab2 gdpaoup1 2020-08-20 16:22:34 +08:00
1f966b261e Merge pull request '消息物流跳转' (#269) from zhy into master
Reviewed-on: http://git.luyuan.tk/luyuan/deming/pulls/269
2020-08-20 16:20:38 +08:00
421112db2e 消息物流跳转 2020-08-20 16:18:52 +08:00
920976dedd Merge pull request '消息物流跳转' (#268) from zhy into master
Reviewed-on: http://git.luyuan.tk/luyuan/deming/pulls/268
2020-08-20 16:17:15 +08:00
91a655e224 消息物流跳转 2020-08-20 16:16:34 +08:00
gyh
4e3665acc7 Merge pull request 'gdppao' (#267) from gyh into master
Reviewed-on: http://git.luyuan.tk/luyuan/deming/pulls/267
2020-08-20 15:17:54 +08:00
Gdpao
1643bf51b2 gdppao 2020-08-20 15:16:29 +08:00
d234176f22 Merge pull request 'xbx' (#266) from xbx into master
Reviewed-on: http://git.luyuan.tk/luyuan/deming/pulls/266
2020-08-20 15:15:16 +08:00
b75e885e70 Merge branch 'master' of http://git.luyuan.tk/luyuan/deming into xbx 2020-08-20 14:55:54 +08:00
9eaf84d496 Merge pull request 'fixing bung' (#264) from zhy into master
Reviewed-on: http://git.luyuan.tk/luyuan/deming/pulls/264
2020-08-20 14:47:44 +08:00
dbbd64269f fixing bung 2020-08-20 14:46:57 +08:00
677890a06d 解决了关注刷新的问题 2020-08-20 14:32:01 +08:00
dd3d3c17c4 Merge pull request 'zmr' (#263) from zmr into master
Reviewed-on: http://git.luyuan.tk/luyuan/deming/pulls/263
2020-08-20 14:30:12 +08:00
zmr900709
78169d8cde 解决样式问题 2020-08-20 14:24:17 +08:00
zmr900709
7f0d1063f0 Merge branch 'master' of http://git.luyuan.tk/luyuan/deming into zmr 2020-08-20 14:23:32 +08:00
zmr900709
c81ee7e961 1 2020-08-20 14:23:21 +08:00
6864f22576 Merge pull request '首页拼团商品显示不全' (#262) from zhy into master
Reviewed-on: http://git.luyuan.tk/luyuan/deming/pulls/262
2020-08-20 12:05:44 +08:00
a91fa4708b 首页拼团商品显示不全 2020-08-20 12:05:15 +08:00
bfffb44fe2 Merge pull request 'zhy' (#261) from zhy into master
Reviewed-on: http://git.luyuan.tk/luyuan/deming/pulls/261
2020-08-20 11:43:19 +08:00
16c2c1fa71 使用优惠券价格 2020-08-20 11:42:52 +08:00
4c8e2ba4b6 使用优惠券价格 2020-08-20 11:41:58 +08:00
96d7ad439a Merge pull request '优惠券列表显示,使用优惠券价格计算' (#259) from zhy into master
Reviewed-on: http://git.luyuan.tk/luyuan/deming/pulls/259
2020-08-20 11:29:22 +08:00
390bda7c0e 优惠券列表显示,使用优惠券价格计算 2020-08-20 11:28:49 +08:00
0ae19c2ddf Merge pull request 'touxiang' (#258) from xbx into master
Reviewed-on: http://git.luyuan.tk/luyuan/deming/pulls/258
2020-08-20 11:27:56 +08:00
26cb84748a touxiang 2020-08-20 11:26:59 +08:00
c6cd88dc48 Merge pull request 'xbx' (#257) from xbx into master
Reviewed-on: http://git.luyuan.tk/luyuan/deming/pulls/257
2020-08-20 11:10:11 +08:00
a34880e6a6 Merge branch 'master' of http://git.luyuan.tk/luyuan/deming into xbx 2020-08-20 11:09:49 +08:00
3d840a0546 修复了交易物流 2020-08-20 10:54:09 +08:00
30539ddf64 Merge pull request '新人优惠券显示问题,使用优惠券价格问题' (#256) from zhy into master
Reviewed-on: http://git.luyuan.tk/luyuan/deming/pulls/256
2020-08-20 10:26:39 +08:00
51823edb12 新人优惠券显示问题,使用优惠券价格问题 2020-08-20 10:25:58 +08:00
e58f571de4 直播添加了下拉刷新 2020-08-20 10:16:40 +08:00
gyh
c4821f888f Merge pull request 'gdpao' (#255) from gyh into master
Reviewed-on: http://git.luyuan.tk/luyuan/deming/pulls/255
2020-08-19 19:25:14 +08:00
Gdpao
69760e6377 gdpao 2020-08-19 19:24:14 +08:00
080f0c6d86 Merge pull request 'zhy' (#254) from zhy into master
Reviewed-on: http://git.luyuan.tk/luyuan/deming/pulls/254
2020-08-19 18:04:59 +08:00
4e842b127c fixing bug coupon 2020-08-19 18:04:32 +08:00
627cfc4aa0 优惠券加分页 2020-08-19 17:55:58 +08:00
1e94eb864f Merge pull request '调整首页全部拼团样式' (#253) from zhy into master
Reviewed-on: http://git.luyuan.tk/luyuan/deming/pulls/253
2020-08-19 17:28:58 +08:00
64597b26fa 调整首页全部拼团样式 2020-08-19 17:27:49 +08:00
05b334fdcb Merge pull request '广告位跳转' (#252) from zhy into master
Reviewed-on: http://git.luyuan.tk/luyuan/deming/pulls/252
2020-08-19 16:59:46 +08:00
dc636e30b7 广告位跳转 2020-08-19 16:59:06 +08:00
f9950c4a14 Merge pull request '联系客服拨号,新人优惠券跳转' (#251) from zhy into master
Reviewed-on: http://git.luyuan.tk/luyuan/deming/pulls/251
2020-08-19 15:36:55 +08:00
5dff8c8d96 联系客服拨号,新人优惠券跳转 2020-08-19 15:36:25 +08:00
35da48a87b Merge pull request '调整个人中心首页,添加物流无信息提示' (#250) from zhy into master
Reviewed-on: http://git.luyuan.tk/luyuan/deming/pulls/250
2020-08-19 15:20:18 +08:00
5dd4023f97 调整个人中心首页,添加物流无信息提示 2020-08-19 15:19:25 +08:00
10957c96d6 Merge pull request 'zhy' (#249) from zhy into master
Reviewed-on: http://git.luyuan.tk/luyuan/deming/pulls/249
2020-08-19 11:22:45 +08:00
86d765d6ba order number 8.19 2020-08-19 11:21:31 +08:00
bea615253c Merge branch 'master' of http://git.luyuan.tk/luyuan/deming into zhy 2020-08-19 08:31:26 +08:00
gyh
48f50dbc89 Merge pull request 'gdpaomg' (#248) from gyh into master
Reviewed-on: http://git.luyuan.tk/luyuan/deming/pulls/248
2020-08-18 21:11:59 +08:00
Gdpao
891f1b4194 gdpaomg 2020-08-18 21:11:28 +08:00
fb16e774b8 Merge pull request 'zmr' (#247) from zmr into master
Reviewed-on: http://git.luyuan.tk/luyuan/deming/pulls/247
2020-08-18 21:10:19 +08:00
zmr900709
97c95c2024 Merge branch 'master' of http://git.luyuan.tk/luyuan/deming into zmr 2020-08-18 21:03:39 +08:00
zmr900709
9d8d54cf02 修改活动背景高度 2020-08-18 21:03:23 +08:00
417ec2106e Merge pull request 'fixing bug' (#246) from zhy into master
Reviewed-on: http://git.luyuan.tk/luyuan/deming/pulls/246
2020-08-18 18:06:29 +08:00
2b1b1f1395 Merge branch 'master' of http://git.luyuan.tk/luyuan/deming into zhy 2020-08-18 18:05:26 +08:00
18dd96dec7 fixing bug 2020-08-18 18:05:15 +08:00
gyh
6dd010fd42 Merge pull request 'gdpao;' (#245) from gyh into master
Reviewed-on: http://git.luyuan.tk/luyuan/deming/pulls/245
2020-08-18 17:44:37 +08:00
Gdpao
41cda556ce gdpao; 2020-08-18 17:43:58 +08:00
6b4bfee380 Merge pull request 'upgrade version 8.18' (#244) from zhy into master
Reviewed-on: http://git.luyuan.tk/luyuan/deming/pulls/244
2020-08-18 17:43:03 +08:00
cb0a6fafa3 upgrade version 8.18 2020-08-18 17:42:26 +08:00
fd1801de3d Merge pull request '背景颜色' (#243) from xbx into master
Reviewed-on: http://git.luyuan.tk/luyuan/deming/pulls/243
2020-08-18 17:06:19 +08:00
418068102c 背景颜色 2020-08-18 17:05:29 +08:00
72fa854e78 Merge pull request '...' (#242) from zhy into master
Reviewed-on: http://git.luyuan.tk/luyuan/deming/pulls/242
2020-08-18 15:51:35 +08:00
2a382aa0b4 ... 2020-08-18 15:51:04 +08:00
bb651df8a0 Merge pull request '替换域名' (#241) from xbx into master
Reviewed-on: http://git.luyuan.tk/luyuan/deming/pulls/241
2020-08-18 15:31:53 +08:00
9c388e898c 替换域名 2020-08-18 15:29:52 +08:00
473b96f552 Merge pull request 'fixing bug' (#240) from zhy into master
Reviewed-on: http://git.luyuan.tk/luyuan/deming/pulls/240
2020-08-18 15:28:51 +08:00
1a2c40955b fixing bug 2020-08-18 15:28:22 +08:00
5291d70c6c Merge pull request 'paixu' (#239) from xbx into master
Reviewed-on: http://git.luyuan.tk/luyuan/deming/pulls/239
2020-08-18 15:26:52 +08:00
f98cdd7937 paixu 2020-08-18 15:26:28 +08:00
gyh
60913ab612 Merge pull request 'gdpaoup' (#238) from gyh into master
Reviewed-on: http://git.luyuan.tk/luyuan/deming/pulls/238
2020-08-18 15:24:58 +08:00
Gdpao
ee04a8cb08 gdpaoup 2020-08-18 15:24:06 +08:00
711eeadc28 Merge pull request 'xbx' (#237) from xbx into master
Reviewed-on: http://git.luyuan.tk/luyuan/deming/pulls/237
2020-08-18 15:11:24 +08:00
8286dbfa58 替换url 2020-08-18 15:10:43 +08:00
cb95d1ead1 链接登录退出 2020-08-18 15:08:42 +08:00
43e09e977d 修复 2020-08-18 11:40:53 +08:00
9f17c5478c 提交 2020-08-18 10:43:15 +08:00
a39aa6e059 文字定位 2020-08-17 18:13:01 +08:00
128 changed files with 3412 additions and 858 deletions

31
App.vue
View File

@@ -8,6 +8,12 @@
...mapState(["hasLogin"]) ...mapState(["hasLogin"])
}, },
onLaunch() { onLaunch() {
// 禁止旋转
// #ifdef APP-PLUS
plus.screen.lockOrientation('portrait-primary');
// #endif
getApp().globalData.im = this.imService getApp().globalData.im = this.imService
// 缓存token // 缓存token
uni.getStorage({ uni.getStorage({
@@ -26,6 +32,21 @@
plus.navigator.closeSplashscreen(); plus.navigator.closeSplashscreen();
},3000) },3000)
// #endif // #endif
},
onShow(){
// this.getVersion();
// console.log(this.$u.os())
let device_type = this.$u.os()
console.log({appversion:this.$app_version,device_type})
this.$u.api.recordAppOpenTimes({appversion:this.$app_version,device_type}).then((res)=>{
console.log(JSON.stringify(res))
});
},
onLoad() {
},
onHide(){
}, },
methods: { methods: {
...mapMutations(['loginIn']), ...mapMutations(['loginIn']),
@@ -39,6 +60,16 @@
} }
}) })
}, },
getVersion() {
this.$u.post("Specialci/checkVersion",{ app_version: this.$app_version }).then(res => {
// console.log(res);
if(res.data.app_version != this.$app_version) {
this.$u.route('/pageE/setting/updateVersion', {
status: res.data.is_focus_upgrade
});
}
})
},
} }
} }
</script> </script>

View File

@@ -49,4 +49,12 @@ unescapeHTML(temp){}
* @return { object } promise 对象 resolve 返回文件服务器地址 reject 返回错误信息 * @return { object } promise 对象 resolve 返回文件服务器地址 reject 返回错误信息
*/ */
uploadFile({ url, name, filePath }) {} uploadFile({ url, name, filePath }) {}
/**
* 广告位跳转
* @param { String } type 跳转类型 1 商品 2 店铺 3 领取优惠券
* @param { String | Number } id 跳转id 商品id/商家id...
* @return { undefined } undefined
*/
jumpPage({ type, id }) ()
``` ```

View File

@@ -86,11 +86,12 @@ export default {
return vm.$u.post('Goods/getGoodsClassRecommend'); return vm.$u.post('Goods/getGoodsClassRecommend');
}, },
// goodsListByClassId // goodsListByClassId
goodsListByClassId({ gc_id, page, order }) { goodsListByClassId({ gc_id, page, order, keyword }) {
return vm.$u.post('goods/goodsListByClassId', { return vm.$u.post('goods/goodsListByClassId', {
gc_id: gc_id, gc_id: gc_id,
page: page, page: page,
order: order, order: order,
keyword:keyword
}); });
}, },
// 商品推荐 // 商品推荐
@@ -138,15 +139,9 @@ export default {
}); });
}, },
// 订单步骤2发起订单返回订单信息 // 订单步骤2发起订单返回订单信息
sendOrder({ ifcart, cart_id, address_id, buy_city_id, pintuan_id, pintuangroup_id, voucher_id }) { sendOrder({ ifcart, cart_id, address_id, buy_city_id, pintuan_id, pintuangroup_id, voucher_id, member_deliver_type, invoice_id, pay_message }) {
return vm.$u.post('buy/buy_step2', { return vm.$u.post('buy/buy_step2', {
ifcart: ifcart, ifcart, cart_id, address_id, buy_city_id, pintuan_id, pintuangroup_id, voucher_id, member_deliver_type, invoice_id, pay_message
cart_id: cart_id,
address_id: address_id,
buy_city_id: buy_city_id,
pintuan_id: pintuan_id,
pintuangroup_id: pintuangroup_id,
voucher_id: voucher_id, // 优惠券信息
}); });
}, },
// 订单步骤3发起支付第三方统一下单 // 订单步骤3发起支付第三方统一下单
@@ -271,12 +266,13 @@ export default {
}); });
}, },
// 我的优惠券(已有的) // 我的优惠券(已有的)
getMemberCouponList({ store_id, gc_id, type, status }) { getMemberCouponList({ store_id, gc_id, type, status, page }) {
return vm.$u.post('Coupon/getMemberCouponList', { return vm.$u.post('Coupon/getMemberCouponList', {
store_id: store_id, store_id: store_id,
gc_id: gc_id, gc_id: gc_id,
type: type, type: type,
status: status, status: status,
page: page,
}); });
}, },
// 获取直播列表 // 获取直播列表
@@ -363,6 +359,27 @@ export default {
addrefundall({order_id,reason_info}) { addrefundall({order_id,reason_info}) {
return vm.$u.post('order/add_refund_all',{order_id,reason_info}) return vm.$u.post('order/add_refund_all',{order_id,reason_info})
}, },
//提示文字
tips(){
return vm.$u.post('Shop/tips')
},
//内容
tipsinfo({document_code}){
return vm.$u.post('Shop/tipInfo',{document_code})
},
advClick({ adv_id }) {
return vm.$u.post('adv/advClick',{ adv_id })
},
//统计登录
recordAppOpenTimes({appversion,device_type}){
// appversion=1.0.0&device_type=android/ios
return vm.$u.post("Member/recordAppOpenTimes",{appversion,device_type})
},
//统计直播间浏览次数
// https://mall.dmygkeji.com/api/Live/countLiveBrowse?live_id=1
countLiveBrowse({live_id}){
return vm.$u.post("Live/countLiveBrowse",{live_id})
}
} }
} }

View File

@@ -154,10 +154,11 @@ export default {
}); });
}, },
// 美甲-提交订单 // 美甲-提交订单
addManicure({ name, time }) { addManicure({ name, phone, time }) {
return vm.$u.post('MemberManicure/addManicure', { return vm.$u.post('MemberManicure/addManicure', {
name: name, name: name,
time: time phone: phone,
// time: time
}); });
}, },
// 会员服务-积分数 // 会员服务-积分数
@@ -242,13 +243,17 @@ export default {
if(type > 0) Object.assign(params, {type: type}); if(type > 0) Object.assign(params, {type: type});
return vm.$u.post('Order/orderList', params); return vm.$u.post('Order/orderList', params);
}, },
// 各种订单数量
getOrderNumber() {
return vm.$u.post('order/orderNumber');
},
// 售后列表 // 售后列表
// getAfterSaleList({ page }) { // getAfterSaleList({ page }) {
// return vm.$u.post('order/afterSaleList', { page: page }); // return vm.$u.post('order/afterSaleList', { page: page });
// }, // },
// 试穿列表 // 试穿列表
goodsTryOrderList() { goodsTryOrderList({ page }) {
return vm.$u.post('order/goodsTryOrderList'); return vm.$u.post('order/goodsTryOrderList', { page });
}, },
// 试穿订单确认完成 // 试穿订单确认完成
goodsTryConfirm({ id }) { goodsTryConfirm({ id }) {
@@ -353,6 +358,12 @@ export default {
code: code, code: code,
}); });
}, },
// 获取可送洗商品
getSendOrderList({ page }) {
return vm.$u.post('member/getSendOrderList', {
page: page,
});
},
// 送洗列表-平台订单 实体店订单 // 送洗列表-平台订单 实体店订单
sendLaundryOrderList({ type, page }) { sendLaundryOrderList({ type, page }) {
return vm.$u.post('member/sendLaundryOrderList', { return vm.$u.post('member/sendLaundryOrderList', {
@@ -365,10 +376,9 @@ export default {
return vm.$u.post('member/getClothesTypeList'); return vm.$u.post('member/getClothesTypeList');
}, },
// 送洗评价 // 送洗评价
sendOrderComment({ id, comment }) { sendOrderComment({ id, comment, comment_img }) {
return vm.$u.post('member/sendOrderComment', { return vm.$u.post('member/sendOrderComment', {
id: id, id, comment, comment_img
comment: comment,
}); });
}, },
// 送洗确认完成 // 送洗确认完成
@@ -444,8 +454,51 @@ export default {
//获取默认头像 //获取默认头像
getDefaultAvatar(){ getDefaultAvatar(){
return vm.$u.post("member/getDefaultAvatar") return vm.$u.post("member/getDefaultAvatar")
},
// 第三方账号绑定【微信|QQ】
bindingThird({ openid, type }) {
return vm.$u.post("auth/memberBindThird", {
third_openid: openid,
third_type: type,
})
},
// 解绑
unbindingThird({ type }) {
return vm.$u.post("auth/memberUnbindThird", {
third_type: type,
})
},
getIndustryList() {
return vm.$u.post("Expertapply/industryList")
},
getHobbyList() {
return vm.$u.post("Expertapply/hobbyList")
},
// 达人申请
applyExpert({ name, mobile, idcard, address, industry, hobby }) {
return vm.$u.post("Expertapply/expertApply", {
name, mobile, idcard, address, industry, hobby
})
},
getInvoiceList() {
return vm.$u.post("Invoice/invoiceList")
},
getInvoiceInfo({ invoice_id }) {
return vm.$u.post("Invoice/invoiceInfo", { invoice_id })
},
invoiceAdd({ invoice_type, invoice_title, invoice_code, invoice_goto_addr, invoice_rec_mobphone, invoice_reg_bname, invoice_reg_baccount }) {
return vm.$u.post("Invoice/invoiceAdd", {
invoice_type, invoice_title, invoice_code, invoice_goto_addr, invoice_rec_mobphone, invoice_reg_bname, invoice_reg_baccount
})
},
invoiceEdit({ invoice_id, invoice_title, invoice_code, invoice_goto_addr, invoice_rec_mobphone, invoice_reg_bname, invoice_reg_baccount, invoice_type }) {
return vm.$u.post("Invoice/invoiceEdit", {
invoice_id, invoice_title, invoice_code, invoice_goto_addr, invoice_rec_mobphone, invoice_reg_bname, invoice_reg_baccount, invoice_type
})
},
invoiceDel({ invoice_id }) {
return vm.$u.post("Invoice/invoiceDel", { invoice_id })
},
} }
} }
}
} }

View File

@@ -2,7 +2,7 @@ var md5 = require("../static/js/md5.min.js")
const install = (Vue, vm) => { const install = (Vue, vm) => {
// 此为自定义配置参数,具体参数见上方说明 // 此为自定义配置参数,具体参数见上方说明
Vue.prototype.$u.http.setConfig({ Vue.prototype.$u.http.setConfig({
baseUrl: 'https://dmmall.sdbairui.com/api', baseUrl: 'https://mall.dmygkeji.com/api',
loadingText: '努力加载中~', loadingText: '努力加载中~',
loadingTime: 800, loadingTime: 800,
originalData: true originalData: true

View File

@@ -20,6 +20,11 @@ const store = new Vuex.Store({
token: "", // 储存token token: "", // 储存token
showLoginModel: false, // 登录框 showLoginModel: false, // 登录框
question: {}, // 帮助与反馈 question: {}, // 帮助与反馈
showCoupons: true, // 是否显示新人领取优惠券
invoiceInfo: { // 是否选择发票
invoice_type: '',
invoice_id: 0,
}
}, },
getters: { getters: {
getOrderAddress(state) { getOrderAddress(state) {
@@ -30,6 +35,13 @@ const store = new Vuex.Store({
}, },
getGoodsInfo(state) { getGoodsInfo(state) {
return state.goodsDetails.goods; return state.goodsDetails.goods;
},
hasInvoice(state) {
const type = state.invoiceInfo.invoice_type;
return type ? type : 0;
},
getInvoiceId(state) {
return state.invoiceInfo.invoice_id || 0;
} }
}, },
mutations: { mutations: {
@@ -79,6 +91,12 @@ const store = new Vuex.Store({
}, },
setQuestion(state, question) { setQuestion(state, question) {
state.question = question; state.question = question;
},
updateShowCoupons(state, status) {
state.showCoupons = status;
},
setInvoiceInfo(state, invoice = {}) {
state.invoiceInfo = invoice;
} }
} }
}) })

View File

@@ -9,7 +9,7 @@
<view class="text">{{ content.geval_content }}</view> <view class="text">{{ content.geval_content }}</view>
</view> </view>
<view class="image-container"> <view class="image-container">
<image :src="src" v-for="(src, index) in content.geval_image" :key="index" @click="previewImage(content.geval_image)"></image> <image :src="src" v-for="(src, index) in content.geval_image" :key="index" @click="previewImage(content.geval_image, index)" mode="aspectFit"></image>
</view> </view>
<view class="reply" v-if="reply && content.geval_explain"> <view class="reply" v-if="reply && content.geval_explain">
<view class="title">掌柜回复</view> <view class="title">掌柜回复</view>
@@ -41,11 +41,12 @@ export default {
if(this.content.hasOwnProperty('scores_two')) this.rate = this.content.scores_two; if(this.content.hasOwnProperty('scores_two')) this.rate = this.content.scores_two;
}, },
methods: { methods: {
previewImage(urls) { previewImage(urls, index) {
console.log(urls); // console.log(urls);
// uni.previewImage({ uni.previewImage({
// urls: urls, urls: urls,
// }); current: urls[index]
});
}, },
} }
}; };

View File

@@ -1,9 +1,12 @@
<template> <template>
<view class="video-item" v-if="item" @click="toDetailsPage(item.article_id,item.video_path)"> <view class="video-item" v-if="item" @click="toDetailsPage(item.article_id,item.video_path)">
<image class="head" :src="item.article_pic" v-if="item.type == 1" ></image> <image class="head" :src="item.article_pic" v-if="item.type == 1"></image>
<view class="header_fist" v-else> <view class="header_fist" v-else>
<view class="backes"></view> <view class="backes">
<image class="head" :src="item.article_pic" ></image> <u-icon name="play-circle-fill" color="#ffffff" size="20"></u-icon>
<text>视频</text>
</view>
<image class="head" :src="item.article_pic" mode="aspectFill"></image>
</view> </view>
<view class="title" v-if="">{{ item.article_title }}</view> <view class="title" v-if="">{{ item.article_title }}</view>
<view class="jianjie">{{ item.article_content }}</view> <view class="jianjie">{{ item.article_content }}</view>
@@ -12,7 +15,7 @@
<image :src="item.member_avatar"></image> <image :src="item.member_avatar"></image>
<text>{{ item.member_nickname }}</text> <text>{{ item.member_nickname }}</text>
</view> </view>
<image src="/static/image/common/4.png" @click.stop="showAction"></image> <image class="img-imp" src="/static/image/common/4.png" @click.stop="showAction"></image>
<view class="action" v-if="show == item.article_id"> <view class="action" v-if="show == item.article_id">
<view class="bubble"> <view class="bubble">
<view @click.stop="articleLike"> <view @click.stop="articleLike">
@@ -51,10 +54,10 @@
.title{ .title{
margin:0 auto; margin:0 auto;
margin-top: 4rpx; margin-top: 4rpx;
font-size: 28rpx; font-size: 23rpx;
color: #333; color: #333;
font-weight: 500; font-weight: 500;
line-height: 40rpx; line-height: 36rpx;
width: 300rpx; width: 300rpx;
overflow:hidden; overflow:hidden;
text-overflow:ellipsis; text-overflow:ellipsis;
@@ -66,7 +69,7 @@
margin:0 auto; margin:0 auto;
margin-top: 10rpx; margin-top: 10rpx;
font-size: 22rpx; font-size: 22rpx;
color: #666; color: #656565;
line-height: 30rpx; line-height: 30rpx;
width: 300rpx; width: 300rpx;
margin-left: 18rpx; margin-left: 18rpx;
@@ -100,8 +103,9 @@
} }
} }
>image{ >image{
width: 37rpx; width: 35rpx;
height: 8rpx; height: 8rpx;
padding: 20rpx;
} }
.action { .action {
z-index: 19; z-index: 19;
@@ -172,11 +176,22 @@
.header_fist{ .header_fist{
position: relative; position: relative;
.backes{ .backes{
z-index: 99;
position: absolute; position: absolute;
top: 0; display: flex;
width: 100%; align-items: center;
height: 100%; justify-content: space-around;
top: 10rpx;
left: 10rpx;
width: 80rpx;
height: 30rpx;
padding: 0 10rpx;
border-radius: 30rpx;
background-color: rgba(0,0,0,0.5);
& > text {
color: #fff; color: #fff;
font-size: 18rpx;
}
} }
} }

View File

@@ -73,6 +73,9 @@ export default {
}, },
methods:{ methods:{
zhibo(){ zhibo(){
this.$u.api.countLiveBrowse({live_id:this.zid}).then((res)=>{
console.log(JSON.stringify(res),77)
})
this.$u.route({ this.$u.route({
url:"/pages/zhibo/index", url:"/pages/zhibo/index",
params:{ params:{
@@ -81,6 +84,7 @@ export default {
rid:this.rid rid:this.rid
} }
}) })
}, },
articleAddShield() { articleAddShield() {
console.log(this.item) console.log(this.item)

View File

@@ -1,10 +1,12 @@
<template> <template>
<view class="notice"> <view class="notice" :style="{height : height + 'px'}">
<view v-for="(item,index) in notice" :key="index" @click="gotoInfo(index)"> <view v-for="(item,index) in notice" :key="index" @click="gotoInfo(index)">
<view class="time_notice">{{ item.addtime }}</view> <view class="time_notice">{{ item.addtime }}</view>
<view class="notice_view"> <view class="notice_view">
<image :src="item.picture" mode="aspectFill" ></image> <image :src="item.picture" mode="aspectFill" ></image>
<view class="text_view u-line-2">{{ item.content }}</view> <view class="text_view">
<view class="u-line-2">{{ item.content }}</view>
</view>
<view class="notice_list"> <view class="notice_list">
<text>查看详情</text> <text>查看详情</text>
<u-icon name="arrow-right" color="#666"></u-icon> <u-icon name="arrow-right" color="#666"></u-icon>
@@ -28,20 +30,17 @@
border-radius: 20rpx 20rpx 0px 0px; border-radius: 20rpx 20rpx 0px 0px;
} }
.text_view{ .text_view{
font-size:26rpx; width: 690rpx;
font-weight:400; height: 120rpx;
color:rgba(51,51,51,1); padding: 26rpx;
margin: 28rpx 0 30rpx 0; color: #333;
width: 643rpx; font-size: 26rpx;
margin: 0 auto; line-height: 38rpx;
text-align: left;
line-height: 40rpx;
} }
.notice_view > view:nth-child(3){ .notice_view > view:nth-child(3){
height: 84rpx; height: 80rpx;
line-height: 84rpx; line-height: 80rpx;
border-top: 1px #F5F5F5 solid; border-top: 1px #F5F5F5 solid;
margin-top: 30rpx;
} }
} }
.time_notice{ .time_notice{
@@ -52,22 +51,11 @@
padding: 26rpx 0 39rpx 0; padding: 26rpx 0 39rpx 0;
} }
.notice_list{ .notice_list{
text-align: left; display: flex;
display: inline-block; align-items: center;
justify-content: space-between;
width: 100%; width: 100%;
position: relative;
padding: 0 25rpx; padding: 0 25rpx;
margin: 0 auto;
display: block;
}
.notice_list > view{
text-align: right;
position: absolute;
right: 25rpx;
top: 0;
bottom: 0;
margin: auto;
} }
</style> </style>
@@ -77,7 +65,8 @@
props: ['list'], props: ['list'],
data() { data() {
return { return {
notice : [] notice : [],
height : ''
}; };
}, },
watch: { watch: {
@@ -86,6 +75,8 @@
this.notice = newVal; this.notice = newVal;
} }
}, },
onLoad() {
},
methods: { methods: {
gotoInfo(index) { gotoInfo(index) {
console.log(index); console.log(index);

View File

@@ -6,8 +6,8 @@
</view> </view>
<view class="user-comment"> <view class="user-comment">
<view class="text u-line-2">{{ info.comment }}</view> <view class="text u-line-2">{{ info.comment }}</view>
<view class="image"> <view class="image" v-if="info.comment_img">
<image v-for="(src, index) in info.images" :key="index" :src="src" mode="aspectFit"></image> <image :src="info.comment_img" mode="aspectFit" @click="previewImage(info.comment_img)"></image>
</view> </view>
</view> </view>
</view> </view>
@@ -19,6 +19,14 @@ export default {
}, },
props: { props: {
info: Object, info: Object,
},
methods: {
previewImage(urls) {
const imagesUrl = [urls];
uni.previewImage({
urls: imagesUrl,
});
},
} }
}; };
</script> </script>
@@ -47,12 +55,12 @@ export default {
font-size: 26rpx; font-size: 26rpx;
color: rgba(51,51,51,1); color: rgba(51,51,51,1);
line-height: 40rpx; line-height: 40rpx;
margin-bottom: 19rpx;
} }
.image { .image {
display: flex; display: flex;
flex-wrap: wrap; flex-wrap: wrap;
> image { > image {
margin-top: 20rpx;
width: 210rpx; width: 210rpx;
height: 210rpx; height: 210rpx;
border-radius: 10rpx; border-radius: 10rpx;

View File

@@ -2,8 +2,8 @@
<view class="c-coupon"> <view class="c-coupon">
<view class="coupon-usable"> <view class="coupon-usable">
<view class="info-type" :style="{ backgroundImage: 'url(' + '/static/image/mine/30.png' + ')', backgroundSize:'contain', backgroundRepeat: 'no-repeat' }"> <view class="info-type" :style="{ backgroundImage: 'url(' + '/static/image/mine/30.png' + ')', backgroundSize:'contain', backgroundRepeat: 'no-repeat' }">
<div class="wrap_left_top"></div> <div class="wrap_left_top" v-if="couponInfo.type == 1">{{ couponInfo.vouchertemplate_id == 1 ? '新人专享' : '平台优惠券' }}</div>
{{ couponInfo.type == 2 ? '店铺优惠券' : '平台优惠券' }} <div class="wrap_left_top" v-else-if="couponInfo.type == 2">店铺优惠券</div>
</view> </view>
<view class="coupon-info"> <view class="coupon-info">
<view class="info-usable"> <view class="info-usable">

View File

@@ -1,9 +1,9 @@
<template> <template>
<view class="c-coupon" v-if="goodsClass.length"> <view class="c-coupon" v-if="goodsClass.length" @click="use">
<view :class="couponInfo.voucher_state != 1 ? 'coupon-unable' : 'coupon-usable'"> <view :class="couponInfo.voucher_state != 1 ? 'coupon-unable' : 'coupon-usable'" :style="{'width': type ? '650rpx' : '' }">
<view class="info-type" :style="{ backgroundImage: 'url(' + (couponInfo.voucher_state == 1 ? '/static/image/mine/30.png' : '/static/image/mine/31.png') + ')', backgroundSize:'contain', backgroundRepeat: 'no-repeat' }"> <view class="info-type" :style="{ backgroundImage: 'url(' + (couponInfo.voucher_state == 1 ? '/static/image/mine/30.png' : '/static/image/mine/31.png') + ')', backgroundSize:'contain', backgroundRepeat: 'no-repeat' }">
<div class="wrap_left_top"></div> <div class="wrap_left_top" v-if="couponInfo.type == 1">{{ couponInfo.vouchertemplate_id == 1 ? '新人专享' : '平台优惠券' }}</div>
{{ couponInfo.type == 2 ? '店铺优惠券' : '平台优惠券' }} <div class="wrap_left_top" v-else-if="couponInfo.type == 2">店铺优惠券</div>
</view> </view>
<view class="coupon-info"> <view class="coupon-info">
<view class="info-usable"> <view class="info-usable">
@@ -14,12 +14,13 @@
<view class="info-integral">兑换积分{{ couponInfo.voucher_points }}积分</view> <view class="info-integral">兑换积分{{ couponInfo.voucher_points }}积分</view>
<view class="info-date">有效期{{ couponInfo.voucher_startdate }}-{{ couponInfo.voucher_enddate }}</view> <view class="info-date">有效期{{ couponInfo.voucher_startdate }}-{{ couponInfo.voucher_enddate }}</view>
</view> </view>
<view class="coupon-btn"> <view class="coupon-btn" :style="{'right': type ? '110rpx' : '' }">
<text v-if="couponInfo.voucher_state == 1" @click="use">立即使用</text> <text v-if="couponInfo.voucher_state == 1">立即使用</text>
<image v-if="couponInfo.voucher_state == 2" src="/static/image/mine/28.png"></image> <image v-if="couponInfo.voucher_state == 2" src="/static/image/mine/28.png"></image>
<image v-if="couponInfo.voucher_state == 3" src="/static/image/mine/29.png"></image> <image v-if="couponInfo.voucher_state == 3" src="/static/image/mine/29.png"></image>
</view> </view>
</view> </view>
<image v-if="type" style="width:35rpx;height:35rpx;margin-left:14rpx;" :src="'/static/image/mine/' + (sel ? '41.png' : '42.png') "></image>
</view> </view>
</template> </template>
<script> <script>
@@ -37,6 +38,8 @@ export default {
status: Number, status: Number,
couponInfo: Object, couponInfo: Object,
goodsClass: Array, goodsClass: Array,
type:Boolean,
sel:Boolean
}, },
created() { created() {
// console.log(this.goodsClass); // console.log(this.goodsClass);
@@ -53,6 +56,7 @@ export default {
}, },
methods: { methods: {
use() { use() {
if(this.couponInfo.voucher_state != 1) return;
this.$emit('use', this.couponInfo); this.$emit('use', this.couponInfo);
}, },
}, },
@@ -63,6 +67,8 @@ export default {
position: relative; position: relative;
z-index: 9; z-index: 9;
margin-bottom: 30rpx; margin-bottom: 30rpx;
display: flex;
align-items: center;
@mixin coupon-image($url) { @mixin coupon-image($url) {
width: 690rpx; width: 690rpx;
height: 194rpx; height: 194rpx;

View File

@@ -8,7 +8,7 @@
<view class="order-status">{{ state }}</view> <view class="order-status">{{ state }}</view>
</view> </view>
<view class="goods-info"> <view class="goods-info">
<view class="goods-item" @click="toOtherPage('Details')" v-for="goods in order.extend_order_goods" :key="goods.goods_id"> <view class="goods-item" @click="toOtherPage('Details')" v-for="(goods,index) in order.extend_order_goods" :key="index">
<image :src="goods.goods_image"></image> <image :src="goods.goods_image"></image>
<view class="goods-text"> <view class="goods-text">
<view class="goods-name u-line-2">{{ goods.goods_name }}</view> <view class="goods-name u-line-2">{{ goods.goods_name }}</view>
@@ -25,7 +25,7 @@
<view class="order-btn" v-if="[1, 2, 3, 4, 8, 11].indexOf(order.view_type) >= 0"> <view class="order-btn" v-if="[1, 2, 3, 4, 8, 11].indexOf(order.view_type) >= 0">
<!-- || order.view_type == 2 --> <!-- || order.view_type == 2 -->
<view class="cancel" v-if="(order.view_type == 3 || order.view_type == 2) && order.is_refund == 1" @click="toOtherPage('RefundOrder')">申请退款</view> <view class="cancel" v-if="(order.view_type == 3 || order.view_type == 2) && order.is_refund == 1" @click="toOtherPage('RefundOrder')">申请退款</view>
<view class="cancel" v-if="order.view_type == 3 && order.shipping_code" @click="toOtherPage('Logistics')">查看物流</view> <view class="cancel" v-if="order.view_type == 3 && order.shipping_code && (order.store_deliver_type ? order.store_deliver_type != 3 : order.member_deliver_type != 3)" @click="toOtherPage('Logistics')">查看物流</view>
<view class="logistics" v-if="order.view_type == 3" @click="confirmReceive">确认收货</view> <view class="logistics" v-if="order.view_type == 3" @click="confirmReceive">确认收货</view>
<view class="comment" v-if="order.view_type == 4" @click="toOtherPage('Comment')">立即评价</view> <view class="comment" v-if="order.view_type == 4" @click="toOtherPage('Comment')">立即评价</view>
<view class="cancel" v-if="order.view_type == 1" @click="cancelOrder">取消支付</view> <view class="cancel" v-if="order.view_type == 1" @click="cancelOrder">取消支付</view>
@@ -67,7 +67,6 @@ export default {
} }
}, },
methods: { methods: {
cancelOrder() { cancelOrder() {
this.$u.api.cancelOrder({ this.$u.api.cancelOrder({
order_id: this.order.order_id, order_id: this.order.order_id,

View File

@@ -12,9 +12,7 @@
<image :src="order.goods_image"></image> <image :src="order.goods_image"></image>
<view class="goods-text"> <view class="goods-text">
<view class="goods-name u-line-2">{{ order.goods_name }}</view> <view class="goods-name u-line-2">{{ order.goods_name }}</view>
<!-- <view class="goods-sku u-line-1" v-if="order.order_state !== 20 && order.order_state !== 40 && goods.goods_spec"> <view class="goods-sku u-line-1" v-if="order.goods_spec">{{ order.goods_spec | concatSpec }}</view>
<text v-for="(spec, index) in goods.goods_spec" :key="index">{{ spec + ';' }}</text>
</view> -->
<!-- <view class="goods-time u-line-1" v-if="order.order_state == 10 || order.order_state == 10">结束时间{{ order.add_time * 1000 | date('yyyy-mm-dd hh:MM') }}</view> --> <!-- <view class="goods-time u-line-1" v-if="order.order_state == 10 || order.order_state == 10">结束时间{{ order.add_time * 1000 | date('yyyy-mm-dd hh:MM') }}</view> -->
</view> </view>
</view> </view>
@@ -38,7 +36,18 @@ export default {
created() { created() {
this.viewState(); this.viewState();
}, },
filters: {}, filters: {
concatSpec(value) {
let spec = '';
for (const key in value) {
if (value.hasOwnProperty(key)) {
const element = value[key];
spec = spec + element + ';'
}
}
return spec;
}
},
methods: { methods: {
// "goods_try_order_status": 0, 试穿订单状态 0:待处理订单 20:同意 40:拒绝此订单 50:完成 // "goods_try_order_status": 0, 试穿订单状态 0:待处理订单 20:同意 40:拒绝此订单 50:完成
viewState() { viewState() {
@@ -131,6 +140,7 @@ export default {
line-height: 38rpx; line-height: 38rpx;
} }
.goods-sku { .goods-sku {
align-self: baseline;
max-width: 230rpx; max-width: 230rpx;
background: rgba(236,236,236,1); background: rgba(236,236,236,1);
border-radius: 6rpx; border-radius: 6rpx;

View File

@@ -22,7 +22,7 @@
<view class="swiper-item uni-bg-red"> <view class="swiper-item uni-bg-red">
<image :src=" 'https://' + item.launch_path"></image> <image :src=" 'https://' + item.launch_path"></image>
</view> </view>
<view class="btn-init" v-if="parseInt(index) == 2" @click="goNext">立即体验</view> <view class="btn-init" v-if="parseInt(index) == list.length - 1" @click="goNext">立即体验</view>
</swiper-item> </swiper-item>
</swiper> </swiper>
</view> </view>
@@ -50,8 +50,8 @@
data() { data() {
return { return {
remaining: 7, remaining: 7,
type: true, type: false,
banner: false, banner: true,
protocol: false, protocol: false,
heightOut: '', heightOut: '',
imgurl: [], imgurl: [],
@@ -116,18 +116,18 @@
}, },
// 3秒倒计时 // 3秒倒计时
remaining_time() { remaining_time() {
this.timer = setInterval(() => { // this.timer = setInterval(() => {
this.remaining--; // this.remaining--;
if (this.remaining <= 0) { // if (this.remaining <= 0) {
clearInterval(this.timer); // clearInterval(this.timer);
console.log("完了") // console.log("完了")
this.type = !this.type; // // this.type = !this.type;
this.banner = !this.banner; // // this.banner = !this.banner;
} // }
}, 1000); // }, 1000);
}, },
leap_over() { leap_over() {
this.type = !this.type // this.type = !this.type
this.banner = !this.banner; this.banner = !this.banner;
clearInterval(this.timer) clearInterval(this.timer)
// 获取屏幕高度 // 获取屏幕高度

View File

@@ -13,7 +13,7 @@
<swiper :current="swiperCurrent" @animationfinish="animationfinish" style="height: 340rpx;"> <swiper :current="swiperCurrent" @animationfinish="animationfinish" style="height: 340rpx;">
<swiper-item class="swiper-item list" v-for="(_, i) in classifyList" :key="i"> <swiper-item class="swiper-item list" v-for="(_, i) in classifyList" :key="i">
<!-- 最多显示3个 --> <!-- 最多显示3个 -->
<view v-if="groupList[i]"> <view v-if="groupList[i]" class="group-container">
<sitem :info="info" v-for="(info, index) in groupList[i].slice(0, 3)" :key="index"></sitem> <sitem :info="info" v-for="(info, index) in groupList[i].slice(0, 3)" :key="index"></sitem>
</view> </view>
<u-empty text="暂无拼团商品" mode="list" color="#000" v-if="!groupList[i] || !groupList[i].length" style="margin: 0 auto;"></u-empty> <u-empty text="暂无拼团商品" mode="list" color="#000" v-if="!groupList[i] || !groupList[i].length" style="margin: 0 auto;"></u-empty>
@@ -61,7 +61,7 @@ export default {
gc_id: id, gc_id: id,
}).then(res => { }).then(res => {
this.groupList[this.current] = res.data; this.groupList[this.current] = res.data;
// console.log(this.groupList); console.log(this.groupList);
this.$forceUpdate(); this.$forceUpdate();
}) })
}, },
@@ -105,6 +105,7 @@ export default {
.list { .list {
box-sizing: border-box; box-sizing: border-box;
padding: 0 30rpx; padding: 0 30rpx;
.group-container {
display: flex; display: flex;
> view { > view {
&:not(:nth-child(3n)) { &:not(:nth-child(3n)) {
@@ -112,5 +113,6 @@ export default {
} }
} }
} }
}
} }
</style> </style>

View File

@@ -3,8 +3,8 @@
<image class="head" :src="info.pintuan_image" mode="widthFix"></image> <image class="head" :src="info.pintuan_image" mode="widthFix"></image>
<text class="title u-line-1">{{ info.pintuan_goods_name }}</text> <text class="title u-line-1">{{ info.pintuan_goods_name }}</text>
<view class="price"> <view class="price">
<view>{{ info.pintuan_goods_price }}</view> <view class="value">{{ info.pintuan_goods_price }}</view>
<view>立即拼团</view> <view class="btn">立即拼团</view>
</view> </view>
</view> </view>
</template> </template>
@@ -62,19 +62,21 @@ export default {
} }
.price{ .price{
display: flex; display: flex;
// align-items: center; align-items: center;
align-content: flex-end; // align-content: flex-end;
justify-content: space-between; justify-content: space-between;
margin-top: 10rpx; margin-top: 16rpx;
> view:first-child{ .value {
font-size: 26rpx; font-size: 26rpx;
color: #FF3131; color: #FF3131;
margin-bottom: 12rpx; // margin-bottom: 12rpx;
} }
> view:last-child{ .btn {
font-size: 22rpx; font-size: 22rpx;
height: 22rpx; height: 22rpx;
color: #FDD360; color: #FDD360;
text-align: end;
// margin-top:8rpx;
} }
} }
} }

View File

@@ -110,7 +110,6 @@ export default {
left: 0; left: 0;
top: 0; top: 0;
z-index: 8; z-index: 8;
background-color: aqua;
} }
&:last-child { &:last-child {
left: 32rpx; left: 32rpx;

View File

@@ -33,7 +33,7 @@ export default {
border-radius: 50%; border-radius: 50%;
} }
>text{ >text{
width: 100rpx; max-width: 100rpx;
margin-top: 14rpx; margin-top: 14rpx;
font-size: 24rpx; font-size: 24rpx;
color: #333; color: #333;

View File

@@ -1,26 +1,26 @@
<template> <template>
<view class="special"> <view class="special">
<view v-if="type == 'spike'"> <view v-if="type == 'spike'" @click="spikeGoods">
<image :src="item.groupbuy_image1" @click="spikeGoods"></image> <image :src="item.groupbuy_image1" mode="aspectFill"></image>
<view class="right"> <view class="right">
<view class="name u-line-1" @click="spikeGoods">{{ item.goods_name }}</view> <view class="name u-line-1">{{ item.goods_name }}</view>
<view class="price"> <view class="price">
<view class="groupbuy-price">{{ item.groupbuy_price }}</view> <view class="groupbuy-price">{{ item.groupbuy_price }}</view>
<view class="goods-price">{{ item.goods_price }}</view> <view class="goods-price">{{ item.goods_price }}</view>
</view> </view>
<view class="buy"> <view class="buy">
<view class="num">剩余{{ item.inventory }}</view> <view class="num">剩余{{ item.inventory }}</view>
<view class="btn" @click="spikeGoods">立即购买</view> <view class="btn">立即购买</view>
</view> </view>
</view> </view>
</view> </view>
<view v-if="type == 'group'"> <view v-if="type == 'group'" @click="toDetailsPage">
<image :src="item.pintuan_image" @click="toDetailsPage"></image> <image :src="item.pintuan_image"></image>
<view class="right"> <view class="right">
<view class="name u-line-1" @click="toDetailsPage">{{ item.pintuan_goods_name }}</view> <view class="name u-line-1">{{ item.pintuan_goods_name }}</view>
<view class="price group"> <view class="price group">
<view class="groupbuy-price">{{ item.pintuan_goods_price }}</view> <view class="groupbuy-price">{{ item.pintuan_goods_price }}</view>
<view class="btn" @click="toDetailsPage">立即拼团</view> <view class="btn">立即拼团</view>
</view> </view>
</view> </view>
</view> </view>

View File

@@ -5,6 +5,10 @@ import uView from "uview-ui";
Vue.config.productionTip = false Vue.config.productionTip = false
Vue.use(uView); Vue.use(uView);
App.mpType = 'app' App.mpType = 'app'
// 当前 app 版本号
Vue.prototype.$app_version = '1.0.0';
Vue.prototype.imService = new IMService(); Vue.prototype.imService = new IMService();
Vue.prototype.a = 1; Vue.prototype.a = 1;
import store from '@/common/store/index.js' import store from '@/common/store/index.js'

View File

@@ -2,7 +2,7 @@
"name" : "德铭阳光", "name" : "德铭阳光",
"appid" : "__UNI__EBFF00A", "appid" : "__UNI__EBFF00A",
"description" : "", "description" : "",
"versionName" : "1.0.0", "versionName" : "1.0.1",
"versionCode" : "100", "versionCode" : "100",
"transformPx" : false, "transformPx" : false,
/* 5+App */ /* 5+App */
@@ -16,6 +16,13 @@
"autoclose" : true, "autoclose" : true,
"delay" : 0 "delay" : 0
}, },
"safearea" : {
//安全区域配置仅iOS平台生效
"bottom" : {
// 底部安全区域配置
"offset" : "none" // 底部安全区域偏移,"none"表示不空出安全区域,"auto"自动计算空出安全区域,默认值为"none"
}
},
/* */ /* */
"modules" : { "modules" : {
"OAuth" : {}, "OAuth" : {},
@@ -112,22 +119,22 @@
}, },
"icons" : { "icons" : {
"android" : { "android" : {
"hdpi" : "static/app/icon/72x72.png", "hdpi" : "E:/Source-code/appleidmore/安卓png/72x72psd.PNG",
"xhdpi" : "static/app/icon/96x96.png", "xhdpi" : "E:/Source-code/appleidmore/安卓png/96x96psd.PNG",
"xxhdpi" : "static/app/icon/144x144.png", "xxhdpi" : "E:/Source-code/appleidmore/安卓png/144x144.PNG",
"xxxhdpi" : "static/app/icon/192x192.png" "xxxhdpi" : "E:/Source-code/appleidmore/安卓png/192x192.PNG"
}, },
"ios" : { "ios" : {
"appstore" : "unpackage/res/icons/1024x1024.png", "appstore" : "E:/Source-code/appleidmore/苹果png/appstore 1024X1024.PNG",
"iphone" : { "iphone" : {
"app@2x" : "unpackage/res/icons/120x120.png", "app@2x" : "E:/Source-code/appleidmore/苹果png/120x120.PNG",
"app@3x" : "unpackage/res/icons/180x180.png", "app@3x" : "E:/Source-code/appleidmore/苹果png/180x180.PNG",
"spotlight@2x" : "unpackage/res/icons/80x80.png", "spotlight@2x" : "E:/Source-code/appleidmore/苹果png/80x80.PNG",
"spotlight@3x" : "unpackage/res/icons/120x120.png", "spotlight@3x" : "E:/Source-code/appleidmore/苹果png/120x120.PNG",
"settings@2x" : "unpackage/res/icons/58x58.png", "settings@2x" : "E:/Source-code/appleidmore/苹果png/58x58psd.PNG",
"settings@3x" : "unpackage/res/icons/87x87.png", "settings@3x" : "E:/Source-code/appleidmore/苹果png/87X87.PNG",
"notification@2x" : "unpackage/res/icons/40x40.png", "notification@2x" : "E:/Source-code/appleidmore/苹果png/40X40.PNG",
"notification@3x" : "unpackage/res/icons/60x60.png" "notification@3x" : "E:/Source-code/appleidmore/苹果png/60X60.PNG"
}, },
"ipad" : { "ipad" : {
"app" : "unpackage/res/icons/76x76.png", "app" : "unpackage/res/icons/76x76.png",

View File

@@ -61,6 +61,7 @@
</view> </view>
</template> </template>
<script> <script>
import IMService from '@/static/imservice.js'
import identifying from '@/components/logininput/identifying' import identifying from '@/components/logininput/identifying'
import { import {
mapMutations mapMutations
@@ -107,6 +108,8 @@
let pages = getCurrentPages(); let pages = getCurrentPages();
let prePage = pages[pages.length - 2]; let prePage = pages[pages.length - 2];
this.temp_url = prePage.route; this.temp_url = prePage.route;
console.log(this.imService.lianjie)
this.imService.disconnect()
// console.log(this.temp_url); // console.log(this.temp_url);
}, },
// 切断正常返回 // 切断正常返回
@@ -181,6 +184,7 @@
me.loginIn(res.data.token); //存储一个字符传值 me.loginIn(res.data.token); //存储一个字符传值
// 缓存用户的信息 // 缓存用户的信息
uni.setStorageSync('user_info',res.data); uni.setStorageSync('user_info',res.data);
this.imService.disconnect()
if (res.data.member.has_labels) { if (res.data.member.has_labels) {
uni.switchTab({ uni.switchTab({
url: '/pages/index/index' url: '/pages/index/index'

View File

@@ -3,11 +3,11 @@
<view class="label-list"> <view class="label-list">
<view v-for="(label, index) in evaluateSpec" :key="index" :class="{'active': current == index}" @click="current=index">{{ index + '(' + label + ')' }}</view> <view v-for="(label, index) in evaluateSpec" :key="index" :class="{'active': current == index}" @click="current=index">{{ index + '(' + label + ')' }}</view>
</view> </view>
<view class="comment-container"> <view class="comment-container" v-if="isShow">
<view v-for="(item, index) in evalueList" :key="index" class="itme"> <view v-for="(item, index) in evalueList" :key="index" class="itme">
<comment :reply="true" :content="item"></comment> <comment :reply="true" :content="item"></comment>
</view> </view>
<u-empty text="暂无评" mode="list" v-if="!evalueList.length" margin-top="120" color="#333"></u-empty> <u-empty text="暂无评" mode="list" v-if="!evalueList.length" margin-top="120" color="#333"></u-empty>
</view> </view>
<!-- 加载更多 --> <!-- 加载更多 -->
<u-loadmore :status="loadStatus" bgColor="#EEEBEE" margin-top="20" margin-bottom="20" v-if="evalueList.length >= 12"></u-loadmore> <u-loadmore :status="loadStatus" bgColor="#EEEBEE" margin-top="20" margin-bottom="20" v-if="evalueList.length >= 12"></u-loadmore>
@@ -25,6 +25,7 @@ export default {
evaluateSpec: {}, evaluateSpec: {},
loadStatus: 'loadmore', loadStatus: 'loadmore',
timer: true, timer: true,
isShow: false, // 是否显示组建
} }
}, },
components: { components: {
@@ -50,7 +51,7 @@ export default {
if(!this.timer) return false; if(!this.timer) return false;
this.loadStatus = "loading"; this.loadStatus = "loading";
this.page++; this.page++;
this.getAllEvalue({ type: this.current, load: 'more' }).then(length => { this.getAllEvalue({ type: this.current, load: 'loadmore' }).then(length => {
if(length == 0) { if(length == 0) {
this.page--; this.page--;
this.loadStatus = 'nomore'; this.loadStatus = 'nomore';
@@ -72,15 +73,17 @@ export default {
} }
}) })
}, },
async getAllEvalue({ type, load } = {}) { async getAllEvalue({ type, load = 'reload' } = {}) {
let params = { let params = {
goods_id: this.id, goods_id: this.id,
page: this.page, page: this.page,
} }
if(type) Object.assign(params, { type: type }); if(type) Object.assign(params, { type: type });
this.isShow = false;
const res = await this.$u.api.getAllEvalue(params); const res = await this.$u.api.getAllEvalue(params);
this.isShow = true;
if (res.errCode == 0) { if (res.errCode == 0) {
if(load) this.evalueList.push(...res.data); if(load == 'loadmore') this.evalueList.push(...res.data);
else this.evalueList = res.data; else this.evalueList = res.data;
} else { } else {
this.evalueList = []; this.evalueList = [];

View File

@@ -31,12 +31,16 @@
height: 60rpx; height: 60rpx;
background-color: #ececec; background-color: #ececec;
color: #999; color: #999;
text-align: center; // text-align: center;
line-height: 60rpx; // line-height: 60rpx;
box-sizing: border-box; box-sizing: border-box;
border-radius: 6rpx; border-radius: 6rpx;
margin-right: 26rpx; margin-right: 26rpx;
margin-bottom: 20rpx; margin-bottom: 20rpx;
border: #ececec 1rpx solid;
display: flex;
align-items: center;
justify-content: center;
} }
.xuanzhong{ .xuanzhong{
border: #ff780f 1rpx solid; border: #ff780f 1rpx solid;

View File

@@ -64,7 +64,7 @@
z-index: 100; z-index: 100;
position: absolute; position: absolute;
top: 80rpx; top: 80rpx;
left: 30rpx; left: 34rpx;
width: 50rpx; width: 50rpx;
height: 50rpx; height: 50rpx;
} }
@@ -75,7 +75,7 @@
/* #endif */ /* #endif */
align-items: center; align-items: center;
flex-direction: column; flex-direction: column;
padding: 0 30rpx; // padding: 0 30rpx;
} }
.operat-span { .operat-span {
@@ -134,7 +134,7 @@
// 关注 // 关注
following(id) { following(id) {
uni.request({ uni.request({
url: "https://dmmall.sdbairui.com/api/member/attentionMember", url: "https://mall.dmygkeji.com/api/member/attentionMember",
method: "POST", method: "POST",
data: { data: {
member_id: id member_id: id
@@ -163,7 +163,7 @@
likeType(id) { likeType(id) {
// console.log(id); // console.log(id);
uni.request({ uni.request({
url: "https://dmmall.sdbairui.com/api/article/articleLike", url: "https://mall.dmygkeji.com/api/article/articleLike",
method: "POST", method: "POST",
data: { data: {
article_id: id article_id: id
@@ -194,7 +194,7 @@
// 收藏 // 收藏
collecting(id) { collecting(id) {
uni.request({ uni.request({
url: "https://dmmall.sdbairui.com/api/article/articleCollect", url: "https://mall.dmygkeji.com/api/article/articleCollect",
method: "POST", method: "POST",
data: { data: {
article_id: id article_id: id

View File

@@ -45,6 +45,7 @@
<view>我们有万能穿搭公式</view> <view>我们有万能穿搭公式</view>
</view> </view>
</view> </view>
<u-toast ref="uToast" />
</view> </view>
</template> </template>
<script> <script>
@@ -60,8 +61,14 @@ export default {
methods: { methods: {
exchangeCoupon() { exchangeCoupon() {
this.$u.api.getCoupon({ id: 1 }).then(res => { this.$u.api.getCoupon({ id: 1 }).then(res => {
if(res.errCode == 0) {
this.$refs.uToast.show({
title: res.message,
url: '/pageE/tool/MineCoupon'
})
} else {
this.$u.toast(res.message); this.$u.toast(res.message);
if(res.errCode == 0) {} }
}) })
}, },
} }

View File

@@ -24,8 +24,8 @@
<!-- 用户操作 --> <!-- 用户操作 -->
<userinfo class="userinfo" :list="list" :cart="cart_type" :comment="is_comment" :num="comment_num" @openCart="openPopup"></userinfo> <userinfo class="userinfo" :list="list" :cart="cart_type" :comment="is_comment" :num="comment_num" @openCart="openPopup"></userinfo>
<!-- 评论 --> <!-- 评论 -->
<u-popup v-model="is_comment" class="pl" mode="bottom" border-radius="10" height="700rpx"> <u-popup v-model="is_comment" class="pl" mode="bottom" border-radius="10" @touchmove.stop.prevent="moveHandle">
<view class="top"> <view class="comment-top">
<text>评论</text> <text>评论</text>
<u-icon name="close" color="#333" size="28" @click="is_comment=false"></u-icon> <u-icon name="close" color="#333" size="28" @click="is_comment=false"></u-icon>
</view> </view>
@@ -52,7 +52,10 @@
</view> </view>
<view class="child_content">{{ child.content }}</view> <view class="child_content">{{ child.content }}</view>
</view> </view>
<view class="more-reply" v-if="item.reply_count" @click="getReplyList(item.id)">展开更多回复<u-icon name="arrow-down"></u-icon></view> <view class="more-reply" v-if="item.reply_count" @click="getReplyList(item.id)">
{{ child_end[item.id] ? "暂无更多回复" : "展开更多回复" }}
<u-icon name="arrow-down" v-if="!child_end[item.id]"></u-icon>
</view>
</view> </view>
</block> </block>
<view class="no-data" v-if="!commentList.length">还没有评论快来评论吧</view> <view class="no-data" v-if="!commentList.length">还没有评论快来评论吧</view>
@@ -80,7 +83,8 @@
<view v-for="(item,index) in list.goods" :key="index" class="item" @click="gotoInfo(item.goods_id)"> <view v-for="(item,index) in list.goods" :key="index" class="item" @click="gotoInfo(item.goods_id)">
<image :src="item.goods_image" mode="aspectFill"></image> <image :src="item.goods_image" mode="aspectFill"></image>
<view> <view>
<text class="title">{{ item.goods_advword }}</text> <text class="cart-title u-line-1">{{ item.goods_advword }}</text>
<text class="cart-info u-line-2">{{ item.goods_name }}</text>
<text class="price">{{ item.goods_promotion_price }}</text> <text class="price">{{ item.goods_promotion_price }}</text>
</view> </view>
</view> </view>
@@ -158,27 +162,32 @@
display: flex; display: flex;
flex-wrap: wrap; flex-wrap: wrap;
.label { .label {
padding: 6rpx 10rpx; height: 40rpx;
margin: 0 10rpx 10rpx 0; padding: 4rpx 14rpx;
font-size: 24rpx; margin-right: 10rpx;
margin-bottom: 10rpx;
font-size: 26rpx;
text-align: center;
line-height: 38rpx;
color: #fff; color: #fff;
border-radius: 6rpx; border-radius: 10rpx;
background-color: #000000; background-color: rgba(0, 0, 0, .6);
opacity: 0.5;
} }
} }
} }
.userinfo{ .userinfo{
z-index: 9999;
position: absolute; position: absolute;
right: 30rpx; right: 30rpx;
top: 50%; top: 50%;
transform: translateY(-285rpx); transform: translateY(-285rpx);
} }
.pl { .pl {
.top { .comment-top {
z-index: 1000; z-index: 1000;
position: fixed; position: fixed;
top: 0; top: 0;
left: 0;
display: flex; display: flex;
align-items: center; align-items: center;
justify-content: space-between; justify-content: space-between;
@@ -196,7 +205,7 @@
.scroll-box { .scroll-box {
z-index: 99; z-index: 99;
margin: 88rpx 0 100rpx 0; margin: 88rpx 0 100rpx 0;
height: 100%; height: 600rpx;
.box { .box {
display: flex; display: flex;
align-items: center; align-items: center;
@@ -216,6 +225,7 @@
height: 60rpx; height: 60rpx;
font-size: 26rpx; font-size: 26rpx;
color: #333; color: #333;
pointer-events: none;
.time { .time {
font-size: 22rpx; font-size: 22rpx;
color: #999; color: #999;
@@ -228,10 +238,13 @@
} }
.content { .content {
padding: 0 20rpx 10rpx 90rpx; padding: 0 20rpx 10rpx 90rpx;
pointer-events: none;
} }
.child-content { .child-content {
margin: 6rpx 90rpx 6rpx; margin: 6rpx 90rpx 6rpx;
// pointer-events: none;
.child-box { .child-box {
pointer-events: none;
.info { .info {
display: flex; display: flex;
align-items: center; align-items: center;
@@ -332,10 +345,16 @@
display: flex; display: flex;
flex-direction: column; flex-direction: column;
justify-content: space-around; justify-content: space-around;
color: #333; width: 500rpx;
color: #343434;
font-size: 28rpx; font-size: 28rpx;
.title { .cart-title {
line-height: 40rpx; line-height: 40rpx;
font-size: 29rpx;
}
.cart-info {
font-size: 24rpx;
line-height: 1.2;
} }
.name { .name {
width: 500rpx; width: 500rpx;
@@ -426,6 +445,7 @@ export default {
edit_text_other: "有爱评论,说点好听的 ~", edit_text_other: "有爱评论,说点好听的 ~",
commentList: [], // 评论 commentList: [], // 评论
allList: {}, // 全部子评论 allList: {}, // 全部子评论
child_end: {},
status: 'loadmore', status: 'loadmore',
iconType: 'circle', iconType: 'circle',
loadText: { loadText: {
@@ -503,6 +523,8 @@ export default {
// console.log(item); // console.log(item);
item.page = 0; item.page = 0;
item.commentList = []; item.commentList = [];
this.page_[item.id] = 0;
this.child_end[item.id] = false;
}) })
this.commentList = list; this.commentList = list;
} }
@@ -556,14 +578,14 @@ export default {
// console.log(p_id); // console.log(p_id);
if (res.data.data.pid) { if (res.data.data.pid) {
this.commentList[this.comment_id].reply_count = true; this.commentList[this.comment_id].reply_count = true;
console.log(this.allList[p_id]); // console.log(this.allList[p_id]);
if (this.allList[p_id]) { if (this.allList[p_id]) {
this.allList[p_id].push(res.data.data); this.allList[p_id].push(res.data.data);
} else { } else {
this.allList[p_id] = []; this.allList[p_id] = [];
this.allList[p_id].push(res.data.data); this.allList[p_id].push(res.data.data);
} }
console.log(this.allList); // console.log(this.allList);
} else { } else {
this.commentList.unshift(res.data.data); this.commentList.unshift(res.data.data);
} }
@@ -577,18 +599,20 @@ export default {
uni.showLoading({ uni.showLoading({
title: "loading..." title: "loading..."
}) })
if (!this.page_[id] === 0) {
}
this.$u.post("article/articleReplyList", {id: id, page: this.page_[id]}).then(res => { this.$u.post("article/articleReplyList", {id: id, page: this.page_[id]}).then(res => {
uni.hideLoading(); uni.hideLoading();
if (res.errCode == 0) { if (res.errCode == 0) {
// if (res.data.length < 10) { if (this.page_[id] == 0) {
// this.is_more = false;
// }
this.page_[id]++;
this.allList[id] = res.data; this.allList[id] = res.data;
} else {
this.allList[id] = this.allList[id].concat(res.data);
}
this.page_[id]++;
this.$forceUpdate();
// console.log(this.allList);
} else if (res.errCode == 1) {
this.child_end[id] = true;
this.$forceUpdate(); this.$forceUpdate();
console.log(this.allList);
} }
}) })
}, },
@@ -605,6 +629,7 @@ export default {
}, },
// 评论滚动到底部 // 评论滚动到底部
scrollBottom(e) { scrollBottom(e) {
console.log(1);
this.getComment(); this.getComment();
}, },
// 跳转到商品 // 跳转到商品
@@ -614,6 +639,11 @@ export default {
url: "/pageB/sdetails/index?id=" + id + "&type=" + 1, url: "/pageB/sdetails/index?id=" + id + "&type=" + 1,
}) })
}, },
// 禁止滚动
moveHandle(e) {
console.log(e);
return;
},
goBack() { goBack() {
uni.navigateBack({ uni.navigateBack({
delta: 1 delta: 1

View File

@@ -0,0 +1,44 @@
<template>
<view style="width:750rpx" :style="{'height':height}">
<image @click="calose()" style="width:30rpx;height:30rpx;position: fixed;top:80rpx;right:30rpx;" src="/static/image/clons.png"></image>
<video :src="url" class="video" :style="{'padding-top':top,'height': width}" :autoplay="true"></video>
</view>
</template>
<style>
.video{
width: 750rpx;
}
</style>
<script>
export default {
name:"video",
data(){
return {
url:"",
top:0,
height:0,
width:0
}
},
onLoad(a){
const res = uni.getSystemInfoSync();
let height = res.windowHeight
let width = res.windowWidth
this.width = width + ( (height - width) / 2) + 'px'
console.log(this.width)
this.top = (height - width) / 2+ 'px'
console.log(this.top)
this.height = height + 'px';
console.log(a)
this.url = a.url
},
methods:{
calose(){
uni.navigateBack({
delta: 1
});
}
}
}
</script>

View File

@@ -29,6 +29,7 @@
</view> </view>
<view class="pic" v-else-if="type == 1"> <view class="pic" v-else-if="type == 1">
<text>{{ goodsInfo.goods_price || '0.00' }}</text> <text>{{ goodsInfo.goods_price || '0.00' }}</text>
<s>{{ goodsInfo.goods_marketprice || '0.00' }}</s>
</view> </view>
<view class="collect" @click="switchCollect(goodsInfo.is_collect)"> <view class="collect" @click="switchCollect(goodsInfo.is_collect)">
<u-icon name="star-fill" color="#FF7807" size="28" v-if="goodsInfo.is_collect == 1"></u-icon> <u-icon name="star-fill" color="#FF7807" size="28" v-if="goodsInfo.is_collect == 1"></u-icon>
@@ -36,6 +37,10 @@
<text>{{ goodsInfo.is_collect == 1 ? '已收藏' : '收藏' }}</text> <text>{{ goodsInfo.is_collect == 1 ? '已收藏' : '收藏' }}</text>
</view> </view>
</view> </view>
<view class="shuliang">
<text>历史销售数量{{goodsInfo.goods_salenum}}</text>
<text>库存仅剩数量{{goodsInfo.goods_storage}}</text>
</view>
</view> </view>
<view class="hr"></view> <view class="hr"></view>
<!-- <navs :value="领券"></navs> --> <!-- <navs :value="领券"></navs> -->
@@ -44,7 +49,7 @@
<!-- <navs :value="'选择尺码'"></navs> --> <!-- <navs :value="'选择尺码'"></navs> -->
<view class="comment"> <view class="comment">
<view class="title"> <view class="title">
<view class="left">商品评价{{ evaluate.evaluate_num }}</view> <view class="left">商品评价{{ evaluate.evaluate_num || '0' }}</view>
<view class="right" @click="viewComment"> <view class="right" @click="viewComment">
<text>查看全部</text> <text>查看全部</text>
<image src="/static/image/common/1.png"></image> <image src="/static/image/common/1.png"></image>
@@ -120,6 +125,11 @@
<view class="heng"></view> <view class="heng"></view>
</view> </view>
<view class="rich"> <view class="rich">
<view class="goods-video" v-if="list.length && goodsInfo.video" @click="playVideo">
<image class="video-play" src="/static/videoPlay.png"></image>
<view class="blacks"></view>
<image class="video-img" :src="list[0].image" mode="aspectFill"></image>
</view>
<rich-text :nodes="goodsInfo.mobile_body"></rich-text> <rich-text :nodes="goodsInfo.mobile_body"></rich-text>
</view> </view>
<!-- 选择规格数量 --> <!-- 选择规格数量 -->
@@ -424,7 +434,7 @@ export default {
}, },
// 拼团详情 // 拼团详情
pinTuanDetails() { pinTuanDetails() {
console.log(this.id); // console.log(this.id);
this.$u.api.getPinTuanDetails({ this.$u.api.getPinTuanDetails({
pintuan_id: this.pintuan_id, pintuan_id: this.pintuan_id,
goods_id: this.id, goods_id: this.id,
@@ -675,6 +685,12 @@ export default {
id: id id: id
}); });
}, },
playVideo() {
console.log(this.goodsInfo.video);
this.$u.route('/pageB/playVideo/index', {
url: this.goodsInfo.video
});
}
}, },
} }
</script> </script>
@@ -764,6 +780,14 @@ export default {
.goods-name { .goods-name {
line-height: 1.5; line-height: 1.5;
} }
}
.shuliang{
padding-top: 33rpx;
font-size: 24rpx;
color:#656565;
display: flex;
justify-content: space-between;
} }
.price-collect { .price-collect {
display: flex; display: flex;
@@ -1084,6 +1108,30 @@ export default {
} }
.rich { .rich {
width: 100%; width: 100%;
.goods-video {
position: relative;
.video-img {
width: 100%;
}
.blacks {
width: 100%;
height: 100%;
position: absolute;
top: 0;
left: 0;
background-color: rgba(0, 0, 0, 0.35);
z-index: 8;
}
.video-play {
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
width: 100rpx;
height: 100rpx;
z-index: 9;
}
}
} }
.group-tool { .group-tool {
position: fixed; position: fixed;
@@ -1154,9 +1202,10 @@ export default {
background-color: #fff; background-color: #fff;
display: flex; display: flex;
position: fixed; position: fixed;
height: 98rpx;
width: 100%; width: 100%;
bottom:0; bottom: 0;
left: 0;
padding-bottom: env(safe-area-inset-bottom);
// border-top: 1rpx solid #ececec; // border-top: 1rpx solid #ececec;
z-index: 10076; z-index: 10076;
.navs{ .navs{
@@ -1216,6 +1265,7 @@ export default {
font-size: 30rpx; font-size: 30rpx;
color: #ff3131; color: #ff3131;
} }
} }
} }
.num { .num {

33
pageB/tipsinfo/index.vue Normal file
View File

@@ -0,0 +1,33 @@
<template>
<view class="u-content">
<u-parse :html="info"></u-parse>
</view>
</template>
<style lang="scss" scoped>
.u-content{
line-height: 46rpx;
font-size: 30rpx;
color: #333;
padding: 30rpx;
}
</style>
<script>
export default {
data(){
return {
info:""
}
},
onLoad(o){
console.log(o.id)
this.$u.api.tipsinfo({document_code:o.id}).then((res)=>{
console.log(JSON.stringify(res))
uni.setNavigationBarTitle({
title: res.data.document_title
});
this.info = res.data.document_content
})
}
}
</script>

View File

@@ -52,7 +52,7 @@
<view class="comment-list-box"> <view class="comment-list-box">
<view class="comment-list-header"> <view class="comment-list-header">
<image class="avatar" :src="item.member_avatar" mode=""></image> <image class="avatar" :src="item.member_avatar" mode=""></image>
<view> <view class="comment-title-info">
<text class="comment-title">{{ item.member_nickname }}</text> <text class="comment-title">{{ item.member_nickname }}</text>
<text class="comment-time">{{ item.create_time }}</text> <text class="comment-time">{{ item.create_time }}</text>
</view> </view>
@@ -71,10 +71,11 @@
</view> </view>
<text class="child_content">{{ child.content }}</text> <text class="child_content">{{ child.content }}</text>
</view> </view>
<view> <!-- <view> -->
<text class="more-comment" @click="getReplyList(item.id)" v-if="item.reply_count">展开更多回复</text> <text class="more-comment" @click="getReplyList(item.id)" v-if="item.reply_count">
<text></text> {{ child_end[item.id] ? "暂无更多回复" : "展开更多回复" }}
</view> </text>
<!-- </view> -->
</view> </view>
</view> </view>
<view class="send-box" @click="openKeyInput"> <view class="send-box" @click="openKeyInput">
@@ -109,6 +110,7 @@
<image class="goods-img" :src="item.goods_image" mode=""></image> <image class="goods-img" :src="item.goods_image" mode=""></image>
<view class="goods-info"> <view class="goods-info">
<text class="good-title">{{ item.goods_advword }}</text> <text class="good-title">{{ item.goods_advword }}</text>
<text class="good-name">{{ item.goods_name }}</text>
<text class="good-price">{{ item.goods_promotion_price }}</text> <text class="good-price">{{ item.goods_promotion_price }}</text>
</view> </view>
</view> </view>
@@ -133,7 +135,7 @@
<script> <script>
import userinfo from "../components/userinfo/index" // 点赞组件 import userinfo from "../components/userinfo/index" // 点赞组件
const temp_url = "https://dmmall.sdbairui.com/api/"; const temp_url = "https://mall.dmygkeji.com/api/";
export default { export default {
components: { components: {
userinfo userinfo
@@ -166,6 +168,7 @@
time_count: 0, time_count: 0,
linear: null, linear: null,
loadinging: false, loadinging: false,
child_end: {},
}; };
}, },
onLoad(option) { onLoad(option) {
@@ -178,7 +181,11 @@
this.videoBox = uni.createVideoContext("videoId", this); this.videoBox = uni.createVideoContext("videoId", this);
}, },
onHide() { onHide() {
if (uni.getSystemInfoSync().platform == "ios") {
console.log("ios");
} else if (uni.getSystemInfoSync().platform == "android") {
this.videoBox.pause(); this.videoBox.pause();
}
}, },
onBackPress() { onBackPress() {
if (this.cart_type) { if (this.cart_type) {
@@ -241,6 +248,16 @@
// console.log(res.data); // console.log(res.data);
this.commentList = res.data.data; this.commentList = res.data.data;
} }
let list = this.commentList;
list.forEach((item,index) => {
console.log(item);
item.page = 0;
item.commentList = [];
this.page_[item.id] = 0;
this.child_end[item.id] = false;
})
console.log(list);
this.commentList = list;
} }
}) })
}, },
@@ -312,8 +329,6 @@
uni.showLoading({ uni.showLoading({
title: "loading..." title: "loading..."
}) })
if (!this.page_[id] === 0) {}
console.log(id);
uni.request({ uni.request({
url: temp_url + "article/articleReplyList", url: temp_url + "article/articleReplyList",
method: "POST", method: "POST",
@@ -326,16 +341,20 @@
}, },
success: (res) => { success: (res) => {
uni.hideLoading(); uni.hideLoading();
console.log(this.page_);
if (res.data.errCode == 0) { if (res.data.errCode == 0) {
if (res.data.data.length < 10) { if (this.page_[id] == 0) {
this.is_more = false; this.allList[id] = res.data.data;
} else {
this.allList[id] = this.allList[id].concat(res.data.data);
} }
this.page_[id]++; this.page_[id]++;
this.allList[id] = res.data.data;
this.$forceUpdate(); this.$forceUpdate();
// console.log(this.page_[id]); } else if (res.data.errCode == 1) {
// console.log(this.allList); this.child_end[id] = true;
this.$forceUpdate();
} }
console.log(this.allList);
} }
}) })
}, },
@@ -481,7 +500,6 @@
.container { .container {
position: relative; position: relative;
background-color: #FF0000 !important;
} }
/* 关闭 */ /* 关闭 */
@@ -658,14 +676,17 @@
} }
.child_content { .child_content {
padding: 4rpx 0; width: 550rpx;
padding-top: 6rpx;
margin-left: 40rpx; margin-left: 40rpx;
font-size: 26rpx; font-size: 26rpx;
} }
.more-comment { .more-comment {
margin: 10rpx 0; width: 150rpx;
height: 40rpx;
font-size: 22rpx; font-size: 22rpx;
line-height: 4;
color: #999; color: #999;
} }
@@ -680,6 +701,10 @@
border-radius: 50%; border-radius: 50%;
} }
.comment-title-info {
justify-content: space-between;
}
.comment-title { .comment-title {
font-size: 26rpx; font-size: 26rpx;
color: #333; color: #333;
@@ -720,6 +745,7 @@
} }
.btn-send { .btn-send {
padding: 0 20rpx;
font-size: 28rpx; font-size: 28rpx;
color: #666; color: #666;
} }
@@ -816,6 +842,14 @@
width: 500rpx; width: 500rpx;
color: #333; color: #333;
font-size: 30rpx; font-size: 30rpx;
lines: 1;
text-overflow: ellipsis;
}
.good-name {
width: 500rpx;
font-size: 24rpx;
line-height: 30rpx;
lines: 2; lines: 2;
text-overflow: ellipsis; text-overflow: ellipsis;
} }
@@ -851,14 +885,14 @@
.title { .title {
width: 700rpx; width: 700rpx;
color: #fff; color: #fff;
font-size: 26rpx; font-size: 30rpx;
margin-bottom: 20rpx; margin-bottom: 20rpx;
lines: 1; lines: 1;
text-overflow: ellipsis; text-overflow: ellipsis;
} }
.centent { .centent {
width: 600rpx; width: 700rpx;
color: #fff; color: #fff;
font-size: 28rpx; font-size: 28rpx;
margin-bottom: 20rpx; margin-bottom: 20rpx;

View File

@@ -34,21 +34,30 @@
</view> </view>
</view> </view>
<view class="order-info"> <view class="order-info">
<view @click="showCoupon({type: 2, store_id: item[0].store_id})" v-if="orderType == 1 || orderType == 5"> <view class="show-view" @click="showCoupon({type: 2, store_id: item[0].store_id})" v-if="orderType == 1 || orderType == 5">
<view class="title">优惠券折扣</view> <view class="title">优惠券折扣</view>
<view class="value"> <view class="value">
<view>-{{ storeCoupon[item[0].store_id] ? storeCoupon[item[0].store_id].voucher_price.toFixed(2) : '0.00' }}</view> <view>-{{ storeCoupon[item[0].store_id] ? storeCoupon[item[0].store_id].voucher_price.toFixed(2) : '0.00' }}</view>
<image src="../static/image/1.png"></image> <image src="../static/image/1.png"></image>
</view> </view>
</view> </view>
<view> <view class="show-view">
<view class="title">运费</view> <view class="title">运费</view>
<view class="value"> <view class="value">
<view v-if="freight">{{ freight | setFreight(index) }}</view> <view v-if="freight">{{ freight | setFreight(index) }}</view>
</view> </view>
</view> </view>
<view class="remark">
<view class="title">订单备注</view>
<u-input v-model="remark[index]" type="textarea" style="margin-top:-5rpx" :height="88" placeholder="选填" />
</view> </view>
</view> </view>
<view class="pick-up" v-if="delivery.type == 3">
<view class="title">自提地址</view>
<view class="content">{{ orderInfo.store_list[index].store_address }}</view>
</view>
<view class="store-total">{{ item | getTotalNum }} 小计<text>{{ orderInfo.store_goods_total[index] | getStorePrice(storeCoupon, index) }}</text></view>
</view>
</view> </view>
<view class="common-active"> <view class="common-active">
<view @click="showCoupon({type: 1})" v-if="orderType == 1 || orderType == 5"> <view @click="showCoupon({type: 1})" v-if="orderType == 1 || orderType == 5">
@@ -65,19 +74,27 @@
<image src="../static/image/1.png"></image> <image src="../static/image/1.png"></image>
</view> </view>
</view> </view>
<view>
<view class="title">开具发票</view>
<view class="value" @click="selectInvoice">
<view class="invoice" v-if="!hasInvoice">本次不开具发票</view>
<view class="invoice" v-else>{{ hasInvoice == 1 ? '个人或事业单位发票' : '企业发票' }}</view>
<image src="../static/image/1.png"></image>
</view>
</view>
</view> </view>
<u-popup v-model="couponStatus" mode="bottom"> <u-popup v-model="couponStatus" mode="bottom">
<scroll-view class="coupon-choose" scroll-y style="height: 800rpx;" v-if="this.couponType.type == 1"> <scroll-view class="coupon-choose" scroll-y style="height: 50vh;" v-if="this.couponType.type == 1">
<view class="title">优惠券详情</view> <view class="title">优惠券详情</view>
<view class="text">平台优惠券</view> <view class="text">平台优惠券</view>
<Coupon :couponInfo="coupon" @use="useCoupon($event)" :goodsClass="goodsClass" v-for="(coupon, index) in orderInfo.store_voucher_all_list" :key="index"></Coupon> <Coupon :couponInfo="coupon" @use="useCoupon($event)" :goodsClass="goodsClass" v-for="(coupon, index) in orderInfo.store_voucher_all_list" :key="index" :type="true" :sel="coupon.sel"></Coupon>
<u-empty text="无可用优惠券" mode="coupon" v-if="!orderInfo.store_voucher_all_list.length"></u-empty> <u-empty text="无可用优惠券" mode="coupon" v-if="!orderInfo.store_voucher_all_list.length" style="height: 200rpx"></u-empty>
</scroll-view> </scroll-view>
<scroll-view class="coupon-choose" scroll-y style="height: 800rpx;" v-if="this.couponType.type == 2"> <scroll-view class="coupon-choose" scroll-y style="height: 50vh;" v-if="this.couponType.type == 2">
<view class="title">优惠券详情</view> <view class="title">优惠券详情</view>
<view class="text">店铺优惠券</view> <view class="text">店铺优惠券</view>
<Coupon :couponInfo="coupon" @use="useCoupon($event)" :goodsClass="goodsClass" v-for="(coupon, index) in orderInfo.store_voucher_list[this.couponType.store_id]" :key="index"></Coupon> <Coupon :couponInfo="coupon" @use="useCoupon($event)" :goodsClass="goodsClass" v-for="(coupon, index) in orderInfo.store_voucher_list[this.couponType.store_id]" :key="index" :type="true" :sel="coupon.sel"></Coupon>
<u-empty text="无可用优惠券" mode="coupon" v-if="!orderInfo.store_voucher_list[this.couponType.store_id].length"></u-empty> <u-empty text="无可用优惠券" mode="coupon" v-if="!orderInfo.store_voucher_list[this.couponType.store_id].length" style="height: 200rpx"></u-empty>
</scroll-view> </scroll-view>
</u-popup> </u-popup>
<view class="bottom"> <view class="bottom">
@@ -107,13 +124,23 @@ export default {
deliveryList: [{ deliveryList: [{
text: '快递', text: '快递',
value: 'express', value: 'express',
disabled: false,
type: 1,
}, { }, {
text: '骑手', text: '骑手',
value: 'takeawayer', value: 'takeawayer',
disabled: false,
type: 2,
}, {
text: '自提',
value: 'selfraising',
disabled: false,
type: 3,
}], }],
delivery: { delivery: {
text: '快递', text: '快递',
value: 'express', value: 'express',
type: 1,
}, // 配送方式 }, // 配送方式
couponList: [], couponList: [],
couponStatus: false, couponStatus: false,
@@ -123,12 +150,35 @@ export default {
goodsClass: [], goodsClass: [],
orderType: '', // 订单类型 1 普通订单 2 拼团订单 3 秒杀订单 4 优惠券 5 购物车订单 orderType: '', // 订单类型 1 普通订单 2 拼团订单 3 秒杀订单 4 优惠券 5 购物车订单
debounce: true, debounce: true,
hasInvoice: 0,
remark: {}
} }
}, },
components: { components: {
Coupon Coupon
}, },
filters: { filters: {
// 店铺总数量
getTotalNum(data, coupon) {
let num = 0;
data.forEach(item => {
num += item.goods_num;
})
return num;
},
// 店铺总金额
getStorePrice(price, coupon, index) {
for (const key in coupon) {
if (coupon.hasOwnProperty(key)) {
const element = coupon[key];
if(index == key) {
price -= Number(element.voucher_price);
}
}
}
return price;
},
// 订单总数量
setTotalNumber(data) { setTotalNumber(data) {
let num = 0; let num = 0;
for (const key in data) { for (const key in data) {
@@ -142,14 +192,17 @@ export default {
return num; return num;
}, },
setFreight(freight, index) { setFreight(freight, index) {
return freight[index]; return freight[index] || '0.00';
} }
}, },
onLoad(option) { onLoad(option) {
this.orderType = this.$store.state.orderType; this.orderType = this.$store.state.orderType;
this.orderInfo = this.$store.state.orderInfo; this.orderInfo = this.$store.state.orderInfo;
// 判断是否可选自提
if(!this.orderInfo.is_selfraising) this.deliveryList[2].disabled = true;
// console.log('orderType' + this.orderType); // console.log('orderType' + this.orderType);
// console.log(this.orderInfo); // console.log(this.orderInfo);
this.initRemark();
this.getGoodsClass(); this.getGoodsClass();
this.setTotalPrice(); this.setTotalPrice();
}, },
@@ -163,9 +216,13 @@ export default {
} else { } else {
if(this.$store.getters.getOrderAddress) this.addressInfo = this.$store.state.orderAddress; if(this.$store.getters.getOrderAddress) this.addressInfo = this.$store.state.orderAddress;
} }
// 是否开发票
this.hasInvoice = this.$store.getters.hasInvoice;
// console.log(this.hasInvoice);
}, },
beforeDestroy() { beforeDestroy() {
this.$store.commit('updateAddress', {}); this.$store.commit('updateAddress', {});
this.$store.commit('setInvoiceInfo', {});
}, },
watch: { watch: {
'$store.state.orderAddress'(value) { '$store.state.orderAddress'(value) {
@@ -174,6 +231,17 @@ export default {
}, },
}, },
methods: { methods: {
initRemark() {
// 初始化备注
const obj = this.orderInfo.store_cart_list;
for (const key in obj) {
if (obj.hasOwnProperty(key)) {
const element = obj[key];
this.remark[key] = '';
}
}
console.log(this.remark);
},
// 如果有pintuangroup_headid为参团不然为开团 // 如果有pintuangroup_headid为参团不然为开团
async withImmediate(type) { async withImmediate(type) {
let params = { let params = {
@@ -182,8 +250,10 @@ export default {
// console.log(this.orderInfo); // console.log(this.orderInfo);
// console.log(this.$store.state.pintuangroup_headid); // console.log(this.$store.state.pintuangroup_headid);
if(this.orderInfo.pintuangroup_id) { if(this.orderInfo.pintuangroup_id) {
Object.assign(params, { pintuangroup_headid: this.$store.state.pintuangroup_headid }); Object.assign(params, {
Object.assign(params, { pintuangroup_id: this.orderInfo.pintuangroup_id }); pintuangroup_headid: this.$store.state.pintuangroup_headid,
pintuangroup_id: this.orderInfo.pintuangroup_id
});
} }
console.log(params); console.log(params);
this.$u.api.withImmediate(params).then(res => { this.$u.api.withImmediate(params).then(res => {
@@ -198,6 +268,7 @@ export default {
}) })
}, },
intermediate() { intermediate() {
console.log(this.remark);
if(!this.debounce) return; if(!this.debounce) return;
this.debounce = false; this.debounce = false;
if(this.orderType == 2) { if(this.orderType == 2) {
@@ -249,6 +320,9 @@ export default {
cart_id: id, cart_id: id,
address_id: this.addressInfo.address_id, address_id: this.addressInfo.address_id,
buy_city_id: this.addressInfo.city_id, buy_city_id: this.addressInfo.city_id,
member_deliver_type: this.delivery.type,
invoice_id: this.$store.getters.getInvoiceId, // 发票抬头ID不开票传0
pay_message: this.remark,
} }
if(coupon.length) Object.assign(params, { voucher_id: coupon }); if(coupon.length) Object.assign(params, { voucher_id: coupon });
if(this.orderType == 2) { if(this.orderType == 2) {
@@ -256,13 +330,14 @@ export default {
if(this.orderInfo.pintuangroup_id) Object.assign(params, { pintuangroup_id: this.orderInfo.pintuangroup_id }); if(this.orderInfo.pintuangroup_id) Object.assign(params, { pintuangroup_id: this.orderInfo.pintuangroup_id });
} }
// console.log(params); // console.log(params);
// return;
this.$u.api.sendOrder(params).then(res => { this.$u.api.sendOrder(params).then(res => {
if(res.errCode == 0) { if(res.errCode == 0) {
this.$u.route({ this.$u.route({
type: 'redirect', type: 'redirect',
url: '/pageC/cart/cashier', url: '/pageC/cart/cashier',
params: { params: {
ifcart: params.ifcart, ifcart: ifcart,
pay_sn: res.data.pay_sn, pay_sn: res.data.pay_sn,
price: res.data.order_total_amount, price: res.data.order_total_amount,
order_id: res.data.order_list[0].order_id, order_id: res.data.order_list[0].order_id,
@@ -282,15 +357,37 @@ export default {
this.couponStatus = true; this.couponStatus = true;
}, },
useCoupon(coupon) { useCoupon(coupon) {
if(this.couponType.type == 1) this.choiceCoupon = coupon; // console.log(coupon)
if(this.couponType.type == 1){
this.choiceCoupon = {}
for(let i in this.orderInfo.store_voucher_all_list){
if(this.orderInfo.store_voucher_all_list[i].voucher_id == coupon.voucher_id && !this.orderInfo.store_voucher_all_list[i].sel){
this.orderInfo.store_voucher_all_list[i].sel = true
this.choiceCoupon = coupon;
}else{
this.orderInfo.store_voucher_all_list[i].sel = false
}
}
this.$forceUpdate()
}
if(this.couponType.type == 2) { if(this.couponType.type == 2) {
this.storeCoupon = {}
for(let i in this.orderInfo.store_voucher_list[this.couponType.store_id]){
console.log(this.orderInfo.store_voucher_list[this.couponType.store_id][i])
if(this.orderInfo.store_voucher_list[this.couponType.store_id][i].voucher_id == coupon.voucher_id && !this.orderInfo.store_voucher_list[this.couponType.store_id][i].sel){
this.orderInfo.store_voucher_list[this.couponType.store_id][i].sel = true
Object.assign(this.storeCoupon, { Object.assign(this.storeCoupon, {
[this.couponType.store_id]: coupon [this.couponType.store_id]: coupon
}) })
}else{
this.orderInfo.store_voucher_list[this.couponType.store_id][i].sel = false
}
}
this.$forceUpdate()
} }
// console.log(this.choiceCoupon); // console.log(this.choiceCoupon);
// console.log(this.storeCoupon); // console.log(this.storeCoupon);
this.couponStatus = false; // this.couponStatus = false;
this.setTotalPrice(); // 计算总价 this.setTotalPrice(); // 计算总价
}, },
getFreight() { getFreight() {
@@ -309,40 +406,71 @@ export default {
}, },
setTotalPrice() { setTotalPrice() {
const goods = this.orderInfo.store_goods_total; const goods = this.orderInfo.store_goods_total;
// console.log(this.freight); let [freight, price, minPrice] = [0, 0, 0];
const freight = this.freight; // 运费
let price = 0; for(const key in this.freight) {
// 商品价格加上运费 if(this.freight.hasOwnProperty(key)) {
[goods, freight].forEach(object => { const element = this.freight[key];
for (const key in object) { freight += Number(element);
if (object.hasOwnProperty(key)) { }
const element = object[key]; }
price += Number(element); // 商品价格减去优惠券
// 店铺
for(const gid in goods) {
if(goods.hasOwnProperty(gid)) {
// 计算最小价格
minPrice += 0.01;
// 每个店铺所有商品的价格
let sprice = Number(goods[gid]);
if(JSON.stringify(this.storeCoupon) != '{}') {
for(const cid in this.storeCoupon) {
if(this.storeCoupon.hasOwnProperty(cid)) {
const cprice = this.storeCoupon[cid];
// 商品减去优惠券价格
if(gid == cid) {
sprice -= cprice.voucher_price;
// 每个店铺最低付款 0.01
if(sprice <= 0) sprice = 0.01;
}
}
}
}
// 所有商品总价
price += sprice;
} }
} }
})
// 减去优惠券
// 平台 // 平台
if(JSON.stringify(this.choiceCoupon) != '{}') price -= Number(this.choiceCoupon.voucher_price); if(JSON.stringify(this.choiceCoupon) != '{}') price -= Number(this.choiceCoupon.voucher_price);
// 店铺 // 每个店铺最低付款 0.01
if(JSON.stringify(this.storeCoupon) != '{}') { if(price <= minPrice) price = minPrice;
for (const key in this.storeCoupon) { // console.log("minPrice" + minPrice);
if (this.storeCoupon.hasOwnProperty(key)) { // console.log("freight:" + freight);
const element = this.storeCoupon[key]; // console.log("price:" + price);
price -= element.voucher_price; this.totalPrice = (price + freight).toFixed(2);
}
}
}
// console.log(price);
this.totalPrice = price.toFixed(2);
}, },
setDelivery(index) { async setDelivery(index) {
// console.log(index);
if(index == 1) { if(index == 1) {
if(!this.isTakeawayer) this.$u.toast('此地区不支持骑手配送'); if(!this.isTakeawayer) {
this.$u.toast('此地区不支持骑手配送');
return false; return false;
} }
this.delivery = this.deliveryList[index]; this.delivery = this.deliveryList[index];
this.getFreight(); this.getFreight();
}
if(index == 2) {
for (const key in this.freight) {
if (this.freight.hasOwnProperty(key)) {
this.freight[key] = '0.00';
}
}
this.setTotalPrice(); // 计算总价
this.delivery = this.deliveryList[index];
}
if(index == 0) {
this.delivery = this.deliveryList[index];
this.getFreight();
}
}, },
settlement() { settlement() {
uni.navigateTo({ uni.navigateTo({
@@ -358,7 +486,10 @@ export default {
uni.navigateTo({ uni.navigateTo({
url: '/pageE/more/Address?type=choose' url: '/pageE/more/Address?type=choose'
}); });
} },
selectInvoice() {
this.$u.route('/pageC/cart/selectInvoice');
},
}, },
}; };
</script> </script>
@@ -367,6 +498,7 @@ export default {
min-height: calc(100vh - var(--window-top)); min-height: calc(100vh - var(--window-top));
background-color: #ECECEC; background-color: #ECECEC;
padding-top: 1rpx; padding-top: 1rpx;
padding-bottom: 200rpx;
.info-address { .info-address {
padding: 30rpx; padding: 30rpx;
display: flex; display: flex;
@@ -429,7 +561,7 @@ export default {
height: 60rpx; height: 60rpx;
border-radius: 50%; border-radius: 50%;
margin-right: 15rpx; margin-right: 15rpx;
background-color: aquamarine; // background-color: aquamarine;
} }
> view { > view {
font-size: 28rpx; font-size: 28rpx;
@@ -437,6 +569,7 @@ export default {
margin-right: 15rpx; margin-right: 15rpx;
} }
.right { .right {
margin-left: auto;
flex-shrink: 0; flex-shrink: 0;
width: 11rpx; width: 11rpx;
height: 22rpx; height: 22rpx;
@@ -454,7 +587,7 @@ export default {
width: 180rpx; width: 180rpx;
height: 160rpx; height: 160rpx;
border-radius: 10rpx; border-radius: 10rpx;
background-color: aqua; // background-color: aqua;
flex-shrink: 0; flex-shrink: 0;
} }
.info { .info {
@@ -497,7 +630,7 @@ export default {
} }
} }
.order-info { .order-info {
> view { .show-view {
height: 98rpx; height: 98rpx;
background: rgba(255,255,255,1); background: rgba(255,255,255,1);
padding: 35rpx 30rpx; padding: 35rpx 30rpx;
@@ -522,11 +655,53 @@ export default {
} }
} }
} }
.remark {
background: rgba(255,255,255,1);
padding: 35rpx 30rpx;
display: flex;
justify-content: space-between;
margin-bottom: 2rpx;
.title {
font-size: 28rpx;
color: rgba(102,102,102,1);
margin-right: 20rpx;
}
/deep/ .u-input {
font-size: 28rpx;
.u-input__textarea {
padding: 0;
}
}
}
}
.pick-up {
padding: 30rpx;
background: rgba(255,255,255,1);
.title {
font-size: 28rpx;
color: #666666;
margin-bottom: 30rpx;
}
.content {
font-size: 30rpx;
color: #343434;
line-height: 40rpx;
}
}
.store-total {
text-align: right;
padding: 34rpx 30rpx;
background: rgba(255,255,255,1);
font-size: 28rpx;
color: #656565;
> text {
color: #FF770F;
}
} }
} }
} }
.common-active { .common-active {
padding-bottom: 200rpx; padding-bottom: 30rpx;
> view { > view {
height: 98rpx; height: 98rpx;
background: rgba(255,255,255,1); background: rgba(255,255,255,1);
@@ -544,6 +719,9 @@ export default {
align-items: center; align-items: center;
font-size: 30rpx; font-size: 30rpx;
color:rgba(51,51,51,1); color:rgba(51,51,51,1);
.invoice {
font-size: 26rpx;
}
> image { > image {
width: 12rpx; width: 12rpx;
height: 22rpx; height: 22rpx;

View File

@@ -0,0 +1,186 @@
<template>
<view class="select-invoice">
<view class="invoice-type">
<view class="title">发票类型</view>
<u-radio-group v-model="type" @change="radioGroupChange" icon-size="0" active-color="#FF780F" size="16">
<u-radio
v-for="(item, index) in list" :key="index"
:name="item.type"
>
{{item.name}}
</u-radio>
</u-radio-group>
</view>
<view class="invoice-list" v-if="currentList.length">
<u-radio-group v-model="invoice" @change="selectInvoice" active-color="#FF780F" icon-size="22" size="30" :wrap="true">
<u-radio
v-for="(item, index) in currentList" :key="index"
:name="item.invoice_id"
>
{{ item.invoice_title }}
</u-radio>
</u-radio-group>
</view>
<view class="invoice-none" v-if="!currentList.length">您当前还未添加抬头发票,<text @click="addInvoice">点击立即添加</text></view>
<view class="btn-group">
<view class="submit" @click="submit">提交申请</view>
<view class="cancel" @click="cancel">不开发票</view>
</view>
</view>
</template>
<script>
export default {
data() {
return {
type: 1,
list: [{
type: 1,
name: '个人或事业单位'
}, {
type: 2,
name: '企业'
}],
invoice: '',
invoiceList: [],
currentList: [],
}
},
onShow() {
this.type = 1;
this.getInvoiceList();
},
watch: {
type(value) {
let invoiceList = this.invoiceList.filter(item => item.invoice_type == value);
this.currentList = invoiceList;
}
},
methods: {
getInvoiceList() {
this.$u.api.getInvoiceList().then(res => {
this.invoiceList = res.data;
this.currentList = this.invoiceList.filter(item => item.invoice_type == this.type);
// console.log(this.invoiceList);
})
},
radioGroupChange(e) {
this.type = e;
},
selectInvoice(e) {
this.invoice = e;
},
submit() {
console.log(this.invoice);
if(!this.invoice) {
this.$u.toast('请选择发票');
return false;
}
this.$store.commit('setInvoiceInfo', {
invoice_type: this.type,
invoice_id: this.invoice
});
this.$u.route({ type: 'back' });
},
cancel() {
this.$store.commit('setInvoiceInfo', {
invoice_type: 0
});
this.$u.route({ type: 'back' });
},
addInvoice() {
this.$u.route('/pageE/more/EditInvoice', { action: 1 });
},
}
};
</script>
<style lang="scss" scoped>
.select-invoice {
min-height: calc(100vh - var(--window-top));
background: #ECECEC;
padding-top: 1rpx;
.invoice-type {
height: 98rpx;
background: #FFFFFF;
margin-bottom: 2rpx;
padding: 35rpx 30rpx;
display: flex;
align-items: center;
.title {
font-size: 30rpx;
color: #333333;
width: 120rpx;
margin-right: 50rpx;
}
.u-radio-group {
flex: 1;
/deep/ .u-radio {
.u-radio__icon-wrap {
margin: 0 20rpx;
position: relative;
background-color: #DBDBDB;
&::before {
content: '';
position: absolute;
width: 29rpx;
height: 29rpx;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
border: 1rpx solid #DBDBDB;
border-radius: 50%;
}
}
.u-radio__icon-wrap--checked {
background-color: #FF780F;
&::before {
border-color: #FF780F;
}
}
}
}
}
.invoice-list {
background-color: #FFFFFF;
/deep/ .u-radio-group {
.u-radio {
padding: 30rpx;
height: 80rpx;
line-height: 1 !important;
.u-radio__icon-wrap {
margin-right: 20rpx;
}
}
}
}
.invoice-none {
text-align: center;
margin-top: 70rpx;
font-size: 26rpx;
color: #333333;
> text {
color: #FF780F;
}
}
.btn-group {
margin-top: 250rpx;
> view {
width: 690rpx;
height: 98rpx;
border-radius: 49rpx;
font-size: 36rpx;
margin: 0 auto;
line-height: 98rpx;
text-align: center;
}
.submit {
background: #FF780F;
color: #FFFFFF;
margin-bottom: 20rpx;
}
.cancel {
background: #FFFFFF;
color: #FF780F;
}
}
}
</style>

View File

@@ -1,5 +1,6 @@
<template> <template>
<view class="classify-goods"> <view class="classify-goods">
<u-search style="padding: 0 30rpx" placeholder="请搜索商品" v-model="keyword" @search="select" @custom="select"></u-search>
<view class="tab-container"> <view class="tab-container">
<view class="salenum" :class="{ 'current' : current == 0 }" @click="switchCurrent(0)">销量</view> <view class="salenum" :class="{ 'current' : current == 0 }" @click="switchCurrent(0)">销量</view>
<view class="price" :class="{ 'current' : current == 1 }" @click="switchCurrent(1)"> <view class="price" :class="{ 'current' : current == 1 }" @click="switchCurrent(1)">
@@ -17,7 +18,12 @@
<view class="right"> <view class="right">
<view class="name u-line-1">{{ goods.goods_name }}</view> <view class="name u-line-1">{{ goods.goods_name }}</view>
<view class="briefing u-line-1">{{ goods.goods_advword }}</view> <view class="briefing u-line-1">{{ goods.goods_advword }}</view>
<view class="price">{{ goods.goods_price }}</view> <!-- <view class="price">{{ goods.goods_price }}</view> -->
<view class="price">
<view class="type-tag" v-show="goods.goods_type != 1">{{ goods.goods_type == 2 ? "秒杀" : "拼团" }}</view>
<view class="present">{{ goods.goods_price }}</view>
<view class="origin">{{ goods.goods_marketprice }}</view>
</view>
</view> </view>
</view> </view>
<u-loadmore :status="loadStatus" bgColor="#FFFFFF" margin-top="20" margin-bottom="20" v-if="goodsList.length >= pageSize"></u-loadmore> <u-loadmore :status="loadStatus" bgColor="#FFFFFF" margin-top="20" margin-bottom="20" v-if="goodsList.length >= pageSize"></u-loadmore>
@@ -38,6 +44,8 @@ export default {
scrollHeight: '', scrollHeight: '',
loadStatus: 'loadmore', loadStatus: 'loadmore',
timer: true, // 防止上拉加载短时间内多次调用 timer: true, // 防止上拉加载短时间内多次调用
keyword:"",
sel:""
} }
}, },
watch: { watch: {
@@ -76,6 +84,7 @@ export default {
gc_id: this.cid, gc_id: this.cid,
page: this.page, page: this.page,
order: sort, order: sort,
keyword:this.sel
}) })
this.timer = true; this.timer = true;
if(res.errCode == 0) { if(res.errCode == 0) {
@@ -119,6 +128,11 @@ export default {
id: id, id: id,
type: 1 // 商品详情 商品类型 1普通 2拼团 3秒杀 4优惠券 type: 1 // 商品详情 商品类型 1普通 2拼团 3秒杀 4优惠券
}); });
},
select(){
this.sel = this.keyword;
this.page = 1;
this.goodsListByClassId({ laod: 'reload' });
} }
} }
}; };
@@ -189,9 +203,30 @@ export default {
font-size: 28rpx; font-size: 28rpx;
color: rgba(102,102,102,1); color: rgba(102,102,102,1);
} }
// .price {
// font-size: 26rpx;
// color: rgba(255,49,49,1);
// }
.price { .price {
display: flex;
align-items: center;
.type-tag {
padding: 4rpx 10rpx;
color: #fff;
font-size: 22rpx;
border-radius: 10rpx;
background-color: #FF7810;
}
.present {
font-size: 26rpx; font-size: 26rpx;
color: rgba(255,49,49,1); color: rgba(255,49,49,1);
margin-right: 20rpx;
}
.origin {
text-decoration: line-through;
font-size: 24rpx;
color: #999;
}
} }
} }
} }

View File

@@ -1,8 +1,8 @@
<template> <template>
<view class="listItem"> <view class="listItem">
<!-- <video :src="url" :show-fullscreen-btn="true"></video> -->
<view v-if="type == '2'" class="video-container"> <view v-if="type == '2'" class="video-container">
<image :src="url" mode="aspectFill" class="video"></image> <image :src="url" mode="aspectFill" class="video"></image>
<view class="backs"></view>
<image src="/static/videoPlay.png" mode="aspectFill" class="play-video"></image> <image src="/static/videoPlay.png" mode="aspectFill" class="play-video"></image>
</view> </view>
<image v-else :src="url" mode="aspectFill"></image> <image v-else :src="url" mode="aspectFill"></image>
@@ -27,6 +27,15 @@
width: 100%; width: 100%;
height: 100%; height: 100%;
} }
.backs {
width: 100%;
height: 100%;
position: absolute;
top: 0;
right: 0;
background-color: rgba($color: #000000, $alpha: 0.35);
z-index: 9;
}
.play-video { .play-video {
position: absolute; position: absolute;
width: 100rpx; width: 100rpx;
@@ -47,6 +56,6 @@ export default {
} }
}, },
props:['url','type'] props:['url','type'],
} }
</script> </script>

View File

@@ -1,6 +1,7 @@
<template> <template>
<view class="videoTop"> <view class="videoTop">
<image :src="url" mode="aspectFill" class="video"></image> <image :src="url" mode="aspectFill" class="video"></image>
<view class="backs"></view>
<image src="/static/videoPlay.png" mode="aspectFill" class="play-video"></image> <image src="/static/videoPlay.png" mode="aspectFill" class="play-video"></image>
</view> </view>
</template> </template>
@@ -15,6 +16,15 @@
width: 100%; width: 100%;
height: 100%; height: 100%;
z-index: 9; z-index: 9;
}
.backs {
width: 100%;
height: 100%;
position: absolute;
top: 0;
right: 0;
background-color: rgba(0, 0, 0, 0.35);
z-index: 9;
} }
.play-video { .play-video {
position: absolute; position: absolute;

View File

@@ -14,7 +14,7 @@
</view> </view>
<scroll-view scroll-y class="scroll-container" :style="{ height: scrollHeight }" @scrolltolower="loadMore"> <scroll-view scroll-y class="scroll-container" :style="{ height: scrollHeight }" @scrolltolower="loadMore">
<view class="goods-container"> <view class="goods-container">
<view v-for="goods in goodsList" :key="goods.goods_id" class="goods-view" @click="toDetailsPage(goods.goods_id)"> <view v-for="goods in goodsList" :key="goods.goods_id" class="goods-view">
<goodsItem :info="goods"></goodsItem> <goodsItem :info="goods"></goodsItem>
</view> </view>
</view> </view>
@@ -128,12 +128,6 @@ export default {
this.scrollHeight = res.windowHeight - (res.windowWidth / 750) * 90 + 'px'; this.scrollHeight = res.windowHeight - (res.windowWidth / 750) * 90 + 'px';
// console.log(this.scrollHeight); // console.log(this.scrollHeight);
}, },
toDetailsPage(id) {
this.$u.route('/pageB/sdetails/index', {
id: id,
type: 1 // 商品详情 商品类型 1普通 2拼团 3秒杀 4优惠券
});
},
setTitle(title){ setTitle(title){
uni.setNavigationBarTitle({ uni.setNavigationBarTitle({
title: title title: title

View File

@@ -25,7 +25,7 @@
<u-icon name="arrow-down" color="#999999" size="28"></u-icon> <u-icon name="arrow-down" color="#999999" size="28"></u-icon>
</view> </view>
<view class="image-list" v-if="info.business_licence_number_electronic"> <view class="image-list" v-if="info.business_licence_number_electronic">
<image :src="info.business_licence_number_electronic"></image> <image :src="info.business_licence_number_electronic" @click="previewImage(info.business_licence_number_electronic)"></image>
</view> </view>
</view> </view>
</view> </view>
@@ -42,6 +42,15 @@ export default {
// console.log(res) // console.log(res)
this.info = res.data this.info = res.data
}) })
},
methods: {
previewImage(urls) {
// console.log(urls);
const imageList = [urls];
uni.previewImage({
urls: imageList,
});
},
} }
}; };
</script> </script>
@@ -59,7 +68,6 @@ export default {
height: 140rpx; height: 140rpx;
border-radius: 70rpx; border-radius: 70rpx;
margin-bottom: 29rpx; margin-bottom: 29rpx;
background-color: aqua;
} }
.name { .name {
font-size: 28rpx; font-size: 28rpx;
@@ -124,7 +132,6 @@ export default {
width: 239rpx; width: 239rpx;
height: 170rpx; height: 170rpx;
flex-shrink: 0; flex-shrink: 0;
background-color: aqua;
} }
} }
} }

View File

@@ -46,14 +46,14 @@
<imageTop v-else :url="item.article_pic" @click.native="toDetailsPage({ id: item.article_id, type: item.type })"></imageTop> <imageTop v-else :url="item.article_pic" @click.native="toDetailsPage({ id: item.article_id, type: item.type })"></imageTop>
</view> </view>
<view v-if="indexlist.length" class="container-bottom"> <view v-if="indexlist.length" class="container-bottom">
<listitem v-for="item in indexlist" :key="item.id" :type="item.type" :url="item.article_pic" class="bottom-item" @click.native="toDetailsPage({ id: item.article_id, type: item.type })"></listitem> <listitem v-for="item in indexlist" :key="item.article_id" :type="item.type" :url="item.article_pic" class="bottom-item" @click.native="toDetailsPage({ id: item.article_id, type: item.type })"></listitem>
</view> </view>
</scroll-view> </scroll-view>
<view class="item" v-if="cur==1"> <view class="item" v-if="cur==1">
<goods :sid="sid"></goods> <goods :sid="sid"></goods>
</view> </view>
</view> </view>
<view class="tabbar"> <view class="tabbar" :style="safeareaStyle">
<view @click="switchCurrent(0)"> <view @click="switchCurrent(0)">
<image src="/static/image/shop/9.png"></image> <image src="/static/image/shop/9.png"></image>
<view>商品分类</view> <view>商品分类</view>
@@ -94,6 +94,7 @@ export default {
page: 1, page: 1,
scrollHeiht: '', scrollHeiht: '',
paddingTop: 0, paddingTop: 0,
safeareaStyle: "", // 苹果底部
} }
}, },
components:{ components:{
@@ -118,6 +119,21 @@ export default {
id:this.sid id:this.sid
}); });
}, },
onLoad(option){
this.sid = option.id;
// console.log(this.sid);
this.getStoreInfo();
this.getArticlelist();
this.setViewHeight();
// this.getStoreImgVideoList();
// #ifdef APP-PLUS
this.device = uni.getSystemInfoSync(); // 获取信息
console.log(this.device.safeArea);
// #endif
},
onShow() {
this.cur = 0;
},
methods: { methods: {
customers(){ customers(){
console.log(this.$store.state.hasLogin) console.log(this.$store.state.hasLogin)
@@ -225,17 +241,16 @@ export default {
// console.log(this.paddingTop); // console.log(this.paddingTop);
} }
}, },
onLoad(option){
this.sid = option.id;
// console.log(this.sid);
this.getStoreInfo();
this.getArticlelist();
this.setViewHeight();
// this.getStoreImgVideoList();
}
}; };
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
/*坑解决iphoneX等大屏手机底部小黑条挡住tab的解决方法安全区域距离底部边界距离env() 跟 constant() 需要同时存在,而且顺序不能换。*/
/* #ifdef H5 */
body {
padding-bottom: constant(safe-area-inset-bottom);/* 兼容 iOS < 11.2 */
padding-bottom: env(safe-area-inset-bottom); /* 兼容 iOS >= 11.2 */
}
/* #endif */
.merchant { .merchant {
// min-height: 100vh; // min-height: 100vh;
background-color: #ECECEC; background-color: #ECECEC;
@@ -355,7 +370,7 @@ export default {
border-radius: 50%; border-radius: 50%;
flex-shrink: 0; flex-shrink: 0;
margin-bottom: 20rpx; margin-bottom: 20rpx;
background-color: aqua; // background-color: aqua;
} }
.nickname { .nickname {
font-size: 22rpx; font-size: 22rpx;
@@ -388,14 +403,14 @@ export default {
.tabbar { .tabbar {
border-top: 1rpx #DBDADA solid; border-top: 1rpx #DBDADA solid;
width: 100%; width: 100%;
height: 98rpx;
background: rgba(251,251,251,1); background: rgba(251,251,251,1);
display: flex; display: flex;
padding: 10rpx 55rpx;
position: fixed; position: fixed;
bottom: 0; bottom: 0;
left: 0; left: 0;
z-index: 9; z-index: 9;
padding: 10rpx 55rpx;
padding-bottom: env(safe-area-inset-bottom);
> view { > view {
flex: 1; flex: 1;
text-align: center; text-align: center;

View File

@@ -23,7 +23,7 @@
</view> </view>
</template> </template>
<script> <script>
import SpecialGoods from "../../components/shop/special-shop/index" import SpecialGoods from "@/components/shop/special-shop/index"
export default { export default {
data() { data() {
return { return {

View File

@@ -1,5 +1,5 @@
<template> <template>
<view id="actives"> <view id="actives" :style="{height : height + 'px'}">
<!-- 活动消息推送 --> <!-- 活动消息推送 -->
<block v-for="(item, index) in actives" :key="index"> <block v-for="(item, index) in actives" :key="index">
<view class="time">{{ item.addtime }}</view> <view class="time">{{ item.addtime }}</view>
@@ -15,6 +15,7 @@
</view> </view>
</view> </view>
</block> </block>
<u-loadmore :status="loadStatus" bg-color="#ECECEC" margin-top="20" v-if="loadStatus=='nomore'" />
</view> </view>
</template> </template>
@@ -22,13 +23,20 @@
export default { export default {
data() { data() {
return { return {
actives: [ height:'600',
actives: [],
] loadStatus: 'loadmore'
}; };
}, },
onLoad(){ onLoad(){
this.messageactivityList() var _that = this
_that.messageactivityList();
uni.getSystemInfo({
success: function (res) {
console.log(res.windowHeight);
_that.height = res.windowHeight
}
});
}, },
methods: { methods: {
titletext(){ titletext(){
@@ -38,6 +46,8 @@
this.$u.api.messageactivityList({}).then((res)=>{ this.$u.api.messageactivityList({}).then((res)=>{
if (res.errCode == 0) { if (res.errCode == 0) {
this.actives = res.data; this.actives = res.data;
// 目前没有分页,只无数据提示用,他们建议这样做
if(!this.actives.length) this.loadStatus = 'nomore';
} }
}) })
} }
@@ -47,7 +57,7 @@
}; };
</script> </script>
<style lang="scss" scoped> <style lang="scss">
page { page {
background-color: #ECECEC; background-color: #ECECEC;
} }
@@ -55,7 +65,6 @@
height: 100%; height: 100%;
} }
#actives{ #actives{
height: 100%;
background: #ECECEC; background: #ECECEC;
.time { .time {
padding: 30rpx 0; padding: 30rpx 0;
@@ -74,7 +83,7 @@
padding: 39rpx 0 30rpx; padding: 39rpx 0 30rpx;
} }
.content{ .content{
width:630rpx; width:94%;
padding: 30rpx; padding: 30rpx;
background:rgba(255,255,255,1); background:rgba(255,255,255,1);
border-radius:20rpx; border-radius:20rpx;

View File

@@ -2,22 +2,27 @@
<view id="actives"> <view id="actives">
<!-- 活动消息推送 --> <!-- 活动消息推送 -->
<view class="activity" v-for="(item, index) in actives" :key="index"> <view class="activity" v-for="(item, index) in actives" :key="index">
<view class="times">{{item.type}}</view> <view class="times">{{item.kd_time}}</view>
<view class="content"> <view class="content">
<view class="store_name"> <view class="store-name">
<image src="../../pageE/static/mine/1.png"></image> <image :src="item.store_avatar"></image>
<view>小时代</view> <view class="name">{{item.store_name}}</view>
<view class="takeawayer" v-if="item.takeawayer_phone" @click="makePhone(item.takeawayer_phone)">
<u-icon name="phone-fill" color="#FF780F" size="28"></u-icon>
<text>联系骑手</text>
</view>
</view> </view>
<view class="xiantiao"></view> <view class="xiantiao"></view>
<view class="title">{{item.name}}</view> <view class="title">{{item.title}}</view>
<view class="images_about"> <view class="images_about" @click="viewLogistics(item)">
<image :src="item.url"></image> <image :src="item.picture"></image>
<view> <view>
<text>{{item.about}}</text> <text>{{item.summary}}</text>
</view> </view>
</view> </view>
</view> </view>
</view> </view>
<u-loadmore :status="loadStatus" bg-color="#ECECEC" margin-top="20" @loadmore="loadmore" />
</view> </view>
</template> </template>
@@ -26,27 +31,70 @@
data() { data() {
return { return {
actives: [], actives: [],
page: 1 page: 1,
timer: true,
loadStatus: 'loadmore'
}; };
}, },
onLoad() { onLoad() {
this.getCartList(); this.getCartList();
}, },
onReachBottom() {
this.loadmore();
},
methods: { methods: {
getCartList() { loadmore() {
this.$u.post("message/orderDeliveryList",{page: this.page}).then(res => { if(!this.timer) return false;
if (res.errCode == 0) { this.loadStatus = "loading";
this.actives == res.data; this.page++;
this.getCartList({ load: 'loadmore' }).then(length => {
if(length == 0) {
this.page--;
this.loadStatus = 'nomore';
} else {
this.loadStatus = 'loading';
} }
}).catch(() => {
this.loadStatus = "nomore";
this.page--;
}) })
},
async getCartList({ load = 'reload' } = {}) {
const res = await this.$u.post("message/orderDeliveryList",{ page: this.page })
this.timer = true;
if (res.errCode == 0) {
if(load == 'reload') {
this.actives = res.data.data;
if(res.data.data.length < 12) this.loadStatus = "nomore";
}
else if(load == 'loadmore') this.actives.push(...res.data.data);
}
return res.data.data.length;
},
viewLogistics(item) {
let url;
if(item.takeawayer_phone) {
url = '/pageE/order/Details';
} else {
url = '/pageE/order/Logistics';
}
this.$u.route(url, {
oid: item.order_id,
});
},
makePhone(phone) {
uni.makePhoneCall({
phoneNumber: phone
});
} }
}, },
components:{
}
}; };
</script> </script>
<style lang="scss" scoped> <style lang="scss" >
page{
background-color: #ECECEC;
}
#actives{ #actives{
height: 100%; height: 100%;
} }
@@ -106,25 +154,31 @@
margin-bottom: 20rpx; margin-bottom: 20rpx;
} }
// 店铺 // 店铺
.store_name{ .store-name{
overflow: hidden; overflow: hidden;
zoom: 1; zoom: 1;
padding: 0rpx 0 20rpx 0; padding: 0rpx 0 20rpx 0;
display: flex;
align-items: center;
image{ image{
width: 60rpx; width: 60rpx;
height: 60rpx; height: 60rpx;
border-radius: 50%; border-radius: 50%;
float: left; float: left;
} }
view{ .name {
font-size:26rpx; font-size:26rpx;
color:rgba(51,51,51,1); color:rgba(51,51,51,1);
float: left;
display: table-cell;
line-height: 60rpx; line-height: 60rpx;
display: inline-block; display: inline-block;
margin-left: 21rpx; margin-left: 21rpx;
} }
.takeawayer {
margin-left: auto;
> text {
margin-left: 10rpx;
}
}
} }
} }
} }

View File

@@ -1,6 +1,6 @@
<template> <template>
<view> <view>
<image :src="list.picture" class="picture" mode=""></image> <image :src="list.picture" class="picture" mode="aspectFit"></image>
<view class="box"> <view class="box">
<view class="info"> <view class="info">
<text class="title u-line-2">{{ list.title }}</text> <text class="title u-line-2">{{ list.title }}</text>

View File

@@ -1,7 +1,8 @@
<template> <template>
<view> <view id="viewes" :style="{height : height + 'px'}">
<!-- 公告咨询 --> <!-- 公告咨询 -->
<notice :list="list"></notice> <notice :list="list"></notice>
<u-loadmore :status="loadStatus" bg-color="#ECECEC" margin-top="20" v-if="loadStatus=='nomore'" />
</view> </view>
</template> </template>
@@ -11,10 +12,18 @@
data() { data() {
return { return {
list: [], list: [],
loadStatus: 'loadmore'
}; };
}, },
onLoad() { onLoad() {
this.informationList(); this.informationList();
var _that = this
uni.getSystemInfo({
success: function (res) {
console.log(res.windowHeight);
_that.height = res.windowHeight
}
});
}, },
methods: { methods: {
titletext() {}, titletext() {},
@@ -22,6 +31,8 @@
this.$u.api.informationList({}).then((res) => { this.$u.api.informationList({}).then((res) => {
if (res.errCode == 0) { if (res.errCode == 0) {
this.list = res.data; this.list = res.data;
// 目前没有分页,只无数据提示用
if(!this.list.length) this.loadStatus = 'nomore';
} }
}) })
} }
@@ -32,11 +43,13 @@
}; };
</script> </script>
<style lang="scss" scoped> <style lang="scss">
page { page {
background-color: #ECECEC; background-color: #ECECEC;
} }
#viewes{
background: #ECECEC;
}
.sousuo { .sousuo {
height: 113rpx; height: 113rpx;
border: 1px #f00 solid; border: 1px #f00 solid;

View File

@@ -59,7 +59,7 @@
<div :class="[audio.visible ? 'record-icon record-open':'record-icon']" @click="switchAudioKeyboard"></div> <div :class="[audio.visible ? 'record-icon record-open':'record-icon']" @click="switchAudioKeyboard"></div>
<div class="record-input" @longpress="onRecordStart" @touchend="onRecordEnd" v-if="audio.visible" >{{audio.recording ? '松开发送' : '按住录音'}}</div> <div class="record-input" @longpress="onRecordStart" @touchend="onRecordEnd" v-if="audio.visible" >{{audio.recording ? '松开发送' : '按住录音'}}</div>
<div class="message-input" v-else> <div class="message-input" v-else>
<input type="text" placeholder="发送消息" v-model="content"> <input type="text" placeholder="发送消息" v-model="content" @click="bindtapInput">
</div> </div>
<div class="file-icon img-video" @click="sendImage"></div> <div class="file-icon img-video" @click="sendImage"></div>
<div class="file-icon" @click="sendVideo"></div> <div class="file-icon" @click="sendVideo"></div>
@@ -84,6 +84,7 @@
return { return {
//聊天文本框 //聊天文本框
content: '', content: '',
bottom : '',
friend: null, friend: null,
currentUser: null, currentUser: null,
//已经接收到的消息 //已经接收到的消息
@@ -127,12 +128,12 @@
this.friend = JSON.parse(options.id); this.friend = JSON.parse(options.id);
this.currentUser = this.imService.currentUser; this.currentUser = this.imService.currentUser;
let privateMessages = this.imService.getPrivateMessages(this.friend.uuid); let privateMessages = this.imService.getPrivateMessages(this.friend.uuid);
this.imService.uid = this.friend.uuid;
this.messages = privateMessages.sentMessages; this.messages = privateMessages.sentMessages;
this.pendingMessages = privateMessages.pendingMessages; this.pendingMessages = privateMessages.pendingMessages;
console.log(this.friend.name)
uni.setNavigationBarTitle({ this.setTitle(this.friend.name)
title : this.friend.name
});
setTimeout(() => { setTimeout(() => {
uni.setNavigationBarColor({ uni.setNavigationBarColor({
backgroundColor : '#FF780F', backgroundColor : '#FF780F',
@@ -152,8 +153,26 @@
this.imService.onPrivateHistoryLoad = (friendId, messages) =>{}; this.imService.onPrivateHistoryLoad = (friendId, messages) =>{};
//将未读消息数清零 //将未读消息数清零
this.imService.resetFriendUnReadMessage(this.friend); this.imService.resetFriendUnReadMessage(this.friend);
this.imService.uid = 0;
}, },
methods: { methods: {
setTitle(title){
let that = this
if(title == ""){
title = "这是空的"
}
uni.setNavigationBarTitle({
title : title,
fail(){
that.setTitle(title)
}
});
},
bindtapInput(){
console.log("222")
var _that = this;
_that.bottom = 14
},
initialListeners () { initialListeners () {
//传入监听器,收到一条私聊消息总是滚到到页面底部 //传入监听器,收到一条私聊消息总是滚到到页面底部
this.imService.onNewPrivateMessageReceive = (friendId, message)=> { this.imService.onNewPrivateMessageReceive = (friendId, message)=> {

View File

@@ -1,24 +1,6 @@
<template> <template>
<view> <view class="article-details">
<view class="header" v-if="type == 2"> <rich-text :nodes="nodes"></rich-text>
<image src="../../pageD/images/file.png" class="tit-img" mode=""></image>
<view class="title">德铭阳光</view>
<view class="tit-info">版本:{{ version }} for {{ phone_type }}</view>
</view>
<rich-text :nodes="nodes" v-if="type != 2"></rich-text>
<view class="main" v-if="type == 2">
<view @click="show = true">
<text>产品介绍</text>
<u-icon name="arrow-right" color="#999"></u-icon>
</view>
<view>
<text>版本更新</text>
<text class="tips">已是最新版本</text>
</view>
</view>
<u-popup v-model="show" v-if="type == 2">
<view>出淤泥而不染濯清涟而不妖</view>
</u-popup>
</view> </view>
</template> </template>
<script> <script>
@@ -26,11 +8,7 @@ import common from '@/static/js/common.js'
export default { export default {
data() { data() {
return { return {
version: "",
phone_type: "",
type: 1,
nodes: "", nodes: "",
show: false,
} }
}, },
onLoad(option) { onLoad(option) {
@@ -39,9 +17,9 @@ export default {
if(option.id) this.getUseHelpInfo(option.id); if(option.id) this.getUseHelpInfo(option.id);
if(option.type == 1) this.certificateInfo(); if(option.type == 1) this.certificateInfo();
if(option.type == 2) this.getAboutUsInfo(); if(option.type == 2) this.getAboutUsInfo();
this.type = option.type; },
this.getVersion(); onNavigationBarButtonTap(e) {
this.phone_type = this.$u.os(); console.log(e);
}, },
methods: { methods: {
setTitle(title){ setTitle(title){
@@ -75,58 +53,16 @@ export default {
} }
}) })
}, },
// 检查版本号
getVersion() {
this.$u.post("Specialci/checkVersion",{app_version: 1}).then(res => {
console.log(res);
this.version = res.data.app_version;
})
}
}, },
} }
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
page { // page {
background-color: #f2f2f2; // background-color: #ECECEC;
} // }
.header { .article-details {
width: 500rpx; min-height: calc(100vh - var(--window-top));
margin: 0 auto; background: #ECECEC;
padding: 30rpx; padding: 20rpx 35rpx 0;
text-align: center;
.tit-img {
width: 200rpx;
height: 200rpx;
}
.title {
margin: 18rpx 0;
font-weight: bold;
font-size: 26rpx;
letter-spacing: 2rpx;
}
.tit-info {
font-size: 22rpx;
color: #666;
}
}
.main {
margin: 20rpx 0;
& > view {
display: flex;
align-items: center;
justify-content: space-between;
width: 100%;
height: 100rpx;
padding: 0 20rpx;
line-height: 100rpx;
color: #333;
font-size: 30rpx;
background-color: #fff;
border-bottom: 1px solid #f2f2f2;
}
.tips {
color: #999;
font-size: 22rpx;
}
} }
</style> </style>

101
pageE/mine/Contact.vue Normal file
View File

@@ -0,0 +1,101 @@
<template>
<view class="contact">
<view class="item-view" @click="makePhone">
<view class="title">联系电话</view>
<view class="content">{{ phoneNumber }}</view>
<u-icon name="arrow-right" color="#9A9A9A" size="24"></u-icon>
</view>
<view class="item-view" @click="customerService">
<view class="title">客服服务</view>
<u-icon name="arrow-right" color="#9A9A9A" size="24"></u-icon>
</view>
</view>
</template>
<script>
export default {
data() {
return {
phoneNumber: '',
}
},
created() {
this.getPhone();
},
methods: {
getPhone() {
this.$u.api.getConfigInfo({
code: 'site_tel400'
}).then(res => {
this.phoneNumber = res.data.config.value;
})
},
makePhone() {
uni.makePhoneCall({
phoneNumber: this.phoneNumber,
});
},
customerService(){
if(!this.$store.state.hasLogin){
this.$u.toast('请先登录');
} else {
function Friend(uuid, name, avatar,time = "", text = "",date = "") {
this.uuid = uuid;
this.name = name;
this.avatar = avatar;
this.online = false;
this.unReadMessage = 0;
this.text = text;
this.time = time;
this.date = date
}
const token = uni.getStorageSync('token');
let that = this
uni.request({
url:"https://mall.dmygkeji.com/api/Specialci/getAtwillUserInfo",
data:{
userId: 1
},
method:"POST",
header:{
"Authorization" : 'Bearer' + " " + token
},
success(res){
res = res.data;
let user = new Friend(res.data.member_id,"官方平台客服",res.data.member_avatar);
that.$u.route({
url:"/pageD/privateChat/privateChat",
params:{
id:JSON.stringify(user)
}
})
}
})
}
},
}
};
</script>
<style lang="scss" scoped>
.contact {
border-top: 1rpx solid #ECECEC;
.item-view {
display: flex;
align-items: center;
justify-content: space-between;
padding: 34rpx 30rpx;
border-bottom: 2rpx solid #ECECEC;
.title {
font-size: 30rpx;
color: #343434;
}
.content {
margin-left: auto;
font-size: 28rpx;
color: #666666;
}
.u-icon {
margin-left: 20rpx;
}
}
}
</style>

View File

@@ -136,7 +136,7 @@ export default {
sizeType: ['original', 'compressed'], sizeType: ['original', 'compressed'],
sourceType: ['album'], sourceType: ['album'],
success: (res) => { success: (res) => {
this.avatar = res.tempFilePaths[0]; // this.avatar = res.tempFilePaths[0];
common.uploadFile({ common.uploadFile({
url: url, url: url,
name: 'avatar', name: 'avatar',
@@ -144,7 +144,7 @@ export default {
}).then(result => { }).then(result => {
// console.log(result); // console.log(result);
// this.$set(this, 'avatar', result.file_path); // this.$set(this, 'avatar', result.file_path);
// this.avatar = result.file_path; this.avatar = result.file_path + "?" + new Date().getTime();
this.uploadPath = result.file_name; this.uploadPath = result.file_name;
}, error => { }, error => {
this.$u.toast(error); this.$u.toast(error);

View File

@@ -124,6 +124,7 @@ export default {
align-items: center; align-items: center;
justify-content: center; justify-content: center;
margin-bottom: 52rpx; margin-bottom: 52rpx;
// font-weight: bold;
> image { > image {
width: 22rpx; width: 22rpx;
height: 22rpx; height: 22rpx;

View File

@@ -9,11 +9,11 @@
<view class="integral-top"> <view class="integral-top">
<view> <view>
<view class="title">总积分</view> <view class="title">总积分</view>
<view class="value">{{ memberInfo.member_points }}</view> <view class="value">{{ memberInfo.member_points || 0 }}</view>
</view> </view>
<view> <view>
<view class="title">经验值</view> <view class="title">经验值</view>
<view class="value">{{ memberInfo.member_exppoints }}</view> <view class="value">{{ memberInfo.member_exppoints || 0 }}</view>
</view> </view>
<view @click="viewProgress"> <view @click="viewProgress">
<view class="title">预计进度</view> <view class="title">预计进度</view>
@@ -24,7 +24,14 @@
</view> </view>
</view> </view>
<scroll-view scroll-y class="integral-botom" :style="{ height: richHeight }"> <scroll-view scroll-y class="integral-botom" :style="{ height: richHeight }">
<view class="rich-container">
<view class="title">{{ points_rule.document_title }}</view>
<rich-text :nodes="pointsNodes"></rich-text>
</view>
<view class="rich-container">
<view class="title" >{{ member_rule.document_title }}</view>
<rich-text :nodes="nodes"></rich-text> <rich-text :nodes="nodes"></rich-text>
</view>
</scroll-view> </scroll-view>
</view> </view>
</swiper-item> </swiper-item>
@@ -69,7 +76,10 @@ export default {
swiperCurrent: 0, swiperCurrent: 0,
pointslogList: [], pointslogList: [],
memberInfo: {}, memberInfo: {},
pointsNodes: '',
nodes: '', nodes: '',
points_rule: {},
member_rule: {}
} }
}, },
components: { components: {
@@ -103,7 +113,10 @@ export default {
this.$u.api.getMemberPointsStat().then((res)=>{ this.$u.api.getMemberPointsStat().then((res)=>{
if(res.errCode == 0) { if(res.errCode == 0) {
this.memberInfo = res.data; this.memberInfo = res.data;
this.nodes = common.unescapeHTML(this.memberInfo.points_rule.document_content); this.nodes = common.unescapeHTML(this.memberInfo.grade_rule.document_content);
this.pointsNodes = common.unescapeHTML(this.memberInfo.points_rule.document_content);
this.points_rule = this.memberInfo.points_rule;
this.member_rule = this.memberInfo.grade_rule;
} }
}) })
}, },
@@ -180,6 +193,18 @@ export default {
border-radius: 20rpx 20rpx 0rpx 0rpx; border-radius: 20rpx 20rpx 0rpx 0rpx;
top: 250rpx; top: 250rpx;
z-index: 9; z-index: 9;
.rich-container {
&:not(:last-child) {
margin-bottom: 56rpx;
}
.title {
text-align: center;
font-size: 32rpx;
color: #333333;
margin-bottom: 26rpx;
// font-weight: bold;
}
}
} }
} }
.coupon { .coupon {

View File

@@ -1,8 +1,5 @@
<template> <template>
<view class="coupon-swiper"> <view class="coupon-swiper">
<!-- <scroll-view scroll-x="true" class="classify-coupon">
<view v-for="(classify, index) in couponGroupList" :key="index" class="classify-item" :class="{ 'active': couponCurrent == index }" @click="couponTabsChange(index)">{{ classify.gc_name }}</view>
</scroll-view> -->
<u-tabs :list="couponGroupList" name="gc_name" :is-scroll="true" :current="couponCurrent" @change="couponTabsChange" active-color="#FF780F" :show-bar="false" height="88" font-size="24" inactive-color="#333333"></u-tabs> <u-tabs :list="couponGroupList" name="gc_name" :is-scroll="true" :current="couponCurrent" @change="couponTabsChange" active-color="#FF780F" :show-bar="false" height="88" font-size="24" inactive-color="#333333"></u-tabs>
<swiper :current="swiperCouponCurrent" @animationfinish="couponAnimationFinish" :style="{ height: swiperHeight }"> <swiper :current="swiperCouponCurrent" @animationfinish="couponAnimationFinish" :style="{ height: swiperHeight }">
<swiper-item class="swiper-coupon-item" v-for="(_, i) in couponGroupList" :key="i"> <swiper-item class="swiper-coupon-item" v-for="(_, i) in couponGroupList" :key="i">
@@ -11,17 +8,10 @@
<Coupon :couponInfo="coupon" :status='0' :type="0" @exchange="exchangeCoupon($event)"></Coupon> <Coupon :couponInfo="coupon" :status='0' :type="0" @exchange="exchangeCoupon($event)"></Coupon>
</view> </view>
<u-empty text="暂无优惠券" mode="coupon" color="#000" v-if="!couponList[i] || !couponList[i].length"></u-empty> <u-empty text="暂无优惠券" mode="coupon" color="#000" v-if="!couponList[i] || !couponList[i].length"></u-empty>
<u-loadmore :status="loadStatus" bgColor="#FFF" margin-bottom="60" v-if="!couponList[i] || couponList[i].length>=pageSize" @loadmore="onreachBottom"></u-loadmore> <u-loadmore :status="loadStatus" bgColor="#FFF" margin-bottom="60" v-if="couponList[i] && couponList[i].length>=pageSize" @loadmore="onreachBottom"></u-loadmore>
</scroll-view> </scroll-view>
</swiper-item> </swiper-item>
</swiper> </swiper>
<!-- <scroll-view scroll-y style="height: 100%;" @scrolltolower="onreachBottom" class="coupon-scroll" :style="{ height: swiperHeight }">
<view v-for="(coupon, index) in couponList" :key="index" class="coupon-item">
<Coupon :couponInfo="coupon" :status='0' :type="0" @exchange="exchangeCoupon($event)"></Coupon>
</view>
<u-loadmore :status="loadStatus" bgColor="#FFF" margin-top="20" margin-bottom="20" v-if="couponList.length>=pageSize" @loadmore="onreachBottom"></u-loadmore>
<u-empty text="暂无优惠券" mode="coupon" color="#000" v-if="!couponList.length"></u-empty>
</scroll-view> -->
</view> </view>
</template> </template>
<script> <script>
@@ -49,7 +39,6 @@ export default {
}, },
watch: { watch: {
couponCurrent(index) { couponCurrent(index) {
// this.couponList = [];
const id = this.couponGroupList[index].gc_id; const id = this.couponGroupList[index].gc_id;
this.getCouponList({ gc_id: id, load: 'reload' }); this.getCouponList({ gc_id: id, load: 'reload' });
}, },

View File

@@ -27,7 +27,7 @@ import storeViwe from './storeConcerns'
export default { export default {
data() { data() {
return { return {
list: [{ name: "商家" }, { name: "达人" }], list: [{ name: "店铺" }, { name: "达人" }],
daren: [], daren: [],
shangjia:[], shangjia:[],
height: 0, height: 0,
@@ -119,7 +119,7 @@ export default {
margin-left: -20rpx; margin-left: -20rpx;
.daren-item { .daren-item {
width: 215rpx; width: 215rpx;
height: 282rpx; height: 270rpx;
display: flex; display: flex;
flex-direction: column; flex-direction: column;
align-items: center; align-items: center;

View File

@@ -1,7 +1,7 @@
<template> <template>
<view class="information"> <view class="information">
<view class="info-avatar"> <view class="info-avatar">
<u-avatar :src="userInfo.member_avatar + '?' + new Date().getTime()" :size="120"></u-avatar> <u-avatar :src="userInfo.member_avatar" :size="120"></u-avatar>
</view> </view>
<view class="info-item"> <view class="info-item">
<view class="title">昵称</view> <view class="title">昵称</view>

View File

@@ -16,7 +16,7 @@
<view class="item-name u-line-1">{{ item.store_name }}</view> <view class="item-name u-line-1">{{ item.store_name }}</view>
<view class="item-date"> <view class="item-date">
<image src="@/pageE/static/mine/26.png"></image> <image src="@/pageE/static/mine/26.png"></image>
<view>{{ item.fav_time | date }}</view> <view>{{ item.fav_time }}</view>
</view> </view>
</view> </view>
</view> </view>

View File

@@ -16,7 +16,7 @@
<view class="item-bottom"> <view class="item-bottom">
<view class="item-date"> <view class="item-date">
<image src="@/pageE/static/mine/26.png"></image> <image src="@/pageE/static/mine/26.png"></image>
<view>{{ item.friend_tomavatar | date }}</view> <view>{{ item.friend_addtime }}</view>
</view> </view>
</view> </view>
</view> </view>

282
pageE/more/ApplyLive.vue Normal file
View File

@@ -0,0 +1,282 @@
<template>
<view class="apply-live">
<view class="basic-info">
<view>
<label for="name">姓名:</label>
<input type="text" id="name" @input="names" placeholder="请输入姓名" />
</view>
<view>
<label for="phone">手机号:</label>
<input type="number" id="phone" @input="phones" maxlength="11" placeholder="请输入手机号" />
</view>
<view>
<label for="idCard">身份证号:</label>
<input type="text" id="idCard" placeholder="请输入身份证号" @input="setIdCard" />
</view>
<view @click="show=true">
<label for="address">居住地址:</label>
<input type="text" id="address" v-model="address" disabled placeholder="请选择居住地址" />
<u-icon name="arrow-down" color="#343434" size="26" class="arrow-icon"></u-icon>
</view>
<view>
<label for="details">详细地址:</label>
<input type="text" id="details" @input="detailss" placeholder="请填写详细地址" />
</view>
</view>
<view class="other-info">
<view class="item-box specialty">
<view class="title">特长领域<text class="brief">(多选</text></view>
<view class="check-box-container">
<u-checkbox-group @change="specialtyGroupChange" active-color="#fff">
<u-checkbox
v-model="item.checked"
v-for="(item, index) in industryList" :key="index"
:name="item.name"
>{{item.name}}</u-checkbox>
</u-checkbox-group>
</view>
</view>
<view class="item-box hobby">
<view class="title">兴趣爱好<text class="brief">(多选</text></view>
<view class="check-box-container">
<u-checkbox-group @change="hobbyGroupChange" active-color="#fff">
<u-checkbox
v-model="item.checked"
v-for="(item, index) in hobbyList" :key="index"
:name="item.name"
>{{item.name}}</u-checkbox>
</u-checkbox-group>
</view>
</view>
</view>
<view class="submit-btn" @click="applyExpert">提交申请</view>
<u-select v-model="show"
mode="mutil-column-auto"
:list="areaList"
value-name="area_id"
label-name="area_name"
child-name="_child"
@confirm="setArea">
</u-select>
<u-toast ref="uToast" />
</view>
</template>
<script>
export default {
data() {
return {
show: false,
areaList: [],
name: '',
phone: '',
idCard: '',
address: '',
details: '',
industryList: [],
hobbyList: [],
checkedIndustryList: [],
checkedHobbyList: [],
isSubmit: true, // 防止多次提交
}
},
onLoad() {
this.getAreaData();
this.getIndustryList();
this.getHobbyList();
},
methods: {
names(a){
console.log(a.detail)
this.name = a.detail.value
},
phones(a){
this.phone = a.detail.value
},
setIdCard(v) {
this.idCard = v.detail.value;
},
detailss(a){
this.details = a.detail.value
},
getAreaData() {
this.$u.api.getArea().then((res)=>{
if (res.errCode == 0) {
this.areaList = res.data;
}
})
},
getIndustryList() {
this.$u.api.getIndustryList().then(res => {
res.data.forEach(element => {
this.industryList.push({
checked: false,
name: element,
});
});
})
},
getHobbyList() {
this.$u.api.getHobbyList().then(res => {
res.data.forEach(element => {
this.hobbyList.push({
checked: false,
name: element,
});
});
})
},
specialtyGroupChange(e) {
// console.log(e);
this.checkedIndustryList = e;
},
hobbyGroupChange(e) {
// console.log(e);
this.checkedHobbyList = e;
},
// 验证
validateData() {
if(this.$u.test.isEmpty(this.name)) {
this.$u.toast('姓名不能为空');
return false;
}
if(this.$u.test.isEmpty(this.phone)) {
this.$u.toast('手机号不能为空');
return false;
}
if(!this.$u.test.mobile(this.phone)) {
this.$u.toast('手机号错误');
return false;
}
if(this.$u.test.isEmpty(this.idCard)) {
this.$u.toast('身份证号不可为空');
return false;
}
// if(!this.$u.test.idCard(this.idCard)) {
// this.$u.toast('请正确填写身份证号');
// return false;
// }
// if(this.$u.test.isEmpty(this.address)) {
// this.$u.toast('地址不能为空');
// return false;
// }
// if(this.$u.test.isEmpty(this.details)) {
// this.$u.toast('详细地址不能为空');
// return false;
// }
if(!this.checkedIndustryList.length) {
this.$u.toast('行业领域不能为空');
return false;
}
if(!this.checkedHobbyList.length) {
this.$u.toast('兴趣爱好不能为空');
return false;
}
return true;
},
applyExpert() {
if(!this.isSubmit) return false;
if(!this.validateData()) return false;
this.isSubmit = false;
this.$u.api.applyExpert({
name: this.name,
mobile: this.phone,
idcard: this.idCard,
address: this.address + this.details,
industry: this.checkedIndustryList,
hobby: this.checkedHobbyList,
}).then(res => {
if(res.errCode == 0) {
this.$refs.uToast.show({
title: res.message,
back: true,
})
} else {
this.isSubmit = true;
this.$u.toast(res.message);
}
})
},
setArea(area) {
// console.log(area);
this.area_id = area[0].value;
this.city_id = area[1].value;
let temp = '';
area.forEach(e => {
temp += e.label;
});
this.address = temp;
},
}
};
</script>
<style lang="scss" scoped>
.apply-live {
min-height: calc(100vh - var(--window-top));
background-color: #ECECEC;
padding-bottom: 60rpx;
.basic-info {
> view {
background-color: #FFFFFF;
padding: 34rpx 30rpx;
display: flex;
align-items: center;
margin-bottom: 2rpx;
> label {
width: 150rpx;
margin-right: 40rpx;
font-size: 30rpx;
color: #343434;
}
> input {
flex: 1;
font-size: 28rpx;
}
.arrow-icon {
margin-left: 20rpx;
}
}
}
.other-info {
margin-bottom: 80rpx;
.item-box {
background-color: #FFFFFF;
padding: 35rpx 30rpx;
margin-bottom: 1rpx;
.title {
font-size: 30rpx;
color: #343434;
margin-bottom: 30rpx;
.brief {
color: #9A9A9A;
}
}
.check-box-container {
/deep/ .u-checkbox {
margin-bottom: 24rpx;
.u-checkbox__icon-wrap {
border-color: #C0C0C0 !important;
}
.u-checkbox__icon-wrap--checked {
.u-icon__icon {
color: #FF780F !important;
}
}
}
}
}
}
.submit-btn {
width: 690rpx;
height: 98rpx;
background: #FF7810;
border-radius: 49rpx;
font-size: 36rpx;
color: #FFFFFF;
margin: 0 auto;
display: flex;
align-items: center;
justify-content: center;
}
}
</style>

View File

@@ -5,7 +5,7 @@
<view class="suggestions"> <view class="suggestions">
<view class="text">{{ item.fb_content }}</view> <view class="text">{{ item.fb_content }}</view>
<view class="image"> <view class="image">
<image v-for="(url, index) in item.fb_images" :key="index" :src="url" mode="aspectFit" @click="previewImage(item.fb_images)"></image> <image v-for="(url, index) in item.fb_images" :key="index" :src="url" mode="aspectFit" @click="previewImage(item.fb_images, index)"></image>
</view> </view>
</view> </view>
<view class="reply" v-if="item.is_reply"> <view class="reply" v-if="item.is_reply">
@@ -45,10 +45,11 @@ export default {
} }
}) })
}, },
previewImage(urls) { previewImage(urls, index) {
// console.log(urls); // console.log(urls);
uni.previewImage({ uni.previewImage({
urls: urls, urls: urls,
current: urls[index]
}); });
}, },
}, },

315
pageE/more/EditInvoice.vue Normal file
View File

@@ -0,0 +1,315 @@
<template>
<view class="edit-invoice">
<view class="invoice-type">
<view class="title">发票类型</view>
<u-radio-group v-model="type" @change="radioGroupChange" icon-size="0" active-color="#FF780F" size="16">
<u-radio
v-for="(item, index) in list" :key="index"
:name="item.type"
:disabled="action==0"
>
{{item.name}}
</u-radio>
</u-radio-group>
</view>
<view class="info-item">
<view class="title">发票抬头</view>
<input type="text" placeholder="抬头名称或极速开票6位代码" v-model="title" />
</view>
<view class="personal" v-show="type==1">
<view class="info-item">
<view class="title">手机号</view>
<input type="text" placeholder="请输入您的手机号" maxlength="11" v-model="personalPhone" />
</view>
<view class="info-item">
<view class="title">身份证号</view>
<input type="text" placeholder="请输入您的身份证号" v-model="idCard" />
</view>
</view>
<view class="company" v-show="type==2">
<view class="info-item">
<view class="title">税号</view>
<input type="text" placeholder="纳税人识别号或社会统一征信代码" v-model="taxNumber" />
</view>
<view class="info-item">
<view class="title">单位地址</view>
<input type="text" placeholder="请输入公司地址" v-model="address" />
</view>
<view class="info-item">
<view class="title">电话号码</view>
<input type="text" placeholder="请输入公司电话" maxlength="11" v-model="companyPhone" />
</view>
<view class="info-item">
<view class="title">开户银行</view>
<input type="text" placeholder="请输入开户银行" v-model="bankDeposit" />
</view>
<view class="info-item">
<view class="title">银行账户</view>
<input type="text" placeholder="请输入银行账户" v-model="bankAccounts" />
</view>
</view>
<view class="save-btn" @click="submit">保存</view>
<u-toast ref="uToast" />
</view>
</template>
<script>
export default {
data() {
return {
invoice_id: '',
action: '', // 0 编辑 1 添加
type: '', // 发票类型
list: [{
type: 1,
name: '个人或事业单位'
}, {
type: 2,
name: '企业'
}],
title: '',
personalPhone: '',
idCard: '',
taxNumber: '',
address: '',
companyPhone: '',
bankDeposit: '',
bankAccounts: '',
}
},
onLoad(option) {
this.action = option.action;
if(option.invoice_id) {
this.type = 0;
this.invoice_id = option.invoice_id;
this.getInvoiceInfo();
} else {
this.type = 1;
}
},
methods: {
submit() {
this.action == 1 ? this.invoiceAdd() : this.invoiceEdit();
},
verificationParams() {
const phone = /^0\d{2,3}-?\d{7,8}$/;
if(this.type == 1) {
if(this.$u.test.isEmpty(this.title)) {
this.$u.toast('发票抬头不可为空');
return false;
}
if(this.$u.test.isEmpty(this.personalPhone)) {
this.$u.toast('手机号不可为空');
return false;
}
if(!this.$u.test.mobile(this.personalPhone) && !phone.test(this.personalPhone)) {
this.$u.toast('请正确填写手机号');
return false;
}
if(this.$u.test.isEmpty(this.idCard)) {
this.$u.toast('身份证号不可为空');
return false;
}
if(!this.$u.test.idCard(this.idCard)) {
this.$u.toast('请正确填写身份证号');
return false;
}
} else {
if(this.$u.test.isEmpty(this.title)) {
this.$u.toast('发票抬头不可为空');
return false;
}
if(this.$u.test.isEmpty(this.taxNumber)) {
this.$u.toast('税号不可为空');
return false;
}
if(this.$u.test.isEmpty(this.address)) {
this.$u.toast('单位地址不可为空');
return false;
}
if(this.$u.test.isEmpty(this.companyPhone)) {
this.$u.toast('电话号码不可为空');
return false;
}
if(!this.$u.test.mobile(this.companyPhone) && !phone.test(this.companyPhone)) {
this.$u.toast('请正确填写电话号码');
return false;
}
if(this.$u.test.isEmpty(this.bankDeposit)) {
this.$u.toast('开户银行不可为空');
return false;
}
if(this.$u.test.isEmpty(this.bankAccounts)) {
this.$u.toast('银行账户不可为空');
return false;
}
}
return true;
},
invoiceAdd() {
if(!this.verificationParams()) return false;
let params = {};
this.type == 1
? params = {
invoice_type: 1,
invoice_title: this.title,
invoice_code: this.idCard,
invoice_rec_mobphone: this.personalPhone,
}
: params = {
invoice_type: 2,
invoice_title: this.title,
invoice_code: this.taxNumber,
invoice_goto_addr: this.address,
invoice_rec_mobphone: this.companyPhone,
invoice_reg_bname: this.bankDeposit,
invoice_reg_baccount: this.bankAccounts,
}
this.$u.api.invoiceAdd(params).then(res => {
if(res.errCode == 0) {
this.$refs.uToast.show({
title: res.message,
back: true
})
} else {
this.$u.toast(res.message);
}
})
},
invoiceEdit() {
if(!this.verificationParams()) return false;
let params = {};
this.type == 1
? params = {
invoice_id: this.invoice_id,
invoice_type: 1,
invoice_title: this.title,
invoice_code: this.idCard,
invoice_rec_mobphone: this.personalPhone,
}
: params = {
invoice_id: this.invoice_id,
invoice_type: 2,
invoice_title: this.title,
invoice_code: this.taxNumber,
invoice_goto_addr: this.address,
invoice_rec_mobphone: this.companyPhone,
invoice_reg_bname: this.bankDeposit,
invoice_reg_baccount: this.bankAccounts,
}
this.$u.api.invoiceEdit(params).then(res => {
if(res.errCode == 0) {
this.$refs.uToast.show({
title: res.message,
back: true
})
} else {
this.$u.toast(res.message);
}
})
},
getInvoiceInfo() {
this.$u.api.getInvoiceInfo({ invoice_id: this.invoice_id }).then(res => {
if(res.errCode == 0) {
const invoice = res.data;
if(res.data.invoice_type == 1) {
this.title = invoice.invoice_title;
this.personalPhone = invoice.invoice_rec_mobphone;
this.idCard = invoice.invoice_code;
this.type = invoice.invoice_type;
} else if(res.data.invoice_type == 2) {
this.title = invoice.invoice_title;
this.taxNumber = invoice.invoice_code;
this.address = invoice.invoice_goto_addr;
this.companyPhone = invoice.invoice_rec_mobphone;
this.bankDeposit = invoice.invoice_reg_bname;
this.bankAccounts = invoice.invoice_reg_baccount;
this.type = invoice.invoice_type;
}
}
})
},
radioGroupChange(e) {
this.type = e;
}
}
};
</script>
<style lang="scss" scoped>
.edit-invoice {
min-height: calc(100vh - var(--window-top));
background: #ECECEC;
.invoice-type {
height: 98rpx;
background: #FFFFFF;
margin-bottom: 2rpx;
padding: 35rpx 30rpx;
display: flex;
align-items: center;
.title {
font-size: 30rpx;
color: #333333;
width: 120rpx;
margin-right: 50rpx;
}
.u-radio-group {
flex: 1;
/deep/ .u-radio {
.u-radio__icon-wrap {
margin: 0 20rpx;
position: relative;
background-color: #DBDBDB;
&::before {
content: '';
position: absolute;
width: 29rpx;
height: 29rpx;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
border: 1rpx solid #DBDBDB;
border-radius: 50%;
}
}
.u-radio__icon-wrap--checked {
background-color: #FF780F;
&::before {
border-color: #FF780F;
}
}
.u-radio__icon-wrap--disabled {
border: none;
}
}
}
}
.info-item {
height: 98rpx;
background: #FFFFFF;
display: flex;
align-items: center;
margin-bottom: 2rpx;
padding: 35rpx 30rpx;
.title {
font-size: 30rpx;
color: #333333;
width: 120rpx;
margin-right: 50rpx;
}
> input {
flex: 1;
font-size: 28rpx;
}
}
.save-btn {
width: 690rpx;
height: 98rpx;
background: #FF780F;
border-radius: 49rpx;
font-size: 36rpx;
color: #FFFFFF;
margin: 120rpx auto 0;
line-height: 98rpx;
text-align: center;
}
}
</style>

123
pageE/more/MineInvoice.vue Normal file
View File

@@ -0,0 +1,123 @@
<template>
<view class="invoice">
<view class="invoice-container">
<view class="invoice-item" v-for="(item, index) in invoiceList" :key="index">
<view class="title">{{ item.invoice_type == 1 ? '个人发票' : '企业发票' }}</view>
<view class="code">{{ item.invoice_title }}</view>
<view class="tool">
<view class="tool-item" @click="edit(0, item.invoice_id)">
<image src="../static/mine/24.png"></image>
<text>编辑</text>
</view>
<view class="tool-item" @click="delInvoice(item.invoice_id)">
<image src="../static/mine/25.png"></image>
<text>删除</text>
</view>
</view>
</view>
</view>
<view class="invoice-btn" @click="edit(1)">添加发票抬头</view>
</view>
</template>
<script>
export default {
data() {
return {
invoiceList: [],
}
},
onShow() {
this.getInvoiceList();
},
methods: {
getInvoiceList() {
this.$u.api.getInvoiceList().then(res => {
this.invoiceList = res.data;
})
},
delInvoice(id) {
this.$u.api.invoiceDel({ invoice_id: id }).then(res => {
if(res.errCode == 0) this.getInvoiceList();
else this.$u.toast(res.message);
})
},
edit(action, invoice_id) {
this.$u.route('/pageE/more/EditInvoice', {
action: action, // 0 编辑 1 添加
invoice_id: invoice_id,
});
}
}
};
</script>
<style lang="scss" scoped>
.invoice {
min-height: calc(100vh - var(--window-top));
background: #ECECEC;
padding-top: 20rpx;
.invoice-container {
width: 690rpx;
margin: 0 auto;
.invoice-item {
margin-bottom: 20rpx;
background-color: #ffffff;
padding: 16rpx 20rpx;
border-radius: 10rpx;
.title {
font-size: 26rpx;
color: #666666;
margin-bottom: 16rpx;
}
.code {
font-size: 28rpx;
color: #333333;
position: relative;
padding: 30rpx 0;
&::after {
position: absolute;
content: '';
width: 100%;
height: 2rpx;
background-color: #ECECEC;
bottom: 0;
left: 0;
}
}
.tool {
padding-top: 18rpx;
display: flex;
align-items: center;
justify-content: flex-end;
.tool-item {
&:not(:last-child) {
margin-right: 30rpx;
}
> image {
width: 23rpx;
height: 23rpx;
margin-right: 14rpx;
}
> text {
font-size: 24rpx;
color: #999999;
}
}
}
}
}
.invoice-btn {
width: 690rpx;
height: 98rpx;
background: #FF780F;
border-radius: 49rpx;
font-size: 36rpx;
color: #FFFFFF;
line-height: 98rpx;
text-align: center;
position: absolute;
bottom: 40rpx;
left: 50%;
transform: translate(-50%, 0);
}
}
</style>

View File

@@ -3,7 +3,7 @@
<view class="status" v-if="orderstate"> <view class="status" v-if="orderstate">
<view class="text"> <view class="text">
<view class="status-text">{{ s_object[orderstate].text }}</view> <view class="status-text">{{ s_object[orderstate].text }}</view>
<view class="time" v-if="orderInfo.view_type == 1 || orderInfo.view_type == 9">距离结束{{ countdown }}</view> <!-- <view class="time" v-if="orderInfo.view_type == 1 || orderInfo.view_type == 9">距离结束{{ countdown }}</view> -->
</view> </view>
<image :src="s_object[orderstate].image"></image> <image :src="s_object[orderstate].image"></image>
</view> </view>
@@ -59,24 +59,30 @@
<view class="title">支付方式</view> <view class="title">支付方式</view>
<view class="price">{{ orderInfo.payment_name }}</view> <view class="price">{{ orderInfo.payment_name }}</view>
</view> </view>
<view>
<view class="title">配送方式</view>
<view class="price">{{ orderInfo.member_deliver_type | getDeliverType(orderInfo.store_deliver_type) }}</view>
</view>
</view> </view>
</view> </view>
<view class="info-order"> <view class="info-order">
<view v-if="orderInfo.extend_order_common.order_message">订单备注{{ orderInfo.extend_order_common.order_message }}</view>
<view>订单编号{{ orderInfo.order_sn }}</view> <view>订单编号{{ orderInfo.order_sn }}</view>
<view>支付单号{{ orderInfo.pay_sn }}</view> <view>支付单号{{ orderInfo.pay_sn }}</view>
<view>创建时间{{ orderInfo.add_time | date}}</view> <view>创建时间{{ orderInfo.add_time | date}}</view>
<view v-if="orderInfo.member_deliver_type == 3" class="address">自提地址{{ orderInfo.extend_store.store_address }}</view>
</view> </view>
</view> </view>
<!-- '4', '8' --> <!-- '4', '8' -->
<view class="btn" v-if="['1', '2', '6'].indexOf(orderstate) >= 0"> <view class="btn" v-if="['1', '2', '4', '6'].indexOf(orderstate) >= 0">
<!-- orderstate == '4' || --> <!-- orderstate == '4' || -->
<view class="cancel" v-if="(orderstate == '1') && orderInfo.is_refund == 1" @click="toOtherPage('RefundOrder')">申请退款</view> <view class="cancel" v-if="(orderstate == '1' || orderstate == '4') && orderInfo.is_refund == 1" @click="toOtherPage('RefundOrder')">申请退款</view>
<!-- <view class="cancel" v-if="orderstate == '8'" @click="cancelOrder">取消订单</view> -->
<view class="cancel" v-if="orderstate == '1' && orderInfo.shipping_code && orderInfo.member_deliver_type != 3" @click="toOtherPage('Logistics')">查看物流</view>
<view class="logistics" v-if="orderstate == '1'" @click="confirmReceive">确认收货</view> <view class="logistics" v-if="orderstate == '1'" @click="confirmReceive">确认收货</view>
<view class="comment" v-if="orderstate == '2'" @click="toOtherPage('Comment')">立即评价</view> <view class="comment" v-if="orderstate == '2'" @click="toOtherPage('Comment')">立即评价</view>
<view class="cancel" v-if="orderstate == '6'" @click="cancelOrder">取消支付</view> <view class="cancel" v-if="orderstate == '6'" @click="cancelOrder">取消支付</view>
<!-- <view class="cancel" v-if="orderstate == '8'" @click="cancelOrder">取消订单</view> --> <view class="phone" v-if="orderstate == '1' && orderInfo.takeawayer_mobile" @click="makePhone(orderInfo.takeawayer_mobile)">
<view class="cancel" v-if="orderstate == '1' && orderInfo.shipping_code" @click="toOtherPage('Logistics')">查看物流</view>
<view class="phone" v-if="orderstate == '1' && orderInfo.takeawayer_phone" @click="makePhone(order.takeawayer_phone)">
<u-icon name="phone-fill" color="#FF780F" size="28"></u-icon> <u-icon name="phone-fill" color="#FF780F" size="28"></u-icon>
<text>联系骑手</text> <text>联系骑手</text>
</view> </view>
@@ -152,8 +158,33 @@ export default {
beforeDestroy() { beforeDestroy() {
clearInterval(this.timer); clearInterval(this.timer);
}, },
filters: {
getDeliverType(user, store) {
let deliverType = '';
function setType(type) {
switch (type) {
case 1:
deliverType = '快递'
break;
case 2:
deliverType = '骑手'
break;
case 3:
deliverType = '自提'
break;
default:
deliverType = '-'
break;
}
}
setType(user);
if(store) {
setType(store);
}
return deliverType;
}
},
methods: { methods: {
viewStoreDetails(id) { viewStoreDetails(id) {
this.$u.route('pageC/merchant/index', { this.$u.route('pageC/merchant/index', {
id: id id: id
@@ -205,8 +236,8 @@ export default {
if(res.errCode == 0) { if(res.errCode == 0) {
this.orderInfo = res.data; this.orderInfo = res.data;
this.setTitle(this.orderInfo.view_type); this.setTitle(this.orderInfo.view_type);
if(res.data.view_type == 1) this.setSpikeTime(res.data.end_time); // if(res.data.view_type == 1) this.setSpikeTime(res.data.end_time);
else if(res.data.view_type == 9) this.setSpikeTime(res.data.pintuangroup_endtime); // else if(res.data.view_type == 9) this.setSpikeTime(res.data.pintuangroup_endtime);
} }
uni.stopPullDownRefresh(); // 结束刷新 uni.stopPullDownRefresh(); // 结束刷新
}) })
@@ -255,6 +286,7 @@ export default {
toOtherPage(url) { toOtherPage(url) {
this.$u.route('/pageE/order/' + url, { this.$u.route('/pageE/order/' + url, {
oid: this.orderInfo.order_id, oid: this.orderInfo.order_id,
type:this.orderInfo.view_type
}); });
}, },
makePhone(phone) { makePhone(phone) {
@@ -461,6 +493,9 @@ export default {
> view:not(:last-child) { > view:not(:last-child) {
margin-bottom: 30rpx; margin-bottom: 30rpx;
} }
.address {
line-height: 40rpx;
}
} }
} }
.btn { .btn {

View File

@@ -1,20 +1,19 @@
<template> <template>
<view class="order"> <view class="order">
<view> <view>
<!-- <u-tabs-swiper ref="tabs" :list="list" active-color="#FF780F" :current="current" font-size="26" @change="tabsChange" height="88" :gutter="30"></u-tabs-swiper> -->
<u-tabs :list="list" name="gc_name" :is-scroll="true" :current="current" @change="tabsChange" active-color="#FF780F" :show-bar="false" height="88" font-size="26" :gutter="20" inactive-color="#333333"></u-tabs> <u-tabs :list="list" name="gc_name" :is-scroll="true" :current="current" @change="tabsChange" active-color="#FF780F" :show-bar="false" height="88" font-size="26" :gutter="20" inactive-color="#333333"></u-tabs>
</view> </view>
<swiper :current="swiperCurrent" @animationfinish="animationfinish" :style="{ height: swiperHeight }"> <swiper :current="swiperCurrent" @animationfinish="animationfinish" :style="{ height: swiperHeight }">
<swiper-item class="swiper-item" v-for="(item, index) in list" :key="index"> <swiper-item class="swiper-item" v-for="(item, index) in list" :key="index">
<scroll-view scroll-y style="height: 100%;" @scrolltolower="reachBottom" class="order-scroll"> <scroll-view scroll-y style="height: 100%;" @scrolltolower="reachBottom" class="order-scroll">
<view v-if="orderList[index]"> <view v-if="orderList[index]">
<view class="item-container" v-for="order in orderList[index]" :key="order.order_id"> <view class="item-container" v-for="(order,index) in orderList[index]" :key="index">
<OrderItem :order="order" @refreshOrderList="refreshOrderList" v-if="current != 4"></OrderItem> <OrderItem :order="order" @refreshOrderList="refreshOrderList" v-if="current != 4"></OrderItem>
<TryOrderItem :order="order" @refreshOrderList="refreshOrderList" v-else></TryOrderItem> <TryOrderItem :order="order" @refreshOrderList="refreshOrderList" v-else></TryOrderItem>
</view> </view>
</view> </view>
<u-empty text="暂无订单" mode="order" color="#000000" v-if="!orderList[index] || !orderList[index].length"></u-empty> <u-empty text="暂无订单" mode="order" color="#000000" v-if="!orderList[index] || !orderList[index].length"></u-empty>
<u-loadmore :status="loadStatus[index]" bgColor="#ECECEC" font-size="14" margin-bottom="20" v-if="current != 4 && (!orderList[index] || orderList[index].length>3)" class="order-loadmore"></u-loadmore> <u-loadmore :status="loadStatus[index]" bgColor="#ECECEC" font-size="14" margin-bottom="20" v-if="current != 4 && (orderList[index] && orderList[index].length>3)" class="order-loadmore"></u-loadmore>
</scroll-view> </scroll-view>
</swiper-item> </swiper-item>
</swiper> </swiper>
@@ -130,13 +129,29 @@ export default {
page: this.page, page: this.page,
type: type, type: type,
}) })
// res.data.forEach(element => {
// element.extend_order_goods.forEach(i=>{
// // console.log(i)
// })
// });
this.timer = true; this.timer = true;
uni.stopPullDownRefresh(); // 结束刷新 uni.stopPullDownRefresh(); // 结束刷新
if(res.errCode == 0) { if(res.errCode == 0) {
if(load == 'reload') this.orderList[this.current] = res.data; if(load == 'reload'){
else if(load == 'loadmore') this.orderList[this.current].push(...res.data); this.orderList[this.current] = []
this.orderList[this.current] = res.data;
}else if(load == 'loadmore'){
this.orderList[this.current].push(...res.data);
} }
}
// this.orderList[this.current].forEach(element => {
// element.extend_order_goods.forEach(i=>{
// // console.log(i)
// })
// });
this.$forceUpdate(); this.$forceUpdate();
// console.log(this.orderList); // console.log(this.orderList);
return res.data.length; return res.data.length;
}, },
@@ -157,11 +172,16 @@ export default {
const res = await this.$u.api.goodsTryOrderList({ const res = await this.$u.api.goodsTryOrderList({
page: this.page, page: this.page,
}) })
console.log(res)
uni.stopPullDownRefresh(); // 结束刷新 uni.stopPullDownRefresh(); // 结束刷新
this.timer = true; this.timer = true;
if(res.errCode == 0) { if(res.errCode == 0) {
if(load == 'reload') this.orderList[this.current] = res.data.list; if(load == 'reload') {
else if(load == 'loadmore') this.orderList[this.current].push(...res.data.list); this.orderList[this.current] = []
this.orderList[this.current] = res.data.list;
}else if(load == 'loadmore'){
this.orderList[this.current].push(...res.data.list);
}
} }
this.$forceUpdate(); this.$forceUpdate();
return res.data.list.length; return res.data.list.length;
@@ -175,8 +195,8 @@ export default {
let promise; let promise;
// if(this.current == 6) promise = this.getAfterSaleList(); // if(this.current == 6) promise = this.getAfterSaleList();
// else // else
// if(this.current == 4) promise = this.goodsTryOrderList(); if(this.current == 4) promise = this.goodsTryOrderList();
promise = this.getOrderList(); else promise = this.getOrderList();
promise.then(length => { promise.then(length => {
this.loadStatus.splice(this.current, 1, "nomore"); this.loadStatus.splice(this.current, 1, "nomore");
if(length == 0) this.page--; if(length == 0) this.page--;

View File

@@ -22,9 +22,10 @@
<view class="title">物流跟踪</view> <view class="title">物流跟踪</view>
<view class="main"> <view class="main">
<view v-for="(item, index) in list" :key="index" class="logistics-item"> <view v-for="(item, index) in list" :key="index" class="logistics-item">
<view class="info u-line-2">{{ item.content }}</view> <view class="info">{{ item.content }}</view>
<view class="date">{{ item.kd_time }}</view> <view class="date">{{ item.kd_time }}</view>
</view> </view>
<u-empty text="暂无物流信息" mode="data" icon-size="88" margin-top="60" v-if="!list.length"></u-empty>
</view> </view>
</view> </view>
</view> </view>

View File

@@ -3,7 +3,6 @@
<view class="radios-container"> <view class="radios-container">
<view v-if="type == 2"> <view v-if="type == 2">
<label class="radio-view" v-for="(item, index) in goodsList" :key="index"> <label class="radio-view" v-for="(item, index) in goodsList" :key="index">
<view class="store_info"> <view class="store_info">
<view class="info_img"> <view class="info_img">
<image :src="item.goods_image" mode=""> <image :src="item.goods_image" mode="">
@@ -84,7 +83,6 @@ export default {
computed: { computed: {
totalPrice() { totalPrice() {
if(this.type == 2){ if(this.type == 2){
console.log(this.goodsList)
let pac = 0; let pac = 0;
for(let i in this.goodsList){ for(let i in this.goodsList){
pac += parseFloat(this.goodsList[i].goods_pay_price) * 100 ; pac += parseFloat(this.goodsList[i].goods_pay_price) * 100 ;
@@ -96,7 +94,8 @@ export default {
} }
}, },
onLoad(option) { onLoad(option) {
this.type = option.type this.type = 2; // 需求更改 所有订单只能全退,不可选择商品。
// this.type = option.type
this.oid = option.oid; this.oid = option.oid;
this.getOrderInfo(option.oid); this.getOrderInfo(option.oid);
}, },
@@ -140,17 +139,18 @@ export default {
applyRefund() { applyRefund() {
if(this.type !=2 && !this.verifyParams()) return false; if(this.type !=2 && !this.verifyParams()) return false;
// addrefundall 只需要订单id 和 说明
let params = { let params = {
order_id: this.oid, order_id: this.oid,
goods_id: this.goods.goods_id, // goods_id: this.goods.goods_id,
refund_amount: Number(this.totalPrice), // refund_amount: Number(this.totalPrice),
reason_info: this.refundText, reason_info: this.refundText,
goods_num: this.num, // goods_num: this.num,
} }
console.log(params) console.log(params)
if(this.type == 2){ if(this.type == 2){
this.$u.api.addrefundall(params).then(res => { this.$u.api.addrefundall(params).then(res => {
console.log(JSON.stringify(res)) // console.log(JSON.stringify(res))
if(res.errCode == 0) { if(res.errCode == 0) {
this.$refs.uToast.show({ this.$refs.uToast.show({
title: res.message, title: res.message,
@@ -189,12 +189,17 @@ export default {
background-color: #EDEDED; background-color: #EDEDED;
.radios-container { .radios-container {
margin-bottom: 20rpx; margin-bottom: 20rpx;
.u-radio-group {
width: 100%;
}
.radio-view { .radio-view {
width: 100%;
background-color: #FFFFFF; background-color: #FFFFFF;
padding: 26rpx; padding: 26rpx;
display: flex; display: flex;
align-items: center; align-items: center;
margin-bottom: 1rpx; margin-bottom: 1rpx;
box-sizing: border-box;
.radio { .radio {
margin-right: 20rpx; margin-right: 20rpx;
} }

View File

@@ -22,6 +22,7 @@
:header="header" :header="header"
:form-data="formData" :form-data="formData"
:name="fileName" :name="fileName"
:size-type="['original']"
@on-list-change="setImageList" @on-list-change="setImageList"
> >
<view slot="addBtn" class="slot-btn" hover-class="slot-btn__hover" hover-stay-time="150"> <view slot="addBtn" class="slot-btn" hover-class="slot-btn__hover" hover-stay-time="150">
@@ -33,6 +34,7 @@
</template> </template>
<script> <script>
export default { export default {
name: 'CommonView',
data() { data() {
return { return {
count: 3, count: 3,

View File

@@ -10,6 +10,10 @@
<view>{{ item.title }}</view> <view>{{ item.title }}</view>
<image src="../static/mine/21.png"></image> <image src="../static/mine/21.png"></image>
</view> </view>
<view class="list-item" @click="clearCache">
<view>清除缓存</view>
<view class="left-text">{{ fileSizeString }}</view>
</view>
<view class="list-item" @click="sheetStatus=true"> <view class="list-item" @click="sheetStatus=true">
<view>退出登录</view> <view>退出登录</view>
<image src="../static/mine/21.png"></image> <image src="../static/mine/21.png"></image>
@@ -23,6 +27,7 @@
import { import {
mapMutations mapMutations
} from 'vuex'; } from 'vuex';
import IMService from '@/static/imservice.js'
export default { export default {
data() { data() {
return { return {
@@ -57,13 +62,17 @@
title: '证件中心', title: '证件中心',
link: '../mine/ArticleDetails?type=1' link: '../mine/ArticleDetails?type=1'
}, },
{
title: '第三方绑定',
link: './binding'
},
{ {
title: '屏蔽用户', title: '屏蔽用户',
link: './ShieldUsers' link: './ShieldUsers'
}, },
{ {
title: '关于我们', title: '关于我们',
link: '../mine/ArticleDetails?type=2' link: '/pageE/setting/version'
}, },
{ {
title: '帮助与反馈', title: '帮助与反馈',
@@ -71,9 +80,13 @@
}, },
], ],
content: "是否退出登录!", content: "是否退出登录!",
show: false show: false,
fileSizeString: "", // 缓存大小
} }
}, },
onLoad() {
this.getCache();
},
methods: { methods: {
...mapMutations(['logout']), ...mapMutations(['logout']),
// 退出登录选择 0切换账号 | 1退出登录 // 退出登录选择 0切换账号 | 1退出登录
@@ -83,12 +96,54 @@
this.show = true; this.show = true;
} }
}, },
// 获取缓存
getCache() {
let _this = this;
// #ifdef APP-PLUS
plus.cache.calculate(function(size) {
let sizeCache = size;
if (sizeCache == 0) {
_this.fileSizeString = "0B";
} else if (sizeCache < 1024) {
_this.fileSizeString = sizeCache + "B";
} else if (sizeCache < 1048576) {
_this.fileSizeString = (sizeCache / 1024).toFixed(2) + "KB";
} else if (sizeCache < 1073741824) {
_this.fileSizeString = (sizeCache / 1048576).toFixed(2) + "MB";
} else {
_this.fileSizeString = (sizeCache / 1073741824).toFixed(2) + "GB";
}
});
// #endif
},
// 清除缓存
clearCache() {
// #ifdef APP-PLUS
uni.showModal({
title: "确定要清理缓存吗?",
cancelColor: "#999",
confirmColor: "#f00",
success: (res) => {
// console.log(res);
if (res.confirm) {
plus.cache.clear(function(e) {
console.log(e);
})
}
this.getCache();
}
})
// #endif
},
toNextPage(url, ...params) { toNextPage(url, ...params) {
uni.navigateTo({ uni.navigateTo({
url: url url: url
}); });
}, },
loginOut() { async loginOut() {
// 显示新人领取优惠券
this.$store.commit('updateShowCoupons', true);
let im = this.imService
this.logout(); this.logout();
uni.redirectTo({ uni.redirectTo({
url: "../../pageA/login/login", url: "../../pageA/login/login",
@@ -117,6 +172,11 @@
width: 14rpx; width: 14rpx;
height: 24rpx; height: 24rpx;
} }
.left-text {
margin-left: auto;
font-size: 28rpx;
}
} }
} }
</style> </style>

View File

@@ -14,7 +14,7 @@
export default { export default {
data() { data() {
return { return {
src: 'https://dmmall.sdbairui.com/uploads/home/avatar/avatar_19.jpg', src: 'https://mall.dmygkeji.com/uploads/home/avatar/avatar_19.jpg',
userList: [], userList: [],
} }
}, },

129
pageE/setting/binding.vue Normal file
View File

@@ -0,0 +1,129 @@
<template>
<view class="binding">
<view class="binding-item" v-for="(item, index) in bangdingList" :key="index">
<view class="title">{{ item.title }}</view>
<view class="btn unbundling-btn" @click="unbinding(item.type)" v-if="userInfo[item.name]">
<image src="/static/image/mine/44.png"></image>
<text>解绑</text>
</view>
<view class="btn bundling-btn" @click="binding(item.provider, item.type)" v-else>
<image src="/static/image/mine/43.png"></image>
<text>绑定</text>
</view>
</view>
</view>
</template>
<script>
export default {
data() {
return {
userInfo: '',
bangdingList: [
{
title: 'QQ',
provider: 'qq', // uni 登录 provider
type: 'qq', // 后台需要解绑的参数名 type
name: 'member_qqopenid', // 后台返回是否绑定的字段名
},
{
title: '微信',
provider: 'weixin',
type: 'wechat',
name: 'member_wxopenid',
}
]
}
},
onLoad() {
this.getMemberInfo();
},
methods: {
getMemberInfo() {
this.$u.api.getMemberInfo().then(res => {
if (res.errCode == 0) {
this.userInfo = res.data.MemberArray;
}
})
},
binding(provider, type) {
uni.login({
provider: provider,
success: (loginRes) => {
console.log(loginRes);
uni.getUserInfo({
provider: provider,
success: (res) => {
console.log(res.userInfo.openId);
this.$u.api.bindingThird({
openid: res.userInfo.openId,
type: type
}).then(res => {
this.$u.toast(res.message);
if(res.errCode == 0) {
this.getMemberInfo();
}
})
}
})
},
fail: (e) => {
console.log(e);
}
});
},
unbinding(type) {
this.$u.api.unbindingThird({ type: type }).then(res => {
this.$u.toast(res.message);
if(res.errCode == 0) {
this.getMemberInfo();
}
})
}
}
};
</script>
<style lang="scss" scoped>
.binding {
min-height: calc(100vh - var(--window-top));
background-color: #ECECEC;
padding-top: 1rpx;
.binding-item {
display: flex;
align-items: center;
justify-content: space-between;
padding: 35rpx 30rpx;
height: 98rpx;
background-color: #FFFFFF;
&:not(:last-child) {
margin-bottom: 2rpx;
}
.title {
font-size: 30rpx;
color: rgba(52,52,52,1);
}
.btn {
// width: 112rpx;
height: 48rpx;
border-radius: 10rpx;
font-size: 24rpx;
display: flex;
align-items: center;
justify-content: space-between;
padding: 12rpx 16rpx;
> image {
width: 26rpx;
height: 26rpx;
margin-right: 10rpx;
}
}
.unbundling-btn {
border: 1rpx solid rgba(102,102,102,1);
color: rgba(102,102,102,1);
}
.bundling-btn {
border: 1rpx solid rgba(255,120,16,1);
color: #FF7810;
}
}
}
</style>

View File

@@ -3,8 +3,8 @@
<view class="feedback-box"> <view class="feedback-box">
<view class="feedback-title">人工服务</view> <view class="feedback-title">人工服务</view>
<view class="feedback-itme"> <view class="feedback-itme">
<view class="manual"> <view class="manual" @click="makePhone">
<view class="service-phone">拨打官方客服电话400-100-100</view> <view class="service-phone">拨打官方客服电话{{ tel400 }}</view>
<view class="manual-time">{{ wkTime }}</view> <view class="manual-time">{{ wkTime }}</view>
</view> </view>
<view class="suggestions" @click="writeComments">意见反馈</view> <view class="suggestions" @click="writeComments">意见反馈</view>
@@ -31,6 +31,11 @@ export default {
this.getHelpList(); this.getHelpList();
}, },
methods: { methods: {
makePhone() {
uni.makePhoneCall({
phoneNumber: this.tel400,
});
},
viewAnswer(item) { viewAnswer(item) {
this.$store.commit('setQuestion', item); this.$store.commit('setQuestion', item);
this.$u.route('pageE/setting/question'); this.$u.route('pageE/setting/question');

View File

@@ -0,0 +1,80 @@
<template>
<u-modal v-model="show" :show-cancel-button="is_focus_upgrade" confirm-text="升级" title="发现新版本" @cancel="cancel" @confirm="confirm">
<view class="u-update-content">
<!-- <rich-text :nodes="content"></rich-text> -->
</view>
</u-modal>
</template>
<script>
export default {
data() {
return {
is_focus_upgrade: Boolean, // 是否强制更新
show: true,
// 传递给uni-app"rich-text"组件的内容,可以使用"<br>"进行换行
content: `
1. 新增几个bug<br>
2. 新增Modal模态框组件<br>
3. 新增压窗屏组件可以在APP上以弹窗的形式遮盖导航栏和底部tabbar<br>
`,
isAutoUpdate: false,
}
},
onLoad(option) {
this.is_focus_upgrade = option.status == 1 ? false : true;
},
onReady() {
this.show = true;
},
methods: {
cancel() {
this.closeModal();
},
confirm() {
// #ifdef APP-PLUS
if (plus.os.name == "Android") {
const appurl = "market://details?id=com.tencent.mobileqq"; //这个是通用应用市场如果想指定某个应用商店需要单独查这个应用商店的包名或scheme及参数
plus.runtime.openURL(appurl);
} else if(plus.os.name == "ios") {
const appurl = "itms-apps://itunes.apple.com/cn/app/id1144816653?mt=8";
plus.runtime.openURL(appurl);
}
// endif
// ifdef H5
this.closeModal();
// #endif
},
closeModal() {
const pages = getCurrentPages();
// console.log(pages);
if(pages.length == 2) {
this.$u.route('/pageA/welcome/welcome');
} else {
uni.navigateBack();
}
}
}
}
</script>
<style lang="scss">
page {
background-color: rgba(0, 0, 0, 0);
}
.u-mode-center-box {
background-color: transparent;
}
// .u-full-content {
// background-color: #00C777;
// }
.u-update-content {
font-size: 26rpx;
color: $u-content-color;
line-height: 1.7;
padding: 30rpx;
}
::v-deep.u-mode-center-box {
background-color: transparent;
}
</style>

127
pageE/setting/version.vue Normal file
View File

@@ -0,0 +1,127 @@
<template>
<view class="version">
<view class="header">
<image src="../../pageD/images/file.png" class="tit-img" mode=""></image>
<view class="title">德铭阳光</view>
<view class="tit-info">版本: {{ $app_version }} for {{ phone_type }}</view>
</view>
<view class="main">
<view @click="viewAboutUs">
<text class="title">产品介绍</text>
<u-icon name="arrow-right" color="#999"></u-icon>
</view>
<view class="version-view">
<text class="title">版本更新</text>
<text class="tips" v-if="version" @click="updateVersion">发现新版本: {{ version }}</text>
<text class="tips" v-else>已是最新版本</text>
</view>
<view>
<text class="title">联系我们</text>
<text class="tips">{{ phoneNumber }}</text>
</view>
</view>
</view>
</template>
<script>
export default {
data() {
return {
version: '',
phone_type: "",
status: '',
phoneNumber: '',
}
},
onLoad() {
this.getVersion();
this.getPhone();
this.phone_type = this.$u.os();
},
methods: {
// 检查版本号
getVersion() {
this.$u.post("Specialci/checkVersion",{ app_version: this.$app_version }).then(res => {
// console.log(res);
if(res.data.app_version != this.$app_version) {
this.version = res.data.app_version;
this.status = res.data.is_focus_upgrade; // 0 不强制 1 强制
}
})
},
getPhone() {
this.$u.api.getConfigInfo({
code: 'site_tel400'
}).then(res => {
this.phoneNumber = res.data.config.value;
})
},
viewAboutUs() {
this.$u.route('/pageE/mine/ArticleDetails', {
type: 2
});
},
updateVersion() {
this.$u.route('/pageE/setting/updateVersion', {
status: this.status,
});
}
}
};
</script>
<style lang="scss" scoped>
.header {
width: 500rpx;
margin: 0 auto;
padding: 30rpx;
text-align: center;
.tit-img {
width: 200rpx;
height: 200rpx;
}
.title {
margin: 18rpx 0;
font-weight: bold;
font-size: 26rpx;
letter-spacing: 2rpx;
}
.tit-info {
font-size: 22rpx;
color: #666;
}
}
.main {
margin: 20rpx 0;
& > view {
display: flex;
align-items: center;
justify-content: space-between;
width: 100%;
height: 100rpx;
padding: 0 20rpx;
line-height: 100rpx;
color: #333;
font-size: 30rpx;
background-color: #fff;
border-bottom: 1px solid #f2f2f2;
.title {
width: 200rpx;
}
}
.tips {
color: #999;
font-size: 28rpx;
}
.version-view {
.tips {
flex: 1;
text-align: right;
}
}
}
.u-content {
padding: 20rpx;
font-size: 30rpx;
text-indent: 1rem;
line-height: 1.2;
}
</style>

BIN
pageE/static/mine/38.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

View File

@@ -14,6 +14,7 @@
<view class="order-status">{{ item.status }}</view> <view class="order-status">{{ item.status }}</view>
</view> </view>
<view class="order-name">美甲人姓名{{ item.manicure_name }}</view> <view class="order-name">美甲人姓名{{ item.manicure_name }}</view>
<view class="order-name">美甲人电话{{ item.phone }}</view>
<view class="order-date">时间{{ item.manicure_time | date }}</view> <view class="order-date">时间{{ item.manicure_time | date }}</view>
</view> </view>
<u-loadmore :status="loadStatus" bgColor="#ECECEC" margin-bottom="20" v-if="orderList.length>=pageSize"></u-loadmore> <u-loadmore :status="loadStatus" bgColor="#ECECEC" margin-bottom="20" v-if="orderList.length>=pageSize"></u-loadmore>
@@ -129,7 +130,7 @@ export default {
.order-item { .order-item {
padding: 30rpx; padding: 30rpx;
width:690rpx; width:690rpx;
height: 229rpx; // height: 229rpx;
background: rgba(255,255,255,1); background: rgba(255,255,255,1);
border-radius: 10rpx; border-radius: 10rpx;
margin-bottom: 20rpx; margin-bottom: 20rpx;

View File

@@ -5,15 +5,23 @@
<view>美甲人</view> <view>美甲人</view>
<input type="text" v-model="name" /> <input type="text" v-model="name" />
</view> </view>
<view class="order-date" @click="show=true"> <view class="order-name">
<view class="title">美甲时间</view> <view>美甲人电话</view>
<image src="../static/mine/21.png" v-if="!time"></image> <input type="text" v-model="phone" maxlength="11" />
<view v-else class="time">{{ time }}</view>
</view> </view>
<view class="order-address"> <view class="order-address">
<view class="title">美甲地址</view> <view class="title">美甲地址</view>
<input type="text" v-model="address" disabled /> <input type="text" v-model="address" disabled />
</view> </view>
<view class="order-name">
<view>美甲店电话</view>
<input type="text" v-model="storePhone" disabled />
</view>
<!-- <view class="order-date" @click="show=true">
<view class="title">美甲时间</view>
<image src="../static/mine/21.png" v-if="!time"></image>
<view v-else class="time">{{ time }}</view>
</view> -->
</view> </view>
<view class="order-btn" @click="addManicureOrder">确认订单</view> <view class="order-btn" @click="addManicureOrder">确认订单</view>
<u-picker mode="time" v-model="show" :params="params" @confirm="chooseDate"></u-picker> <u-picker mode="time" v-model="show" :params="params" @confirm="chooseDate"></u-picker>
@@ -26,6 +34,8 @@ export default {
return { return {
name: '', name: '',
time: '', time: '',
phone: '',
storePhone: '',
address: '', address: '',
params: { params: {
year: true, year: true,
@@ -41,28 +51,38 @@ export default {
}, },
onLoad() { onLoad() {
this.getConfigInfo(); this.getConfigInfo();
this.getPhone();
}, },
methods: { methods: {
validateValue() { validateValue() {
if(this.$u.test.isEmpty(this.name)) { if(this.$u.test.isEmpty(this.name)) {
this.showToast('姓名不能为空', 'error'); this.showToast('姓名不能为空');
return false; return false;
} }
if(this.$u.test.isEmpty(this.time)) { if(this.$u.test.isEmpty(this.phone)) {
this.showToast('日期不能为空', 'error'); this.showToast('美甲人电话不能为空');
return false; return false;
} }
if(new Date() > new Date(this.time)) { if(!this.$u.test.mobile(this.phone)) {
this.showToast('日期错误', 'error'); this.showToast('美甲人电话错误');
return false; return false;
} }
// if(this.$u.test.isEmpty(this.time)) {
// this.showToast('日期不能为空', 'error');
// return false;
// }
// if(new Date() > new Date(this.time)) {
// this.showToast('日期错误', 'error');
// return false;
// }
return true; return true;
}, },
addManicureOrder() { addManicureOrder() {
if(!this.validateValue()) return false; if(!this.validateValue()) return false;
this.$u.api.addManicure({ this.$u.api.addManicure({
name: this.name, name: this.name,
time: new Date(this.time) phone: this.phone,
// time: new Date(this.time)
}).then((res)=>{ }).then((res)=>{
if(res.errCode == 0) { if(res.errCode == 0) {
this.$refs.uToast.show({ this.$refs.uToast.show({
@@ -85,6 +105,15 @@ export default {
} }
}) })
}, },
getPhone() {
this.$u.api.getConfigInfo({
code: 'manicure_phone',
}).then(res => {
if(res.errCode == 0) {
this.storePhone = res.data.config.value;
}
})
},
chooseDate(e) { chooseDate(e) {
// let time = e.year + '年' + e.month + '月' + e.day + '日' + e.hour + '时' + e.minute + '分' // let time = e.year + '年' + e.month + '月' + e.day + '日' + e.hour + '时' + e.minute + '分'
let time = e.year + '/' + e.month + '/' + e.day + ' ' + e.hour + ':' + e.minute let time = e.year + '/' + e.month + '/' + e.day + ' ' + e.hour + ':' + e.minute

View File

@@ -3,13 +3,14 @@
<u-tabs-swiper ref="tabs" :list="list" :is-scroll="false" active-color="#FF780F" :current="current" font-size="32" :show-bar="false" @change="tabsChange" height="88" ></u-tabs-swiper> <u-tabs-swiper ref="tabs" :list="list" :is-scroll="false" active-color="#FF780F" :current="current" font-size="32" :show-bar="false" @change="tabsChange" height="88" ></u-tabs-swiper>
<swiper :current="swiperCurrent" @animationfinish="animationfinish" :style="{ height: swiperHeight }"> <swiper :current="swiperCurrent" @animationfinish="animationfinish" :style="{ height: swiperHeight }">
<swiper-item class="swiper-item" v-for="(_, index) in list" :key="index"> <swiper-item class="swiper-item" v-for="(_, index) in list" :key="index">
<scroll-view scroll-y class="scroll-coupon"> <scroll-view scroll-y class="scroll-coupon" @scrolltolower="onreachBottom">
<view v-if="couponList[index]"> <view v-if="couponList[index]">
<view class="coupon-item" v-for="(coupon, c_index) in couponList[index]" :key="c_index"> <view class="coupon-item" v-for="(coupon, c_index) in couponList[index]" :key="c_index">
<Coupon :couponInfo="coupon" :status='index' @use="useCoupon($event)" :goodsClass="goodsClass"></Coupon> <Coupon :couponInfo="coupon" :status='index' @use="useCoupon($event)" :goodsClass="goodsClass"></Coupon>
</view> </view>
</view> </view>
<u-empty text="暂无优惠券" mode="coupon" v-if="!couponList[index] || !couponList[index].length"></u-empty> <u-empty text="暂无优惠券" mode="coupon" v-if="!couponList[index] || !couponList[index].length"></u-empty>
<u-loadmore :status="loadStatus[current]" bgColor="#FFFFFF" font-size="14" margin-top="20" margin-bottom="20" @loadmore="onreachBottom" v-if="!couponList[index] || couponList[index].length>=pageSize"></u-loadmore>
</scroll-view> </scroll-view>
</swiper-item> </swiper-item>
</swiper> </swiper>
@@ -32,6 +33,10 @@ export default {
swiperHeight: '', swiperHeight: '',
couponList: [], couponList: [],
goodsClass: [], goodsClass: [],
pageSize: 6,
page: 0,
timer: true,
loadStatus: ['loadmore', 'loadmore', 'loadmore'],
} }
}, },
components: { components: {
@@ -46,8 +51,7 @@ export default {
}, },
watch: { watch: {
current(value) { current(value) {
let status = value + 1; this.getMemberCouponList(value);
this.getMemberCouponList(status);
} }
}, },
methods: { methods: {
@@ -56,20 +60,35 @@ export default {
this.goodsClass = res.data; this.goodsClass = res.data;
}) })
}, },
getMemberCouponList(current) { async getMemberCouponList({ load = 'reload' }) {
this.$u.api.getMemberCouponList({ if(load == 'reload') this.page = 0;
status: current const res = await this.$u.api.getMemberCouponList({
}).then(res => { status: this.current + 1, // 代金券状态 1:未用 2:已用 3:过期 4:收回
if(res.errCode == 0) { page: this.page,
this.couponList[this.current] = res.data; })
} else { this.timer = true;
this.couponList[this.current] = []; if(load == 'reload') this.couponList[this.current] = res.data;
} else if(load == 'loadmore') this.couponList[this.current].push(...res.data);
this.$forceUpdate(); this.$forceUpdate();
// console.log(this.couponList);
return res.data.length;
},
onreachBottom() {
if(!this.timer) return false;
this.timer = false;
this.loadStatus.splice(this.current, 1, "loading");
this.page++;
this.getMemberCouponList({ load: 'loadmore' }).then(length => {
this.loadStatus.splice(this.current, 1, "nomore");
if(length == 0) this.page--;
}).catch(() => {
this.loadStatus.splice(this.current, 1, "nomore");
console.log(this.loadStatus[this.current]);
this.page--;
}) })
}, },
useCoupon(coupon) { useCoupon(coupon) {
console.log(coupon); // console.log(coupon);
// if(coupon.type == 1) { // if(coupon.type == 1) {
// this.$u.route({ // this.$u.route({
// type: 'switchTab', // type: 'switchTab',

View File

@@ -1,9 +1,9 @@
<template> <template>
<view class="mine-history"> <view class="mine-history">
<scroll-view scroll-y class="history-box" @scrolltolower="reachBottom"> <view scroll-y class="history-box">
<view class="item-box"> <view class="item-box">
<!-- 需求只显示最近五十条数据 后台未作限制 --> <!-- 需求只显示最近五十条数据 后台未作限制 -->
<view v-for="(item, index) in historyList.slice(0, 50)" :key="index" class="history-item"> <view v-for="(item, index) in historyList" :key="index" class="history-item">
<view class="item-title" @click="viewStoreDetails(item.store_id)"> <view class="item-title" @click="viewStoreDetails(item.store_id)">
<image :src="item.store_avatar"></image> <image :src="item.store_avatar"></image>
<view class="u-line-1">{{ item.store_name }}</view> <view class="u-line-1">{{ item.store_name }}</view>
@@ -19,8 +19,8 @@
</view> </view>
<u-action-sheet :list="actionList" v-model="showAction" :cancel-btn="true" @click="delHistory" border-radius="20"></u-action-sheet> <u-action-sheet :list="actionList" v-model="showAction" :cancel-btn="true" @click="delHistory" border-radius="20"></u-action-sheet>
<u-empty text="暂无足迹" mode="list" color="#000" v-if="!historyList.length"></u-empty> <u-empty text="暂无足迹" mode="list" color="#000" v-if="!historyList.length"></u-empty>
<u-loadmore class="load-size" :status="loadStatus" bgColor="#ECECEC" margin-top="20" margin-bottom="20" v-if="historyList.length > pageSize" @loadmore="reachBottom"></u-loadmore> <u-loadmore class="load-size" :status="loadStatus" bgColor="#ECECEC" margin-top="20" margin-bottom="20" v-if="historyList.length >= pageSize" @loadmore="reachBottom"></u-loadmore>
</scroll-view> </view>
</view> </view>
</template> </template>
@@ -47,6 +47,9 @@ export default {
onLoad() { onLoad() {
this.getBrowseList(); this.getBrowseList();
}, },
onReachBottom(){
this.reachBottom()
},
methods: { methods: {
viewAction(id) { viewAction(id) {
this.showAction = true; this.showAction = true;
@@ -58,6 +61,10 @@ export default {
this.$u.api.delMemberBrowse({ goods_id: glist }).then(res => { this.$u.api.delMemberBrowse({ goods_id: glist }).then(res => {
if(res.errCode == 0) { if(res.errCode == 0) {
this.getBrowseList(); this.getBrowseList();
uni.pageScrollTo({
scrollTop: 0,
duration: 300
});
} else { } else {
this.$u.toast(res.message); this.$u.toast(res.message);
} }
@@ -109,13 +116,16 @@ export default {
} }
}; };
</script> </script>
<style lang="scss" scoped> <style lang="scss">
page{
background: #ECECEC;
}
.mine-history { .mine-history {
min-height: calc(100vh - var(--window-top)); min-height: calc(100vh - var(--window-top));
background: #ECECEC; background: #ECECEC;
.history-box { .history-box {
box-sizing: border-box; box-sizing: border-box;
height: calc(100vh - var(--window-top)); // height: calc(100vh - var(--window-top));
padding: 20rpx 30rpx 0; padding: 20rpx 30rpx 0;
.item-box { .item-box {
display: flex; display: flex;

View File

@@ -21,7 +21,7 @@
<view class="order-status">{{ item.order_status | viewStatus }}</view> <view class="order-status">{{ item.order_status | viewStatus }}</view>
</view> </view>
<view class="order-info"> <view class="order-info">
<image :src="type == 1 ? item.goods_image : item.images[0]"></image> <image :src="type == 1 ? item.goods_image : item.images[0]" mode="aspectFit"></image>
<view v-if="item.deliver_goods_type == 2 && item.order_status == 20"> <view v-if="item.deliver_goods_type == 2 && item.order_status == 20">
<view>骑手名字{{ item.takeawayer_name || '' }}</view> <view>骑手名字{{ item.takeawayer_name || '' }}</view>
<view>联系方式{{ item.takeawayer_mobile || '' }}</view> <view>联系方式{{ item.takeawayer_mobile || '' }}</view>
@@ -117,6 +117,8 @@ export default {
uni.navigateTo({ uni.navigateTo({
url: '/pageE/tool/WashOrder' url: '/pageE/tool/WashOrder'
}); });
this.current = 0;
this.swiperCurrent = 0;
this.showPopup = false; this.showPopup = false;
} }
} }
@@ -125,8 +127,8 @@ export default {
this.sendLaundryOrderList(); this.sendLaundryOrderList();
}, },
onShow() { onShow() {
this.current = 0; // this.current = 0;
this.swiperCurrent = 0; // this.swiperCurrent = 0;
this.showPopup = false; this.showPopup = false;
this.sendLaundryOrderList(); this.sendLaundryOrderList();
this.sendCommentList(); this.sendCommentList();

View File

@@ -57,10 +57,6 @@
<view class="order-view order-area" @click="showAddress=true"> <view class="order-view order-area" @click="showAddress=true">
<view class="title">省市区:</view> <view class="title">省市区:</view>
<input type="text" v-model="area" disabled /> <input type="text" v-model="area" disabled />
<!-- <view class="location">
<image src="../static/mine/28.png"></image>
<view>定位</view>
</view> -->
</view> </view>
<view class="order-view order-address"> <view class="order-view order-address">
<view class="title">详细地址:</view> <view class="title">详细地址:</view>
@@ -85,7 +81,7 @@
</view> </view>
</u-upload> </u-upload>
</view> </view>
<view class="wash-btn" @click="submitImage">确认送洗</view> <view class="wash-btn" @click="$u.throttle(submitImage, 2000)">确认送洗</view>
</scroll-view> </scroll-view>
</swiper-item> </swiper-item>
<swiper-item class="swiper-item"> <swiper-item class="swiper-item">
@@ -113,10 +109,6 @@
<view class="order-view order-area" @click="showAddress=true"> <view class="order-view order-area" @click="showAddress=true">
<view class="title">省市区:</view> <view class="title">省市区:</view>
<input type="text" v-model="area" disabled /> <input type="text" v-model="area" disabled />
<!-- <view class="location">
<image src="../static/mine/28.png"></image>
<view>定位</view>
</view> -->
</view> </view>
<view class="order-view order-address"> <view class="order-view order-address">
<view class="title">详细地址:</view> <view class="title">详细地址:</view>
@@ -141,7 +133,7 @@
</view> </view>
</u-upload> </u-upload>
</view> </view>
<view class="wash-btn" @click="submitImage">确认送洗</view> <view class="wash-btn" @click="$u.throttle(submitImage, 2000)">确认送洗</view>
</swiper-item> </swiper-item>
</swiper> </swiper>
<u-select v-model="showClothesType" :list="typeList" value-name="id" label-name="name" @confirm="confirmType" mode="single-column"></u-select> <u-select v-model="showClothesType" :list="typeList" value-name="id" label-name="name" @confirm="confirmType" mode="single-column"></u-select>
@@ -160,7 +152,7 @@
<text>选择订单</text> <text>选择订单</text>
<u-icon name="close" color="#A29FA3" size="32" @click="showPopup=false"></u-icon> <u-icon name="close" color="#A29FA3" size="32" @click="showPopup=false"></u-icon>
</view> </view>
<scroll-view scroll-y class="order-list"> <scroll-view scroll-y class="order-list" @scrolltolower="onreachBottom">
<u-radio-group v-model="value" @change="radioChange"> <u-radio-group v-model="value" @change="radioChange">
<view v-for="(items, index) in orderList" :key="index" class="order-item"> <view v-for="(items, index) in orderList" :key="index" class="order-item">
<view class="store"> <view class="store">
@@ -195,6 +187,7 @@
</view> </view>
</view> </view>
</u-radio-group> </u-radio-group>
<u-loadmore :status="loadStatu" bgColor="#FFFFFF" font-size="14" margin-top="20" margin-bottom="20"></u-loadmore>
</scroll-view> </scroll-view>
<view class="order-btn" @click="confirm">确认</view> <view class="order-btn" @click="confirm">确认</view>
</view> </view>
@@ -222,7 +215,7 @@ export default {
}], }],
typeList: [], // 商品类型列表 typeList: [], // 商品类型列表
orderList: [], // 商品列表 orderList: [], // 商品列表
page: 0, page: 1,
current: 0, current: 0,
swiperCurrent: 0, swiperCurrent: 0,
areaList: [], // 地址列表 areaList: [], // 地址列表
@@ -244,6 +237,8 @@ export default {
name: 'common', // 其他图片 name: 'common', // 其他图片
}, },
debounce: true, debounce: true,
timer: true,
loadStatu: 'loadmore'
} }
}, },
onShow() { onShow() {
@@ -251,7 +246,6 @@ export default {
// this.current = 0; // this.current = 0;
// this.swiperCurrent = 0; // this.swiperCurrent = 0;
this.showPopup = false; this.showPopup = false;
this.choose = false;
}, },
onLoad() { onLoad() {
this.getOrderList(); this.getOrderList();
@@ -267,6 +261,7 @@ export default {
this.phone = ''; this.phone = '';
this.area = ''; this.area = '';
this.address = ''; this.address = '';
this.choose = false;
} }
}, },
methods: { methods: {
@@ -284,21 +279,38 @@ export default {
// console.log(e); // console.log(e);
this.type = e[0]; this.type = e[0];
}, },
onreachBottom() {
if(!this.timer) return false;
this.timer = false;
this.loadStatu = "loading";
this.page++;
this.getOrderList({ load: 'loadmore' }).then(length => {
if(length == 0) {
this.page--;
this.loadStatu = "nomore";
} else {
this.loadStatu = "loadmore";
}
}).catch(() => {
this.loadStatu = "nomore";
this.page--;
})
},
async getOrderList({ load = 'reload' } = {}) { async getOrderList({ load = 'reload' } = {}) {
const res = await this.$u.api.getOrderList({ const res = await this.$u.api.getSendOrderList({
page: this.page, page: this.page,
// type: '40',
}) })
this.timer = true; this.timer = true;
if(res.errCode == 0) { if(res.errCode == 0) {
if(load == 'reload') this.orderList = res.data; if(load == 'reload') this.orderList = res.data;
else this.orderList.push(...res.data); else this.orderList.push(...res.data);
} }
return res; return res.data.length;
}, },
submitImage() { submitImage() {
console.log(this.debounce); // console.log(222);
if(!this.debounce) return; if(!this.debounce) return false;
// console.log(111);
this.debounce = false; this.debounce = false;
this.current == 0 ? this.$refs.platform.upload() : this.$refs.physical.upload(); this.current == 0 ? this.$refs.platform.upload() : this.$refs.physical.upload();
}, },
@@ -319,42 +331,42 @@ export default {
validationParams() { validationParams() {
if (this.current == 1) { if (this.current == 1) {
if(this.$u.test.isEmpty(this.goodsName)) { if(this.$u.test.isEmpty(this.goodsName)) {
this.showToast('商品名称不能为空', 'warning'); this.$u.toast('商品名称不能为空');
return false; return false;
} }
} }
if(this.current == 0) { if(this.current == 0) {
if(JSON.stringify(this.checkedGoods) == '{}') { if(JSON.stringify(this.checkedGoods) == '{}') {
this.showToast('订单不能为空', 'warning'); this.$u.toast('订单不能为空');
return false; return false;
} }
} }
if(this.$u.test.isEmpty(this.goodsStatus)) { if(this.$u.test.isEmpty(this.goodsStatus)) {
this.showToast('衣服状况不能为空', 'warning'); this.$u.toast('衣服状况不能为空');
return false; return false;
} }
if(JSON.stringify(this.type) == '{}') { if(JSON.stringify(this.type) == '{}') {
this.showToast('商品类型不能为空', 'warning'); this.$u.toast('商品类型不能为空');
return false; return false;
} }
if(this.$u.test.isEmpty(this.name)) { if(this.$u.test.isEmpty(this.name)) {
this.showToast('送洗人不能为空', 'warning'); this.$u.toast('送洗人不能为空');
return false; return false;
} }
if(this.$u.test.isEmpty(this.phone)) { if(this.$u.test.isEmpty(this.phone)) {
this.showToast('手机号不能为空', 'warning'); this.$u.toast('手机号不能为空');
return false; return false;
} }
if(!this.$u.test.mobile(this.phone)) { if(!this.$u.test.mobile(this.phone)) {
this.showToast('手机号错误', 'warning'); this.$u.toast('手机号错误');
return false; return false;
} }
if(this.$u.test.isEmpty(this.area)) { if(this.$u.test.isEmpty(this.area)) {
this.showToast('地址不能为空', 'warning'); this.$u.toast('地址不能为空');
return false; return false;
} }
if(this.$u.test.isEmpty(this.address)) { if(this.$u.test.isEmpty(this.address)) {
this.showToast('详细地址不能为空', 'warning'); this.$u.toast('详细地址不能为空');
return false; return false;
} }
return true; return true;
@@ -399,12 +411,16 @@ export default {
radioChange(e){ radioChange(e){
const ids = e.split(" "); const ids = e.split(" ");
// console.log(ids) // console.log(ids)
let checkedGoods = {}; let checkedGoods;
this.orderList.forEach(order => { this.orderList.forEach(order => {
if(order.order_id == ids[0]) { if(order.order_id == ids[0]) {
Object.assign(checkedGoods, { store: order.extend_store }); checkedGoods = {
Object.assign(checkedGoods, { order_sn: order.order_sn }); store: order.extend_store,
Object.assign(checkedGoods, { order_id: order.order_id }); order_sn: order.order_sn,
order_id: order.order_id,
reciver_info: order.extend_order_common.reciver_info,
reciver_name: order.extend_order_common.reciver_name
}
order.extend_order_goods.forEach(goods => { order.extend_order_goods.forEach(goods => {
if(goods.goods_id == ids[1]) { if(goods.goods_id == ids[1]) {
Object.assign(checkedGoods, { goods: goods }); Object.assign(checkedGoods, { goods: goods });
@@ -413,6 +429,13 @@ export default {
}) })
} }
}) })
this.setDefaultValue();
},
setDefaultValue() {
this.name = this.checkedGoods.reciver_name;
this.phone = this.checkedGoods.reciver_info.mob_phone;
this.area = this.checkedGoods.reciver_info.area;
this.address = this.checkedGoods.reciver_info.street;
}, },
setArea(area) { setArea(area) {
// console.log(area); // console.log(area);
@@ -452,12 +475,6 @@ export default {
this.choose = false; this.choose = false;
} }
}, },
showToast(message, type) {
this.$refs.uToast.show({
title: message,
type: type,
})
},
}, },
}; };
</script> </script>

View File

@@ -2,20 +2,25 @@
<view class="comment"> <view class="comment">
<view class="main-container"> <view class="main-container">
<u-input v-model="content" type="textarea" height="300" maxlength="200" /> <u-input v-model="content" type="textarea" height="300" maxlength="200" />
<!-- <u-upload <u-upload
ref="uUpload" ref="uUpload"
@on-uploaded="onUploaded"
:custom-btn="true" :custom-btn="true"
:max-count="count" :max-count="count"
:auto-upload="false" :auto-upload="false"
:action="action"
:header="header"
:form-data="formData"
:name="fileName"
:size-type="['original']"
@on-uploaded="setImageList"
> >
<view slot="addBtn" class="slot-btn" hover-class="slot-btn__hover" hover-stay-time="150"> <view slot="addBtn" class="slot-btn" hover-class="slot-btn__hover" hover-stay-time="150">
<image src="../static/mine/27.png"></image> <image src="../static/mine/27.png"></image>
</view> </view>
</u-upload> --> </u-upload>
</view> </view>
<u-toast ref="uToast" /> <u-toast ref="uToast" />
<view class="write-btn" @click="addWashEvaluate">发表评价</view> <view class="write-btn" @click="setLoaclList">发表评价</view>
</view> </view>
</template> </template>
<script> <script>
@@ -23,8 +28,17 @@ export default {
data() { data() {
return { return {
washId: '', washId: '',
// count: 4, // 最大图片数量 count: 1,
action: this.$u.http.config.baseUrl + '/Upload/uploadfile',
header: {
"authorization": 'Bearer' + " " + uni.getStorageSync('token')
},
fileName: 'common', // 与formData name 一样
formData: {
name: 'common', // 其他图片
},
content: '', content: '',
imageList: [],
} }
}, },
onLoad(option) { onLoad(option) {
@@ -38,11 +52,22 @@ export default {
} }
return true; return true;
}, },
setLoaclList() {
this.$refs.uUpload.upload();
},
setImageList(lists) {
// console.log(lists);
lists.forEach(item => {
this.imageList.push(item.response.data.file_name);
})
this.addWashEvaluate();
},
addWashEvaluate() { addWashEvaluate() {
if(!this.verifyParams()) return false; if(!this.verifyParams()) return false;
this.$u.api.sendOrderComment({ this.$u.api.sendOrderComment({
id: this.washId, id: this.washId,
comment: this.content, comment: this.content,
comment_img: this.imageList[0]
}).then(res => { }).then(res => {
this.$refs.uToast.show({ this.$refs.uToast.show({
title: res.message, title: res.message,
@@ -65,23 +90,23 @@ export default {
background-color: #ffffff; background-color: #ffffff;
padding: 30rpx; padding: 30rpx;
margin-bottom: 10rpx; margin-bottom: 10rpx;
// textarea { textarea {
// width: 100% !important; width: 100% !important;
// height: 500rpx; height: 500rpx;
// margin-bottom: 60rpx; margin-bottom: 60rpx;
// } }
// .slot-btn { .slot-btn {
// width: 140rpx; width: 140rpx;
// height: 140rpx; height: 140rpx;
// background: rgba(236,236,236,1); background: rgba(236,236,236,1);
// border-radius: 10rpx; border-radius: 10rpx;
// text-align: center; text-align: center;
// > img { > image {
// margin-top: 48rpx; margin-top: 48rpx;
// width: 54rpx; width: 54rpx;
// height: 49rpx; height: 49rpx;
// } }
// } }
} }
.write-btn { .write-btn {
margin: 120rpx auto 0; margin: 120rpx auto 0;

View File

@@ -106,7 +106,7 @@ export default {
}, },
setViewHeight() { setViewHeight() {
const res = uni.getSystemInfoSync(); const res = uni.getSystemInfoSync();
this.scrollHeight = res.windowHeight - (res.windowWidth / 750) * 90 + 'px'; this.scrollHeight = res.windowHeight - (res.windowWidth / 750) * (90 + 30) + 'px';
}, },
toDetailsPage(id) { toDetailsPage(id) {
this.$u.route('/pageB/sdetails/index', { this.$u.route('/pageB/sdetails/index', {

View File

@@ -56,6 +56,7 @@
"style": { "style": {
"navigationBarTitleText": "", "navigationBarTitleText": "",
"navigationStyle": "custom", "navigationStyle": "custom",
"backgroundColorBottom":"#000000",
"app-plus": { "app-plus": {
"titleNView": false "titleNView": false
} }
@@ -79,6 +80,24 @@
{ {
"root": "pageB", "root": "pageB",
"pages": [ "pages": [
{
"path": "tipsinfo/index",
"style": {
"navigationBarTitleText": "",
"app-plus":{
"titleNView":{
"backgroundColor":"#ffffff"
}
}
}
},
{
"path": "playVideo/index",
"style": {
"navigationStyle":"custom",
"backgroundColor":"#000000"
}
},
{ {
"path": "follow/index", "path": "follow/index",
"style": { "style": {
@@ -117,7 +136,7 @@
"buttons": [ "buttons": [
{ {
"type":"none", "type":"none",
"text":"\ue636", "text":"\ue001",
"float":"right", "float":"right",
"fontSize":"18", "fontSize":"18",
"fontSrc": "/static/fonts/cart.ttf" "fontSrc": "/static/fonts/cart.ttf"
@@ -148,7 +167,7 @@
"buttons": [ "buttons": [
{ {
"type":"none", "type":"none",
"text":"\ue636", "text":"\ue001",
"float":"right", "float":"right",
"fontSize":"18", "fontSize":"18",
"fontSrc": "/static/fonts/cart.ttf" "fontSrc": "/static/fonts/cart.ttf"
@@ -339,6 +358,19 @@
} }
} }
}, },
{
"path": "cart/selectInvoice",
"style": {
"navigationBarTitleText": "发票抬头",
"app-plus": {
"titleSize": "36px",
"titleNView": {
"titleColor": "#333333",
"backgroundColor": "#FFFFFF"
}
}
}
},
{ {
"path": "merchant/index", "path": "merchant/index",
"style": { "style": {
@@ -359,9 +391,9 @@
// }, // },
{ {
"type":"none", "type":"none",
"text":"\ue636", "text":"\ue001",
"float":"right", "float":"right",
"fontSize":"22", "fontSize":"18",
"fontSrc": "/static/fonts/cart.ttf", "fontSrc": "/static/fonts/cart.ttf",
"color": "#FFFFFF" "color": "#FFFFFF"
@@ -465,7 +497,7 @@
{ {
"path": "privateChat/privateChat", "path": "privateChat/privateChat",
"style": { "style": {
"navigationBarTitleText": "uni-app", "navigationBarTitleText": "商家",
"app-plus": { "app-plus": {
"titleNView": true "titleNView": true
} }
@@ -603,6 +635,45 @@
} }
} }
}, },
{
"path": "more/ApplyLive",
"style": {
"navigationBarTitleText": "达人申请",
"app-plus": {
"titleSize": "36px",
"titleNView": {
"titleColor": "#333333",
"backgroundColor": "#FFFFFF"
}
}
}
},
{
"path": "more/MineInvoice",
"style": {
"navigationBarTitleText": "我的发票",
"app-plus": {
"titleSize": "36px",
"titleNView": {
"titleColor": "#333333",
"backgroundColor": "#FFFFFF"
}
}
}
},
{
"path": "more/EditInvoice",
"style": {
"navigationBarTitleText": "发票抬头",
"app-plus": {
"titleSize": "36px",
"titleNView": {
"titleColor": "#333333",
"backgroundColor": "#FFFFFF"
}
}
}
},
{ {
"path": "mine/ArticleDetails", "path": "mine/ArticleDetails",
"style": { "style": {
@@ -709,6 +780,19 @@
} }
} }
}, },
{
"path": "mine/Contact",
"style": {
"navigationBarTitleText": "联系我们",
"app-plus": {
"titleSize": "36px",
"titleNView": {
"titleColor": "#333333",
"backgroundColor": "#FFFFFF"
}
}
}
},
{ {
"path": "mine/Integral", "path": "mine/Integral",
"style": { "style": {
@@ -980,6 +1064,19 @@
} }
} }
}, },
{
"path": "setting/binding",
"style": {
"navigationBarTitleText": "第三方绑定",
"app-plus": {
"titleSize": "36px",
"titleNView": {
"titleColor": "#333333",
"backgroundColor": "#FFFFFF"
}
}
}
},
{ {
"path": "setting/ShieldUsers", "path": "setting/ShieldUsers",
"style": { "style": {
@@ -993,6 +1090,31 @@
} }
} }
}, },
{
"path": "setting/version",
"style": {
"navigationBarTitleText": "关于我们",
"app-plus": {
"titleSize": "36px",
"titleNView": {
"titleColor": "#333333",
"backgroundColor": "#FFFFFF"
}
}
}
},
{
"path": "setting/updateVersion",
"style": {
"navigationStyle": "custom", // 取消本页面的导航栏
"app-plus": {
"animationType": "fade-in",
"background": "transparent",
"backgroundColor": "rgba(0,0,0,0)",
"popGesture": "none"
}
}
},
{ {
"path": "order/Index", "path": "order/Index",
"style": { "style": {
@@ -1089,7 +1211,6 @@
{ {
"path": "pages/index/index", "path": "pages/index/index",
"style": { "style": {
"enablePullDownRefresh": true,
"navigationStyle": "custom" "navigationStyle": "custom"
} }
}, },

View File

@@ -39,7 +39,8 @@
</scroll-view> </scroll-view>
</swiper-item> </swiper-item>
<swiper-item> <swiper-item>
<scroll-view style="width:100%;height:100%" scroll-y="true" @scrolltolower="swiperBottom"> <scroll-view style="width:100%;height:100%" scroll-y="true" @scrolltolower="swiperBottomLive(e)" :refresher-enabled="true" @refresherrefresh="dianji(1)" :refresher-triggered="refresher" @refresherpulling="onPulling"
@refresherrestore="onRestore" @refresherabort="onAbort">
<view class="box"> <view class="box">
<u-swiper mode="dot" :list="zhiboImageSwiper" name="adv_code" @click="clickSImage($event, 2)"></u-swiper> <u-swiper mode="dot" :list="zhiboImageSwiper" name="adv_code" @click="clickSImage($event, 2)"></u-swiper>
<view class="list"> <view class="list">
@@ -221,6 +222,7 @@
</style> </style>
<script> <script>
import common from '@/static/js/common.js';
import { mapState } from 'vuex' import { mapState } from 'vuex'
import videoItem from "@/components/index/video-item/index" import videoItem from "@/components/index/video-item/index"
import zhiboItem from "@/components/index/zhibo-item/index" import zhiboItem from "@/components/index/zhibo-item/index"
@@ -260,6 +262,8 @@
loading: '努力加载中', loading: '努力加载中',
nomore: '实在没有了' nomore: '实在没有了'
}, },
refresher:true,
zqie:false
} }
}, },
components: { components: {
@@ -269,46 +273,75 @@
darenItem darenItem
}, },
onShow() { onShow() {
this.page = 1; console.log(this.imService.status,this.$store.state.hasLogin)
if (this.page != 1) { if(!this.imService.status && this.$store.state.hasLogin){
const user = uni.getStorageSync('user_info');
// console.log(user)
this.imService.login(user.member.member_id,user.member.member_nickname,user.member.member_avatar)
this.imService.connectIM()
}else if(!this.imService.status){
this.$u.api.getDefaultAvatar().then((res)=>{
console.log(res)
uni.setStorageSync("morenimg",res.data.avatar)
this.imService.login(new Date().getTime(),"123",res.data.avatar)
this.imService.connectIM()
console.log("用户信息")
})
console.log("链接")
} }
// if (this.hasLogin) {
// this.isNewmembervoucher(); // if(!this.imService.status && !this.imService.lianjie){
// console.log("1212")
// this.imService.lianjie = true
// let that = this
// setTimeout(function(){
// that.imService.disconnect()
// console.log("guanbi")
// },1000)
// setTimeout(function(){
// console.log("lianjie")
// that.imService.connectIM()
// },2000)
// } // }
// 新人优惠券
if (this.$store.state.showCoupons) {
this.isNewmembervoucher();
}
this.getRecommendList();
}, },
async onLoad(){ async onLoad(){
this.articleList = []; this.articleList = [];
this.getArticlelist(); this.getArticlelist();
this.getSwiper(); this.getSwiper();
// 优惠券 // 优惠券
if(this.$store.state.hasLogin){ // if(this.$store.state.hasLogin){
this.isNewmembervoucher(); // const user = uni.getStorageSync('user_info');
const user = uni.getStorageSync('user_info'); // // console.log(user)
// console.log(user) // this.imService.login(user.member.member_id,user.member.member_nickname,user.member.member_avatar)
this.imService.login(user.member.member_id,user.member.member_nickname,user.member.member_avatar) // await this.imService.connectIM()
await this.imService.connectIM()
}else{ // }else{
await this.$u.api.getDefaultAvatar().then((res)=>{ // await this.$u.api.getDefaultAvatar().then((res)=>{
console.log(res) // console.log(res)
uni.setStorageSync("morenimg",res.data.avatar) // uni.setStorageSync("morenimg",res.data.avatar)
this.imService.login(new Date().getTime(),"123",res.data.avatar) // this.imService.login(new Date().getTime(),"123",res.data.avatar)
console.log("用户信息") // console.log("用户信息")
}) // })
console.log("链接") // console.log("链接")
await this.imService.connectIM() // await this.imService.connectIM()
} // }
console.log("1212") // console.log("1212")
let that = this // let that = this
setTimeout(function(){ // setTimeout(function(){
that.imService.disconnect() // that.imService.disconnect()
console.log("guanbi") // console.log("guanbi")
},1000) // },1000)
setTimeout(function(){ // setTimeout(function(){
console.log("lianjie") // console.log("lianjie")
that.imService.connectIM() // that.imService.connectIM()
},2000) // },2000)
}, },
onPullDownRefresh() { onPullDownRefresh() {
this.page = 1; this.page = 1;
@@ -324,9 +357,14 @@
uni.showLoading({ uni.showLoading({
title: "loading..." title: "loading..."
}) })
if(this.zqie){
return ;
}
this.zqie = true;
this.$u.api.tabLiveList({page:this.live_page}).then((res) => { this.$u.api.tabLiveList({page:this.live_page}).then((res) => {
// uni.stopPullDownRefresh(); // uni.stopPullDownRefresh();
this.status_live = "loading"; this.status_live = "loading";
this.refresher = false;
console.log(res) console.log(res)
if (res.errCode == 0) { if (res.errCode == 0) {
uni.hideLoading(); uni.hideLoading();
@@ -339,6 +377,7 @@
} else if (res.data.data.length == 0 && this.live_page > 1) { } else if (res.data.data.length == 0 && this.live_page > 1) {
this.status_live = "nomore"; this.status_live = "nomore";
} else { } else {
console.log(this.live_page,1223)
this.tabLiveLists = this.tabLiveLists.concat(res.data.data); this.tabLiveLists = this.tabLiveLists.concat(res.data.data);
console.log(this.tabLiveLists) console.log(this.tabLiveLists)
} }
@@ -349,6 +388,8 @@
} else { } else {
this.status_live = "nomore" this.status_live = "nomore"
} }
this.zqie = false;
}) })
}, },
@@ -368,7 +409,12 @@
member_id: member_id member_id: member_id
}).then((res) => { }).then((res) => {
this.follow_page = 0; this.follow_page = 0;
this.getRecommendList(); // 关注列表 // this.getRecommendList(); // 关注列表
for(let i in this.recommendList){
if(this.recommendList[i].member_id == member_id){
this.recommendList[i].is_attention == 1 ? this.recommendList[i].is_attention = 0 : this.recommendList[i].is_attention = 1
}
}
this.getFollowList(); // 刷新发现的列表 this.getFollowList(); // 刷新发现的列表
}) })
}, },
@@ -381,28 +427,31 @@
}, },
// 切换导航 // 切换导航
dianji(a) { dianji(a) {
// console.log(a); console.log(a);
if (a.type == "change") { if (a.type == "change") {
this.num = a.detail.current this.num = a.detail.current;
} else { } else {
this.num = a; this.num = a;
} }
// console.log(this.num); // console.log(this.num);
// 状态请求 // 状态请求
if (a.type == "change") { // 强制请求一次 if (a.type == "change" || this.num == 1) { // 强制请求一次
if (this.num == 0) { if (this.num == 0) {
this.page = 1; this.page = 1;
this.articleList = []; this.articleList = [];
this.status = "loadmore"; this.status = "nomore";
this.getArticlelist(); this.getArticlelist();
this.getSwiper(); this.getSwiper();
} else if (this.num == 1) { } else if (this.num == 1) {
this.live_page = 1; this.live_page = 1;
this.status_live = "nomore";
this.getZhiBoSwiper(); // 直播轮播 this.getZhiBoSwiper(); // 直播轮播
this.tabLiveList(); this.tabLiveList();
} else if (this.num == 2) { } else if (this.num == 2) {
this.follow_page = 0; this.follow_page = 0;
this.fansList = []; this.fansList = [];
this.status_1 = "nomore";
if (this.hasLogin) { if (this.hasLogin) {
this.getFollowList(); // 关注列表 this.getFollowList(); // 关注列表
} }
@@ -429,9 +478,9 @@
} else { } else {
this.articleList = this.articleList.concat(res.data.list); this.articleList = this.articleList.concat(res.data.list);
} }
this.page++;
} }
}) })
console.log(this.page);
}, },
// 屏蔽更新列表 // 屏蔽更新列表
updateList() { updateList() {
@@ -442,12 +491,11 @@
}, },
// 发现下拉加载 // 发现下拉加载
swiperBottom(e) { swiperBottom(e) {
if(this.num == 0){ this.page++;
this.getArticlelist(); this.getArticlelist();
}else if(this.num == 1){ },
swiperBottomLive() {
this.tabLiveList(); this.tabLiveList();
}
// console.log(e);
}, },
swiperTop() { swiperTop() {
// uni.startPullDownRefresh(); // uni.startPullDownRefresh();
@@ -499,40 +547,22 @@
}, },
clickFImage(index) { clickFImage(index) {
const item = this.indexImageSwiper[index]; const item = this.indexImageSwiper[index];
console.log(item); // console.log(item);
this.activityLink({ this.jumpPage({
type: item.url_type, type: item.url_type,
id: item.info_id id: item.info_id,
adv_id: item.adv_id,
}); });
}, },
clickSImage(index) { clickSImage(index) {
const item = this.zhiboImageSwiper[index]; const item = this.zhiboImageSwiper[index];
console.log(item); // console.log(item);
this.activityLink({ this.jumpPage({
type: item.url_type, type: item.url_type,
id: item.info_id id: item.info_id,
adv_id: item.adv_id,
}); });
}, },
activityLink({
type,
id
}) {
console.log(type,id);
if (type == 0) return false;
// type 1 商品详情页, 2 店铺详情页
const url = type == 1 ? 'pageB/sdetails/index' : 'pageC/merchant/index';
let params = {
id: id
};
// type: 1 // 商品详情 1普通 2拼团 3秒杀 4优惠券
if (type == 1) Object.assign(params, {
type: 1
});
this.$u.route({
url: url,
params: params
})
},
goSearch() { goSearch() {
this.$u.route("/pageB/search/index", { this.$u.route("/pageB/search/index", {
type: 2, type: 2,
@@ -541,12 +571,28 @@
}, },
// 是否显示新人优惠券 // 是否显示新人优惠券
isNewmembervoucher() { isNewmembervoucher() {
this.$store.commit('updateShowCoupons', false);
this.$u.api.isNewmembervoucher().then(res => { this.$u.api.isNewmembervoucher().then(res => {
if(res.errCode == 0) { if(res.errCode == 0) {
this.$u.route('/pageB/coupon/index'); this.$u.route('/pageB/coupon/index');
} }
}) })
}, },
onPulling(e) {
console.log("onpulling", e);
},
onRestore() {
this.refresher = 'restore'; // 需要重置
console.log("onRestore");
},
onAbort() {
console.log("onAbort");
},
jumpPage(uri) {
// console.log(uri);
this.$u.api.advClick({ adv_id: uri.adv_id });
common.jumpPage({ type: uri.type, id: uri.id });
}
}, },
} }
</script> </script>

View File

@@ -125,7 +125,7 @@
const token = uni.getStorageSync('token'); const token = uni.getStorageSync('token');
let that = this let that = this
uni.request({ uni.request({
url:"https://dmmall.sdbairui.com/api/Specialci/getAtwillUserInfo", url:"https://mall.dmygkeji.com/api/Specialci/getAtwillUserInfo",
data:{ data:{
userId: 1 userId: 1
}, },
@@ -136,7 +136,7 @@
success(res){ success(res){
console.log(res) console.log(res)
res = res.data res = res.data
let user = new Friend(res.data.member_id,res.data.store_name,res.data.member_avatar) let user = new Friend(res.data.member_id,'官方平台客服',res.data.member_avatar)
that.$u.route({ that.$u.route({
url:"/pageD/privateChat/privateChat", url:"/pageD/privateChat/privateChat",
params:{ params:{
@@ -149,6 +149,7 @@
}, },
gochat(id){ gochat(id){
console.log(id)
this.$u.route({ this.$u.route({
url:"/pageD/privateChat/privateChat", url:"/pageD/privateChat/privateChat",
params:{ params:{

View File

@@ -2,19 +2,8 @@
<view class="mine"> <view class="mine">
<view class="mine-top"> <view class="mine-top">
<view class="top"> <view class="top">
<u-avatar @click="toOtherPage('/mine/MineInfo')" :src="userInfo.member_avatar + '?' + new Date().getTime()" :size="110"></u-avatar> <u-avatar @click="toOtherPage('/mine/MineInfo')" :src="userInfo.member_avatar" :size="110"></u-avatar>
<view class="user-info"> <view class="user-info">
<!-- <view class="info-left">
<view class="user-nickname u-line-1">{{ userInfo.member_nickname }}</view>
<view class="user-medal" @click="toOtherPage('/mine/MedalIntroduction')">
<image src="/static/image/mine/13.png"></image>
<view class="rank-title">{{ userInfo.member_grade_name }}</view>
</view>
</view>
<view class="info-right">
<view class="info-phone">{{ userInfo.member_mobile | phoneFormat }}</view>
<view class="user-rank">等级:{{ userInfo.member_level || 0 }}</view>
</view> -->
<view class="info-top"> <view class="info-top">
<view class="user-nickname u-line-1">{{ userInfo.member_nickname }}</view> <view class="user-nickname u-line-1">{{ userInfo.member_nickname }}</view>
<view class="info-phone">{{ userInfo.member_mobile | phoneFormat }}</view> <view class="info-phone">{{ userInfo.member_mobile | phoneFormat }}</view>
@@ -27,7 +16,10 @@
<view class="user-rank">等级:{{ userInfo.member_level || 0 }}</view> <view class="user-rank">等级:{{ userInfo.member_level || 0 }}</view>
</view> </view>
</view> </view>
<view class="btn">
<view class="member-service" @click="toOtherPage('/mine/MemberServe')">会员服务</view> <view class="member-service" @click="toOtherPage('/mine/MemberServe')">会员服务</view>
<view class="member-service" @click="toOtherPage('/mine/Contact')">联系我们</view>
</view>
</view> </view>
<view class="bottom"> <view class="bottom">
<view @click="toOtherPage('/mine/GoodsCollection')"> <view @click="toOtherPage('/mine/GoodsCollection')">
@@ -62,33 +54,12 @@
</view> </view>
</view> </view>
<view class="content"> <view class="content">
<view @click="toOtherPage('/order/Index?current=1')"> <view v-for="(item, index) in orderList" :key="index" @click="toOtherPage(item.link)">
<image src="/static/image/mine/6.png"></image> <image :src="item.img"></image>
<view>待支付</view> <view>{{ item.title }}</view>
<view class="order-num" v-if="item.number">
<text>{{ item.number }}</text>
</view> </view>
<view @click="toOtherPage('/order/Index?current=2')">
<image src="/static/image/mine/35.png"></image>
<view>待发货</view>
</view>
<view @click="toOtherPage('/order/Index?current=3')">
<image src="/static/image/mine/2.png"></image>
<view>待收货</view>
</view>
<view @click="toOtherPage('/order/Index?current=4')">
<image src="/static/image/mine/1.png"></image>
<view>试穿试送</view>
</view>
<view @click="toOtherPage('/order/Index?current=5')">
<image src="/static/image/mine/37.png"></image>
<view>拼团中</view>
</view>
<view @click="toOtherPage('/order/Index?current=6')">
<image src="/static/image/mine/3.png"></image>
<view>待评价</view>
</view>
<view @click="toOtherPage('/order/Index?current=7')">
<image src="/static/image/mine/9.png"></image>
<view>售后</view>
</view> </view>
</view> </view>
</view> </view>
@@ -111,6 +82,14 @@
<image src="/static/image/mine/25.png"></image> <image src="/static/image/mine/25.png"></image>
<view>优惠券</view> <view>优惠券</view>
</view> </view>
<view @click="toOtherPage('/order/Index?current=4')">
<image src="/static/image/mine/39.png"></image>
<view>试穿试送</view>
</view>
<view @click="toCartPage">
<image src="/static/image/common/33.png"></image>
<view>购物车</view>
</view>
</view> </view>
</view> </view>
<view class="more-tool"> <view class="more-tool">
@@ -128,9 +107,18 @@
<image src="/static/image/mine/16.png"></image> <image src="/static/image/mine/16.png"></image>
<view>使用帮助</view> <view>使用帮助</view>
</view> </view>
<view @click="toOtherPage('/more/Complaints')"> <view class="badge-box" @click="toOtherPage('/more/Complaints')">
<image src="/static/image/mine/15.png"></image> <image src="/static/image/mine/15.png"></image>
<view>投诉意见</view> <view>投诉意见</view>
<u-badge size="mini" :count="userInfo.feedback_show" :offset="offset" type="error"></u-badge>
</view>
<view @click="toOtherPage('/more/ApplyLive')">
<image src="/static/image/mine/45.png"></image>
<view>达人申请</view>
</view>
<view @click="toOtherPage('/more/MineInvoice')">
<image src="/static/image/mine/46.png"></image>
<view>我的发票</view>
</view> </view>
</view> </view>
</view> </view>
@@ -147,6 +135,51 @@ export default {
data() { data() {
return { return {
userInfo: {}, userInfo: {},
orderList: [
{
name: 'wait_pay',
title: '待支付',
img: '/static/image/mine/6.png',
link: '/order/Index?current=1',
number: '',
},
{
name: 'already_pay',
title: '待发货',
img: '/static/image/mine/35.png',
link: '/order/Index?current=2',
number: '',
},
{
name: 'wait_receipt',
title: '待收货',
img: '/static/image/mine/2.png',
link: '/order/Index?current=3',
number: '',
},
{
name: 'pintuan',
title: '拼团中',
img: '/static/image/mine/37.png',
link: '/order/Index?current=5',
number: '',
},
{
name: 'wait_evaluation',
title: '待评价',
img: '/static/image/mine/3.png',
link: '/order/Index?current=6',
number: '',
},
{
name: 'refund',
title: '退款售后',
img: '/static/image/mine/9.png',
link: '/order/Index?current=7',
number: '',
},
],
offset: [-10,6]
}; };
}, },
filters: { filters: {
@@ -160,11 +193,14 @@ export default {
uni.navigateTo({ uni.navigateTo({
url: "../../pageA/login/login" url: "../../pageA/login/login"
}) })
} } else {
this.getOrderNumber();
this.getUserInfo(); this.getUserInfo();
}
}, },
onNavigationBarButtonTap() { onNavigationBarButtonTap(e) {
this.toOtherPage("/setting/Index"); // console.log(e);
if(e.index == 0) this.$u.route('/pageE/setting/Index');
}, },
methods: { methods: {
getUserInfo() { getUserInfo() {
@@ -176,11 +212,29 @@ export default {
} }
}) })
}, },
getOrderNumber() {
this.$u.api.getOrderNumber().then(res => {
const object = res.data;
for (const key in object) {
if (object.hasOwnProperty(key)) {
let element = object[key];
const order = this.orderList.filter(item => item.name == key);
if(element > 99) element = "99+";
this.$set(order[0], 'number', element);
}
}
// console.log(this.orderList);
})
},
toOtherPage(url) { toOtherPage(url) {
// console.log(url);
uni.navigateTo({ uni.navigateTo({
url: '/pageE' + url url: '/pageE' + url
}); });
} },
toCartPage() {
this.$u.route('/pageC/cart/index');
},
} }
}; };
</script> </script>
@@ -192,6 +246,7 @@ export default {
// width: 100%; // width: 100%;
height: 272rpx; height: 272rpx;
background-color: #FF7807; background-color: #FF7807;
position: relative;
.top { .top {
padding: 40rpx 0 0 30rpx; padding: 40rpx 0 0 30rpx;
display: flex; display: flex;
@@ -200,45 +255,6 @@ export default {
.user-info { .user-info {
margin-left: 30rpx; margin-left: 30rpx;
// display: flex; // display: flex;
.info-left {
margin-right: 15rpx;
.user-nickname {
max-width: 200rpx;
font-size: 30rpx;
color: rgba(51,51,51,1);
margin-bottom: 19rpx;
}
.user-medal {
display: flex;
width: 110rpx;
// height: 25rpx;
background: linear-gradient(269deg,rgba(175,175,175,1) 0%,rgba(224,224,224,1) 100%);
border-radius: 13rpx;
align-items: center;
padding: 0 17rpx 0 10rpx;
> image {
margin-right: 9rpx;
width: 20rpx;
height: 22rpx;
flex-shrink: 0;
}
.rank-title {
font-size: 16rpx;
color: rgba(51,51,51,1);
}
}
}
.info-right {
.info-phone {
font-size: 24rpx;
color: rgba(51,51,51,1);
margin-bottom: 26rpx;
}
.user-rank {
font-size: 24rpx;
color: rgba(51,51,51,1);
}
}
.info-top { .info-top {
height: 30rpx; height: 30rpx;
display: flex; display: flex;
@@ -287,16 +303,23 @@ export default {
} }
} }
} }
.btn {
position: absolute;
right: 0;
top: 43rpx;
.member-service { .member-service {
height: 52rpx; height: 52rpx;
line-height: 52rpx; line-height: 52rpx;
box-sizing: content-box; box-sizing: content-box;
margin-left: auto;
padding: 0 51rpx 0 22rpx; padding: 0 51rpx 0 22rpx;
background: rgba(255,255,255,0.32); background: rgba(255,255,255,0.32);
border-radius: 26rpx 0 0 26rpx; border-radius: 26rpx 0 0 26rpx;
font-size: 26rpx; font-size: 26rpx;
color:rgba(51,51,51,1); color:rgba(51,51,51,1);
&:not(:last-child) {
margin-bottom: 20rpx;
}
}
} }
} }
.bottom { .bottom {
@@ -322,7 +345,7 @@ export default {
height: $image-height !important; height: $image-height !important;
} }
} }
@mixin common-mine($content-padding-top, $content-padding-bottom, $image-width, $image-height) { @mixin common-mine($content-padding-top, $content-padding-row, $content-padding-bottom, $image-width, $image-height) {
box-sizing: border-box; box-sizing: border-box;
width: 710rpx; width: 710rpx;
background: rgba(255,255,255,1); background: rgba(255,255,255,1);
@@ -336,23 +359,13 @@ export default {
font-size: 28rpx; font-size: 28rpx;
color: #666; color: #666;
border-bottom: 1px solid #ececec; border-bottom: 1px solid #ececec;
// &::after {
// content: "";
// position: absolute;
// width: 650rpx;
// height: 1rpx;
// background: rgba(234,234,234,1);
// bottom: 0;
// left: 50%;
// transform: translate(-50%,0);
// }
} }
.title-text-more { .title-text-more {
font-size: 24rpx; font-size: 24rpx;
color: #999; color: #999;
} }
.content { .content {
padding: $content-padding-top 20rpx $content-padding-bottom; padding: $content-padding-top $content-padding-row $content-padding-bottom;
display: flex; display: flex;
> view { > view {
text-align: center; text-align: center;
@@ -372,6 +385,7 @@ export default {
.order { .order {
@include common-mine( @include common-mine(
$content-padding-top: 22rpx, $content-padding-top: 22rpx,
$content-padding-row: 30rpx,
$content-padding-bottom: 30rpx, $content-padding-bottom: 30rpx,
$image-height: 36rpx, $image-height: 36rpx,
$image-width: 36rpx $image-width: 36rpx
@@ -397,51 +411,90 @@ export default {
flex-direction: column; flex-direction: column;
align-items: center; align-items: center;
justify-content: space-between; justify-content: space-between;
position: relative;
.order-num {
position: absolute;
top: -14rpx;
}
.order-num > text {
z-index: 9;
float: left;
border: 1rpx solid #FF7807;
height: 24rpx;
border-radius: 12rpx;
padding: 6rpx 8rpx;
display: flex;
align-items: center;
justify-content: center;
color: #FF7807;
background-color: #ffffff;
font-size: 18rpx;
color:rgba(255,120,15,1);
}
}
> view:not(:nth-child(6)) {
.order-num {
left: 40rpx;
}
} }
> view:nth-child(1){ > view:nth-child(1){
@include image-size($image-width: 36rpx, $image-height: 34rpx); @include image-size($image-width: 33rpx, $image-height: 36rpx);
} }
> view:nth-child(2){ > view:nth-child(2){
@include image-size($image-width: 38rpx, $image-height: 36rpx); @include image-size($image-width: 38rpx, $image-height: 32rpx);
} }
> view:nth-child(3){ > view:nth-child(3){
@include image-size($image-width: 40rpx, $image-height: 36rpx); @include image-size($image-width: 41rpx, $image-height: 33rpx);
} }
> view:nth-child(4){ > view:nth-child(4){
@include image-size($image-width: 38rpx, $image-height: 38rpx); @include image-size($image-width: 35rpx, $image-height: 35rpx);
} }
> view:nth-child(5){ > view:nth-child(5){
@include image-size($image-width: 36rpx, $image-height: 40rpx); @include image-size($image-width: 35rpx, $image-height: 35rpx);
} }
> view:nth-child(6){ > view:nth-child(6){
@include image-size($image-width: 36rpx, $image-height: 40rpx); @include image-size($image-width: 33rpx, $image-height: 35rpx);
.order-num {
left: 44rpx;
}
} }
} }
} }
.tool { .tool {
@include common-mine( @include common-mine(
$content-padding-top: 24rpx, $content-padding-top: 24rpx,
$content-padding-row: 20rpx,
$content-padding-bottom: 25rpx, $content-padding-bottom: 25rpx,
$image-height: 71rpx, $image-height: 71rpx,
$image-width: 71rpx $image-width: 71rpx
); );
.content { .content {
> view {
width: 100rpx;
}
> view:not(:last-child) { > view:not(:last-child) {
margin-right: 58rpx; margin-right: 16rpx;
} }
} }
} }
.more-tool { .more-tool {
@include common-mine( @include common-mine(
$content-padding-top: 24rpx, $content-padding-top: 24rpx,
$content-padding-row: 20rpx,
$content-padding-bottom: 48rpx, $content-padding-bottom: 48rpx,
$image-height: 71rpx, $image-height: 71rpx,
$image-width: 71rpx $image-width: 71rpx
); );
.content { .content {
> view:not(:last-child) { > view {
margin-right: 46rpx; width: 100rpx;
} }
> view:not(:last-child) {
margin-right: 16rpx;
}
}
.badge-box {
position: relative;
} }
} }
} }

View File

@@ -17,7 +17,7 @@
<u-swiper :list="list" mode="dot" @click="clickImage"></u-swiper> <u-swiper :list="list" mode="dot" @click="clickImage"></u-swiper>
</view> </view>
<view class="chengnuo"> <view class="chengnuo">
<view> <!-- <view>
<image src="/static/image/shop/4.png"></image> <image src="/static/image/shop/4.png"></image>
<text>免费洗衣</text> <text>免费洗衣</text>
</view> </view>
@@ -32,6 +32,10 @@
<view> <view>
<image src="/static/image/shop/7.png"></image> <image src="/static/image/shop/7.png"></image>
<text>上门取件</text> <text>上门取件</text>
</view> -->
<view v-for="(item,index) in tips" :key="index" @click="totips(item.document_code)">
<image :src="item.file_name"></image>
<text>{{item.document_title}}</text>
</view> </view>
</view> </view>
<view class="fenlei"> <view class="fenlei">
@@ -46,7 +50,7 @@
<!-- 拼团列表 --> <!-- 拼团列表 -->
<group></group> <group></group>
<view class="activity-view"> <view class="activity-view">
<image class="lingquan" :src="activityInfo.adv_code" @click="activityLink({ type: activityInfo.url_type, id: activityInfo.info_id })"></image> <image class="lingquan" :src="activityInfo.adv_code" @click="jumpPage({ type: activityInfo.url_type, id: activityInfo.info_id, adv_id: activityInfo.adv_id })"></image>
</view> </view>
<!-- 优惠券 --> <!-- 优惠券 -->
<youhq></youhq> <youhq></youhq>
@@ -61,6 +65,7 @@
</view> </view>
</template> </template>
<script> <script>
import common from '@/static/js/common.js';
import shopitem from "@/components/shop/shop-item/index"; import shopitem from "@/components/shop/shop-item/index";
import recommend from "@/components/shop/recommend/index"; import recommend from "@/components/shop/recommend/index";
import pintuan from "@/components/shop/recommend/pintuan"; import pintuan from "@/components/shop/recommend/pintuan";
@@ -94,12 +99,14 @@
pinTuanPush: {}, // 拼团推荐 pinTuanPush: {}, // 拼团推荐
activityInfo: {}, activityInfo: {},
areaList: [], // 位置信息 areaList: [], // 位置信息
tips:[]
} }
}, },
onLoad() { onLoad() {
this.getShopTopList(); this.getShopTopList();
this.getLocation(); // 获取定位 this.getLocation(); // 获取定位
this.getStoreActivity(); this.getStoreActivity();
this.gettips()
// this.area = uni.getStorageSync("address") || "请选择"; // this.area = uni.getStorageSync("address") || "请选择";
}, },
onShow() { onShow() {
@@ -109,6 +116,21 @@
this.getAllLoaction(); // 获取位置 this.getAllLoaction(); // 获取位置
}, },
methods: { methods: {
totips(id){
this.$u.route({
type:"to",
url:"/pageB/tipsinfo/index",
params:{
id
}
})
},
gettips(){
this.$u.api.tips().then((res)=>{
console.log(res)
this.tips = res.data
})
},
sousuo() { sousuo() {
// console.log(123) // console.log(123)
this.$u.route({ this.$u.route({
@@ -190,31 +212,12 @@
clickImage(index) { clickImage(index) {
// console.log(this.list[index]); // console.log(this.list[index]);
let item = this.list[index]; let item = this.list[index];
this.activityLink({ this.jumpPage({
type: item.url_type, type: item.url_type,
id: item.info_id, id: item.info_id,
adv_id: item.adv_id,
}); });
}, },
activityLink({
type,
id
}) {
console.log(type,id);
if (type == 0) return false;
// type 1 商品详情页, 2 店铺详情页
const url = type == 1 ? 'pageB/sdetails/index' : 'pageC/merchant/index';
let params = {
id: id
};
// type: 1 // 商品详情 1普通 2拼团 3秒杀 4优惠券
if (type == 1) Object.assign(params, {
type: 1
});
this.$u.route({
url: url,
params: params
})
},
// 下拉加载更多推荐商品 // 下拉加载更多推荐商品
onreachBottom() { onreachBottom() {
this.$refs.recommendGoods.loadMore(); this.$refs.recommendGoods.loadMore();
@@ -240,18 +243,11 @@
} }
}) })
}, },
activityLink({ type, id }) { jumpPage(uri) {
if(type == 0 || type == 2) return false; // console.log(uri);
// type 1 商品详情页, 2 店铺详情页 this.$u.api.advClick({ adv_id: uri.adv_id });
const url = type == 1 ? 'pageB/sdetails/index' : ''; common.jumpPage({ type: uri.type, id: uri.id });
let params = { id: id }; }
// type: 1 // 商品详情 1普通 2拼团 3秒杀 4优惠券
if(type == 1) Object.assign(params, { type: 1 });
this.$u.route({
url: url,
params: params
})
},
}, },
} }
</script> </script>
@@ -355,7 +351,7 @@
z-index: 9; z-index: 9;
position: fixed; position: fixed;
right: 30rpx; right: 30rpx;
bottom: 300rpx; bottom: 110rpx;
width: 100rpx; width: 100rpx;
height: 100rpx; height: 100rpx;
background: rgba(253, 211, 96, 1); background: rgba(253, 211, 96, 1);

View File

@@ -1,6 +1,6 @@
<template> <template>
<view> <view>
<video :src="url" class="vodio" autoplay="true" :show-fullscreen-btn="false" :show-play-btn="false" :enable-progress-gesture="false" :show-center-play-btn="false" :show-progress="false" :controls="false" :style="{'height':height}" @error="errors"> <video :src="url" class="vodio" :autoplay="true" id="myVideo" :show-fullscreen-btn="false" :show-play-btn="false" :enable-progress-gesture="false" :show-center-play-btn="false" :show-progress="false" :controls="false" :style="{'height':height}" @error="errors">
</video> </video>
<view class="user" :style="{'top': top}"> <view class="user" :style="{'top': top}">
@@ -18,7 +18,7 @@
<view class="hot" :style="{'top': top + 10 * rpx}"> <view class="hot" :style="{'top': top + 10 * rpx}">
<text class="hottext">{{room.onlineUsers.users.length}}</text> <text class="hottext">{{room.onlineUsers.users.length}}</text>
</view> </view>
<image class="cart" src="../../static/cart.png" @click="show = true"> <image v-if="list.length != 0" class="cart" src="../../static/cart.png" @click="show = true">
</image> </image>
<view class="danmufasongbox" @click="danmu = $store.state.hasLogin"> <view class="danmufasongbox" @click="danmu = $store.state.hasLogin">
@@ -29,7 +29,7 @@
<!-- <image class="liketap" src="../../static/like.png" @click=""> --> <!-- <image class="liketap" src="../../static/like.png" @click=""> -->
<view class="danmuinputbox" v-if="danmu"> <view class="danmuinputbox" v-if="danmu">
<input type="text" focus="true" style="width:600rpx;margin-left:30rpx;font-size:26rpx" maxlength="20" @blur="danmu=false" :focus="danmu" v-model="danmutext"> <input type="text" focus="true" style="width:600rpx;margin-left:30rpx;font-size:26rpx" maxlength="100" @blur="danmu=false" :focus="danmu" v-model="danmutext">
<view class="danmufasong" @click="sendMessage(room.MessageType.CHAT,danmutext)"> <view class="danmufasong" @click="sendMessage(room.MessageType.CHAT,danmutext)">
<text style="font-size:24rpx;color:#fff">发送</text> <text style="font-size:24rpx;color:#fff">发送</text>
</view> </view>
@@ -309,11 +309,14 @@
position: fixed; position: fixed;
left: 30rpx; left: 30rpx;
bottom: 118rpx; bottom: 118rpx;
width: 690rpx;
} }
.danmuitem{ .danmuitem{
font-size: 26rpx; font-size: 30rpx;
color: #fff; color: #fff;
flex-direction: column-reverse; flex-direction: column-reverse;
word-wrap:anywhere;
font-weight: bold;
} }
</style> </style>
@@ -335,7 +338,8 @@ export default {
danmu:false, danmu:false,
room:{}, room:{},
chatRoomService:{}, chatRoomService:{},
danmulist:[] danmulist:[],
videoContext:{}
}; };
}, },
onBackPress(options) { onBackPress(options) {
@@ -344,8 +348,11 @@ export default {
}); });
return false; return false;
}, },
onShow(){
this.videoContext.play()
},
onLoad(a) { onLoad(a) {
this.videoContext = uni.createVideoContext('myVideo')
this.url = a.url; this.url = a.url;
this.id = a.id this.id = a.id
console.log(this.url); console.log(this.url);
@@ -370,7 +377,7 @@ export default {
const token = uni.getStorageSync('token'); const token = uni.getStorageSync('token');
console.log(token,that.id) console.log(token,that.id)
uni.request({ uni.request({
url:"https://dmmall.sdbairui.com/api/Specialci/goodsShelves", url:"https://mall.dmygkeji.com/api/Specialci/goodsShelves",
data:{ data:{
live_id:that.id live_id:that.id
}, },
@@ -385,7 +392,7 @@ export default {
}) })
setInterval(function(){ setInterval(function(){
uni.request({ uni.request({
url:"https://dmmall.sdbairui.com/api/Specialci/goodsShelves", url:"https://mall.dmygkeji.com/api/Specialci/goodsShelves",
data:{ data:{
live_id:that.id live_id:that.id
}, },
@@ -403,7 +410,7 @@ export default {
},10 * 1000) },10 * 1000)
uni.request({ uni.request({
url:"https://dmmall.sdbairui.com/api/Specialci/livingUserInfo", url:"https://mall.dmygkeji.com/api/Specialci/livingUserInfo",
data:{ data:{
live_id:that.id live_id:that.id
}, },
@@ -412,41 +419,24 @@ export default {
"Authorization" : 'Bearer' + " " + token "Authorization" : 'Bearer' + " " + token
}, },
success(res){ success(res){
console.log(res) console.log(res)
that.info = res.data.data that.info = res.data.data
// that.list= res.data.data // that.list= res.data.data
} }
}) })
//当前用户
var currentUser = {}
if(this.$store.state.hasLogin){
const user = uni.getStorageSync('user_info');
currentUser = {
id : user.member.member_id,
nickname : user.member.member_nickname,
avatar: user.member.member_avatar
};
}else{
const user = uni.getStorageSync('morenimg');
currentUser = {
id : new Date().getTime(),
nickname : "123",
avatar: user
};
}
var room = { var room = {
id : a.rid + "", id : a.rid + "",
name : a.rid + "" name : a.rid + ""
}; };
that.chatRoomService = getApp().globalData.im that.chatRoomService = getApp().globalData.im
console.log(room,currentUser)
//构造chatRoomService //构造chatRoomService
that.chatRoomService.subscribeRoomMessage(room,currentUser) that.chatRoomService.subscribeRoomMessage(room)
//获取当前聊天室数据 //获取当前聊天室数据
that.room = that.chatRoomService.room; that.room = that.chatRoomService.room;
that.chatRoomService.initialWhenOnlineUserChange(that.newpeople) that.chatRoomService.initialWhenOnlineUserChange(that.newpeople)
that.chatRoomService.initialWhenNewMessage(that.whenNewMessage); that.chatRoomService.initialWhenNewMessage(that.whenNewMessage);
that.chatRoomService.jieshuzhibo = this.jieshu;
this.$forceUpdate(); this.$forceUpdate();
console.log(that.room) console.log(that.room)
@@ -459,7 +449,24 @@ export default {
this.chatRoomService.quitRoom(); this.chatRoomService.quitRoom();
}, },
methods:{ methods:{
jieshu(text){
console.log(text)
uni.showModal({
title: '提示',
content: text.content,
showCancel:false,
success: function (res) {
uni.navigateBack({
delta: 1
});
}
});
},
errors(a){ errors(a){
this.videoContext.stop();
setTimeout(() => {
this.videoContext.play()
},1000)
console.log(a) console.log(a)
}, },
newpeople(list){ newpeople(list){
@@ -496,6 +503,11 @@ export default {
// this.contentPosition = 'message-box'+(this.room.messages.length-1); // this.contentPosition = 'message-box'+(this.room.messages.length-1);
// }, 300) // }, 300)
console.log(message) console.log(message)
if(message.type == 1){
console.log('stop')
return ;
}
this.danmulist.push(message) this.danmulist.push(message)
if(this.danmulist.length > 7){ if(this.danmulist.length > 7){
@@ -520,7 +532,7 @@ export default {
let that = this let that = this
console.log(token) console.log(token)
uni.request({ uni.request({
url:"https://dmmall.sdbairui.com/api/member/attentionMember", url:"https://mall.dmygkeji.com/api/member/attentionMember",
data:{ data:{
member_id:that.info.user_id member_id:that.info.user_id
}, },
@@ -531,7 +543,7 @@ export default {
success(res){ success(res){
console.log(res) console.log(res)
uni.request({ uni.request({
url:"https://dmmall.sdbairui.com/api/Specialci/livingUserInfo", url:"https://mall.dmygkeji.com/api/Specialci/livingUserInfo",
data:{ data:{
live_id:that.id live_id:that.id
}, },
@@ -539,9 +551,9 @@ export default {
header:{ header:{
"Authorization" : 'Bearer' + " " + token "Authorization" : 'Bearer' + " " + token
}, },
success(res){ success(a){
console.log(res) console.log(a)
that.info = res.data.data; that.info = a.data.data;
uni.showToast({ uni.showToast({
title: res.data.message, title: res.data.message,
icon: "none" icon: "none"
@@ -555,6 +567,23 @@ export default {
}, },
xuanzhong(i){ xuanzhong(i){
let that = this let that = this
const token = uni.getStorageSync('token');
if(this.$store.state.hasLogin){
uni.request({
url:"https://mall.dmygkeji.com/api/Specialci/viewingOPproducts",
data:{
good_id:that.list[i].goods_id,
exple_id:that.info.user_id
},
method:"POST",
header:{
"Authorization" : 'Bearer' + " " + token
},
success(a){
console.log(a)
}
})
}
uni.navigateTo({ uni.navigateTo({
url: `/pageB/sdetails/index?id=${that.list[i].goods_id}&type=1` url: `/pageB/sdetails/index?id=${that.list[i].goods_id}&type=1`
}); });

Binary file not shown.

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.5 KiB

BIN
static/app/start/.9.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 32 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 26 KiB

After

Width:  |  Height:  |  Size: 88 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 12 KiB

After

Width:  |  Height:  |  Size: 28 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 17 KiB

After

Width:  |  Height:  |  Size: 51 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.4 KiB

After

Width:  |  Height:  |  Size: 2.0 KiB

BIN
static/cartback.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.4 KiB

Binary file not shown.

File diff suppressed because one or more lines are too long

Some files were not shown because too many files have changed in this diff Show More