Compare commits

...

227 Commits

Author SHA1 Message Date
qxf
f431b02d9f Merge pull request '修改协议隐私' (#399) from qxf into master
Reviewed-on: http://git.luyuan.tk/luyuan/deming/pulls/399
2020-12-01 17:55:00 +08:00
亓雪峰
a374babc45 修改协议隐私 2020-12-01 17:53:23 +08:00
ad68dd81d4 Merge pull request '拼团列表加载更多' (#398) from zhy into master
Reviewed-on: http://git.luyuan.tk/luyuan/deming/pulls/398
2020-11-25 09:02:42 +08:00
3840074b00 拼团列表加载更多 2020-11-25 09:00:41 +08:00
3a880711ad Merge pull request '秒杀查看更多' (#397) from zhy into master
Reviewed-on: http://git.luyuan.tk/luyuan/deming/pulls/397
2020-11-24 12:09:13 +08:00
5cd7597068 秒杀查看更多 2020-11-24 12:07:33 +08:00
qxf
e916119b2b Merge pull request 'qxf' (#396) from qxf into master
Reviewed-on: http://git.luyuan.tk/luyuan/deming/pulls/396
2020-11-20 15:56:24 +08:00
亓雪峰
1ce56510b1 Merge branch 'master' of https://git.luyuan.tk/luyuan/deming into qxf 2020-11-20 11:18:49 +08:00
d552a03ab4 Merge pull request '添加拒绝协议按钮' (#395) from zhy into master
Reviewed-on: http://git.luyuan.tk/luyuan/deming/pulls/395
2020-11-20 10:22:12 +08:00
9f6bcdfa94 添加拒绝协议按钮 2020-11-20 10:20:51 +08:00
亓雪峰
63353b6877 新增 设置页新增“用户协议与隐私政策”的选项卡 2020-11-19 18:09:17 +08:00
qxf
74f083d6c1 Merge pull request 'qxf' (#394) from qxf into master
Reviewed-on: http://git.luyuan.tk/luyuan/deming/pulls/394
2020-11-19 17:08:26 +08:00
亓雪峰
7977bd795c 优化 初次登录的“用户协议”改为“用户协议与隐私” 2020-11-19 17:05:45 +08:00
亓雪峰
e044812a7c 修复 添加iOS审核所需要的位置信息 2020-11-13 10:34:05 +08:00
亓雪峰
363349afe6 修复 添加iOS审核所需要的位置信息 2020-11-12 16:18:51 +08:00
亓雪峰
456edb252e 修复 登录时iOS平台暂时隐藏第三方登录,方便过审 2020-11-12 15:19:15 +08:00
亓雪峰
ecfc79fbf8 优化 图标路径 2020-11-12 15:11:00 +08:00
亓雪峰
fb297e8a8c 修复 nvue部分样式编译错误的问题 2020-11-11 12:00:07 +08:00
qxf
1a15f1e3e6 Merge pull request 'qxf 修复订单列表中退款状态显示错误的问题' (#393) from qxf into master
Reviewed-on: http://git.luyuan.tk/luyuan/deming/pulls/393
2020-10-19 11:49:52 +08:00
亓雪峰
497d49eceb fix 修复订单列表中退款状态显示错误的问题 2020-10-19 11:46:50 +08:00
亓雪峰
0886ec74ea Update chatservice.js 2020-10-14 23:22:26 +08:00
qxf
ebff801c7e Merge pull request 'Update manifest.json' (#392) from qxf into master
Reviewed-on: http://git.luyuan.tk/luyuan/deming/pulls/392
2020-10-14 11:00:47 +08:00
亓雪峰
215730f8d1 Update manifest.json 2020-10-14 10:47:00 +08:00
483dfba475 Merge pull request 'qxf 修改申请退款成功的提示框, 消息-关注达人改为展示用户昵称' (#391) from qxf into master
Reviewed-on: http://git.luyuan.tk/luyuan/deming/pulls/391
2020-10-14 10:45:39 +08:00
亓雪峰
f8f3cf08f2 修改申请退款成功的提示框 2020-10-13 14:30:01 +08:00
亓雪峰
55e0bc7cd9 消息-关注达人改为展示用户昵称
This reverts commit 7a2edcfd1c0fc7c546389a3e63dd0d7892e65e0a.
2020-10-13 14:29:20 +08:00
f87bd2cfba Merge pull request '更换' (#390) from xbx into master
Reviewed-on: http://git.luyuan.tk/luyuan/deming/pulls/390
2020-09-25 17:43:29 +08:00
9f5498ac7c
更换 2020-09-25 17:42:36 +08:00
gyh
d33bc8965a Merge pull request 'avater' (#389) from gyh into master
Reviewed-on: http://git.luyuan.tk/luyuan/deming/pulls/389
2020-09-23 09:56:49 +08:00
Gdpao
3115ac9447 avater 2020-09-23 09:55:30 +08:00
gyh
b914ba7c58 Merge pull request '更新 'pageE/mine/MineInfo.vue'' (#388) from gyh-patch-1 into master
Reviewed-on: http://git.luyuan.tk/luyuan/deming/pulls/388
2020-09-22 09:36:50 +08:00
gyh
990db30e77 更新 'pageE/mine/MineInfo.vue' 2020-09-22 09:36:39 +08:00
gyh
875aeeb63a Merge pull request 'gdpao' (#387) from gyh into master
Reviewed-on: http://git.luyuan.tk/luyuan/deming/pulls/387
2020-09-22 09:34:31 +08:00
Gdpao
7304d3edb6 gdpao 2020-09-22 09:32:56 +08:00
aebdb23b6d Merge pull request '商品分类' (#386) from zhy into master
Reviewed-on: http://git.luyuan.tk/luyuan/deming/pulls/386
2020-09-22 09:14:53 +08:00
c4c19871d8 商品分类 2020-09-22 09:13:54 +08:00
c85f1aeead
修改字体大小 2020-09-21 17:37:29 +08:00
977d38ce18 Merge pull request '增加订单平台已退款状态' (#385) from zhy into master
Reviewed-on: http://git.luyuan.tk/luyuan/deming/pulls/385
2020-09-21 17:03:28 +08:00
194710f97b 增加订单平台已退款状态 2020-09-21 16:58:25 +08:00
1c14a23d76 Merge pull request '增加订单平台已退款状态' (#384) from zhy into master
Reviewed-on: http://git.luyuan.tk/luyuan/deming/pulls/384
2020-09-21 16:43:31 +08:00
611066e778 增加订单平台已退款状态 2020-09-21 16:42:38 +08:00
bc1d0b8e4c Merge pull request '增加订单平台已退款状态' (#383) from zhy into master
Reviewed-on: http://git.luyuan.tk/luyuan/deming/pulls/383
2020-09-21 15:51:23 +08:00
31027d10e4 增加订单平台已退款状态 2020-09-21 15:50:26 +08:00
c606b9b3ce Merge pull request '修改字体大小' (#382) from xbx into master
Reviewed-on: http://git.luyuan.tk/luyuan/deming/pulls/382
2020-09-21 08:41:39 +08:00
gyh
bf765ba231 Merge pull request 'gdpao' (#381) from gyh into master
Reviewed-on: http://git.luyuan.tk/luyuan/deming/pulls/381
2020-09-19 20:02:01 +08:00
Gdpao
645b3f65c1 gdpao 2020-09-19 20:01:07 +08:00
ded4488f89 Merge pull request '实体店送洗可不传图片' (#380) from zhy into master
Reviewed-on: http://git.luyuan.tk/luyuan/deming/pulls/380
2020-09-19 16:44:04 +08:00
2b2667df2a 实体店送洗可不传图片 2020-09-19 16:43:01 +08:00
79f0040688 Merge pull request '图标' (#379) from xbx into master
Reviewed-on: http://git.luyuan.tk/luyuan/deming/pulls/379
2020-09-18 16:41:00 +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
3e87a5aaf5
Merge branch 'master' of http://git.luyuan.tk/luyuan/deming into xbx 2020-08-24 14:23:22 +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
93 changed files with 2468 additions and 376 deletions

17
App.vue
View File

@ -8,6 +8,12 @@
...mapState(["hasLogin"])
},
onLaunch() {
//
// #ifdef APP-PLUS
plus.screen.lockOrientation('portrait-primary');
// #endif
getApp().globalData.im = this.imService
// token
uni.getStorage({
@ -28,7 +34,16 @@
// #endif
},
onShow(){
this.getVersion();
// 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(){

View File

@ -1,6 +1,6 @@
export default {
init(vm){
return {
return {
// 获取首页轮播
getIndexSwiper() {
return vm.$u.post('adv/indexadv');
@ -86,11 +86,12 @@ export default {
return vm.$u.post('Goods/getGoodsClassRecommend');
},
// goodsListByClassId
goodsListByClassId({ gc_id, page, order }) {
goodsListByClassId({ gc_id, page, order, keyword }) {
return vm.$u.post('goods/goodsListByClassId', {
gc_id: gc_id,
page: page,
order: order,
keyword:keyword
});
},
// 商品推荐
@ -138,15 +139,9 @@ export default {
});
},
// 订单步骤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', {
ifcart: ifcart,
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, // 优惠券信息
ifcart, cart_id, address_id, buy_city_id, pintuan_id, pintuangroup_id, voucher_id, member_deliver_type, invoice_id, pay_message
});
},
// 订单步骤3发起支付第三方统一下单
@ -364,7 +359,28 @@ export default {
addrefundall({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', {
name: name,
time: time
phone: phone,
// time: time
});
},
// 会员服务-积分数
@ -375,10 +376,9 @@ export default {
return vm.$u.post('member/getClothesTypeList');
},
// 送洗评价
sendOrderComment({ id, comment }) {
sendOrderComment({ id, comment, comment_img }) {
return vm.$u.post('member/sendOrderComment', {
id: id,
comment: comment,
id, comment, comment_img
});
},
// 送洗确认完成
@ -454,8 +454,51 @@ export default {
//获取默认头像
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

@ -21,6 +21,10 @@ const store = new Vuex.Store({
showLoginModel: false, // 登录框
question: {}, // 帮助与反馈
showCoupons: true, // 是否显示新人领取优惠券
invoiceInfo: { // 是否选择发票
invoice_type: '',
invoice_id: 0,
}
},
getters: {
getOrderAddress(state) {
@ -31,8 +35,15 @@ const store = new Vuex.Store({
},
getGoodsInfo(state) {
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: {
// 登录
loginIn(state, token) {
@ -83,6 +94,9 @@ const store = new Vuex.Store({
},
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>
<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 class="reply" v-if="reply && content.geval_explain">
<view class="title">掌柜回复</view>
@ -41,11 +41,12 @@ export default {
if(this.content.hasOwnProperty('scores_two')) this.rate = this.content.scores_two;
},
methods: {
previewImage(urls) {
console.log(urls);
// uni.previewImage({
// urls: urls,
// });
previewImage(urls, index) {
// console.log(urls);
uni.previewImage({
urls: urls,
current: urls[index]
});
},
}
};

View File

@ -54,23 +54,22 @@
.title{
margin:0 auto;
margin-top: 4rpx;
font-size: 28rpx;
font-size: 23rpx;
color: #333;
font-weight: 500;
line-height: 40rpx;
line-height: 36rpx;
width: 300rpx;
overflow:hidden;
text-overflow:ellipsis;
display:-webkit-box;
display:-webkit-box;
-webkit-box-orient:vertical;
-webkit-line-clamp:2;
height: 80rpx;
}
.jianjie{
margin:0 auto;
margin-top: 10rpx;
font-size: 22rpx;
color: #666;
color: #656565;
line-height: 30rpx;
width: 300rpx;
margin-left: 18rpx;

View File

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

View File

@ -4,7 +4,9 @@
<view class="time_notice">{{ item.addtime }}</view>
<view class="notice_view">
<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">
<text>查看详情</text>
<u-icon name="arrow-right" color="#666"></u-icon>
@ -28,21 +30,17 @@
border-radius: 20rpx 20rpx 0px 0px;
}
.text_view{
font-size:26rpx;
font-weight:400;
color:rgba(51,51,51,1);
margin: 28rpx 0 30rpx 0;
width: 643rpx;
margin: 0 auto;
text-align: left;
line-height: 40rpx;
letter-spacing: 2rpx;
width: 690rpx;
height: 120rpx;
padding: 26rpx;
color: #333;
font-size: 26rpx;
line-height: 38rpx;
}
.notice_view > view:nth-child(3){
height: 84rpx;
line-height: 84rpx;
height: 80rpx;
line-height: 80rpx;
border-top: 1px #F5F5F5 solid;
margin-top: 30rpx;
}
}
.time_notice{
@ -53,22 +51,11 @@
padding: 26rpx 0 39rpx 0;
}
.notice_list{
text-align: left;
display: inline-block;
display: flex;
align-items: center;
justify-content: space-between;
width: 100%;
position: relative;
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>

View File

@ -17,7 +17,7 @@
<text>我已详细阅读并同意</text>
<text class="pact_text">用户协议</text>
<text class="pact_text">隐私协议</text>
<text class="pact_text">使用协议</text>
<!-- <text class="pact_text">使用协议</text> -->
<u-checkbox-group @change="checkboxGroupChange" size="27">
<u-checkbox @change="checkboxChange" v-model="item.checked" v-for="(item, index) in list" :key="index" :name="item.name"
shape="circle" size="14" active-color="#19BE6B"></u-checkbox>

View File

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

View File

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

View File

@ -8,7 +8,7 @@
<view class="order-status">{{ state }}</view>
</view>
<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>
<view class="goods-text">
<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">
<!-- || 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.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="comment" v-if="order.view_type == 4" @click="toOtherPage('Comment')">立即评价</view>
<view class="cancel" v-if="order.view_type == 1" @click="cancelOrder">取消支付</view>
@ -67,7 +67,6 @@ export default {
}
},
methods: {
cancelOrder() {
this.$u.api.cancelOrder({
order_id: this.order.order_id,
@ -131,7 +130,7 @@ export default {
state = '待退款';
break;
case 7:
state = '已退款';
state = '商家已退款';
break;
case 9:
state = '拼团中';
@ -140,7 +139,10 @@ export default {
state = '已取消';
break;
case 11:
state = '已拒绝';
state = '商家已拒绝';
break;
case 12:
state = '平台已退款';
break;
default:
break;

View File

@ -12,9 +12,7 @@
<image :src="order.goods_image"></image>
<view class="goods-text">
<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">
<text v-for="(spec, index) in goods.goods_spec" :key="index">{{ spec + ';' }}</text>
</view> -->
<view class="goods-sku u-line-1" v-if="order.goods_spec">{{ order.goods_spec | concatSpec }}</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>
@ -38,7 +36,18 @@ export default {
created() {
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: {
// "goods_try_order_status": 0, 穿 0: 20: 40: 50:
viewState() {
@ -131,6 +140,7 @@ export default {
line-height: 38rpx;
}
.goods-sku {
align-self: baseline;
max-width: 230rpx;
background: rgba(236,236,236,1);
border-radius: 6rpx;

View File

@ -22,8 +22,8 @@
<view class="swiper-item uni-bg-red">
<image :src=" 'https://' + item.launch_path"></image>
</view>
<view class="btn-init" v-if="parseInt(index) == 2" @click="goNext">立即体验</view>
</swiper-item>
<view class="btn-init" v-if="parseInt(index) == list.length - 1" @click="goNext">立即体验</view>
</swiper-item>
</swiper>
</view>
</view>
@ -33,12 +33,16 @@
<!-- 用户协议弹窗 -->
<view class="welcome_backes" v-if="protocol">
<view class="content">
<view class="title">{{ agreement.document_title }}</view>
<!-- <view class="title">{{ agreement.document_title }}</view> -->
<view class="title">用户协议</view>
<!-- <text class="protocol_content"></text> -->
<scroll-view scroll-y class="scroll">
<rich-text class="protocol_content" :nodes="agreement.document_content"></rich-text>
</scroll-view>
<view class="to_agree" @click="to_agree">我同意</view>
<view class="agree-btn">
<view class="refuse" @click="refuseAgreement">不同意并退出</view>
<view class="to_agree" @click="to_agree">同意</view>
</view>
</view>
</view>
</view>
@ -74,7 +78,7 @@
duration: 500,
swiper_index: "",
tiaoguo:false,
weizhi:0
weizhi:0,
};
},
onReady: function(res) {
@ -165,6 +169,21 @@
url: '/pageA/login/login'
});
},
//
refuseAgreement() {
//退app
// #ifdef APP-PLUS
if (plus.os.name.toLowerCase() === 'android') {
plus.runtime.quit();
} else{
const threadClass = plus.ios.importClass("NSThread");
const mainThread = plus.ios.invoke(threadClass, "mainThread");
plus.ios.invoke(mainThread, "exit");
// ios11
plus.ios.import("UIApplication").sharedApplication().performSelector("exit")
}
// #endif
},
//
bindInputBlur: function(e) {
this.inputValue = e.target.value;
@ -327,15 +346,37 @@
}
}
.to_agree {
width: 558rpx;
font-size: 30rpx;
font-weight: bold;
color: rgba(255, 121, 16, 1);
text-align: center;
padding-top: 27rpx;
border-top: #D8D8D8 solid 1px;
.agree-btn {
border-top: #D8D8D8 solid 1rpx;
// padding-top: 27rpx;
display: flex;
height: 80rpx;
> view {
height: inherit;
flex: 1;
font-size: 30rpx;
font-weight: bold;
text-align: center;
line-height: 80rpx;
}
.refuse {
color: #999;
position: relative;
&:after {
content: "";
height: 80rpx;
width: 1rpx;
background-color: #D8D8D8;
position: absolute;
right: 0;
top: 0;
}
}
.to_agree {
color: rgba(255, 121, 16, 1);
}
}
}
}
</style>

View File

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

View File

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

View File

@ -2,8 +2,8 @@
"name" : "德铭阳光",
"appid" : "__UNI__EBFF00A",
"description" : "",
"versionName" : "1.0.0",
"versionCode" : "100",
"versionName" : "1.0.1",
"versionCode" : 107,
"transformPx" : false,
/* 5+App */
"app-plus" : {
@ -16,6 +16,13 @@
"autoclose" : true,
"delay" : 0
},
"safearea" : {
//iOS
"bottom" : {
//
"offset" : "none" // "none""auto""none"
}
},
/* */
"modules" : {
"OAuth" : {},
@ -60,7 +67,13 @@
"abiFilters" : [ "armeabi-v7a", "x86" ]
},
/* ios */
"ios" : {},
"ios" : {
"privacyDescription" : {
"NSLocationAlwaysAndWhenInUseUsageDescription" : "德铭阳光将在推荐商品、收货地址等服务中使用您的位置信息。",
"NSLocationWhenInUseUsageDescription" : "德铭阳光将在推荐商品、收货地址等服务中使用您的位置信息。",
"NSLocationAlwaysUsageDescription" : "德铭阳光将在推荐商品、收货地址等服务中使用您的位置信息。"
}
},
/* SDK */
"sdkConfigs" : {
"ad" : {},
@ -112,22 +125,22 @@
},
"icons" : {
"android" : {
"hdpi" : "E:/Source-code/appleidmore/安卓png/72x72psd.PNG",
"xhdpi" : "E:/Source-code/appleidmore/安卓png/96x96psd.PNG",
"xxhdpi" : "E:/Source-code/appleidmore/安卓png/144x144.PNG",
"xxxhdpi" : "E:/Source-code/appleidmore/安卓png/192x192.PNG"
"hdpi" : "unpackage/res/icons/72x72.png",
"xhdpi" : "unpackage/res/icons/96x96.png",
"xxhdpi" : "unpackage/res/icons/144x144.png",
"xxxhdpi" : "unpackage/res/icons/192x192.png"
},
"ios" : {
"appstore" : "E:/Source-code/appleidmore/苹果png/appstore 1024X1024.PNG",
"appstore" : "unpackage/res/icons/1024x1024.png",
"iphone" : {
"app@2x" : "E:/Source-code/appleidmore/苹果png/120x120.PNG",
"app@3x" : "E:/Source-code/appleidmore/苹果png/180x180.PNG",
"spotlight@2x" : "E:/Source-code/appleidmore/苹果png/80x80.PNG",
"spotlight@3x" : "E:/Source-code/appleidmore/苹果png/120x120.PNG",
"settings@2x" : "E:/Source-code/appleidmore/苹果png/58x58psd.PNG",
"settings@3x" : "E:/Source-code/appleidmore/苹果png/87X87.PNG",
"notification@2x" : "E:/Source-code/appleidmore/苹果png/40X40.PNG",
"notification@3x" : "E:/Source-code/appleidmore/苹果png/60X60.PNG"
"app@2x" : "unpackage/res/icons/120x120.png",
"app@3x" : "unpackage/res/icons/180x180.png",
"spotlight@2x" : "unpackage/res/icons/80x80.png",
"spotlight@3x" : "unpackage/res/icons/120x120.png",
"settings@2x" : "unpackage/res/icons/58x58.png",
"settings@3x" : "unpackage/res/icons/87x87.png",
"notification@2x" : "unpackage/res/icons/40x40.png",
"notification@3x" : "unpackage/res/icons/60x60.png"
},
"ipad" : {
"app" : "unpackage/res/icons/76x76.png",

View File

@ -41,7 +41,7 @@
timer: null,
is_sendcode: false, // 60s
time_count: 60,
pactList: [ "《用户协议》", "《隐私协议》", "《使用协议》" ],
pactList: [ "《用户协议》", "《隐私协议》" ],
};
},
methods: {

View File

@ -34,7 +34,8 @@
<!-- 注册 -->
<view class="more_Login">
<text @click="registerUrl()">{{register}}</text>
<text class="other" @click="mask_u">其他方式登录</text>
<!-- TODO 苹果因审核原因暂时隐藏第三方登录 -->
<text v-if="platform != 'ios'" class="other" @click="mask_u">其他方式登录</text>
</view>
<!-- denglu QQ weixin -->
<view class="buttones">
@ -92,17 +93,27 @@
}, {
"id": '2',
"text": "《隐私协议》"
}, {
"id": '3',
"text": "《使用协议》"
}, ],
},
// {
// "id": '3',
// "text": "使"
// },
],
temp_url: "", //
pagesArr: ["pages/mine/index"], //
platform: '', //
};
},
onLoad() {
//
// this.apiwelcome();
//
uni.getSystemInfo({
success: (res) => {
console.log(res);
this.platform = res.platform
}
});
},
onShow() {
let pages = getCurrentPages();

View File

@ -82,10 +82,11 @@
}, {
"id": '2',
"text": "《隐私协议》"
}, {
"id": '3',
"text": "《使用协议》"
},
},
// {
// "id": '3',
// "text": "使"
// },
]
};

View File

@ -3,7 +3,7 @@
<view class="label-list">
<view v-for="(label, index) in evaluateSpec" :key="index" :class="{'active': current == index}" @click="current=index">{{ index + '(' + label + ')' }}</view>
</view>
<view class="comment-container">
<view class="comment-container" v-if="isShow">
<view v-for="(item, index) in evalueList" :key="index" class="itme">
<comment :reply="true" :content="item"></comment>
</view>
@ -25,6 +25,7 @@ export default {
evaluateSpec: {},
loadStatus: 'loadmore',
timer: true,
isShow: false, //
}
},
components: {
@ -50,7 +51,7 @@ export default {
if(!this.timer) return false;
this.loadStatus = "loading";
this.page++;
this.getAllEvalue({ type: this.current, load: 'more' }).then(length => {
this.getAllEvalue({ type: this.current, load: 'loadmore' }).then(length => {
if(length == 0) {
this.page--;
this.loadStatus = 'nomore';
@ -72,15 +73,17 @@ export default {
}
})
},
async getAllEvalue({ type, load } = {}) {
async getAllEvalue({ type, load = 'reload' } = {}) {
let params = {
goods_id: this.id,
page: this.page,
}
if(type) Object.assign(params, { type: type });
this.isShow = false;
const res = await this.$u.api.getAllEvalue(params);
this.isShow = true;
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 = [];

View File

@ -37,6 +37,10 @@
<text>{{ goodsInfo.is_collect == 1 ? '已收藏' : '收藏' }}</text>
</view>
</view>
<view class="shuliang">
<text>历史销售数量{{goodsInfo.goods_salenum}}</text>
<text>库存仅剩数量{{goodsInfo.goods_storage}}</text>
</view>
</view>
<view class="hr"></view>
<!-- <navs :value="领券"></navs> -->
@ -45,7 +49,7 @@
<!-- <navs :value="'选择尺码'"></navs> -->
<view class="comment">
<view class="title">
<view class="left">商品评价{{ evaluate.evaluate_num }}</view>
<view class="left">商品评价{{ evaluate.evaluate_num || '0' }}</view>
<view class="right" @click="viewComment">
<text>查看全部</text>
<image src="/static/image/common/1.png"></image>
@ -776,7 +780,15 @@ export default {
.goods-name {
line-height: 1.5;
}
}
.shuliang{
padding-top: 33rpx;
font-size: 24rpx;
color:#656565;
display: flex;
justify-content: space-between;
}
.price-collect {
display: flex;
align-items: center;
@ -1190,9 +1202,10 @@ export default {
background-color: #fff;
display: flex;
position: fixed;
height: 98rpx;
width: 100%;
bottom:0;
bottom: 0;
left: 0;
padding-bottom: env(safe-area-inset-bottom);
// border-top: 1rpx solid #ececec;
z-index: 10076;
.navs{
@ -1252,6 +1265,7 @@ export default {
font-size: 30rpx;
color: #ff3131;
}
}
}
.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

@ -500,7 +500,6 @@
.container {
position: relative;
background-color: #FF0000 !important;
}
/* 关闭 */

View File

@ -34,20 +34,29 @@
</view>
</view>
<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="value">
<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>
</view>
</view>
<view>
<view class="show-view">
<view class="title">运费</view>
<view class="value">
<view v-if="freight">{{ freight | setFreight(index) }}</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 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 class="common-active">
@ -65,18 +74,26 @@
<image src="../static/image/1.png"></image>
</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>
<u-popup v-model="couponStatus" mode="bottom">
<scroll-view class="coupon-choose" scroll-y style="height: 50vh;" v-if="this.couponType.type == 1">
<view class="title">优惠券详情</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" style="height: 200rpx"></u-empty>
</scroll-view>
<scroll-view class="coupon-choose" scroll-y style="height: 50vh;" v-if="this.couponType.type == 2">
<view class="title">优惠券详情</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" style="height: 200rpx"></u-empty>
</scroll-view>
</u-popup>
@ -107,13 +124,23 @@ export default {
deliveryList: [{
text: '快递',
value: 'express',
disabled: false,
type: 1,
}, {
text: '骑手',
value: 'takeawayer',
disabled: false,
type: 2,
}, {
text: '自提',
value: 'selfraising',
disabled: false,
type: 3,
}],
delivery: {
text: '快递',
value: 'express',
type: 1,
}, //
couponList: [],
couponStatus: false,
@ -123,12 +150,35 @@ export default {
goodsClass: [],
orderType: '', // 1 2 3 4 5
debounce: true,
hasInvoice: 0,
remark: {}
}
},
components: {
Coupon
},
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) {
let num = 0;
for (const key in data) {
@ -148,8 +198,11 @@ export default {
onLoad(option) {
this.orderType = this.$store.state.orderType;
this.orderInfo = this.$store.state.orderInfo;
//
if(!this.orderInfo.is_selfraising) this.deliveryList[2].disabled = true;
// console.log('orderType' + this.orderType);
// console.log(this.orderInfo);
this.initRemark();
this.getGoodsClass();
this.setTotalPrice();
},
@ -163,9 +216,13 @@ export default {
} else {
if(this.$store.getters.getOrderAddress) this.addressInfo = this.$store.state.orderAddress;
}
//
this.hasInvoice = this.$store.getters.hasInvoice;
// console.log(this.hasInvoice);
},
beforeDestroy() {
this.$store.commit('updateAddress', {});
this.$store.commit('setInvoiceInfo', {});
},
watch: {
'$store.state.orderAddress'(value) {
@ -174,6 +231,17 @@ export default {
},
},
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
async withImmediate(type) {
let params = {
@ -182,8 +250,10 @@ export default {
// console.log(this.orderInfo);
// console.log(this.$store.state.pintuangroup_headid);
if(this.orderInfo.pintuangroup_id) {
Object.assign(params, { pintuangroup_headid: this.$store.state.pintuangroup_headid });
Object.assign(params, { pintuangroup_id: this.orderInfo.pintuangroup_id });
Object.assign(params, {
pintuangroup_headid: this.$store.state.pintuangroup_headid,
pintuangroup_id: this.orderInfo.pintuangroup_id
});
}
console.log(params);
this.$u.api.withImmediate(params).then(res => {
@ -198,6 +268,7 @@ export default {
})
},
intermediate() {
console.log(this.remark);
if(!this.debounce) return;
this.debounce = false;
if(this.orderType == 2) {
@ -249,6 +320,9 @@ export default {
cart_id: id,
address_id: this.addressInfo.address_id,
buy_city_id: this.addressInfo.city_id,
member_deliver_type: this.delivery.type,
invoice_id: this.$store.getters.getInvoiceId, // ID0
pay_message: this.remark,
}
if(coupon.length) Object.assign(params, { voucher_id: coupon });
if(this.orderType == 2) {
@ -256,16 +330,17 @@ export default {
if(this.orderInfo.pintuangroup_id) Object.assign(params, { pintuangroup_id: this.orderInfo.pintuangroup_id });
}
// console.log(params);
// return;
this.$u.api.sendOrder(params).then(res => {
if(res.errCode == 0) {
this.$u.route({
type: 'redirect',
url: '/pageC/cart/cashier',
params: {
ifcart: params.ifcart,
ifcart: ifcart,
pay_sn: res.data.pay_sn,
price: res.data.order_total_amount,
order_id: res.data.order_list[0].order_id,
order_id: res.data.order_list[0].order_id,
}
})
} else {
@ -282,15 +357,37 @@ export default {
this.couponStatus = true;
},
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) {
Object.assign(this.storeCoupon, {
[this.couponType.store_id]: coupon
})
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, {
[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.storeCoupon);
this.couponStatus = false;
// this.couponStatus = false;
this.setTotalPrice(); //
},
getFreight() {
@ -311,23 +408,23 @@ export default {
const goods = this.orderInfo.store_goods_total;
let [freight, price, minPrice] = [0, 0, 0];
//
for (const key in this.freight) {
if (this.freight.hasOwnProperty(key)) {
for(const key in this.freight) {
if(this.freight.hasOwnProperty(key)) {
const element = this.freight[key];
freight += Number(element);
}
}
//
//
for (const gid in goods) {
if (goods.hasOwnProperty(gid)) {
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)) {
for(const cid in this.storeCoupon) {
if(this.storeCoupon.hasOwnProperty(cid)) {
const cprice = this.storeCoupon[cid];
//
if(gid == cid) {
@ -351,13 +448,29 @@ export default {
// console.log("price:" + price);
this.totalPrice = (price + freight).toFixed(2);
},
setDelivery(index) {
async setDelivery(index) {
// console.log(index);
if(index == 1) {
if(!this.isTakeawayer) this.$u.toast('此地区不支持骑手配送');
return false;
if(!this.isTakeawayer) {
this.$u.toast('此地区不支持骑手配送');
return false;
}
this.delivery = this.deliveryList[index];
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();
}
this.delivery = this.deliveryList[index];
this.getFreight();
},
settlement() {
uni.navigateTo({
@ -373,7 +486,10 @@ export default {
uni.navigateTo({
url: '/pageE/more/Address?type=choose'
});
}
},
selectInvoice() {
this.$u.route('/pageC/cart/selectInvoice');
},
},
};
</script>
@ -382,6 +498,7 @@ export default {
min-height: calc(100vh - var(--window-top));
background-color: #ECECEC;
padding-top: 1rpx;
padding-bottom: 200rpx;
.info-address {
padding: 30rpx;
display: flex;
@ -444,7 +561,7 @@ export default {
height: 60rpx;
border-radius: 50%;
margin-right: 15rpx;
background-color: aquamarine;
// background-color: aquamarine;
}
> view {
font-size: 28rpx;
@ -452,6 +569,7 @@ export default {
margin-right: 15rpx;
}
.right {
margin-left: auto;
flex-shrink: 0;
width: 11rpx;
height: 22rpx;
@ -469,7 +587,7 @@ export default {
width: 180rpx;
height: 160rpx;
border-radius: 10rpx;
background-color: aqua;
// background-color: aqua;
flex-shrink: 0;
}
.info {
@ -512,7 +630,7 @@ export default {
}
}
.order-info {
> view {
.show-view {
height: 98rpx;
background: rgba(255,255,255,1);
padding: 35rpx 30rpx;
@ -537,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 {
padding-bottom: 200rpx;
padding-bottom: 30rpx;
> view {
height: 98rpx;
background: rgba(255,255,255,1);
@ -559,6 +719,9 @@ export default {
align-items: center;
font-size: 30rpx;
color:rgba(51,51,51,1);
.invoice {
font-size: 26rpx;
}
> image {
width: 12rpx;
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>
<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="salenum" :class="{ 'current' : current == 0 }" @click="switchCurrent(0)">销量</view>
<view class="price" :class="{ 'current' : current == 1 }" @click="switchCurrent(1)">
@ -19,6 +20,7 @@
<view class="briefing u-line-1">{{ goods.goods_advword }}</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>
@ -42,6 +44,8 @@ export default {
scrollHeight: '',
loadStatus: 'loadmore',
timer: true, //
keyword:"",
sel:""
}
},
watch: {
@ -80,6 +84,7 @@ export default {
gc_id: this.cid,
page: this.page,
order: sort,
keyword:this.sel
})
this.timer = true;
if(res.errCode == 0) {
@ -123,6 +128,11 @@ export default {
id: id,
type: 1 // 1 2 3 4
});
},
select(){
this.sel = this.keyword;
this.page = 1;
this.goodsListByClassId({ laod: 'reload' });
}
}
};
@ -200,6 +210,13 @@ export default {
.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;
color: rgba(255,49,49,1);

View File

@ -6,12 +6,12 @@
</view>
<swiper :current="swiperCurrent" @animationfinish="animationfinish" :style="{height: swiperHeight}">
<swiper-item class="swiper-item" v-for="(_, index) in tabList" :key="index">
<scroll-view scroll-y style="width: 100%;" @scrolltolower="onreachBottom">
<scroll-view scroll-y style="width: 100%;height: 100%;" @scrolltolower="onreachBottom">
<view v-if="pinTuanList[index]">
<SpecialGoods v-for="(item, index) in pinTuanList[index]" :key="index" :item="item" type='group'></SpecialGoods>
</view>
<u-empty text="暂无商品" mode="list" color="#000" margin-top="120" v-if="!pinTuanList[index] || !pinTuanList[index].length"></u-empty>
<u-loadmore :status="loadStatus" bgColor="#FFF" margin-top="20" margin-bottom="20" v-if="pinTuanList[index] && pinTuanList[index].length>=pageSize" @loadmore="onreachBottom"></u-loadmore>
<u-loadmore :status="loadStatus" bgColor="#FFF" margin-top="20" margin-bottom="20" v-if="pinTuanList[index]" @loadmore="onreachBottom"></u-loadmore>
</scroll-view>
</swiper-item>
</swiper>
@ -22,7 +22,6 @@ import SpecialGoods from "../../components/shop/special-shop/index";
export default {
data() {
return {
pageSize: 6,
tabList: [],
current: -1,
swiperCurrent: 0,
@ -42,6 +41,7 @@ export default {
},
watch: {
current(index) {
this.page = 0;
this.getPinTuanList({ id: this.tabList[index].gc_id, load: 'reload' });
}
},
@ -56,7 +56,7 @@ export default {
})
},
//
async getPinTuanList({ id, page, load }) {
async getPinTuanList({ id, load }) {
const res = await this.$u.api.getPinTuanList({
page: this.page,
gc_id: id,

View File

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

View File

@ -53,7 +53,7 @@
<goods :sid="sid"></goods>
</view>
</view>
<view class="tabbar">
<view class="tabbar" :style="safeareaStyle">
<view @click="switchCurrent(0)">
<image src="/static/image/shop/9.png"></image>
<view>商品分类</view>
@ -94,6 +94,7 @@ export default {
page: 1,
scrollHeiht: '',
paddingTop: 0,
safeareaStyle: "", //
}
},
components:{
@ -118,6 +119,21 @@ export default {
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: {
customers(){
console.log(this.$store.state.hasLogin)
@ -225,17 +241,16 @@ export default {
// console.log(this.paddingTop);
}
},
onLoad(option){
this.sid = option.id;
// console.log(this.sid);
this.getStoreInfo();
this.getArticlelist();
this.setViewHeight();
// this.getStoreImgVideoList();
}
};
</script>
<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 {
// min-height: 100vh;
background-color: #ECECEC;
@ -388,14 +403,14 @@ export default {
.tabbar {
border-top: 1rpx #DBDADA solid;
width: 100%;
height: 98rpx;
background: rgba(251,251,251,1);
display: flex;
padding: 10rpx 55rpx;
position: fixed;
bottom: 0;
left: 0;
z-index: 9;
padding: 10rpx 55rpx;
padding-bottom: env(safe-area-inset-bottom);
> view {
flex: 1;
text-align: center;

View File

@ -12,7 +12,7 @@
<view v-for="classifyA in classifyList" :key="classifyA.gc_parent_id" class="classify-view">
<view class="title">{{ classifyA.gc_parent_name }}</view>
<view class="classifyA-view">
<view v-for="classifyB in classifyA.gc_child" :key="classifyB.gc_id" class="classifyB-item u-line-1" @click="viewGoods({ type: classifyB.gc_parent_id, name: classifyB.gc_parent_name })">{{ classifyB.gc_parent_name }}</view>
<view v-for="classifyB in classifyA.gc_child" :key="classifyB.gc_id" class="classifyB-item u-line-1" @click="viewGoods({ type: classifyB.gc_id, name: classifyB.gc_name })">{{ classifyB.gc_name }}</view>
</view>
</view>
</view>

View File

@ -1,7 +1,7 @@
<template>
<view class="spike">
<scroll-view class="spike" scroll-y @scrolltolower="onreachBottom">
<view class="title">
<view class="name">全部秒杀</view>
<view class="name">全部秒杀</view>
<view class="time">
<text class="num">{{ seckillTime.littleHour || '00' }}</text>
<text class="mah">:</text>
@ -19,8 +19,9 @@
<view class="spike-list">
<SpecialGoods v-for="(item, index) in spikeList" :key="index" :item="item" type='spike'></SpecialGoods>
<u-empty mode="list" v-if="!spikeList.length" :margin-top="240"></u-empty>
<u-loadmore :status="loadStatus" bgColor="#FFF" margin-top="20" margin-bottom="20" @loadmore="onreachBottom"></u-loadmore>
</view>
</view>
</scroll-view>
</template>
<script>
import SpecialGoods from "@/components/shop/special-shop/index"
@ -29,27 +30,50 @@ export default {
return {
spikeList: [],
page: 0,
seckillTime: {}
seckillTime: {},
timer: true, //
loadStatus: 'loadmore',
}
},
components: {
SpecialGoods
},
onShow() {
this.getSpikeList();
this.getSpikeList({ load: "reload" });
},
methods: {
//
getSpikeList() {
this.$u.api.getSpikeList({ page: this.page }).then(res => {
console.log(res)
if(res.errCode == 0) {
this.spikeList = res.data.list;
this.seckillTime = {
bigHour: res.data.bigHour,
littleHour: res.data.littleHour,
}
async getSpikeList({ load }) {
const res = await this.$u.api.getSpikeList({
page: this.page,
})
this.timer = true;
if (res.errCode == 0) {
this.seckillTime = {
bigHour: res.data.bigHour,
littleHour: res.data.littleHour,
}
if(load == 'reload') this.spikeList = res.data.list;
else if(load == 'loadmore') this.spikeList.push(...res.data.list);
}
this.$forceUpdate();
return res.data.list.length;
},
onreachBottom() {
if(!this.timer) return false;
this.loadStatus = "loading";
this.page++;
this.getSpikeList({ load: "loadmore" }).then(length => {
// console.log(length);
if(length == 0) {
this.page--;
this.loadStatus = 'nomore';
} else {
this.loadStatus = 'loadmore';
}
}).catch(() => {
this.loadStatus = "nomore";
this.page--;
})
},
}
@ -57,9 +81,10 @@ export default {
</script>
<style lang="scss" scoped>
.spike{
min-height: calc(100vh - var(--window-top));
height: calc(100vh - var(--window-top));
padding: 30rpx;
border-top: 1rpx solid rgba(236,236,236,1);
box-sizing: border-box;
.title{
margin-bottom: 30rpx;
display: flex;

View File

@ -5,7 +5,7 @@
<image :src="item.friend_tomavatar" mode="aspectFill"></image>
<view class="tishi" v-if="item.unread_message"></view>
</view>
<view>{{item.friend_tomname}}</view>
<view>{{item.friend_tomnickname}}</view>
<view>{{item.live_status ? '正在直播' : '未直播'}}</view>
<view class="cur_two" @click="tapClick(index)">已关注</view>
<!-- <view class="cur" @click="tapClick(index)" v-else = "item.about == 2">未关注</view> -->

View File

@ -4,9 +4,13 @@
<view class="activity" v-for="(item, index) in actives" :key="index">
<view class="times">{{item.kd_time}}</view>
<view class="content">
<view class="store_name">
<view class="store-name">
<image :src="item.store_avatar"></image>
<view>{{item.store_name}}</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 class="xiantiao"></view>
<view class="title">{{item.title}}</view>
@ -77,10 +81,13 @@
this.$u.route(url, {
oid: item.order_id,
});
},
makePhone(phone) {
uni.makePhoneCall({
phoneNumber: phone
});
}
},
components:{
}
};
</script>
@ -147,25 +154,31 @@ page{
margin-bottom: 20rpx;
}
//
.store_name{
.store-name{
overflow: hidden;
zoom: 1;
padding: 0rpx 0 20rpx 0;
display: flex;
align-items: center;
image{
width: 60rpx;
height: 60rpx;
border-radius: 50%;
float: left;
}
view{
.name {
font-size:26rpx;
color:rgba(51,51,51,1);
float: left;
display: table-cell;
line-height: 60rpx;
display: inline-block;
margin-left: 21rpx;
}
.takeawayer {
margin-left: auto;
> text {
margin-left: 10rpx;
}
}
}
}
}

View File

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

View File

@ -43,7 +43,7 @@
};
</script>
<style lang="scss" scoped>
<style lang="scss">
page {
background-color: #ECECEC;
}

View File

@ -128,12 +128,12 @@
this.friend = JSON.parse(options.id);
this.currentUser = this.imService.currentUser;
let privateMessages = this.imService.getPrivateMessages(this.friend.uuid);
this.imService.uid = this.friend.uuid;
this.messages = privateMessages.sentMessages;
this.pendingMessages = privateMessages.pendingMessages;
uni.setNavigationBarTitle({
title : this.friend.name
});
console.log(this.friend.name)
this.setTitle(this.friend.name)
setTimeout(() => {
uni.setNavigationBarColor({
backgroundColor : '#FF780F',
@ -153,8 +153,21 @@
this.imService.onPrivateHistoryLoad = (friendId, messages) =>{};
//
this.imService.resetFriendUnReadMessage(this.friend);
this.imService.uid = 0;
},
methods: {
setTitle(title){
let that = this
if(title == ""){
title = "这是空的"
}
uni.setNavigationBarTitle({
title : title,
fail(){
that.setTitle(title)
}
});
},
bindtapInput(){
console.log("222")
var _that = this;

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

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

View File

@ -9,11 +9,11 @@
<view class="integral-top">
<view>
<view class="title">总积分</view>
<view class="value">{{ memberInfo.member_points }}</view>
<view class="value">{{ memberInfo.member_points || 0 }}</view>
</view>
<view>
<view class="title">经验值</view>
<view class="value">{{ memberInfo.member_exppoints }}</view>
<view class="value">{{ memberInfo.member_exppoints || 0 }}</view>
</view>
<view @click="viewProgress">
<view class="title">预计进度</view>
@ -24,7 +24,14 @@
</view>
</view>
<scroll-view scroll-y class="integral-botom" :style="{ height: richHeight }">
<rich-text :nodes="nodes"></rich-text>
<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>
</view>
</scroll-view>
</view>
</swiper-item>
@ -69,7 +76,10 @@ export default {
swiperCurrent: 0,
pointslogList: [],
memberInfo: {},
pointsNodes: '',
nodes: '',
points_rule: {},
member_rule: {}
}
},
components: {
@ -103,7 +113,10 @@ export default {
this.$u.api.getMemberPointsStat().then((res)=>{
if(res.errCode == 0) {
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;
top: 250rpx;
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 {

View File

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

View File

@ -1,7 +1,7 @@
<template>
<view class="information">
<view class="info-avatar">
<u-avatar :src="userInfo.member_avatar" :size="120"></u-avatar>
<u-avatar :src="userInfo.member_avatar + '?' + (new Date().getTime())" :size="120"></u-avatar>
</view>
<view class="info-item">
<view class="title">昵称</view>
@ -51,8 +51,8 @@ export default {
getUserInfo() {
this.$u.api.getMemberInfo().then(res => {
if (res.errCode == 0) {
// this.userInfo = res.data.MemberArray;
this.$set(this, 'userInfo', res.data.MemberArray);
this.userInfo = res.data.MemberArray;
// this.$set(this, 'userInfo', res.data.MemberArray);
}
})
},

View File

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

View File

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

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="text">
<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>
<image :src="s_object[orderstate].image"></image>
</view>
@ -59,23 +59,29 @@
<view class="title">支付方式</view>
<view class="price">{{ orderInfo.payment_name }}</view>
</view>
<view>
<view class="title">配送方式</view>
<view class="price">{{ orderInfo.member_deliver_type | getDeliverType(orderInfo.store_deliver_type) }}</view>
</view>
</view>
</view>
<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.pay_sn }}</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>
<!-- '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' || -->
<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="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 == '8'" @click="cancelOrder">取消订单</view> -->
<view class="cancel" v-if="orderstate == '1' && orderInfo.shipping_code" @click="toOtherPage('Logistics')">查看物流</view>
<view class="phone" v-if="orderstate == '1' && orderInfo.takeawayer_mobile" @click="makePhone(orderInfo.takeawayer_mobile)">
<u-icon name="phone-fill" color="#FF780F" size="28"></u-icon>
<text>联系骑手</text>
@ -109,7 +115,7 @@ export default {
image: '../static/mine/36.png',
},
'5': {
text: '已退款',
text: '商家已退款',
image: '../static/mine/34.png',
},
'6': {
@ -129,7 +135,11 @@ export default {
image: '../static/mine/33.png',
},
'10': {
text: '已拒绝',
text: '商家已拒绝',
image: '../static/mine/34.png',
},
'11': {
text: '平台已退款',
image: '../static/mine/34.png',
},
},
@ -152,6 +162,32 @@ export default {
beforeDestroy() {
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: {
viewStoreDetails(id) {
this.$u.route('pageC/merchant/index', {
@ -200,12 +236,12 @@ export default {
this.$u.api.getOrderInfo({
order_id: id,
}).then(res => {
// console.log(res)
console.log(res)
if(res.errCode == 0) {
this.orderInfo = res.data;
this.setTitle(this.orderInfo.view_type);
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);
// 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);
}
uni.stopPullDownRefresh(); //
})
@ -254,6 +290,7 @@ export default {
toOtherPage(url) {
this.$u.route('/pageE/order/' + url, {
oid: this.orderInfo.order_id,
type:this.orderInfo.view_type
});
},
makePhone(phone) {
@ -296,6 +333,9 @@ export default {
case 11:
state = '10';
break;
case 12:
state = '11';
break;
default:
break;
}
@ -460,6 +500,9 @@ export default {
> view:not(:last-child) {
margin-bottom: 30rpx;
}
.address {
line-height: 40rpx;
}
}
}
.btn {

View File

@ -7,7 +7,7 @@
<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">
<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>
<TryOrderItem :order="order" @refreshOrderList="refreshOrderList" v-else></TryOrderItem>
</view>
@ -78,8 +78,8 @@ export default {
},
//
onPullDownRefresh() {
this.refreshOrderList();
},
this.refreshOrderList();
},
methods: {
setOrderType() {
let type;
@ -129,13 +129,29 @@ export default {
page: this.page,
type: type,
})
// res.data.forEach(element => {
// element.extend_order_goods.forEach(i=>{
// // console.log(i)
// })
// });
this.timer = true;
uni.stopPullDownRefresh(); //
if(res.errCode == 0) {
if(load == 'reload') this.orderList[this.current] = res.data;
else if(load == 'loadmore') this.orderList[this.current].push(...res.data);
if(load == 'reload'){
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();
// console.log(this.orderList);
return res.data.length;
},
@ -156,11 +172,16 @@ export default {
const res = await this.$u.api.goodsTryOrderList({
page: this.page,
})
console.log(res)
uni.stopPullDownRefresh(); //
this.timer = true;
if(res.errCode == 0) {
if(load == 'reload') this.orderList[this.current] = res.data.list;
else if(load == 'loadmore') this.orderList[this.current].push(...res.data.list);
if(load == 'reload') {
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();
return res.data.list.length;

View File

@ -3,7 +3,6 @@
<view class="radios-container">
<view v-if="type == 2">
<label class="radio-view" v-for="(item, index) in goodsList" :key="index">
<view class="store_info">
<view class="info_img">
<image :src="item.goods_image" mode="">
@ -84,7 +83,6 @@ export default {
computed: {
totalPrice() {
if(this.type == 2){
console.log(this.goodsList)
let pac = 0;
for(let i in this.goodsList){
pac += parseFloat(this.goodsList[i].goods_pay_price) * 100 ;
@ -96,7 +94,8 @@ export default {
}
},
onLoad(option) {
this.type = option.type
this.type = 2; // 退
// this.type = option.type
this.oid = option.oid;
this.getOrderInfo(option.oid);
},
@ -138,22 +137,23 @@ export default {
return true;
},
applyRefund() {
if(this.type !=2 && !this.verifyParams()) return false;
// addrefundall id
let params = {
order_id: this.oid,
goods_id: this.goods.goods_id,
refund_amount: Number(this.totalPrice),
// goods_id: this.goods.goods_id,
// refund_amount: Number(this.totalPrice),
reason_info: this.refundText,
goods_num: this.num,
// goods_num: this.num,
}
console.log(params)
if(this.type == 2){
this.$u.api.addrefundall(params).then(res => {
console.log(JSON.stringify(res))
// console.log(JSON.stringify(res))
if(res.errCode == 0) {
this.$refs.uToast.show({
title: res.message,
type: 'success',
back: true,
})
} else {
@ -189,12 +189,17 @@ export default {
background-color: #EDEDED;
.radios-container {
margin-bottom: 20rpx;
.u-radio-group {
width: 100%;
}
.radio-view {
width: 100%;
background-color: #FFFFFF;
padding: 26rpx;
display: flex;
align-items: center;
margin-bottom: 1rpx;
box-sizing: border-box;
.radio {
margin-right: 20rpx;
}

View File

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

View File

@ -10,6 +10,10 @@
<view>{{ item.title }}</view>
<image src="../static/mine/21.png"></image>
</view>
<view class="list-item" @click="clearCache">
<view>清除缓存</view>
<view class="left-text">{{ fileSizeString }}</view>
</view>
<view class="list-item" @click="sheetStatus=true">
<view>退出登录</view>
<image src="../static/mine/21.png"></image>
@ -58,24 +62,39 @@
title: '证件中心',
link: '../mine/ArticleDetails?type=1'
},
{
title: '第三方绑定',
link: './binding'
},
{
title: '屏蔽用户',
link: './ShieldUsers'
},
{
title: '关于我们',
// link: '../mine/ArticleDetails?type=2'
link: '/pageE/setting/version'
},
{
title: '帮助与反馈',
link: './feedback'
},
{
title: '用户协议',
link: '/pageA/pactList/pactList?index=0'
},
{
title: '隐私政策',
link: '/pageA/pactList/pactList?index=1'
},
],
content: "是否退出登录!",
show: false
show: false,
fileSizeString: "", //
}
},
onLoad() {
this.getCache();
},
methods: {
...mapMutations(['logout']),
// 退 0 | 1退
@ -85,6 +104,45 @@
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) {
uni.navigateTo({
url: url
@ -122,6 +180,11 @@
width: 14rpx;
height: 24rpx;
}
.left-text {
margin-left: auto;
font-size: 28rpx;
}
}
}
</style>

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

@ -18,6 +18,7 @@
2. 新增Modal模态框组件<br>
3. 新增压窗屏组件可以在APP上以弹窗的形式遮盖导航栏和底部tabbar<br>
`,
isAutoUpdate: false,
}
},
onLoad(option) {
@ -45,7 +46,13 @@
// #endif
},
closeModal() {
uni.navigateBack();
const pages = getCurrentPages();
// console.log(pages);
if(pages.length == 2) {
this.$u.route('/pageA/welcome/welcome');
} else {
uni.navigateBack();
}
}
}
}

View File

@ -15,6 +15,10 @@
<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>
@ -25,10 +29,12 @@ export default {
version: '',
phone_type: "",
status: '',
phoneNumber: '',
}
},
onLoad() {
this.getVersion();
this.getPhone();
this.phone_type = this.$u.os();
},
methods: {
@ -42,6 +48,13 @@ export default {
}
})
},
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
@ -49,7 +62,7 @@ export default {
},
updateVersion() {
this.$u.route('/pageE/setting/updateVersion', {
status: this.status
status: this.status,
});
}
}
@ -96,7 +109,7 @@ export default {
}
.tips {
color: #999;
font-size: 22rpx;
font-size: 28rpx;
}
.version-view {
.tips {

View File

@ -14,6 +14,7 @@
<view class="order-status">{{ item.status }}</view>
</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>
<u-loadmore :status="loadStatus" bgColor="#ECECEC" margin-bottom="20" v-if="orderList.length>=pageSize"></u-loadmore>
@ -129,7 +130,7 @@ export default {
.order-item {
padding: 30rpx;
width:690rpx;
height: 229rpx;
// height: 229rpx;
background: rgba(255,255,255,1);
border-radius: 10rpx;
margin-bottom: 20rpx;

View File

@ -5,15 +5,23 @@
<view>美甲人</view>
<input type="text" v-model="name" />
</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 class="order-name">
<view>美甲人电话</view>
<input type="text" v-model="phone" maxlength="11" />
</view>
<view class="order-address">
<view class="title">美甲地址</view>
<input type="text" v-model="address" disabled />
</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 class="order-btn" @click="addManicureOrder">确认订单</view>
<u-picker mode="time" v-model="show" :params="params" @confirm="chooseDate"></u-picker>
@ -26,6 +34,8 @@ export default {
return {
name: '',
time: '',
phone: '',
storePhone: '',
address: '',
params: {
year: true,
@ -41,28 +51,38 @@ export default {
},
onLoad() {
this.getConfigInfo();
this.getPhone();
},
methods: {
validateValue() {
if(this.$u.test.isEmpty(this.name)) {
this.showToast('姓名不能为空', 'error');
this.showToast('姓名不能为空');
return false;
}
if(this.$u.test.isEmpty(this.time)) {
this.showToast('日期不能为空', 'error');
if(this.$u.test.isEmpty(this.phone)) {
this.showToast('美甲人电话不能为空');
return false;
}
if(new Date() > new Date(this.time)) {
this.showToast('日期错误', 'error');
if(!this.$u.test.mobile(this.phone)) {
this.showToast('美甲人电话错误');
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;
},
addManicureOrder() {
if(!this.validateValue()) return false;
this.$u.api.addManicure({
name: this.name,
time: new Date(this.time)
phone: this.phone,
// time: new Date(this.time)
}).then((res)=>{
if(res.errCode == 0) {
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) {
// 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

@ -1,9 +1,9 @@
<template>
<view class="mine-history">
<scroll-view scroll-y class="history-box" @scrolltolower="reachBottom">
<view scroll-y class="history-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)">
<image :src="item.store_avatar"></image>
<view class="u-line-1">{{ item.store_name }}</view>
@ -20,7 +20,7 @@
<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-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>
</template>
@ -47,6 +47,9 @@ export default {
onLoad() {
this.getBrowseList();
},
onReachBottom(){
this.reachBottom()
},
methods: {
viewAction(id) {
this.showAction = true;
@ -58,6 +61,10 @@ export default {
this.$u.api.delMemberBrowse({ goods_id: glist }).then(res => {
if(res.errCode == 0) {
this.getBrowseList();
uni.pageScrollTo({
scrollTop: 0,
duration: 300
});
} else {
this.$u.toast(res.message);
}
@ -109,13 +116,16 @@ export default {
}
};
</script>
<style lang="scss" scoped>
<style lang="scss">
page{
background: #ECECEC;
}
.mine-history {
min-height: calc(100vh - var(--window-top));
background: #ECECEC;
.history-box {
box-sizing: border-box;
height: calc(100vh - var(--window-top));
// height: calc(100vh - var(--window-top));
padding: 20rpx 30rpx 0;
.item-box {
display: flex;

View File

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

View File

@ -57,10 +57,6 @@
<view class="order-view order-area" @click="showAddress=true">
<view class="title">省市区:</view>
<input type="text" v-model="area" disabled />
<!-- <view class="location">
<image src="../static/mine/28.png"></image>
<view>定位</view>
</view> -->
</view>
<view class="order-view order-address">
<view class="title">详细地址:</view>
@ -113,10 +109,6 @@
<view class="order-view order-area" @click="showAddress=true">
<view class="title">省市区:</view>
<input type="text" v-model="area" disabled />
<!-- <view class="location">
<image src="../static/mine/28.png"></image>
<view>定位</view>
</view> -->
</view>
<view class="order-view order-address">
<view class="title">详细地址:</view>
@ -254,7 +246,6 @@ export default {
// this.current = 0;
// this.swiperCurrent = 0;
this.showPopup = false;
this.choose = false;
},
onLoad() {
this.getOrderList();
@ -270,6 +261,7 @@ export default {
this.phone = '';
this.area = '';
this.address = '';
this.choose = false;
}
},
methods: {
@ -419,12 +411,16 @@ export default {
radioChange(e){
const ids = e.split(" ");
// console.log(ids)
let checkedGoods = {};
let checkedGoods;
this.orderList.forEach(order => {
if(order.order_id == ids[0]) {
Object.assign(checkedGoods, { store: order.extend_store });
Object.assign(checkedGoods, { order_sn: order.order_sn });
Object.assign(checkedGoods, { order_id: order.order_id });
checkedGoods = {
store: order.extend_store,
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 => {
if(goods.goods_id == ids[1]) {
Object.assign(checkedGoods, { goods: goods });
@ -433,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) {
// console.log(area);

View File

@ -2,20 +2,25 @@
<view class="comment">
<view class="main-container">
<u-input v-model="content" type="textarea" height="300" maxlength="200" />
<!-- <u-upload
<u-upload
ref="uUpload"
@on-uploaded="onUploaded"
:custom-btn="true"
:max-count="count"
: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">
<image src="../static/mine/27.png"></image>
</view>
</u-upload> -->
</u-upload>
</view>
<u-toast ref="uToast" />
<view class="write-btn" @click="addWashEvaluate">发表评价</view>
<view class="write-btn" @click="setLoaclList">发表评价</view>
</view>
</template>
<script>
@ -23,8 +28,17 @@ export default {
data() {
return {
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: '',
imageList: [],
}
},
onLoad(option) {
@ -38,11 +52,22 @@ export default {
}
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() {
if(!this.verifyParams()) return false;
this.$u.api.sendOrderComment({
id: this.washId,
comment: this.content,
comment_img: this.imageList[0]
}).then(res => {
this.$refs.uToast.show({
title: res.message,
@ -65,23 +90,23 @@ export default {
background-color: #ffffff;
padding: 30rpx;
margin-bottom: 10rpx;
// textarea {
// width: 100% !important;
// height: 500rpx;
// margin-bottom: 60rpx;
// }
// .slot-btn {
// width: 140rpx;
// height: 140rpx;
// background: rgba(236,236,236,1);
// border-radius: 10rpx;
// text-align: center;
// > img {
// margin-top: 48rpx;
// width: 54rpx;
// height: 49rpx;
// }
// }
textarea {
width: 100% !important;
height: 500rpx;
margin-bottom: 60rpx;
}
.slot-btn {
width: 140rpx;
height: 140rpx;
background: rgba(236,236,236,1);
border-radius: 10rpx;
text-align: center;
> image {
margin-top: 48rpx;
width: 54rpx;
height: 49rpx;
}
}
}
.write-btn {
margin: 120rpx auto 0;

View File

@ -80,6 +80,17 @@
{
"root": "pageB",
"pages": [
{
"path": "tipsinfo/index",
"style": {
"navigationBarTitleText": "",
"app-plus":{
"titleNView":{
"backgroundColor":"#ffffff"
}
}
}
},
{
"path": "playVideo/index",
"style": {
@ -125,7 +136,7 @@
"buttons": [
{
"type":"none",
"text":"\ue636",
"text":"\ue001",
"float":"right",
"fontSize":"18",
"fontSrc": "/static/fonts/cart.ttf"
@ -156,7 +167,7 @@
"buttons": [
{
"type":"none",
"text":"\ue636",
"text":"\ue001",
"float":"right",
"fontSize":"18",
"fontSrc": "/static/fonts/cart.ttf"
@ -347,6 +358,19 @@
}
}
},
{
"path": "cart/selectInvoice",
"style": {
"navigationBarTitleText": "发票抬头",
"app-plus": {
"titleSize": "36px",
"titleNView": {
"titleColor": "#333333",
"backgroundColor": "#FFFFFF"
}
}
}
},
{
"path": "merchant/index",
"style": {
@ -367,9 +391,9 @@
// },
{
"type":"none",
"text":"\ue636",
"text":"\ue001",
"float":"right",
"fontSize":"22",
"fontSize":"18",
"fontSrc": "/static/fonts/cart.ttf",
"color": "#FFFFFF"
@ -473,7 +497,7 @@
{
"path": "privateChat/privateChat",
"style": {
"navigationBarTitleText": "uni-app",
"navigationBarTitleText": "商家",
"app-plus": {
"titleNView": true
}
@ -611,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",
"style": {
@ -717,6 +780,19 @@
}
}
},
{
"path": "mine/Contact",
"style": {
"navigationBarTitleText": "联系我们",
"app-plus": {
"titleSize": "36px",
"titleNView": {
"titleColor": "#333333",
"backgroundColor": "#FFFFFF"
}
}
}
},
{
"path": "mine/Integral",
"style": {
@ -988,6 +1064,19 @@
}
}
},
{
"path": "setting/binding",
"style": {
"navigationBarTitleText": "第三方绑定",
"app-plus": {
"titleSize": "36px",
"titleNView": {
"titleColor": "#333333",
"backgroundColor": "#FFFFFF"
}
}
}
},
{
"path": "setting/ShieldUsers",
"style": {
@ -1122,7 +1211,6 @@
{
"path": "pages/index/index",
"style": {
"enablePullDownRefresh": true,
"navigationStyle": "custom"
}
},

View File

@ -262,7 +262,8 @@
loading: '努力加载中',
nomore: '实在没有了'
},
refresher:true
refresher:true,
zqie:false
}
},
components: {
@ -272,7 +273,7 @@
darenItem
},
onShow() {
console.log(this.imService.status)
console.log(this.imService.status,this.$store.state.hasLogin)
if(!this.imService.status && this.$store.state.hasLogin){
const user = uni.getStorageSync('user_info');
// console.log(user)
@ -306,7 +307,8 @@
//
if (this.$store.state.showCoupons) {
this.isNewmembervoucher();
}
}
this.getRecommendList();
},
async onLoad(){
this.articleList = [];
@ -354,7 +356,11 @@
tabLiveList() {
uni.showLoading({
title: "loading..."
})
})
if(this.zqie){
return ;
}
this.zqie = true;
this.$u.api.tabLiveList({page:this.live_page}).then((res) => {
// uni.stopPullDownRefresh();
this.status_live = "loading";
@ -371,6 +377,7 @@
} else if (res.data.data.length == 0 && this.live_page > 1) {
this.status_live = "nomore";
} else {
console.log(this.live_page,1223)
this.tabLiveLists = this.tabLiveLists.concat(res.data.data);
console.log(this.tabLiveLists)
}
@ -381,6 +388,8 @@
} else {
this.status_live = "nomore"
}
this.zqie = false;
})
},
@ -541,7 +550,8 @@
// console.log(item);
this.jumpPage({
type: item.url_type,
id: item.info_id,
id: item.info_id,
adv_id: item.adv_id,
});
},
clickSImage(index) {
@ -549,11 +559,12 @@
// console.log(item);
this.jumpPage({
type: item.url_type,
id: item.info_id,
id: item.info_id,
adv_id: item.adv_id,
});
},
goSearch() {
this.$u.route("/pageB/search/index", {
goSearch() {
this.$u.route("/pageB/search/index", {
type: 2,
curent:2
});
@ -568,17 +579,18 @@
})
},
onPulling(e) {
console.log("onpulling", e);
},
onRestore() {
this.refresher = 'restore'; //
console.log("onRestore");
},
onAbort() {
console.log("onAbort");
},
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 });
}
},

View File

@ -127,7 +127,8 @@
uni.request({
url:"https://mall.dmygkeji.com/api/Specialci/getAtwillUserInfo",
data:{
userId: 1
userId: 1,
markup: 1
},
method:"POST",
header:{
@ -136,7 +137,7 @@
success(res){
console.log(res)
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({
url:"/pageD/privateChat/privateChat",
params:{
@ -149,6 +150,7 @@
},
gochat(id){
console.log(id)
this.$u.route({
url:"/pageD/privateChat/privateChat",
params:{

View File

@ -2,7 +2,7 @@
<view class="mine">
<view class="mine-top">
<view class="top">
<u-avatar @click="toOtherPage('/mine/MineInfo')" :src="userInfo.member_avatar" :size="110"></u-avatar>
<u-avatar @click="toOtherPage('/mine/MineInfo')" :src="userInfo.member_avatar + '?' + (new Date().getTime())" :size="110"></u-avatar>
<view class="user-info">
<view class="info-top">
<view class="user-nickname u-line-1">{{ userInfo.member_nickname }}</view>
@ -16,7 +16,10 @@
<view class="user-rank">等级:{{ userInfo.member_level || 0 }}</view>
</view>
</view>
<view class="member-service" @click="toOtherPage('/mine/MemberServe')">会员服务</view>
<view class="btn">
<view class="member-service" @click="toOtherPage('/mine/MemberServe')">会员服务</view>
<view class="member-service" @click="toOtherPage('/mine/Contact')">联系我们</view>
</view>
</view>
<view class="bottom">
<view @click="toOtherPage('/mine/GoodsCollection')">
@ -83,6 +86,10 @@
<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 class="more-tool">
@ -100,11 +107,19 @@
<image src="/static/image/mine/16.png"></image>
<view>使用帮助</view>
</view>
<view @click="toOtherPage('/more/Complaints')">
<view class="badge-box" @click="toOtherPage('/more/Complaints')">
<image src="/static/image/mine/15.png"></image>
<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>
@ -117,8 +132,8 @@ export default {
computed: {
...mapState(['hasLogin', 'token'])
},
data() {
return {
data() {
return {
userInfo: {},
orderList: [
{
@ -158,13 +173,14 @@ export default {
},
{
name: 'refund',
title: '售后',
title: '退款售后',
img: '/static/image/mine/9.png',
link: '/order/Index?current=7',
number: '',
},
]
};
],
offset: [-10,6]
};
},
filters: {
phoneFormat(value) {
@ -178,9 +194,9 @@ export default {
url: "../../pageA/login/login"
})
} else {
this.getOrderNumber();
this.getOrderNumber();
this.getUserInfo();
}
}
},
onNavigationBarButtonTap(e) {
// console.log(e);
@ -191,8 +207,8 @@ export default {
this.$u.api.getMemberInfo().then(res => {
// uni.stopPullDownRefresh();
if (res.errCode == 0) {
// this.userInfo = res.data.MemberArray;
this.$set(this, 'userInfo', res.data.MemberArray);
this.userInfo = res.data.MemberArray;
// this.$set(this, 'userInfo', res.data.MemberArray);
}
})
},
@ -215,7 +231,10 @@ export default {
uni.navigateTo({
url: '/pageE' + url
});
}
},
toCartPage() {
this.$u.route('/pageC/cart/index');
},
}
};
</script>
@ -227,6 +246,7 @@ export default {
// width: 100%;
height: 272rpx;
background-color: #FF7807;
position: relative;
.top {
padding: 40rpx 0 0 30rpx;
display: flex;
@ -283,27 +303,34 @@ export default {
}
}
}
.member-service {
height: 52rpx;
line-height: 52rpx;
box-sizing: content-box;
margin-left: auto;
padding: 0 51rpx 0 22rpx;
background: rgba(255,255,255,0.32);
border-radius: 26rpx 0 0 26rpx;
font-size: 26rpx;
color:rgba(51,51,51,1);
.btn {
position: absolute;
right: 0;
top: 43rpx;
.member-service {
height: 52rpx;
line-height: 52rpx;
box-sizing: content-box;
padding: 0 51rpx 0 22rpx;
background: rgba(255,255,255,0.32);
border-radius: 26rpx 0 0 26rpx;
font-size: 26rpx;
color:rgba(51,51,51,1);
&:not(:last-child) {
margin-bottom: 20rpx;
}
}
}
}
.bottom {
display: flex;
justify-content: space-around;
padding: 0 10rpx;
padding: 0 10rpx;
box-sizing: border-box;
> view {
text-align: center;
font-size: 26rpx;
font-weight: 500;
font-weight: 500;
color: #333;
> view:first-child {
margin-bottom: 10rpx;
@ -328,15 +355,15 @@ export default {
display: flex;
align-items: center;
height: 76rpx;
padding: 0 20rpx;
padding: 0 20rpx;
font-size: 28rpx;
color: #666;
border-bottom: 1px solid #ececec;
border-bottom: 1px solid #ececec;
}
.title-text-more {
font-size: 24rpx;
color: #999;
}
.title-text-more {
font-size: 24rpx;
color: #999;
}
.content {
padding: $content-padding-top $content-padding-row $content-padding-bottom;
display: flex;
@ -377,7 +404,7 @@ export default {
}
}
.content {
align-items: center;
align-items: center;
justify-content: space-between;
> view {
display: flex;
@ -428,7 +455,7 @@ export default {
> view:nth-child(6){
@include image-size($image-width: 33rpx, $image-height: 35rpx);
.order-num {
left: 24rpx;
left: 44rpx;
}
}
}
@ -446,11 +473,11 @@ export default {
width: 100rpx;
}
> view:not(:last-child) {
margin-right: 36rpx;
margin-right: 16rpx;
}
}
}
.more-tool {
.more-tool {
@include common-mine(
$content-padding-top: 24rpx,
$content-padding-row: 20rpx,
@ -463,9 +490,12 @@ export default {
width: 100rpx;
}
> view:not(:last-child) {
margin-right: 36rpx;
margin-right: 16rpx;
}
}
.badge-box {
position: relative;
}
}
}
}

View File

@ -17,7 +17,7 @@
<u-swiper :list="list" mode="dot" @click="clickImage"></u-swiper>
</view>
<view class="chengnuo">
<view>
<!-- <view>
<image src="/static/image/shop/4.png"></image>
<text>免费洗衣</text>
</view>
@ -32,6 +32,10 @@
<view>
<image src="/static/image/shop/7.png"></image>
<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 class="fenlei">
@ -46,7 +50,7 @@
<!-- 拼团列表 -->
<group></group>
<view class="activity-view">
<image class="lingquan" :src="activityInfo.adv_code" @click="jumpPage({ 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>
<!-- 优惠券 -->
<youhq></youhq>
@ -95,12 +99,14 @@
pinTuanPush: {}, //
activityInfo: {},
areaList: [], //
tips:[]
}
},
onLoad() {
this.getShopTopList();
this.getLocation(); //
this.getStoreActivity();
this.gettips()
// this.area = uni.getStorageSync("address") || "";
},
onShow() {
@ -110,6 +116,21 @@
this.getAllLoaction(); //
},
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() {
// console.log(123)
this.$u.route({
@ -190,10 +211,11 @@
},
clickImage(index) {
// console.log(this.list[index]);
let item = this.list[index];
let item = this.list[index];
this.jumpPage({
type: item.url_type,
id: item.info_id,
id: item.info_id,
adv_id: item.adv_id,
});
},
//
@ -223,6 +245,7 @@
},
jumpPage(uri) {
// console.log(uri);
this.$u.api.advClick({ adv_id: uri.adv_id });
common.jumpPage({ type: uri.type, id: uri.id });
}
},
@ -328,7 +351,7 @@
z-index: 9;
position: fixed;
right: 30rpx;
bottom: 300rpx;
bottom: 110rpx;
width: 100rpx;
height: 100rpx;
background: rgba(253, 211, 96, 1);

View File

@ -1,6 +1,6 @@
<template>
<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>
<view class="user" :style="{'top': top}">
@ -18,7 +18,7 @@
<view class="hot" :style="{'top': top + 10 * rpx}">
<text class="hottext">{{room.onlineUsers.users.length}}</text>
</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>
<view class="danmufasongbox" @click="danmu = $store.state.hasLogin">
@ -29,7 +29,7 @@
<!-- <image class="liketap" src="../../static/like.png" @click=""> -->
<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)">
<text style="font-size:24rpx;color:#fff">发送</text>
</view>
@ -96,7 +96,9 @@
border-bottom-width: 2rpx;
border-style: solid;
border-color: #ECECEC;
/* #ifndef APP-PLUS-NVUE */
display: flex;
/* #endif */
flex-direction: row;
align-items: center;
justify-content: space-between;
@ -124,7 +126,9 @@
border-bottom-width: 2rpx;
border-style: solid;
border-color: #ECECEC;
/* #ifndef APP-PLUS-NVUE */
display: flex;
/* #endif */
flex-direction: row;
align-items: center;
}
@ -183,7 +187,9 @@
border-radius: 30rpx;
}
.userlist{
/* #ifndef APP-PLUS-NVUE */
display: flex;
/* #endif */
flex-direction: row-reverse;
width: 150rpx;
height: 60rpx;
@ -205,7 +211,9 @@
text-overflow: ellipsis;
}
.userinfo {
/* #ifndef APP-PLUS-NVUE */
display: flex;
/* #endif */
flex-direction: column;
width: 100rpx;
margin-left: 20rpx;
@ -240,7 +248,9 @@
left: 30rpx;
width: 308rpx;
height: 70rpx;
/* #ifndef APP-PLUS-NVUE */
display: flex;
/* #endif */
align-items: center;
border-radius: 35rpx;
overflow: hidden;
@ -309,11 +319,16 @@
position: fixed;
left: 30rpx;
bottom: 118rpx;
width: 690rpx;
}
.danmuitem{
font-size: 26rpx;
font-size: 30rpx;
color: #fff;
flex-direction: column-reverse;
/* #ifndef APP-PLUS-NVUE */
word-wrap:anywhere;
/* #endif */
font-weight: bold;
}
</style>
@ -335,7 +350,8 @@ export default {
danmu:false,
room:{},
chatRoomService:{},
danmulist:[]
danmulist:[],
videoContext:{}
};
},
onBackPress(options) {
@ -344,8 +360,11 @@ export default {
});
return false;
},
onShow(){
this.videoContext.play()
},
onLoad(a) {
this.videoContext = uni.createVideoContext('myVideo')
this.url = a.url;
this.id = a.id
console.log(this.url);
@ -412,6 +431,7 @@ export default {
"Authorization" : 'Bearer' + " " + token
},
success(res){
console.log(res)
that.info = res.data.data
// that.list= res.data.data
@ -428,6 +448,7 @@ export default {
that.room = that.chatRoomService.room;
that.chatRoomService.initialWhenOnlineUserChange(that.newpeople)
that.chatRoomService.initialWhenNewMessage(that.whenNewMessage);
that.chatRoomService.jieshuzhibo = this.jieshu;
this.$forceUpdate();
console.log(that.room)
@ -440,8 +461,25 @@ export default {
this.chatRoomService.quitRoom();
},
methods:{
jieshu(text){
console.log(text)
uni.showModal({
title: '提示',
content: text.content,
showCancel:false,
success: function (res) {
uni.navigateBack({
delta: 1
});
}
});
},
errors(a){
console.log(a)
this.videoContext.stop();
setTimeout(() => {
this.videoContext.play()
},1000)
console.log(a)
},
newpeople(list){
this.room.onlineUsers = list
@ -477,6 +515,11 @@ export default {
// this.contentPosition = 'message-box'+(this.room.messages.length-1);
// }, 300)
console.log(message)
if(message.type == 1){
console.log('stop')
return ;
}
this.danmulist.push(message)
if(this.danmulist.length > 7){
@ -520,9 +563,9 @@ export default {
header:{
"Authorization" : 'Bearer' + " " + token
},
success(res){
console.log(res)
that.info = res.data.data;
success(a){
console.log(a)
that.info = a.data.data;
uni.showToast({
title: res.data.message,
icon: "none"
@ -536,6 +579,23 @@ export default {
},
xuanzhong(i){
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({
url: `/pageB/sdetails/index?id=${that.list[i].goods_id}&type=1`
});

Binary file not shown.

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

View File

@ -62,7 +62,7 @@ function ChatRoomService(room, user) {
//获取实例
ChatRoomService.prototype.connectGoEasyIM = function () {
this.im = GoEasyIM.getInstance({
appkey: 'BC-453aa755c4ea48148abefc55a86df283',
appkey: 'BC-d9b5e639006b4ee2a4bc9eddc4235a6a',
host: 'hangzhou.goeasy.io'
});

Binary file not shown.

BIN
static/image/common/33.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1008 B

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.7 KiB

After

Width:  |  Height:  |  Size: 3.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.9 KiB

After

Width:  |  Height:  |  Size: 3.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 8.1 KiB

After

Width:  |  Height:  |  Size: 3.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 7.6 KiB

After

Width:  |  Height:  |  Size: 3.0 KiB

BIN
static/image/mine/41.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.8 KiB

BIN
static/image/mine/42.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.3 KiB

BIN
static/image/mine/43.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 665 B

BIN
static/image/mine/44.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.5 KiB

BIN
static/image/mine/45.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

BIN
static/image/mine/46.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

BIN
static/image/mine/47.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 30 KiB

View File

@ -8,6 +8,8 @@
import GoEasyIM from './goeasy-im-1.0.9';
// import GoEasyIM from './goeasy-im-1.1.1';
import restApi from './restapi';
import music from './music.mp3'
function Friend(uuid, name, avatar,time = "", text = "",date = "",unReadMessage = 0) {
this.uuid = uuid;
@ -36,7 +38,7 @@ function CurrentUser(uuid, name, avatar) {
function IMService() {
this.im = GoEasyIM.getInstance({
host:'hangzhou.goeasy.io',//qos=1
appkey:'BC-453aa755c4ea48148abefc55a86df283'
appkey:'BC-d9b5e639006b4ee2a4bc9eddc4235a6a'
});
this.status = false
this.lianjie = false
@ -52,6 +54,8 @@ function IMService() {
//群聊消息记录map格式每个群对应一个数组
this.groupMessages = {};
this.uid = 0;
/*
* 监听器们
@ -73,6 +77,8 @@ function IMService() {
//群列表发生改变
this.onGroupListChange = function (groups) {};
//结束直播
this.jieshuzhibo = function(messages){}
this.whenNewMessage = function () {
@ -283,6 +289,14 @@ IMService.prototype.initialIMListeners = function () {
friends.sort(paixu)
}
if(message.senderId != this.uid){
const innerAudioContext = uni.createInnerAudioContext();
innerAudioContext.autoplay = true;
innerAudioContext.src = music;
innerAudioContext.onPlay(() => {
console.log('开始播放');
});
}
let that = this
if(!friend && friend == undefined){
@ -773,6 +787,11 @@ IMService.prototype.initialWhenOnlineUserChange = function (whenOnlineUserChange
IMService.prototype.listenerNewMessage = function () {
this.im.on(GoEasyIM.EVENT.GROUP_MESSAGE_RECEIVED, (message) => {
console.log(message)
if(message.senderId == 0){
this.jieshuzhibo(JSON.parse(message.payload.text));
return;
}
var content = JSON.parse(message.payload.text);
this.addNewMessage(message);
this.whenNewMessage(content);

Binary file not shown.

BIN
static/music.mp3 Normal file

Binary file not shown.

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.7 MiB

After

Width:  |  Height:  |  Size: 1.0 MiB