Compare commits

...

208 Commits
wpf ... master

Author SHA1 Message Date
mkm
d3c0eece63 Merge pull request 'new' (#3) from new into master
Reviewed-on: #3
2024-01-28 21:31:00 +08:00
weipengfei
39390d232a 更新 2024-01-27 18:42:08 +08:00
weipengfei
eae451bf17 Merge branch 'new' of https://gitea.lihaink.cn/mkm/nk-shop2.0 into new 2024-01-27 18:31:03 +08:00
weipengfei
4a305a8284 更新 2024-01-27 18:30:56 +08:00
weipengfei
4dab876322 更新 2024-01-27 18:25:33 +08:00
zmj
b963704657 农户信息表单收集 2024-01-27 18:23:47 +08:00
weipengfei
cc453c8d4e 更新 2024-01-27 15:43:36 +08:00
weipengfei
0c97fe7020 更新 2024-01-26 18:46:15 +08:00
weipengfei
3d983049e8 更新 2024-01-26 14:45:28 +08:00
weipengfei
9363d3a413 更新 2024-01-26 13:58:33 +08:00
weipengfei
881dbcc501 更新 2024-01-26 10:38:57 +08:00
weipengfei
38de673847 更新 2024-01-25 18:16:14 +08:00
weipengfei
81e4daacd5 更新 2024-01-25 16:42:46 +08:00
weipengfei
06b92e8206 更新 2024-01-25 11:01:27 +08:00
weipengfei
08742b5870 更新 2024-01-24 18:22:31 +08:00
weipengfei
8b147d461c 更新 2024-01-24 18:14:40 +08:00
weipengfei
28537e7181 更新 2024-01-24 17:58:31 +08:00
weipengfei
c1c342d504 更新 2024-01-24 16:44:33 +08:00
weipengfei
bcd7e001c4 更新活动 2024-01-23 19:58:11 +08:00
weipengfei
61083bc7b1 新增两元专区功能 2024-01-23 11:36:51 +08:00
weipengfei
ebb0a5462f 更新 2024-01-23 11:36:17 +08:00
weipengfei
94377b4afd 更新 2024-01-22 18:51:10 +08:00
weipengfei
f2940b9c8a 更新 2024-01-22 17:28:31 +08:00
weipengfei
1958afbda0 更新 2024-01-22 00:33:59 +08:00
weipengfei
0c03d067db 更新 2024-01-21 23:52:59 +08:00
weipengfei
a1fa0c4f15 更新 2024-01-21 23:52:07 +08:00
weipengfei
faf1d479ab 更新 2024-01-21 23:40:10 +08:00
weipengfei
072cdd2cec 更新 2024-01-21 23:22:39 +08:00
weipengfei
0930807eff 更新 2024-01-21 20:39:54 +08:00
weipengfei
d3bd273bdd 更新 2024-01-21 20:05:53 +08:00
weipengfei
b19256d9c8 更新 2024-01-21 19:58:09 +08:00
weipengfei
51fc59d272 更新 2024-01-21 18:59:41 +08:00
weipengfei
0141fcc6b2 更新 2024-01-20 18:39:15 +08:00
weipengfei
4d258a0c2e 更新 2024-01-20 18:27:30 +08:00
weipengfei
5ab6141612 更新订单结算页面 2024-01-20 11:13:01 +08:00
weipengfei
4ce99e4abf 更新图片 2024-01-20 10:45:44 +08:00
weipengfei
b0663749e4 更新 2024-01-19 18:40:55 +08:00
weipengfei
2755927c6d 更新 2024-01-19 18:10:45 +08:00
weipengfei
69ddd11bf7 更新 2024-01-19 17:40:30 +08:00
weipengfei
1ff8f6c355 图片 2024-01-19 17:33:44 +08:00
weipengfei
c360adf281 更新 2024-01-19 17:33:27 +08:00
weipengfei
8555bf884a 更新 2024-01-18 17:45:52 +08:00
weipengfei
4739a33a9a 2024-01-15 20:38:01 +08:00
weipengfei
f36d6d553a 更新 2024-01-15 10:00:03 +08:00
weipengfei
40c21cef29 更新 2024-01-13 18:14:22 +08:00
weipengfei
2b3fc277f7 更新 2024-01-12 18:23:15 +08:00
weipengfei
289e68b756 新增个人入驻 2024-01-12 10:28:03 +08:00
weipengfei
6817d15b7e 修复定位精度问题, 全部采用系统定位 2024-01-10 17:48:02 +08:00
weipengfei
a23c9b3e46 更新 2024-01-09 16:33:07 +08:00
weipengfei
35958a4b26 更新 2024-01-04 19:20:35 +08:00
weipengfei
027e0a0856 更新 2024-01-04 18:55:15 +08:00
weipengfei
edf84fd9f4 更新 2024-01-02 18:01:54 +08:00
weipengfei
da7329c8b3 更新 2023-12-29 19:29:12 +08:00
weipengfei
710572e2a7 更新 2023-12-29 18:21:52 +08:00
weipengfei
bc87f30948 更新 2023-12-29 18:00:13 +08:00
weipengfei
dbe08640e9 更新 2023-12-28 18:04:37 +08:00
weipengfei
399b23d44f 更新 2023-12-27 17:29:55 +08:00
weipengfei
d73cd892ea 更新 2023-12-26 18:04:41 +08:00
weipengfei
1452292f81 更新 2023-12-25 18:56:44 +08:00
weipengfei
dbf2da56e4 更新 2023-12-25 16:25:03 +08:00
weipengfei
d94cf09c99 提交 2023-12-23 18:30:11 +08:00
weipengfei
28bfe2ace3 更新 2023-12-23 14:47:33 +08:00
weipengfei
1a05002050 更新 2023-12-23 10:01:16 +08:00
weipengfei
558e4844c6 更新 2023-12-22 18:34:17 +08:00
weipengfei
9dd0c2af11 更新 2023-12-20 15:06:52 +08:00
weipengfei
3176a0624a 更新 2023-12-16 09:58:35 +08:00
weipengfei
b0e2e385d0 更新 2023-12-15 18:40:50 +08:00
weipengfei
15265e8f87 更新 2023-12-14 11:32:24 +08:00
weipengfei
0e0cc53992 更新了订单状态显示错误的问题 2023-12-13 10:14:21 +08:00
weipengfei
591100a8b7 更新功能修复bug 2023-12-12 18:11:46 +08:00
weipengfei
6a74a4a33e 提升版本号 2023-12-11 10:46:36 +08:00
weipengfei
4b1d003905 更新优化定位, 推荐商品 2023-12-05 10:29:47 +08:00
weipengfei
c6a95fd7e2 更新地址选择 2023-12-04 18:34:47 +08:00
weipengfei
b561aac302 更新云市场 2023-12-04 16:42:18 +08:00
weipengfei
f9c2e90785 更新版本 2023-12-04 10:36:53 +08:00
weipengfei
78d4ad773a 修复选择位置后各个页面定位不统一的问题 2023-12-04 09:16:50 +08:00
weipengfei
de944d0ed9 修复了商户入驻时所在位置信息丢失bug 2023-12-02 16:18:31 +08:00
weipengfei
84e670a27b 更新 2023-11-30 13:35:52 +08:00
weipengfei
167354a8da 更新地图选择 2023-11-24 18:46:37 +08:00
weipengfei
102ee13e26 新增地图选择地址, 云商品地址全部使用新版地图选择 2023-11-24 17:17:31 +08:00
weipengfei
7dfa103d12 修复编辑商户入驻申请时没有合同的bug 2023-11-21 16:45:55 +08:00
weipengfei
33b08c8074 修复不同尺寸屏幕文字显示会被省略的问题 2023-11-21 11:10:09 +08:00
weipengfei
3227c7bf8a Merge branch 'old' of https://gitea.lihaink.cn/mkm/nk-shop2.0 into old 2023-11-21 10:56:02 +08:00
weipengfei
8cab22e4a6 修改商户入驻功能 2023-11-21 10:55:54 +08:00
jia
0712895bea Merge branch 'old' of https://gitea.lihaink.cn/mkm/nk-shop2.0 into old 2023-11-21 09:17:24 +08:00
jia
035badff12 oa 2023-11-21 09:16:05 +08:00
weipengfei
da010bf09d 更新了我的页面第一次进入缺少商家入驻 2023-11-20 18:37:58 +08:00
weipengfei
494427d94c 更新版本 2023-11-18 19:02:06 +08:00
weipengfei
9ac27fc4aa 优化APP打开速度, 新增启动页面 2023-11-18 15:13:10 +08:00
weipengfei
cc27ddd0f9 更新 2023-11-18 11:36:14 +08:00
weipengfei
875d740455 更新版本号 2023-11-17 19:32:04 +08:00
weipengfei
14b1036df8 添加商品分类 2023-11-17 15:39:45 +08:00
weipengfei
98b71c77b9 更新地址选择 2023-11-17 15:38:38 +08:00
weipengfei
2a7a95c5a7 更新商品购买多规格选择 2023-11-17 15:38:21 +08:00
weipengfei
62ca7da81b 新增定位页面 2023-11-16 19:09:57 +08:00
weipengfei
8beb5a3d8b 隐藏返回按钮悬浮球<home> 2023-11-16 09:45:29 +08:00
weipengfei
72d91272fb 更新商品卡片样式 2023-11-16 09:06:03 +08:00
weipengfei
f8f958e4a7 新增核销过的核销码无法使用 2023-11-15 19:09:02 +08:00
weipengfei
22962e3dcd 优化开发票功能 2023-11-15 17:58:30 +08:00
weipengfei
cfbf1f93a7 更新功能,修复bug 2023-11-15 17:05:21 +08:00
weipengfei
3852b76375 优化页面效果 2023-11-14 18:42:29 +08:00
weipengfei
fbb2cfbdb4 新增市级供应链入驻无需阅读协议 2023-11-14 16:07:02 +08:00
weipengfei
b55a573aa8 新增邀请码 2023-11-14 14:48:41 +08:00
weipengfei
e19212c632 更新 2023-11-14 11:12:17 +08:00
weipengfei
4b0dbfddc4 更新优化 2023-11-14 10:11:26 +08:00
weipengfei
1ee574eb6e 更新版本 2023-11-14 10:11:11 +08:00
weipengfei
1f99af550c 更新功能 2023-11-13 18:42:30 +08:00
weipengfei
6abc6ef833 修复bug 2023-11-13 17:58:03 +08:00
weipengfei
9126f44765 更新功能 2023-11-11 18:40:57 +08:00
weipengfei
2df7fe1658 调整云市场, 云商品功能 2023-11-10 18:02:22 +08:00
weipengfei
b5d9be778e 更新 2023-11-10 18:02:00 +08:00
weipengfei
d87a8929a9 云市场按地址排序 2023-11-10 10:04:25 +08:00
weipengfei
61abdaa696 新增点击检查版本更新 2023-11-10 10:03:54 +08:00
weipengfei
7eb567e1af 隐藏农业智能感知平台, 里海直播 2023-11-10 09:23:58 +08:00
weipengfei
9842f44f76 更新优化 2023-11-09 19:19:34 +08:00
weipengfei
7a0ab4e936 更新版本号 2023-11-09 16:00:26 +08:00
weipengfei
60da2c5088 优化websockt连接地址 2023-11-09 16:00:10 +08:00
weipengfei
0f201d3269 修复页面背景色不一样的问题 2023-11-09 15:59:44 +08:00
weipengfei
cda3a1cbc3 优化页面没有云商品时的提示 2023-11-08 16:34:42 +08:00
weipengfei
a5b11d545d 更新供销店铺和商品的推荐逻辑,优化页面效果 2023-11-08 16:30:19 +08:00
weipengfei
f43ef06ff0 更新优化 2023-11-08 12:00:24 +08:00
weipengfei
f63e22e9ba 更新优化,修复bug 2023-11-08 10:56:26 +08:00
weipengfei
228e515985 修复bug 2023-11-08 09:31:10 +08:00
weipengfei
6480227fd3 更新优化 2023-11-07 18:46:26 +08:00
weipengfei
44421c4ded 更新部分功能 2023-11-07 09:23:38 +08:00
weipengfei
f94284f460 修复bug 2023-11-06 16:40:08 +08:00
weipengfei
55f27158dc 修复bug 2023-11-06 16:00:12 +08:00
weipengfei
ed7686a99c 更新定位的的经纬度精度 2023-11-06 09:38:59 +08:00
weipengfei
160fae671e 修复供销页面月份错误的问题 2023-11-06 09:30:10 +08:00
wpf
b00e2cd3c6 更新版本号 2023-11-05 20:40:51 +08:00
wpf
f7313b878e Merge branch 'old' of https://gitea.lihaink.cn/mkm/nk-shop2.0 into old 2023-11-05 20:26:07 +08:00
wpf
d2236131e5 云仓接口添加经纬度参数 2023-11-05 20:21:32 +08:00
shengchanzhe
889e553cc2 更新 2023-11-05 18:48:36 +08:00
shengchanzhe
57ef10088c 更新 2023-11-05 16:12:52 +08:00
wpf
c0b9dc0c68 更新 2023-11-05 11:09:34 +08:00
weipengfei
ff1f7e3728 更新 2023-11-04 20:05:33 +08:00
weipengfei
4d0999b7ee Merge branch 'zmj' of https://gitea.lihaink.cn/mkm/nk-shop2.0 into old 2023-11-04 19:25:26 +08:00
weipengfei
8105e633d4 修复bug 2023-11-04 19:24:57 +08:00
zmj
16cd0a9ad4 Merge branch 'old' of https://gitea.lihaink.cn/mkm/nk-shop2.0 into zmj 2023-11-04 19:19:33 +08:00
zmj
f752d2cc21 更新 2023-11-04 19:18:29 +08:00
weipengfei
b2ca9716b7 更新设置收货地址 2023-11-03 11:48:12 +08:00
zmj
e3850dd2f9 拉取old 2023-11-02 16:16:29 +08:00
weipengfei
b15ec15437 新增图片 2023-11-02 10:25:40 +08:00
weipengfei
6461af639d Merge branch 'old' of https://gitea.lihaink.cn/mkm/nk-shop2.0 into old 2023-11-01 17:47:50 +08:00
weipengfei
5cedc225bc 更新小程序部分功能 2023-11-01 17:47:43 +08:00
jia
6c7f2902c5 Merge branch 'old' of https://gitea.lihaink.cn/mkm/nk-shop2.0 into old 2023-10-31 20:42:34 +08:00
jia
12a0c23dbd 直播修改 2023-10-31 20:41:15 +08:00
weipengfei
4a1e214501 Merge branch 'old' of https://gitea.lihaink.cn/mkm/nk-shop2.0 into old 2023-10-31 16:08:20 +08:00
weipengfei
536bce88af 更新 2023-10-31 16:08:08 +08:00
jia
48494458d2 直播界面及bug修改 2023-10-30 19:23:46 +08:00
jia
7e8b29b9b8 直播 2023-10-28 21:00:49 +08:00
weipengfei
d1050cc01d 修复店铺商品加载错误的问题 2023-10-28 17:43:43 +08:00
weipengfei
b8245eb162 供销综合云市场新增镇供应链,取消镇店铺框框显示 2023-10-27 20:25:03 +08:00
weipengfei
e412551130 商品编号修改为商品条码 2023-10-27 17:42:58 +08:00
weipengfei
3a547b90cd 修复定位不到时无法推荐的问题 2023-10-27 15:58:26 +08:00
weipengfei
1b9a98da38 供销新增区域无商品时推荐 2023-10-27 15:23:05 +08:00
weipengfei
3dd0926ae1 优化了商品详情页面图片压缩,展示有白边的问题 2023-10-27 15:22:06 +08:00
weipengfei
62f64fff63 更新 2023-10-26 18:43:31 +08:00
weipengfei
1415912ff7 Merge branch 'old' of https://gitea.lihaink.cn/mkm/nk-shop2.0 into old 2023-10-23 18:10:06 +08:00
weipengfei
80ca1eae29 更新页面配置 2023-10-23 18:09:14 +08:00
jia
5001e20329 api处理 2023-10-23 08:54:52 +08:00
weipengfei
ee95890478 修复bug 2023-10-20 18:45:05 +08:00
weipengfei
d238f98e66 更新H5访问域名设置 2023-10-19 16:39:44 +08:00
zmj
4683324b34 农业感知平台 2023-10-19 15:43:26 +08:00
weipengfei
73abf9c7d3 更新 2023-10-17 16:45:45 +08:00
weipengfei
7042cec438 新增根据角色类型判断是否显示AI大屏控制小程序 2023-10-16 18:09:12 +08:00
weipengfei
db89bc4bc5 覆盖 2023-10-16 14:52:00 +08:00
weipengfei
c8d5d2f0aa Merge branch 'old' of https://gitea.lihaink.cn/mkm/nk-shop2.0 into old 2023-10-16 14:49:03 +08:00
weipengfei
5cb13ccc8a 新增大屏控制 2023-10-16 14:48:56 +08:00
weipengfei
75ffe4f6af 修复app白屏bug 2023-10-16 14:48:33 +08:00
weipengfei
7f80e857d1 更新 2023-10-16 11:24:19 +08:00
jia
fbcd367cc6 协议更新 2023-10-13 18:35:37 +08:00
jia
b1afe0e384 协议修改 2023-10-13 18:12:34 +08:00
weipengfei
11bff270b3 Merge branch 'old' of https://gitea.lihaink.cn/mkm/nk-shop2.0 into old 2023-10-10 10:31:51 +08:00
weipengfei
2d85706baf 修复编辑商品数据回显有误的bug 2023-10-10 10:31:43 +08:00
jia
96ae908f11 api以及商户设置修改 2023-10-09 19:36:17 +08:00
weipengfei
7322947eca 修复了切换类型时图片有概率不更新的bug 2023-10-09 19:13:50 +08:00
weipengfei
2429f37789 修复无法分页与商品列表返回错误的bug 2023-10-09 18:19:42 +08:00
jia
83d548fd58 界面优化 2023-10-08 18:36:35 +08:00
weipengfei
c2dee85054 更新搜索框样式 2023-10-08 16:25:06 +08:00
jia
26d7bd0d67 登录界面修改 2023-10-08 09:36:36 +08:00
jia
95ab97bd23 修改进货管理页面 2023-10-08 09:19:46 +08:00
weipengfei
9d9b6e9278 Merge branch 'old' of https://gitea.lihaink.cn/mkm/nk-shop2.0 into old 2023-10-08 09:18:36 +08:00
weipengfei
f9a27e46d7 更新提示 2023-10-08 09:18:17 +08:00
weipengfei
f4858dcf1a 优化调整 2023-10-08 09:17:24 +08:00
jia
a6ac36d738 屏蔽功能 2023-10-08 09:11:15 +08:00
jia
836a2a3b0f 还原配置 2023-10-07 19:49:27 +08:00
jia
574c7caa2e 评论 、生产 、以及供应界面加入小程序修改 2023-10-07 19:16:47 +08:00
weipengfei
3918c3bbbf 修复商品详情显示的bug 2023-10-07 18:17:18 +08:00
weipengfei
c0af6e22ac Merge branch 'old' of https://gitea.lihaink.cn/mkm/nk-shop2.0 into old 2023-10-07 15:05:35 +08:00
weipengfei
3514231ffa 修复bug 2023-10-07 15:05:28 +08:00
jia
9fa25106c1 文章中心处理 2023-10-07 11:54:54 +08:00
jia
4529f209ca app视频处理 2023-10-07 11:41:00 +08:00
jia
11c8d1fdd1 h5视频处理及客服聊天界面优化 2023-10-07 11:36:08 +08:00
jia
635a166bf5 搜索优化 2023-10-07 09:49:22 +08:00
jia
39a7183def 评论更新 2023-10-07 09:37:28 +08:00
shengchanzhe
9e3fe4896c 前端修复 2023-10-02 15:36:52 +08:00
jia
00d5ba822b 商户拒绝 2023-09-28 18:37:43 +08:00
jia
547e71d4ee 商城字体文件 2023-09-28 17:40:47 +08:00
jia
0d7a893e59 订单核销功能处理 2023-09-28 17:18:39 +08:00
weipengfei
3420bbbe48 调整页面图片大小 2023-09-28 17:16:08 +08:00
weipengfei
e7f374c5b6 提交 2023-09-28 17:04:46 +08:00
weipengfei
25a31e754c Merge branch 'old' of https://gitea.lihaink.cn/mkm/nk-shop2.0 into old 2023-09-28 17:03:04 +08:00
weipengfei
7ed74b2f7d 修改云仓背景图片大小 2023-09-28 17:01:38 +08:00
weipengfei
9ec1b283a1 修复bug 2023-09-28 17:01:10 +08:00
THK3121
9ee9d2af52 bug 2023-09-28 15:41:02 +08:00
jia
e532b9e288 支付失败提示 2023-09-28 14:33:43 +08:00
jia
495e2a20dc 生产 2023-09-28 14:12:10 +08:00
206 changed files with 37365 additions and 6807 deletions

34
App.vue
View File

@ -74,16 +74,23 @@
...uni.getStorageSync('GLOBAL_DATA') || {}
},
onLaunch: function(option) {
// #ifdef H5
uni.setTabBarItem({
index: 1,
visible: false
})
// #endif
this.globalData.statusBarHeight = uni.getSystemInfoSync().statusBarHeight + 'px';
this.globalData.uid = this.$store.state.app.uid;
let appkey = uni.getStorage({
key: 'launchFlag'
})
if (appkey) {
setTimeout(() => {
this.$store.dispatch('INIT_CONFIG');
}, 6000)
}
// let appkey = uni.getStorage({
// key: 'launchFlag'
// })
// if (appkey) {
// setTimeout(() => {
// this.$store.dispatch('INIT_CONFIG');
// }, 6000)
// }
this.$store.dispatch('INIT_CONFIG');
// #ifdef APP-PLUS
//uniMP
@ -161,7 +168,7 @@
jpushModule.initJPushService()
jpushModule.addConnectEventListener(result => {
let connectEnable = result.connectEnable
console.log("jpush连接", connectEnable)
// console.log("jpush", connectEnable)
})
@ -219,7 +226,6 @@
},
onShow() {
@ -350,9 +356,9 @@
});
},
//
setOpenShare: function(data) {
// #ifdef H5
let that = this;
let href = location.href;
href = href.indexOf("?") === -1 ? href + "?spid=" + this.globalData.uid : href + "&spid=" + this
@ -368,6 +374,7 @@
that.$wechat.wechatEvevt(["updateAppMessageShareData", "updateTimelineShareData"],
configAppMessage);
}
// #endif
},
//
getConfigData() {
@ -419,7 +426,7 @@
this.setOpenShare(res.data);
// #endif
}).catch(err => {});
}
},
},
onHide: function() {
//console.log('App Hide')
@ -427,12 +434,14 @@
watch: {
// H5
$route(n) {
// #ifdef H5
if (this.$store.state.app.token) {
//
history({
page: location.pathname + location.search,
}).then(() => {});
}
// #endif
},
}
}
@ -444,6 +453,7 @@
@import 'static/iconfont/iconfont.css';
@import 'static/iconfont/iconlihai.css';
@import 'static/iconfont/icontan.css';
@import 'static/iconfont/demo.css';
@import 'static/css/style.scss';

View File

@ -261,4 +261,53 @@ export function spuTopList(data) {
return request.get(`product/spu/get_hot_ranking`, data, {
noAuth: true
});
}
}
// 活动列表
export function consumption(data) {
return request.get(`storeActivity/consumption`, data, {
noAuth: true
});
}
// 参加活动
export function chooseConsumption(data) {
return request.post(`storeActivity/choose`, data);
}
// 拉新红包活动完成状态
export function storeActivityStatus(data) {
return request.get(`storeActivity/status`, data);
}
// 领取红包
export function storeActivityReceive(data) {
return request.post(`storeActivity/receive`, data);
}
// 拉新红包活动完成状态
export function storeActivityRecord(data) {
return request.get(`storeActivity/record`, data);
}
// 红包余额统计
export function storeActivityTotal(data) {
return request.get(`storeActivity/total`, data);
}
// 生成二维码
export function storeActivityQrcode(data) {
return request.get(`qrcode`, data);
}
// 活动商品专区
export function storeActivityProduct(data) {
return request.get(`storeActivity/product`, data, {
noAuth: true
});
}
// 活动区域列表
export function storeActivityDistrict(data) {
return request.get(`storeActivity/district`, data);
}

View File

@ -7,6 +7,15 @@ import request from "@/utils/request.js";
export function cloudWarehouse(data) {
return request.get("store/product/cloudWarehouse", data, { noAuth: true });
}
/**
* 为你推荐
*
*/
export function spuRecommend(data) {
return request.get("product/spu/recommend", data, { noAuth: true });
}
/**
* 获取云仓分类
*
@ -293,20 +302,20 @@ export function brigade(data) {
}
/*
生产 -- 获取商户保证金信息支付接口
生产 -- 获取商户金信息支付接口
*/
export function paymerchant() {
return request.post(`user/margin`,{});
}
/*
生产 -- 获取商户保证金信息接口
生产 -- 获取商户金信息接口
*/
export function merchant(data) {
return request.get(`store/merchant/margin`, data);
}
//获取保证金缴纳列表
//获取金缴纳列表
export function marginlist(data) {
return request.get(`user/margin/list`,data);
}

151
api/live.js Normal file
View File

@ -0,0 +1,151 @@
import request from "@/utils/requestc.js";
import requesta from "@/utils/request.js";
/**
* 直播列表
*/
export function live(data) {
return request.get("zhibo/live" ,data);
}
/**
* 直播详情
*/
export function liveDetail(data) {
return request.get("zhibo/liveDetail" ,data);
}
/**
* 获取直播详情接口
*/
/**
* 创建直播间
*/
export function createPushLive(data) {
return request.post("zhibo/createPushLive", data);
}
/**
* 关闭直播间
*/
export function stopPushLive(data) {
return request.post("zhibo/stopPushLive", data);
}
/**
* 绑定用户client客户
*/
export function bindUser(data) {
return request.post("zhibo/bindUser", data);
}
/**
* 加入直播间聊天室
*/
export function joinChatRoom(data) {
return request.post("zhibo/joinChatRoom", data);
}
/**
* 直播间聊天室发言
*/
export function sendGroupMessage(data) {
return request.post("zhibo/sendGroupMessage", data);
}
//商品列表
export function good(data) {
return requesta.get("product/spu/lst", data);
}
/**
* 获取用户信息
*
*/
export function getUserInfo() {
return request.get('user');
}
//关注
export function getfans(id,data) {
return requesta.post('community/fans/'+id,data);
}
//我关注的人
export function getfocuslst(data) {
return requesta.post('community/focus/lst',data);
}
//关注我的人
export function getfanslst(data) {
return requesta.get('community/fans/lst',data);
}
//用户送礼
export function reward(data) {
return request.post('zhibo/reward',data);
}
//获取礼物
export function rewardList(data) {
return requesta.get('zhibo/rewardList',data);
}
//获取礼物
export function giftList(data) {
return request.get('zhibo/giftList',data);
}
//获取房间人数
export function liveAudience(data) {
return request.get('zhibo/liveAudience',data);
}
//获取用户余额
export function getuser(data) {
return requesta.get('user',data);
}
//送礼
export function sendGift(data) {
return request.post('zhibo/sendGift',data);
}
//获取主播关注人数
export function fansNum(data) {
return requesta.get('zhibo/fansNum',data);
}
/**
* 充值金额选择
*/
export function getRechargeApi() {
return requesta.get("common/recharge_quota");
}
//历史直播记录
export function playbackList(data) {
return request.get("zhibo/playbackList",data);
}
//获取直播回放详情
export function playbackDetail(data) {
return request.get("zhibo/playbackDetail",data);
}
//获取观众关注主播状态
export function getAjuser(id) {
return requesta.get(`community/user/info/${id}`);
}

View File

@ -320,4 +320,4 @@ export function intention(data) {
*/
export function intentionbus(data) {
return request.post(`intention/business`, data);
}
}

View File

@ -141,4 +141,12 @@ export function getNavigation(data) {
return request.get("navigation", data, {
noAuth: true
});
}
/*
小程序 -- 小程序列表
*/
export function applet(data) {
return request.get(`applet`, data);
}

View File

@ -3,9 +3,16 @@ import request from "@/utils/requesta.js";
export function getCityCloundShop(data) {
return request.get("city/get_cloud_shop", data);
}
export function getCategoryListLevel(data) {
return request.get("category/list_level", data);
}
export function cloudWarehouse(data) {
return request.get("store/product/cloudWarehouse", data);
}
export function townCloud(data) {
return request.get("store/product/town_cloud", data);
}
/**
* 供销市场标签
* @returns {*}

View File

@ -373,6 +373,14 @@ export function getHotBanner(type) {
export function create(data) {
return request.post("intention/create", data);
}
/**
* 个人入驻表单
* @returns {*}
*/
export function personalStore(data) {
return request.post("intention/personal_store", data);
}
/**
* 商户入驻短信验证码
* @returns {*}
@ -582,4 +590,22 @@ export function agreeiness(data) {
return request.get(`business/agree`, data, {
noAuth: true
});
}
/*
上传图片识别文字
*/
export function merchantLicenseIdentify(data) {
return request.post(`merchant_license_identify`, data, {
noAuth: true
});
}
/*
从供销平台获取村店铺负责人,联系电话
*/
export function getVillageInfo(data) {
return requestb.get(`shop_call/getVillageCompany`, data, {
noAuth: true
});
}

View File

@ -730,3 +730,8 @@ export function getBillDetil() {
export function merstreet(data) {
return request1.get(`company/street_company`, data);
}
//填写邀请码
export function bindPromotionCode(data) {
return request.post(`user/change/bind_promotion_code`, data)
}

95
components/Loading.vue Normal file
View File

@ -0,0 +1,95 @@
<template>
<div class="popup" v-if="isShow">
<div class="box">
<div class="loading"></div>
<p>{{str}}</p>
</div>
</div>
</template>
<script>
export default {
name: 'Loading',
data() {
return {
isShow: false,
str: '初始化中',
timer: null
};
},
mounted() {
uni.$on('showLoading', (type, str) => {
if (type == true) {
this.isShow = true;
this.str = str;
} else {
this.isShow = false;
}
})
},
methods: {
clickTow(){
}
},
};
</script>
<style scoped lang="scss">
.popup-enter-active,
.popup-leave-active {
transition: opacity 0.3s ease-in-out;
}
.popup-enter,
.popup-leave-to {
opacity: 0;
}
.popup {
position: fixed;
top: 0;
left: 0;
bottom: 0;
right: 0;
z-index: 99999999;
display: flex;
align-items: center;
justify-content: center;
flex-direction: column;
background-color: rgba(0, 0, 0, 0.2);
.box{
display: flex;
align-items: center;
justify-content: center;
flex-direction: column;
background-color: rgba(0, 0, 0, 0.5);
color: #eee;
height: 300rpx;
width: 300rpx;
border-radius: 20rpx;
box-sizing: border-box;
overflow: hidden;
}
}
.loading {
width: 80rpx;
height: 80rpx;
border: 6rpx solid #eee;
border-top-color: transparent;
border-radius: 100%;
margin-bottom: 30rpx;
animation: circle infinite 0.75s linear;
}
@keyframes circle {
0% {
transform: rotate(0);
}
100% {
transform: rotate(360deg);
}
}
</style>

View File

@ -162,10 +162,10 @@ export default {
itemTap(item) {
this.$emit('itemTap', item)
},
// item
goShop(item) {
this.$emit('goShop', item)
}
// item
goShop(item) {
this.$emit('goShop', item)
}
}
}
</script>

View File

@ -0,0 +1,195 @@
<template>
<view :class="'wf-page wf-page'+type">
<!-- left -->
<view>
<view id="left" v-if="leftList.length">
<view v-for="(item,index) in leftList" :key="index"
class="wf-item" @tap="itemTap(item)">
<WaterfallsFlowItemp :item="item" :isStore="isStore" :type="type" @goShop="goShop"/>
</view>
</view>
</view>
<!-- right -->
<view>
<view id="right" v-if="rightList.length">
<view v-for="(item,index) in rightList" :key="index"
class="wf-item" @tap="itemTap(item)">
<WaterfallsFlowItemp :item="item" :isStore="isStore" :type="type" @goShop="goShop"/>
</view>
</view>
</view>
</view>
</template>
<script>
import WaterfallsFlowItemp from '../WaterfallsFlowItem/WaterfallsFlowItemp.vue'
export default {
components: {
WaterfallsFlowItemp
},
props: {
//
wfList: {
type: Array,
require: true
},
updateNum: {
type: Number,
default: 10
},
type: {
type: Number,
default: 0
},
isStore: {
type: [String, Number],
default: '1'
},
},
data() {
return {
allList: [], //
leftList: [], //
rightList: [], //
mark: 0, //
boxHeight: [], // 01
};
},
watch: {
//
wfList: {
handler(nVal,oVal){
// 使
if (!this.wfList.length ||
(this.wfList.length === this.updateNum && this.wfList.length <= this.allList.length)) {
this.allList = [];
this.leftList = [];
this.rightList = [];
this.boxHeight = [];
this.mark = 0;
}
// waterfall
if (this.wfList.length) {
this.allList = this.wfList;
this.leftList = [];
this.rightList = [];
this.boxHeight = [];
this.allList.forEach((v, i) => {
if(this.allList.length < 3 || (this.allList.length <= 7 && this.allList.length - i > 1) || (this.allList.length > 7 && this.allList.length - i > 2)) {
if(i % 2){
this.rightList.push(v);
}else{
this.leftList.push(v);
}
}
});
if(this.allList.length < 3){
this.mark = this.allList.length+1;
}else if(this.allList.length <= 7){
this.mark = this.allList.length - 1;
}else{
this.mark = this.allList.length - 2;
}
if(this.mark < this.allList.length){
this.waterFall()
}
}
},
immediate: true,
deep:true
},
mounted(){
},
// item
mark() {
const len = this.allList.length;
if (this.mark < len && this.mark !== 0 && this.boxHeight.length) {
this.waterFall();
}
}
},
methods: {
//
waterFall() {
const i = this.mark;
if (i == 0) {
//
this.leftList.push(this.allList[i]);
//
this.getViewHeight(0);
} else if (i == 1) {
// item
this.rightList.push(this.allList[i]);
//
this.getViewHeight(1);
} else {
// item
if(!this.boxHeight.length){
this.rightList.length < this.leftList.length
? this.rightList.push(this.allList[i])
: this.leftList.push(this.allList[i]);
} else {
const leftOrRight = this.boxHeight[0] > this.boxHeight[1] ? 1 : 0;
if (leftOrRight) {
this.rightList.push(this.allList[i])
} else {
this.leftList.push(this.allList[i])
}
}
//
this.getViewHeight();
}
},
//
getViewHeight() {
// 使nextTick
this.$nextTick(() => {
setTimeout(()=>{
uni.createSelectorQuery().in(this).select('#right').boundingClientRect(res => {
res ? this.boxHeight[1] = res.height : '';
uni.createSelectorQuery().in(this).select('#left').boundingClientRect(res => {
res ? this.boxHeight[0] = res.height : '';
this.mark = this.mark + 1;
}).exec();
}).exec();
},100)
})
},
// item
itemTap(item) {
this.$emit('itemTap', item)
},
// item
goShop(item) {
this.$emit('goShop', item)
}
}
}
</script>
<style lang="scss" scoped>
$page-padding: 10px;
$grid-gap: 10px;
.wf-page {
display: grid;
grid-template-columns: 1fr 1fr;
grid-gap: $grid-gap;
}
.wf-item {
width: calc((100vw - 2 * #{$page-padding} - #{$grid-gap}) / 2);
padding-bottom: $grid-gap;
}
.wf-page1 .wf-item{
margin-top: 20rpx;
background-color: #fff;
border-radius: 20rpx;
padding-bottom: 0;
}
.wf-item-page{
padding-bottom: 20rpx;
}
</style>

View File

@ -49,7 +49,7 @@
<text class="tags_item ticket" v-if="item.issetCoupon">领券</text>
<text class="tags_item delivery" v-if="item.delivery_free == 1">包邮</text>
</view>
<view class="score">{{item.rate}}评分 {{item.reply_count}}条评论</view>
<view class="score">{{item.rate}}评分 {{item.reply_count}}条评论<text v-if="item.merchant" style="margin-left: 10rpx;">{{item.merchant.street_name}}</text></view>
<view class="company" v-if="item.merchant" @click.stop="goShop(item.merchant.mer_id)">
<text class="line1">{{item.merchant.mer_name}}</text>
<view class="flex" v-if="isStore != '1'">

View File

@ -25,18 +25,24 @@
<view class="relase-two">
{{item.reply_count}}评论
</view>
<view class="relase-two">
{{item.merchant&&item.merchant.distance}}
</view>
<view class="relase-two">
{{item.merchant&&item.merchant.street_name}}
</view>
</view>
<view class="price">
<span></span>{{item.price.split('.')[0]}}.<text>{{item.price.split('.')[1]}}</text>
</view>
<view class="item-info">
<!-- <view class="item-info">
<view class="info-title" style="margin-right: 10rpx;">
{{item.merchant.mer_name}}
</view>
<view class="info-img">
<image src="@/static/images/you.png" mode="aspectFit"></image>
</view>
</view>
</view> -->
</view>
</template>
@ -87,7 +93,8 @@
font-family: PingFang SC-Medium, PingFang SC;
font-weight: 500;
color: #333333;
margin: 12px 0;
margin: 14rpx 0;
margin-bottom: 0;
padding-right: 12rpx;
width: 100%;
overflow: hidden;
@ -144,9 +151,10 @@
.relase {
display: flex;
flex-wrap: wrap;
margin-left: 21rpx;
margin-top: 12rpx;
height: 26rpx;
min-height: 26rpx;
line-height: 26rpx;
.relase-one {
@ -156,7 +164,6 @@
font-family: SF Pro Display-Regular Italic, SF Pro Display;
font-weight: 600;
color: #FF6D20;
}
.relase-two {
@ -170,7 +177,7 @@
.price {
margin-left: 21rpx;
margin-bottom: 10rpx;
// margin-bottom: 10rpx;
color: #F84221;
font-size: 44rpx;
font-weight: 600;

View File

@ -0,0 +1,347 @@
<template>
<view v-if="type == 0" class="wf-item-page wf-page0" :style="viewColor">
<view class='pictrue'>
<easy-loadimage mode="widthFix" :image-src="item.image"></easy-loadimage>
<view v-if="item.stock == 0" class="sell_out">已售罄</view>
<view v-if="item.border_pic" :style="{ backgroundImage: `url(${item.border_pic})` }" class="border-picture"></view>
</view>
<view class="text">
<view class='name line2'>{{item.store_name}}</view>
<view class="acea-row row-middle">
<view class='money'><text class='num'>{{item.price}}</text></view>
</view>
<view v-if="item.show_svip_info && item.show_svip_info.show_svip_price && item.svip_price" class="acea-row row-middle svip">
<text class='vip-money'>{{item.svip_price}}</text>
<view class="vipImg">
<image src="/static/images/svip.png"></image>
</view>
</view>
<view class="item_tags">
<!-- <text v-if="item.product_type == 0 && item.merchant.type_name" class="font-bg-red b-color">{{item.merchant.type_name}}</text>
<text v-else-if="item.product_type == 0 && item.merchant.is_trader" class="font-bg-red b-color">自营</text> -->
<text v-if="item.product_type != 0" :class="'font_bg-red type'+item.product_type">{{item.product_type == 1 ? "秒杀" : item.product_type == 2 ? "预售" : item.product_type == 3 ? "助力" : item.product_type == 4 ? "拼团" : ""}}</text>
<text class="tags_item ticket" v-if="item.issetCoupon">领券</text>
<!-- <text class="tags_item delivery" v-if="item.delivery_free == 1">包邮</text> -->
</view>
</view>
</view>
<view v-else-if="type == 1" class="wf-page1" :style="viewColor">
<view class='pictrue'>
<easy-loadimage mode="widthFix" :image-src="item.image"></easy-loadimage>
<view v-if="item.stock == 0" class="sell_out">已售罄</view>
<view v-if="item.border_pic" :style="{ backgroundImage: `url(${item.border_pic})` }" class="border-picture"></view>
</view>
<view class='text'>
<view class='name line2'>{{item.store_name}}</view>
<view class='money'>
<text class='num'>{{item.price}}</text>
</view>
<view v-if="item.show_svip_info.show_svip && item.show_svip_info.show_svip_price" class="acea-row row-middle svip">
<text class='vip-money'>{{item.svip_price}}</text>
<view class="vipImg">
<image src="/static/images/svip.png"></image>
</view>
</view>
<view class="item_tags acea-row">
<!-- <text v-if="item.merchant.type_name && item.product_type == 0" class="font-bg-red b-color">{{item.merchant.type_name}}</text>
<text v-else-if="item.merchant.is_trader && item.product_type == 0" class="font-bg-red b-color">自营</text> -->
<text v-if="item.product_type != 0" :class="'font_bg-red type'+item.product_type">{{item.product_type == 1 ? "秒杀" : item.product_type == 2 ? "预售" : item.product_type == 3 ? "助力" : item.product_type == 4 ? "拼团" : ""}}</text>
<text class="tags_item ticket" v-if="item.issetCoupon">领券</text>
<!-- <text class="tags_item delivery" v-if="item.delivery_free == 1">包邮</text> -->
</view>
<view class="score">{{item.rate}}评分 {{item.reply_count}}条评论<text v-if="item.merchant" style="margin-left: 10rpx;">{{item.merchant.street_name}}</text></view>
<view class="company" v-if="item.merchant" @click.stop="goShop(item.merchant.mer_id)">
<text class="line1">{{item.merchant.village_name}}</text>
<!-- <view class="flex" v-if="isStore != '1'">
进店
<text class="iconfont icon-xiangyou"></text>
</view> -->
</view>
</view>
<!-- 返佣 -->
<block v-if="item.max_extension>0 && (item.product_type == 0 || item.product_type == 2)">
<view class="foot-bar">
<text class="iconfont icon-fenxiang"></text>
最高赚 ¥{{item.max_extension}}
</view>
</block>
</view>
</template>
<script>
import easyLoadimage from '@/components/easy-loadimage/easy-loadimage.vue'
import {mapGetters} from "vuex";
export default {
components:{easyLoadimage},
computed: mapGetters(['viewColor']),
props: {
item: {
type: Object,
require: true
},
type: {
type: Number|String,
default: 0
},
isStore: {
type: [String, Number],
default: '1'
},
isLogin: {
type: Boolean,
require: false
}
},
data(){
return {
}
},
methods: {
goShop(id) {
this.$emit('goShop', id);
},
authOpen(){
this.$emit('authOpen');
},
followToggle(item){
this.$emit('followToggle', item);
}
}
}
</script>
<style lang="scss" scoped>
.wf-item-page {
background: #fff;
overflow: hidden;
border-radius: 16rpx;
padding-bottom: 20rpx;
}
.wf-page0 .coupon{
background:rgba(255,248,247,1);
border:1px solid rgba(233,51,35,1);
border-radius:4rpx;
font-size:20rpx;
margin-left: 18rpx;
padding: 1rpx 4rpx;
}
.wf-page0 .pictrue{
width: 100%!important;
height: 345rpx;
position: relative;
/deep/image,/deep/.easy-loadimage,uni-image{
height: 345rpx;
border-radius: 16rpx 16rpx 0 0;
}
.border-picture {
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
border-radius: 16rpx 16rpx 0 0;
background: center/cover no-repeat;
}
}
.loadfail-img{
width: 100%;
height: 360rpx;
}
.svip{
margin: 5rpx 0 15rpx;
}
.vip-money {
color: #282828;
font-size: 22rpx;
margin-left: 6rpx;
font-weight: bold;
}
.vipImg {
width: 65rpx;
height: 28rpx;
margin-left: 4rpx;
image {
width: 100%;
height: 100%;
display: block;
}
}
.wf-page0 .name {
color: #282828;
margin: 20rpx 0 10rpx 0;
font-size: 13px;
overflow:hidden;
text-overflow: ellipsis;
display: -webkit-box;
-webkit-line-clamp: 2;
-webkit-box-orient: vertical;
text-align: left;
}
.wf-page0 .text{
padding: 0 20rpx;
}
.wf-page0 .money {
font-size: 20rpx;
font-weight: bold;
color: var(--view-priceColor);
}
.b-color {
background-color: var(--view-theme);
border: 1px solid var(--view-theme);
}
.wf-page0 .money .num {
font-size: 34rpx;
}
.wf-page1 .wf-item{
.name{
font-size: 13px;
overflow:hidden;
text-overflow: ellipsis;
display: -webkit-box;
-webkit-line-clamp: 2;
-webkit-box-orient: vertical;
text-align: left;
}
}
.wf-page1 .pictrue {
position: relative;
height: 345rpx;
width: 100%!important;
/deep/image,/deep/.easy-loadimage,uni-image{
height: 345rpx;
border-radius: 20rpx 20rpx 0 0;
}
.border-picture {
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
border-radius: 20rpx 20rpx 0 0;
background: center/cover no-repeat;
}
}
.sell_out {
display: flex;
width: 150rpx;
height: 150rpx;
align-items: center;
justify-content: center;
border-radius: 100%;
background: rgba(0,0,0,.6);
color: #fff;
font-size: 30rpx;
position: absolute;
top: 50%;
left: 50%;
margin: -75rpx 0 0 -75rpx;
&::before{
content: "";
display: block;
width: 140rpx;
height: 140rpx;
border-radius: 100%;
border: 1px dashed #fff;
position: absolute;
top: 5rpx;
left: 5rpx;
}
}
.loading-img{
height: 345rpx;
max-height: 360rpx;
}
.wf-page1 .text {
padding: 20rpx 17rpx 26rpx 17rpx;
font-size: 30rpx;
color: #222;
}
.wf-page1 .text .money {
display: flex;
align-items: center;
font-size: 26rpx;
font-weight: bold;
margin-top: 8rpx;
color: var(--view-priceColor);
}
.wf-page1 .text .money .num {
font-size: 34rpx;
}
.item_tags{
margin-top: 8rpx;
display: flex;
}
.item_tags .tags_item {
display: flex;
font-size: 20rpx;
text-align: center;
border-radius: 5rpx;
padding: 0 4rpx;
height: 28rpx;
align-items: center;
justify-content: center;
margin-right: 8rpx;
}
.item_tags .tags_item.ticket{
color: var(--view-theme);
border: 1px solid var(--view-theme);
}
.item_tags .tags_item.delivery{
color: #FF9000;
border: 1px solid #FF9000;
}
.wf-page1 .text .money .ticket-big {
display: flex;
align-items: center;
justify-content: center;
max-width: 163rpx;
padding: 0 6rpx;
height: 28rpx;
margin-left: 10rpx;
background-image: url(~static/images/yh.png);
background-size: 100% 100%;
font-size: 20rpx;
font-weight: normal;
}
.wf-page1 .text .score {
margin-top: 10rpx;
color: #737373;
font-size: 20rpx;
}
.wf-page1 .text .company {
display: flex;
align-items: center;
color: #737373;
font-size: 20rpx;
margin-top: 10rpx;
.line1{
// max-width: 200rpx;
}
.flex {
display: flex;
align-items: center;
margin-left: 10rpx;
color: #282828;
.iconfont {
font-size: 16rpx;
margin-top: 4rpx;
}
}
}
.foot-bar {
width: 100%;
height: 52rpx;
display: flex;
align-items: center;
justify-content: center;
background-image: linear-gradient(-90deg, var(--view-bntColor21) 0%, var(--view-bntColor22) 100%);
border-radius: 0px 0px 16rpx 16rpx;
color: #fff;
font-size: 24rpx;
.icon-fenxiang {
font-size: 24rpx;
margin-right: 10rpx;
}
}
</style>

102
components/activityCard.vue Normal file
View File

@ -0,0 +1,102 @@
<template>
<view class="a_c_home">
<view class="c_card">
<view class="c_content">
<scroll-view style="height: 100%;" scroll-y>
<view v-if="info.content" v-html="info.content.content"></view>
</scroll-view>
</view>
<view class="btn_box">
<image class="btn_img" @click="open()" src="https://lihai001.oss-cn-chengdu.aliyuncs.com/public/uploads/new_activity/card_btn1.webp"></image>
<image class="btn_img" @click="open()" src="https://lihai001.oss-cn-chengdu.aliyuncs.com/public/uploads/new_activity/card_btn2.webp"></image>
</view>
</view>
<image class="head_img" src="https://lihai001.oss-cn-chengdu.aliyuncs.com/public/uploads/new_activity/card_head.webp" info="活动标题"></image>
<image class="close_img" @click="close" src="https://lihai001.oss-cn-chengdu.aliyuncs.com/public/uploads/new_activity/close.png" info="关闭按钮"></image>
</view>
</template>
<script>
import { getArticleList } from "@/api/api.js"
export default {
data(){
return {
info: ''
}
},
created() {
this.getArticleList();
},
methods:{
close(){
this.$emit('close');
},
open(){
uni.navigateTo({
url: '/pages/newActivity/activityDetail/activityDetail'
})
},
getArticleList(){
getArticleList(25).then(res=>{
this.info = res.data.list[0]
})
}
}
}
</script>
<style lang="scss">
.a_c_home{
width: 600rpx;
height: 90vh;
// border: 1px solid red;
position: relative;
.head_img{
width: 568rpx;
height: 207rpx;
position: absolute;
top: 0;
left: 50%;
transform: translate(-50%);
}
.c_card{
height: calc(100% - 300rpx);
width: 100%;
background-color: #fff;
position: absolute;
border-radius: 50rpx;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
padding: 30rpx;
padding-top: 70rpx;
display: flex;
flex-direction: column;
justify-content: space-between;
align-items: center;
.c_content{
height: calc(100% - 220rpx);
width: 100%;
// background-color: #eee;
}
.btn_box{
display: flex;
flex-direction: column;
justify-content: space-between;
align-items: center;
.btn_img{
width: 461rpx;
height: 100rpx;
}
}
}
.close_img{
position: absolute;
bottom: 60rpx;
left: 50%;
transform: translate(-50%);
width: 60rpx;
height: 60rpx;
}
}
</style>

View File

@ -0,0 +1,62 @@
<template>
<view class="a_h_home">
<view class="a_h_body" v-if="show">
<image @click.stop="open()" class="a_h_bg" mode="widthFix" src="https://lihai001.oss-cn-chengdu.aliyuncs.com/public/uploads/new_activity/tow_price_card.webp"></image>
<image v-if="showClose" @click.stop="close()" class="a_h_close" src="../static/images/wt_close.png"></image>
</view>
</view>
</template>
<script>
export default {
props:{
showClose: {
type: Boolean,
default: true
}
},
data(){
return {
show: true
}
},
methods:{
open(){
this.$emit('click');
},
close(){
this.show = false;
}
}
}
</script>
<style lang="scss">
.a_h_home{
position: fixed;
bottom: 25vh;
right: 30rpx;
z-index: 10;
width: 180rpx;
// height: 150rpx;
.a_h_bg{
height: 100%;
width: 100%;
}
.a_h_body{
width: 100%;
height: 100%;
// background-color: #eee;
position: relative;
.a_h_close{
position: absolute;
right: 5rpx;
top: 5rpx;
width: 30rpx;
height: 30rpx;
background-color: rgba(#000, 0.4);
border-radius: 50%;
}
}
}
</style>

View File

@ -1,5 +1,5 @@
<template>
<view :style="viewColor">
<view :style="viewColor" @touchmove.stop.prevent="()=>{}">
<view class="add_invoicing" :class="invoice.invoice==true?'on':''">
<view class='title'>选择发票<text class='iconfont icon-guanbi' @tap='close'></text></view>
<form @submit="formSubmit" report-submit="true">
@ -302,11 +302,15 @@
this.popupTitle = false;
},
changeHeader(e) {
console.log(e);
this.receipt_title_type = e.detail.value;
if(e.detail.value == 1){
this.receipt_type = 1;
this.typeName = '增值税电子普通发票'
}
}else {
this.receipt_type = 2;
this.typeName = '增值税专用发票'
}
this.receipt_type
},
changeDefault(e) {

View File

@ -18,7 +18,7 @@
<image src='../../static/images/noAddress.png'></image>
<view>暂无地址</view>
</view>
<view class='addressBnt' @tap='goAddressPages'>添加地址</view>
<view class='addressBnt' @tap='goAddressPages'>添加/编辑地址</view>
</view>
<view class='mask' catchtouchmove="true" :hidden='address.address==false' @tap='close'></view>
</view>

View File

@ -0,0 +1,169 @@
<template>
<view class="men-ban box " v-if ='isShow' @touchmove.stop.prevent="">
<view class="box_next">
<view class="box_next_title">
<text class="box_next_title_z">{{title}}</text>
</view>
<slot></slot>
<view class="box_next_but_d" v-if="isBut">
<view @click='show' class="box_next_but_d_but">
<text class="box_next_but_d_but_text">{{nName}}</text>
</view>
</view>
<view class="box_next_but_s" v-else>
<view class="box_next_but_s_lbut" @click="lEvent">
<text class="box_next_but_d_but_text">{{lName}}</text>
</view>
<view @click="rEvent" class="box_next_but_s_rbut" hover-class="zcolor-while1">
<text class="box_next_but_d_but_text">{{rName}}</text>
</view>
</view>
</view>
</view>
</template>
<script>
export default {
props: {
title: {
type: String,
default: "温馨提示"
},
isShow: {
type: Boolean,
default: true
},
nName: String,
lName: String,
rName: String,
isBut: {
type: Boolean,
default: true
}
},
methods: {
show() {
this.$emit('show');
},
lEvent() {
this.$emit('lEvent');
},
rEvent() {
this.$emit('rEvent');
},
}
}
</script>
<style scoped>
.men-ban {
position: fixed;
bottom: 0;
right: 0;
left: 0;
top: 0;
z-index: 999999;
background-color: rgba(0, 0, 0, 0);
}
.box {
/* #ifndef APP-NVUE */
display: flex;
/* #endif */
flex-direction: row;
justify-content: center;
align-items: center;
}
.box_next {
background-color: #ffffff;
width: 550rpx;
border-radius: 30rpx;
}
.box_next_title {
padding: 30rpx 30rpx 0 30rpx;
}
.box_next_title_z {
font-size: 31rpx;
font-weight: bold;
}
.box_next_but_d {
width: 550rpx;
/* #ifndef APP-NVUE */
display: flex;
/* #endif */
flex-direction: row;
justify-content: center;
align-items: center;
height: 130rpx;
}
.box_next_but_d_but {
width: 500rpx;
/* #ifndef APP-NVUE */
display: flex;
/* #endif */
flex-direction: row;
justify-content: center;
align-items: center;
height: 80rpx;
border-radius: 50rpx;
background-color: #fee610;
}
.box_next_but_d_but_text {
font-size: 30rpx;
font-weight: bold;
}
.box_next_but_s {
width: 550rpx;
/* #ifndef APP-NVUE */
display: flex;
/* #endif */
flex-direction: row;
justify-content: space-around;
align-items: center;
height: 130rpx;
}
.box_next_but_s_lbut {
width: 200rpx;
background-color: #f1f1f1;
/* #ifndef APP-NVUE */
display: flex;
/* #endif */
flex-direction: row;
justify-content: center;
align-items: center;
height: 80rpx;
border-radius: 50rpx;
}
.box_next_but_s_rbut {
width: 200rpx;
background-color: #fee610;
/* #ifndef APP-NVUE */
display: flex;
/* #endif */
flex-direction: row;
justify-content: center;
align-items: center;
height: 80rpx;
border-radius: 50rpx;
}
</style>

View File

@ -0,0 +1,183 @@
<template>
<view class="msg-view">
<scroll-view class="msg-view-p" scroll-y="true" :scroll-top="msgPanelScrollTop">
<view id="chatArea">
<view class="chat-area-line" v-for="(item,index) in msgList">
<view class="system-msg"
:style="{'flex-direction':((item.userName.length + item.content.length)<15?'row':'')}"
v-if="item.msg_type == 'system'">
<view class="system-msg-detail ">
<text class="system-msg-detail-username " v-for="i in item.userName">{{i}}</text>
<text class="system-msg-detail-content " v-for="i in ':'">{{i}}</text>
<text class="system-msg-detail-content " v-for="i in item.content">{{i}}</text>
</view>
</view>
<view class="user-msg"
:style="{'flex-direction':((item.userName.length + item.content.length)<15?'row':'')}" v-else>
<view class="user-msg-detail">
<view class="user-msg-detail-tag">
<!-- <text style="text-align: center;font-size: 20px;color: #DD524D;">1</text> -->
<!-- 这里可以根据用户等级显示图片 -->
<image :src="item.avatar" class="user-msg-detail-tag"></image>
</view>
<text class="user-msg-detail-username" v-for="i in item.userName"
@click="test(item.userName)">{{i}}</text>
<text class="user-msg-detail-content" v-for="i in ':'">{{i}}</text>
<text class="user-msg-detail-content" v-for="i in item.content">{{i}}</text>
</view>
</view>
</view>
</view>
</scroll-view>
</view>
</template>
<script>
export default {
name: 'MhMsgList',
props: {
msgList: {
type: [Object, Array],
default: [{
userName: "系统通知",
content: "直播倡导绿色直播,严禁发布涉黄涉毒涉赌,严禁发布涉政、违法及低俗违规内容。健康直播,文明互动",
cmd: "say",
msg_type: "system"
}, ]
},
msgPanelScrollTop: {
type: [Number, String],
default: 0
}
},
mounted() {
},
methods: {
test(e) {
uni.showToast({
title: e,
icon: 'none'
})
},
setMsgPanelScroll() {
var that = this;
setTimeout(function() {
const query = uni.createSelectorQuery().in(that);
query.select('#chatArea').boundingClientRect(data => {
that.msgPanelScrollTop = data.height - 200;
}).exec();
}, 50)
},
}
}
</script>
<style lang="scss" scoped>
.msg-view-p {
display: flex;
width: 550rpx;
height: 550rpx;
}
.chat-area-line {
width: 550upx;
flex-direction: row;
margin-bottom: 5upx;
}
.system-msg {
width: 550upx;
margin-bottom: 5upx;
}
.system-msg-detail {
// max-width: 550upx;
padding: 10upx;
border-radius: 30upx;
background-color: rgba($color: #000000, $alpha: 0.4);
flex-direction: row;
flex-wrap: wrap;
margin-right: 14upx;
>.system-msg-detail-username {
color: red;
font-size: 32upx;
font-weight: 400;
line-height: 40upx;
}
>.system-msg-detail-content {
font-size: 32upx;
font-weight: 400;
line-height: 40upx;
color: #A0CFFF;
}
}
.user-line {
// max-width: 530upx;
padding: 10upx;
color: #FFFFFF;
flex-direction: row;
border-radius: 30upx;
background-color: rgba($color: #000000, $alpha: 0.4);
margin-right: 14upx;
font-size: 28upx;
font-weight: 400;
line-height: 40upx;
}
.user-msg {
width: 530upx;
margin-bottom: 5upx;
}
.user-msg-detail-tag {
width: 40upx;
height: 40upx;
border-radius: 50%;
}
.user-msg-detail {
padding: 10upx;
border-radius: 30upx;
background-color: rgba($color: #000000, $alpha: 0.4);
flex-direction: row;
flex-wrap: wrap;
margin-right: 14upx;
>.user-msg-detail-username {
color: #A0CFFF;
font-size: 32upx;
font-weight: 400;
line-height: 40upx;
}
>.user-msg-detail-content {
font-size: 32upx;
font-weight: 400;
line-height: 40upx;
color: #fff;
}
}
</style>

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

518
components/shortPopup.vue Normal file
View File

@ -0,0 +1,518 @@
<template>
<view>
<uni-popup ref="popupRef" type="bottom" @change="changeShow">
<view class="pop">
<scroll-view scroll-y class="scroll">
<view class="image">
<swiper class="swiper" :current="current" autoplay style="width: 100%;height: 100%;" @change="changeCurrent">
<block v-if="product.slider_image && product.slider_image.length>0">
<swiper-item v-for="(item,index) in product.slider_image" :key="index">
<image class="img" :src="item"></image>
</swiper-item>
</block>
<swiper-item v-else>
<image class="img" :src="datas.image||defualtImg"></image>
</swiper-item>
</swiper>
<view class="current">{{current+1}}/{{product.slider_image && product.slider_image.length||1}}</view>
<image class="close" src="@/static/images/icon/close.png" @click="close()"></image>
<view class="border"></view>
</view>
<view class="white_card">
<view class="flex flex_end">
<view class="price"><text class="pro">{{leftPrice}}.</text>{{rightPrice}}
</view>
<!-- <view>订货价</view> -->
</view>
<view class="short_name">{{datas.store_name}}</view>
<view class="flex">
<view class="shop_name">
<image class="icon" src="@/static/images/icon/short.png"></image>
<view>{{datas.merchant.mer_name}}</view>
</view>
</view>
<u-line></u-line>
<block name="规格选中" v-for="(att, indexw) in attr" :key="indexw">
<view class="m_title">{{att.attr_name}}</view>
<view class="flex" style="flex-wrap: wrap;">
<view class="attr" :class="{'attr_active': item.check}"
v-for="(item, indexn) in att.attr_value" :key="indexn"
@click="changeAttr(indexw, indexn)">
{{item.attr}}
</view>
</view>
</block>
<view class="m_title num">
<view>购买数量</view>
<view class="input">
<view class="input_item sub" @click="subCartNum">-</view>
<input class="input_item input_view" v-model="cart_num" type="number" @input="inputCartNum" />
<view class="input_item plus" @click="plusCartNum">+</view>
</view>
</view>
<view>
商品库存 <text style="margin-left: 20rpx;">{{(sku[changeSkuKey] && sku[changeSkuKey].stock)||change.stock}}</text>
</view>
</view>
</scroll-view>
<view class="button">
<view class="b_icon" @click="navgoCart()">
<image src="@/static/images/icon/car.png"></image>
<view>购物车</view>
<view class="badge" v-if="goodsNum">{{goodsNum}}</view>
</view>
<view class="btn" @click.stop="$u.throttle(addcart, 1500)"> {{isBuy?'立即购买':'加入购物车'}} </view>
</view>
</view>
</uni-popup>
</view>
</template>
<script>
import {
postCartAdd,
getProductDetail
} from '@/api/store.js';
export default {
name: "shortPopup",
props: {
source:{
type: Number,
default: null
},
isBuy: {
type: Boolean,
default: false
}
},
data() {
return {
isShow: false, //
defualtImg: 'https://lihai001.oss-cn-chengdu.aliyuncs.com/uploads/20230130/00ebcfdf75684f5494c0193075055d1.png',
datas: {
image: '',
store_name: '',
merchant: {
mer_name: ''
},
price: '',
},
product: {},
attrValue: [],
attr: [], //
changeSkuKey: '', //key
sku: {}, //
sku_key_list: [], //
changeSkuKey: '', //
change: {
stock: ''
},
cart_num: 1, //
goodsNum: 0, //
current: 0, //
};
},
mounted() {},
computed:{
leftPrice(){
return this.sku[this.changeSkuKey]?.price?.split('.')[0]||'0';
},
rightPrice(){
return this.sku[this.changeSkuKey]?.price?.split('.')[1]||'00';
}
},
methods: {
// ,
setDatas(datas, goodsNum) {
getProductDetail(datas.product_id).then((res)=>{
this.attr = res.data.attr;
if(this.attr.length>0) this.attr.forEach((item, index)=>{
this.changeAttr(index, 0);
})
else this.changeSkuKey = '';
})
this.goodsNum = goodsNum;
this.datas = datas;
this.product = datas.product;
this.attrValue = datas.product?.attrValue;
this.change = this.attrValue[0];
this.cart_num = 1;
this.sku = datas.sku||{};
this.sku_key_list = Object.keys(this.sku);
},
//
inputCartNum(e) {
if(this.sku){
if (+e.detail.value > this.sku[this.changeSkuKey].stock) {
uni.showToast({
icon: 'none',
title: '不能超出库存哦'
})
this.$nextTick(() => {
this.cart_num = this.sku[this.changeSkuKey].stock;
})
}
}else if (this.change.stock <= this.cart_num) {
uni.showToast({
icon: 'none',
title: '不能超出库存哦'
})
this.$nextTick(() => {
this.cart_num = this.change.stock;
})
}
},
//
subCartNum() {
if (this.cart_num <= 1) {
return uni.showToast({
icon: 'none',
title: '最少要买一件哦'
})
}
this.cart_num--;
},
//
plusCartNum() {
if(this.sku){
if (this.sku[this.changeSkuKey].stock <= this.cart_num) {
return uni.showToast({
icon: 'none',
title: '不能超出库存哦'
})
}
}else if (this.change.stock <= this.cart_num) {
return uni.showToast({
icon: 'none',
title: '不能超出库存哦'
})
}
this.cart_num++;
},
changeAttr: function(indexw, indexn) {
let that = this;
this.$set(this.attr[indexw], 'index', this.attr[indexw].attr_values[indexn]);
this.attr[indexw].attr_value.forEach((item, index)=>{
if(index==indexn)item.check = true;
else item.check = false;
})
let value = that.getCheckedValue().join(",");
this.changeSkuKey = value;
},
//
getCheckedValue: function() {
let productAttr = this.attr;
let value = [];
for (let i = 0; i < productAttr.length; i++) {
for (let j = 0; j < productAttr[i].attr_values.length; j++) {
if (productAttr[i].index === productAttr[i].attr_values[j]) {
value.push(productAttr[i].attr_values[j]);
}
}
}
return value;
},
//
addcart() {
if (this.sku[this.changeSkuKey]) {
if (this.cart_num > this.sku[this.changeSkuKey].stock) return uni.showToast({
icon: 'none',
title: '不能超出库存哦'
})
let data = {
cart_num: this.cart_num,
is_new: 0,
product_attr_unique: this.sku[this.changeSkuKey].unique,
product_id: this.datas.product_id,
product_type: this.datas.product_type,
source: this.source,
spread_id: "",
}
let that = this
let res = postCartAdd({
...data
}).then((res, err) => {
uni.showToast({
title: "加入成功",
duration: 1000,
})
this.$emit('addCart');
this.close();
if(this.isBuy){
this.navgoCart();
}
}).catch(err => {
uni.showToast({
title: err,
icon: "none",
duration: 1000,
})
})
} else {
uni.showToast({
icon: 'none',
title: '商品规格不存在'
})
}
},
//
changeCurrent(e){
this.current = e.detail.current;
},
navgoCart(url=null) {
if(!url) {
if(this.source) url = '/pages/order_addcart/order_addcart?source='+this.source;
else url = '/pages/order_addcart/order_addcart';
}
uni.navigateTo({
url
})
},
open() {
this.$refs.popupRef.open();
},
close() {
this.$refs.popupRef.close();
},
changeShow(e) {
this.isShow = e.show;
}
}
}
</script>
<style lang="scss">
.pop {
background-color: #fff;
border-radius: 31.54rpx 31.54rpx 0rpx 0rpx;
overflow: hidden;
position: relative;
.scroll{
height: calc(90vh - 150rpx);
}
.flex_end {
align-items: flex-end;
}
.image {
height: 750rpx;
width: 750rpx;
position: relative;
.current{
position: absolute;
bottom: 70rpx;
left: 30rpx;
width: 67rpx;
height: 37rpx;
background: rgba(#333, 0.2);
border-radius: 11rpx 11rpx 11rpx 11rpx;
text-align: center;
color: #fff;
font-size: 26rpx;
font-family: PingFang SC-Regular, PingFang SC;
font-weight: 400;
}
.img {
width: 100%;
height: 100%;
border-radius: 31.54rpx 31.54rpx 0rpx 0rpx;
overflow: hidden;
}
.close {
position: absolute;
top: 30rpx;
right: 30rpx;
width: 50.82rpx;
height: 50.82rpx;
}
.border {
position: absolute;
bottom: -1rpx;
left: 0;
background-color: #fff;
height: 40rpx;
width: 100%;
border-radius: 40rpx 40rpx 0 0;
}
}
.white_card {
border-radius: 31.54rpx 31.54rpx 0rpx 0rpx;
background-color: #fff;
margin: 0 28rpx;
padding-bottom: 30rpx;
color: #737373;
font-size: 26.29rpx;
.price {
font-size: 35rpx;
font-family: SF Pro Display-Semibold, SF Pro Display;
font-weight: 600;
color: #F84221;
padding-right: 30rpx;
.pro {
font-size: 49.07rpx;
}
}
.short_name {
font-size: 33rpx;
font-family: PingFang SC-Semibold, PingFang SC;
font-weight: 600;
color: #333333;
}
.shop_name {
display: flex;
background: #FEF5F3;
padding: 0 16rpx;
border-radius: 26rpx 26rpx 26rpx 26rpx;
margin-top: 30rpx;
margin-bottom: 20rpx;
align-items: center;
.icon {
width: 31.54rpx;
height: 31.54rpx;
margin-right: 10rpx;
}
}
.m_title {
font-size: 30rpx;
font-family: PingFang SC-Medium, PingFang SC;
font-weight: 500;
color: #333333;
margin-top: 31rpx;
margin-bottom: 21rpx;
}
.attr {
opacity: 1;
border: 1rpx solid #F84221;
color: #333333;
padding: 15rpx 30rpx;
margin-right: 20rpx;
height: 63rpx;
line-height: 60rpx;
border-radius: 63rpx;
display: flex;
align-items: center;
justify-content: center;
}
.attr_active{
// background-color: #FEF5F3;
// color: #F84221;
background-color: #F84221;
color: #fff;
}
.num {
display: flex;
justify-content: space-between;
align-items: center;
.input {
display: flex;
align-items: center;
height: 48rpx;
.input_item {
width: 44rpx;
height: 44rpx;
text-align: center;
line-height: 40rpx;
border: 2rpx solid #fff;
font-size: 26rpx;
color: #333;
}
.input_view {
width: 60rpx;
}
.sub {
border: 2rpx solid #FCB9AD;
border-radius: 7rpx 0rpx 0rpx 7rpx;
background: #FFFFFF;
font-size: 26rpx;
color: #B3B3B3;
}
.plus {
border: 2rpx solid #FCB9AD;
border-radius: 0rpx 7rpx 7rpx 0rpx;
background: #FFFFFF;
font-size: 26rpx;
color: #B3B3B3;
}
}
}
}
.button {
padding: 28rpx;
margin-bottom: 28rpx;
background-color: #fff;
display: flex;
justify-content: space-around;
padding-bottom: constant(safe-area-inset-bottom); /// IOS<11.2/
padding-bottom: env(safe-area-inset-bottom); /// IOS>11.2/
padding-bottom: constant(safe-area-inset-bottom); /// IOS<11.2/
padding-bottom: env(safe-area-inset-bottom); /// IOS>11.2/
.b_icon {
display: flex;
flex-direction: column;
align-items: center;
font-size: 19rpx;
font-weight: 400;
color: #333333;
position: relative;
image {
width: 50.82rpx;
height: 50.82rpx;
}
.badge {
position: absolute;
top: -5rpx;
right: -10rpx;
color: #fff;
min-width: 28rpx;
height: 28rpx;
text-align: center;
line-height: 24rpx;
background: #F84221;
border-radius: 16rpx 16rpx 16rpx 16rpx;
border: 2rpx solid #FFFFFF;
}
}
.btn {
width: 575rpx;
height: 84rpx;
background: linear-gradient(270deg, #FF6D20 0%, #F84221 100%);
border-radius: 42rpx 42rpx 42rpx 42rpx;
display: flex;
justify-content: center;
align-items: center;
font-size: 30rpx;
font-family: PingFang SC-Medium, PingFang SC;
font-weight: 500;
color: #FFFFFF;
}
}
}
</style>

View File

@ -0,0 +1,534 @@
<template>
<view>
<uni-popup ref="popupRef" type="bottom" @change="changeShow">
<view class="pop">
<scroll-view scroll-y class="scroll">
<view class="image">
<swiper class="swiper" :current="current" autoplay style="width: 100%;height: 100%;" @change="changeCurrent">
<block v-if="product.slider_image && product.slider_image.length>0">
<swiper-item v-for="(item,index) in product.slider_image" :key="index">
<image class="img" :src="item"></image>
</swiper-item>
</block>
<swiper-item v-else>
<image class="img" :src="datas.image||defualtImg"></image>
</swiper-item>
</swiper>
<view class="current">{{current+1}}/{{product.slider_image && product.slider_image.length||1}}</view>
<image class="close" src="@/static/images/icon/close.png" @click="close()"></image>
<view class="border"></view>
</view>
<view class="white_card">
<view class="flex flex_end">
<block v-if="datas.limited_price">
<view class="price"><text class="pro">{{leftPrice2}}.</text>{{rightPrice2}}
</view>
<view class="price" style="text-decoration: line-through;color: #999;font-weight: 400;font-size: 28rpx;">原价: <text>{{leftPrice}}.</text>{{rightPrice}}</view>
</block>
<view v-else class="price"><text>{{leftPrice}}.</text>{{rightPrice}}</view>
<!-- <view>订货价</view> -->
</view>
<view class="short_name">{{datas.store_name}}</view>
<view class="flex">
<view class="shop_name">
<image class="icon" src="@/static/images/icon/short.png"></image>
<view>{{datas.merchant.mer_name}}</view>
</view>
</view>
<u-line></u-line>
<block name="规格选中" v-for="(att, indexw) in attr" :key="indexw">
<view class="m_title">{{att.attr_name}}</view>
<view class="flex" style="flex-wrap: wrap;">
<view class="attr" :class="{'attr_active': item.check}"
v-for="(item, indexn) in att.attr_value" :key="indexn"
@click="changeAttr(indexw, indexn)">
{{item.attr}}
</view>
</view>
</block>
<view class="m_title num">
<view>购买数量</view>
<view class="input">
<view class="input_item sub" @click="subCartNum">-</view>
<input class="input_item input_view" v-model="cart_num" type="number" @input="inputCartNum" />
<view class="input_item plus" @click="plusCartNum">+</view>
</view>
</view>
<view>
商品库存 <text style="margin-left: 20rpx;">{{(sku[changeSkuKey] && sku[changeSkuKey].stock)||change.stock}}</text>
</view>
</view>
</scroll-view>
<view class="button">
<!-- <view class="b_icon" @click="navgoCart()">
<image src="@/static/images/icon/car.png"></image>
<view>购物车</view>
<view class="badge" v-if="goodsNum">{{goodsNum}}</view>
</view> -->
<view class="btn" @click.stop="$u.throttle(addcart, 1500)"> {{isBuy?'立即购买':'加入购物车'}} </view>
</view>
</view>
</uni-popup>
</view>
</template>
<script>
import {
postCartAdd,
getProductDetail
} from '@/api/store.js';
import { Toast } from '../libs/uniApi';
import { data } from '../uni_modules/uview-ui/libs/mixin/mixin';
export default {
name: "shortPopup",
props: {
source:{
type: Number,
default: null
},
isBuy: {
type: Boolean,
default: false
}
},
data() {
return {
isShow: false, //
defualtImg: 'https://lihai001.oss-cn-chengdu.aliyuncs.com/uploads/20230130/00ebcfdf75684f5494c0193075055d1.png',
datas: {
image: '',
store_name: '',
merchant: {
mer_name: ''
},
price: '',
},
product: {},
attrValue: [],
attr: [], //
changeSkuKey: '', //key
sku: {}, //
sku_key_list: [], //
changeSkuKey: '', //
change: {
stock: ''
},
cart_num: 1, //
goodsNum: 0, //
current: 0, //
};
},
mounted() {},
computed:{
leftPrice(){
return this.sku[this.changeSkuKey]?.price?.split('.')[0]||'0';
},
rightPrice(){
return this.sku[this.changeSkuKey]?.price?.split('.')[1]||'00';
},
leftPrice2(){
return this.datas.limited_price.split('.')[0]||'0';
},
rightPrice2(){
return this.datas.limited_price.split('.')[1]||'00';
}
},
methods: {
// ,
setDatas(datas, goodsNum) {
getProductDetail(datas.product_id).then((res)=>{
this.attr = res.data.attr;
if(this.attr.length>0) this.attr.forEach((item, index)=>{
this.changeAttr(index, 0);
})
else this.changeSkuKey = '';
})
this.goodsNum = goodsNum;
this.datas = datas;
this.product = datas.product;
this.attrValue = datas.product?.attrValue;
this.change = this.attrValue[0];
this.cart_num = 1;
this.sku = datas.sku||{};
this.sku_key_list = Object.keys(this.sku);
},
//
inputCartNum(e) {
if(this.sku){
if (+e.detail.value > this.sku[this.changeSkuKey].stock) {
uni.showToast({
icon: 'none',
title: '不能超出库存哦'
})
this.$nextTick(() => {
this.cart_num = this.sku[this.changeSkuKey].stock;
})
}
}else if (this.change.stock <= this.cart_num) {
uni.showToast({
icon: 'none',
title: '不能超出库存哦'
})
this.$nextTick(() => {
this.cart_num = this.change.stock;
})
}
},
//
subCartNum() {
if (this.cart_num <= 1) {
return uni.showToast({
icon: 'none',
title: '最少要买一件哦'
})
}
this.cart_num--;
},
//
plusCartNum() {
return Toast('最多购买一件哦');
if(this.sku){
if (this.sku[this.changeSkuKey].stock <= this.cart_num) {
return uni.showToast({
icon: 'none',
title: '不能超出库存哦'
})
}
}else if (this.change.stock <= this.cart_num) {
return uni.showToast({
icon: 'none',
title: '不能超出库存哦'
})
}
this.cart_num++;
},
changeAttr: function(indexw, indexn) {
let that = this;
this.$set(this.attr[indexw], 'index', this.attr[indexw].attr_values[indexn]);
this.attr[indexw].attr_value.forEach((item, index)=>{
if(index==indexn)item.check = true;
else item.check = false;
})
let value = that.getCheckedValue().join(",");
this.changeSkuKey = value;
},
//
getCheckedValue: function() {
let productAttr = this.attr;
let value = [];
for (let i = 0; i < productAttr.length; i++) {
for (let j = 0; j < productAttr[i].attr_values.length; j++) {
if (productAttr[i].index === productAttr[i].attr_values[j]) {
value.push(productAttr[i].attr_values[j]);
}
}
}
return value;
},
//
addcart() {
if (this.sku[this.changeSkuKey]) {
if (this.cart_num > this.sku[this.changeSkuKey].stock) return uni.showToast({
icon: 'none',
title: '不能超出库存哦'
})
let data = {
cart_num: this.cart_num,
is_new: 0,
product_attr_unique: this.sku[this.changeSkuKey].unique,
product_id: this.datas.product_id,
product_type: this.datas.product_type,
source: this.source,
spread_id: "",
}
let that = this
let res = postCartAdd({
...data
}).then((res, err) => {
if(this.isBuy) return uni.navigateTo({
url: `/pages/users/order_confirm/index?cartId=${res.data.cart_id}&type_id=${this.datas.merchant.type_id}&source=${this.source}`
});
uni.showToast({
title: "加入成功",
duration: 1000,
})
this.$emit('addCart');
this.close();
if(this.isBuy){
this.navgoCart();
}
}).catch(err => {
uni.showToast({
title: err,
icon: "none",
duration: 1000,
})
})
} else {
uni.showToast({
icon: 'none',
title: '商品规格不存在'
})
}
},
//
changeCurrent(e){
this.current = e.detail.current;
},
navgoCart(url=null) {
if(!url) {
if(this.source) url = '/pages/order_addcart/order_addcart?source='+this.source;
else url = '/pages/order_addcart/order_addcart';
}
uni.navigateTo({
url
})
},
open() {
this.$refs.popupRef.open();
},
close() {
this.$refs.popupRef.close();
},
changeShow(e) {
this.isShow = e.show;
}
}
}
</script>
<style lang="scss">
.pop {
background-color: #fff;
border-radius: 31.54rpx 31.54rpx 0rpx 0rpx;
overflow: hidden;
position: relative;
.scroll{
height: calc(90vh - 150rpx);
}
.flex_end {
align-items: flex-end;
}
.image {
height: 750rpx;
width: 750rpx;
position: relative;
.current{
position: absolute;
bottom: 70rpx;
left: 30rpx;
width: 67rpx;
height: 37rpx;
background: rgba(#333, 0.2);
border-radius: 11rpx 11rpx 11rpx 11rpx;
text-align: center;
color: #fff;
font-size: 26rpx;
font-family: PingFang SC-Regular, PingFang SC;
font-weight: 400;
}
.img {
width: 100%;
height: 100%;
border-radius: 31.54rpx 31.54rpx 0rpx 0rpx;
overflow: hidden;
}
.close {
position: absolute;
top: 30rpx;
right: 30rpx;
width: 50.82rpx;
height: 50.82rpx;
}
.border {
position: absolute;
bottom: -1rpx;
left: 0;
background-color: #fff;
height: 40rpx;
width: 100%;
border-radius: 40rpx 40rpx 0 0;
}
}
.white_card {
border-radius: 31.54rpx 31.54rpx 0rpx 0rpx;
background-color: #fff;
margin: 0 28rpx;
padding-bottom: 30rpx;
color: #737373;
font-size: 26.29rpx;
.price {
font-size: 35rpx;
font-family: SF Pro Display-Semibold, SF Pro Display;
font-weight: 600;
color: #F84221;
padding-right: 30rpx;
.pro {
font-size: 49.07rpx;
}
}
.short_name {
font-size: 33rpx;
font-family: PingFang SC-Semibold, PingFang SC;
font-weight: 600;
color: #333333;
}
.shop_name {
display: flex;
background: #FEF5F3;
padding: 0 16rpx;
border-radius: 26rpx 26rpx 26rpx 26rpx;
margin-top: 30rpx;
margin-bottom: 20rpx;
align-items: center;
.icon {
width: 31.54rpx;
height: 31.54rpx;
margin-right: 10rpx;
}
}
.m_title {
font-size: 30rpx;
font-family: PingFang SC-Medium, PingFang SC;
font-weight: 500;
color: #333333;
margin-top: 31rpx;
margin-bottom: 21rpx;
}
.attr {
opacity: 1;
border: 1rpx solid #F84221;
color: #333333;
padding: 15rpx 30rpx;
margin-right: 20rpx;
height: 63rpx;
line-height: 60rpx;
border-radius: 63rpx;
display: flex;
align-items: center;
justify-content: center;
}
.attr_active{
// background-color: #FEF5F3;
// color: #F84221;
background-color: #F84221;
color: #fff;
}
.num {
display: flex;
justify-content: space-between;
align-items: center;
.input {
display: flex;
align-items: center;
height: 48rpx;
.input_item {
width: 44rpx;
height: 44rpx;
text-align: center;
line-height: 40rpx;
border: 2rpx solid #fff;
font-size: 26rpx;
color: #333;
}
.input_view {
width: 60rpx;
}
.sub {
border: 2rpx solid #FCB9AD;
border-radius: 7rpx 0rpx 0rpx 7rpx;
background: #FFFFFF;
font-size: 26rpx;
color: #B3B3B3;
}
.plus {
border: 2rpx solid #FCB9AD;
border-radius: 0rpx 7rpx 7rpx 0rpx;
background: #FFFFFF;
font-size: 26rpx;
color: #B3B3B3;
}
}
}
}
.button {
padding: 28rpx;
margin-bottom: 28rpx;
background-color: #fff;
display: flex;
justify-content: space-around;
padding-bottom: constant(safe-area-inset-bottom); /// IOS<11.2/
padding-bottom: env(safe-area-inset-bottom); /// IOS>11.2/
padding-bottom: constant(safe-area-inset-bottom); /// IOS<11.2/
padding-bottom: env(safe-area-inset-bottom); /// IOS>11.2/
.b_icon {
display: flex;
flex-direction: column;
align-items: center;
font-size: 19rpx;
font-weight: 400;
color: #333333;
position: relative;
image {
width: 50.82rpx;
height: 50.82rpx;
}
.badge {
position: absolute;
top: -5rpx;
right: -10rpx;
color: #fff;
min-width: 28rpx;
height: 28rpx;
text-align: center;
line-height: 24rpx;
background: #F84221;
border-radius: 16rpx 16rpx 16rpx 16rpx;
border: 2rpx solid #FFFFFF;
}
}
.btn {
width: 575rpx;
height: 84rpx;
background: linear-gradient(270deg, #FF6D20 0%, #F84221 100%);
border-radius: 42rpx 42rpx 42rpx 42rpx;
display: flex;
justify-content: center;
align-items: center;
font-size: 30rpx;
font-family: PingFang SC-Medium, PingFang SC;
font-weight: 500;
color: #FFFFFF;
}
}
}
</style>

View File

@ -0,0 +1,241 @@
<template>
<view v-if="showPopup" class="uni-popup" @touchmove.stop.prevent="clear">
<uni-transition :mode-class="['fade']" :styles="maskClass" :show="showTrans" @click="onTap" />
<uni-transition :mode-class="ani" :styles="transClass" :show="showTrans" @click="onTap">
<view class="uni-popup__wrapper-box" @click.stop="clear">
<slot />
</view>
</uni-transition>
</view>
</template>
<script>
export default {
props: {
//
animation: {
type: Boolean,
default: true
},
// top: bottomcenter
type: {
type: String,
default: 'center'
},
// maskClick
maskClick: {
type: Boolean,
default: true
}
},
data() {
return {
ani: [],
showPopup: false,
showTrans: false,
maskClass: {
'position': 'fixed',
'bottom': 0,
'top': 0,
'left': 0,
'right': 0,
'backgroundColor': 'rgba(0, 0, 0, 0)'
},
transClass: {
'position': 'fixed',
'left': 0,
'right': 0,
}
}
},
watch: {
type: {
handler: function(newVal) {
switch (this.type) {
case 'top':
this.ani = ['slide-top']
this.transClass = {
'position': 'fixed',
'left': 0,
'right': 0,
}
break
case 'bottom':
this.ani = ['slide-bottom']
this.transClass = {
'position': 'fixed',
'left': 0,
'right': 0,
'bottom': 0
}
console.log('直播调用弹窗')
break
case 'center':
this.ani = ['zoom-out', 'fade']
this.transClass = {
'position': 'fixed',
/* #ifndef APP-NVUE */
'display': 'flex',
'flexDirection': 'column',
/* #endif */
'bottom': 0,
'left': 0,
'right': 0,
'top': 0,
'justifyContent': 'center',
'alignItems': 'center'
}
break
}
},
immediate: true
}
},
created() {},
methods: {
clear(e) {
// TODO nvue
e.stopPropagation()
},
open() {
this.showPopup = true
this.$nextTick(() => {
setTimeout(() => {
this.showTrans = true
}, 0);
})
this.$emit('change', {
show: true
})
},
close(type) {
this.showTrans = false
this.$nextTick(() => {
clearTimeout(this.timer)
this.timer = setTimeout(() => {
this.$emit('change', {
show: false
})
this.showPopup = false
}, 0)
})
},
onTap() {
if (!this.maskClick) return
this.close()
}
}
}
</script>
<style scoped>
.uni-popup {
position: fixed;
/* #ifdef H5 */
top: var(--window-top);
/* #endif */
/* #ifndef H5 */
top: 0;
/* #endif */
bottom: 0;
left: 0;
right: 0;
/* #ifndef APP-NVUE */
z-index: 99;
/* #endif */
}
.uni-popup__mask {
position: absolute;
top: 0;
bottom: 0;
left: 0;
right: 0;
background-color: rgba(0, 0, 0, 0.4);
opacity: 0;
}
.mask-ani {
transition-property: opacity;
transition-duration: 0.2s;
}
.uni-top-mask {
opacity: 1;
}
.uni-bottom-mask {
opacity: 1;
}
.uni-center-mask {
opacity: 1;
}
.uni-popup__wrapper {
/* #ifndef APP-NVUE */
display: block;
/* #endif */
position: absolute;
}
.top {
top: 0;
left: 0;
right: 0;
transform: translateY(-500px);
}
.bottom {
bottom: 0;
left: 0;
right: 0;
transform: translateY(500px);
}
.center {
/* #ifndef APP-NVUE */
display: flex;
flex-direction: column;
/* #endif */
bottom: 0;
left: 0;
right: 0;
top: 0;
justify-content: center;
align-items: center;
transform: scale(1.2);
opacity: 0;
}
.uni-popup__wrapper-box {
/* #ifndef APP-NVUE */
display: block;
/* #endif */
position: relative;
}
.content-ani {
/* transition: transform 0.3s;
*/
transition-property: transform, opacity;
transition-duration: 0.2s;
}
.uni-top-content {
transform: translateY(0);
}
.uni-bottom-content {
transform: translateY(0);
}
.uni-center-content {
transform: scale(1);
opacity: 1;
}
</style>

View File

@ -0,0 +1,241 @@
<template>
<view v-if="showPopup" class="uni-popup" @touchmove.stop.prevent="clear">
<uni-transition :mode-class="['fade']" :styles="maskClass" :show="showTrans" @click="onTap" />
<uni-transition :mode-class="ani" :styles="transClass" :show="showTrans" @click="onTap">
<view class="uni-popup__wrapper-box" @click.stop="clear">
<slot />
</view>
</uni-transition>
</view>
</template>
<script>
export default {
props: {
//
animation: {
type: Boolean,
default: true
},
// top: bottomcenter
type: {
type: String,
default: 'center'
},
// maskClick
maskClick: {
type: Boolean,
default: true
}
},
data() {
return {
ani: [],
showPopup: false,
showTrans: false,
maskClass: {
'position': 'fixed',
'bottom': 0,
'top': 0,
'left': 0,
'right': 0,
'backgroundColor': 'rgba(0, 0, 0, 0.4)'
},
transClass: {
'position': 'fixed',
'left': 0,
'right': 0,
}
}
},
watch: {
type: {
handler: function(newVal) {
switch (this.type) {
case 'top':
this.ani = ['slide-top']
this.transClass = {
'position': 'fixed',
'left': 0,
'right': 0,
}
break
case 'bottom':
this.ani = ['slide-bottom']
this.transClass = {
'position': 'fixed',
'left': 0,
'right': 0,
'bottom': 0
}
console.log('底部条用')
console.log(this.type)
break
case 'center':
this.ani = ['zoom-out', 'fade']
this.transClass = {
'position': 'fixed',
/* #ifndef APP-NVUE */
'display': 'flex',
'flexDirection': 'column',
/* #endif */
'bottom': 0,
'left': 0,
'right': 0,
'top': 0,
'justifyContent': 'center',
'alignItems': 'center'
}
break
}
},
immediate: true
}
},
created() {},
methods: {
clear(e) {
// TODO nvue
e.stopPropagation()
},
open() {
this.showPopup = true
this.$nextTick(() => {
setTimeout(() => {
this.showTrans = true
}, 50);
})
this.$emit('change', {
show: true
})
},
close(type) {
this.showTrans = false
this.$nextTick(() => {
clearTimeout(this.timer)
this.timer = setTimeout(() => {
this.$emit('change', {
show: false
})
this.showPopup = false
}, 300)
})
},
onTap() {
if (!this.maskClick) return
this.close()
}
}
}
</script>
<style scoped>
.uni-popup {
position: fixed;
/* #ifdef H5 */
top: var(--window-top);
/* #endif */
/* #ifndef H5 */
top: 0;
/* #endif */
bottom: 0;
left: 0;
right: 0;
/* #ifndef APP-NVUE */
z-index: 99;
/* #endif */
}
.uni-popup__mask {
position: absolute;
top: 0;
bottom: 0;
left: 0;
right: 0;
background-color: rgba(0, 0, 0, 0.4);
opacity: 0;
}
.mask-ani {
transition-property: opacity;
transition-duration: 0.2s;
}
.uni-top-mask {
opacity: 1;
}
.uni-bottom-mask {
opacity: 1;
}
.uni-center-mask {
opacity: 1;
}
.uni-popup__wrapper {
/* #ifndef APP-NVUE */
display: block;
/* #endif */
position: absolute;
}
.top {
top: 0;
left: 0;
right: 0;
transform: translateY(-500px);
}
.bottom {
bottom: 0;
left: 0;
right: 0;
transform: translateY(500px);
}
.center {
/* #ifndef APP-NVUE */
display: flex;
flex-direction: column;
/* #endif */
bottom: 0;
left: 0;
right: 0;
top: 0;
justify-content: center;
align-items: center;
transform: scale(1.2);
opacity: 0;
}
.uni-popup__wrapper-box {
/* #ifndef APP-NVUE */
display: block;
/* #endif */
position: relative;
}
.content-ani {
/* transition: transform 0.3s;
*/
transition-property: transform, opacity;
transition-duration: 0.2s;
}
.uni-top-content {
transform: translateY(0);
}
.uni-bottom-content {
transform: translateY(0);
}
.uni-center-content {
transform: scale(1);
opacity: 1;
}
</style>

View File

@ -37,8 +37,8 @@
</block>
</swiper>
</view>
<u-picker :defaultIndex="defaInd" :show="showPicker" ref="uPicker" :columns="columnData" @confirm="confirm"
@cancel="showPicker = false" @change="changeHandler" keyName="name"></u-picker>
<!-- <u-picker :defaultIndex="defaInd" :show="showPicker" ref="uPicker" :columns="columnData" @confirm="confirm"
@cancel="showPicker = false" @change="changeHandler" keyName="name"></u-picker> -->
</view>
</template>
@ -108,7 +108,7 @@
created() {
this.getBanner()
this.Area()
// this.Area()
},
@ -120,11 +120,6 @@
});
},
onShow() {
this.getBanner()
this.Area()
},
methods: {
swiperClick(item) {
const url = item.info[1].value
@ -236,7 +231,7 @@
width: 102%;
height: 133px;
border-radius: 30px 30px 0 0;
background-color: #fff;
background-color: #f8f8f8;
}
.bg-img {
@ -294,7 +289,7 @@
.search_content {
margin: 0 auto;
width: 724rpx;
height: 74rpx;
height: 64rpx;
padding: 2px 2px 2px 21.05rpx;
border-radius: 175rpx;
background: #fff;
@ -312,8 +307,8 @@
.search_btn {
color: #fff;
width: 105.26rpx;
height: 52.63rpx;
line-height: 52.63rpx;
height: 56rpx;
line-height: 56rpx;
background: #f84221;
border-radius: 100px;
font-size: 28.07rpx;

View File

@ -7,6 +7,9 @@ let httpApi
let httpApiTwo
let httpApiThree
let httpApiFour
let httpApiFive
let httpApiSix
let wsApi
// 在打包之前请检查当前环境是否正确
const env = 'dev'; // 开发
@ -19,26 +22,33 @@ switch (env) {
httpApiTwo = 'https://nk.lihaink.cn'
httpApiThree = 'http://ceshi-oa.lihaink.cn'
httpApiFour = 'https://worker-task.lihaink.cn'
httpApiSix = 'https://new-worker.lihaink.cn'
wsApi = 'wss://shop.lihaink.cn'
break;
case 'prew':
httpApi = 'https://test.shop.lihaink.cn' //预发布环境
httpApiTwo = "https://nk.lihaink.cn"
httpApiThree = 'http://ceshi-oa.lihaink.cn'
httpApiFour = 'https://preview-worker-task.lihaink.cn'
httpApiSix = 'https://ceshi-new-wokr.lihaink.cn'
wsApi = 'wss://test.shop.lihaink.cn'
break;
default:
httpApi = "https://crmeb-test.shop.lihaink.cn" // 测试
httpApiTwo = "https://nk.lihaink.cn"
httpApiThree = 'http://ceshi-oa.lihaink.cn'
httpApiFour = 'https://ceshi-worker-task.lihaink.cn'
httpApiFive = 'https://ceshi-zhibo.lihaink.cn'
httpApiSix = 'https://ceshi-new-wokr.lihaink.cn'
wsApi = 'wss://crmeb-test.shop.lihaink.cn'
}
const ossUrl = 'https://lihai001.oss-cn-chengdu.aliyuncs.com/public'
// httpApi=''
// 聊天接口修改此字符 小程序聊天要求wss 例如wss://mer.crmeb.net
// let wsApi = 'ws://192.168.3.20:8324'
let wsApi = 'wss://shop.lihaink.cn'
// wsApi = 'ws://192.168.1.17:8324'
let wsApi_one = 'wss://ceshi-zhibo.lihaink.cn/chat_room'
module.exports = {
// 请求域名 格式: https://您的域名
@ -48,18 +58,27 @@ module.exports = {
HTTP_REQUEST_URL_TWO: httpApiTwo,
HTTP_REQUEST_URL_THREE: httpApiThree,
HTTP_REQUEST_URL_FOUR: httpApiFour,
HTTP_REQUEST_URL_FIVE: httpApiFive,
HTTP_REQUEST_URL_SIX: httpApiSix,
VUE_APP_WS_URL: `${wsApi}?type=user`,
VUE_APP_WS_URL_ONE:wsApi_one,
// #endif
// #ifdef H5
//H5接口是浏览器地址
HTTP_REQUEST_URL_FOUR: httpApiFour|| window.location.protocol + "//" + window.location.host,
HTTP_REQUEST_URL: httpApi || window.location.protocol + "//" + window.location.host,
HTTP_REQUEST_URL_TWO: httpApiTwo || window.location.protocol + "//" + window.location.host,
HTTP_REQUEST_URL: process.env.NODE_ENV == 'development'? httpApi : window.location.protocol + "//" + window.location.host,
HTTP_REQUEST_URL_TWO: httpApiTwo,
HTTP_REQUEST_URL_FIVE: httpApiFive,
HTTP_REQUEST_URL_SIX: httpApiSix,
HTTP_REQUEST_URL_FOUR: window.location.host == 'shop.lihaink.cn' ?'https://worker-task.lihaink.cn':window.location.host == 'test.shop.lihaink.cn'?'https://preview-worker-task.lihaink.cn':'https://ceshi-worker-task.lihaink.cn',
// 聊天长连接地址
VUE_APP_WS_URL: wsApi ? `${wsApi}?type=user` : VUE_APP_WS_URL,
// #endif
openPlantGrass: openPlantGrass,
ENV: env,
OSS_URL: ossUrl,
HEADER: {
'content-type': 'application/json',
//#ifdef H5

View File

@ -17,10 +17,14 @@ import {
} from '@/config/app';
import skeleton from './components/skeleton/index.vue'
import BaseMoney from './components/BaseMoney.vue';
import Loading from './components/Loading.vue';
import activityHome from './components/activityHome.vue';
import uView from '@/uni_modules/uview-ui'
Vue.use(uView)
Vue.component('skeleton', skeleton)
Vue.component('BaseMoney', BaseMoney)
Vue.component('Loading', Loading)
Vue.component('activityHome', activityHome)
Vue.prototype.$util = util;
Vue.prototype.$Cache = Cache;
Vue.prototype.$eventHub = new Vue();

View File

@ -2,8 +2,8 @@
"name" : "惠农生活",
"appid" : "__UNI__3A527D1",
"description" : "",
"versionName" : "1.4.7",
"versionCode" : 147,
"versionName" : "1.8.0",
"versionCode" : 180,
"transformPx" : false,
/* 5+App */
"app-plus" : {
@ -12,8 +12,11 @@
"nvueCompiler" : "uni-app",
"nvueStyleCompiler" : "uni-app",
"compilerVersion" : 3,
"compatible" : {
"ignoreVersion" : true //trueHBuilderX1.9.0
},
"splashscreen" : {
"alwaysShowBeforeRender" : true,
"alwaysShowBeforeRender" : false,
"waiting" : true,
"autoclose" : true,
"delay" : 0
@ -32,7 +35,9 @@
"description" : "uni小程序"
},
"Maps" : {},
"Push" : {}
"Push" : {},
"LivePusher" : {},
"Record" : {}
},
"safearea" : {
"bottom" : {
@ -45,6 +50,8 @@
"android" : {
"resizeableActivity" : true,
"permissions" : [
"<uses-feature android:name=\"android.hardware.camera\"/>",
"<uses-feature android:name=\"android.hardware.camera.autofocus\"/>",
"<uses-permission android:name=\"android.permission.ACCESS_COARSE_LOCATION\"/>",
"<uses-permission android:name=\"android.permission.ACCESS_FINE_LOCATION\"/>",
"<uses-permission android:name=\"android.permission.ACCESS_LOCATION_EXTRA_COMMANDS\"/>",
@ -58,17 +65,17 @@
"<uses-permission android:name=\"android.permission.CHANGE_CONFIGURATION\"/>",
"<uses-permission android:name=\"android.permission.CHANGE_NETWORK_STATE\"/>",
"<uses-permission android:name=\"android.permission.CHANGE_WIFI_STATE\"/>",
"<uses-permission android:name=\"android.permission.FLASHLIGHT\"/>",
"<uses-permission android:name=\"android.permission.INTERNET\"/>",
"<uses-permission android:name=\"android.permission.MODIFY_AUDIO_SETTINGS\"/>",
"<uses-permission android:name=\"android.permission.MOUNT_UNMOUNT_FILESYSTEMS\"/>",
"<uses-permission android:name=\"android.permission.READ_LOGS\"/>",
"<uses-permission android:name=\"android.permission.READ_PHONE_STATE\"/>",
"<uses-permission android:name=\"android.permission.RECORD_AUDIO\"/>",
"<uses-permission android:name=\"android.permission.VIBRATE\"/>",
"<uses-permission android:name=\"android.permission.WAKE_LOCK\"/>",
"<uses-permission android:name=\"android.permission.WRITE_EXTERNAL_STORAGE\"/>",
"<uses-permission android:name=\"android.permission.WRITE_SETTINGS\"/>",
"<uses-permission android:name=\"android.permission.BLUETOOTH\"/>",
"<uses-permission android:name=\"android.permission.BLUETOOTH_ADMIN\"/>"
"<uses-permission android:name=\"android.permission.WRITE_SETTINGS\"/>"
],
"abiFilters" : [ "armeabi-v7a", "arm64-v8a", "x86" ],
"permissionExternalStorage" : {
@ -77,7 +84,9 @@
},
"permissionPhoneState" : {
"request" : "none" //
}
},
"targetSdkVersion" : 30,
"minSdkVersion" : 23
},
/* ios */
"ios" : {
@ -87,7 +96,8 @@
"NSCameraUsageDescription" : "上传用户头像保存分享海报",
"NSLocationWhenInUseUsageDescription" : "根据客户地理位置推荐最近门店",
"NSLocationAlwaysUsageDescription" : "根据客户地理位置推荐最近门店",
"NSLocationAlwaysAndWhenInUseUsageDescription" : "根据客户地理位置推荐最近门店"
"NSLocationAlwaysAndWhenInUseUsageDescription" : "根据客户地理位置推荐最近门店",
"NSMicrophoneUsageDescription" : "根据用户录音进行语音识别转文字"
},
"idfa" : false,
"dSYMs" : false
@ -97,7 +107,8 @@
"maps" : {
"amap" : {
"appkey_ios" : "82af93ec51139c712c4118d84ba684ee",
"appkey_android" : "0799f37420c0784f1e6cba230a68bdb1"
"appkey_android" : "0799f37420c0784f1e6cba230a68bdb1",
"name" : "amap_18982406440DFVLElaO"
}
},
"payment" : {
@ -117,7 +128,8 @@
"amap" : {
"__platform__" : [ "ios", "android" ],
"appkey_ios" : "82af93ec51139c712c4118d84ba684ee",
"appkey_android" : "0799f37420c0784f1e6cba230a68bdb1"
"appkey_android" : "0799f37420c0784f1e6cba230a68bdb1",
"name" : "amap_18982406440DFVLElaO"
}
},
"oauth" : {},
@ -157,7 +169,17 @@
}
},
"splashscreen" : {
"useOriginalMsgbox" : true
"useOriginalMsgbox" : true,
"androidStyle" : "default",
"iosStyle" : "common",
"ios" : {
"storyboard" : "C:/Users/ghf/Downloads/CustomStoryboard.zip"
},
"android" : {
"hdpi" : "",
"xhdpi" : "",
"xxhdpi" : "static/images/guide.png"
}
}
},
"nativePlugins" : {
@ -328,8 +350,10 @@
"domain" : "",
"sdkConfigs" : {
"maps" : {
"qqmap" : {
"key" : "SMJBZ-WCHK4-ZPZUA-DSIXI-XDDVQ-XWFX7"
"amap" : {
"key" : "275cd3601b1b2d6414f6c988e7911664",
"securityJsCode" : "d2d7c56801819e8bdf71b8a71846f235",
"serviceHost" : ""
}
}
},

109
package-lock.json generated
View File

@ -1,24 +1,23 @@
{
"requires": true,
"name": "e-select下拉选择器",
"version": "1.0.7",
"lockfileVersion": 1,
"requires": true,
"dependencies": {
"ansi-regex": {
"version": "2.1.1",
"resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz",
"integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=",
"dev": true
"integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8="
},
"ansi-styles": {
"version": "2.2.1",
"resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz",
"integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=",
"dev": true
"integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4="
},
"babel-code-frame": {
"version": "6.26.0",
"resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.26.0.tgz",
"integrity": "sha1-Y/1D99weO7fONZR9uP42mj9Yx0s=",
"dev": true,
"requires": {
"chalk": "^1.1.3",
"esutils": "^2.0.2",
@ -29,7 +28,6 @@
"version": "6.26.3",
"resolved": "https://registry.npmjs.org/babel-core/-/babel-core-6.26.3.tgz",
"integrity": "sha512-6jyFLuDmeidKmUEb3NM+/yawG0M2bDZ9Z1qbZP59cyHLz8kYGKYwpJP0UwUKKUiTRNvxfLesJnTedqczP7cTDA==",
"dev": true,
"requires": {
"babel-code-frame": "^6.26.0",
"babel-generator": "^6.26.0",
@ -56,7 +54,6 @@
"version": "6.26.1",
"resolved": "https://registry.npmjs.org/babel-generator/-/babel-generator-6.26.1.tgz",
"integrity": "sha512-HyfwY6ApZj7BYTcJURpM5tznulaBvyio7/0d4zFOeMPUmfxkCjHocCuoLa2SAGzBI8AREcH3eP3758F672DppA==",
"dev": true,
"requires": {
"babel-messages": "^6.23.0",
"babel-runtime": "^6.26.0",
@ -72,7 +69,6 @@
"version": "6.24.1",
"resolved": "https://registry.npmjs.org/babel-helpers/-/babel-helpers-6.24.1.tgz",
"integrity": "sha1-NHHenK7DiOXIUOWX5Yom3fN2ArI=",
"dev": true,
"requires": {
"babel-runtime": "^6.22.0",
"babel-template": "^6.24.1"
@ -82,7 +78,6 @@
"version": "6.23.0",
"resolved": "https://registry.npmjs.org/babel-messages/-/babel-messages-6.23.0.tgz",
"integrity": "sha1-8830cDhYA1sqKVHG7F7fbGLyYw4=",
"dev": true,
"requires": {
"babel-runtime": "^6.22.0"
}
@ -91,7 +86,6 @@
"version": "6.26.0",
"resolved": "https://registry.npmjs.org/babel-register/-/babel-register-6.26.0.tgz",
"integrity": "sha1-btAhFz4vy0htestFxgCahW9kcHE=",
"dev": true,
"requires": {
"babel-core": "^6.26.0",
"babel-runtime": "^6.26.0",
@ -106,7 +100,6 @@
"version": "6.26.0",
"resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz",
"integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=",
"dev": true,
"requires": {
"core-js": "^2.4.0",
"regenerator-runtime": "^0.11.0"
@ -116,7 +109,6 @@
"version": "6.26.0",
"resolved": "https://registry.npmjs.org/babel-template/-/babel-template-6.26.0.tgz",
"integrity": "sha1-3gPi0WOWsGn0bdn/+FIfsaDjXgI=",
"dev": true,
"requires": {
"babel-runtime": "^6.26.0",
"babel-traverse": "^6.26.0",
@ -129,7 +121,6 @@
"version": "6.26.0",
"resolved": "https://registry.npmjs.org/babel-traverse/-/babel-traverse-6.26.0.tgz",
"integrity": "sha1-RqnL1+3MYsjlwGTi0tjQ9ANXZu4=",
"dev": true,
"requires": {
"babel-code-frame": "^6.26.0",
"babel-messages": "^6.23.0",
@ -146,7 +137,6 @@
"version": "6.26.0",
"resolved": "https://registry.npmjs.org/babel-types/-/babel-types-6.26.0.tgz",
"integrity": "sha1-o7Bz+Uq0nrb6Vc1lInozQ4BjJJc=",
"dev": true,
"requires": {
"babel-runtime": "^6.26.0",
"esutils": "^2.0.2",
@ -157,20 +147,17 @@
"babylon": {
"version": "6.18.0",
"resolved": "https://registry.npmjs.org/babylon/-/babylon-6.18.0.tgz",
"integrity": "sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ==",
"dev": true
"integrity": "sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ=="
},
"balanced-match": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz",
"integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=",
"dev": true
"integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c="
},
"brace-expansion": {
"version": "1.1.11",
"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
"integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
"dev": true,
"requires": {
"balanced-match": "^1.0.0",
"concat-map": "0.0.1"
@ -180,7 +167,6 @@
"version": "1.1.3",
"resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz",
"integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=",
"dev": true,
"requires": {
"ansi-styles": "^2.2.1",
"escape-string-regexp": "^1.0.2",
@ -192,14 +178,12 @@
"concat-map": {
"version": "0.0.1",
"resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
"integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=",
"dev": true
"integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s="
},
"convert-source-map": {
"version": "1.7.0",
"resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.7.0.tgz",
"integrity": "sha512-4FJkXzKXEDB1snCFZlLP4gpC3JILicCpGbzG9f9G7tGqGCzETQ2hWPrcinA9oU4wtf2biUaEH5065UnMeR33oA==",
"dev": true,
"requires": {
"safe-buffer": "~5.1.1"
}
@ -207,14 +191,12 @@
"core-js": {
"version": "2.6.11",
"resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.11.tgz",
"integrity": "sha512-5wjnpaT/3dV+XB4borEsnAYQchn00XSgTAWKDkEqv+K8KevjbzmofK6hfJ9TZIlpj2N0xQpazy7PiRQiWHqzWg==",
"dev": true
"integrity": "sha512-5wjnpaT/3dV+XB4borEsnAYQchn00XSgTAWKDkEqv+K8KevjbzmofK6hfJ9TZIlpj2N0xQpazy7PiRQiWHqzWg=="
},
"debug": {
"version": "2.6.9",
"resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
"integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
"dev": true,
"requires": {
"ms": "2.0.0"
}
@ -223,7 +205,6 @@
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-4.0.0.tgz",
"integrity": "sha1-920GQ1LN9Docts5hnE7jqUdd4gg=",
"dev": true,
"requires": {
"repeating": "^2.0.0"
}
@ -231,26 +212,22 @@
"escape-string-regexp": {
"version": "1.0.5",
"resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
"integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=",
"dev": true
"integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ="
},
"esutils": {
"version": "2.0.3",
"resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz",
"integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==",
"dev": true
"integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g=="
},
"globals": {
"version": "9.18.0",
"resolved": "https://registry.npmjs.org/globals/-/globals-9.18.0.tgz",
"integrity": "sha512-S0nG3CLEQiY/ILxqtztTWH/3iRRdyBLw6KMDxnKMchrtbj2OFmehVh0WUCfW3DUrIgx/qFrJPICrq4Z4sTR9UQ==",
"dev": true
"integrity": "sha512-S0nG3CLEQiY/ILxqtztTWH/3iRRdyBLw6KMDxnKMchrtbj2OFmehVh0WUCfW3DUrIgx/qFrJPICrq4Z4sTR9UQ=="
},
"has-ansi": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz",
"integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=",
"dev": true,
"requires": {
"ansi-regex": "^2.0.0"
}
@ -259,7 +236,6 @@
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/home-or-tmp/-/home-or-tmp-2.0.0.tgz",
"integrity": "sha1-42w/LSyufXRqhX440Y1fMqeILbg=",
"dev": true,
"requires": {
"os-homedir": "^1.0.0",
"os-tmpdir": "^1.0.1"
@ -269,7 +245,6 @@
"version": "2.2.4",
"resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz",
"integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==",
"dev": true,
"requires": {
"loose-envify": "^1.0.0"
}
@ -277,38 +252,32 @@
"is-finite": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.1.0.tgz",
"integrity": "sha512-cdyMtqX/BOqqNBBiKlIVkytNHm49MtMlYyn1zxzvJKWmFMlGzm+ry5BBfYyeY9YmNKbRSo/o7OX9w9ale0wg3w==",
"dev": true
"integrity": "sha512-cdyMtqX/BOqqNBBiKlIVkytNHm49MtMlYyn1zxzvJKWmFMlGzm+ry5BBfYyeY9YmNKbRSo/o7OX9w9ale0wg3w=="
},
"js-tokens": {
"version": "3.0.2",
"resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz",
"integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls=",
"dev": true
"integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls="
},
"jsesc": {
"version": "1.3.0",
"resolved": "https://registry.npmjs.org/jsesc/-/jsesc-1.3.0.tgz",
"integrity": "sha1-RsP+yMGJKxKwgz25vHYiF226s0s=",
"dev": true
"integrity": "sha1-RsP+yMGJKxKwgz25vHYiF226s0s="
},
"json5": {
"version": "0.5.1",
"resolved": "https://registry.npmjs.org/json5/-/json5-0.5.1.tgz",
"integrity": "sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE=",
"dev": true
"integrity": "sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE="
},
"lodash": {
"version": "4.17.15",
"resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz",
"integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==",
"dev": true
"integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A=="
},
"loose-envify": {
"version": "1.4.0",
"resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz",
"integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==",
"dev": true,
"requires": {
"js-tokens": "^3.0.0 || ^4.0.0"
}
@ -317,7 +286,6 @@
"version": "3.0.4",
"resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz",
"integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==",
"dev": true,
"requires": {
"brace-expansion": "^1.1.7"
}
@ -325,14 +293,12 @@
"minimist": {
"version": "1.2.5",
"resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz",
"integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==",
"dev": true
"integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw=="
},
"mkdirp": {
"version": "0.5.5",
"resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz",
"integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==",
"dev": true,
"requires": {
"minimist": "^1.2.5"
}
@ -340,44 +306,37 @@
"ms": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
"integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=",
"dev": true
"integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g="
},
"os-homedir": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz",
"integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=",
"dev": true
"integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M="
},
"os-tmpdir": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz",
"integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=",
"dev": true
"integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ="
},
"path-is-absolute": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
"integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=",
"dev": true
"integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18="
},
"private": {
"version": "0.1.8",
"resolved": "https://registry.npmjs.org/private/-/private-0.1.8.tgz",
"integrity": "sha512-VvivMrbvd2nKkiG38qjULzlc+4Vx4wm/whI9pQD35YrARNnhxeiRktSOhSukRLFNlzg6Br/cJPet5J/u19r/mg==",
"dev": true
"integrity": "sha512-VvivMrbvd2nKkiG38qjULzlc+4Vx4wm/whI9pQD35YrARNnhxeiRktSOhSukRLFNlzg6Br/cJPet5J/u19r/mg=="
},
"regenerator-runtime": {
"version": "0.11.1",
"resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz",
"integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==",
"dev": true
"integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg=="
},
"repeating": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/repeating/-/repeating-2.0.1.tgz",
"integrity": "sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo=",
"dev": true,
"requires": {
"is-finite": "^1.0.0"
}
@ -385,26 +344,22 @@
"safe-buffer": {
"version": "5.1.2",
"resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
"integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==",
"dev": true
"integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g=="
},
"slash": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/slash/-/slash-1.0.0.tgz",
"integrity": "sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU=",
"dev": true
"integrity": "sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU="
},
"source-map": {
"version": "0.5.7",
"resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz",
"integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=",
"dev": true
"integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w="
},
"source-map-support": {
"version": "0.4.18",
"resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.4.18.tgz",
"integrity": "sha512-try0/JqxPLF9nOjvSta7tVondkP5dwgyLDjVoyMDlmjugT2lRZ1OfsrYTkCd2hkDnJTKRbO/Rl3orm8vlsUzbA==",
"dev": true,
"requires": {
"source-map": "^0.5.6"
}
@ -413,7 +368,6 @@
"version": "3.0.1",
"resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz",
"integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=",
"dev": true,
"requires": {
"ansi-regex": "^2.0.0"
}
@ -421,20 +375,17 @@
"supports-color": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz",
"integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=",
"dev": true
"integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc="
},
"to-fast-properties": {
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-1.0.3.tgz",
"integrity": "sha1-uDVx+k2MJbguIxsG46MFXeTKGkc=",
"dev": true
"integrity": "sha1-uDVx+k2MJbguIxsG46MFXeTKGkc="
},
"trim-right": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/trim-right/-/trim-right-1.0.1.tgz",
"integrity": "sha1-yy4SAwZ+DI3h9hQJS5/kVwTqYAM=",
"dev": true
"integrity": "sha1-yy4SAwZ+DI3h9hQJS5/kVwTqYAM="
}
}
}

View File

@ -12,5 +12,6 @@
"前端组件",
"通用组件"
]
}
}
},
"dependencies": {}
}

View File

@ -1,47 +1,58 @@
{
"pages": [
//#ifdef APP-PLUS
//
{
"path": "pages/guide/judge",
"style": {
"enablePullDownRefresh": false,
"onReachBottomDistance": 100,
"navigationStyle": "custom",
"app-plus": {
"contentAdjust": false,
"bounce": "none"
}
}
},
{
"path": "pages/guide/guide",
"style": {
"enablePullDownRefresh": false,
"onReachBottomDistance": 100,
"navigationStyle": "custom",
"app-plus": {
"contentAdjust": false,
"bounce": "none"
}
}
},
// #endif
//pageshttps://uniapp.dcloud.io/collocation/pages
{
"path": "pages/index/index",
"style": {
"navigationBarTitleText": "首页",
"navigationStyle": "custom",
"enablePullDownRefresh": true,
"onReachBottomDistance": 300,
// #ifdef APP-PLUS
"enablePullDownRefresh": true,
// #endif
"app-plus": {
"scrollIndicator": false //
}
}
},
{
"path": "pages/index/index",
"path": "pages/supply_chains/supply_chains",
"style": {
"navigationBarTitleText": "首页",
"navigationBarTitleText": "供应",
"enablePullDownRefresh": true,
"navigationStyle": "custom",
"enablePullDownRefresh": true,
// #ifdef APP-PLUS
"enablePullDownRefresh": true,
// #endif
"app-plus": {
"scrollIndicator": false //
}
"onReachBottomDistance": 300
}
},
//#ifdef APP-PLUS
//
{
"path": "pages/guide/judge",
"style": {
"enablePullDownRefresh": false,
"onReachBottomDistance": 100,
"navigationStyle": "custom",
"app-plus": {
"contentAdjust": false,
"bounce": "none"
}
}
},
{
"path": "pages/guide/guide",
"style": {
"enablePullDownRefresh": false,
"onReachBottomDistance": 100,
"navigationStyle": "custom",
"app-plus": {
"contentAdjust": false,
"bounce": "none"
}
}
},
// #endif
{
"path": "pages/gather/gather",
"style": {
@ -64,6 +75,27 @@
"navigationBarTitleText": "购物车"
}
},
{
"path": "pages/room/index",
"style": {
"navigationBarTitleText": "直播列表",
"enablePullDownRefresh": true
}
},
{
"path": "pages/room/spectator",
"style": {
"navigationStyle": "custom",
"navigationBarTitleText": "直播间"
}
}
,{
"path": "pages/room/histroyroom",
"style": {
"navigationBarTitleText": "历史直播间",
"navigationStyle": "custom"
}
},
{
"path": "pages/plant_grass/index",
"style": {
@ -113,15 +145,8 @@
"style": {
"navigationBarTitleText": "支付提示"
}
}, {
"path": "pages/supply_chains/supply_chains",
"style": {
"navigationBarTitleText": "供应",
"enablePullDownRefresh": true,
"navigationStyle": "custom"
}
}, {
},
{
"path": "pages/moreProject/moreProject",
"style": {
"navigationBarTitleText": "商户平台",
@ -151,10 +176,142 @@
"path" : "pages/margin/margin",
"style" :
{
"navigationBarTitleText":"缴纳保证金",
"navigationBarTitleText":"缴纳金",
"enablePullDownRefresh": false
}
},
{
"path" : "pages/select_address/select_address",
"style" :
{
"navigationBarTitleText" : "选择位置",
"enablePullDownRefresh" : false
}
},
{
"path" : "pages/select_address/select_address_n",
"style" :
{
"navigationBarTitleText" : "选择位置",
"enablePullDownRefresh" : false
}
},
{
"path" : "pages/newActivity/activityDetail/activityDetail",
"style" :
{
"navigationBarTitleText": "活动",
"enablePullDownRefresh": true,
"navigationStyle": "custom",
"onReachBottomDistance": 300
}
},
{
"path" : "pages/newActivity/subsidy/subsidy",
"style" :
{
"navigationBarTitleText": "补贴记录",
"enablePullDownRefresh": true,
"navigationStyle": "custom",
"onReachBottomDistance": 300
}
},
{
"path" : "pages/newActivity/invitation/invitation",
"style" :
{
"navigationBarTitleText": "拉新活动",
"enablePullDownRefresh": true,
"navigationStyle": "custom",
"onReachBottomDistance": 300
}
},
{
"path" : "pages/redpacket/redpacket",
"style" :
{
"navigationBarTitleText" : "红包",
"enablePullDownRefresh" : false
}
},
{
"path" : "pages/redpacket/redpack_type",
"style" :
{
"navigationBarTitleText" : "红包余额",
"enablePullDownRefresh": false,
"navigationStyle": "custom",
"onReachBottomDistance": 300
}
},
{
"path" : "pages/newActivity/subsidy/subsidy2",
"style" :
{
"navigationBarTitleText" : "实物通用红包",
"enablePullDownRefresh": false,
"navigationStyle": "custom",
"onReachBottomDistance": 300
}
},
{
"path" : "pages/newActivity/subsidy/subsidy3",
"style" :
{
"navigationBarTitleText" : "现金抵扣红包",
"enablePullDownRefresh": false,
"navigationStyle": "custom",
"onReachBottomDistance": 300
}
},
{
"path" : "pages/newActivity/towPrice/towPrice",
"style" :
{
"navigationBarTitleText" : "两元专区",
"enablePullDownRefresh": false,
"navigationStyle": "custom",
"onReachBottomDistance": 300
}
},
{
"path" : "pages/order_addcart/order_addcart_t",
"style" :
{
"navigationBarTitleText" : "购物车",
"enablePullDownRefresh" : false
}
},
{
"path" : "pages/newActivity/giftBag/giftBag",
"style" :
{
"navigationBarTitleText" : "新人礼包",
"enablePullDownRefresh": false,
"navigationStyle": "custom",
"onReachBottomDistance": 300
}
},
{
"path" : "pages/helpPeople/helpPeople",
"style" :
{
"navigationBarTitleText" : "",
"enablePullDownRefresh": false,
"navigationStyle": "custom",
"onReachBottomDistance": 300
}
},
{
"path" : "pages/helpPeople/formTable",
"style" :
{
"navigationBarTitleText" : "信息收集",
"enablePullDownRefresh": false,
"navigationStyle": "custom",
"onReachBottomDistance": 300
}
}
],
"subPackages": [{
@ -179,6 +336,15 @@
"navigationBarTextStyle": "#fff"
// #endif
}
},{
"path": "index_v",
"style": {
"navigationStyle": "custom"
// #ifdef MP || APP-PLUS
,
"navigationBarTextStyle": "#fff"
// #endif
}
}]
},
{
@ -272,6 +438,17 @@
}
},
{
"path": "supply_chain/supplierB",
"style": {
"enablePullDownRefresh": true,
"navigationBarTitleText": "",
"navigationBarBackgroundColor": "#e93323",
"navigationStyle": "custom",
"onReachBottomDistance": 300
}
},
{
"path": "supply_chain/suppliers",
"style": {
@ -326,6 +503,22 @@
"enablePullDownRefresh": true
}
}, {
"path": "cloud_entrepot/indexb",
"style": {
"navigationStyle": "custom",
"navigationBarTitleText": "里海云仓",
"enablePullDownRefresh": true
}
},{
"path": "cloud_entrepot/indexh",
"style": {
"navigationStyle": "custom",
"navigationBarTitleText": "里海云仓",
"enablePullDownRefresh": true
}
}, {
"path": "teach_video/teach_video",
"style": {
@ -342,6 +535,14 @@
"navigationStyle": "custom"
}
},{
"path": "specialty/short_index",
"style": {
"navigationBarTitleText": "集体店铺",
"enablePullDownRefresh": false,
"navigationStyle": "custom"
}
}, {
"path": "specialty/indexa",
"style": {
@ -467,6 +668,14 @@
"navigationBarTitleText": "我的账户"
}
},
{
"path" : "user_money/money",
"style" :
{
"navigationBarTitleText" : "我的余额",
"enablePullDownRefresh" : false
}
},
{
"path": "user_bill/index",
"style": {
@ -995,11 +1204,25 @@
"navigationBarTitleText": "商家入驻"
}
}, {
},
{
"path": "settled/unit",
"style": {
"navigationStyle": "custom",
"navigationBarTitleText": "个人入驻"
}
},
{
"path": "applicationRecord/index",
"style": {
"navigationBarTitleText": "申请记录"
}
}, {
"path": "applicationRecord/unit",
"style": {
"navigationBarTitleText": "申请记录"
}
}, {
"path": "merchantDetails/index",
"style": {
@ -1617,39 +1840,47 @@
"selectedColor": "#E93323",
"borderStyle": "white",
"backgroundColor": "#ffffff",
"iconWidth": "36",
"list": [{
"list": [
// {
// "pagePath": "pages/supply_chains/supply_chains",
// "iconPath": "static/tabbar_icon/d.png",
// "selectedIconPath": "static/tabbar_icon/d-a.png",
// "text": "供销"
// },
{
"pagePath": "pages/index/index",
"iconPath": "static/tabbar_icon/a.png",
"selectedIconPath": "static/tabbar_icon/a-a.png",
"text": "泸州"
"selectedIconPath": "static/tabbar_icon/a-a.png"
// "text": "泸州"
// "text": "供销"
},
{
"pagePath": "pages/gather/gather",
"iconPath": "static/tabbar_icon/b.png",
"selectedIconPath": "static/tabbar_icon/b-a.png",
"text": "生产"
"selectedIconPath": "static/tabbar_icon/b-a.png"
// "text": "生产"
},
{
"pagePath": "pages/plant_release/index",
"iconPath": "static/tabbar_icon/c.png",
"selectedIconPath": "static/tabbar_icon/c-a.png",
"text": "发布"
// {
// "pagePath": "pages/plant_release/index",
// "iconPath": "static/tabbar_icon/c.png",
// "selectedIconPath": "static/tabbar_icon/c-a.png",
// "text": "发布"
},
{
"pagePath": "pages/supply_chains/supply_chains",
"iconPath": "static/tabbar_icon/d.png",
"selectedIconPath": "static/tabbar_icon/d-a.png",
"text": "供销"
},
// },
{
"pagePath": "pages/order_addcart/order_addcart_t",
"iconPath": "static/tabbar_icon/d.png",
"selectedIconPath": "static/tabbar_icon/d-a.png"
// "text": "购物车"
},
{
"pagePath": "pages/user/index",
"iconPath": "static/tabbar_icon/e.png",
"selectedIconPath": "static/tabbar_icon/e-a.png",
"text": "我的"
"selectedIconPath": "static/tabbar_icon/e-a.png"
// "text": "我的"
}
]

View File

@ -6,10 +6,11 @@
<view class="iconfont icon-xiangzuo"></view>
</view>
<view class='input acea-row row-between-wrapper'><text class='iconfont icon-sousuo'></text>
<input placeholder='搜索店铺名称' placeholder-class='placeholder' confirm-type='search' name="search" :value='sotreParam.keyword'
@confirm="searchSubmit"></input>
<input placeholder='搜索店铺名称' placeholder-class='placeholder' confirm-type='search' name="search"
:value='sotreParam.keyword' @confirm="searchSubmit"></input>
</view>
<view v-if="mer_location == 1" style="text-align: right;" class='iconfont search-right' @click='showMaoLocation(latitude,longitude)'>
<view v-if="mer_location == 1" style="text-align: right;" class='iconfont search-right'
@click='showMaoLocation(latitude,longitude)'>
<view class="iconfont icon-dingwei"></view>
<view class="right-text" v-if="recommend_address">
{{recommend_address}}
@ -19,7 +20,8 @@
</view>
<view class="nav-wrapper">
<view class='nav acea-row row-middle'>
<view v-for="item in downMenus" :key="item.key" class='item' :class="{'font-colors':firstKey == item.key}" @click='set_where(item.key)'>
<view v-for="item in downMenus" :key="item.key" class='item'
:class="{'font-colors':firstKey == item.key}" @click='set_where(item.key)'>
<view>
{{item.title}}
</view>
@ -30,7 +32,7 @@
</view>
<!-- 店铺 -->
<block>
<view class="mer-box"v-if="storeList.length > 0">
<view class="mer-box" v-if="storeList.length > 0">
<view class="mer-item" v-for="(item,index) in storeList" :key='index'>
<view class="mer-hd" @click="goStore(item.mer_id)">
<image :src="item.mini_banner?item.mini_banner:item.mer_banner"></image>
@ -47,7 +49,8 @@
{{item.care_count<10000 ? item.care_count : (item.care_count/10000).toFixed(2)+''}}人关注
</view>
<view class="line" v-if="item.distance"></view>
<view class="distance" v-if="item.distance" @click.stop="showStoreLocation(item)">
<view class="distance" v-if="item.distance"
@click.stop="showStoreLocation(item)">
<view class="">
{{item.distance}}
</view>
@ -58,8 +61,9 @@
</view>
</view>
<view class="pro-box">
<navigator :url="`/pages/goods_details/index?id=${itemn.product_id}`" hover-class="none" class="pro-item" v-for="(itemn,indexn) in item.recommend"
:key='indexn' v-if="item.recommend.length<=3">
<navigator :url="`/pages/goods_details/index?id=${itemn.product_id}`" hover-class="none"
class="pro-item" v-for="(itemn,indexn) in item.recommend" :key='indexn'
v-if="item.recommend.length<=3">
<image :src="itemn.image" mode=""></image>
<view class="price">
<text></text>{{itemn.price}}
@ -103,7 +107,8 @@
} from "vuex";
import {
goShopDetail
} from '@/libs/order.js'
} from '@/libs/order.js';
import { wgsToGcj } from "@/utils/wgs.js";
const app = getApp();
export default {
data() {
@ -186,7 +191,7 @@
}
}
});
},
computed: {
downMenus: function() {
@ -203,7 +208,7 @@
onLoad: function(options) {
this.mer_id = options.mer_id;
},
methods: {
methods: {
//
showMaoLocation(lat, long) {
// console.log(lat, long)
@ -215,11 +220,11 @@
this.$wechat.seeLocation({
latitude: Number(lat),
longitude: Number(long)
}).then(res=>{
}).then(res => {
// console.log('success');
})
}else{
//#endif
} else {
//#endif
uni.openLocation({
latitude: parseFloat(lat),
longitude: parseFloat(long),
@ -228,7 +233,7 @@
// console.log(res)
},
});
// #ifdef H5
// #ifdef H5
}
//#endif
},
@ -243,31 +248,33 @@
latitude: Number(item.lat),
longitude: Number(item.long),
name: item.mer_name,
address: item.mer_address ? item.mer_address: '',
}).then(res=>{
address: item.mer_address ? item.mer_address : '',
}).then(res => {
// console.log('success');
})
}else{
//#endif
} else {
//#endif
uni.openLocation({
latitude: parseFloat(item.lat),
longitude: parseFloat(item.long),
scale: 8,
name: item.mer_name,
address: item.mer_address ? item.mer_address: '',
address: item.mer_address ? item.mer_address : '',
success: function(res) {
// console.log(res)
},
});
// #ifdef H5
// #ifdef H5
}
//#endif
},
selfLocation() {
let self = this
if (uni.getStorageSync('RejectTarget')) return
uni.getLocation({
type: 'gcj02',
success: (res) => {
res = wgsToGcj(res);
let latitude, longitude;
latitude = res.latitude.toString();
longitude = res.longitude.toString();
@ -279,8 +286,9 @@
}).then(res => {
// console.log(res)
this.detaile_address = res.data.address;
this.recommend_address = res.data.address.length > 4 ? res.data.address.slice(0,4) + '...' : res.data.address
uni.setStorageSync('adress_location',res.data.address)
this.recommend_address = res.data.address.length > 4 ? res.data.address
.slice(0, 4) + '...' : res.data.address
uni.setStorageSync('adress_location', res.data.address)
})
},
fail: (res) => {
@ -379,6 +387,7 @@
display: flex;
flex-wrap: nowrap;
background: var(--view-theme);
.search-right {
display: flex;
align-items: center;
@ -387,6 +396,7 @@
flex: 1;
padding-left: 20rpx;
}
.right-text {
overflow: hidden;
text-overflow: ellipsis;
@ -397,12 +407,14 @@
color: #fff;
padding: 0 10rpx;
}
.icon-xiangyou,
.icon-dingwei {
font-size: 30rpx;
color: #fff;
}
}
.productList .search .back {
display: flex;
align-items: center;
@ -414,6 +426,7 @@
font-size: 36rpx;
}
}
.productList .search .input {
flex: 1;
// width: 540rpx;
@ -423,19 +436,23 @@
padding: 0 20rpx;
box-sizing: border-box;
}
.productList .search .input input {
flex: 1;
height: 100%;
font-size: 26rpx;
margin-left: 10rpx;
}
.productList .search .input .placeholder {
color: #999;
}
.productList .search .input .iconfont {
font-size: 35rpx;
color: #555;
}
.productList .search .icon-pailie,
.productList .search .icon-tupianpailie {
color: #fff;
@ -444,6 +461,7 @@
height: 86rpx;
line-height: 86rpx;
}
.productList .nav-wrapper {
z-index: 9;
position: fixed;
@ -452,9 +470,11 @@
width: 100%;
margin-top: 86rpx;
background-color: $theme-color;
.tab-bar {
display: flex;
align-items: center;
.tab-item {
position: relative;
flex: 1;
@ -465,6 +485,7 @@
color: #fff;
font-size: 28rpx;
font-weight: bold;
&::after {
content: ' ';
position: absolute;
@ -475,6 +496,7 @@
background: transparent;
transform: translateX(-50%);
}
&.on {
&::after {
background: #fff;
@ -483,6 +505,7 @@
}
}
}
.productList .nav {
height: 86rpx;
color: #454545;
@ -492,6 +515,7 @@
justify-content: space-between;
padding: 0 28rpx;
}
.productList .nav .item {
display: flex;
align-items: center;
@ -500,10 +524,12 @@
color: #FFFFFF;
flex: 1;
}
.productList .nav .item.font-colors {
font-weight: 500;
color: #FFFFFF;
}
.productList .nav .item .font-line {
height: 4rpx;
background-color: #fff;
@ -517,26 +543,32 @@
-o-animation: line 0.3s;
/* Opera */
}
@keyframes line {
from {
width: 0rpx;
}
to {
width: 28rpx;
}
}
.productList .nav .item image {
width: 15rpx;
height: 19rpx;
margin-left: 10rpx;
}
.mer-box {
padding: 20rpx 20rpx;
margin-top: 168rpx;
.mer-item {
margin-bottom: 20rpx;
background-color: #fff;
border-radius: 16rpx;
.mer-hd {
position: relative;
width: 100%;
@ -544,10 +576,12 @@
border-radius: 16rpx 16rpx 0 0;
overflow: hidden;
display: flex;
image {
width: 100%;
height: 100%;
}
.mer-name {
position: absolute;
left: 20rpx;
@ -555,6 +589,7 @@
display: flex;
align-items: center;
padding: 0 10rpx;
image {
width: 79rpx;
height: 79rpx;
@ -562,6 +597,7 @@
border-radius: 50%;
margin-right: 10rpx;
}
.mer-top {
display: flex;
align-items: center;
@ -569,6 +605,7 @@
font-size: 28rpx;
font-weight: bold;
margin-bottom: 6rpx;
.font-bg-red {
margin-left: 20rpx;
font-size: 18rpx;
@ -579,60 +616,72 @@
width: auto;
}
}
.mer-btn {
color: rgba($color: #fff, $alpha: 0.7);
font-size: 24rpx;
display: flex;
align-items: center;
.line {
width: 2rpx;
height: 18rpx;
color: rgba($color: #fff, $alpha: 0.7);
margin: 0 12rpx;
}
.distance {
display: flex;
align-items: center;
font-size: 24rpx;
color: rgba($color: #fff, $alpha: 0.7);
.iconfont {
font-size: 24rpx;
line-height: 24rpx;
}
}
}
.txt {
flex: 1;
}
}
}
.pro-box {
display: flex;
align-items: center;
padding: 20rpx 20rpx 30rpx;
.pro-item {
width: 218rpx;
margin-right: 14rpx;
image {
width: 100%;
height: 214rpx;
border-radius: 8rpx;
}
.price {
margin-top: 5rpx;
font-size: 28rpx;
color: var(--view-priceColor);
font-weight: bold;
text {
font-size: 28rpx;
}
}
&:last-child {
margin-right: 0;
}
}
}
}
.more-shop {
display: flex;
align-items: center;
@ -653,6 +702,7 @@
background-color: #fff;
padding-bottom: calc(100% - 40rpx);
padding-top: 200rpx;
.pictrue {
display: flex;
flex-direction: column;
@ -665,4 +715,4 @@
}
}
}
</style>
</style>

View File

@ -91,6 +91,7 @@
import authorize from '@/components/Authorize';
import emptyPage from '@/components/emptyPage.vue'
import { configMap } from '@/utils';
import { navigateBack } from '../../../libs/uniApi';
const app = getApp();
export default {
components: {
@ -198,6 +199,14 @@
that.$util.Tips({
title: res.message
});
if(res.status==200){
// uni.redirectTo({
// url:'/admin/orderList/index?types=4&merId='+that.mer_id
// })
uni.navigateBack({
delta:2
})
}
that.getOrderData();
})
.catch(res => {

View File

@ -54,7 +54,7 @@
</view>
<view class="bottom" @click="navTo('/subpkg/orderDetail/orderDetail')">
<view class="item">
<view>履约保证金额()</view>
<view>履约金额()</view>
<view class="num" v-show="eyeType">{{
userInfo.deposit || 0.0
}}</view>

View File

@ -264,14 +264,22 @@
</view>
<view class='product-intro' id="past3">
<view class='title'>产品介绍</view>
<jyf-parser v-if="description.type == 0" :domain='domain' :html="description.content.replace(/<br\/>/ig, '')"
ref="article" :tag-style="tagStyle"></jyf-parser>
<!-- #ifndef APP-PLUS -->
<jyf-parser v-if="description.type == 0 && typeof description.content == 'string'" :domain='domain'
:html="description.content.replace(/<br\/>/ig, '')" ref="article"
:tag-style="tagStyle"></jyf-parser>
<!-- #endif -->
<!-- #ifdef APP-PLUS -->
<view v-if="description.type == 0 && typeof description.content == 'string'" class="description"
v-html="description.content.replace(/<br\/>/ig, '')"></view>
<!-- #endif -->
<view v-else class="product_content">
<view v-if="description.content && description.content.title" class="title">{{description.content.title}}
</view>
<view v-if="description.content && description.content.image" class="pictures">
<image v-for="(item,index) in description.content.image" :key="index" :src="item"></image>
<view v-if="description.content && description.content.title" class="product_content_title">{{description.content.title}}
</view>
<block v-if="description.content && description.content.image">
<image v-for="(item,index) in description.content.image" :key="index" :src="item" mode="widthFix" style="background-color: #fff;width: 100vw;">
</image>
</block>
</view>
</view>
<view style='height:120rpx;'></view>
@ -558,6 +566,23 @@
}
that.$set(that, 'storeInfo', storeInfo);
that.$set(that, 'description', storeInfo.content);
if(typeof that.description.content == 'string'){
try{
that.description.content = JSON.parse(that.description.content);
}catch(e){
console.log(e);
}
}
if (that.description.type == 0 && typeof that.description.content == 'string') {
that.description.content = that.description.content.replace(
/<img/gi,
'<img style="max-width:100%;height:auto;float:left;display:block" '
);
that.description.content = that.description.content.replace(
/<video/gi,
'<video style="width:100%;height:300px;display:block" '
);
}
that.$set(that, 'reply', res.data.topReply ? [res.data.topReply] : []);
that.$set(that.attr, 'productAttr', res.data.attr);
that.$set(that, 'productValue', res.data.sku);
@ -608,6 +633,23 @@
}
that.$set(that, 'storeInfo', storeInfo);
that.$set(that, 'description', storeInfo.content);
if(typeof that.description.content == 'string'){
try{
that.description.content = JSON.parse(that.description.content);
}catch(e){
console.log(e);
}
}
if (that.description.type == 0 && typeof that.description.content == 'string') {
that.description.content = that.description.content.replace(
/<img/gi,
'<img style="max-width:100%;height:auto;float:left;display:block" '
);
that.description.content = that.description.content.replace(
/<video/gi,
'<video style="width:100%;height:300px;display:block" '
);
}
that.$set(that.description, 'type', storeInfo.content.type || 0);
that.$set(that, 'reply', res.data.topReply ? [res.data.topReply] : []);
that.$set(that.attr, 'productAttr', res.data.attr);
@ -1592,4 +1634,19 @@
}
}
}
.product_content{
background-color: #fff;
&_title{
width: 100%;
height: auto;
line-height: 50rpx;
padding: 28rpx;
word-wrap: break-word;
text-align: center;
}
image{
width: 750rpx;
// height: 750rpx;
}
}
</style>

View File

@ -293,6 +293,9 @@
this.merId = option.merId;
this.getIndex();
},
onShow(){
this.getIndex();
},
methods: {
//
popUpClose() {

View File

@ -134,11 +134,15 @@
})
}
}
let params = {
status: that.status,
fail_message: that.fail_message
}
if(that.orderInfo.refund_type == 2){
if(that.orderInfo.refund_type == 2 && that.status != -1){
if (!that.refundInfo.mer_delivery_user) {
return that.$util.Tips({
title: '请填写收货人姓名'

View File

@ -122,6 +122,7 @@
},
//
scanCode() {
var self = this;
// #ifdef MP || APP-PLUS
wx.scanCode({
@ -129,15 +130,14 @@
success(res) {
self.verify_code = res.result
// console.log(self.verify_code);
console.log('111',self.mer_id,self.verify_code)
verifierOrder(self.mer_id,self.verify_code)
.then(res => {
// uni.navigateTo({
// url: '/pages/admin/cancellate_result/index?code='+self.verify_code+'&mer_id='+self.mer_id
// });
uni.navigateTo({
url: '/pages/admin/orderList/index?types=2'+'&mer_id='+self.mer_id
url: '/pages/admin/cancellate_result/index?code='+self.verify_code+'&mer_id='+self.mer_id
});
})
.catch(res => {
self.verify_code = ''
@ -165,12 +165,11 @@
scanType: ["qrCode", "barCode"]
}).then(res=>{
this.verify_code = res.resultStr
// uni.navigateTo({
// url: '/pages/admin/cancellate_result/index?code='+self.verify_code+'&mer_id='+self.mer_id
// });
uni.navigateTo({
url: '/pages/admin/orderList/index?types=2'+'&mer_id='+self.mer_id
url: '/pages/admin/cancellate_result/index?code='+self.verify_code+'&mer_id='+self.mer_id
});
// this.codeChange();
}).catch(res => {
this.$util.Tips({

View File

@ -24,7 +24,8 @@
<view>积分</view>
</view>
<view class="item">
<view class="num">{{ info.level_info.discount ? parseFloat(info.level_info.discount)/10 : '0'}}</view>
<view class="num">{{ info.level_info.discount ? parseFloat(info.level_info.discount)/10 : '0'}}
</view>
<view>折扣</view>
</view>
</view>
@ -32,11 +33,11 @@
</view>
<view class="qrCode">
<view class="header acea-row row-between-wrapper">
<view class="title" :class="{'on': codeIndex == index,'onLeft':codeIndex == 1}"
v-for="(item, index) in codeList" :key="index" @click="tapCode(index)">{{item.name}}</view>
<view class="title" :class="{'on': codeIndex == index,'onLeft':codeIndex == 1}"
v-for="(item, index) in codeList" :key="index" @click="tapCode(index)">{{item.name}}</view>
</view>
<view class="acea-row row-center-wrapper" style="margin-top: 35rpx;">
<w-qrcode :options="config.qrc" @generate="hello"></w-qrcode>
<w-qrcode :options="config.qrc" @generate="hello"></w-qrcode>
</view>
</view>
<view class="store acea-row row-between-wrapper" v-if="storeList.length">
@ -45,16 +46,18 @@
附近门店
</view>
<view class="acea-row" @click="goMap">
<view class="storeName line1">{{storeList[0].name}}</view> {{storeList[0].range}}km<text class="iconfont icon-gengduo3"></text></view>
<view class="storeName line1">{{storeList[0].name}}</view> {{storeList[0].range}}km<text
class="iconfont icon-gengduo3"></text></view>
</view>
<home v-if="navigation"></home>
</view>
</template>
<script>
import home from '@/components/home/index.vue'
import { wgsToGcj } from "@/utils/wgs.js";
import {
getlevelInfo,
getlevelInfo,
getRandCode
} from '@/api/user.js';
import {
@ -66,25 +69,25 @@
},
data() {
return {
info:{},
info: {},
codeList: [{
name: '付款码'
name: '付款码'
}, {
name: '核销码'
name: '核销码'
}],
codeIndex:0,
codeIndex: 0,
config: {
qrc: {
code: '',
size: 380, //
level: 3, // 04
bgColor: '#FFFFFF', //
border: {
color: ['#eee', '#eee'], //
lineWidth: 1, //
},
color: ['#333', '#333'], //
}
qrc: {
code: '',
size: 380, //
level: 3, // 04
bgColor: '#FFFFFF', //
border: {
color: ['#eee', '#eee'], //
lineWidth: 1, //
},
color: ['#333', '#333'], //
}
},
user_latitude: 0,
user_longitude: 0,
@ -111,7 +114,7 @@
}
},
methods: {
goMap(){
goMap() {
uni.navigateTo({
url: '/pages/store/map/index'
})
@ -129,9 +132,11 @@
})
} else {
// #endif
if (uni.getStorageSync('RejectTarget')) return
uni.getLocation({
type: 'wgs84',
success: (res) => {
res = wgsToGcj(res);
try {
this.user_latitude = res.latitude;
this.user_longitude = res.longitude;
@ -167,90 +172,96 @@
});
},
getCode() {
getRandCode().then(res => {
let code = res.data.code;
this.config.qrc.code = code;
}).catch(err => {
return this.$util.Tips(err);
})
getRandCode().then(res => {
let code = res.data.code;
this.config.qrc.code = code;
}).catch(err => {
return this.$util.Tips(err);
})
},
levelInfo(){
getlevelInfo().then(res=>{
levelInfo() {
getlevelInfo().then(res => {
this.info = res.data;
}).catch(err=>{
}).catch(err => {
return this.$util.Tips({
title: err
});
})
},
tapCode(index) {
this.codeIndex = index;
if (index == 0) {
this.getCode();
} else {
let code = this.info.user.bar_code;
this.config.qrc.code = code;
}
},
hello(res) {
this.codeIndex = index;
if (index == 0) {
this.getCode();
} else {
let code = this.info.user.bar_code;
this.config.qrc.code = code;
}
},
hello(res) {},
},
onReachBottom() {
}
onReachBottom() {}
}
</script>
<style lang="scss">
page{
page {
background: linear-gradient(121deg, #F5EBE1 0%, #FFDFBE 100%);
}
.vipGrade{
.headerBg{
.vipGrade {
.headerBg {
background: url('../static/big-bg.png') no-repeat;
background-size: 100% 100%;
width: 100%;
height: 476rpx;
padding-top: 1rpx;
.header{
.header {
background: url('../static/grade-bg.png') no-repeat;
background-size: 100% 100%;
width: 690rpx;
height: 286rpx;
margin: 26rpx auto;
padding: 28rpx 28rpx 0 28rpx;
.top{
.pictrue{
.top {
.pictrue {
width: 92rpx;
height: 92rpx;
border: 1px solid #FFFFFF;
margin-right: 20rpx;
border-radius: 50%;
image{
image {
border-radius: 50%;
width:100%;
width: 100%;
height: 100%;
}
}
.text{
.text {
width: 400rpx;
.name{
.nameCon{
.name {
.nameCon {
color: #EDCAAC;
font-size: 28rpx;
max-width: 332rpx;
margin-right: 10rpx;
}
.num{
.num {
border-radius: 4px;
border: 1px solid #EDCAAC;
background: rgba(215,177,144,0.2);
background: rgba(215, 177, 144, 0.2);
font-size: 20rpx;
font-weight: 400;
color: #EDCAAC;
padding: 0 4rpx;
}
}
.idNum{
.idNum {
font-weight: 400;
color: #EDCAAC;
font-size: 24rpx;
@ -259,27 +270,32 @@
}
}
}
.list{
.list {
margin-top: 46rpx;
.item{
.item {
color: #EDCAAC;
font-size: 22rpx;
text-align: center;
.num{
.num {
font-size: 40rpx;
margin-bottom: 15rpx;
}
}
}
}
.qrCode{
.qrCode {
width: 690rpx;
height: 700rpx;
background: #FFFFFF;
border-radius: 18rpx;
margin: -134rpx auto 0 auto;
padding-top: 60rpx;
.header{
.header {
width: 330rpx;
height: 60rpx;
border-radius: 30rpx;
@ -287,28 +303,30 @@
color: #333333;
font-size: 30rpx;
margin: 0 auto;
.title {
width: 146rpx;
height: 100%;
line-height: 60rpx;
border-radius: 30rpx;
text-align: center;
padding-right: 20rpx;
&.onLeft {
padding-left: 34rpx;
}
&.on {
width: 170rpx;
background-color: #333 !important;
color: #fff;
padding: 0 !important;
}
width: 146rpx;
height: 100%;
line-height: 60rpx;
border-radius: 30rpx;
text-align: center;
padding-right: 20rpx;
&.onLeft {
padding-left: 34rpx;
}
&.on {
width: 170rpx;
background-color: #333 !important;
color: #fff;
padding: 0 !important;
}
}
}
}
.store{
.store {
width: 690rpx;
height: 100rpx;
background: linear-gradient(90deg, #FFAE49 0%, #FCC887 100%);
@ -318,17 +336,20 @@
color: #fff;
font-weight: 500;
font-size: 28rpx;
.iconfont{
.iconfont {
margin-right: 20rpx;
font-size: 38rpx;
}
.icon-gengduo3{
.icon-gengduo3 {
font-size: 24rpx;
margin-left: 5rpx;
margin-right: 0;
margin-top: 6rpx;
}
.storeName{
.storeName {
display: inline-block;
max-width: 284rpx;
vertical-align: middle;

View File

@ -53,7 +53,8 @@
</div>
<div class="broadcast_details_picBox noPad">
<div class="broadcast_details_tit">
{{val.product.cart_info.product.store_name}}</div>
{{val.product.cart_info.product.store_name}}
</div>
<div class="broadcast_details_pic">
{{ item.refundOrder.refund_price }}
</div>
@ -89,7 +90,8 @@
</div>
<div class="broadcast_details_picBox noPad">
<div class="broadcast_details_tit">
{{val.cart_info.product.store_name}}</div>
{{val.cart_info.product.store_name}}
</div>
<div class="broadcast_details_pic">
{{ item.orderInfo.pay_price }}
</div>
@ -114,7 +116,8 @@
{{ item.product.price }}
</div>
<div class="broadcast_details_tit_no line1">
{{item.product.store_name}}</div>
{{item.product.store_name}}
</div>
</div>
</navigator>
</div>
@ -135,7 +138,8 @@
{{ item.presell.price }}
</div>
<div class="broadcast_details_tit_no line1">
{{item.presell.store_name}}</div>
{{item.presell.store_name}}
</div>
</div>
</navigator>
</div>
@ -143,7 +147,7 @@
<!--拼团商品链接-->
<div class="conter acea-row row-middle"
v-if="item.msn_type === 8 && item.productGroup && item.productGroup.product">
<div class=" noPad">
<div class="noPad">
<navigator class="acea-row row-column-around noPad"
v-if="item.productGroup.product_group_id"
:url="`/pages/activity/combination_details/index?id=${item.productGroup.product_group_id}`"
@ -156,7 +160,8 @@
{{ item.productGroup.product.price }}
</div>
<div class="broadcast_details_tit_no line1">
{{item.productGroup.product.store_name}}</div>
{{item.productGroup.product.store_name}}
</div>
</div>
</navigator>
</div>
@ -207,7 +212,8 @@
</div>
<div class="broadcast_details_picBox noPad">
<div class="broadcast_details_tit">
{{val.product.cart_info.product.store_name}}</div>
{{val.product.cart_info.product.store_name}}
</div>
<div class="broadcast_details_pic">
{{ item.refundOrder.refund_price }}
</div>
@ -216,6 +222,7 @@
</div>
</div>
</navigator>
<!--订单链接-->
<div v-if="item.msn_type === 5 && item.orderInfo.order_id">
<div class="broadcast-details_num acea-row row-middle">
@ -243,7 +250,8 @@
</div>
<div class="broadcast_details_picBox noPad">
<div class="broadcast_details_tit">
{{val.cart_info.product.store_name}}</div>
{{val.cart_info.product.store_name}}
</div>
<div class="broadcast_details_pic">
{{ item.orderInfo.pay_price }}
</div>
@ -267,7 +275,8 @@
{{ item.product.price }}
</div>
<div class="broadcast_details_tit_no line1">
{{item.product.store_name}}</div>
{{item.product.store_name}}
</div>
</div>
</navigator>
</div>
@ -288,7 +297,8 @@
{{ item.presell.price }}
</div>
<div class="broadcast_details_tit_no line1">
{{item.presell.store_name}}</div>
{{item.presell.store_name}}
</div>
</div>
</navigator>
</div>
@ -309,7 +319,8 @@
{{ item.productGroup.product.price }}
</div>
<div class="broadcast_details_tit_no line1">
{{item.productGroup.product.store_name}}</div>
{{item.productGroup.product.store_name}}
</div>
</div>
</navigator>
</div>
@ -358,6 +369,7 @@
<block v-for="(items,index) in history" v-if="userId == 0" :key="items.time">
<div class="create_time">{{items.time}}</div>
<block v-for="(item,j) in items.children" :key="item.service_log_id">
<!-- 左边 -->
<div class="item acea-row row-top" v-if="item.send_type == 1">
<div v-if="item.msn_type !== 100" class="pictrue">
@ -388,7 +400,8 @@
</div>
<div class="broadcast_details_picBox noPad">
<div class="broadcast_details_tit">
{{val.product.cart_info.product.store_name}}</div>
{{val.product.cart_info.product.store_name}}
</div>
<div class="broadcast_details_pic">
{{ val.product.cart_info.productAttr.price }}
</div>
@ -425,7 +438,8 @@
</div>
<div class="broadcast_details_picBox noPad">
<div class="broadcast_details_tit">
{{val.cart_info.product.store_name}}</div>
{{val.cart_info.product.store_name}}
</div>
<div class="broadcast_details_pic">
{{ item.orderInfo.pay_price }}
</div>
@ -450,7 +464,8 @@
{{ item.product.price }}
</div>
<div class="broadcast_details_tit_no line1">
{{item.product.store_name}}</div>
{{item.product.store_name}}
</div>
</div>
</navigator>
</div>
@ -471,7 +486,8 @@
{{ item.presell.price }}
</div>
<div class="broadcast_details_tit_no line1">
{{item.presell.store_name}}</div>
{{item.presell.store_name}}
</div>
</div>
</navigator>
</div>
@ -492,7 +508,8 @@
{{ item.productGroup.product.price }}
</div>
<div class="broadcast_details_tit_no line1">
{{item.productGroup.product.store_name}}</div>
{{item.productGroup.product.store_name}}
</div>
</div>
</navigator>
</div>
@ -534,7 +551,8 @@
</div>
<div class="broadcast_details_picBox noPad">
<div class="broadcast_details_tit">
{{val.product.cart_info.product.store_name}}</div>
{{val.product.cart_info.product.store_name}}
</div>
<div class="broadcast_details_pic">
{{item.refundOrder.refund_num}}件商品
合计 {{ item.refundOrder.refund_price }}
@ -571,7 +589,8 @@
</div>
<div class="broadcast_details_picBox noPad">
<div class="broadcast_details_tit">
{{val.cart_info.product.store_name}}</div>
{{val.cart_info.product.store_name}}
</div>
<div class="broadcast_details_pic">
{{ item.orderInfo.pay_price }}
</div>
@ -596,7 +615,8 @@
{{ item.product.price }}
</div>
<div class="broadcast_details_tit_no line1">
{{item.product.store_name}}</div>
{{item.product.store_name}}
</div>
</div>
</navigator>
</div>
@ -617,7 +637,8 @@
{{ item.presell.price }}
</div>
<div class="broadcast_details_tit_no line1">
{{item.presell.store_name}}</div>
{{item.presell.store_name}}
</div>
</div>
</navigator>
</div>
@ -638,7 +659,8 @@
{{ item.productGroup.product.price }}
</div>
<div class="broadcast_details_tit_no line1">
{{item.productGroup.product.store_name}}</div>
{{item.productGroup.product.store_name}}
</div>
</div>
</navigator>
</div>
@ -758,6 +780,7 @@
</div>
</div>
<div :style=" active === true ? 'height:' + footerConH + 'rem;' : 'height:' + footerH + 'rem;'"></div>
<div :style=" active === true ? 'height: 0;' : 'height: 2rem;'"></div>
</scroll-view>
</view>
<view style="height: 100rpx;"></view>
@ -771,14 +794,14 @@
{{ speak }}
</div>
<view class="input_count">
<input type="text" placeholder-class='placeholder' placeholder="输入内容" class="input" ref="input"
<input type="text" placeholder-class='placeholder' :disabled="active" placeholder="输入内容" class="input" ref="input"
v-show="!voice" @input="bindInput" @keyup="keyup" @focus="focus" cursor-spacing="20"
v-model="textCon">
v-model="textCon" @click="handleClick">
<div class="send iconfont icon-fasong" :style="'color:'+iconColor" @click="sendTest"></div>
</view>
</div>
</form>
<div class="banner slider-banner">
<div class="banner slider-banner" >
<swiper class="swiper-wrapper" :autoplay="autoplay" :circular="circular" :interval="interval"
:duration="duration" v-if="emojiGroup.length > 0">
<block v-for="(emojiList, index) in emojiGroup" :key="index">
@ -788,8 +811,9 @@
</swiper-item>
</block>
</swiper>
</div>
</div>
<div class="recording" v-if="recording">
<image src="/static/images/recording.png" />
@ -1212,8 +1236,7 @@
let self = this
self.$util.uploadImageOne('upload/image', function(res) {
if (res.status == 200) {
self.sendMsg(res.data.path, 3
)
self.sendMsg(res.data.path, 3)
}
});
},
@ -1379,9 +1402,14 @@
});
});
},
focus: function() {
this.active = false;
focus: async function() {
this.active = false;
},
handleClick(){
if(this.active){
this.active = false;
}
},
keyup: function() {
if (this.$refs.input.value.length > 0) {
this.sendColor = true;
@ -1537,7 +1565,7 @@
self.scrollTop = parseInt(scrollTop) + 100
}
}).exec()
}, 1000)
}, 200)
},
//
bindScroll() {
@ -1603,7 +1631,8 @@
margin-top: 20rpx;
width: 710rpx;
position: fixed;
bottom: 120rpx;
bottom: 180rpx;
bottom: calc(160rpx + env(safe-area-inset-bottom)); /* 适应底部安全距离 */
left: 20rpx;
.broadcast-details_box,
@ -1790,6 +1819,7 @@
.broadcast-details .chat .item .text {
margin-left: 20rpx;
}
.broadcast-details .chat .item .text.textR {
@ -1943,19 +1973,22 @@
transition: all 0.005s cubic-bezier(0.25, 0.5, 0.5, 0.9);
background-color: #fff;
position: fixed;
bottom: 0;
// bottom:var(--status-bar-height);
bottom: 20rpx;
bottom: calc(20rpx + env(safe-area-inset-bottom) );
left: 0;
margin-bottom: var(--status-bar-height);;
}
.broadcast-details .footerCon.on {
position: relative;
top: -300rpx;
top: -360rpx;
transform: translate3d(0, 0, 0) !important;
}
.broadcast-details .footerCon .banner {
background: #fff;
padding-top: var(--status-bar-height);
}
.broadcast-details .footerCon .banner .swiper-slide {
@ -1971,7 +2004,7 @@
display: block;
width: 50rpx;
height: 50rpx;
margin: 40rpx 0 0 50rpx;
margin: 20rpx 0 0 40rpx;
}
.broadcast-details .footerCon .banner .swiper-container-horizontal>.swiper-pagination-bullets {
@ -1980,6 +2013,10 @@
.broadcast-details .footerCon .slider-banner .swiper-pagination-bullet-active {
background-color: #999;
}
.broadcast-details .recording {
@ -2036,6 +2073,8 @@
padding: 0 80rpx 0 30rpx;
height: 76rpx;
position: relative;
}
.broadcast-details .footer .placeholder {
@ -2064,7 +2103,9 @@
display: inline-block;
width: 50rpx;
height: 50rpx;
margin: 40rpx 0 0 50rpx;
margin: 20rpx 0 0 40rpx;
}
.emoji-outer {

View File

@ -97,10 +97,12 @@
hotSearchBox: false,
isAuto: false, //
isShowAuth: false, //
back: false
};
},
onLoad(options) {
this.searchValue = options.searchVal || ''
this.searchValue = options.searchVal || '';
if(options.back)this.back = true;
},
onShow: function() {
try {
@ -167,6 +169,7 @@
this.$set(this, 'searchValue', event.detail.value);
},
searchBut: function() {
if(this.back) return this.navigatorBack();
if(/^(\/@[1-9]{1}).*\*\//.test(this.searchValue)){
uni.showLoading({
title: '加载中',
@ -209,7 +212,6 @@
this.searchValue = ""
});
}else{
let status = false
this.tempStorage.forEach((el, index) => {
if (el == this.searchValue) {
@ -226,10 +228,17 @@
uni.navigateTo({
url: '/pages/columnGoods/goods_search_con/index?searchValue=' + this.searchValue
})
}
}
},
navigatorBack(){
if(this.searchValue!==undefined&&this.searchValue!==null){
uni.navigateBack({
success:()=> {
uni.$emit('searchValue', this.searchValue);
}
});
}
}
}
}
</script>

View File

@ -5,9 +5,10 @@
<view class="back" @click='set_where(1)'>
<view class="iconfont icon-xiangzuo"></view>
</view>
<view class='input acea-row row-between-wrapper'><text class='iconfont icon-sousuo'></text>
<view class='input acea-row row-between-wrapper'>
<text class='iconfont icon-sousuo'></text>
<input placeholder='搜索商品名称' placeholder-class='placeholder' confirm-type='search' name="search"
:value='where.keyword' @confirm="searchSubmit" @input="inputChange"></input>
:value='where.keyword' @confirm="searchSubmit" @input="inputChange">
</view>
<view style="text-align: right;" v-if="tabIndex==1" class='iconfont'
:class='is_switch==true?"icon-pailie":"icon-tupianpailie"' @click='Changswitch'></view>
@ -20,7 +21,7 @@
<view class="tab-item" :class="{on:tabIndex==2}" @click="tabIndex = 2">店铺</view>
</view>
<block v-if="tabIndex==1">
<view class='nav acea-row row-middle' >
<view class='nav acea-row row-middle'>
<view class='item' @click="downStatus = !downStatus"
:class="{'t-color':downKey>0 && firstKey == 0}">
{{downMenu[downKey].title}}
@ -97,7 +98,7 @@
<text class="tags_item delivery" v-if="item.delivery_free == 1">包邮</text>
<!-- <view class="ticket-big" v-if="!is_switch && item.issetCoupon">领券满{{item.issetCoupon.use_min_price}}{{item.issetCoupon.coupon_price}}</view> -->
</view>
<view class="score">{{item.rate}}评分 {{item.reply_count}}条评论</view>
<view class="score">{{item.rate}}评分 {{item.reply_count}}条评论 <text v-if="item.merchant">{{item.merchant.street_name}}</text></view>
<view class="company" v-if="item.merchant && hide_mer_status==0">
<text class='name line1'>{{item.merchant.mer_name}}</text>
@ -144,7 +145,7 @@
</view>
<view class="zhezhao">
</view>
<view class="zhezhao1" @click="goStore(item.mer_id)">
<view class="zhezhao1" @click="goStore(item.mer_id)">
<view class="title">
<view>{{item.mer_name}}
</view>
@ -156,24 +157,28 @@
<view class="avater">
<image :src="item.mer_avatar" mode=""></image>
</view>
<view class=" text">
<view class="text_one">
<view class="">
<view class="text">
<view class="text_one text_flex">
<view class="text_flex">
<image src="@/static/images/phone.png" mode=""></image>
{{item.service_phone}}
</view>
<view class="text_one_r">
<view class="text_one_r text_flex">
<image src="@/static/images/clock.png" mode=""></image>
{{item.mer_take_time[0]}}-{{item.mer_take_time[1]}}
</view>
</view>
<view class="text_two">
<view class="text_two text_flex">
<image src="@/static/images/shangpu.png" mode=""></image>
{{item.mer_info}}
<view class="text_tip">
{{item.mer_info}}
</view>
</view>
<view class="text_three">
<view class="text_three text_flex">
<image src="@/static/images/dingwei.png" mode=""></image>
{{item.mer_address}}
<view class="text_tip">
{{item.mer_address}}
</view>
</view>
</view>
</view>
@ -234,6 +239,7 @@
storeMerchantList,
getGeocoder
} from '@/api/store.js';
import { wgsToGcj } from "@/utils/wgs.js";
import {
initiateAssistApi
} from '@/api/activity.js';
@ -469,9 +475,11 @@
//
selfLocation() {
let self = this
if (uni.getStorageSync('RejectTarget')) return
uni.getLocation({
type: 'gcj02',
type: 'wgs84',
success: (res) => {
res = wgsToGcj(res);
// console.log(res)
let latitude, longitude;
latitude = res.latitude.toString();
@ -577,7 +585,7 @@
this.storeList = this.storeList.concat(res.data.list)
this.count = res.data.count
this.loading = false
})
},
//
@ -683,7 +691,7 @@
},
//
confirm2(data) {
let arr1 = [],
arr2 = []
if (data.storeTypeArr.length == 0) {
@ -775,11 +783,11 @@
that.hotScroll = res.data.list.length < that.hotLimit
that.hostProduct = that.hostProduct.concat(res.data.list)
if (that.hostProduct.length == res.data.count) {
uni.showToast({
title: '推荐商品,加载完毕',
duration: 2000, //
icon:'none'
icon: 'none'
})
}
});
@ -821,10 +829,10 @@
//
get_product_list: function(isPage) {
let that = this;
if (that.loadend) return;
if (that.loading) return;
if (isPage === true) that.$set(that, 'productList', []);
that.loading = true;
that.loadTitle = '';
@ -899,14 +907,14 @@
.productList .search {
width: 100%;
height: 170rpx;
padding: 0 20rpx;
// box-sizing: border-box;
position: fixed;
left: 0;
top: 0rpx;
height: 170rpx;
padding: 0 20rpx;
// box-sizing: border-box;
position: fixed;
left: 0;
top: 0rpx;
padding-top: 60rpx;
z-index: 9;
z-index: 9;
background-color: var(--view-theme);
.icon-dingwei {
@ -962,7 +970,7 @@
width: 62rpx;
font-size: 40rpx;
height: 86rpx;
line-height: 86rpx ;
line-height: 86rpx;
}
.productList .nav-wrapper {
@ -1043,7 +1051,7 @@
.productList .list {
padding: 0 20rpx;
}
.productList .list.on {
@ -1079,7 +1087,7 @@
position: relative;
width: 100%;
height: 345rpx;
}
.productList .list .item .pictrue.on {
@ -1202,6 +1210,12 @@
}
}
.text_flex{
display: flex;
align-items: center;
}
.productList .list .item .text .money {
display: flex;
align-items: center;
@ -1423,7 +1437,7 @@
.store-wrapper {
margin-top: 310rpx;
border-top: 1px solid #F6F6F6;
.star-box {
@ -1519,11 +1533,12 @@
margin-left: 20px;
.avater {
width: 60px;
width: 80px;
height: 80px;
flex-shrink: 0;
image {
width: 60px;
width: 80px;
height: 80px;
}
}
@ -1539,10 +1554,13 @@
width: 20px;
height: 20px;
margin-right: 10px;
flex-shrink: 0;
}
.text_one_r {
flex: 1;
margin-left: 10px;
}
}
@ -1551,14 +1569,17 @@
height: 30px;
line-height: 30px;
padding-left: 10px;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
.text_tip{
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
}
image {
width: 20px;
height: 20px;
margin-right: 10px;
flex-shrink: 0;
}
}
@ -1567,9 +1588,11 @@
height: 30px;
line-height: 30px;
padding-left: 10px;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
.text_tip{
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
}
image {
width: 20px;

View File

@ -14,9 +14,11 @@
</view>
<view class="" v-if="!isFshow">
<view class="site-box1 flex_a_c_j_sb">
<view class="place_wrapper flex_a_c" @click="selectLocation">
<view class="place_wrapper flex_a_c" @click="changeMap">
<view class="iconfont icon-weizhi"></view>
<view class="town_name">{{ street }}</view>
<view class="town_name">{{street||'定位中' }}</view>
<!-- <view class="town_name rotate-box" @click.stop="getPositionFn()"><uni-icons type="loop"
color="#fff"></uni-icons></view> -->
</view>
<navigator url="/pages/chat/customer_list/index?type=0" hover-class="none">
<view class="iconfont icon-xiaoxi" style="color: #fff"> </view>
@ -37,9 +39,9 @@
<block v-if="nowMenuList.length > 0">
<u-transition v-for="(item, index) in nowMenuList" :key="item.name" show>
<view class="examine" @click="
editFlag ? removeMenu(item) : clickMenu(item.type, item.data)
editFlag ? removeMenu(item) : clickMenu(item)
">
<image class="icon_img" :src="item.icon" mode="aspectFit">
<image class="icon_img" :src="item.pic" mode="aspectFit">
</image>
<u-icon v-if="editFlag" class="icon" name="minus-circle-fill" color="red"></u-icon>
<text class="text">{{ item.name }}</text>
@ -58,14 +60,18 @@
<view class="content">
<u-transition v-for="(item, index) in AllMenuList" :key="item.name" show>
<view class="examine" @click="pushMenu(item)">
<image class="icon_img" :src="item.icon" mode="aspectFit"> </image>
<image class="icon_img" :src="item.pic" mode="aspectFit"> </image>
<u-icon class="icon" name="plus-circle-fill"></u-icon>
<text class="text">{{ item.name }}</text>
</view>
</u-transition>
</view>
</view>
<view class="location" v-if="isshow">
<view class="locationa"> 位置权限使用说明 </view>
<view class="locationb"> 用于向你推荐最近门店 </view>
<view class="locationx" @click.stop="isshow=false">x</view>
</view>
<u-picker :defaultIndex="[0, 0]" :show="showPicker" ref="uPicker" :columns="columnData" @confirm="confirm"
@cancel="showPicker = false" @change="changeHandler" keyName="name"></u-picker>
<!-- <m-tabbar native>
@ -75,13 +81,14 @@
</view>
</template>
</m-tabbar> -->
<Loading></Loading>
</view>
</template>
<script>
import Cache from '@/utils/cache';
import { wgsToGcj } from "@/utils/wgs.js";
import mTabbar from '@/components/m-tabbar/m-tabbar.vue'
import zbpSwiper from '@/components/zbpSwiper'
import {
getArea,
@ -110,6 +117,12 @@
import {
getDiy
} from '@/api/api.js';
import {
applet
} from '@/api/public.js';
import {
ENV
} from "@/config/app.js"
// #ifdef APP-PLUS
import uniMP from '@/utils/uniMP.js';
// #endif
@ -118,11 +131,11 @@
components: {
mTabbar,
zbpSwiper
},
data() {
return {
locationArr: ({}),
isshow: false,
emptyText: '暂无可用应用',
jurisdiction: false, //
mer_id: '',
@ -138,79 +151,11 @@
//
editFlag: false,
//
AllMenuList: [{
name: '商户平台',
icon: '/static/applet/shop_app.png',
// data: "__UNI__1EE148C",
data: '/pages/moreProject/moreProject',
type: 2,
},
{
name: '供销平台',
icon: '/static/applet/gx_app.png',
data: '__UNI__B5B1EDD',
type: 1,
},
{
name: '农业咨询',
icon: '/static/applet/ny.png',
data: {
id: '__UNI__9620511',
url: 'https://ceshi-worker-task.lihaink.cn/api/common/getMiniProgramInfo?name=nongye',
},
type: 3,
},
{
name: '教育咨询',
icon: '/static/applet/jy.png',
data: {
id: '__UNI__7AA205C',
url: 'https://ceshi-worker-task.lihaink.cn/api/common/getMiniProgramInfo?name=jiaoyu',
},
type: 3,
},
{
name: '法律咨询',
icon: '/static/applet/fl.png',
data: {
id: '__UNI__358D505',
url: 'https://ceshi-worker-task.lihaink.cn/api/common/getMiniProgramInfo?name=falv',
},
type: 3,
},
{
name: '情感咨询',
icon: '/static/applet/qg.png',
data: {
id: '__UNI__8080F14',
url: 'https://ceshi-worker-task.lihaink.cn/api/common/getMiniProgramInfo?name=qinggan',
},
type: 3,
},
{
name: '种植分析',
icon: '/static/applet/zz.png',
data: {
id: '__UNI__9EDFE40',
url: 'https://ceshi-worker-task.lihaink.cn/api/common/getMiniProgramInfo?name=zhongzhi',
},
type: 3,
},
{
name: '养殖分析',
icon: '/static/applet/yz.png',
data: {
id: '__UNI__EEA7DC9',
url: 'https://ceshi-worker-task.lihaink.cn/api/common/getMiniProgramInfo?name=yangzhi',
},
type: 3,
}
],
AllMenuList: [],
nowMenuList: [],
street: '',
showPicker: false,
columnData: [],
isFshow: false,
backColor: 'rgba(252, 252, 252, 0)'
};
@ -220,20 +165,18 @@
},
created() {},
onLoad() {
this.Area()
this.initMenu();
this.Area();
},
onShow() {
if (this.isLogin) {
this.emptyText = '暂无可用应用'
this.jurisdiction = false
this.initAllAppLet();
} else {
this.emptyText = '请登录'
this.jurisdiction = true
}
this.getUserInfo()
this.getUserInfo();
},
onPullDownRefresh() {
@ -246,7 +189,7 @@
},
mounted() {
if (this.street.length <= 0) {
this.appLocation()
this.selfLocation()
}
// #ifdef H5
//
@ -274,8 +217,20 @@
}
},
// #endif
onHide() {
uni.$emit('showLoading', false);
},
methods: {
getPositionFn() {
this.street = '定位中'
this.$store.commit('setLocation', {
lat: null,
long: null
})
uni.removeStorageSync('RejectTarget')
this.selfLocation()
},
scrolling() {
//
let scrollTop =
@ -317,20 +272,53 @@
},
//
initMenu() {
let now = uni.getStorageSync('gatherNowMenuList');
try {
this.nowMenuList = JSON.parse(now);
this.AllMenuList = this.AllMenuList.filter((item) => {
return this.nowMenuList.find(t => t.name == item.name)?.name != item.name;
initAllAppLet(){
applet().then(res=>{
this.AllMenuList = res.data;
this.initMenu();
// this.showControllerAllLet();
}).catch(e=>{
console.log(e);
})
},
//
showControllerAllLet() {
let user;
if (typeof this.$store.state.app.userInfo == 'string') {
user = JSON.parse(this.$store.state.app.userInfo)
} else user = JSON.parse(JSON.stringify(this.$store.state.app.userInfo))
if (user?.show_controller_applet) {
this.AllMenuList.push({
name: '大屏控制',
icon: '/static/applet/dp.png',
data: {
id: '__UNI__83ABA97',
url: 'https://ceshi-worker-task.lihaink.cn/uploads/files/20231016/20231016112144fac6d9128.wgt',
},
type: 4,
})
} catch (e) {
this.nowMenuList = [];
}
},
clickMenu(e, data) {
this.getUniMp(e, data);
//
initMenu() {
let nowMenu = uni.getStorageSync('gatherMenuList');
try {
let list = JSON.parse(nowMenu||'[]');
let now = [];
let all = [];
this.AllMenuList.forEach((item) => {
if(list.find(t => t.name == item.name)?.name != item.name) all.push(item);
else now.push(item)
})
this.AllMenuList = all;
this.nowMenuList = now;
} catch (e) {
this.nowMenuList = [];
console.log(e);
}
},
clickMenu(data) {
this.getUniMp(data);
},
//
pushMenu(data) {
@ -349,35 +337,42 @@
//
editComfirm() {
this.editFlag = false;
uni.setStorageSync('gatherNowMenuList', JSON.stringify(this.nowMenuList));
uni.setStorageSync('gatherMenuList', JSON.stringify(this.nowMenuList));
},
getUniMp(type, data) {
getUniMp(data) {
let that = this;
// #ifdef APP-PLUS
switch (type) {
if(data.version) return uniMP.loadAppletMP(data);
else switch (data.type) {
case 1:
uniMP.loadMP(data);
uniMP.loadMP(data.data);
break;
// case 2: uniMP.loadMPx(data); break;
case 2:
this.navigator(data);
uniMP.loadMPx(data.data);
break;
case 3:
uniMP.loadMPurl(data);
uniMP.loadMPurl(data.data);
break;
case 4:
uniMP.loadMPdns(data.data);
break;
}
return;
// #endif
// #ifdef H5
if (type == 2) {
this.navigator(data);
} else {
uni.showToast({
icon: 'none',
title: 'H5不支持打开小程序'
})
}
// if (type == 2) {
// this.navigator(`/pages/moreProject/moreProject`);
// } else {
// uni.showToast({
// icon: 'none',
// title: 'H5'
// })
// }
uni.showToast({
icon: 'none',
title: 'H5不支持打开小程序'
})
// #endif
},
@ -425,23 +420,57 @@
})
this.showPicker = false
},
appLocation() {
uni.getLocation({
selfLocation() {
if (uni.getStorageSync('RejectTarget')) return;
if (uni.getStorageSync('loction') == true) {
this.isshow = false
} else {
this.isshow = true
uni.setStorageSync('loction', true);
}
if (this.$store?.state?.storage?.location?.lat) {
this.isshow = false
getGeocoder({
lat: this.$store.state.storage.location.lat,
long: this.$store.state.storage.location.long
}).then(res => {
let town = res.data.address_reference.town.title
let street_id = res.data.address_reference.town.id
this.street = res.data.address_reference.town.title;
this.$nextTick(() => {
this.$bus.$emit('value-updated', this.street + ',' +
street_id);
})
}).catch(err => {
this.isshow = false
uni.showToast({
title: err,
icon: 'none'
})
})
} else uni.getLocation({
type: 'wgs84',
timeout: '10',
success: (res) => {
res = wgsToGcj(res);
// console.log(res)
this.isshow = false
let latitude, longitude;
latitude = res.latitude.toString();
longitude = res.longitude.toString();
this.$store.commit('setLocation', {
lat: res.latitude.toFixed(6),
long: res.longitude.toFixed(6),
});
getGeocoder({
lat: latitude,
long: longitude
}).then(res => {
let town = res.data.address_reference.town.title
let street_id = res.data.address_reference.town.id
this.street = res.data.address_component.street
this.street = res.data.address_reference.town.title;
this.$nextTick(() => {
this.$bus.$emit('value-updated', this.street + ',' +
street_id);
@ -454,11 +483,14 @@
title: err,
icon: 'none'
})
this.street = '定位失败'
})
},
fail: (err) => {
this.isshow = false
uni.setStorageSync("RejectTarget", true)
Toast('定位失败,请检查定位权限是否开启')
this.street = '定位失败'
}
});
},
@ -489,7 +521,28 @@
}
// console.log(that.userInfoData);
});
}
},
//
changeMap(){
uni.navigateTo({
url: `/pages/select_address/select_address_n`,
success:()=> {
uni.$once('changeAddress', (e)=>{
// this.street_id = e.street.code;
// this.street = e.street.name;
if (e.longitude) {
this.longitude = e.longitude;
this.latitude = e.latitude;
this.$store.commit('setLocation', {
lat: e.latitude,
long: e.longitude,
});
}
this.$bus.$emit('value-updated', e.street.name + ',' + e.street.code);
})
}
})
}
}
};
</script>
@ -703,4 +756,47 @@
background-color: #fff;
padding-top: 28rpx;
}
.rotate-box {
transform: rotate(0deg);
transition: transform .5s ease-out;
}
.rotate-box:active {
transform: rotate(360deg);
}
.location {
background-color: #f6f6f6;
width: 680rpx;
height: 150rpx;
position: absolute;
top: 0;
z-index: 9999;
border-radius: 20rpx;
left: 50%;
margin-left: -340rpx;
margin-top: 80rpx;
padding-left: 20rpx;
.locationa {
font-size: 28rpx;
color: #000;
font-weight: 500;
margin-top: 30rpx;
margin-bottom: 15rpx;
}
.locationb {
font-size: 20rpx;
color: #5a5a5a;
}
.locationx {
color: #000;
position: absolute;
top: 10rpx;
right: 20rpx;
}
}
</style>

View File

@ -278,22 +278,22 @@
<view class='title'>产品介绍</view>
<view class='conter' v-if="description" style="min-height:50rpx;">
<!-- #ifndef APP-PLUS -->
<jyf-parser v-if="description.type == 0" :domain='domain'
<jyf-parser v-if="description.type == 0 && typeof description.content == 'string'" :domain='domain'
:html="description.content.replace(/<br\/>/ig, '')" ref="article"
:tag-style="tagStyle"></jyf-parser>
<!-- #endif -->
<!-- #ifdef APP-PLUS -->
<view v-if="description.type == 0" class="description"
<view v-if="description.type == 0 && typeof description.content == 'string'" class="description"
v-html="description.content.replace(/<br\/>/ig, '')"></view>
<!-- #endif -->
<view v-else class="product_content">
<view v-if="description.content && description.content.title" class="title">
{{description.content.title}}
<view v-if="description.content && description.content.title" class="product_content_title">
{{description.content.title}}
</view>
<view v-if="description.content && description.content.image" class="pictures" style="background-color: #fff;">
<image v-for="(item,index) in description.content.image" :key="index" :src="item" mode="aspectFit">
<block v-if="description.content && description.content.image">
<image v-for="(item,index) in description.content.image" :key="index" :src="item" mode="widthFix" style="background-color: #fff;width: 100vw;">
</image>
</view>
</block>
</view>
</view>
<!-- 价格说明 -->
@ -787,6 +787,7 @@
title: res.message
})
}).catch(err => {
console.log(err);
//
return that.$util.Tips({
title: err
@ -994,6 +995,7 @@
ChangeAttr: function(res) {
let productSelect = this.productValue[res];
if (productSelect) this.$set(this, "uniqueValue", productSelect.unique);
// console.log(productSelect, this.storeInfo);
if (productSelect && productSelect.stock > 0) {
this.$set(this.attr.productSelect, "image", productSelect.image ? productSelect.image : this
.storeInfo
@ -1059,7 +1061,14 @@
}
that.$set(that, 'storeInfo', storeInfo);
that.$set(that, 'description', storeInfo.content);
if (that.description.type == 0) {
if(that.description?.content && typeof that.description.content == 'string'){
try{
that.description.content = JSON.parse(that.description.content);
}catch(e){
console.log(e);
}
}
if (that.description?.content && that.description?.type == 0 && typeof that.description?.content == 'string') {
that.description.content = that.description.content.replace(
/<img/gi,
'<img style="max-width:100%;height:auto;float:left;display:block" '
@ -1114,6 +1123,7 @@
that.getCouponList();
})
}).catch(err => {
console.log(err);
//
return that.$util.Tips({
title: err
@ -2520,4 +2530,21 @@
}
}
}
.product_content{
background-color: #fff;
&_title{
width: 100%;
height: auto;
line-height: 50rpx;
padding: 28rpx;
word-wrap: break-word;
text-align: center;
}
image{
width: 750rpx;
// height: auto;
// height: 750rpx;
}
}
</style>

File diff suppressed because it is too large Load Diff

View File

@ -35,8 +35,8 @@
data() {
return {
//,
imageList: [{
imageList: [
{
src: '/static/images/guide.png'
}

View File

@ -15,7 +15,6 @@
var launchFlag = uni.getStorageSync('launchFlag');
// console.log("launchFlag:" + launchFlag);
if (launchFlag) { //
uni.switchTab({
url:'/pages/index/index'
})

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,84 @@
<template>
<view class="box" style="position: relative;">
<image @click="back" class="bg_back"
src="https://lihai001.oss-cn-chengdu.aliyuncs.com/public/uploads/new_activity/back.png"></image>
<view class="li" @click="navSw('/pages/index/index')">
<u--image src="https://lihai001.oss-cn-chengdu.aliyuncs.com/def/edf53202401271436507555.png" width="690rpx"
height="200rpx" style="position: absolute;" />
<view class="btn">
我是居民用户
</view>
</view>
<view class="li" style="margin-top: 50rpx;" @click="navgo('/pages/helpPeople/formTable')">
<u--image src="https://lihai001.oss-cn-chengdu.aliyuncs.com/def/8489c202401271437055619.png" width="690rpx"
height="200rpx" style="position: absolute;" />
<view class="btn">
我是农民用户
</view>
</view>
</view>
</template>
<script>
export default {
methods: {
back(){
uni.navigateBack();
},
navgo(url) {
uni.navigateTo({
url
})
},
navSw(url){
uni.switchTab({
url:url
})
}
}
}
</script>
<style lang='scss' scoped>
.box {
width: 750rpx;
height: 1624rpx;
background-image: url('https://lihai001.oss-cn-chengdu.aliyuncs.com/def/9c4b4202401271437449183.png');
background-size: 100% 100%;
padding-top: 500rpx;
}
.li {
margin: 0rpx auto;
width: 690rpx;
height: 200rpx;
background-size: 100% 100%;
position: relative;
.btn {
z-index: 999;
position: absolute;
width: 287rpx;
height: 76rpx;
border-radius: 40rpx 40rpx 40rpx 40rpx;
opacity: 1;
border: 2rpx solid #FF5E0C;
text-align: center;
line-height: 76rpx;
color: #FF5E0C;
font-size: 34rpx;
right: 50rpx;
bottom: 50rpx;
}
}
.bg_back {
height: 34rpx;
width: 20rpx;
position: absolute;
top: calc(var(--status-bar-height) + 30rpx);
left: 30rpx;
}
</style>

View File

@ -52,6 +52,7 @@
<script>
import mTabbar from '@/components/m-tabbar/m-tabbar.vue'
import { wgsToGcj } from "@/utils/wgs.js";
import zbpSwiper from '@/components/zbpSwiper'
import {
getSlideAPI
@ -224,8 +225,9 @@
},
selfLocation() {
uni.getLocation({
type: 'gcj02',
type: 'wgs84',
success: (res) => {
res = wgsToGcj(res);
let latitude, longitude;
latitude = res.latitude.toString();
longitude = res.longitude.toString();

File diff suppressed because it is too large Load Diff

1413
pages/index/index_old.vue Normal file

File diff suppressed because it is too large Load Diff

View File

@ -3,13 +3,13 @@
<view class="info">
<view class="bg"></view>
<view class="card">
<view class="title">店铺保证金信息</view>
<view class="title">店铺金信息</view>
<view class="item">
<text>已缴纳保证</text>
<text>已缴纳</text>
<text>{{merchant_Data.paid_margin}}</text>
</view>
<view class="item">
<text>剩余缴纳保证</text>
<text>剩余缴纳</text>
<text>{{merchant_Data.unpaid_margin}}</text>
</view>
<view class="item">
@ -40,7 +40,7 @@
<view class='loadingicon acea-row row-center-wrapper' v-if='productList.length > 0'>
<text class='loading iconfont icon-jiazai' :hidden='loading==false'></text>{{loadTitle}}
</view>
</view>
</template>
@ -98,7 +98,7 @@
that.$set(that, 'productList', productList);
}, 500)
that.$set(that.where, 'page', that.where.page + 1);
if (that.where.page == 1 && res.data.list.length <= 0) that.emptyShow = true
}).catch(err => {
@ -107,60 +107,54 @@
});
},
//
//
decimal() {
merchant({
id: this.mer_id
}).then((res) => {
this.merchant_Data = res.data
});
},
//
//
paydecimal() {
let that = this
uni.showModal({
title: '提示',
content: '商户' + this.merchant_Data.mer_name + '是否同意缴纳保证金',
success: (res) => {
if (res.confirm) {
// console.log('');
paymerchant().then((res) => {
uni.requestPayment({
provider: 'wxpay',
orderInfo: res.data
.config, //
success: (res) => {
that.$util.Tips({
title: '支付成功'
});
that.decimal()
that.list(true)
},
fail: (err) => {
that.$util.Tips({
title: '支付失败'
});
console.log('fail:' + JSON.stringify(err));
}
});
}).catch((err) => {
console.log(err)
this.$util.Tips(()=>{
})
let that = this
uni.showModal({
title: '提示',
content: '商户' + this.merchant_Data.mer_name + '是否同意缴纳押金',
success: (res) => {
if (res.confirm) {
paymerchant().then((res) => {
uni.requestPayment({
provider: 'wxpay',
orderInfo: res.data
.config, //
success: (res) => {
that.$util.Tips({
title: '支付成功'
});
that.decimal()
that.list(true)
},
fail: (err) => {
that.$util.Tips({
title: '支付失败'
});
console.log('fail:' + JSON.stringify(err));
}
});
}).catch((err) => {
console.log(err)
that.$util.Tips({
title: err
})
} else if (res.cancel) {
console.log('用户点击取消');
}
})
} else if (res.cancel) {
console.log('用户点击取消');
}
});
}
});
}
}
}
}

View File

@ -39,11 +39,11 @@
<image class="icon_img" :src="`${prefix}zsgl.png`" mode="aspectFill"></image>
<text class="text">在售管理</text>
</view>
<!-- <view class="examine"
<view class="examine"
@click="navigator(`/pages/admin/order/index?mer_id=${mer_id}&product_type=98&type_id=${userInfoData.mer_info.type_id}`)">
<image class="icon_img" :src="`${prefix}cwgl.png`" mode="aspectFill"></image>
<text class="text">财务管理</text>
</view> -->
</view>
<!-- <view class="examine"
@click="navigator(`/pages/admin/financial_management/index?mer_id=${mer_id}&product_type=98&type_id=${userInfoData.mer_info.type_id}`)">
<image class="icon_img" :src="`${prefix}cwgl.png`" mode="aspectFill"></image>
@ -54,6 +54,7 @@
<image class="icon_img" :src="`${prefix}ddgl.png`" mode="aspectFill"></image>
<text class="text">订单管理</text>
</view> -->
<view class="examine"
@click="navigator(`/pages/nongKe/gather/select_warehouse?mer_id=${mer_id}&stype=1`)">
<image class="icon_img" :src="`${prefix}rkgl.png`" mode="aspectFill">
@ -62,7 +63,7 @@
</view>
<view class="examine"
@click="navigator(`/pages/product/basicSet?mer_id=${mer_id}&product_type=98`, '商户设置')">
@click="buyserset">
<image class="icon_img" :src="`${prefix}shsz.png`" mode="aspectFill"></image>
<text class="text">商户设置</text>
</view>
@ -83,12 +84,12 @@
</image>
<text class="text">订单核销</text>
</view>
<view class="examine" @click="navigator(`/pages/margin/margin`)">
<view class="examine" @click="margin(`/pages/margin/margin`)">
<image class="icon_img" src="@/static/images/jy.png">
</image>
<text class="text">缴纳保证</text>
<text class="text">缴纳</text>
</view>
<!-- <view class="examine"
<!-- <view class="examine"
@click="navigator(`/pages/commissionedSales/index/index?mer_id=${mer_id}`)">
<image class="icon_img" src="@/static/images/weituo.png" mode="aspectFill">
</image>
@ -141,7 +142,7 @@
<view class="special_work-titleb" v-if='codenote[0].status==0'>交易申请状态待审核</view>
</view>
<view class="content ">
<!-- <view class="examine"
<!-- <view class="examine"
@click="navigator(`/pages/users/supply_procurement/index?type_id=12&isDetail=1&product_type=98&cate_id=${userInfoData.mer_info.category_id}`)">
<image class="icon_img" :src="`${prefix}ghcg.png`" mode="aspectFill"></image>
@ -194,7 +195,7 @@
<text class="text">商品管理</text>
</view>
<view class="examine"
@click="navigator(`/pages/product/basicSet?mer_id=${mer_id}`, '商户设置')">
@click="buyserset">
<image class="icon_img" :src="`${prefix}shsz.png`" mode="aspectFill">
</image>
<text class="text">商户设置</text>
@ -202,14 +203,14 @@
<view class="examine" @click="margin(`/pages/margin/margin`)">
<image class="icon_img" src="@/static/images/jy.png">
</image>
<text class="text">缴纳保证</text>
<text class="text">缴纳</text>
</view>
<view class="examine"
<!-- <view class="examine"
@click="navigator(`/pages/admin/financial_management/index?mer_id=${mer_id}&product_type=98&type_id=${userInfoData.mer_info.type_id}`)">
<image class="icon_img" :src="`${prefix}cwgl.png`" mode="aspectFill"></image>
<text class="text">财务管理</text>
</view>
<!-- <view class="examine"
</view> -->
<!-- <view class="examine"
@click="navigator(`/pages/users/trading_hall/index?mer_id=${mer_id}`)">
<image class="icon_img" src="@/static/images/diaohuo.png" mode="aspectFill">
</image>
@ -317,16 +318,16 @@
<text class="text">商品管理</text>
</view>
<view class="examine"
@click="navigator(`/pages/product/basicSet?mer_id=${mer_id}`, '商户设置')">
@click="buyserset">
<image class="icon_img" :src="`${prefix}shsz.png`" mode="aspectFill">
</image>
<text class="text">商户设置</text>
</view>
<view class="examine" @click="navigator(`/pages/margin/margin`)">
<view class="examine" @click="margin(`/pages/margin/margin`)">
<image class="icon_img" src="@/static/images/jy.png">
</image>
<text class="text">缴纳保证</text>
<text class="text">缴纳</text>
</view>
<!-- <view class="examine" @click="navigator(`/pages/users/user_invoice_Finance/index?mer_id=${mer_id}`)">
<image class="icon_img" src="@/static/images/cwgk.png" mode="aspectFill">
@ -389,15 +390,15 @@
<text class="text">商品管理</text>
</view>
<view class="examine"
@click="navigator(`/pages/product/basicSet?mer_id=${mer_id}`, '商户设置')">
@click="buyserset">
<image class="icon_img" :src="`${prefix}shsz.png`" mode="aspectFill">
</image>
<text class="text">商户设置</text>
</view>
<view class="examine" @click="navigator(`/pages/margin/margin`)">
<view class="examine" @click="margin(`/pages/margin/margin`)">
<image class="icon_img" src="@/static/images/jy.png">
</image>
<text class="text">缴纳保证</text>
<text class="text">缴纳</text>
</view>
</view>
</view>
@ -847,7 +848,7 @@
}
},
//
//
margin(url) {
if (this.userInfoData.mer_info.mer_settlement_agree_status == 0) {
@ -873,12 +874,13 @@
}
},
//
logout() {
uni.switchTab({
url: '/pages/gather/gather'
})
},
//
buyserset() {
uni.navigateTo({
@ -886,10 +888,7 @@
})
},
navigator(url, t) {
if (this.userInfoData.mer_info.mer_settlement_agree_status == 0) {
if (this.codenote.length == 0) {
this.isFshow = true
this.countDown()
@ -904,7 +903,6 @@
}
}
} else {
uni.navigateTo({
url: url
})

View File

@ -0,0 +1,195 @@
<template>
<view>
<view class="bg">
<image class="bg_img" mode="widthFix"
src="https://lihai001.oss-cn-chengdu.aliyuncs.com/public/uploads/new_activity/detail.webp"></image>
<image @click="back" class="bg_back"
src="https://lihai001.oss-cn-chengdu.aliyuncs.com/public/uploads/new_activity/back.png"></image>
<view class="b_body">
<view class="b_content">
<view v-if="info.content" v-html="info.content.content"></view>
</view>
</view>
</view>
<view class="btn_box">
<image v-if="show_a1" @click="changeA(show_a1)" class="btn_image" mode="widthFix"
src="https://lihai001.oss-cn-chengdu.aliyuncs.com/public/uploads/new_activity/detail_btn1.webp"></image>
<image v-if="show_a2" @click="changeA(show_a2)" class="btn_image" mode="widthFix"
src="https://lihai001.oss-cn-chengdu.aliyuncs.com/public/uploads/new_activity/detail_btn2.webp"></image>
</view>
<u-modal :show="show" :closeOnClickOverlay="true" :title="`[${activity.title}]`"
content="选择活动后只有完成活动任务后才可参加另一个活动, 确定要参与这个活动吗" cancelText="我再想想" confirmText="参加活动" confirmColor="#e54841"
@cancel="show = false" @confirm="joinA()" showCancelButton></u-modal>
<authorize @onLoadFun="onLoadFun" :isAuto="isAuto" :isShowAuth="isShowAuth" @authColse="authColse"
:isGoIndex="false"></authorize>
</view>
</template>
<script>
import { consumption, chooseConsumption } from "@/api/activity.js"
import { getArticleList } from "@/api/api.js"
import { Toast } from "../../../libs/uniApi";
import authorize from "@/components/Authorize.vue";
import { getUserInfo } from '@/api/user.js';
export default {
components: {
authorize
},
data() {
return {
info: {},
userInfo: {},
Alist: [],
activity: {
title: ''
},
show: false,
isAuto: false, //
isShowAuth: false, //
is_join_activity: 0, //
}
},
onLoad() {
this.getArticleList();
this.is_join_activity = uni.getStorageSync('is_join_activity');
},
onShow() {
this.getUserInfo();
this.consumption();
},
computed: {
show_a1() { //
return this.Alist.find(item => item.title == '用户消费补贴活动')
},
show_a2() { //
return this.Alist.find(item => item.title == '用户推荐拉新活动')
}
},
methods: {
consumption() {
consumption().then(res => {
this.Alist = res.data;
})
},
back() {
uni.navigateBack()
},
changeA(item) {
if (!this.userInfo.account) return this.openAuto();
this.activity = item;
if (this.is_join_activity) return this.joinA();
this.show = true;
},
getArticleList() {
getArticleList(25).then(res => {
this.info = res.data.list[0]
})
},
//
joinA() {
chooseConsumption({
coupon_id: this.activity.coupon_id,
activity_id: 1, //1
}).then(res => {
this.show = false;
let url = '';
if (this.activity.title == '用户消费补贴活动') url = "/pages/redpacket/redpack_type?type=1";
if (this.activity.title == '用户推荐拉新活动') url = "/pages/newActivity/invitation/invitation";
if (url) uni.navigateTo({
url: url
})
}).catch(err => {
this.show = false;
this.$nextTick(() => {
Toast('您正在参与活动,暂时不支持切换');
})
})
uni.setStorageSync('is_join_activity', 1);
this.is_join_activity = 1;
},
getUserInfo() {
getUserInfo().then(res => {
this.userInfo = res.data;
}).catch(err => {
console.log(err);
})
},
//
onLoadFun(data) {
this.getUserInfo();
this.isShowAuth = false;
},
//
openAuto() {
// console.log('hajhcdsohjcosvjco')
this.isAuto = true;
this.isShowAuth = true
},
//
authColse: function(e) {
this.isShowAuth = e
},
},
onPullDownRefresh() {
uni.stopPullDownRefresh()
}
}
</script>
<style lang="scss">
page {
background-color: #fff5dd;
}
.bg {
position: relative;
padding-bottom: 300rpx;
.bg_img {
width: 750rpx;
height: 652rpx;
position: absolute;
top: 0;
left: 0;
}
.bg_back {
height: 34rpx;
width: 20rpx;
position: absolute;
top: calc(var(--status-bar-height) + 30rpx);
left: 30rpx;
}
.b_body {
width: 710rpx;
margin-left: 21rpx;
margin-right: 19rpx;
height: auto;
background-color: #fff;
border-radius: 0 0 60rpx 60rpx;
padding: 28rpx;
padding-top: 680rpx;
margin-bottom: 30rpx;
.b_content {
width: 100%;
// height: 800rpx;
// background-color: #eee;
}
}
}
.btn_box {
position: fixed;
bottom: 30rpx;
left: 50%;
transform: translate(-50%);
width: 710rpx;
.btn_image {
width: 100%;
}
}
</style>

View File

@ -0,0 +1,909 @@
<template>
<view class="m_body">
<view class="bg">
<view class="bg_box">
<image class="bg_img" mode="widthFix"
src="https://lihai001.oss-cn-chengdu.aliyuncs.com/public/uploads/new_activity/recharge.webp"></image>
<view class="bg_border"></view>
</view>
<image @click="back" class="bg_back"
src="https://lihai001.oss-cn-chengdu.aliyuncs.com/public/uploads/new_activity/back.png"></image>
<view class="body_card">
<view class="card1">
<view class="change_list">
<view class="change_item" @click="changeItem(item, index)"
v-for="(item, index) in changeList" :key="index">
<image class="item_pic" :src="item.pic"></image>
<view class="item_content">
<view class="top">
<view class="top_left"><text class="c_icon">¥</text> <text class="c_content">{{item.count}}</text> <text class="tips">现在购买礼包即送</text></view>
<view class="top_right">
<text>数量: </text>
<view @click="reduce(item)">- </view>
<view>{{item.num}} </view>
<view @click="append(item)">+ </view>
</view>
</view>
<view class="bottom">
<view class="bottom_item">
<image src="https://lihai001.oss-cn-chengdu.aliyuncs.com/public/uploads/new_activity/re_redpacket.webp"></image>
<view class="text">{{tipType[red_type].red1}}</view>
</view>
<view class="bottom_item">
<image src="https://lihai001.oss-cn-chengdu.aliyuncs.com/public/uploads/new_activity/re_redpacket.webp"></image>
<view class="text">{{tipType[red_type].red2}}</view>
</view>
</view>
</view>
</view>
</view>
</view>
</view>
</view>
<view class="footer">
<view class="f_tip">
总计购买礼包金额:
<view class="price">
<text>{{total}}</text>
</view>
</view>
<view class="primary_btn" @click="$u.throttle(submitSub, 1500)">立即购买</view>
</view>
<uni-popup ref="redTipsRef">
<view class="ref_ref">
<view class="ref_top">
购买礼包金额达到
<text v-if="red_type==0">100-2000</text>
<text v-if="red_type==1">2001-4000</text>
<text v-if="red_type==2">4001-20000</text>
!
</view>
<view class="ref_center">
赠送红包变为
</view>
<view class="ref_bottom">
<view class="bottom_item">
<image src="https://lihai001.oss-cn-chengdu.aliyuncs.com/public/uploads/new_activity/re_redpacket.webp"></image>
<view class="text">{{tipType[red_type].red1}}</view>
</view>
<view class="bottom_item">
<image src="https://lihai001.oss-cn-chengdu.aliyuncs.com/public/uploads/new_activity/re_redpacket.webp"></image>
<view class="text">{{tipType[red_type].red2}}</view>
</view>
</view>
</view>
</uni-popup>
<payment :payMode="payMode" :order_id="rechar_id" :pay_close="pay_close" :is-call="true" @onChangeFun="onChangeFun"
:totalPrice="totalPrice"></payment>
<authorize @onLoadFun="onLoadFun" :isAuto="isAuto" :isShowAuth="isShowAuth" @authColse="authColse"></authorize>
</view>
</template>
<script>
import { getCommissionInfo } from "@/api/user.js"
import { Toast } from "../../../libs/uniApi";
import {
mapGetters
} from "vuex";
import {
getUserInfo,
spreadInfo,
rechargeWechat
} from '@/api/user.js';
import authorize from '@/components/Authorize';
import payment from '@/components/payment';
export default {
components: {
authorize,
payment
},
data() {
return {
userInfo: {},
curNow: 0,
list1: [{
name: '余额购买'
}, {
name: '购买记录'
}],
changeList: [
{
count: 100, //
pic: 'https://lihai001.oss-cn-chengdu.aliyuncs.com/public/uploads/new_activity/a_re_item1.webp',
num: 0, //
},
{
count: 200,
pic: 'https://lihai001.oss-cn-chengdu.aliyuncs.com/public/uploads/new_activity/a_re_item2.webp',
num: 0, //
},
{
count: 500,
pic: 'https://lihai001.oss-cn-chengdu.aliyuncs.com/public/uploads/new_activity/a_re_item3.webp',
num: 0, //
},
{
count: 1000,
pic: 'https://lihai001.oss-cn-chengdu.aliyuncs.com/public/uploads/new_activity/a_re_item4.webp',
num: 0, //
}
],
nowChange: 0,
nowPrice: 0,
priceCount: 1,
isAuto: false, //
isShowAuth: false, //
recordList: [],
tipType: [
{
red1: '8%无门槛红包',
red2: '42%现金抵扣红包'
},
{
red1: '12%无门槛红包',
red2: '68%现金抵扣红包'
},
{
red1: '15%无门槛红包',
red2: '85%现金抵扣红包'
},
],
red_type: 0,
where: {
page: 1,
limit: 15,
type: 2
},
otherValue: '其他',
now_money: 0,
navRecharge: ['账户购买', '佣金转入'],
active: 0,
number: '',
from: '',
placeholder: "0.00",
picList: [],
activePic: 0,
money: "",
numberPic: '',
rechar_id: '0',
rechargeAttention: [],
pay_close: false,
totalPrice: '0',
payMode: [{
name: '微信支付',
icon: 'icon-weixinzhifu',
// #ifdef H5
value: 'h5',
// #endif
// #ifdef MP
value: 'routine',
// #endif
// #ifdef APP-PLUS
value: 'weixin',
// #endif
title: '微信快捷支付',
payStatus: true
}],
}
},
onLoad() {
if (this.isLogin) {
this.getUserInfo()
} else {
this.isAuto = true;
this.isShowAuth = true
}
},
onShow() {
},
computed: {
...mapGetters(['isLogin', 'viewColor', 'keyColor']),
total() {
return this.changeList.reduce((t, obj)=>{
return t + (obj.count * obj.num);
}, 0);
}
},
onReachBottom() {
this.getCommissionInfo();
},
methods: {
back(){
uni.navigateBack();
},
clickTab1(e) {
this.curNow = e.index;
if (e.index == 1) {
this.recordList = [];
this.where.page = 1;
this.getCommissionInfo();
}
},
changeItem(e, index) {
this.nowPrice = e;
this.nowChange = index;
if (this.priceCount * this.nowPrice > 20000) {
this.priceCount = Math.floor(20000 / this.nowPrice);
return Toast('不可超过2万元');
}
},
append(item) {
if(this.total + item.count >=2001 && this.total + item.count <=4000 && this.red_type != 1){
this.red_type = 1;
this.$refs.redTipsRef.open();
}else if(this.total + item.count >=4001 && this.total + item.count <=20000 && this.red_type != 2){
this.red_type = 2;
this.$refs.redTipsRef.open();
}
if (this.total + item.count > 20000 || this.total>=20000) {
return Toast('不可超过2万元');
} else item.num++;
},
reduce(item) {
if(this.total - item.count >=100 && this.total - item.count <=2000 && this.red_type != 0){
this.red_type = 0;
this.$refs.redTipsRef.open();
}else if(this.total - item.count >=2001 && this.total - item.count <=4000 && this.red_type != 1){
this.red_type = 1;
this.$refs.redTipsRef.open();
}
if (this.total==0||item.num==0) return Toast('不能再少啦');
else item.num--;
},
getCommissionInfo() {
getCommissionInfo(this.where).then((res) => {
if (res.data.list.length > 0) {
this.recordList = [...this.recordList, ...res.data.list];
if (res.data.list.length >= 15) this.where.page++;
}
})
},
/**
* 选择金额
*/
picCharge(idx, item) {
this.activePic = idx;
if (item === undefined) {
this.rechar_id = '0';
this.numberPic = "";
this.otherValue = ''
} else {
this.otherValue = '其他'
this.total = "";
this.rechar_id = item.id.toString();
this.numberPic = item.data.price;
}
},
/**
* 购买额度选择
*/
getRecharge() {
getRechargeApi()
.then(res => {
this.picList = res.data.recharge_quota;
if (this.picList[0]) {
this.rechar_id = this.picList[0].id.toString();
this.numberPic = this.picList[0].data.price;
}
this.rechargeAttention = res.data.recharge_attention || [];
})
.catch(res => {
this.$dialog.toast({
mes: res
});
});
},
onLoadFun: function() {
this.isShowAuth = false;
this.getUserInfo();
this.getRecharge();
},
//
authColse: function(e) {
this.isShowAuth = e
},
navRecharges: function(index) {
this.active = index;
},
/**
* 获取用户信息
*/
getUserInfo: function() {
let that = this;
spreadInfo().then(res => {
that.$set(that, 'userInfo', res.data);
})
},
payClose: function() {
this.pay_close = false;
},
payCheck: function(type) {
this.createOrder(type);
},
/*
* 用户购买
*/
submitSub: function(e) {
let that = this
let value = this.total;
//
if (that.active) {
if (parseFloat(value) < 0 || parseFloat(value) == NaN || value == undefined || value == "") {
return that.$util.Tips({
title: '请输入金额'
});
}
uni.showModal({
title: '转入余额',
content: '转入余额后无法再次转出,确认是否转入余额',
success(res) {
if (res.confirm) {
rechargeBrokerage({
brokerage: parseFloat(value),
}).then(res => {
// that.$set(that, 'userInfo.now_money', that.$util.$h.Add(value, that.userInfo.now_money))
uni.showToast({
icon: 'success',
title: '转入成功'
})
// return that.$util.Tips({
// title: '',
// icon: 'success'
// }, {
// tab: 5,
// url: '/pages/users/user_money/index'
// });
}).catch(err => {
return that.$util.Tips({
title: err
})
});
} else if (res.cancel) {
return that.$util.Tips({
title: '已取消'
});
}
},
})
} else {
if (this.rechar_id == 0) {
if (parseFloat(that.total) === 0) {
return that.$util.Tips({
title: '购买金额金额不能为0'
});
}
if (!that.total) {
return that.$util.Tips({
title: '请填写购买金额!'
});
}
if (!Number(that.total)) {
return that.$util.Tips({
title: '请填写正确的金额!'
});
}
}
this.pay_close = true
}
},
createOrder(type) {
let that = this;
let query = {
price: that.rechar_id == 0 ? that.total : that.numberPic,
recharge_id: that.rechar_id,
type: type,
// #ifdef H5
return_url: location.port ? location.protocol + '//' + location.hostname + ':' + location.port +
'/pages/users/user_money/money' : location.protocol + '//' + location.hostname +
'/pages/users/user_money/money'
// #endif
};
// #ifdef MP
// openPaySubscribe().then(() => {
rechargeWechat(query).then(res => {
that.callPay(res);
}).catch(err => {
uni.showToast({
title: err,
icon: 'none'
});
});
// });
// #endif
// #ifndef MP
rechargeWechat(query).then(res => {
console.log('res', res);
that.callPay(res);
}).catch(err => {
console.log('err', err);
uni.showToast({
title: err,
icon: 'none'
});
});
// #endif
},
//
callPay(res) {
let that = this,
status = res.data.type,
orderId = res.data.recharge_id,
callback_key = res.data.pay_key,
jsConfig = res.data.config,
goPages = '/pages/users/user_money/money';
switch (status) {
case 'ORDER_EXIST':
case 'EXTEND_ORDER':
case 'PAY_ERROR':
case 'error':
uni.hideLoading();
Toast(res.message)
// return that.$util.Tips({
// title: res.message
// }, {
// tab: 5,
// url: goPages
// });
break;
case 'success':
uni.hideLoading();
uni.showToast({
icon: 'success',
title: res.message
})
// if (that.seckillId)
// return that.$util.Tips({
// title: res.message,
// icon: 'success'
// }, {
// tab: 4,
// url: goPages
// });
// return that.$util.Tips({
// title: res.message,
// icon: 'success'
// }, {
// tab: 5,
// url: goPages
// });
break;
case 'alipay':
case "alipayQr":
uni.hideLoading();
that.$emit('onChangeFun', {
action: 'payClose'
});
uni.navigateTo({
url: '/pages/order_pay_back/index?keyCode=' + callback_key + '&url=' + jsConfig + '&type=10'
})
return;
break;
// #ifndef MP
case "wechat":
case "weixin":
case "weixinApp":
jsConfig.timeStamp = jsConfig.timestamp;
// #ifndef APP-PLUS
that.$wechat.pay(jsConfig).then(res => {
uni.showToast({
icon: 'success',
title: res.message
})
// return that.$util.Tips({
// title: res.message,
// icon: 'success'
// }, {
// tab: 4,
// url: goPages
// });
}).catch(res => {
uni.showToast({
icon: 'success',
title: '取消支付'
})
// if (res.errMsg == 'chooseWXPay:cancel') return that.$util.Tips({
// title: ''
// }, {
// tab: 5,
// url: goPages
// });
})
// #endif
// #ifdef APP-PLUS
let mp_pay_name = ''
if (uni.requestOrderPayment) {
mp_pay_name = 'requestOrderPayment'
} else {
mp_pay_name = 'requestPayment'
}
uni[mp_pay_name]({
provider: 'wxpay',
orderInfo: jsConfig,
success: (e) => {
this.getUserInfo()
uni.showToast({
icon: 'success',
title: '支付成功'
})
// let url = '/pages/users/user_money/money';
// return that.$util.Tips({
// title: '',
// icon: 'success'
// }, {
// tab: 4,
// url: url
// });
},
fail: (e) => {
console.log(e);
uni.showModal({
content: "支付失败",
showCancel: false,
success: function(res) {
}
})
},
complete: () => {
uni.hideLoading();
},
});
// #endif
break;
// #endif
// #ifdef MP
case "routine":
jsConfig.timeStamp = jsConfig.timestamp;
let mp_pay_name = ''
if (uni.requestOrderPayment) {
mp_pay_name = 'requestOrderPayment'
} else {
mp_pay_name = 'requestPayment'
}
uni[mp_pay_name]({
...jsConfig,
success: function(res) {
uni.hideLoading();
that.getUserInfo();
that.getRecharge();
// console.log('12323424')
uni.showToast({
icon: 'success',
title: '支付成功'
})
// return that.$util.Tips({
// title: '',
// icon: 'success'
// }, {
// tab: 5,
// url: goPages
// });
},
fail: function(e) {
uni.hideLoading();
Toast('取消支付')
// return that.$util.Tips({
// title: ''
// }, {
// tab: 5,
// url: goPages
// });
},
})
break;
// #endif
case "balance":
uni.hideLoading();
//
Toast(res.msg)
// return that.$util.Tips({
// title: res.msg
// }, {
// tab: 5,
// url: goPages
// });
break;
// #ifdef H5
case 'h5':
let host = window.location.protocol + "//" + window.location.host;
let url = `${host}/pages/users/user_money/money`
let eUrl = encodeURIComponent(url)
let jsurl = jsConfig.mweb_url || jsConfig.h5_url
let locations = `${jsurl}&redirect_url=${eUrl}`
setTimeout(() => {
location.href = locations;
}, 100);
break;
// #endif
// #ifdef APP-PLUS
case 'alipayApp':
uni.requestPayment({
provider: 'alipay',
orderInfo: jsConfig,
success: (e) => {
this.getUserInfo()
uni.showToast({
icon: 'success',
title: '支付成功'
})
// return that.$util.Tips({
// title: '',
// icon: 'success'
// }, {
// tab: 5,
// url: goPages
// });
},
fail: (e) => {
uni.showModal({
content: "支付失败",
showCancel: false,
success: function(res) {
uni.redirectTo({
url: goPages
})
}
})
},
complete: () => {
uni.hideLoading();
},
});
break;
// #endif
}
},
onChangeFun: function(e) {
let opt = e;
let action = opt.action || null;
let value = opt.value != undefined ? opt.value : null;
action && this[action] && this[action](value);
},
},
onPullDownRefresh() {
uni.stopPullDownRefresh()
}
}
</script>
<style lang="scss">
page {
background-color: #fff;
}
.bg {
position: relative;
padding-bottom: 300rpx;
.bg_box{
height: 486rpx;
position: relative;
overflow: hidden;
.bg_img {
width: 750rpx;
height: 652rpx;
position: absolute;
top: 0;
left: 0;
}
.bg_border{
position: absolute;
bottom: 0;
left: 0;
width: 100%;
height: 30rpx;
border-radius: 60rpx 60rpx 0 0;
background-color: #fff;
}
}
.bg_back {
height: 34rpx;
width: 20rpx;
position: absolute;
top: calc(var(--status-bar-height) + 30rpx);
left: 30rpx;
}
.body_card {
color: #333;
.card1 {
background-color: #fff;
.change_list {
width: 700rpx;
margin: 0 auto;
display: flex;
flex-direction: column;
.change_item {
width: 700rpx;
height: 172rpx;
text-align: center;
background-color: #f7f7f7;
border-radius: 20rpx 20rpx 20rpx 20rpx;
font-size: 40rpx;
position: relative;
margin-bottom: 30rpx;
.item_pic{
position: absolute;
left: 0;
top: 0;
width: 100%;
height: 100%;
}
.item_content{
padding: 26rpx;
position: absolute;
left: 0;
top: 0;
width: 100%;
height: 100%;
display: flex;
flex-direction: column;
justify-content: space-between;
.top{
display: flex;
justify-content: space-between;
align-items: center;
height: 70rpx;
.top_left{
font-size: 58rpx;
color: #ffc53d;
display: flex;
align-content: center;
.tips{
font-size: 24rpx;
border: 5rpx solid #ffc53d;
margin-left: 20rpx;
padding: 5rpx 15rpx;
border-radius: 60rpx;
color: #7C5906;
}
.c_content{
padding-top: 10rpx;
}
.c_icon {
padding-top: 15rpx;
font-size: 36rpx;
}
}
.top_right{
display: flex;
align-items: center;
color: #FF3A32;
text{
font-size: 28rpx;
}
view{
height: 60rpx;
width: 40rpx;
text-align: center;
line-height: 60rpx;
}
}
}
.bottom{
font-size: 28rpx;
display: flex;
align-items: center;
color: #FF3A32;
.bottom_item{
flex: 1;
display: flex;
align-items: center;
image{
width: 32rpx;
height: 40rpx;
}
.text{
padding-left: 15rpx;
}
}
}
}
}
.change_item_active {
background: rgba(#FF8056, 0.2);
border: 5rpx solid #FF8056;
color: #FF8056;
}
}
}
}
}
.m_body {
.footer {
position: fixed;
left: 0;
bottom: 0;
height: 120rpx;
width: 100vw;
background-color: #fff;
display: flex;
justify-content: space-between;
align-items: center;
padding: 0 20rpx;
.f_tip {
display: flex;
align-items: flex-end;
font-style: 26rpx;
.price {
color: #FF8056;
text {
font-size: 44rpx;
margin-left: 20rpx;
margin-right: 5rpx;
}
}
}
.primary_btn {
background-color: #fa8147;
height: 80rpx;
border-radius: 80rpx;
width: 180rpx;
color: #fff;
line-height: 80rpx;
text-align: center;
}
}
}
.ref_ref{
width: 630rpx;
height: 200rpx;
background-color: #fff;
border-radius: 20rpx;
padding: 20rpx 10rpx;
display: flex;
flex-direction: column;
justify-content: space-between;
align-items: center;
.ref_top{
color: #ffc53d;
}
.ref_center{
font-size: 24rpx;
border: 5rpx solid #ffc53d;
margin-left: 20rpx;
padding: 5rpx 15rpx;
border-radius: 60rpx;
color: #7C5906;
}
.ref_bottom{
font-size: 28rpx;
display: flex;
align-items: center;
justify-content: space-between;
color: #FF3A32;
.bottom_item{
width: 280rpx;
display: flex;
align-items: center;
image{
width: 32rpx;
height: 40rpx;
}
.text{
padding-left: 15rpx;
}
}
}
}
</style>

View File

@ -0,0 +1,384 @@
<template>
<view>
<view class="bg">
<image class="bg_img" mode="widthFix" src="https://lihai001.oss-cn-chengdu.aliyuncs.com/public/uploads/new_activity/invitation.webp"></image>
<image @click="back" class="bg_back" src="https://lihai001.oss-cn-chengdu.aliyuncs.com/public/uploads/new_activity/back.png"></image>
<view class="bg_body">
<view class="b_qr">
<view class="qr_body">
<view class="qr_code">
<image :src="qr_img"></image>
</view>
<view class="qr_text">扫一扫红包正在路上</view>
<view class="qr_tips">温馨提示邀请新用户才有机会获得红包哦</view>
</view>
</view>
<view class="b_user">
<view class="users">
<image v-for="(item, index) in info.user_info" :key="item.uid" class="avatar" :src="item.avatar||'/static/images/f.png'"></image>
<block v-if="info.user_info.length<4">
<view v-for="item in 4-info.user_info.length" :key="item+'n'" class="avatar_no">
<u-icon name="plus" color="#fff" size="40rpx"></u-icon>
</view>
</block>
</view>
<view class="u_tips">邀请新用户消费达目标金额有机会领取红包哦~</view>
<view class="u_btn">
<image v-if="status==0" class="btn_image" @click="open" mode="widthFix" src="https://lihai001.oss-cn-chengdu.aliyuncs.com/public/uploads/new_activity/ibtn1.webp"></image>
<image v-if="status==1" class="btn_image" @click="open" mode="widthFix" src="https://lihai001.oss-cn-chengdu.aliyuncs.com/public/uploads/new_activity/ibtn2.webp"></image>
<image v-if="status==2" class="btn_image" @click="opened" mode="widthFix" src="https://lihai001.oss-cn-chengdu.aliyuncs.com/public/uploads/new_activity/ibtn3.webp"></image>
</view>
<uni-popup ref="redPacket">
<view class="red_packet">
<block v-if="status==0">
<view class="packet_img">
<image class="img" mode="widthFix" src="https://lihai001.oss-cn-chengdu.aliyuncs.com/public/uploads/new_activity/red_packet1.webp"></image>
<view class="p_text">
<view class="big">抱歉</view>
<view class="smoll">有好友消费未达目标金额</view>
<view class="smoll">无法领红包哦~</view>
</view>
</view>
<image @click="close()" class="close_img" mode="widthFix" src="https://lihai001.oss-cn-chengdu.aliyuncs.com/public/uploads/new_activity/close.png"></image>
</block>
<block v-if="status==1">
<view class="packet_img" @click="openRedPacket()">
<image class="img" mode="widthFix" src="https://lihai001.oss-cn-chengdu.aliyuncs.com/public/uploads/new_activity/red_packet2.webp"></image>
<view class="p_text">
<view class="big">恭喜</view>
<view class="smoll">成功获得实物通用红包</view>
<view class="smoll">赶快打开吧~</view>
</view>
</view>
<image @click="close()" class="close_img" mode="widthFix" src="https://lihai001.oss-cn-chengdu.aliyuncs.com/public/uploads/new_activity/close.png"></image>
</block>
<block v-if="status==2">
<view class="packet_img">
<image class="img" mode="widthFix" src="https://lihai001.oss-cn-chengdu.aliyuncs.com/public/uploads/new_activity/red_packet3.webp"></image>
<view class="p_text" style="bottom: 60rpx;">
<view class="smoll">恭喜你成功获得</view>
<view class="smoll red_count"><text class="count">{{red_packet.amount}}</text></view>
<view class="big2">购买指定商品可直接抵扣使用</view>
<view class="smoll">{{red_packet.end_time}}过期</view>
<image @click="close()" class="btn_img" mode="widthFix" src="https://lihai001.oss-cn-chengdu.aliyuncs.com/public/uploads/new_activity/put.webp"></image>
</view>
</view>
<image @click="close()" class="close_img" mode="widthFix" src="https://lihai001.oss-cn-chengdu.aliyuncs.com/public/uploads/new_activity/close.png"></image>
</block>
</view>
</uni-popup>
</view>
<view class="b_in_list">
<image class="body_head_img" mode="widthFix" src="https://lihai001.oss-cn-chengdu.aliyuncs.com/public/uploads/new_activity/irecoed.webp"></image>
<view class="b_head">
<view style="width: 120rpx;"></view>
<view class="head_title" style="width: 200rpx;">名称</view>
<view class="head_title" style="width: 130rpx;">ID</view>
<view class="head_title" style="width: 120rpx;">目标金额</view>
<view class="head_title" style="width: 120rpx;">状态</view>
</view>
<view class="b_content">
<view class="content_list" v-for="(item, index) in info.user_info" :key="item.uid">
<image class="avatar" :src="item.avatar||'/static/images/f.png'"></image>
<view class="content_item" style="width: 180rpx;margin: 0 10rpx;">{{item.nickname}}</view>
<view class="content_item" style="width: 130rpx;">{{item.uid}}</view>
<view class="content_item" style="width: 120rpx;">{{item.target_amount}}<text class="mall"></text></view>
<view class="content_item" style="width: 120rpx;">
<text v-if="item.is_finish" style="color: #18CE61;">已完成</text>
<text v-else style="color: #FA5A29;">未完成</text>
</view>
</view>
<!-- <view class="mall none">暂无记录</view> -->
</view>
</view>
</view>
</view>
</view>
</template>
<script>
import { storeActivityStatus, storeActivityReceive, storeActivityQrcode } from "@/api/activity.js"
import { Toast } from "../../../libs/uniApi";
import { getUserInfo } from '@/api/user.js';
export default {
data() {
return {
info: {
user_info: []
},
red_packet: {
amount: '0.00',
end_time: ''
},
status: 0, //0 1 2
qr_img: ''
}
},
onLoad() {},
onShow() {
this.storeActivityQrcode();
this.loadInfo();
},
methods: {
back(){
uni.navigateBack()
},
loadInfo(){
storeActivityStatus().then(res=>{
this.info = res.data;
if(res.data.allow_receive) this.status = 1;
})
},
opened(){
Toast('已经领取过啦!');
},
open(){
this.$refs.redPacket.open();
},
close(){
this.$refs.redPacket.close();
},
storeActivityQrcode(){
storeActivityQrcode().then(res=>{
this.qr_img = res.data.url;
})
},
//
async openRedPacket(){
this.$refs.redPacket.close();
try{
let {data} = await storeActivityReceive();
this.$nextTick(()=>{
this.red_packet = data;
this.$u.sleep(800).then(()=>{
this.status = 2;
this.$u.sleep(100).then(()=>{
this.open();
})
})
})
}catch(e){
Toast(e)
}
}
},
onPullDownRefresh() {
uni.stopPullDownRefresh()
}
}
</script>
<style lang="scss">
page{
background-color: #ff864d;
}
.bg{
position: relative;
height: auto;
.bg_img{
width: 750rpx;
position: absolute;
top: 0;
left: 0;
}
.bg_back{
height: 34rpx;
width: 20rpx;
position: absolute;
top: calc(var(--status-bar-height) + 30rpx);
left: 30rpx;
}
.bg_body{
position: absolute;
top: 414rpx;
left: 0;
.b_qr{
width: 710rpx;
height: 750rpx;
margin: 0 20rpx;
// background: linear-gradient(to top, #FFE3AE 0%, #FFF6EB 100%);
background: #FFF6EB;
border-radius: 50rpx;
padding: 20rpx;
.qr_body{
width: 100%;
height: 100%;
border: 5rpx solid #ffd588;
border-radius: 50rpx;
text-align: center;
display: flex;
justify-content: space-evenly;
flex-direction: column;
.qr_code{
width: 510rpx;
height: 510rpx;
// background-color: #f8962e;
margin: 0 auto;
image{
width: 100%;
height: 100%;
}
}
.qr_text{
font-size: 36rpx;
color: #C44100;
font-weight: 500;
}
.qr_tips{
font-size: 26rpx;
color: #C44100;
}
}
}
.b_user{
margin-top: 30rpx;
.users{
display: flex;
justify-content: center;
.avatar{
height: 100rpx;
width: 100rpx;
border-radius: 50%;
margin: 15rpx;
}
.avatar_no{
height: 100rpx;
width: 100rpx;
font-weight: 200;
border-radius: 50%;
border: 2rpx dashed #fff;
margin: 15rpx;
background-color: rgba(#fff, 0.3);
display: flex;
justify-content: center;
align-items: center;
}
}
.u_tips{
color: #FFE5B3;
font-size: 26rpx;
text-align: center;
}
.u_btn{
margin-top: 30rpx;
margin-bottom: 20rpx;
display: flex;
justify-content: center;
.btn_image{
width: 403rpx;
height: 113rpx;
}
}
.red_packet{
display: flex;
flex-direction: column;
align-items: center;
.packet_img{
width: 750rpx;
position: relative;
.img{
width: 100%;
}
.p_text{
position: absolute;
bottom: 120rpx;
width: 100%;
text-align: center;
color: #fff;
.big{
font-size: 38rpx;
font-weight: 500;
margin-bottom: 30rpx;
}
.smoll{
font-size: 28rpx;
margin-bottom: 20rpx;
}
.big2{
font-size: 32rpx;
font-weight: 500;
margin-bottom: 30rpx;
}
.btn_img{
width: 310rpx;
}
.red_count{
margin-top: 80rpx;
margin-bottom: 40rpx;
.count{
font-size: 80rpx;
}
}
}
}
.close_img{
width: 60rpx;
height: 60rpx;
}
}
}
.b_in_list{
width: 710rpx;
margin: 0 20rpx;
height: auto;
background-color: #fff;
border-radius: 50rpx;
padding: 20rpx;
margin-bottom: 30rpx;
display: flex;
flex-direction: column;
align-content: center;
.body_head_img{
width: 253rpx;
margin: 0 auto;
}
.b_head{
background-color: #fff2ed;
border-radius: 20rpx;
color: #854116;
display: flex;
margin-top: 28rpx;
text-align: center;
.head_title{
width: 150rpx;
padding: 20rpx 0;
font-size: 28rpx;
}
}
.b_content{
.mall{
font-size: 26rpx;
}
.content_list{
background-color: #FFF6E9;
border-radius: 20rpx;
color: #C44100;
padding-top: 20rpx;
margin-top: 20rpx;
font-size: 28rpx;
display: flex;
align-items: center;
padding-bottom: 20rpx;
text-align: center;
.content_item{
overflow: hidden;
}
.avatar{
width: 100rpx;
height: 100rpx;
border-radius: 50%;
margin-left: 16rpx;
}
}
.none{
text-align: center;
padding: 20rpx;
}
}
}
}
}
</style>

View File

@ -0,0 +1,182 @@
<template>
<view>
<view style="height: var(--status-bar-height);background-color: #e54841;"></view>
<view class="bg">
<image class="bg_img" mode="widthFix" src="https://lihai001.oss-cn-chengdu.aliyuncs.com/public/uploads/new_activity/subsidy.webp"></image>
<image @click="back" class="bg_back" src="https://lihai001.oss-cn-chengdu.aliyuncs.com/public/uploads/new_activity/back.png"></image>
<view class="bg_title">补贴记录</view>
<view class="b_title">
<view>总计获得</view> <view class="count">{{total_amount}}</view> <view>元补贴红包</view>
</view>
<view class="b_body">
<image class="body_head_img" mode="widthFix" src="https://lihai001.oss-cn-chengdu.aliyuncs.com/public/uploads/new_activity/srecord.webp"></image>
<view class="b_head">
<view class="head_title">消费金额</view>
<view class="head_title">补贴金额</view>
<view class="head_title2">红包获得时间</view>
</view>
<view class="b_content">
<view class="content_list" v-for="(item, index) in list" :key="index">
<view class="content_item">{{item.order_amount}}<text class="mall"></text></view>
<view class="content_item">{{item.coupon_price}}<text class="mall"></text></view>
<view class="content_item2"><text class="mall">{{item.create_time}}</text></view>
</view>
<view class="mall none" style="padding-top: 0;" v-if="list.length==0" @click="navTo">{{'暂无记录, 去消费领补贴 >>'}}</view>
</view>
</view>
</view>
</view>
</template>
<script>
import { storeActivityRecord } from "@/api/activity.js"
import { Toast } from "../../../libs/uniApi";
import { getUserInfo } from '@/api/user.js';
export default {
data() {
return {
total_amount: '0.00',
list: []
}
},
onLoad() {},
onShow() {
this.storeActivityRecord();
},
methods: {
back(){
uni.navigateBack()
},
storeActivityRecord(){
storeActivityRecord().then(res=>{
this.list = res.data.record;
this.total_amount = res.data.total_amount || "0.00"
})
},
navTo(){
uni.switchTab({
url:'/pages/index/index'
})
}
},
onPullDownRefresh() {
uni.stopPullDownRefresh()
}
}
</script>
<style lang="scss">
page{
background-color: #ffe3bd;
}
.bg{
position: relative;
height: auto;
.bg_img{
width: 750rpx;
position: absolute;
top: 0;
left: 0;
}
.bg_back{
height: 34rpx;
width: 20rpx;
position: absolute;
top: 30rpx;
left: 30rpx;
}
.bg_title{
font-size: 32rpx;
color: #fff;
font-weight: 500;
position: absolute;
top: 30rpx;
left: 50%;
transform: translate(-50%);
}
.b_title{
position: absolute;
width: 100%;
height: 70rpx;
top: 225rpx;
left: 0;
text-align: center;
font-size: 36rpx;
color: #F1503F;
display: flex;
justify-content: center;
align-items: flex-end;
.count{
// height: 100%;
font-size: 66rpx;
font-weight: bold;
margin: 10rpx 20rpx;
}
}
.b_body{
position: absolute;
width: 710rpx;
margin-left: 21rpx;
margin-right: 19rpx;
height: auto;
background-color: #fff;
top: 534rpx;
left: 0;
border-radius: 50rpx;
padding: 28rpx;
margin-bottom: 30rpx;
display: flex;
flex-direction: column;
align-content: center;
.body_head_img{
width: 253rpx;
margin: 0 auto;
}
.b_head{
background-color: #FFF2E0;
border-radius: 20rpx;
color: #C44100;
display: flex;
margin-top: 28rpx;
font-size: 28rpx;
padding: 20rpx 0;
.head_title{
padding-left: 20rpx;
width: 190rpx;
}
.head_title2{
padding-left: 20rpx;
width: 280rpx;
}
}
.b_content{
background-color: #fff2ed;
border-radius: 20rpx;
color: #FF5A3A;
padding-top: 20rpx;
margin-top: 28rpx;
font-size: 32rpx;
.mall{
font-size: 26rpx;
}
.content_list{
display: flex;
padding-bottom: 20rpx;
.content_item{
padding-left: 20rpx;
width: 190rpx;
}
.content_item2{
padding-left: 20rpx;
width: 280rpx;
}
}
.none{
text-align: center;
padding: 20rpx;
}
}
}
}
</style>

View File

@ -0,0 +1,183 @@
<template>
<view>
<view class="bg">
<image class="bg_img" mode="widthFix" src="https://lihai001.oss-cn-chengdu.aliyuncs.com/public/uploads/new_activity/subsidy.webp"></image>
<image @click="back" class="bg_back" src="https://lihai001.oss-cn-chengdu.aliyuncs.com/public/uploads/new_activity/back.png"></image>
<view class="bg_title">无门槛实物通用红包</view>
<view class="b_title">
<view>总计剩余</view> <view class="count">{{total_amount}}</view> <view>元通用红包</view>
</view>
<view class="b_body">
<image class="body_head_img" mode="widthFix" src="https://lihai001.oss-cn-chengdu.aliyuncs.com/public/uploads/new_activity/srecord.webp"></image>
<view class="b_head">
<view class="head_title">消费金额</view>
<view class="head_title">补贴金额</view>
<view class="head_title2">红包获得时间</view>
</view>
<view class="b_content">
<view class="content_list" v-for="(item, index) in list" :key="index">
<view class="content_item">{{item.order_amount}}<text class="mall"></text></view>
<view class="content_item">{{item.coupon_price}}<text class="mall"></text></view>
<view class="content_item2"><text class="mall">{{item.create_time}}</text></view>
</view>
<view class="mall none" style="padding-top: 0;" v-if="list.length==0" @click="navTo">{{'暂无记录, 去消费领补贴 >>'}}</view>
</view>
</view>
</view>
</view>
</template>
<script>
import { storeActivityRecord } from "@/api/activity.js"
import { Toast } from "../../../libs/uniApi";
import { getUserInfo } from '@/api/user.js';
export default {
data() {
return {
total_amount: '0.00',
list: []
}
},
onLoad() {},
onShow() {
this.storeActivityRecord();
},
methods: {
back(){
uni.navigateBack()
},
storeActivityRecord(){
storeActivityRecord({
type: 1
}).then(res=>{
this.list = res.data.record;
this.total_amount = res.data.total_amount || "0.00"
})
},
navTo(){
uni.switchTab({
url:'/pages/index/index'
})
}
},
onPullDownRefresh() {
uni.stopPullDownRefresh()
}
}
</script>
<style lang="scss">
page{
background-color: #ffe3bd;
}
.bg{
position: relative;
height: auto;
.bg_img{
width: 750rpx;
position: absolute;
top: 0;
left: 0;
}
.bg_back{
height: 34rpx;
width: 20rpx;
position: absolute;
top: calc(var(--status-bar-height) + 30rpx);
left: 30rpx;
}
.bg_title{
font-size: 32rpx;
color: #fff;
font-weight: 500;
position: absolute;
top: calc(var(--status-bar-height) + 30rpx);
left: 50%;
transform: translate(-50%);
}
.b_title{
position: absolute;
width: 100%;
height: 70rpx;
top: 225rpx;
left: 0;
text-align: center;
font-size: 36rpx;
color: #F1503F;
display: flex;
justify-content: center;
align-items: flex-end;
.count{
// height: 100%;
font-size: 66rpx;
font-weight: bold;
margin: 10rpx 20rpx;
}
}
.b_body{
position: absolute;
width: 710rpx;
margin-left: 21rpx;
margin-right: 19rpx;
height: auto;
background-color: #fff;
top: 534rpx;
left: 0;
border-radius: 50rpx;
padding: 28rpx;
margin-bottom: 30rpx;
display: flex;
flex-direction: column;
align-content: center;
.body_head_img{
width: 253rpx;
margin: 0 auto;
}
.b_head{
background-color: #FFF2E0;
border-radius: 20rpx;
color: #C44100;
display: flex;
margin-top: 28rpx;
font-size: 28rpx;
padding: 20rpx 0;
.head_title{
padding-left: 20rpx;
width: 190rpx;
}
.head_title2{
padding-left: 20rpx;
width: 280rpx;
}
}
.b_content{
background-color: #fff2ed;
border-radius: 20rpx;
color: #FF5A3A;
padding-top: 20rpx;
margin-top: 28rpx;
font-size: 32rpx;
.mall{
font-size: 26rpx;
}
.content_list{
display: flex;
padding-bottom: 20rpx;
.content_item{
padding-left: 20rpx;
width: 190rpx;
}
.content_item2{
padding-left: 20rpx;
width: 280rpx;
}
}
.none{
text-align: center;
padding: 20rpx;
}
}
}
}
</style>

View File

@ -0,0 +1,183 @@
<template>
<view>
<view class="bg">
<image class="bg_img" mode="widthFix" src="https://lihai001.oss-cn-chengdu.aliyuncs.com/public/uploads/new_activity/subsidy.webp"></image>
<image @click="back" class="bg_back" src="https://lihai001.oss-cn-chengdu.aliyuncs.com/public/uploads/new_activity/back.png"></image>
<view class="bg_title">现金抵扣红包</view>
<view class="b_title">
<view>总计剩余</view> <view class="count">{{total_amount}}</view> <view>元抵扣红包</view>
</view>
<view class="b_body">
<image class="body_head_img" mode="widthFix" src="https://lihai001.oss-cn-chengdu.aliyuncs.com/public/uploads/new_activity/srecord.webp"></image>
<view class="b_head">
<view class="head_title">消费金额</view>
<view class="head_title">补贴金额</view>
<view class="head_title2">红包获得时间</view>
</view>
<view class="b_content">
<view class="content_list" v-for="(item, index) in list" :key="index">
<view class="content_item">{{item.order_amount}}<text class="mall"></text></view>
<view class="content_item">{{item.coupon_price}}<text class="mall"></text></view>
<view class="content_item2"><text class="mall">{{item.create_time}}</text></view>
</view>
<view class="mall none" style="padding-top: 0;" v-if="list.length==0" @click="navTo">{{'暂无记录, 去消费领补贴 >>'}}</view>
</view>
</view>
</view>
</view>
</template>
<script>
import { storeActivityRecord } from "@/api/activity.js"
import { Toast } from "../../../libs/uniApi";
import { getUserInfo } from '@/api/user.js';
export default {
data() {
return {
total_amount: '0.00',
list: []
}
},
onLoad() {},
onShow() {
this.storeActivityRecord();
},
methods: {
back(){
uni.navigateBack()
},
storeActivityRecord(){
storeActivityRecord({
type: 2
}).then(res=>{
this.list = res.data.record;
this.total_amount = res.data.total_amount || "0.00"
})
},
navTo(){
uni.switchTab({
url:'/pages/index/index'
})
}
},
onPullDownRefresh() {
uni.stopPullDownRefresh()
}
}
</script>
<style lang="scss">
page{
background-color: #ffe3bd;
}
.bg{
position: relative;
height: auto;
.bg_img{
width: 750rpx;
position: absolute;
top: 0;
left: 0;
}
.bg_back{
height: 34rpx;
width: 20rpx;
position: absolute;
top: calc(var(--status-bar-height) + 30rpx);
left: 30rpx;
}
.bg_title{
font-size: 32rpx;
color: #fff;
font-weight: 500;
position: absolute;
top: calc(var(--status-bar-height) + 30rpx);
left: 50%;
transform: translate(-50%);
}
.b_title{
position: absolute;
width: 100%;
height: 70rpx;
top: 225rpx;
left: 0;
text-align: center;
font-size: 36rpx;
color: #F1503F;
display: flex;
justify-content: center;
align-items: flex-end;
.count{
// height: 100%;
font-size: 66rpx;
font-weight: bold;
margin: 10rpx 20rpx;
}
}
.b_body{
position: absolute;
width: 710rpx;
margin-left: 21rpx;
margin-right: 19rpx;
height: auto;
background-color: #fff;
top: 534rpx;
left: 0;
border-radius: 50rpx;
padding: 28rpx;
margin-bottom: 30rpx;
display: flex;
flex-direction: column;
align-content: center;
.body_head_img{
width: 253rpx;
margin: 0 auto;
}
.b_head{
background-color: #FFF2E0;
border-radius: 20rpx;
color: #C44100;
display: flex;
margin-top: 28rpx;
font-size: 28rpx;
padding: 20rpx 0;
.head_title{
padding-left: 20rpx;
width: 190rpx;
}
.head_title2{
padding-left: 20rpx;
width: 280rpx;
}
}
.b_content{
background-color: #fff2ed;
border-radius: 20rpx;
color: #FF5A3A;
padding-top: 20rpx;
margin-top: 28rpx;
font-size: 32rpx;
.mall{
font-size: 26rpx;
}
.content_list{
display: flex;
padding-bottom: 20rpx;
.content_item{
padding-left: 20rpx;
width: 190rpx;
}
.content_item2{
padding-left: 20rpx;
width: 280rpx;
}
}
.none{
text-align: center;
padding: 20rpx;
}
}
}
}
</style>

View File

@ -0,0 +1,336 @@
<template>
<view>
<view class="bg">
<image class="bg_img" mode="widthFix"
src="https://lihai001.oss-cn-chengdu.aliyuncs.com/public/uploads/new_activity/tow_price_bg.webp"></image>
<image @click="back" class="bg_back"
src="https://lihai001.oss-cn-chengdu.aliyuncs.com/public/uploads/new_activity/back.png"></image>
<view class="b_body">
<view class="b_content">
<view style="padding-bottom: 16rpx;">
<picker :range="addressList" range-key="street_name" @change="changeAddress">
<block v-if="address.street_id">
当前活动区域为 <text style="color: #f84221;margin-left: 5rpx;">[ {{address.townName}} ] , 点击切换</text>
</block>
<block v-else>
<text style="color: #f84221;margin-left: 5rpx;">当前区域 [ {{address.townName}} ] 没有活动 , 点击切换</text>
</block>
</picker>
</view>
<block v-if="goodsList.length>0">
<view v-if="item.product" v-for="(item, index) in goodsList" class="short_item" @click="clickProduct(item)">
<image class="image" :src="item.product.image"></image>
<view class="short_item_right">
<view class="r_name">
<text v-if="item.mer_labels_name" class="mer-labels">{{item.mer_labels_name}}</text>{{item.product.store_name}}
</view>
<view style="display: flex;justify-content: flex-start;margin-top: 5rpx;">
<view class="r_street" v-if="item.merchant">{{item.merchant.street_name}}</view>
<view class="r_type" v-if="item.product.store_info||getSkuName(item)||item.unit_name">
<view v-if="getSkuName(item)">{{getSkuName(item)}}</view>
<view v-else-if="item.unit_name">{{item.unit_name}}</view>
</view>
</view>
<view class="r_btn" v-if="item.product && item.product.price">
<view style="color: #7f7f7f;"><text style="font-size: 33rpx;">{{ item.product.price.split('.')[0] }}.</text>{{item.product.price.split('.')[1]}} 限时特惠</view>
<view class="qiang" :class="{'no_qiang': !can_buy}">{{item.limited_price}} </view>
<!-- <image src="@/static/images/icon/plus.png" style="width: 40rpx;height: 40rpx;border-radius: 40rpx;"></image> -->
</view>
</view>
</view>
</block>
<block v-else>
<image style="width: 100%;" mode="widthFix" src="/static/img/no_short.f2ffcd1c.png"></image>
<view style="text-align: center;color: #999;">此区域没有找到活动商品切换其他地方试试呢</view>
</block>
</view>
</view>
</view>
<shortPopupActive ref="shortPopupRef" @addCart="loadCart" :source="105" isBuy></shortPopupActive>
<u-modal :show="show" :closeOnClickOverlay="true" :title="`[${activity.title}]`"
content="选择活动后只有完成活动任务后才可参加另一个活动, 确定要参与这个活动吗" cancelText="我再想想" confirmText="参加活动" confirmColor="#e54841"
@cancel="show = false" @confirm="joinA()" showCancelButton></u-modal>
<authorize @onLoadFun="onLoadFun" :isAuto="isAuto" :isShowAuth="isShowAuth" @authColse="authColse"
:isGoIndex="false"></authorize>
</view>
</template>
<script>
import { getArticleList } from "@/api/api.js"
import { Toast } from "../../../libs/uniApi";
import authorize from "@/components/Authorize.vue";
import { getUserInfo } from '@/api/user.js';
import shortPopupActive from "@/components/shortPopupActive.vue"
import { storeActivityProduct, storeActivityDistrict } from "@/api/activity.js"
import {
cloudWarehouse
} from '@/api/requesta.js'
import {
getCartCounts,
getCartList,
} from '@/api/requesta.js';
export default {
components: {
authorize,
shortPopupActive
},
data() {
return {
info: {},
userInfo: {},
Alist: [],
activity: {
title: ''
},
address: {
townName: '',
street_id: ''
},
show: false,
isAuto: false, //
isShowAuth: false, //
addressList: [],
goodsList: [],
goodsNum: 0,
can_buy: 0, // , 0, 1
}
},
onLoad(options) {
this.address = {
street_id: options.street_id,
townName: options.townName
}
},
onShow() {
this.getUserInfo();
this.loadList();
this.cartFn();
this.loadAddressList();
},
methods: {
changeAddress(e){
this.address = {
street_id: this.addressList[e.detail.value].street_code,
townName: this.addressList[e.detail.value].street_name
}
this.loadList();
},
back() {
uni.navigateBack()
},
getUserInfo() {
getUserInfo().then(res => {
this.userInfo = res.data;
}).catch(err => {
console.log(err);
})
},
loadList(){
let location = '';
if(this.$store.state.storage.location.lat) location = this.$store.state.storage.location.lat + ',' + this.$store.state.storage.location.long;
storeActivityProduct({
street_code: this.address.street_id,
activity_id: 2, //2
location: location,
source: 105
}).then(res => {
this.can_buy = res.data.can_buy;
this.goodsList = res.data.list;
}).catch(e=>{
Toast(e.msg||e.message||e)
})
},
loadAddressList(){
storeActivityDistrict().then(res=>{
this.addressList = res.data;
if(!this.addressList.find(item=>item.street_code==this.address.street_id)){
this.address.street_id = ''
}
})
},
//
getSkuName(item){
return Object.keys(item.sku).join('/')||null;
},
//
clickProduct(data){
if(!this.address.townName) return Toast('请先选择活动区域')
if(!this.can_buy){
return Toast('活动限购一件, 您已经买过了哦~')
}
this.$refs.shortPopupRef.setDatas(data, this.goodsNum);
this.$refs.shortPopupRef.open();
},
//
loadCart(){
this.cartFn();
},
//
cartFn() {
getCartCounts({
source: 105,
// product_type: 98
}).then(res => {
this.goodsNum = res.data[0].count
})
},
//
onLoadFun(data) {
this.getUserInfo();
this.isShowAuth = false;
},
//
openAuto() {
// console.log('hajhcdsohjcosvjco')
this.isAuto = true;
this.isShowAuth = true
},
//
authColse: function(e) {
this.isShowAuth = e
},
},
onPullDownRefresh() {
uni.stopPullDownRefresh()
}
}
</script>
<style lang="scss">
page {
background-color: #fff5dd;
}
.bg {
position: relative;
padding-bottom: 30rpx;
.bg_img {
width: 750rpx;
height: 652rpx;
position: absolute;
top: 0;
left: 0;
}
.bg_back {
height: 34rpx;
width: 20rpx;
position: absolute;
top: calc(var(--status-bar-height) + 30rpx);
left: 30rpx;
}
.b_body {
width: 710rpx;
margin-left: 21rpx;
margin-right: 19rpx;
height: auto;
background-color: #fff;
border-radius: 0 0 60rpx 60rpx;
padding: 28rpx;
padding-top: 680rpx;
margin-bottom: 30rpx;
.b_content {
width: 100%;
// height: 800rpx;
// background-color: #eee;
.short_item {
// padding: 20rpx;
padding-bottom: 30rpx;
display: flex;
justify-content: space-between;
.image {
height: 200rpx;
width: 200rpx;
border-radius: 21.03rpx 21.03rpx 21.03rpx 21.03rpx;
margin-right: 20rpx;
flex-shrink: 0;
}
.short_item_right {
width: 430rpx;
display: flex;
flex-direction: column;
justify-content: space-between;
.r_name {
width: 100%;
height: 80rpx;
font-size: 28rpx;
line-height: 40rpx;
text-overflow: ellipsis;
display: -webkit-box; /* 使用弹性盒子布局 */
-webkit-box-orient: vertical; /* 设置为垂直方向布局 */
overflow: hidden; /* 隐藏超出部分 */
-webkit-line-clamp: 2; /* 限制显示两行文本 */
.mer-labels{
background-color: #f84221;
color: #fff;
font-size: 18rpx;
padding: 4rpx 8rpx;
border-radius: 5rpx;
margin-right: 8rpx;
}
}
.r_type {
font-size: 22.78rpx;
color: #737373;
flex: 1;
overflow: hidden;
display: flex;
view {
height: 39rpx;
line-height: 39rpx;
background: #FEF5F3;
padding: 0 16rpx;
border-radius: 39rpx;
text-overflow: ellipsis;
}
}
.r_btn {
display: flex;
justify-content: space-between;
font-size: 22.78rpx;
color: #F84221;
align-items: center;
background-color: rgba(#F84221, 0.1);
padding-left: 15rpx;
border-radius: 0 60rpx 60rpx 0;
.qiang{
width: 160rpx;
height: 60rpx;
display: flex;
justify-content: center;
align-items: center;
background-color: #F84221;
color: #fff;
border-radius: 60rpx;
font-weight: bold;
font-size: 28rpx;
}
.no_qiang{
background-color: #7f7f7f;
}
}
.r_street{
font-size: 24rpx;
height: 39rpx;
line-height: 39rpx;
color: #7f7f7f;
padding-right: 10rpx;
}
}
}
}
}
}
</style>

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -9,10 +9,9 @@
<view class="head_tit">
<view class="" style="display: flex;align-items: center;">
<view class="back" @click='backjJump()' style="margin-right:17rpx ;">
<!-- <u--image :showLoading="true" src="/static/images/LHYC/PFH.png" width="50.82rpx"
<!-- <u--image :showLoading="true" src="/static/images/LHYC/PFH.png" width="50.82rpx"
height="50.82rpx"></u--image> -->
<i class="iconfont icon-xiangzuo" style="font-size: 40rpx;text-align: left;"
></i>
<i class="iconfont icon-xiangzuo" style="font-size: 40rpx;text-align: left;"></i>
</view>
<view style="font-size: 40rpx;">
<!-- {{titName}} -->
@ -26,7 +25,7 @@
:value='sotreParam.keyword' @confirm="searchSubmit"></input> -->
<u-search borderColor="#FF6D20" bgColor="white" :showAction="false" placeholder="搜索店铺名称"
v-model="sotreParam.keyword" class="serch_cls"></u-search>
<view class="serchbtn img_cls" @tap="searchSubmit">搜索</view>
<view class="serchbtn img_cls" @tap="searchSubmit">搜索</view>
<!-- <u--image @tap="searchSubmit" class="img_cls" :showLoading="true"
src="/static/images/GXSC/SSBT.png" width="115.65rpx" height="56.82rpx"></u--image> -->
</view>
@ -534,10 +533,12 @@
//#endif
},
selfLocation() {
if (uni.getStorageSync('RejectTarget')) return
let self = this
uni.getLocation({
type: 'gcj02',
type: 'wgs84',
success: (res) => {
res = wgsToGcj(res);
let latitude, longitude;
latitude = res.latitude.toString();
longitude = res.longitude.toString();
@ -704,7 +705,8 @@
margin: 0;
padding: 0;
}
.serchbtn {
.serchbtn {
// position: absolute;
// right: 5rpx;
// top: 5rpx;
@ -717,6 +719,7 @@
color: #fff;
background: linear-gradient(to right, #F84221, #FF6D20);
}
.com_name {
font-size: 32rpx;
// background-color: red;

View File

@ -12,7 +12,8 @@
<view class="list-box listA" :class="goods.length > 0 ? 'fadeIn on' : ''">
<view class="item" v-for="(item, index) in goods" :key="index">
<view class="pictrue">
<easy-loadimage mode="widthFix" :image-src="item.image"></easy-loadimage>
<!-- <easy-loadimage mode="widthFix" :image-src="item.image"></easy-loadimage> -->
<image :src="item.image" :lazy-load="true"></image>
</view>
<view class="text-info">
<view class="title">{{ item.store_name }}</view>
@ -24,7 +25,7 @@
<u-popup :show="editGoodsShow" @close="editGoodsClose" :round="18" mode="center">
<view class="edit_goods_box">
<view class="edit_name flex_a_c edit_name_no">
<text>商品编号</text><input type="text" disabled placeholder="请输入商品名称" v-model="editGoodsCode">
<text>商品条码</text><input type="text" disabled placeholder="请输入商品条码" v-model="editGoodsCode">
</view>
<view class="edit_name flex_a_c edit_name_no">
<text>商品名称</text> <input type="text" disabled placeholder="请输入商品名称" v-model="editGoodsName">
@ -43,8 +44,25 @@
</view>
</view>
</u-popup>
<u-modal :show="addGoodsShow" content='是否添加到你的仓库中?' @cancel="addGoodsclose()" @close="addGoodsclose()"
@confirm="addGoodsopen()" :closeOnClickOverlay="true" :showCancelButton="true"></u-modal>
<!-- <u-modal :show="addGoodsShow" content='是否添加到你的仓库中?' @cancel="addGoodsclose()" @close="addGoodsclose()"
@confirm="addGoodsopen()" :closeOnClickOverlay="true" :showCancelButton="true"></u-modal> -->
<u-popup :show="addGoodsShow" @close="searchGoodsClose" :round="18" mode="center">
<view class="search_goods_box">
<view style="text-align: center;font-weight: bold;">是否添加到你的仓库中?</view>
<view style="display: flex;align-items: center;margin-top: 16rpx;">
<view style="margin-right: 20rpx;">价格:</view>
<input style="flex: 1;" type="text" v-model="putGoods.price" class="putGoods" :placeholder="`请设置商品价格`">
</view>
<view style="display: flex;align-items: center;margin-top: 16rpx;">
<view style="margin-right: 20rpx;">库存:</view>
<input style="flex: 1;" type="text" v-model="putGoods.stock" class="putGoods" placeholder="请输入商品库存">
</view>
<view class="search_goods_btn">
<view class="cancel edit_btn" @click="addGoodsclose()">取消</view>
<view class="search edit_btn" @click="addGoodsopen()">确定</view>
</view>
</view>
</u-popup>
<u-popup :show="searchGoodsShow" @close="searchGoodsClose" :round="18" mode="center">
<view class="search_goods_box">
<input type="text" v-model="searchGoodsName" class="searchGoods" placeholder="请输入商品名称">
@ -68,7 +86,7 @@
} from '@/api/store.js'
import {
seachBarCodeAPI,
post_product_import
micro_product_import
} from '@/api/api.js'
import {
Toast
@ -77,7 +95,7 @@
data() {
return {
goodsData: [{
name: '',
name: '商品名称添加',
type: 1,
src: 'https://lihai001.oss-cn-chengdu.aliyuncs.com/public/kk/luzhou/static4/mingcheng.png'
},
@ -96,7 +114,24 @@
mer_id: 0,
searchGoodsShow: false,
searchGoodsName: '',
goods: [],
goods: [
// {
// "id": 5,
// "store_name": "260 170X118X2605",
// "bar_code": "6940074914381",
// "unit_name": "",
// "price": "0.00",
// "cost": "0.00",
// "ot_price": "0.00",
// "stock": 9999999,
// "image": "127.0.0.1:8324/uploads/img/2023-11-01/1698809432.jpg"
// }
],
putGoods: {
id: '',
price: '',
stock: '',
},
item: [],
addGoodsShow: false,
stype: '',
@ -104,28 +139,32 @@
},
onLoad(e) {
this.mer_id = e.mer_id
this.stype = e.stype
if (this.stype == 1) {
return this.goodsData[0].name = '商品添加'
}
if (this.stype == 2) {
return this.goodsData[0].name = '商品名称添加'
}
// this.stype = e.stype
this.stype = 2
// if (this.stype == 1) {
// return this.goodsData[0].name = ''
// }
// if (this.stype == 2) {
// return this.goodsData[0].name = ''
// }
},
onShow() {
},
methods: {
addGoods(item) {
this.putGoods.id = item.id;
this.addGoodsShow = true
this.item = item
},
addGoodsopen() {
if (this.item) {
post_product_import(this.item.product_id).then(e => {
if (this.putGoods.id) {
console.log('开始');
micro_product_import(this.putGoods).then(e => {
if (e.status == 200) {
Toast(e.data.msg)
this.addGoodsShow = false
this.putGoods = {};
} else {
// console.log(e);
Toast(e.message)
@ -149,6 +188,8 @@
},
openSearch() {},
async searchGoodsClose() {
console.log('搜索', this.searchGoodsName);
if(this.searchGoodsName=='') return Toast('请输入商品名称');
const rq = {
mer_id: this.mer_id,
name: this.searchGoodsName
@ -221,6 +262,7 @@
code: code,
mer_id: this.mer_id
}).then(res => {
console.log(res);
if (!res.data) {
uni.showToast({
title: res.message,
@ -311,6 +353,13 @@
padding: 12px;
margin: 21.05rpx 0;
}
.putGoods {
height: 87.72rpx;
border: 1px solid #f5f5f5;
border-radius: 8px;
padding: 12px;
}
.search_goods_btn {
margin-top: 28.07rpx;

View File

@ -4,16 +4,15 @@
<view class='productList' :style="viewColor">
<!-- 顶部 -->
<view class="top">
<view style="height: 10px;">
</view>
<!-- <view style="height: 10px;">
</view> -->
<view class="head_tit">
<view class="" style="display: flex;align-items: center;">
<view class="back" @click='backjJump()' style="margin-right: 17rpx;">
<!-- <u--image :showLoading="true" src="/static/images/LHYC/PFH.png" width="50.82rpx"
<!-- <u--image :showLoading="true" src="/static/images/LHYC/PFH.png" width="50.82rpx"
height="50.82rpx"></u--image> -->
<i class="iconfont icon-xiangzuo" style="font-size: 40rpx;text-align: left;"
></i>
<i class="iconfont icon-xiangzuo" style="font-size: 40rpx;text-align: left;"></i>
</view>
<view style="font-size: 40rpx;">
<!-- {{titName}} -->
@ -25,243 +24,29 @@
</view>
<view style="position: relative;">
<!-- <text class='iconfont icon-sousuo'></text>
<input placeholder='搜索店铺名称' placeholder-class='placeholder' confirm-type='search' name="search"
:value='sotreParam.keyword' @confirm="searchSubmit"></input> -->
<u-search borderColor="#FF6D20" bgColor="white" :showAction="false" placeholder="搜索店铺名称"
<u-search borderColor="#FF6D20" bgColor="white" :showAction="false" placeholder="搜索商品名称"
v-model="sotreParam.keyword" class="serch_cls"></u-search>
<view class="serchbtn img_cls" @tap="searchSubmit">搜索</view>
<!-- <u--image @tap="searchSubmit" class="img_cls" :showLoading="true"
src="/static/images/GXSC/SSBT.png" width="115.65rpx" height="56.82rpx"></u--image> -->
<view class="serchbtn img_cls" @tap="searchSubmit">搜索</view>
</view>
</view>
</view>
<view class="content">
<view class="hot_serch">
<!-- <text>热搜:</text> <text>热a搜商品</text> <text>热搜商品</text>
<text>热搜sasas商品</text> -->
</view>
<!-- <view class="menu_cls">
<u-scroll-list>
<view class="menu_li" @click="navGo(item.merchant_category_id)" v-for="item,index in menuList"
:key="index">
<u--image :showLoading="true" :src="imgList[index]" width="94.63rpx" height="99.63rpx"
style="margin-bottom: 20rpx;"></u--image>
<text style="display: block; width: 15vw;">{{item.category_name}}</text>
</view>
</u-scroll-list>
</view> -->
<view class="goods_list">
<view class="goods_card" @click="goStore(item.mer_id)" v-for="(item,index) in storeList"
:key="index">
<view class="left">
<u--image :showLoading="true" :src="item.mer_avatar" width="157.71rpx"
height="157.71rpx"></u--image>
</view>
<view class="right">
<view class="li head" style="display: flex;">
<text class="com_name">{{item.mer_name}}</text>
<text
style="font-weight: normal;font-size: 19.28rpx;color: red;padding:0 10rpx; border-radius: 10rpx; border: 1px solid red;">{{item.type_name}}</text>
</view>
<view class="li">
<u--image v-for="item,index in [1,1,,1,1,1]" :key="index" :showLoading="true"
src="/static/images/GXSC/PF.png" width="20.85rpx" height="19.85rpx"></u--image>
<text style="margin-left: 20rpx;color: #FF6D20; ">5.0</text>
<text>月销2000+</text>
</view>
<view class="li" style="align-items: center;">
<u--image :showLoading="true" src="/static/images/GXSC/DH.png" width="33.85rpx"
height="33.85rpx"></u--image>
<text> {{item.service_phone}}</text>
</view>
<view class="li" style="align-items: center;">
<u--image :showLoading="true" src="/static/images/GXSC/SJ.png" width="33.85rpx"
height="33.85rpx"></u--image>
<text>{{item.mer_take_time[0]}}-{{item.mer_take_time[1]}}</text>
</view>
<view class="li" style="align-items: center;">
<u--image :showLoading="true" src="/static/images/GXSC/DW.png" width="33.85rpx"
height="33.85rpx"></u--image>
<text class="address">{{item.mer_address}}</text>
</view>
</view>
</view>
</view>
</view>
<!-- 热搜 -->
<!-- <view class="nav-wrapper" :class="'styleType'+store_street_theme">
<view class='nav acea-row row-middle' :class="'styleType'+store_street_theme">
<view v-for="item in downMenus" :key="item.key" class='item'
:class="{'font-colors':firstKey == item.key}" @click='set_where(item.key)'>
<view class="">
{{item.title}}
</view>
<view class="line" :class="{'font-line':firstKey == item.key}">
</view>
</view>
</view>
</view>
-->
<!-- 店铺 -->
<!--
<block>
<view class="store-wrapper">
<view class="store-item" v-for="(item,index) in storeList" :key="index">
<view class="head">
<view class="bgc_img" :style="{ backgroundImage: `url(${item.mini_banner})`}">
</view>
<view class="zhezhao">
</view>
<view class="zhezhao1" @click="goStore(item.mer_id)">
<view class="title">
<view>{{item.mer_name}}
</view>
<span>
{{item.type_name}}
</span>
</view>
<view class="coent">
<view class="avater">
<image :src="item.mer_avatar" mode=""></image>
</view>
<view class=" text">
<view class="text_one">
<view class="">
<image src="@/static/images/phone.png" mode=""></image>
{{item.service_phone}}
</view>
<view class="text_one_r">
<image src="@/static/images/clock.png" mode=""></image>
{{item.mer_take_time[0]}}-{{item.mer_take_time[1]}}
</view>
</view>
<view class="text_two">
<image src="@/static/images/shangpu.png" mode=""></image>
{{item.mer_info}}
</view>
<view class="text_three">
<image src="@/static/images/dingwei.png" mode=""></image>
{{item.mer_address}}
</view>
</view>
</view>
</view>
</view>
</view>
</view>
</block>
<block v-if="store_street_theme == 2">
<view class="mer-item2" v-for="(item,index) in storeList" :key='index'>
<view class="mer-hd mer-shop-count" @click="goStore(item.mer_id)">
<image class="mer-avatar" :src="item.mer_avatar"></image>
<view class="mer-shop-right">
<view class="mer-count">
<view class="mer-top">
<view class="txt line1">{{item.mer_name}}</view>
<text v-if="item.type_name" class="font-bg-red ml8">{{item.type_name}}</text>
<text v-else-if="item.is_trader" class="font-bg-red ml8">自营</text>
</view>
<view class="mer-btn">
<view class="">
{{item.care_count<10000 ? item.care_count : (item.care_count/10000).toFixed(2)+''}}人关注
</view>
<view class="line" v-if="item.distance"></view>
<view class="distance" v-if="item.distance" @click.stop="showStoreLocation(item)">
<view class="">
{{item.distance}}
</view>
<view class="iconfont icon-xiangyou"></view>
</view>
</view>
</view>
<view class="pro-box">
<navigator :url="`/pages/goods_details/index?id=${itemn.product_id}`" hover-class="none"
class="pro-item" v-for="(itemn,indexn) in item.recommend" :key='indexn'>
<view class="picture">
<easy-loadimage mode="widthFix" :image-src="itemn.image"></easy-loadimage>
<view v-if="itemn.border_pic"
:style="{ backgroundImage: `url(${itemn.border_pic})` }"
class="border-picture"></view>
</view>
<view class="price">
<text></text>{{itemn.price}}
</view>
</navigator>
</view>
</view>
</view>
</view>
</block>
<block v-if="store_street_theme == 3">
<view class="mer-item mer-item3" v-for="(item,index) in storeList" :key='index'
:style="'background-image:url('+item.mini_banner+')'">
<view class="mer-hd" @click="goStore(item.mer_id)">
<view class="mer-name">
<image :src="item.mer_avatar"></image>
<view class="">
<view class="mer-top">
<view class="txt line1">{{item.mer_name}}</view>
<text v-if="item.type_name" class="font-bg-red ml8">{{item.type_name}}</text>
<text v-else-if="item.is_trader" class="font-bg-red ml8">自营</text>
</view>
<view class="mer-btn">
<view class="">
{{item.care_count<10000 ? item.care_count : (item.care_count/10000).toFixed(2)+''}}人关注
</view>
<view class="line" v-if="item.distance"></view>
<view class="distance" v-if="item.distance" @click.stop="showStoreLocation(item)">
<view class="">
{{item.distance}}
</view>
<view class="iconfont icon-xiangyou"></view>
</view>
</view>
</view>
</view>
</view>
<view class="pro-box" :class="'styleType'+store_street_theme">
<view class="pro-item" v-for="(itemn,indexn) in item.recommend" :key='indexn' v-if="indexn<=2">
<view @click="go_details(itemn.product_type,itemn.product_id)">
<view class="picture">
<image :src="itemn.image"></image>
<view v-if="itemn.border_pic"
:style="{ backgroundImage: `url(${itemn.border_pic})` }" class="border-picture">
</view>
</view>
<view class="price">
<text></text>{{itemn.price}}
</view>
</view>
</view>
</view>
</view>
</block>
<view class='loadingicon acea-row row-center-wrapper' v-if="loading">
<text class='loading iconfont icon-jiazai' :hidden='loading==false'></text>{{loadTitle}}
</view>
-->
<view class="goodslist">
<WaterfallsFlowp :wfList="storeList" @itemTap="itemTap" :type="1" />
</view>
</view>
<view class='no-shop' v-if="!storeList.length && !loading && !loadingIcon" v-cloak>
<view class='pictrue' style="margin: 0 auto;background-color: #F0F2F5;">
<image src='../../../static/images/noCart.png'></image>
<text>暂无店铺快去搜索其他店铺</text>
<text>暂无商品快去搜索其他商品吧</text>
</view>
</view>
</block>
@ -277,10 +62,12 @@
<script>
import {
storeMerchantList,
getProductslist,
getGeocoder,
supMenuApi,
supAgoodsApi
} from '@/api/store.js';
import { wgsToGcj } from "@/utils/wgs.js";
import {
merClassifly,
@ -296,10 +83,12 @@
configMap
} from '@/utils';
import easyLoadimage from '@/components/easy-loadimage/easy-loadimage.vue';
import WaterfallsFlowp from '@/components/WaterfallsFlow/WaterfallsFlowp.vue'
const app = getApp();
export default {
components: {
easyLoadimage
easyLoadimage,
WaterfallsFlowp
},
data() {
return {
@ -356,6 +145,7 @@
category_id: '',
type_id: '',
street_id: '',
village_id: '',
type_code: '',
},
@ -371,7 +161,7 @@
latitude: "",
longitude: "",
count: 0,
storeTypeArr: [], //
storeTypeArr: [], //
merList: [], //
product_type: 0,
show: false,
@ -380,7 +170,9 @@
};
},
onLoad(options) {
this.sotreParam.type_code = options.type_code
this.sotreParam.type_code = options.type_code;
this.sotreParam.street_id = options.street_id || null;
this.sotreParam.village_id = options.village_id || null;
this.storeList = [];
if (this.mer_location == 1) {
this.selfLocation()
@ -416,6 +208,14 @@
url: `/pages/nongKe/supply_chain/supplierA?type_id=10&?merchant_category_id=${id}`
})
},
itemTap(item){
uni.navigateTo({
url: '/pages/goods_details/index_v?id=' + item.product_id,
fail: (err) => {
console.log(err);
}
})
},
go_details: function(product_type, product_id) {
if (product_type == 98) {
uni.navigateTo({
@ -456,7 +256,7 @@
});
});
},
//
//
getStoreType: function() {
let temp = []
getStoreTypeApi().then(res => {
@ -539,9 +339,11 @@
},
selfLocation() {
let self = this
if (uni.getStorageSync('RejectTarget')) return
uni.getLocation({
type: 'gcj02',
type: 'wgs84',
success: (res) => {
res = wgsToGcj(res);
let latitude, longitude;
latitude = res.latitude.toString();
longitude = res.longitude.toString();
@ -573,7 +375,7 @@
},
});
},
//
//
storeMerchantList() {
if (this.loading) return
this.loading = true
@ -586,10 +388,16 @@
if (this.latitude) {
rqData.location = this.latitude + ',' + this.longitude
}
if(this.sotreParam.street_id){
rqData.street_id = this.sotreParam.street_id;
}
if(this.sotreParam.village_id){
rqData.village_id = this.sotreParam.village_id;
}
// console.log(rqData)
storeMerchantList(rqData).then(res => {
getProductslist(rqData).then(res => {
this.count = res.data.count
this.storeList = this.storeList.concat(res.data.list)
this.storeList = this.storeList.concat(res.data.list);
this.loading = false
this.loadingIcon = false
// this.titName = this.storeList[0].mer_info
@ -717,6 +525,7 @@
color: #fff;
background: linear-gradient(to right, #F84221, #FF6D20);
}
* {
margin: 0;
padding: 0;
@ -869,12 +678,12 @@
color: #B3B3B3;
display: flex;
justify-content: space-around;
margin: 20rpx 0;
margin: 0;
flex-wrap: wrap;
// margin-top: 50rpx;
padding-top: 50rpx;
/* #ifdef H5 */
padding-top: 100rpx;
padding-top: 80rpx;
/* #endif */
text {
@ -1326,4 +1135,35 @@
transform: translateY(-50%);
}
.goodslist {
margin: 0 auto;
width: 725rpx;
.no-more {
text-align: center;
padding-top: 18rpx;
}
.pictrue_tips {
color: $uni-nothing-text;
}
.common-hd {
display: flex;
align-items: center;
justify-content: center;
height: 118rpx;
.title {
padding: 0 80rpx;
font-size: 34rpx;
color: $theme-color;
font-weight: bold;
background-image: url("~@/static/images/index-title.png");
background-repeat: no-repeat;
background-size: 100% auto;
background-position: left center;
}
}
}
</style>

File diff suppressed because it is too large Load Diff

View File

@ -1,5 +1,5 @@
<template>
<view style="background-color: #F0F2F5;">
<view style="background-color: #f5f5f5;">
<!-- <view style="height: var(--status-bar-height);background-color: red;height: 10vh;">dsfdsfsdfds</view> -->
<view class='productList' :style="viewColor">
<!-- 顶部 -->
@ -8,15 +8,16 @@
<view class="head_tit">
<view class="" style="display: flex;align-items: center;">
<!-- <u--image :showLoading="true" src="/static/images/LHYC/PFH.png" width="50.82rpx"
<!-- <u--image :showLoading="true" src="/static/images/LHYC/PFH.png" width="50.82rpx"
height="50.82rpx" @click='backjJump'></u--image> -->
<i class="iconfont icon-xiangzuo" style="font-size: 40rpx;text-align: left;" @click='backjJump'></i>
<i class="iconfont icon-xiangzuo" style="font-size: 40rpx;text-align: left;"
@click='backjJump'></i>
<view class=""
style="font-size: 36.8rpx;font-weight: 700;transform: skewX(-10deg);margin-left: 20rpx;color: #F84221;">
供销综合云市场
</view>
<view class=""
@click="navGoto(`/pages/nongKe/cloud_entrepot/indexa?street=${street_id}&town=${street}`)"
@click="navGoto(`/pages/nongKe/cloud_entrepot/indexa?street=${street_id}&town=${street}&location=${latitude},${longitude}`)"
style="font-size: 36.8rpx;font-weight: 700;transform: skewX(-10deg);margin-left: 60rpx;">
供销综合云商品
</view>
@ -30,7 +31,7 @@
<!-- 搜索框 -->
<!-- <view style="position: relative;width: 289.14rpx;" v-if="showSerch">
<u-search borderColor="#FF6D20" bgColor="white" @change="test" :showAction="false"
placeholder="请输入..." v-model="sotreParam.keyword" @search="onInputConfirm"
placeholder="请输入..." v-model="storeParam.keyword" @search="onInputConfirm"
class="serch_cls"></u-search>
<u--image @tap="searchSubmit" class="img_cls" :showLoading="true"
src="/static/images/GXSC/SSBT.png" width="115.65rpx" height="56.82rpx"></u--image>
@ -48,7 +49,7 @@
<view class="sswz">
<view style="position: relative;width: 501.17rpx;">
<u-search borderColor="#FF6D20" bgColor="white" @change="test" :showAction="false"
placeholder="搜索店铺或者名称" v-model="sotreParam.keyword" @search="onInputConfirm"
placeholder="搜索店铺或者名称" v-model="storeParam.keyword" @search="onInputConfirm"
class="serch_cls"></u-search>
<u--image @tap="searchSubmit" class="img_cls" :showLoading="true"
src="/static/images/GXSC/SSBT.png" width="115.65rpx" height="56.82rpx"></u--image>
@ -94,14 +95,26 @@
<view class="menu_li" @click="navGo(item.merchant_category_id)" v-for="item,index in menuList"
:key="index">
<!-- {{item.merchant_category_id}} -->
<u--image :showLoading="true" :src="imgList[index]" width="94.63rpx" height="99.63rpx"
style="margin-bottom: 20rpx;"></u--image>
<u--image :showLoading="true" :src="item.background" width="94.63rpx" height="99.63rpx"
></u--image>
<text
style="display: block;font-size: 26.29rpx; width: 15vw;">{{item.category_name}}</text>
style="display: block;font-size: 26.29rpx;">{{item.category_name}}</text>
</view>
</u-scroll-list>
</view>
<view class='no-shop' v-if="storeParam.is_recommend && !loading && !loadingIcon" v-cloak>
<view class='pictrue' style="margin: 0 auto;background-color: #F5F5F5;">
<!-- <image src='../../../static/images/noCart.png'></image> -->
<image src='@/static/images/no_short.png'></image>
<text>暂无店铺切换其他位置试试</text>
</view>
</view>
<block v-if="storeParam.is_recommend">
<view class="common-hd">
<view class="title">为你推荐</view>
</view>
</block>
<view class="goods_list">
<view class="goods_card" @click="goStore(item.mer_id)" v-for="(item,index) in storeList"
:key="index">
@ -112,19 +125,32 @@
<view class="right">
<view class="li head">
<text class="com_name">{{item.mer_name}}</text>
<text
<text v-if="item.type_id==17"
style="font-weight: normal;font-size: 19.28rpx;color: red;padding:0 10rpx; border-radius: 10rpx; border: 1px solid red;">{{item.type_name}}</text>
</view>
<view class="li">
<u--image v-for="item,index in [1,1,,1,1,1]" :key="index" :showLoading="true"
src="/static/images/GXSC/PF.png" width="20.85rpx" height="19.85rpx"></u--image>
<text style="margin-left: 20rpx;color: #FF6D20; ">5.0</text>
<!-- <u--image v-for="item,index in [1,1,1,1,1]" :key="index" :showLoading="true"
src="/static/images/GXSC/PF.png" width="20.85rpx" height="19.85rpx"></u--image> -->
<view class="score">
<view class="star">
<view
:style="{width: `${(item.service_score / 5 * 100).toFixed(0)}%`, backgroundImage: `url(${domain}/static/diy/score1${keyColor}.png)`}">
</view>
</view>
</view>
<text style="margin-left: 20rpx;color: #FF6D20; ">{{item.service_score}}</text>
<text>月销{{item.sales}}</text>
<text v-if="item.distance" style="font-size: 24rpx;color: #aaa;">{{item.distance}}</text>
</view>
<view class="li" style="align-items: center;">
<u--image :showLoading="true" src="/static/images/GXSC/DH.png" width="33.85rpx"
height="33.85rpx"></u--image>
<text> {{item.service_phone}}</text>
<!-- <image src="../../../static/images/MYTC/SJicon.png"></image> -->
<u--image :showLoading="true" src="/static/images/address.png" width="33.85rpx"
height="33.85rpx"></u--image>
<view >{{item.street_name}}</view>
</view>
<view class="li" style="align-items: center;">
<u--image :showLoading="true" src="/static/images/GXSC/SJ.png" width="33.85rpx"
@ -142,7 +168,6 @@
</view>
<u-loadmore :status="status" />
</view>
<!-- 热搜 -->
@ -306,12 +331,7 @@
</view>
<view class='no-shop' v-if="!storeList.length && !loading && !loadingIcon" v-cloak>
<view class='pictrue' style="margin: 0 auto;background-color: #F5F5F5;">
<image src='../../../static/images/noCart.png'></image>
<text>暂无店铺快去搜索其他店铺吧</text>
</view>
</view>
<u-loadmore v-if="storeParam.is_recommend==false && storeList.length != 0 || (storeParam.is_recommend==true)" :status="status" />
</block>
<u-popup class="pop" :show="show" @close="close" mode="center" bgColor='transparent'>
<image :src="image"></image>
@ -332,6 +352,7 @@
storeMerchantList,
getGeocoder,
} from '@/api/store.js';
import { wgsToGcj } from "@/utils/wgs.js";
import {
supMenuApi
} from '@/api/requesta.js';
@ -360,7 +381,9 @@
getDiy
} from '@/api/api.js'
import {
HTTP_REQUEST_URL
} from '@/config/app';
import Cache from '@/utils/cache';
const app = getApp();
@ -372,6 +395,7 @@
},
data() {
return {
domain: HTTP_REQUEST_URL,
defaInd: [0, 0],
columnData: [],
showSerch: false,
@ -442,14 +466,15 @@
firstKey: 0,
//
storeList: [],
sotreParam: {
storeParam: {
keyword: '',
page: 1,
limit: 10,
order: '',
order: 'location',
category_id: '',
type_id: '',
street_id: ''
street_id: '',
is_recommend: false, //
},
storeKey: 0,
storeScroll: true,
@ -476,13 +501,17 @@
this.street_id = options.street_id
this.street = options.townName
this.product_type = options.product_type ?? 0
if(this.$store.state.storage?.location?.lat){
this.latitude = this.$store.state.storage.location.lat;
this.longitude = this.$store.state.storage.location.long;
}
if (options.street_id != undefined) {
this.sotreParam.street_id = options.street_id
this.storeParam.street_id = options.street_id
}
this.credit_buy = options.credit_buy
this.sotreParam.type_id = options.type_id
this.sotreParam.type_id = options.type_id && options.type_id.split(',').toString() || ''
this.sotreParam.category_id = options.cate_id && options.cate_id.split(',').toString() || ''
this.storeParam.type_id = options.type_id
this.storeParam.type_id = options.type_id && options.type_id.split(',').toString() || ''
this.storeParam.category_id = options.cate_id && options.cate_id.split(',').toString() || ''
this.storeList = [];
if (this.mer_location == 1) {
this.selfLocation()
@ -524,7 +553,7 @@
mer_location: 0,
store_street_theme: 1,
hide_mer_status: '',
}, mapGetters(['viewColor'])),
}, mapGetters(['viewColor', 'keyColor'])),
},
methods: {
selectLocation() {
@ -540,7 +569,7 @@
this.$bus.$emit('value-updated', e.value[1].name + ',' + e.value[1].code);
})
this.sotreParam.street_id = e.value[1].code
this.storeParam.street_id = e.value[1].code
this.street_id = e.value[1].code
this.storeMerchantList()
},
@ -574,7 +603,7 @@
area_code: code
}).then(res => {
this.$refs.uPicker.setColumnValues(1, res.data);
});
},
@ -621,14 +650,14 @@
},
test() {
// if (this.sotreParam.keyword.length > 3) {
// this.sotreParam.keyword.slice(0, 3)
// this.sotreParam.keyword = this.sotreParam.keyword.slice(0, 3) + "..."
// if (this.storeParam.keyword.length > 3) {
// this.storeParam.keyword.slice(0, 3)
// this.storeParam.keyword = this.storeParam.keyword.slice(0, 3) + "..."
// }
// console.log(this.sotreParam.keyword.length)
// console.log(this.storeParam.keyword.length)
},
hotSerchFn(keywords) {
this.sotreParam.keyword = keywords
this.storeParam.keyword = keywords
this.searchSubmit()
},
goMap(url) {
@ -643,7 +672,7 @@
},
navGo(id) {
uni.navigateTo({
url: `/pages/nongKe/supply_chain/supplierA?type_id=10&merchant_category_id=${id}&street_id=${this.street_id}`
url: `/pages/nongKe/supply_chain/supplierA?type_id=10,17&merchant_category_id=${id}&street_id=${this.street_id}`
})
},
go_details: function(product_type, product_id) {
@ -669,8 +698,8 @@
check: false
}
})
if (this.sotreParam.category_id.length > 0) {
this.sotreParam.category_id.forEach((ids, index) => {
if (this.storeParam.category_id.length > 0) {
this.storeParam.category_id.forEach((ids, index) => {
temp.forEach(el => {
if (ids == el.merchant_category_id) {
el.check = true
@ -691,7 +720,7 @@
let temp = []
getStoreTypeApi().then(res => {
res.data.forEach(item => {
if (item.mer_type_id == this.sotreParam.type_id) {
if (item.mer_type_id == this.storeParam.type_id) {
temp.push({
...item,
check: true
@ -769,14 +798,41 @@
},
selfLocation() {
let self = this
uni.getLocation({
type: 'gcj02',
if (uni.getStorageSync('RejectTarget')) return;
if(this.$store?.state?.storage?.location?.lat){
this.latitude = this.$store?.state?.storage?.location?.lat;
this.longitude = this.$store?.state?.storage?.location?.long;
getGeocoder({
lat: this.latitude,
long: this.longitude
}).then(res => {
// console.log(res)
this.detaile_address = res.data.address;
this.location_address = res.data.address;
this.recommend_address = res.data.address.length > 4 ? res.data.address
.slice(0, 4) + '...' :
res.data.address
}).catch(err => {
uni.showToast({
title: err,
icon: 'none'
})
})
}
else uni.getLocation({
type: 'wgs84',
success: (res) => {
console.log('定位');
res = wgsToGcj(res);
let latitude, longitude;
latitude = res.latitude.toString();
longitude = res.longitude.toString();
this.latitude = res.latitude
this.longitude = res.longitude
this.latitude = res.latitude.toFixed(6);
this.longitude = res.longitude.toFixed(6);
this.$store.commit('setLocation', {
lat: res.latitude.toFixed(6),
long: res.longitude.toFixed(6),
});
getGeocoder({
lat: latitude,
long: longitude
@ -808,29 +864,60 @@
if (this.loading) return
this.loading = true
let rqData = {
keyword: this.sotreParam.keyword,
page: this.sotreParam.page,
keyword: this.storeParam.keyword,
page: this.storeParam.page,
limit: 10,
order: this.sotreParam.order,
category_id: this.sotreParam.category_id,
type_id: this.sotreParam.type_id,
street_id: this.sotreParam.street_id,
credit_buy: this.credit_buy
order: this.storeParam.order,
category_id: this.storeParam.category_id,
type_id: this.storeParam.type_id,
credit_buy: this.credit_buy,
}
rqData.street_id = this.storeParam.street_id
if (this.latitude) {
rqData.location = this.latitude + ',' + this.longitude
}
// console.log(rqData)
storeMerchantList(rqData).then(res => {
if (res.data.list.length < rqData.limit) {
this.status = "nomore"
}
this.count = res.data.count
this.storeList = (res.data.list)
this.loading = false
this.loadingIcon = false
//
if(rqData.page==1 && res.data.count==0){
this.storeMerchantList2();
}else this.storeParam.is_recommend = false;
})
},
//
storeMerchantList2() {
if (this.loading) return
this.loading = true
let rqData = {
keyword: this.storeParam.keyword,
page: this.storeParam.page,
limit: 10,
order: this.storeParam.order,
category_id: this.storeParam.category_id,
type_id: this.storeParam.type_id,
credit_buy: this.credit_buy,
}
if (this.latitude) {
rqData.location = this.latitude + ',' + this.longitude
}
storeMerchantList(rqData).then(res => {
this.storeParam.is_recommend = true;
this.count = res.data.count
this.storeList = (res.data.list)
this.loading = false
this.loadingIcon = false
})
},
//
goStore(id) {
if (this.sotreParam.type_id == 12) {
if (this.storeParam.type_id == 12) {
uni.navigateTo({
url: `/pages/nongKe/supply_chain/merchant?id=${id}`
})
@ -844,13 +931,13 @@
},
searchSubmit: function() {
let that = this;
that.$set(that.sotreParam, 'keyword', this.sotreParam.keyword);
that.$set(that.storeParam, 'keyword', this.storeParam.keyword);
this.set_where(this.firstKey)
this.showSerch = false
},
//
bindRight() {
this.sotreParam.page = 1
this.storeParam.page = 1
this.rightBox = true
},
//
@ -858,24 +945,24 @@
let arr1 = [],
arr2 = []
if (data.storeTypeArr.length == 0) {
// this.sotreParam.type_id = ''
// this.storeParam.type_id = ''
} else {
data.storeTypeArr.forEach(item => {
arr1.push(item.mer_type_id)
})
this.sotreParam.type_id = arr1.toString();
this.storeParam.type_id = arr1.toString();
}
if (data.merList.length == 0) {
this.sotreParam.category_id = ''
this.storeParam.category_id = ''
} else {
data.merList.forEach(item => {
arr2.push(item.merchant_category_id)
})
this.sotreParam.category_id = arr2.toString();
this.storeParam.category_id = arr2.toString();
}
this.rightBox = data.status
this.loadend = false;
this.$set(this.sotreParam, 'page', 1)
this.$set(this.storeParam, 'page', 1)
this.storeList = [];
this.storeMerchantList();
},
@ -889,8 +976,9 @@
if (this.loading) return
this.storeList = []
this.firstKey = e
this.sotreParam.page = 1
this.sotreParam.order = this.downMenu[e].order
this.storeParam.page = 1
// this.storeParam.order = this.downMenu[e].order
this.storeParam.order = 'location' //使
this.storeMerchantList();
},
backjJump() {
@ -922,16 +1010,16 @@
},
//
onReachBottom() {
this.sotreParam.page += 1
this.storeParam.page += 1
let rqData = {
keyword: this.sotreParam.keyword,
page: this.sotreParam.page,
keyword: this.storeParam.keyword,
page: this.storeParam.page,
limit: 10,
order: this.sotreParam.order,
category_id: this.sotreParam.category_id,
type_id: this.sotreParam.type_id,
street_id: this.sotreParam.street_id,
order: this.storeParam.order,
category_id: this.storeParam.category_id,
type_id: this.storeParam.type_id,
street_id: this.storeParam.street_id,
credit_buy: this.credit_buy
}
if (this.latitude) {
@ -939,16 +1027,13 @@
}
// console.log(rqData)
storeMerchantList(rqData).then(res => {
if (res.data.list == 0) {
console.log(res.data.list.length);
if (res.data.list.length < rqData.limit) {
this.status = "nomore"
return
}
this.count = res.data.count
this.storeList.push(...res.data.list)
})
}
}
@ -959,6 +1044,9 @@
margin: 0;
padding: 0;
}
page{
background-color: #f5f5f5;
}
.com_name {
font-size: 33.29rpx;
@ -992,7 +1080,8 @@
padding-top: var(--status-bar-height);
// padding-top: 80rpx;
background-color: #F0F2F5;
background-color: #f5f5f5;
// background-color: #F0F2F5;
position: fixed;
z-index: 999;
width: 100%;
@ -1013,13 +1102,36 @@
.menu_li {
margin-right: 50rpx;
// background-color: red;
width: 50vw;
// width: 50vw;
display: flex;
flex-direction: column;
align-items: center;
min-width: 15vw;
// width: 120rpx;
// display: inline-block;
}
}
.common-hd {
display: flex;
align-items: center;
justify-content: center;
height: 60rpx;
margin-top: 30rpx;
.title {
padding: 0 80rpx;
font-size: 34rpx;
color: $theme-color;
font-weight: bold;
background-image: url("~@/static/images/index-title.png");
background-repeat: no-repeat;
background-size: 100% auto;
background-position: left center;
}
}
.goods_list {
margin-top: 20rpx;
@ -1042,6 +1154,7 @@
}
.right {
flex: 1;
.head {
font-weight: bold;
// color: red;
@ -1049,6 +1162,7 @@
}
.li {
width: 100%;
display: flex;
font-size: 26.29rpx;
margin-bottom: 10rpx;
@ -1585,8 +1699,8 @@
color: $uni-nothing-text;
image {
width: 414rpx;
height: 380rpx;
width: 500rpx;
height: 180rpx;
}
}
}
@ -1616,4 +1730,42 @@
box-sizing: border-box;
padding: 0 20rpx;
}
.score {
display: flex;
align-items: center;
font-weight: 500;
font-size: 24rpx;
line-height: 1;
color: #000;
.score-title {
margin-right: 15rpx;
}
.score_text{
color: #fd5d2e;
}
.star {
position: relative;
width: 111rpx;
height: 19rpx;
margin-right: 10rpx;
background: url(../../columnGoods/images/star.png) left top/100% 100% no-repeat;
overflow: hidden;
view {
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
background: url(../../columnGoods/images/star_active.png) left top/111rpx 19rpx no-repeat;
&.star_purple {
background: url(../../columnGoods/images/star_active_purple.png) left top/111rpx 19rpx no-repeat;
}
}
}
}
</style>

View File

@ -59,14 +59,20 @@
<view class="right">
<view class="li head" style="display: flex;">
<text class="com_name">{{item.mer_name}}</text>
<text
<text v-if="item.type_id==17"
style="font-weight: normal;font-size: 19.28rpx;color: red;padding:0 10rpx; border-radius: 10rpx; border: 1px solid red;">{{item.type_name}}</text>
</view>
<view class="li">
<u--image v-for="item,index in [1,1,,1,1,1]" :key="index" :showLoading="true"
src="/static/images/GXSC/PF.png" width="20.85rpx" height="19.85rpx"></u--image>
<text style="margin-left: 20rpx;color: #FF6D20; ">5.0</text>
<text>月销2000+</text>
<view class="score">
<view class="star">
<view
:style="{width: `${(item.service_score / 5 * 100).toFixed(0)}%`, backgroundImage: `url(${domain}/static/diy/score1${keyColor}.png)`}">
</view>
</view>
</view>
<text style="margin-left: 20rpx;color: #FF6D20; ">{{item.service_score}}</text>
<text>月销{{item.sales}}</text>
<text v-if="item.distance" style="font-size: 24rpx;color: #aaa;">{{item.distance}}</text>
</view>
<view class="li" style="align-items: center;">
<u--image :showLoading="true" src="/static/images/GXSC/DH.png" width="33.85rpx"
@ -278,6 +284,7 @@
supAgoodsApi
} from '@/api/store.js';
import { wgsToGcj } from "@/utils/wgs.js";s
import {
supMenuApi,
} from '@/api/requesta.js';
@ -290,6 +297,9 @@
import {
mapGetters
} from "vuex";
import {
HTTP_REQUEST_URL
} from '@/config/app';
import {
goShopDetail
} from '@/libs/order.js'
@ -306,8 +316,8 @@
},
data() {
return {
titName: "坝坝宴",
domain: HTTP_REQUEST_URL,
titName: "",
price: 0,
stock: 0,
nows: false,
@ -385,7 +395,10 @@
if (options.street_id != undefined) {
this.sotreParam.street_id = options.street_id
}
if(this.$store.state.storage?.location?.lat){
this.latitude = this.$store.state.storage.location.lat;
this.longitude = this.$store.state.storage.location.long;
}
this.credit_buy = options.credit_buy
this.sotreParam.type_id = options.type_id
this.sotreParam.type_id = options.type_id && options.type_id.split(',').toString() || ''
@ -432,7 +445,7 @@
mer_location: 0,
store_street_theme: 1,
hide_mer_status: '',
}, mapGetters(['viewColor'])),
}, mapGetters(['viewColor', 'keyColor'])),
},
methods: {
navGo(id) {
@ -563,14 +576,40 @@
},
selfLocation() {
let self = this
uni.getLocation({
type: 'gcj02',
if (uni.getStorageSync('RejectTarget')) return;
if(this.$store?.state?.storage?.location?.lat){
this.latitude = this.$store?.state?.storage?.location?.lat;
this.longitude = this.$store?.state?.storage?.location?.long;
getGeocoder({
lat: this.latitude,
long: this.longitude
}).then(res => {
// console.log(res)
this.detaile_address = res.data.address;
this.location_address = res.data.address;
this.recommend_address = res.data.address.length > 4 ? res.data.address
.slice(0, 4) + '...' :
res.data.address
}).catch(err => {
uni.showToast({
title: err,
icon: 'none'
})
})
}
else uni.getLocation({
type: 'wgs84',
success: (res) => {
res = wgsToGcj(res);
let latitude, longitude;
latitude = res.latitude.toString();
longitude = res.longitude.toString();
this.latitude = res.latitude
this.longitude = res.longitude
this.latitude = res.latitude;
this.longitude = res.longitude;
this.$store.commit('setLocation', {
lat: res.latitude.toFixed(6),
long: res.longitude.toFixed(6),
});
getGeocoder({
lat: latitude,
long: longitude
@ -1341,4 +1380,42 @@
transform: translateY(-50%);
}
.score {
display: flex;
align-items: center;
font-weight: 500;
font-size: 24rpx;
line-height: 1;
color: #000;
.score-title {
margin-right: 15rpx;
}
.score_text{
color: #fd5d2e;
}
.star {
position: relative;
width: 111rpx;
height: 19rpx;
margin-right: 10rpx;
background: url(../../columnGoods/images/star.png) left top/100% 100% no-repeat;
overflow: hidden;
view {
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
background: url(../../columnGoods/images/star_active.png) left top/111rpx 19rpx no-repeat;
&.star_purple {
background: url(../../columnGoods/images/star_active_purple.png) left top/111rpx 19rpx no-repeat;
}
}
}
}
</style>

File diff suppressed because it is too large Load Diff

View File

@ -197,6 +197,7 @@
storeMerchantList,
getGeocoder
} from '@/api/store.js';
import { wgsToGcj } from "@/utils/wgs.js";
import recommend from './component/recommend';
import rightSlider from './component/rightSlider';
import {
@ -460,8 +461,9 @@
selfLocation() {
let self = this
uni.getLocation({
type: 'gcj02',
type: 'wgs84',
success: (res) => {
res = wgsToGcj(res);
let latitude, longitude;
latitude = res.latitude.toString();
longitude = res.longitude.toString();

View File

@ -11,8 +11,7 @@
<view class="back" @click='backjJump()' style="margin-right: 17rpx;">
<!-- <u--image :showLoading="true" src="/static/images/LHYC/PFH.png" width="50.82rpx"
height="50.82rpx"></u--image> -->
<i class="iconfont icon-xiangzuo" style="font-size: 40rpx;text-align: left;"
></i>
<i class="iconfont icon-xiangzuo" style="font-size: 40rpx;text-align: left;"></i>
</view>
<view style="font-size: 40rpx;">
<!-- {{titName}} -->
@ -29,8 +28,8 @@
:value='sotreParam.keyword' @confirm="searchSubmit"></input> -->
<u-search borderColor="#FF6D20" bgColor="white" :showAction="false" placeholder="搜索店铺名称"
v-model="sotreParam.keyword" class="serch_cls"></u-search>
<view class="serchbtn img_cls" @tap="searchSubmit">搜索</view>
<!-- <u--image @tap="searchSubmit" class="img_cls" :showLoading="true"
<view class="serchbtn img_cls" @tap="searchSubmit">搜索</view>
<!-- <u--image @tap="searchSubmit" class="img_cls" :showLoading="true"
src="/static/images/GXSC/SSBT.png" width="115.65rpx" height="56.82rpx"></u--image> -->
</view>
@ -280,6 +279,7 @@
supMenuApi,
supAgoodsApi
} from '@/api/store.js';
import { wgsToGcj } from "@/utils/wgs.js";
import {
merClassifly,
@ -536,9 +536,11 @@
},
selfLocation() {
let self = this
if (uni.getStorageSync('RejectTarget')) return
uni.getLocation({
type: 'gcj02',
type: 'wgs84',
success: (res) => {
res = wgsToGcj(res);
let latitude, longitude;
latitude = res.latitude.toString();
longitude = res.longitude.toString();
@ -705,7 +707,8 @@
margin: 0;
padding: 0;
}
.serchbtn {
.serchbtn {
// position: absolute;
// right: 5rpx;
// top: 5rpx;
@ -718,6 +721,7 @@
color: #fff;
background: linear-gradient(to right, #F84221, #FF6D20);
}
.com_name {
font-size: 32rpx;
// background-color: red;

View File

@ -219,6 +219,8 @@
loading: false, //
loadend: false, //
loadTitle: '加载更多', //
product_type: 0,
source: null, //(103)
isFooter: false,
cartCount: 0,
goodsHidden: true,
@ -251,7 +253,6 @@
productSelect: {}
},
isOpen: false, //
source: '',
attrImage: '',
isCart: true,
cart_id: '',
@ -272,7 +273,8 @@
onReady() {},
mounted: function() {},
onLoad: function(options) {
this.product_type = options.product_type || 0;
this.source = options.source || null;
},
onShow: function() {
this.appInfo = this.$appInfo.safeAreaInsets
@ -577,8 +579,10 @@
})
})
if (selectValue.length > 0) {
let url = '/pages/users/order_confirm/index?cartId=' + selectValue.join(',') + '&product_type=' + this.product_type;
if(this.source) url = url + '&source=' + this.source;
uni.navigateTo({
url: '/pages/users/order_confirm/index?cartId=' + selectValue.join(',')
url: url
});
} else {
return this.$util.Tips({
@ -672,14 +676,21 @@
},
getCartNum: function() {
let that = this;
getCartCounts().then(res => {
let params = {};
if(this.product_type) params.product_type = this.product_type;
if(this.source) params.source = this.source;
getCartCounts(params).then(res => {
that.cartTotalCount = res.data[0].count || 0;
});
},
//
getCartList: function(isChange) {
let that = this;
getCartList().then(res => {
let query = {
product_type: this.product_type,
}
if(this.source) query.source = this.source;
getCartList(query).then(res => {
res.data.list.forEach((item, index) => {
item.allCheck = true
item.list.forEach((goods, j) => {

File diff suppressed because it is too large Load Diff

View File

@ -83,7 +83,7 @@
</view>
<view class='iconfont'
:class='(orderInfo.status == 3 ? "icon-webicon318":"icon-yuandianxiao") + " " +(orderInfo.status > 3 && orderInfo.status != 9 ? "t-color":"")'
:class='(orderInfo.status == 1 ? "icon-webicon318":"icon-yuandianxiao") + " " +(orderInfo.status >=1 && orderInfo.status != 9 ? "t-color":"")'
v-if="orderInfo.order_type == 0"></view>
@ -306,7 +306,7 @@
<view class="content-clip"></view>
<view class='footer acea-row row-right row-middle' v-if="isGoodsReturn==false">
<!-- <view class='bnt cancel' @click="cancelSales">取消售后</view> -->
<view v-if="!orderInfo.receipt && !isGoodsReturn" class='bnt cancel' @click="applyInvoice">申请开票</view>
<view v-if="!orderInfo.receipt && !isGoodsReturn && orderInfo.status!=0" class='bnt cancel' @click="applyInvoice">申请开票</view>
<view v-if="orderInfo.activity_type == 2 && (orderInfo.status == 10 || orderInfo.status == 11)"
class=" acea-row row-right row-middle">
<view v-if="orderInfo.presellOrder.activeStatus == 0" class='bnt b-color btn_auto'>
@ -397,10 +397,11 @@
</view>
<view class="grayBg">
<view class="pictrue">
<image :src="codeUrl"></image>
<image class="image" :class="{'used-white': orderInfo.order_status!=7}" :src="codeUrl"></image>
<image v-if="orderInfo.order_status!=7" class="used-img" src="@/static/images/used.png"></image>
</view>
</view>
<view class="num">{{orderInfo.verify_code}}</view>
<view class="num" :class="{'used-white': orderInfo.order_status!=7}">{{orderInfo.verify_code}}</view>
</view>
</uni-popup>
<u-popup :show="show" bgColor='transparent' mode='center'>
@ -778,7 +779,7 @@
showMaoLocation: function() {
if (!this.orderInfo.take.mer_take_location[0] || !this.orderInfo.take.mer_take_location[1]) return this
.$util.Tips({
title: '请设置允许商城访问您的位置'
title: '商家未设置具体位置!请联系商家'
});
let that = this,
lat = parseFloat(that.orderInfo.take.mer_take_location[0]),
@ -1522,9 +1523,21 @@
width: 290rpx;
height: 290rpx;
margin: 0 auto;
position: relative;
.used-img{
width: 175.23rpx;
height: 175.23rpx;
position: absolute;
left: 50%;
top: 50%;
transform: translate(-50%, -50%);
}
}
.grayBg .pictrue image {
.used-white{
opacity: 0.2;
}
.grayBg .pictrue .image {
width: 100%;
height: 100%;
display: block;
@ -1665,6 +1678,22 @@
background: #ffffff;
border-radius: 16rpx 16rpx 0 0;
position: relative;
.used{
position: absolute;
bottom: 0;
left: 0;
width: 100%;
height: 450rpx;
background-color: rgba(255, 255, 255, 0.8);
display: flex;
justify-content: center;
align-items: center;
image{
width: 175.23rpx;
height: 175.23rpx;
}
}
.iconfont {
font-size: 24rpx;

View File

@ -157,7 +157,7 @@
<view>商品总额</view>
<view class='conter'>{{orderInfo.total_price}}</view>
</view>
<view class='item acea-row row-between' v-if="orderInfo.orderList[0].merchant.settle_cycle">
<view class='item acea-row row-between' v-if="orderInfo.orderList && orderInfo.orderList[0].merchant.settle_cycle">
<view>支付方式</view>
<view class='conter' v-if="orderInfo.pay_type==0">余额支付</view>
<view class='conter' v-if="orderInfo.pay_type==4 || orderInfo.pay_type==5">支付宝支付</view>
@ -273,7 +273,7 @@
openOrderRefundSubscribe
} from '@/utils/SubscribeMessage.js';
import {
getUserInfo
getUserInfo as getUserInfos
} from '@/api/user.js';
import payment from '@/components/payment';
import orderGoods from "@/components/orderGoods";
@ -519,7 +519,7 @@
*/
getUserInfo: function() {
let that = this;
getUserInfo().then(res => {
getUserInfos().then(res => {
that.payMode[2].number = res.data.now_money;
that.$set(that, 'payMode', that.payMode);
})
@ -539,10 +539,10 @@
that.$set(that, 'orderInfo', res.data);
this.pay_type = this.orderInfo.pay_type
if (this.orderInfo.interest !== null) {
this.moerTime(this.orderInfo.interest.start_time)
this.moerTime(this.orderInfo.interest.start_time, this.orderInfo.cancel_unix)
} else {
this.isSelfOrder = true
this.moerTime(this.orderInfo.create_time)
this.moerTime(this.orderInfo.create_time, this.orderInfo.cancel_unix)
// console.log(this.orderInfo.create_time)
}
@ -593,16 +593,17 @@
});
},
//
moerTime(autoTime) {
moerTime(autoTime, c_time) {
if (this.isSelfOrder) {
let limitPayTime = 60 //
let curData = new Date(autoTime);
curData.setSeconds(curData.getSeconds() + (60 * limitPayTime));
// console.log(new Date(autoTime), new Date(c_time*1000));
// let limitPayTime = 60 //
// let curData = new Date(autoTime);
let curData = new Date(c_time*1000 || new Date(autoTime).getSeconds() + (60*30)); // 使, 30
// curData.setSeconds(curData.getSeconds() + (60 * limitPayTime));
this.be_overdue = curData.getFullYear() + '-' + (curData.getMonth() + 1) + '-' + curData.getDate() +
' ' +
curData.getHours() + ':' +
(curData.getMinutes() > 10 ? curData.getMinutes() : "0" + curData.getMinutes())
(curData.getMinutes() > 9 ? curData.getMinutes() : "0" + curData.getMinutes())
return
}

View File

@ -139,7 +139,7 @@
text: '展开更多',
timer: null,
product_type: '',
source: null
};
},
computed: mapGetters(['isLogin', 'viewColor', 'keyColor']),
@ -152,6 +152,7 @@
});
this.orderId = options.order_id;
this.order_type = options.order_type;
this.source = options.source || null;
this.status = options.status || 0;
this.msg = options.msg || '';
this.product_type = options.product_type
@ -221,10 +222,10 @@
*/
goOrderDetails: function(val) {
let that = this;
if (this.product_type == 98) {
if (this.product_type == 98 && this.source!=103) {
if(val==1){
uni.navigateTo({
url: `/pages/users/order_list/indexCopy?status=1&product_type=${this.product_type}`
url: `/pages/users/order_list/indexCopy?status=2&product_type=${this.product_type}`
})
}else{
uni.navigateTo({
@ -232,10 +233,10 @@
})
}
} else if (this.product_type == 99) {
} else if (this.product_type == 99 && this.source!=103) {
if(val==1){
uni.navigateTo({
url: `/pages/users/order_list/relase?status=1&product_type=${this.product_type}`
url: `/pages/users/order_list/relase?status=2&product_type=${this.product_type}`
})
}else{
uni.navigateTo({
@ -246,7 +247,7 @@
} else {
if(val==1){
uni.navigateTo({
url: '/pages/users/order_list/index?status=1&product_type=0'
url: '/pages/users/order_list/index?status=2&product_type=0'
})
}else{
uni.navigateTo({

View File

@ -264,7 +264,8 @@
<image src="../static/images/no_content.png"></image>
<text>内容不存在可能被删除了哦~</text>
<navigator class="btn" :open-type="open_grass ? 'switchTab' : 'navigate'"
url="/pages/plant_grass/index">返回首页</navigator>
url="/pages/index/index">返回首页</navigator>
</view>
</view>
<!-- 他提到的宝贝弹窗 -->
@ -532,9 +533,9 @@
that.followDetail = null
that.loadData = false
uni.hideLoading()
return that.$util.Tips({
title: err
});
// return that.$util.Tips({
// title: err
// });
})
},
/*获取评论*/

View File

@ -4,11 +4,6 @@
<view class="content_list">
<view class="content_list_item">
<view>商品详情</view>
<!-- <view class="content_list_item_han">
<span v-if="disModel" style="color: #000000">去修改</span>
<span v-else>设置详情</span>
<span class="iconfont">&#xe6bd;</span>
</view> -->
</view>
<input-goods-detils class="input-goods-detils" @getProductContent="getProductContent" :title="store_name" :prodectContent="goodsDis" :maxLength="200"></input-goods-detils>
<block v-if="!moreThanFlag">
@ -224,11 +219,11 @@
if (this.product_id) {
// editGoodsDetils = getStorage('editGoodsDetils');
editGoodsDetils = this.$store.state.storage.storage;
console.log(editGoodsDetils);
// console.log('ss',editGoodsDetils.content);
// editGoodsDetils = getStorage('editGoodsDetils');
// console.log('',editGoodsDetils);
Object.keys(this.addGoodsSecoundData).forEach(item => {
console.log(item, editGoodsDetils[item]);
// console.log(item, editGoodsDetils[item]);
this.addGoodsSecoundData[item] = editGoodsDetils[item];
});

View File

@ -3,7 +3,7 @@
<view class="step_one" v-if="step == 1">
<view class="input_content">
<view class="bar-code" v-if="bar_code_dis">
<view>商品</view>
<view>商品</view>
<!-- <view>{{ singleSpecification.bar_code }}</view> -->
<input type="number" placeholder="请手动添加条码" v-model="code" :disabled="bar_code_dis"
placeholder-class="inputPlaceHolder" />
@ -11,14 +11,16 @@
<view class="input_content_textarea">
<textarea v-model="setFormData.store_name" placeholder="请输入商品名称" placeholder-class="placeholderStyle"
maxlength="60" />
<view>
<text v-if="setFormData.store_name">{{ setFormData.store_name.length }}</text>
<text v-else>0</text>
/60
<view class="flex" style="justify-content: space-between;color: #999999;">
<view>(品牌,名称,规格,口味)</view>
<view>
<text v-if="setFormData.store_name">{{ setFormData.store_name.length }}</text>
<text v-else>0</text>/60
</view>
</view>
</view>
<view class="photo_count">
<text class="photo_size">建议图片尺寸为750*750px</text>
<text class="photo_size" style="color: #e93323;">建议图片尺寸为750*750px, 上传2张以上</text>
<view class="input_content_photo">
<view class="input_content_photo_adPh" v-for="(item, index) in setFormData.imageList" :key="index">
<image :src="item" class="myimg2 photos" @click="pop(item)"></image>
@ -84,7 +86,7 @@
</view>
</view>
<priceComponent :product_id="product_id" v-if="showCommodity"></priceComponent>
<priceComponent :product_id="product_id" :bar_code="code" @updateCode = "updateCode" v-if="showCommodity"></priceComponent>
<!-- <view class="popup_group">
<view class="radio">
@ -163,20 +165,20 @@
</view> -->
</view>
<commodityComponent v-if="showCommodity" :key="showCommodity" :showCommodity="showCommodity" :resetKey="secoundModel" :product_id="product_id" :merId="merId"
<commodityComponent v-if="showCommodity" :key="showCommodity" :showCommodity="showCommodity" :resetKey="secoundModel" :product_id="product_id" :merId="merId"
:code="code" @lastStep="lastStep">
</commodityComponent>
<view class="popup_group">
<view class="popup_group_item" @click="showMoreInfo=!showMoreInfo">
<!-- <view class="popup_group_item" @click="showMoreInfo=!showMoreInfo">
<view class="popup_group_item_label">更多信息</view>
<view class="popup_group_item_value" :class="showMoreInfo?'icon_bottom':'icon_top'">
<view><span class="iconfont">&#xe6bd;</span></view>
</view>
</view>
<block v-if="showMoreInfo">
</view> -->
<block >
<view class="input_content">
<view class="input_content_describe" style="border-top: none">
<!-- <view class="input_content_describe" style="border-top: none">
<view class="input_content_describe_title">
<view class="input_content_describe_title_msg">商品简介</view>
<view class="input_content_describe_title_num">
@ -189,7 +191,7 @@
<textarea v-model="setFormData.store_info" value="" placeholder="请填写商品简介"
placeholderClass="placeholderClass" maxlength="200" />
</view>
</view>
</view> -->
<view class="input_content_keyword">
<view class="input_content_keyword_label">关键字</view>
@ -437,6 +439,8 @@
// this.getDeliveryType();
if (this.product_id) {
this.initDataEditData();
}else {
setStorage('editCommodity',{});
}
},
onBackPress() {
@ -584,6 +588,7 @@
}
productDetail(this.merId, this.product_id).then(res => {
setStorage('editGoodsDetils', res.data);
if(res.data.content_arr.length>0) res.data.content = res.data.content_arr;
this.$store.commit('setStorage', res.data);
let editGoodsDetils = res.data;
Object.keys(this.setFormData).forEach(item => {
@ -627,7 +632,6 @@
let that = this;
that.$util.uploadImageOne('upload/image', function(res) {
that.setFormData.imageList.push(res.data.path);
});
},
clk() {
@ -797,6 +801,10 @@
return;
}
},
//
updateCode(e){
this.code = e + '';
},
//
// switch
switchChange(value, item) {

View File

@ -40,8 +40,8 @@
<view v-if="item.more_thanFlag">
<view class="multiSpecifica_container_item">
<view class="multiSpecifica_container_item_label flex-start">商品编号</view>
<view class="multiSpecifica_container_item_value"><input v-model="item.bar_code" type="text" placeholder="请填写商品编号" /></view>
<view class="multiSpecifica_container_item_label flex-start">商品条码</view>
<view class="multiSpecifica_container_item_value"><input v-model="item.bar_code" type="text" placeholder="请填写商品条码" /></view>
</view>
<view class="multiSpecifica_container_item">
@ -114,7 +114,7 @@
<view v-if="popupOpenModel">
<view class="changePopup_container_content_item">
<view class="changePopup_container_content_item_label">商品编号</view>
<view class="changePopup_container_content_item_label">商品条码</view>
<view class="changePopup_container_content_item_value"><input v-model="batchData.bar_code" type="text" placeholder="0.00" /></view>
</view>
@ -171,7 +171,7 @@ export default {
price: '', //
cost: '', //
ot_price: '', //
bar_code: '', //
bar_code: '', //
weight: '', //
volume: '', //
extension_one: '', //

View File

@ -22,15 +22,15 @@
components: {
selectForm
},
props: ['product_id'],
props: ['product_id', 'bar_code'],
data() {
return {
singleSpecification: {
price: '', //
cost: '', //
stock: '', //
ot_price: '', //
bar_code: '', //
ot_price: '', //
bar_code: '', //
weight: '', //
volume: '', //
image: '',
@ -39,53 +39,60 @@
},
moreThanFlag: true,
formList: [{
id: 1,
label: '售价',
type: 'digit',
model: 'price',
holder: '请填写售价'
}, {
id: 10,
label: '库存',
type: 'digit',
model: 'stock',
holder: '请填写库存',
disable: true
}],
moreThanList: [{
id: 1,
label: '售价',
type: 'digit',
model: 'price',
holder: '请填写售价',
require: true,
}, {
id: 10,
label: '库存',
type: 'digit',
model: 'stock',
holder: '请填写库存',
disable: true,
require: true,
}, {
id: 2,
label: '成本价',
type: 'digit',
holder: '请填写成本价',
model: 'cost'
model: 'cost',
require: true,
},
{
id: 3,
label: '价',
label: '批发价',
type: 'digit',
holder: '请填写原价',
model: 'ot_price'
},
{
id: 5,
label: '商品编号',
type: 'input',
holder: '请填写商品编号',
model: 'bar_code'
},
{
holder: '请填写批发价',
model: 'ot_price',
require: true,
}
],
moreThanList: [{
id: 6,
label: '重量',
type: 'digit',
holder: '请输入重量',
model: 'weight'
model: 'weight',
require: false,
},
{
id: 7,
label: '体积',
type: 'digit',
holder: '请输入体积',
model: 'volume'
model: 'volume',
require: false,
},
{
id: 5,
label: '商品条码',
type: 'input',
holder: '请填写商品条码',
model: 'bar_code',
require: false,
},
// {
// id: 8,
@ -108,12 +115,13 @@
watch: {
singleSpecification: {
handler(val) {
handler(val, old) {
this.singleSpecification = val;
this.saveSingleSpecification();
this.$emit('updateCode', val.bar_code);
},
deep: true
}
},
},
// onLoad(option) {
// console.log(option);
@ -148,6 +156,7 @@
}
})
}
this.singleSpecification.bar_code = this.$props.bar_code + '';
// if (!this.$props.product_id) {
// this.formList.push({
// id: 10,
@ -170,7 +179,7 @@
spliceMoreThan() {
this.moreThanFlag = true;
// this.formList.splice(!this.$props.product_id ? 2 : 1, this.formList.length);
this.formList.splice(2, this.formList.length);
this.formList.splice(4, this.formList.length);
},
input(val) {
this.singleSpecification = val

View File

@ -263,16 +263,18 @@
Object.keys(info).forEach(key=>{
postData[key]=info[key];
})
postData.stock = postData.attrValue[0].stock;
console.log(postData);
if(postData.store_name.trim().length<=0)return Toast('请输入商品名称');
if(postData.imageList.length<=0)return Toast('请上传商品图片');
if(postData.cate_name.trim().length<=0)return Toast('请选择平台分类');
if(postData.unit_name.trim().length<=0)return Toast('请输入商品单位');
if(!postData.attrValue[0].price||postData.attrValue[0].price<0)return Toast('价格不能小于0');
postData.stock = postData.attrValue[0]?.stock;
// console.log(postData);
if(!postData.store_name||postData.store_name?.trim().length<=0)return Toast('请输入商品名称');
if(!postData.imageList||postData.imageList?.length<2)return Toast('请上传2张以上商品图片');
if(!postData.cate_name||postData.cate_name?.trim().length<=0)return Toast('请选择平台分类');
if(!postData.unit_name||postData.unit_name?.trim().length<=0)return Toast('请输入商品单位');
if(!postData.attrValue[0]?.price||postData.attrValue[0]?.price<0)return Toast('价格不能小于0');
if(!postData.stock||postData.stock<0)return Toast('库存不能小于0');
if(postData.content.title.trim().length<=0)return Toast('请输入商品详情');
if(postData.content.image.length<=0)return Toast('请上传商品图片');
if(!postData.attrValue[0]?.cost||postData.attrValue[0]?.cost<0)return Toast('成本价不能小于0');
if(!postData.attrValue[0]?.ot_price||postData.attrValue[0]?.ot_price<0)return Toast('批发价不能小于0');
// if(!postData.content.title||postData.content.title?.trim().length<=0)return Toast('');
// if(!postData.content.image||postData.content.image?.length<=0)return Toast('');
// return Toast('');
if (getStorage('addGoodsFormData').spec_type == 0) {
// postData.attr = [getStorage('singleSpecification')];

View File

@ -26,7 +26,7 @@
price: '', //
cost: '', //
ot_price: '', //
bar_code: '', //
bar_code: '', //
weight: '', //
volume: '', //
image: '',
@ -60,9 +60,9 @@
moreThanList: [
{
id: 5,
label: '商品编号',
label: '商品条码',
type: 'input',
holder: '请填写商品编号',
holder: '请填写商品条码',
model: 'bar_code'
},
{

View File

@ -7,10 +7,10 @@
<view class="store_bg">
<view class="text flex_a_c"><i class="iconfont icon-xinghao"></i>上传店铺背景图</view>
<block v-if="images[0].img">
<!-- <u--image :showLoading="true" :src="images[0].img" width="388px" height="210.53rpx" radius="4px"
@click="delImg(0)" mode="aspectFit"></u--image> -->
<u--image :showLoading="true" :src="images[0].img" width="360px" height="210.53rpx" radius="4px"
@click="delImg(2)"></u--image>
<!-- <u--image :showLoading="true" :src="images[0].img" width="388px" height="210.53rpx" radius="4px"
@click="delImg(0)" mode="aspectFit"></u--image> -->
<u--image :showLoading="true" :src="images[0].img" width="680rpx" height="210.53rpx" radius="4px"
@click="delImg(0)"></u--image>
</block>
<view v-else class="upload" @click="seleckImage(0)">
<view class="iconfont icon-tupian1"></view>
@ -56,7 +56,7 @@
<view class="street_bg">
<view class="text flex_a_c"> <i class="iconfont icon-xinghao"></i> 店铺街背景图</view>
<block v-if="images[2].img">
<u--image :showLoading="true" :src="images[2].img" width="360px" height="210.53rpx" radius="4px"
<u--image :showLoading="true" :src="images[2].img" width="680rpx" height="210.53rpx" radius="4px"
@click="delImg(2)"></u--image>
</block>
<view v-else class="street_img flex_a_c" @click="seleckImage(2)">
@ -74,9 +74,11 @@
<view class="flex_a_c">
<text class="sub_title">配送方式</text>
<view class="flex">
<checkbox-group name="" @change="checkboxChange" >
<checkbox disabled='true' :checked="isZiti" :value="check.ziti" /><text class="text ziti">到店自提(加入供应链)</text>
<checkbox disabled='true' :checked="isKuaidi" :value="check.kuaidi" /><text class="text">快递配送</text>
<checkbox-group name="" @change="checkboxChange">
<checkbox disabled='true' :checked="isZiti" :value="check.ziti" /><text
class="text ziti">到店自提(加入供应链)</text>
<checkbox disabled='true' :checked="isKuaidi" :value="check.kuaidi" /><text
class="text">快递配送</text>
</checkbox-group>
</view>
</view>
@ -110,10 +112,12 @@
<view class="sub_title flex_a_c"><i class="iconfont icon-xinghao"></i>店铺营业时间:</view>
<view class="bus_time flex_a_c">
<view class="select" @click="beginTimeShow = true">
{{ mer_take_time[0] ? mer_take_time[0] : '选择开始时间' }}</view>
{{ mer_take_time[0] ? mer_take_time[0] : '选择开始时间' }}
</view>
<view class="select" @click="overTimeShow = true">
{{ mer_take_time[1] ? mer_take_time[1] : '选择结束时间' }}</view>
{{ mer_take_time[1] ? mer_take_time[1] : '选择结束时间' }}
</view>
</view>
</block>
</view>
@ -134,8 +138,8 @@
<view class="sub_title flex_a_c"><i class="iconfont icon-xinghao"></i>客服电话</view>
<input class="com_input" type="number" v-model="servicePhone" placeholder="输入客服电话">
</view>
<!-- <view class="item_cell flex_a_c" v-if="type_code!='TypeFamousSpecialties'||type_code!='TypeLocalCuisine'||type_code!='TypeFeaturedCultural'" >
<!-- <view class="item_cell flex_a_c" v-if="type_code!='TypeFamousSpecialties'||type_code!='TypeLocalCuisine'||type_code!='TypeFeaturedCultural'" >
<view class="sub_title flex_a_c"><i class="iconfont icon-xinghao" v-if="credit_buy"></i>开启先货后款</view>
<u-switch v-model="credit_buy" @change="change"></u-switch>
</view>
@ -178,6 +182,7 @@
Toast
} from '@/libs/uniApi.js'
import { wgsToGcj } from "@/utils/wgs.js";
import {
merchantUpdateAPI,
merchantInfoAPI
@ -221,7 +226,7 @@
},
isZiti: false,
isKuaidi: false,
delivery_way: [1,2],
delivery_way: [1, 2],
takeName: '',
takePhone: '',
servicePhone: '',
@ -271,16 +276,16 @@
credit_buy: false, //
interest_rate: '', //
settle_cycle: '', //
mer_name:'',
type_code:''
mer_name: '',
type_code: ''
}
},
onLoad(e) {
this.id = e.mer_id
this.getMerchantInfo(e.mer_id)
this.isZiti = true
this.isKuaidi = true
this.isZiti = true
this.isKuaidi = true
},
onShow() {},
methods: {
@ -288,7 +293,7 @@
merchantInfoAPI({
id
}).then(res => {
this.mer_name= res.data.mer_name
this.mer_name = res.data.mer_name
this.images[0].img = res.data.mer_banner
this.images[1].img = res.data.mer_avatar
this.images[2].img = res.data.mini_banner
@ -305,11 +310,11 @@
res.data.mer_take_day.forEach((item, i) => {
this.dateWeek[Number(item) - 1].isCheck = true
})
this.type_code= res.data.type_code
this.type_code = res.data.type_code
this.mer_take_time = res.data.mer_take_time
this.intro = res.data.mer_info
this.cruxText = res.data.mer_keyword
this.servicePhone = res.data.service_phone
this.mer_address = res.data.mer_address
this.merState = res.data.mer_state === 1 ? true : false
@ -374,7 +379,7 @@
mer_avatar: this.images[1].img,
mini_banner: this.images[2].img,
mer_certificate: this.images[3].img,
delivery_way: [1,2],
delivery_way: [1, 2],
mer_take_name: this.takeName,
mer_take_phone: this.takePhone,
mer_take_address: this.detailSite,
@ -408,9 +413,9 @@
// url:'/pages/moreProject/moreProject'
// })
uni.redirectTo({
url:'/pages/moreProject/moreProject'
url: '/pages/moreProject/moreProject'
})
}, 1000)
}).catch(err => {
Toast(err)
@ -421,6 +426,7 @@
uni.getLocation({
type: 'wgs84',
success: (res) => {
res = wgsToGcj(res);
// console.log(res);
this.latitude = res.latitude.toString();
this.longitude = res.longitude.toString();
@ -443,7 +449,7 @@
// sizeType: ['original', 'compressed'],
// sourceType: ['album', 'camera'],
// success: function(res) {
// uni.showLoading({
// title: '...'
// })
@ -461,7 +467,7 @@
// Toast('')
// }
// });
},
delImg(i) {
let that = this

View File

@ -111,7 +111,7 @@
}
},
mounted() {
console.log(this.$props.prodectContent);
// console.log(this.$props.prodectContent);
},
methods: {
handleChooseImage() {
@ -143,10 +143,11 @@
[TOKENNAME]: 'Bearer ' + store.state.app.token
},
success: (uploadFileRes) => {
// console.log(uploadFileRes.data);
// console.log(JSON.parse(uploadFileRes.data));
let imgData = JSON.parse(uploadFileRes.data)
// that.prodectContent.imageList.push(imgData.data.path)
that.prodectContent = { imageList: [...that.prodectContent.imageList, imgData.data.path] ,store_name:this.upstore}
if(!that.prodectContent.imageList)that.prodectContent.imageList=[];
that.prodectContent = { imageList: [...that.prodectContent.imageList, imgData.data.path] ,store_name:this.upstore};
},
complete(res) {
// console.log(res)

View File

@ -47,7 +47,7 @@
<swiper-item :class="{ active: 1 == swiperCur }">
<view class="slide-navigator">
<!-- 隐藏暂时不需要 -->
<!-- <navigator class="item"
<!-- <navigator class="item"
:url="`/pages/product/addGoods/freightTemplate?mer_id=${mer_id}`"
hover-class='none'>
<image mode='widthFix' class="image" src="../static/images/product_freight.png">
@ -490,7 +490,6 @@
that.loading = false;
that.loaded = res.data.list.length < that.where.limit;
that.productList.push.apply(that.productList, res.data.list);
that.where.page = that.where.page + 1;
},

View File

@ -0,0 +1,220 @@
<template>
<view class="red_body">
<view class="bg">
<image mode="widthFix" src="/static/active/redpack_type_img.webp"></image>
<view class="border"></view>
</view>
<view class="bg_back">
<image @click="back" class="bc_image" src="https://lihai001.oss-cn-chengdu.aliyuncs.com/public/uploads/new_activity/back.png"></image>
<view class="title">红包余额</view>
</view>
<view class="r_list" v-for="(item, index) in list" :key="index">
<view class="r_item" @click="navgo(item)">
<image class="r_bg" src="/static/active/red_packet.webp"></image>
<view class="r_body">
<view class="r_count">
<view class="rc_count">
<text class="rc_icon"></text>{{item.total_amount}}
</view>
</view>
<view class="r_content">
<view class="r_name">{{item.type_cn}}</view>
</view>
<view class="r_btn">
查看
</view>
</view>
</view>
</view>
<view style="width: 100%;height: 260rpx;"></view>
<view class="activity">
<image mode="widthFix" @click="navTo()" src="https://lihai001.oss-cn-chengdu.aliyuncs.com/public/uploads/new_activity/activity1.webp"></image>
</view>
</view>
</template>
<script>
import { storeActivityTotal } from "@/api/activity.js"
export default {
data() {
return {
list: []
}
},
onLoad() {},
onShow() {
this.storeActivityTotal();
},
methods: {
storeActivityTotal(){
storeActivityTotal().then(res=>{
this.list = res.data;
})
},
back(){
uni.navigateBack();
},
navgo(item){
if(item.type==1) uni.navigateTo({
url: '/pages/newActivity/subsidy/subsidy2'
})
else if(item.type==2) uni.navigateTo({
url: '/pages/newActivity/subsidy/subsidy3'
})
},
navTo(){
let address = this.$store.state.storage.address;
let location = this.$store.state.storage.location;
if(address.street_id){
uni.navigateTo({
url: `/pages/nongKe/cloud_entrepot/indexh?street_id=${address.street_id}&townName=${address.townName}&source=103&location=${location.lat},${location.long}`
})
}else uni.navigateTo({
url: `/pages/nongKe/cloud_entrepot/indexh`
})
}
},
onPullDownRefresh() {
uni.stopPullDownRefresh()
}
}
</script>
<style lang="scss">
.red_body{
position: relative;
background: linear-gradient(to top, rgb(255,231,185), rgb(255,249,231) 480rpx);
min-height: calc(100vh);
.bg{
width: 750rpx;
height: 480rpx;
overflow: hidden;
position: relative;
image{
width: 100%;
height: 100%;
}
.border{
position: absolute;
bottom: 0;
left: 0;
width: 100%;
height: 30rpx;
border-radius: 30rpx 30rpx 0 0;
background-color: rgb(255,249,231);
}
}
.bg_back{
position: absolute;
top: var(--status-bar-height);
left: 0;
width: 100%;
padding: 30rpx;
color: #fff;
display: flex;
text-align: center;
.bc_image{
height: 34rpx;
width: 20rpx;
}
.title{
position: absolute;
top: 30rpx;
left: 50%;
transform: translate(-50%);
}
}
}
.r_list {
padding: 0 20rpx 20rpx 20rpx;
.r_item {
height: 156rpx;
width: 710rpx;
position: relative;
.r_bg {
width: 100%;
height: 100%;
}
.r_body {
position: absolute;
top: 0;
left: 0;
bottom: 0;
right: 0;
display: flex;
align-items: center;
.r_count {
flex: 2;
display: flex;
justify-content: center;
align-items: center;
color: #A46F32;
font-size: 44rpx;
font-weight: bold;
.rc_count {
display: flex;
align-items: flex-end;
}
.rc_icon {
font-size: 28rpx;
font-weight: 500;
margin-bottom: 8rpx;
}
}
.r_content {
flex: 4;
color: #FFF3CC;
font-size: 24rpx;
padding: 18rpx 10rpx 18rpx 40rpx;
display: flex;
flex-direction: column;
justify-content: center;
.r_name {
font-size: 32rpx;
font-weight: 500;
margin-bottom: 10rpx;
}
view {
width: 100%;
overflow: hidden;
/* 隐藏超出宽度的文本 */
white-space: nowrap;
/* 不换行 */
text-overflow: ellipsis;
/* 文本末尾显示省略号 */
}
}
.r_btn {
flex: 1;
display: flex;
justify-content: center;
align-items: center;
color: #FFF3CC;
height: 59rpx;
border-radius: 28rpx 28rpx 28rpx 28rpx;
opacity: 1;
border: 1rpx solid #FFF3CC;
margin-right: 20rpx;
}
}
}
}
.activity{
position: fixed;
bottom: 100rpx;
padding: 20rpx;
image{
width: 710rpx;
}
}
</style>

View File

@ -0,0 +1,313 @@
<template>
<view class="">
<!-- <block v-for="(item, index) in info">
<block v-if="item.type==1">
<view class="type_name">无门槛实物通用红包<text class="n_count">(2)</text></view>
<view class="r_list" v-for="(e, i) in item.list">
<view class="r_item" @click="change(index, i)">
<image class="r_bg" src="/static/active/red_packet.webp"></image>
<view class="r_body">
<view class="r_count">
<view class="rc_count">
<text class="rc_icon"></text>240
</view>
</view>
<view class="r_content">
<view class="r_name">现金抵扣红包</view>
<view>仅限平台指定商家商品可使用</view>
<view>有效期至 2026.01.15 24:00:00</view>
</view>
<view class="r_icon">
<u-icon v-if="changeRed.type == index && changeRed.id == i" name="checkmark-circle-fill" color="#FFF3CC" size="56rpx"></u-icon>
<u-icon v-else name="checkmark-circle" color="#FFF3CC" size="56rpx"></u-icon>
</view>
</view>
</view>
</view>
</block>
<block v-if="item.type==2">
<view class="type_name">不可使用红包<text class="n_count">(2)</text></view>
<view class="none_list" v-for="(e, i) in item.list">
<view class="r_body">
<view class="r_count">
<view class="rc_count">
<text class="rc_icon"></text>200
</view>
</view>
<view class="r_content">
<view class="r_name">现金抵扣红包</view>
<view>仅限平台指定商家商品可使用</view>
<view>有效期至 2026.01.15 24:00:00</view>
</view>
</view>
<u-line dashed color="#999999"></u-line>
<view class="n_tips">本单不可用原因未在平台指定店铺使用</view>
</view>
</block>
</block> -->
<view style="height: 30rpx;"></view>
<view class="r_list" v-for="(item, i) in list" :key="i">
<view class="r_item" @click="change(item)">
<image class="r_bg" src="/static/active/red_packet.webp"></image>
<view class="r_body">
<view class="r_count">
<view class="rc_count">
<text class="rc_icon"></text>{{item.balance}}
</view>
</view>
<view class="r_content">
<view class="r_name">{{item.coupon_title}}</view>
<view>{{item.describe}}</view>
<view>有效期至 {{item.end_time}}</view>
</view>
<view class="r_icon">
<u-icon v-if="changeRed&&changeRed.coupon_user_id==item.coupon_user_id" name="checkmark-circle-fill" color="#FFF3CC" size="56rpx"></u-icon>
<!-- <u-icon v-else name="checkmark-circle" color="#FFF3CC" size="56rpx"></u-icon> -->
<view v-else style="height: 50rpx;width: 50rpx;border-radius: 50%;border: 5rpx solid #FFF3CC;"></view>
</view>
</view>
</view>
</view>
<view class="footer">
<view>
<text>已选 {{ changeRed?1:0 }} </text>
<view v-if="changeRed&&changeRed.coupon_title.includes('抵扣红包')" style="font-size: 24rpx;margin-left: 10rpx;color: #ed4c3a;">(使用红包后此订单将不参与任何补贴活动)</view>
<view v-if="changeRed&&changeRed.coupon_title.includes('通用红包')" style="font-size: 24rpx;margin-left: 10rpx;color: #ed4c3a;">(使用红包后此订单将不参与用户消费补贴活动)</view>
<!-- , 可减 <text class="red_i">¥</text> <text class="red_c">0</text> -->
</view>
<view class="btn" @click="comfirm">确定</view>
</view>
</view>
</template>
<script>
export default {
data() {
return {
info: [
{
type: 1, // 使
name: '无门槛实物通用红包',
list: [1, 2]
},
{
type: 1, // 使
name: '现金抵扣红包',
list: [1,2,3]
},
{
type: 2, // 使, 2使
name: '不可使用红包',
list: [1]
}
],
list: [],
changeRed: null,
}
},
onLoad(option) {
const eventChannel = this.getOpenerEventChannel();
// acceptDataFromOpenerPageeventChannel
eventChannel.on('changeRedPacketInfo', (data) => {
console.log(data);
this.list = data;
})
},
onShow() {},
methods: {
change(e, i) {
console.log(e, i);
if(this.changeRed&&this.changeRed.coupon_user_id==e.coupon_user_id)this.changeRed = null;
else this.changeRed = e;
},
comfirm(){
uni.$emit('changeRedPacket', this.changeRed?.coupon_user_id||'');
uni.navigateBack()
}
},
onPullDownRefresh() {
uni.stopPullDownRefresh()
}
}
</script>
<style lang="scss">
page{
background-color: #fff;
}
.type_name{
padding: 20rpx;
font-size: 28rpx;
.n_count{
color: #7A7A7A;
font-size: 24rpx;
margin-left: 10rpx;
}
}
.r_list {
padding: 0 20rpx 20rpx 20rpx;
.r_item {
height: 156rpx;
width: 710rpx;
position: relative;
.r_bg {
width: 100%;
height: 100%;
}
.r_body {
position: absolute;
top: 0;
left: 0;
bottom: 0;
right: 0;
display: flex;
.r_count {
flex: 2;
display: flex;
justify-content: center;
align-items: center;
color: #A46F32;
font-size: 44rpx;
font-weight: bold;
.rc_count {
display: flex;
align-items: flex-end;
}
.rc_icon {
font-size: 28rpx;
font-weight: 500;
margin-bottom: 8rpx;
}
}
.r_content {
flex: 4;
color: #FFF3CC;
font-size: 24rpx;
padding: 18rpx 10rpx 18rpx 40rpx;
display: flex;
flex-direction: column;
justify-content: space-between;
.r_name {
font-size: 32rpx;
font-weight: 500;
margin-bottom: 10rpx;
}
view{
width: 100%;
overflow: hidden; /* 隐藏超出宽度的文本 */
white-space: nowrap; /* 不换行 */
text-overflow: ellipsis; /* 文本末尾显示省略号 */
}
}
.r_icon {
flex: 1;
display: flex;
align-items: center;
}
}
}
}
.none_list{
margin: 0 20rpx 20rpx 20rpx;
background-color: #E2E2E2;
border-radius: 20rpx;
.r_body {
height: 156rpx;
width: 710rpx;
display: flex;
.r_count {
flex: 2;
display: flex;
justify-content: center;
align-items: center;
color: #333;
font-size: 44rpx;
font-weight: bold;
.rc_count {
display: flex;
align-items: flex-end;
}
.rc_icon {
font-size: 28rpx;
font-weight: 500;
margin-bottom: 8rpx;
}
}
.r_content {
flex: 5;
color: #333;
font-size: 24rpx;
padding: 18rpx 10rpx 18rpx 40rpx;
display: flex;
flex-direction: column;
justify-content: space-between;
.r_name {
font-size: 32rpx;
font-weight: 500;
margin-bottom: 10rpx;
}
view{
width: 100%;
overflow: hidden; /* 隐藏超出宽度的文本 */
white-space: nowrap; /* 不换行 */
text-overflow: ellipsis; /* 文本末尾显示省略号 */
}
}
}
.n_tips{
padding: 10rpx 30rpx 20rpx 30rpx;
color: #333;
font-size: 24rpx;
}
}
.footer{
height: 130rpx;
padding: 30rpx;
width: 100%;
position: fixed;
bottom: 0;
left: 0;
background-color: #F6F6F6;
display: flex;
justify-content: space-between;
align-items: center;
font-size: 28rpx;
.red_i{
color: #FF421D;
margin-left: 20rpx;
}
.red_c{
color: #FF421D;
font-size: 44rpx;
}
.btn{
width: 128rpx;
height: 68rpx;
background-color: #EC693F;
border-radius: 34rpx;
display: flex;
justify-content: center;
align-items: center;
color: #fff;
}
}
</style>

104
pages/room/histroyroom.nvue Normal file
View File

@ -0,0 +1,104 @@
<template>
<view class="container">
<view :style="'width: '+ windowWidth +'px; height: '+ boxStyle.height +'px;z-inde:-1;'">
<!--
1.这里的 swiper 不是用来控制视频滑动的,而是用来控制左右滑动的,如果不需要的可以改成 view
2.为了 视频无限加载,已经把 21 行的 appear 去掉了,加上了 loadmore 方法第10行
3.由于方法比较多,可以采取下面的方式查看代码:
1Mac按住 option 键,然后点击方法名,即可跳转到方法
2windows按住 Alt 键,然后鼠标左击,即可跳转到方法
-->
<view class="root">
<video ref="videoPlayer" :src="currentSrc" controls @ended="playNext" :object-fit="object_fit" :style="'width: '+ windowWidth +'px; height: '+ boxStyle.height +'px;z-inde:-1;'"></video>
</view>
<sd-float-page :room='room' :msgList='msgList'
:style="'width: '+ windowWidth +'px; height: '+ boxStyle.height +'px;position: absolute;' "></sd-float-page>
</view>
</view>
</template>
<script>
import sdFloatPage from '@/components/sd-live-page/histroy.nvue';
import {
playbackDetail
} from '@/api/live.js'
export default {
components: {
sdFloatPage
},
data() {
return {
rtmpSources: [],
currentIndex: 0,
room: {},
wHeight: 0, //获取的屏幕高度🌟💗
boxStyle: { //视频,图片封面样式🌟💗
'height': 0,
'width': 0,
},
object_fit: 'cover', //视频样式默认包含🌟💗
}
},
computed: {
currentSrc() {
return this.rtmpSources[this.currentIndex];
}
},
onLoad(options) {
this.room = JSON.parse(decodeURIComponent(options.data));
this.platform = uni.getSystemInfoSync().platform
this.windowWidth = uni.getSystemInfoSync().screenWidth //获取屏幕宽度
this.boxStyle.width = this.windowWidth + 'px' //给宽度加px
this.wHeight = uni.getSystemInfoSync().screenHeight; //获取屏幕高度
this.boxStyle.height = this.wHeight; //改变视频高度
this.get()
},
mounted() {
// 初始化时播放第一个源
this.playCurrent();
},
methods: {
playCurrent() {
this.$refs.videoPlayer.load();
this.$refs.videoPlayer.play();
},
playNext() {
this.currentIndex++;
if (this.currentIndex >= this.rtmpSources.length) {
this.currentIndex = 0; // 回到第一个源
}
this.playCurrent();
},
get() {
let that = this
// console.log(this.room)
playbackDetail({
app_name: 'shop',
live_stream_id: this.room.live_stream_id
}).then((res) => {
console.log(res.data, '1111')
this.rtmpSources = res.data.playback_url;
})
},
},
}
</script>
<style lang="scss" scoped>
</style>

508
pages/room/index.vue Normal file
View File

@ -0,0 +1,508 @@
<template>
<view class="view_body">
<view>
<view class="search_content flex_a_c_j_sb">
<view class="flex_a_c">
<view class="iconfont icon-sousuo" style="font-size: 39rpx;"></view>
<input type="text" v-model="keyword" placeholder="搜索主播或关键字" placeholder-style="font-size: 30rpx;"
@input="change">
</view>
<button class="search_btn" @click="search">搜索</button>
</view>
<view class="banner">
<view class="banner-detail" v-for="(item,i) in list" :key='i' @click="zhisort(i)">
<view class="banner-name">
{{item.name}}
</view>
<view class="banner-t" v-if="isindex==i">
</view>
</view>
</view>
<scroll-view scroll-top="0" scroll-y="true" class="goods_body_scroll" v-if="isindex==0">
<view class="roomsbox">
<view class="roomblock" v-for="(room,index) in roomList" :key="index" @click="jump(room)"
style="border: 1px solid #e1d9d4;">
<image :src="room.cover" mode="aspectFill" v-if="room.cover"></image>
<image src="/static/lw/6.gif" mode="aspectFill" v-else></image>
<view class="livetitle">{{room.live_name}}</view>
<view class="roomstatus-d" v-if="room.status==1" style="background-color: #09BB07;">
</view>
<view class="roomstatus-d" v-else style="background-color: #fa2306;">
</view>
<view class="roomstatus" style="color: #00B26A;" v-if="room.status==1">直播中
</view>
<view class="roomstatus" style="color: #fa2306;" v-else>已停播
</view>
</view>
</view>
</scroll-view>
<scroll-view scroll-top="0" scroll-y="true" class="goods_body_scroll" v-if="isindex==1">
<view v-for="(pp,index) in dataList" :key="index">
<view class="roomsbox-a">
<view class="roomsbox-title">
{{pp.date}}
</view>
<view class="roomsbox">
<view class="roomblock" style="border: 1px solid #e1d9d4;" v-for="(room,j) in pp.records"
:key="j" @click="hsitroyjump(room)">
<image :src="room.cover" mode="aspectFill" v-if="room.cover"></image>
<image src="/static/lw/6.gif" mode="aspectFill" v-else></image>
<view class="livetitle">{{room.live_name}}</view>
<view class="roomstatus-d" v-if="room.status==1" style="background-color: #09BB07;">
</view>
<view class="roomstatus-d" v-else style="background-color: #fa2306;">
</view>
<view class="roomstatus-d" v-if="room.status==3" style="background-color: #e1d9d4;">
</view>
<view class="roomstatus" style="color: #00B26A;" v-if="room.status==1">直播中
</view>
<view class="roomstatus" style="color: #fa2306;" v-else>已停播
</view>
</view>
</view>
</view>
</view>
</scroll-view>
<view class="noshuju" v-if="roomList.length==0&&isindex==0">
<emptyPage title="暂无房间信息"></emptyPage>
</view>
<view class="noshuju" v-if="dataList.length==0&&isindex==1">
<emptyPage title="暂无房间信息"></emptyPage>
</view>
</view>
</view>
</template>
<script>
import emptyPage from '@/components/emptyPage.vue';
import {
live,
playbackList
} from '@/api/live.js'
export default {
components: {
emptyPage
},
data() {
return {
keyword: '',
device_height: 380,
page: 1,
dataindex: 1,
page_data: true,
list: [{
name: '直播精选'
},
{
name: '历史直播'
},
],
roomList: [],
dataList:[],
user: [],
index: 0,
isGetLoginInfo: true,
isindex: 0,
};
},
onLoad() {
},
mounted() {
this.getRoomList()
this.getbackList()
},
onShow() {},
onReachBottom() {
this.getRoomList()
},
onPullDownRefresh: function() {
console.log('下拉刷新')
this.getRoomList()
this.getbackList()
},
methods: {
//
change(e) {
// console.log(e)
if (e.detail.value.length <= 0) {
this.page = 1
this.getRoomList()
}
},
//
search() {
this.page = 1
this.roomList=[]
this.dataList=[]
if (this.isindex == 0) {
this.getRoomList()
} else {
this.getbackList()
}
},
//
zhisort(i) {
this.isindex = i
this.page = 1
this.keyword=''
this.roomList=[]
this.dataList=[]
if (i == 0) {
this.getRoomList()
} else {
this.getbackList()
}
},
getbackList: function() {
playbackList({
page_size: 100,
page: this.page,
app_name: 'shop',
keyword: this.keyword
}).then(res => {
if (res.data.lists.length > 0) {
//
let result = [];
//
for (let i = 0; i < res.data.lists.length; i++) {
let record = res.data.lists[i];
let date = record.date;
//
let group = result.find((item) => item.date === date);
//
if (!group) {
group = {
date: date,
records: []
};
result.push(group);
}
//
group.records.push(record);
}
this.dataList = result
//
}
})
},
/**
* 拉取房间列表
* @return {[type]}
* [description]
*/
getRoomList() {
live({
page_size: 10,
page: this.page,
app_name: 'shop',
keyword: this.keyword
}).then(res => {
if (res.data.code = 1) {
uni.hideLoading()
if (res.data.lists.length > 0) {
let list = res.data.lists;
let productList = this.$util.SplitArray(list, this.roomList);
setTimeout(() => {
this.$set(this, 'roomList', productList);
}, 500)
this.page = this.page + 1
}
}else{
uni.showModal({
title:res.msg
})
}
})
},
//
hsitroyjump: function(e) {
uni.navigateTo({
url: '/pages/room/histroyroom'+'?data=' + encodeURIComponent(JSON.stringify(e))
})
},
jump: function(e) {
uni.navigateTo({
url: '/pages/room/spectator' + '?data=' + encodeURIComponent(JSON.stringify(e))
});
},
}
}
</script>
<style lang="scss">
page {
background-color: #FFFFFF;
}
.goods_body_scroll {
margin-top: 50rpx;
}
.search_content {
margin: 0 auto;
width: 724rpx;
height: 64rpx;
padding: 2px 2px 2px 21.05rpx;
border-radius: 175rpx;
background: #fff;
margin-bottom: 21rpx;
position: relative;
box-sizing: border-box;
border: 2rpx solid #FCB9AD;
margin-top: 30rpx;
.icon-sousuo {
font-size: 26.32rpx;
font-weight: bold;
color: #c8c7c6;
margin-right: 17.54rpx;
}
.search_btn {
color: #fff;
width: 105.26rpx;
height: 56rpx;
line-height: 56rpx;
background: #f84221;
border-radius: 100px;
font-size: 28.07rpx;
}
}
.banner {
display: flex;
padding-left: 28rpx;
}
.banner-detail {
width: 133rpx;
margin-right: 30rpx;
}
.banner-name {
font-size: 33rpx;
font-family: PingFang SC-Medium, PingFang SC;
font-weight: 500;
color: #333333;
margin-bottom: 10rpx;
}
.banner-t {
width: 46px;
height: 0rpx;
opacity: 1;
border: 2rpx solid #F84221;
margin: 0 auto;
}
.noshuju {
height: 760upx;
}
.mico-18 {
margin-top: 10upx;
color: #666666;
}
.view_body {
width: 100%;
height: 100%;
background-color: #FFFFFF;
}
.roomsbox-title {
font-size: 30rpx;
font-family: PingFang SC-Medium, PingFang SC;
font-weight: 500;
color: #333333;
margin-bottom: 30rpx;
margin-left: 20rpx;
}
.roomstatus-d {
width: 20upx;
height: 20upx;
border-radius: 20upx;
position: absolute;
left: 20upx;
top: 20upx;
}
.roomstatus {
position: absolute;
left: 40upx;
top: 10upx;
font-size: 28upx;
}
.livetitle {
position: absolute;
bottom: 20upx;
width: 100%;
text-align: center;
height: 70upx;
line-height: 70upx;
color: #FFFFFF;
}
.top {
display: flex;
padding: 20upx;
top: 0;
position: fixed;
left: 0;
width: 95%;
background-color: #FFFFFF;
z-index: 9999;
}
.top_li {
font-size: 32upx;
padding: 0 20upx;
display: table-cell;
/* vertical-align:bottom; */
padding-top: 10upx;
color: #666666;
}
.top-lable-box {
/* #ifdef APP-PLUS */
/* flex: 1; */
/* #endif */
width: 80%;
}
.active {
font-size: 40upx;
font-weight: 800;
color: #333333;
padding-top: 0;
}
image {
width: 100%;
}
.roomsbox {
display: flex;
flex-wrap: wrap;
}
.roomblock {
width: 45%;
height: 300upx;
border-radius: 10upx;
overflow: hidden;
margin-bottom: 20upx;
position: relative;
margin-left: 2.5%;
background-color: #fff;
}
.right_top_scroll {
white-space: nowrap;
overflow: hidden;
width: 100%;
}
::-webkit-scrollbar {
width: 0;
height: 0;
color: transparent;
}
.scroll-view {
display: inline-block;
margin-right: 30rpx;
text-align: center;
font-size: 32rpx;
height: 60rpx;
line-height: 60rpx;
box-sizing: border-box;
padding: 0 10rpx;
}
.view_body {
background: #FFFFFF;
width: 100%;
overflow: hidden;
}
.mico-14 {
margin-right: 4upx;
}
.noshuju {
height: 750upx;
}
.noshuju_ico {
width: 120upx;
height: 80upx;
margin: 0 auto;
margin-top: 300rpx;
}
.noshuju_ico image {
width: 100%;
height: 100%;
}
.mico-18 {
margin-top: 10upx;
color: #666666;
}
.create-but {
background-color: #1ce0c5;
width: 120upx;
height: 60upx;
line-height: 60upx;
color: #FFFFFF;
text-align: center;
border-radius: 10upx;
/* #ifdef MP-WEIXIN */
margin-left: 40upx;
/* #endif */
margin-top: 4upx;
}
</style>

358
pages/room/spectator.nvue Normal file
View File

@ -0,0 +1,358 @@
<template>
<view class="container">
<view :style="'width: '+ windowWidth +'px; height: '+ boxStyle.height +'px;z-inde:-1;'">
<!--
1.这里的 swiper 不是用来控制视频滑动的,而是用来控制左右滑动的,如果不需要的可以改成 view
2.为了 视频无限加载,已经把 21 行的 appear 去掉了,加上了 loadmore 方法第10行
3.由于方法比较多,可以采取下面的方式查看代码:
1Mac按住 option 键,然后点击方法名,即可跳转到方法
2windows按住 Alt 键,然后鼠标左击,即可跳转到方法
-->
<list @loadmore="getData" @scroll="scrolls" :loadmoreoffset="wHeight*1" :show-scrollbar="false"
ref="listBox" :pagingEnabled="true" :scrollable="true">
<!-- 循环数据 -->
<cell v-for="(item,i) in dataList" :key="i">
<!-- 用div把视频模组套起来 -->
<div :style="'width: '+ windowWidth +'px; height: '+ boxStyle.height +'px;'">
<!-- <view v-if="Math.abs(k-i)<=1"> -->
<view v-if="Math.abs(k-i)<=1">
<view class="root">
<video :ref="'item'+i" :id="item.id" :loop="true" :autoplay="i == k"
:src="item.pull_url" :muted="item.isplay" :enable-progress-gesture="false"
:page-gesture="false" :controls="false" :show-loading="true" :is-live='true'
@error='vedioerr' :show-fullscreen-btn="false" :show-center-play-btn="false"
:style="boxStyle" :object-fit="object_fit" @timeupdate="timeupdate($event,i)">
</video>
<!-- {{item}} {{i}} -->
</view>
<sd-float-page :room='room' :msgList='msgList' :heightG='boxStyle.height'
:style="'width: '+ windowWidth +'px; height: '+ boxStyle.height +'px;position: absolute;' "></sd-float-page>
</view>
</div>
</cell>
</list>
</view>
</view>
</template>
<script>
import list from '@/uni_modules/uview-ui/libs/config/props/list';
import sdFloatPage from '@/components/sd-live-page/livepage.nvue';
import {
VUE_APP_WS_URL
} from '@/config/app';
export default {
components: {
sdFloatPage
},
data() {
return {
imgHost: '',
//下面打🌟号的是必须要的基础字段
//下面打💗号的是拥有滑动条的必须字段
dataList: [
'rtmp://live.lihaink.cn/ceshi/ceshi?auth_key=1697453509-0-0-c086ad0c4d8c581e26438a7a99a9f40f',
'rtmp://live.lihaink.cn/ceshi/ceshi?auth_key=1697453509-0-0-c086ad0c4d8c581e26438a7a99a9f40f'
], //用于数据循环的列表🌟💗
wHeight: 0, //获取的屏幕高度🌟💗
boxStyle: { //视频,图片封面样式🌟💗
'height': 0,
'width': 0,
},
k: 0, //默认为0🌟💗
max: 2,
playIngIds: [], //正在播放的视频id列队列队用于处理滑动过快导致的跳频问题🌟💗
ready: false, //可忽略
isDragging: false, //false代表停止滑动🌟💗
refreshing: true, //用于下拉刷新🌟💗
windowWidth: 0, //获取屏幕宽度🌟💗
windowHeight: 0,
dex: [0, 0], //用于判断是上滑还是下滑第一个存旧值第二个存新值【目前在1.0.7已经废弃】
currents: 0, //用于左右滑动0代表视频界面1代表右滑界面🌟💗
platform: '', //用于获取操作系统ios、android🌟💗
playIng: false, //用于视频初始化时是否播放,默认不播放🌟💗
videoTime: '', //视频总时长,这个主要用来截取时间数值💗
videoTimes: '', //视频时长用这个来获取时间值例如00:30这个时间值💗
changeTime: '', //显示滑动进度条时变化的时间💗
isShowimage: false, //是否显示封面【1.0.4已废弃,但是意思需要记住】
currenttimes: 0, //当前时间💗
isShowProgressBarTime: false, //是否拖动进度条如果拖动true则显示进度条时间否则不显示false【1.0.4已废弃,但是意思需要记住】
ProgressBarOpacity: 0.7, //进度条不拖动时的默认值,就是透明的💗
dotWidth: 0, //播放的小圆点,默认没有💗
deleteHeight: 0, //测试高度🌟💗
percent: 0, //百分小数💗
currentPosition: 0, //滑块当前位置💗//2.0已弃用,现已用于后端参数
currentPositions: 0, //滑块当前位置的副本💗//2.0已弃用,现已用于后端参数
newTime: 0, //跟手滑动后的最新时间💗
timeNumber: 0, //🌟💗
ProgressBarBottom: 20, //进度条离底部的距离💗
object_fit: 'cover', //视频样式默认包含🌟💗
mode: 'aspectFit', //图片封面样式🌟💗
timeout: "", //🌟用来阻止 setTimeout()方法
voice: "", //🌟用来阻止 setTimeout()方法
oldVideo: "",
isAutoplay: false, //是否开启自动播放(默认不开启)
autoplayText: "开启自动播放",
msgList: [],
room: {},
socketTask: null,
userName: '',
}
},
watch: {
async k(new_k, old_k) { //监听 k 值的变化,可以控制视频的播放与暂停
const max = new_k + 2;
if (this.max < max) {
this.max = max;
}
// if (this.oldCurrent != this.currentNav) {
// this.oldCurrent = this.currentNav
// return false
// }
this.dataList[old_k].playIng = false //如果视频暂停,就加载封面
this.dataList[old_k].isplay = true
this.dataList[old_k].state = 'pause'
// console.log('预留第' + (old_k) + '个视频:' + this.dataList[old_k].community_id)
// 2.0版本已经去掉了下面这一句,视频不用暂停,只需要把声音禁止就行
uni.createVideoContext(this.dataList[old_k].community_id, this)
.pause() //如果视频暂停那么旧视频停止这里的this.dataList[old_k].id + '' + old_k后面加 old_k 是为了每一个视频的 id 值不同,这样就可以大程度的避免串音问题
// console.log('已经暂停 --> 第' + (old_k) + '个视频~') //提示
this.dataList[new_k].state = 'play'
this.dataList[new_k].isplay = false
this.dataList[new_k].playIng = true
uni.createVideoContext(this.dataList[new_k].community_id, this).play()
}
},
onShow() {
uni.hideLoading();
// console.log('回到前台' + this.dataList.length);
if (this.dataList.length !== 0) {
this.dataList[this.k].state = 'play';
setTimeout(() => {
uni.createVideoContext(this.dataList[this.k].id, this).play()
}, 250)
}
},
onHide() {
this.dataList[this.k].state = 'pause'; //界面隐藏也要停止播放视频
setTimeout(() => {
uni.createVideoContext(this.dataList[this.k].community_id, this).pause(); //暂停以后继续播放
}, 250)
// console.log('到后台');
},
onLoad(options) {
this.platform = uni.getSystemInfoSync().platform
this.windowWidth = uni.getSystemInfoSync().screenWidth //获取屏幕宽度
this.boxStyle.width = this.windowWidth + 'px' //给宽度加px
this.wHeight = uni.getSystemInfoSync().screenHeight; //获取屏幕高度
this.boxStyle.height = this.wHeight; //改变视频高度
console.log(this.boxStyle.height)
this.room = JSON.parse(decodeURIComponent(options.data));
this.get()
},
mounted() {
},
Ready() {},
methods: {
autoPlay() {
this.isAutoplay = !this.isAutoplay;
if (!this.isAutoplay) {
this.autoplayText = "开启自动播放"
uni.showToast({
title: "关闭自动播放",
icon: 'none',
duration: 3000
})
} else {
this.autoplayText = "关闭自动播放"
uni.showToast({
title: "开启自动播放",
icon: 'none',
duration: 3000
})
}
},
getData() {
// 这里就是数据加载完以后再向后端发送数据的地方,
},
vedioerr(e) {
let timer = null
if (e.tye = 'error') {
timer = setInterval((res) => {
uni.createVideoContext('myVideo', this).play()
console.log('重新连接', '1111111111')
}, 600000)
} else {
timer = null
}
},
touchstart(event) {
this.dataList[this.k].isShowimage = true //刚触摸的时候就要显示预览视频图片了
this.dataList[this.k].isShowProgressBarTime = true //显示时间线
this.ProgressBarOpacity = 1 //让滑块显示起来更明显一点
this.dotWidth = 10 //让点显示起来更明显一点
},
touchend() { //当手松开后,跳到最新时间
uni.createVideoContext(this.dataList[this.k].community_id, this).seek(this.newTime)
if (this.dataList[this.k].state == 'pause') {
this.dataList[this.k].state = 'play'
uni.createVideoContext(this.dataList[this.k].community_id, this).play()
}
this.dataList[this.k].isShowProgressBarTime = false //触摸结束后,隐藏时间线
this.dataList[this.k].isShowimage = false //触摸结束后,隐藏时间预览
this.ProgressBarOpacity = 0.5 //隐藏起来进度条,不那么明显了
this.dotWidth = 0 //隐藏起来进度条,不那么明显了
},
touchmove(event) { //当手移动滑块时,计算位置、百分小数、新的时间
var msg = []
if (this.videoTime !== '') {
msg = this.videoTime.split(':')
}
var timeNumber = Number(msg[0]) * 60 + Number(msg[1])
this.currentPositions = event.changedTouches[0].screenX
this.percent = this.currentPositions / this.windowWidth
this.newTime = this.percent * timeNumber
this.currenttimes = parseInt(this.newTime)
let theTime = this.newTime
let middle = 0; // 分
if (theTime > 60) {
middle = parseInt(theTime / 60);
theTime = parseInt(theTime % 60);
}
this.changeTime =
`${Math.round(middle)>9?Math.round(middle):'0'+Math.round(middle)}:${Math.round(theTime)>9?Math.round(theTime):'0'+Math.round(theTime)}`
},
timeupdate(event, index) { //计算滑块当前位置,计算当前百分小数
if (index == this.k) {
var currenttime = event.detail.currentTime
this.timeNumber = Math.round(event.detail.duration)
this.getTime()
this.percent = currenttime / this.timeNumber
this.currentPosition = this.windowWidth * this.percent
let theTime = currenttime
let middle = 0; // 分
if (theTime > 60) {
middle = parseInt(theTime / 60);
theTime = parseInt(theTime % 60);
}
this.changeTime =
`${Math.round(middle)>9?Math.round(middle):'0'+Math.round(middle)}:${Math.round(theTime)>9?Math.round(theTime):'0'+Math.round(theTime)}`
//自动切换视频
if (this.isAutoplay) { //true,代表自动播放
if (Math.round(currenttime) == this.timeNumber - 1) {
const dom = uni.requireNativePlugin('dom')
let doms = 'item' + (this.k + 1)
setTimeout(() => {
let el = this.$refs[doms][0]
dom.scrollToElement(el, {
offset: 0,
animated: true
})
}, 500)
}
}
}
},
getTime() { //得到时间函数
this.videoTime = this.formatSeconds(this.timeNumber);
var msg = []
if (this.videoTime !== '') {
msg = this.videoTime.split(':')
}
this.videoTimes = `${msg[0]>9?msg[0]:'0'+msg[0]}:${msg[1]>9?msg[1]:'0'+msg[1]}`;
},
formatSeconds(value) { //获取时间函数
let theTime = parseInt(value); // 秒
let middle = 0; // 分
if (theTime > 60) {
middle = parseInt(theTime / 60);
theTime = parseInt(theTime % 60);
}
return `${middle>9?middle:middle}:${theTime>9?theTime:theTime}`;
},
moreVideo(index) {
},
toVideo(index) {
},
scrolls(event) {
this.showManage = false;
this.isDragging = event.isDragging;
if (!event.isDragging) { //isDragging判断用户是不是在滑动滑动true停止滑动false。我们要用户停止滑动时才给 k 赋值,这样就可以避免很多麻烦
var i = Math.round(Math.abs(event.contentOffset.y) / (this.wHeight - this.deleteHeight +
1)) //先用绝对值取出滑动的距离,然后除以屏幕高度,取一个整,就知道你现在滑动到哪一个视频了
if (i !== this.k) { //这里加判断是因为这个方法会执行很多次,会造成重复请求,所以这里写一个限制
if (uni.getSystemInfoSync().platform == 'ios') {
this.k = i //判断了用户没有滑动,确认了用户的确是在看这个视频,然后就赋值啦
this.dataList[this.k].state = 'play'
// console.log('正在播放 --> 第' + (this.k + 1) + '个视频~')
} else {
clearTimeout(this.timers);
this.timers = setTimeout(() => {
this.k = i //判断了用户没有滑动,确认了用户的确是在看这个视频,然后就赋值啦
this.dataList[this.k].state = 'play'
// console.log('正在播放 --> 第' + (this.k + 1) + '个视频~')
}, 80)
}
}
}
},
get() {
let that = this
var msg = [this.room];
// console.log(this.room)
for (let i = 0; i < msg.length; i++) {
msg[i]['isMore'] = false
msg[i]['playIng'] = false
msg[i]['state'] = false
msg[i]['isplay'] = false
msg[i]['loading'] = false
msg[i]['id'] = msg[i]['live_stream_id'].toString()
}
this.dataList = msg;
if (this.dataList.length !== 0) {
this.dataList[this.k].state = 'play';
uni.createVideoContext(this.dataList[this.k].id, this).play()
this.page = that.page + 1
}
},
onpullingdown() {
this.refreshing = true
},
onrefresh() {
setTimeout(() => {
this.refreshing = false
}, 1000)
},
},
onReachBottom() {
uni.$emit('onReachBottom');
},
}
</script>
<style lang="scss" scoped>
</style>

View File

@ -0,0 +1,346 @@
<template>
<view class="">
<u-sticky customNavHeight="0">
<view class="head_top">
<u-search placeholder="搜索小区、办公楼等" :showAction="false"></u-search>
<view style="height: 20rpx;"></view>
<u-tabs :list="tabsList" itemStyle="font-size: 32rpx;height: 74rpx;" :current="current" @change="changeCurrent"
lineColor="#FF6D20" lineWidth="105rpx" height="7rpx"></u-tabs>
</u-tabs>
</view>
</u-sticky>
<view style="background-color: #f4f4f4;height: 30rpx;"></view>
<view class="address-box" v-if="current==0" style="padding: 0;">
<map
style="width: 750rpx;height: 750rpx;"
:longitude="longitude"
:latitude="latitude"
show-location
@controltap="handleMapTap"
></map>
<!-- <Amap></Amap> -->
<view class="head_item" style="padding: 20rpx;">
<view class="re-location">
<view class="re-title">当前位置: </view>
<view>{{street}}</view>
</view>
<view class="re-btn" @click="reGetLocation">
<image class="re-address-img" src="@/static/images/re_address.png"></image>重新定位
</view>
</view>
</view>
<view class="address-box" v-if="current==1">
<view class="head_item_tips">
<view>泸州区县</view>
</view>
<view class="area">
<view class="area-item" :class="{'area-item-on': item.code==area_change}" v-for="(item, index) in areaList"
:key="index" @click="changeArea(item)">
{{item.name}}
</view>
</view>
<view class="head_item_tips">
<view>选择街道/</view>
</view>
<view class="street">
<view class="letter-item" v-for="key in mapKey" :key="key">
<view class="letter">{{key}}</view>
<view class="item-box">
<view class="street-item" v-for="item in mapList[key]" :key="item.code" @click="changeStreet(item)">
{{item.name}}
</view>
</view>
</view>
</view>
</view>
</view>
</template>
<script>
import {
getGeocoder,
merClassifly,
getProductslist
} from '@/api/store.js';
import { wgsToGcj } from "@/utils/wgs.js";
import {
getArea,
getStreet
} from "@/api/article.js";
import { Toast } from '@/libs/uniApi';
// import Amap from "./map.nvue";
export default {
// components:{
// Amap
// },
data() {
return {
tabsList: [{
name: '地图定位',
}, {
name: '泸州区县',
}, ],
current: 0,
latitude: '28.87',
longitude: '105.44',
town: '',
street_id: '',
street: '',
areaList: [],
streetList: [],
mapList: {},
area_change: '',
street_change: '',
}
},
onLoad() {
this.getLoaction();
this.loadArea();
},
onShow() {},
computed: {
mapKey() {
return Object.keys(this.mapList).sort()
}
},
methods: {
changeCurrent(e) {
this.current = e.index;
},
getLoaction() {
this.street = '定位中'
uni.getLocation({
type: 'wgs84',
timeout: '10',
success: (res) => {
res = wgsToGcj(res);
let latitude, longitude;
latitude = res.latitude.toString();
longitude = res.longitude.toString();
this.latitude = res.latitude.toFixed(6);
this.longitude = res.longitude.toFixed(6);
this.$store.commit('setLocation', {
lat: res.latitude.toFixed(6),
long: res.longitude.toFixed(6),
});
getGeocoder({
lat: latitude,
long: longitude
}).then(res => {
this.town = res.data.address_reference.town.title
this.street_id = res.data.address_reference.town.id
this.street = res.data.address_reference.town.title;
}).catch(err => {
uni.showToast({
title: err,
icon: 'none'
})
this.street = '定位失败'
})
},
fail: (err) => {
console.log('定位失败');
this.isshow = false
uni.setStorageSync("RejectTarget", true)
Toast('定位失败,请检查定位权限是否开启')
this.street = '定位失败'
// uni.showToast({
// title: "",
// icon: 'none',
// duration: 2000
// });
}
});
},
reGetLocation() {
this.getLoaction()
},
loadArea() {
getArea({
city_code: 510500
}).then((res) => {
this.areaList = res.data;
this.changeArea(this.areaList[0]);
})
},
loadStreet(area_code) {
this.street_change = '';
getStreet({
area_code
}).then((res) => {
this.streetList = res.data;
this.initPinyin();
})
},
initPinyin() {
this.mapList = {};
this.streetList.forEach((item) => {
let str = item.pinyin?.toUpperCase();
str = str ? str : '#';
if (this.mapList[str]) {
this.mapList[str].push(item);
} else {
this.mapList[str] = [];
this.mapList[str].push(item)
}
})
},
changeArea(item) {
this.area_change = item.code;
this.loadStreet(this.area_change);
},
//
changeStreet(item){
uni.navigateBack({
success: () => {
uni.$emit('changeAddress', {
area: this.area_change,
street: item
})
}
})
},
//
handleMapTap(e){
console.log('点击', e);
}
},
onPullDownRefresh() {
uni.stopPullDownRefresh()
}
}
</script>
<style lang="scss">
page {
background-color: #fff;
}
.head_top {
background-color: #fff;
padding: 28rpx;
}
.address-box {
// background-color: red;
border-radius: 21rpx 21rpx 0rpx 0rpx;
padding: 30rpx 28rpx;
.head_item {
display: flex;
justify-content: space-between;
align-items: center;
padding-bottom: 28rpx;
font-size: 28rpx;
font-family: PingFang SC-Regular, PingFang SC;
font-weight: 400;
color: #333333;
.re-location {
display: flex;
.re-title {
flex-shrink: 0;
padding-right: 14rpx;
}
}
.re-address-img {
width: 38.55rpx;
height: 38.55rpx;
margin-right: 14rpx;
}
.re-btn {
display: flex;
align-items: center;
flex-shrink: 0;
padding-left: 14rpx;
}
}
.head_item_tips {
height: 44rpx;
font-size: 32rpx;
font-family: PingFang SC-Regular, PingFang SC;
font-weight: 400;
color: #737373;
}
.address-list {
font-size: 28rpx;
font-family: PingFang SC-Regular, PingFang SC;
font-weight: 400;
color: #333333;
height: 80rpx;
line-height: 75rpx;
border-bottom: 1rpx solid rgba(0, 0, 0, 0.1);
}
.area {
display: flex;
flex-wrap: wrap;
padding-top: 30rpx;
.area-item {
// width: 158rpx;
height: 64rpx;
// background: #F4F4F4;
background-color: #fff;
border-radius: 11rpx 11rpx 11rpx 11rpx;
border: 2rpx solid #B3B3B3;
display: flex;
align-items: center;
justify-content: center;
padding: 0 20rpx;
font-size: 28rpx;
font-family: PingFang SC-Medium, PingFang SC;
font-weight: 500;
color: #737373;
margin-bottom: 22rpx;
margin-right: 22rpx;
}
.area-item-on {
// background-color: #F4F4F4;
color: #ff6d20;
// font-weight: bold;
border: 2rpx solid #ff6d20;
}
}
.street {
padding-top: 28rpx;
.letter-item {
display: flex;
.letter {
flex-shrink: 0;
margin-right: 28rpx;
font-size: 25rpx;
font-family: PingFang SC, PingFang SC;
font-weight: 400;
width: 40rpx;
text-align: center;
color: #737373;
}
.item-box {
flex: 1;
.street-item {
width: 100%;
padding-bottom: 28rpx;
font-size: 28rpx;
font-family: PingFang SC, PingFang SC;
font-weight: 400;
color: #333333;
}
}
}
}
}
</style>

View File

@ -0,0 +1,413 @@
<template>
<view class="" style="background-color: #fff;">
<u-sticky customNavHeight="0">
<view class="head_top">
<!-- <u-search placeholder="搜索小区、办公楼等" @custom="searchMap"></u-search>
<view style="height: 20rpx;"></view> -->
<u-tabs :list="tabsList" itemStyle="font-size: 32rpx;height: 74rpx;" :current="current" @change="changeCurrent"
lineColor="#FF6D20" lineWidth="105rpx" height="7rpx"></u-tabs>
</u-tabs>
</view>
</u-sticky>
<view style="background-color: #f4f4f4;height: 30rpx;"></view>
<view class="address-box" v-if="current==0" style="padding: 0;">
<map style="width: 750rpx;height: 750rpx;" :longitude="longitude" :latitude="latitude" :markers="[markers]"
show-location @tap="handleMapTap"></map>
<view class="head_item" style="padding: 10rpx 20rpx;">
<view class="re-location">
<view style="width: 120rpx;"><text class="text">当前位置: </text></view>
<view style="flex: 1;">
<text
class="text">{{locationInfo.formatted_addresses?locationInfo.formatted_addresses.recommend:locationInfo.address}}</text>
</view>
</view>
<view class="re-btn" @click="reGetLocation">
<image class="re-address-img" src="@/static/images/re_address.png"></image><text class="text">重新定位</text>
</view>
</view>
<u-button text="确认" @click="submitAddress"></u-button>
</view>
<view class="address-box" v-if="current==1">
<view class="head_item_tips">
<view><text class="text">泸州区县</text></view>
</view>
<view class="area">
<view class="area-item" :class="{'area-item-on': item.code==area_change}" v-for="(item, index) in areaList"
:key="index" @click="changeArea(item)">
<text class="text">{{item.name}}</text>
</view>
</view>
<view class="head_item_tips">
<view><text class="text">选择街道/镇</text></view>
</view>
<view class="street">
<view class="letter-item" v-for="key in mapKey" :key="key">
<view class="letter"><text class="text">{{key}}</text></view>
<view class="item-box">
<view class="street-item" v-for="item in mapList[key]" :key="item.code" @click="changeStreet(item)">
<text class="text">{{item.name}}</text>
</view>
</view>
</view>
</view>
</view>
</view>
</template>
<script>
import {
getGeocoder,
merClassifly,
getProductslist
} from '@/api/store.js';
import {
getArea,
getStreet
} from "@/api/article.js";
import { Toast } from '@/libs/uniApi';
import { wgsToGcj } from "@/utils/wgs.js";
export default {
data() {
return {
tabsList: [{
name: '地图定位',
}, {
name: '泸州区县',
}],
current: 0,
latitude: '28.87',
longitude: '105.44',
markers: {
id: 1,
longitude: '28.87',
latitude: '105.44',
iconPath: 'https://lihai001.oss-cn-chengdu.aliyuncs.com/def/cbbd5202311241523412538.png',
width: 28,
height: 28
},
locationInfo: {},
town: '',
street_id: '',
street: '',
areaList: [],
streetList: [],
mapList: {},
area_change: '',
street_change: '',
}
},
onLoad(options) {
this.getLoaction();
this.loadArea();
},
onShow() {},
computed: {
mapKey() {
return Object.keys(this.mapList).sort()
}
},
methods: {
changeCurrent(e) {
this.current = e.index;
},
getLoaction() {
this.street = '定位中'
this.locationInfo = {};
this.locationInfo.formatted_addresses = {};
this.locationInfo.formatted_addresses.recommend = '定位中'
uni.getLocation({
type: 'wgs84',
success: (res) => {
res = wgsToGcj(res);
let latitude, longitude;
latitude = res.latitude.toString();
longitude = res.longitude.toString();
this.latitude = res.latitude.toFixed(6);
this.longitude = res.longitude.toFixed(6);
this.$store.commit('setLocation', {
lat: res.latitude.toFixed(6),
long: res.longitude.toFixed(6),
});
getGeocoder({
lat: latitude,
long: longitude
}).then(res => {
this.locationInfo = res.data;
this.town = res.data.address_reference.town.title
this.street_id = res.data.address_reference.town.id
this.street = res.data.address_reference.town.title;
}).catch(err => {
uni.showToast({
title: err,
icon: 'none'
})
this.street = '定位失败'
})
},
fail: (err) => {
console.log('定位失败');
this.isshow = false
Toast('定位失败,请检查定位权限是否开启')
this.street = '定位失败'
this.locationInfo.formatted_addresses.recommend = '定位失败'
// uni.showToast({
// title: "获取定位超时",
// icon: 'none',
// duration: 2000
// });
}
});
},
reGetLocation() {
this.getLoaction()
},
loadArea() {
getArea({
city_code: 510500
}).then((res) => {
this.areaList = res.data;
this.changeArea(this.areaList[0]);
})
},
loadStreet(area_code) {
this.street_change = '';
getStreet({
area_code
}).then((res) => {
this.streetList = res.data;
this.initPinyin();
})
},
initPinyin() {
this.mapList = {};
this.streetList.forEach((item) => {
let str = item.pinyin?.toUpperCase();
str = str ? str : '#';
if (this.mapList[str]) {
this.mapList[str].push(item);
} else {
this.mapList[str] = [];
this.mapList[str].push(item)
}
})
},
changeArea(item) {
this.area_change = item.code;
this.loadStreet(this.area_change);
},
// 选择位置
changeStreet(item) {
uni.navigateBack({
success: () => {
uni.$emit('changeAddress', {
area: this.area_change,
street: item
})
}
})
},
// 点击地图
handleMapTap(e) {
// console.log('点击地图', e);
// #ifdef H5
return Toast('H5暂不支持选择坐标');
// #endif
let longitude = e.detail.longitude;
let latitude = e.detail.latitude;
this.markers.longitude = longitude;
this.markers.latitude = latitude;
// console.log('修改成功', this.markers);
getGeocoder({
lat: latitude,
long: longitude
}).then(res => {
// console.log(res);
this.locationInfo = res.data;
}).catch(err => {
uni.showToast({
title: err,
icon: 'none'
})
this.locationInfo = {};
this.locationInfo.formatted_addresses = {};
this.locationInfo.formatted_addresses.recommend = '定位失败'
})
},
submitAddress() {
console.log(this.locationInfo);
try {
this.town = this.locationInfo.address_reference.town.title;
this.street_id = this.locationInfo.address_reference.town.id;
this.street = this.locationInfo.address_reference.town.title;
let obj = {
area: this.locationInfo.ad_info.adcode,
street: {
name: this.street,
code: this.street_id
},
latitude: this.latitude,
longitude: this.longitude
}
console.log({...obj});
uni.navigateBack({
success: () => {
uni.$emit('changeAddress', obj)
}
})
} catch (e) {
return Toast('地址有误,请重新选择')
}
},
searchMap(){
uni.request({
url: 'https://restapi.amap.com/v3/place/text?keywords=北京大学&city=beijing&offset=20&page=1&key=0799f37420c0784f1e6cba230a68bdb1&extensions=all',
success: (res) => {
console.log(res);
},
fail: (e) => {
console.log(e);
}
})
}
},
onPullDownRefresh() {
uni.stopPullDownRefresh()
}
}
</script>
<style>
/* page {
background-color: #fff;
} */
.text {
font-size: 28rpx;
white-space: normal;
}
.head_top {
background-color: #fff;
padding: 28rpx;
}
.address-box {
border-radius: 21rpx 21rpx 0rpx 0rpx;
padding: 30rpx 28rpx;
width: 750rpx;
}
.head_item {
width: 750rpx;
flex-direction: row;
justify-content: space-between;
padding-bottom: 28rpx;
font-size: 28rpx;
font-family: PingFang SC-Regular, PingFang SC;
font-weight: 400;
color: #333333;
}
.re-location {
flex-direction: row;
flex-wrap: nowrap;
width: 480rpx;
align-items: center;
}
.re-address-img {
width: 38.55rpx;
height: 38.55rpx;
margin-right: 10rpx;
}
.re-btn {
flex-direction: row;
padding-left: 10rpx;
width: 200rpx;
height: 100rpx;
align-items: center;
}
.head_item_tips {
height: 44rpx;
font-size: 32rpx;
font-family: PingFang SC-Regular, PingFang SC;
font-weight: 400;
color: #737373;
}
.address-list {
font-size: 28rpx;
font-family: PingFang SC-Regular, PingFang SC;
font-weight: 400;
color: #333333;
height: 80rpx;
line-height: 75rpx;
border-bottom: 1rpx solid rgba(0, 0, 0, 0.1);
}
.area {
flex-direction: row;
flex-wrap: wrap;
padding-top: 30rpx;
justify-content: flex-start;
}
.area-item {
height: 64rpx;
/* width: 100px; */
background-color: #fff;
border-radius: 11rpx 11rpx 11rpx 11rpx;
border: 2rpx solid #B3B3B3;
flex-direction: row;
align-items: center;
justify-content: center;
padding: 0 20rpx;
font-size: 28rpx;
font-family: PingFang SC-Medium, PingFang SC;
font-weight: 500;
color: #737373;
margin-bottom: 22rpx;
margin-right: 22rpx;
}
.area-item-on {
color: #ff6d20;
border: 2rpx solid #ff6d20;
}
.street {
padding-top: 28rpx;
}
.letter-item {
flex-direction: row;
}
.letter {
margin-right: 28rpx;
font-size: 25rpx;
font-family: PingFang SC, PingFang SC;
font-weight: 400;
width: 40rpx;
text-align: center;
color: #737373;
}
.item-box {
flex: 1;
}
.street-item {
width: 100%;
padding-bottom: 28rpx;
font-size: 28rpx;
font-family: PingFang SC, PingFang SC;
font-weight: 400;
color: #333333;
}
</style>

View File

@ -226,7 +226,8 @@
<text class="count">{{item.relevance.length}}</text>
</view>
</view>
<view v-if="showManage == item.author.uid || showManage " class="manage" :style="{'margin-top':item.relevance.length>0?'-115rpx':'0px'}">
<view v-if="showManage == item.author.uid || showManage " class="manage"
:style="{'margin-top':item.relevance.length>0?'-115rpx':'0px'}">
<view class="manage-gou"></view>
<navigator hover-class="none"
:url="'/pages/plantGrass/plant_release/index?id='+item.community_id+'&type=2'"
@ -304,16 +305,16 @@
deleteAndroidHeight
这两个参数用于控制评论等的高度
-->
<douyin-scrollview ref="comments" :deleteIOSHeight="36" :deleteAndroidHeight="15" :userInfo="userInfo"
<douyin-scrollview ref="comments" :deleteIOSHeight="36" :deleteAndroidHeight="15" :userInfo="userInfo"
@closeScrollview="closeScrollview" @successFul="pinlunFun"></douyin-scrollview>
</view>
</uni-popup>
<!-- 他提到的宝贝弹窗 -->
<uni-popup type="bottom" ref="pinglunMentioned" >
<mentioned ref="mentioned" @close="closePopup" :list="moreList" :uid="authorUid" ></mentioned>
<uni-popup type="bottom" ref="pinglunMentioned">
<mentioned ref="mentioned" @close="closePopup" :list="moreList" :uid="authorUid"></mentioned>
</uni-popup>
<authorize @onLoadFun="onLoadFun" :isAuto="isAuto" :isShowAuth="isShowAuth" @authColse="authColse"></authorize>
<view class="fixed-head">
@ -361,6 +362,7 @@
import {
navigateBack
} from '../../../libs/uniApi';
import list from '../../../uni_modules/uview-ui/libs/config/props/list';
export default {
computed: configMap({
statusBarHeight: 0,
@ -718,14 +720,13 @@
// });
// })'
// that.isUser ?
videoList({
page: that.page,
limit: that.limit,
id: this.videoID
}).then(res => {
console.log(res.data,'1')
that.getVideoData(res.data.list);
})
@ -898,11 +899,43 @@
// if(!this.loadVideo) return
this.loadVideo = true
// 这个方法主要就是用来第一次进入视频播放时用来处理
deoList(this.videoID).then(async (res) => {
// deoList(this.videoID).then(async (res) => {
// this.loadVideo = false
// this.userUid = res.data.uid
// this.page = 1;
// var msg = [res.data];
// for (let i = 0; i < msg.length; i++) {
// msg[i]['isMore'] = false
// msg[i]['playIng'] = false
// msg[i]['state'] = false
// msg[i]['isplay'] = false
// msg[i]['loading'] = false
// msg[i]['community_id'] = msg[i]['community_id'].toString()
// }
// this.dataList = msg;
// if (this.dataList.length !== 0) {
// this.dataList[this.k].state = 'play';
// uni.createVideoContext(this.dataList[this.k].community_id, this).play()
// }
// }).catch(err => {
// return uni.showToast({
// title: err,
// icon: 'none',
// duration: 2000
// });
// })
videoList({
page: this.page,
limit: this.limit,
id: this.videoID
}).then(async (res) => {
this.loadVideo = false
this.userUid = res.data.uid
this.page = 1;
var msg = [res.data];
var msg =res.data.list;
for (let i = 0; i < msg.length; i++) {
msg[i]['isMore'] = false
msg[i]['playIng'] = false
@ -916,6 +949,7 @@
if (this.dataList.length !== 0) {
this.dataList[this.k].state = 'play';
uni.createVideoContext(this.dataList[this.k].community_id, this).play()
this.page = that.page + 1
}
}).catch(err => {
return uni.showToast({
@ -926,7 +960,6 @@
})
// this.isUser ?
// myVideoList(this.userUid, {
// page: this.page,
@ -1115,7 +1148,6 @@
}
</script>
<style lang="scss" scoped>
// .video-list{
// padding: 200rpx 28.07rpx 0 28.07rpx;
// display: flex;
@ -1135,7 +1167,7 @@
/* #ifdef MP */
padding-top: 200rpx;
/* #endif */
// background-color: #000000;
background-color: #F5F5F5;
@ -1258,18 +1290,19 @@
left: 0;
top: 70rpx;
height: 86rpx;
.icon-xiangzuo {
margin-left: 10px;
width: 20px;
height: 20px;
color: #ffffff;
}
padding-right: 30rpx;
}

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