Compare commits

..

246 Commits

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
weipengfei
2645c34d4e 修改云仓页面图片大小(存在BUG) 2023-09-28 15:41:22 +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
weipengfei
6f2a468f8c Merge branch 'old' of https://gitea.lihaink.cn/mkm/nk-shop2.0 into old 2023-09-28 14:06:16 +08:00
jia
de6afb9391 生产界面 2023-09-28 14:05:14 +08:00
weipengfei
250654511b 新增了编辑可修改库存 2023-09-28 14:05:07 +08:00
jia
a759d3952f 删除 pages/moreProject/moreProject.vue 2023-09-28 14:01:29 +08:00
jia
8ccd5f5703 代码更新 2023-09-28 13:59:16 +08:00
weipengfei
ed6bea9962 Merge branch 'old' of https://gitea.lihaink.cn/mkm/nk-shop2.0 into old 2023-09-28 11:18:53 +08:00
weipengfei
61049a01dc 修复bug 2023-09-28 11:18:19 +08:00
weipengfei
124fbeefca 新增状态管理 2023-09-28 11:18:07 +08:00
jia
46137717e8 供销云市场修改 2023-09-28 10:34:58 +08:00
jia
af93ae7101 云仓接口 、委托销售bug处理 、云仓界面修改 2023-09-28 09:55:18 +08:00
jia
8f7e5f2ff2 版本号修改 2023-09-27 22:52:59 +08:00
jia
4bc0e98b09 界面修改 2023-09-27 22:46:15 +08:00
jia
7d3ad11946 修改支付界面的问题 2023-09-27 22:33:26 +08:00
jia
9b30956be9 极光 2023-09-27 22:06:56 +08:00
jia
0fbcbec447 文件上传 2023-09-27 21:56:08 +08:00
jia
10fa18df32 商户入驻 生产 供销等界面更新 2023-09-27 19:43:53 +08:00
weipengfei
bff6905dee 修改添加商品功能 2023-09-27 18:49:16 +08:00
jia
42c777d9e2 生产修改 2023-09-27 14:24:32 +08:00
jia
a87694f02c 商户入驻以及生产缴纳保证金 界面修改 2023-09-27 14:17:58 +08:00
jia
805b194fe8 逻辑修改 2023-09-27 12:10:39 +08:00
weipengfei
c507002424 更新六个讯飞AI小程序 2023-09-27 11:12:19 +08:00
jia
922ba1b054 缴纳保证金页面修改 2023-09-27 10:48:14 +08:00
jia
2427899247 支付回调修改 2023-09-26 21:55:14 +08:00
jia
48e1f72f3f 界面优化 2023-09-26 20:55:17 +08:00
jia
d1cea3b562 界面修改 2023-09-26 20:34:47 +08:00
jia
8f836f3a4c 订单以及供销等界面修改 2023-09-26 20:32:23 +08:00
THK3121
86a1b7cd6d 修复 2023-09-26 20:31:28 +08:00
jia
55b4c78c1e 弹窗界面以及商户管理修改 2023-09-26 19:11:14 +08:00
weipengfei
5cf28341eb 更新讯飞六个AI小程序,优化小程序调用逻辑,修复小程序内头像未出现的bug 2023-09-26 17:50:09 +08:00
jia
3a8691c0d9 返回按钮修改 2023-09-26 17:09:32 +08:00
jia
7312a00edc 修改分类学返回按钮 2023-09-26 16:56:02 +08:00
jia
80b7cde0af 小程序更新 2023-09-26 16:03:19 +08:00
jia
53a10e90ae Merge branch 'old' of https://gitea.lihaink.cn/mkm/nk-shop2.0 into old 2023-09-26 15:34:41 +08:00
jia
fc9139f417 生产 以及 mp完善 2023-09-26 15:33:18 +08:00
weipengfei
25af883fef Merge branch 'old' of https://gitea.lihaink.cn/mkm/nk-shop2.0 into old 2023-09-26 09:30:42 +08:00
weipengfei
31f269b52f 更新网络请求 2023-09-26 09:30:35 +08:00
THK3121
cd678de1a9 修改 2023-09-25 18:59:53 +08:00
190 changed files with 32307 additions and 6582 deletions

33
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
},
}
}

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);
}

View File

@ -88,7 +88,7 @@ export function getfocuslst(data) {
//关注我的人
export function getfanslst(data) {
return requesta.post('community/fans/lst',data);
return requesta.get('community/fans/lst',data);
}
//用户送礼
@ -121,6 +121,13 @@ export function sendGift(data) {
return request.post('zhibo/sendGift',data);
}
//获取主播关注人数
export function fansNum(data) {
return requesta.get('zhibo/fansNum',data);
}
/**
* 充值金额选择
*/

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

@ -19,6 +19,7 @@
</view>
</view>
</view>
</view>
</template>

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>

View File

@ -1,5 +1,5 @@
<template>
<view class="container" >
<view class="container">
<view class="top-do-box">
<view class="room-info">
<view class="room-logo-box">
@ -14,7 +14,7 @@
<text style="color: #fff;font-size: 25rpx;">4000</text>
</view>
</view>
<!-- <view class="room-guanzhu" @click="interest">
<!-- <view class="room-guanzhu" @click="interest">
<text class="guanzhu" v-if="!follow">关注</text>
<text class="guanzhu" v-else>已关注</text>
</view> -->
@ -41,7 +41,7 @@
</view>
<!-- <view class="top-left" v-if="isshow">
<!-- <view class="top-left" v-if="isshow">
<view class="top-left-a" @click="switchCamera">
<image class="left-img" src="/static/img/qiehuan.png" mode=""></image>
</view>
@ -52,7 +52,7 @@
<!-- 底部操作 -->
<!-- <view class="inpit-box-bg" v-if="focus">
<!-- <view class="inpit-box-bg" v-if="focus">
<view class="inpit-box-body">
<input class="uni-input" @input="onKeyInput" maxlength="20" cursor-spacing="10" hold-keyboard
placeholder="说点什么吧..." :value="inputValue" :focus="focus" />
@ -240,7 +240,7 @@
{{join.message}}
</text>
</view>
<gb-popup :isShow="isShow1" rName="确定" :isBut="false" lName="取消" @lEvent="show1" @rEvent="copyData"
title="请输入礼物数量">
<view style="padding: 30rpx;">
@ -264,15 +264,15 @@
getuser,
getRechargeApi,
sendGift,
getAjuser
getAjuser
} from '@/api/live.js'
import {
VUE_APP_WS_URL
} from '@/config/live.js';
} from '@/config/app.js';
import uniPopup from '@/components/unipopup/live-uni-popup.vue';
import msgList from '@/components/mh-msgList/mh-msgList.vue';
import gbpopup from '@/components/gb-popup/gb-popup.vue';
import gbpopup from '@/components/gb-popup/gb-popup.vue';
export default {
name: "sd-float-page",
props: {
@ -340,8 +340,7 @@ import gbpopup from '@/components/gb-popup/gb-popup.vue';
userinfo: null,
hoveredIndex: -1,
regIndex: -1,
gifts: [
],
gifts: [],
gifsobj: {},
gift_num: '',
isShow1: false,
@ -393,7 +392,7 @@ import gbpopup from '@/components/gb-popup/gb-popup.vue';
},
methods: {
//关注
//关注
getjuser() {
getAjuser(this.userinfo.app_user_id).then((res) => {
console.log(res, 'AAAAAA')
@ -440,7 +439,7 @@ import gbpopup from '@/components/gb-popup/gb-popup.vue';
})
},
//送礼
//送礼
//送礼
bosendGift(gif) {
// 执行关闭模态对话框的操作
@ -941,7 +940,7 @@ import gbpopup from '@/components/gb-popup/gb-popup.vue';
send_lick: function() {
this.sendGift()
},
//礼物弹窗
@ -960,23 +959,23 @@ import gbpopup from '@/components/gb-popup/gb-popup.vue';
console.log(this.gift_num)
let gift = {
'gift_id': gt.id,
}
this.isShow1 = true
this.gifsobj = gift
},
//对话监听
set_focus: function() {
this.focus = !this.focus
},
//对话输入监听
onKeyInput: function(event) {
this.inputValue = event.detail.value
},
//对话监听
set_focus: function() {
this.focus = !this.focus
},
//对话输入监听
onKeyInput: function(event) {
this.inputValue = event.detail.value
},
send_message: function() {
const t = this;
t.focus = false;
@ -1621,7 +1620,8 @@ import gbpopup from '@/components/gb-popup/gb-popup.vue';
.txtba-b {
font-size: 33rpx;
font-family: PingFang SC-Medium, PingFang SC;
font-weight: 500;color: #F84221;
font-weight: 500;
color: #F84221;
line-height: 60rpx;
}
@ -1808,9 +1808,9 @@ import gbpopup from '@/components/gb-popup/gb-popup.vue';
.send-boj-txt {
flex: 1;
padding-right: 40rpx;
flex-direction: row;
justify-content: space-between;
}
@ -2049,7 +2049,7 @@ import gbpopup from '@/components/gb-popup/gb-popup.vue';
border-radius: 50%;
margin-right: 10upx;
overflow: hidden;
}

View File

@ -1,46 +1,48 @@
<template>
<view class="container" >
<view class="top-do-box">
<view class="room-info">
<view class="room-logo-box">
<image :src="room.cover" class="room-logo-box"></image>
</view>
<view class="room-info-message">
<view class="room-user-name">
<text
style="color: #fff;font-size: 25rpx;">{{room.live_name.length>6?room.live_name.substring(0, 6)+'...': room.live_name}}</text>
<view class="container">
<view class="" :style="{'height':heightG+'px'}" @click="quanju">
<view class="top-do-box">
<view class="room-info">
<view class="room-logo-box">
<image :src="room.cover" class="room-logo-box"></image>
</view>
<view class="room-user-money">
<text style="color: #fff;font-size: 25rpx;">4000</text>
<view class="room-info-message">
<view class="room-user-name">
<text
style="color: #fff;font-size: 25rpx;">{{room.live_name.length>6?room.live_name.substring(0, 6)+'...': room.live_name}}</text>
</view>
<view class="room-user-money">
<text style="color: #fff;font-size: 25rpx;">{{count}}</text>
</view>
</view>
<view class="room-guanzhu" @click="interest">
<text class="guanzhu" v-if="!follow">关注</text>
<text class="guanzhu" v-else>已关注</text>
</view>
</view>
<view class="room-guanzhu" @click="interest">
<text class="guanzhu" v-if="!follow">关注</text>
<text class="guanzhu" v-else>已关注</text>
<view class="room-users-box">
<scroll-view class="right_top_scroll" scroll-x="true" scroll-left="0">
<view class="top-scroll-users-header" v-for="(bitem,bindex) in users" :key="bindex">
<image :src="bitem.app_user_avatar" class="top-scroll-users-header"
v-if="bitem.app_user_avatar"></image>
<image src="https://lihai001.oss-cn-chengdu.aliyuncs.com/attach/default_avtar.png"
class="top-scroll-users-header" mode="aspectFill"></image>
</view>
</scroll-view>
</view>
</view>
<view class="room-users-box">
<scroll-view class="right_top_scroll" scroll-x="true" scroll-left="0">
<view class="top-scroll-users-header" v-for="(bitem,bindex) in users" :key="bindex">
<image :src="bitem.app_user_avatar" class="top-scroll-users-header"
v-if="bitem.app_user_avatar"></image>
<image src="https://lihai001.oss-cn-chengdu.aliyuncs.com/attach/default_avtar.png"
class="top-scroll-users-header" mode="aspectFill"></image>
</view>
</scroll-view>
</view>
<view class="users-count web-font">
<view class="users-count web-font">
<text class="users-count-text"> {{users.length}}</text>
</view>
<view class="users-count " @click="outroom">
<image src="@/static/img/close.png" class="users-count-img" mode="aspectFit"></image>
<view class="users-count web-font">
<text class="users-count-text"> {{users.length}}</text>
</view>
<view class="users-count " @click="outroom">
<image src="@/static/img/close.png" class="users-count-img" mode="aspectFit"></image>
</view>
</view>
</view>
</view>
<view class="top-left" v-if="isshow">
<view class="top-left-a" @click="switchCamera">
<image class="left-img" src="/static/img/qiehuan.png" mode=""></image>
@ -76,7 +78,7 @@
<image class="ico-box-img" src="@/static/img/shanpin.png" mode="aspectFit"></image>
</view>
<view class="ico-box" @click="send_lick">
<image class="ico-box-img" src="@/static/img/gn.png"></image>
<image class="ico-box-img" src="@/static/img/jl.png"></image>
</view>
</view>
</view>
@ -240,7 +242,46 @@
{{join.message}}
</text>
</view>
<uni-popup ref="giftrecord" :type="type" :custom="true" @change="change">
<view class="uni-record" >
<view class="uni-record-top">
<view class="uni-record-top-img" @click="closezb">
<image class="uni-record-top-img" src="@/static/img/you.png" mode=""></image>
</view>
<view class="uni-record-top-text">
<text class="uni-record-top-text">礼物记录</text>
</view>
</view>
<scroll-view scroll-y :style="{'height':380+'px','overflow':'hidden'}">
<view class="uni-record-content" v-for="(item,m) in recordlist" :key="m">
<view class="record-content-one">
<view class="content-onea">
<text class="content-onea">{{item.create_time}}</text>
</view>
<view class="content-oneb">
<image src="@/static/img/jb.png" class="content-oneb-img" mode="aspectFit">
</image>
<text class="content-oneb-txt" v-if='!isshow'>-{{item.amount}}</text>
<text class="content-oneb-txt" v-else>+{{item.amount}}</text>
</view>
</view>
<view class="record-content-two">
<view class="content-twoa">
<image class="content-twoa-img" src="@/static/missing-face.png" mode="aspectFit">
</image>
<text class="content-twoa-txt">{{item.nickname}}</text>
</view>
<view class="content-twob">
<text class="content-twob-txt"
v-if='!isshow'>给主播赠送{{item.gift_id}}个{{item.gift_name}}</text>
<text class="content-twob-txt" v-else>主播收到{{item.gift_id}}个{{item.gift_name}}</text>
</view>
</view>
</view>
</scroll-view>
</view>
</uni-popup>
<gb-popup :isShow="isShow1" rName="确定" :isBut="false" lName="取消" @lEvent="show1" @rEvent="copyData"
title="请输入礼物数量">
<view style="padding: 30rpx;">
@ -264,15 +305,17 @@
getuser,
getRechargeApi,
sendGift,
getAjuser
getAjuser,
getfanslst,
fansNum
} from '@/api/live.js'
import {
VUE_APP_WS_URL
} from '@/config/live.js';
VUE_APP_WS_URL_ONE
} from '@/config/app.js';
import uniPopup from '@/components/unipopup/live-uni-popup.vue';
import msgList from '@/components/mh-msgList/mh-msgList.vue';
import gbpopup from '@/components/gb-popup/gb-popup.vue';
import gbpopup from '@/components/gb-popup/gb-popup.vue';
export default {
name: "sd-float-page",
props: {
@ -286,7 +329,11 @@ import gbpopup from '@/components/gb-popup/gb-popup.vue';
},
room: {
type: Object,
}
},
heightG: {
type: String,
default: '750'
},
},
components: {
uniPopup,
@ -318,6 +365,7 @@ import gbpopup from '@/components/gb-popup/gb-popup.vue';
message_arr: [
],
recordlist:[],
msgList: [{
userName: "系统通知",
content: "倡导绿色直播,严禁发布涉黄涉毒涉赌,严禁发布涉政、违法及低俗违规内容。健康直播,文明互动",
@ -340,11 +388,11 @@ import gbpopup from '@/components/gb-popup/gb-popup.vue';
userinfo: null,
hoveredIndex: -1,
regIndex: -1,
gifts: [
],
gifts: [],
gifsobj: {},
gift_num: '',
isShow1: false,
count:0
}
/*定义IM消息类型
1进群通知
@ -358,8 +406,6 @@ import gbpopup from '@/components/gb-popup/gb-popup.vue';
this.userinfo = JSON.parse(uni.getStorageSync('USER_INFO'))
this.getjuser()
return
// console.log(this.userinfo, '房间id 以及当前用户id')
this.get_live_room(); //调用直播间信息
this.rewardList()
this.giftList()
@ -367,6 +413,9 @@ import gbpopup from '@/components/gb-popup/gb-popup.vue';
this.getuser()
this.getRecharg()
// console.log(this.room)
},
onReady() {
this.windowWidth = uni.getSystemInfoSync().screenWidth //获取屏幕宽度
@ -395,22 +444,52 @@ import gbpopup from '@/components/gb-popup/gb-popup.vue';
})
},
beforeDestroy() {
uni.closeSocket({
success: function() {
console.log('WebSocket连接已关闭')
},
fail: function(err) {
console.log('关闭WebSocket连接失败:', err)
}
})
},
methods: {
//关注
//全局
quanju() {
this.focus = false;
},
//关注我的人
getfanslst() {
getfanslst().then((res) => {
if (res.status = 200) {
// console.log(res,'aaaaaaaaaa')
this.count = res.data.count
}
})
},
//获取主播关注人数
fansNum(id){
fansNum({master_id:id}).then((res=>{
// console.log(res,'SSSSSSS')
this.count=res.data.fan_num
}))
},
//关注
getjuser() {
getAjuser(this.room.app_user_id).then((res) => {
if (res.status == 200) {
this.follow = res.data.is_start
}
}).catch((err)=>{
}).catch((err) => {
})
},
//获取充值数据
getRecharg() {
getRechargeApi().then((res) => {
console.log(res.data.recharge_quota, '11111111')
this.Recharglist = res.data.recharge_quota
this.Recharglist.push({
data: {},
@ -422,7 +501,7 @@ import gbpopup from '@/components/gb-popup/gb-popup.vue';
//获取余额
getuser() {
getuser().then((res) => {
console.log(res.data.now_money)
this.now_money = res.data.now_money
})
},
@ -439,11 +518,11 @@ import gbpopup from '@/components/gb-popup/gb-popup.vue';
//礼物列表
rewardList() {
rewardList().then((res) => {
console.log(res, '11111111')
this.recordlist = res.data.list
})
},
//送礼
//送礼
//送礼
bosendGift(gif) {
// 执行关闭模态对话框的操作
@ -453,12 +532,15 @@ import gbpopup from '@/components/gb-popup/gb-popup.vue';
live_stream_id: this.room.live_stream_id,
gift_num: gif.gift_num,
}
console.log(data)
sendGift(data).then((res) => {
if (res.code == 1) {
this.getuser()
this.rewardList()
this.$refs.share.close()
uni.hideModal()
} else {
uni.showModal({
title: '提示',
@ -548,7 +630,7 @@ import gbpopup from '@/components/gb-popup/gb-popup.vue';
success: function(res) {
if (res.confirm) {
uni.redirectTo({
url: '/pages/room/room_list'
url: '/pages/room/index'
})
} else if (res.cancel) {
console.log('用户点击取消');
@ -562,10 +644,10 @@ import gbpopup from '@/components/gb-popup/gb-popup.vue';
//购买商品
shopp(item) {
uni.sendHostEvent('live_shop', item, (ret) => {
//发送消息成功回调
console.log('购买商品' + JSON.stringify(item));
});
// console.log(item)
uni.navigateTo({
url: '/pages/goods_details/index?id=' + item.app_goods_id
})
},
//绑定用户id
bindUser(client_id) {
@ -587,11 +669,11 @@ import gbpopup from '@/components/gb-popup/gb-popup.vue';
// 进入这个页面的时候创建websocket连接【整个页面随时使用】
connectSocketInit() {
console.log(VUE_APP_WS_URL)
console.log(VUE_APP_WS_URL_ONE)
// 创建一个this.socketTask对象【发送、接收、关闭socket都由这个对象操作】
this.socketTask = uni.connectSocket({
// 【非常重要】必须确保你的服务器是成功的,如果是手机测试千万别使用ws://127.0.0.1:9099【特别容易犯的错误】
url: VUE_APP_WS_URL,
url: VUE_APP_WS_URL_ONE,
success(data) {
console.log("websocket连接成功", data);
},
@ -652,7 +734,7 @@ import gbpopup from '@/components/gb-popup/gb-popup.vue';
success: function(res) {
if (res.confirm) {
uni.redirectTo({
url: '/pages/room/room_list'
url: '/pages/room/index'
})
} else if (res.cancel) {
console.log('用户点击取消');
@ -662,15 +744,26 @@ import gbpopup from '@/components/gb-popup/gb-popup.vue';
}
} else if (obj.type == 'gift_message') {
console.log(obj, '33333')
let data1 = {
userName: '',
content: obj.text + 'X' + obj.gift_num,
avatar: obj.app_user_avatar,
cmd: "say",
msg_type: "user"
}
this.msgList.push(data1)
this.$refs.msgList.setMsgPanelScroll()
this.sendGift(obj)
} else if (obj.type == 'audience') {
this.liveAudience()
}
});
// 这里仅是事件监听【如果socket关闭了会执行】
this.socketTask.onClose(() => {
@ -684,6 +777,8 @@ import gbpopup from '@/components/gb-popup/gb-popup.vue';
// userAvatar: "https://lihai001.oss-cn-chengdu.aliyuncs.com/def/1b716202302251108516996.png",
// gift_ico: "https://lihai001.oss-cn-chengdu.aliyuncs.com/def/1b716202302251108516996.png",
gift.top = Math.random() * 200 // 随机生成礼物的位置
gift.left = Math.random() * 200 // 随机生成礼物的位置
this.giftobj.push(gift);
setTimeout(() => {
this.giftobj.splice(this.gifts.indexOf(gift), 1); // 礼物消失
@ -877,9 +972,25 @@ import gbpopup from '@/components/gb-popup/gb-popup.vue';
},
//关闭直播间
outroom: function() {
uni.redirectTo({
url: '/pages/room/index'
uni.showModal({
title: '提示', // 对话框标题
content: '是否确定退出直播间', // 对话框内容
showCancel: true, // 是否显示取消按钮,默认为 true
cancelText: '取消', // 取消按钮的文字,默认为 "取消"
cancelColor: '#000000', // 取消按钮的文本颜色,默认为 "#000000"
confirmText: '确定', // 确定按钮的文字,默认为 "确定"
confirmColor: '#3CC51F', // 确定按钮的文本颜色,默认为 "#3CC51F"
success(res) {
if (res.confirm) {
uni.redirectTo({
url: '/pages/room/index'
})
} else if (res.cancel) {
console.log('用户点击了取消按钮')
}
}
})
},
get_live_room() {
@ -895,6 +1006,8 @@ import gbpopup from '@/components/gb-popup/gb-popup.vue';
// console.log(this.room.app_user_id, uni.getStorageSync('user_id'), '房间id 以及当前用户id')
if (res.data.app_user_id == uni.getStorageSync('Uid')) {
this.isshow = true
}else{
this.fansNum(res.data.app_user_id)
}
}
this.connectSocketInit()
@ -941,10 +1054,14 @@ import gbpopup from '@/components/gb-popup/gb-popup.vue';
this.type = 'bottom'
t.togglePopup('bottom', 'share');
},
//关闭
closezb() {
this.$refs['giftrecord'].close()
},
send_lick: function() {
this.sendGift()
// this.sendGift()
this.$refs['giftrecord'].open()
},
//礼物弹窗
@ -963,23 +1080,23 @@ import gbpopup from '@/components/gb-popup/gb-popup.vue';
console.log(this.gift_num)
let gift = {
'gift_id': gt.id,
}
this.isShow1 = true
this.gifsobj = gift
},
//对话监听
set_focus: function() {
this.focus = !this.focus
},
//对话输入监听
onKeyInput: function(event) {
this.inputValue = event.detail.value
},
//对话监听
set_focus: function() {
this.focus = !this.focus
},
//对话输入监听
onKeyInput: function(event) {
this.inputValue = event.detail.value
},
send_message: function() {
const t = this;
t.focus = false;
@ -1049,13 +1166,109 @@ import gbpopup from '@/components/gb-popup/gb-popup.vue';
width: 100%;
/* 设置容器的宽度 */
}
.uni-record {
border-radius: 0;
flex: 1;
background-color: #F4F4F4 !important;
}
.uni-record-content {
height: 177rpx;
background: #FFFFFF;
padding: 0rpx 28rpx;
border-radius: 21rpx 21rpx;
margin-bottom: 21rpx;
}
.uni-record {
}
.uni-record-top {
margin-top: 60rpx;
flex-direction: row;
margin-bottom: 30rpx;
}
.uni-record-top-img {
width: 59rpx;
height: 58rpx;
}
.uni-record-top-text {
font-size: 33rpx;
color: #000000;
margin-top: 5rpx;
}
.record-content-one {
flex-direction: row;
justify-content: space-between;
margin-top: 30rpx;
padding-bottom: 14rpx;
border-bottom: 1rpx solid #333333;
}
.content-onea {
font-size: 26rpx;
font-family: PingFang SC-Regular, PingFang SC;
font-weight: 400;
color: #333333;
}
.content-oneb {
flex-direction: row;
}
.content-oneb-img {
width: 32rpx;
height: 32rpx;
margin-right: 10rpx;
}
.content-oneb-txt {
font-size: 30rpx;
font-family: PingFang SC-Medium, PingFang SC;
font-weight: 500;
color: #333333;
}
.record-content-two {
flex-direction: row;
justify-content: space-between;
padding-top: 25rpx;
}
.content-twoa {
flex-direction: row;
}
.content-twob-txt {
font-size: 30rpx;
font-family: PingFang SC-Regular, PingFang SC;
font-weight: 400;
margin-top: 20rpx;
}
.content-twoa-txt {
font-size: 26rpx;
font-family: PingFang SC-Regular, PingFang SC;
font-weight: 400;
color: #333333;
margin-top: 20rpx;
margin-left: 20rpx;
}
.content-twoa-img {
width: 56rpx;
height: 56rpx;
}
.dobox {
position: absolute;
bottom: 0rpx;
width: 750rpx;
background-color: #F8F8F8;
}
.inpit-box {
@ -1624,7 +1837,8 @@ import gbpopup from '@/components/gb-popup/gb-popup.vue';
.txtba-b {
font-size: 33rpx;
font-family: PingFang SC-Medium, PingFang SC;
font-weight: 500;color: #F84221;
font-weight: 500;
color: #F84221;
line-height: 60rpx;
}
@ -1811,9 +2025,9 @@ import gbpopup from '@/components/gb-popup/gb-popup.vue';
.send-boj-txt {
flex: 1;
padding-right: 40rpx;
flex-direction: row;
justify-content: space-between;
}
@ -1835,12 +2049,15 @@ import gbpopup from '@/components/gb-popup/gb-popup.vue';
height: 30rpx;
}
.gift-alert {
width: 430rpx;
// width: 480rpx;
flex-direction: row;
justify-content: space-between;
justify-content: space-around;
// background-color: green;
// animation: slideRight 1s linear forwards;
animation: slideRight 1s linear forwards;
z-index: 9999;
position: absolute;
}
.gift-alerta {
@ -1912,13 +2129,12 @@ import gbpopup from '@/components/gb-popup/gb-popup.vue';
height: 60upx;
}
.send-boj-user-header {
width: 63upx;
height: 63upx;
border-radius: 50%;
margin-top: 0rpx;
margin-left: -7rpx;
margin-top: 3rpx;
}
@ -2028,9 +2244,10 @@ import gbpopup from '@/components/gb-popup/gb-popup.vue';
.room-users-box {
width: 200rpx;
height: 65upx;
height: 70upx;
display: flex;
margin-top: 10rpx;
}
@ -2039,20 +2256,18 @@ import gbpopup from '@/components/gb-popup/gb-popup.vue';
flex-direction: row;
flex-wrap: nowrap;
width: 200rpx;
height: 80upx;
margin-top: 10rpx;
height: 75upx;
}
.top-scroll-users-header {
width: 60upx;
height: 60upx;
width: 63upx;
height: 63upx;
border-radius: 50%;
margin-right: 10upx;
overflow: hidden;
}

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,10 +2,8 @@
"name" : "惠农生活",
"appid" : "__UNI__3A527D1",
"description" : "",
"versionName" : "1.4.7",
"versionCode" : 147,
"versionName" : "1.4.7",
"versionCode" : 147,
"versionName" : "1.8.0",
"versionCode" : 180,
"transformPx" : false,
/* 5+App */
"app-plus" : {
@ -14,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
@ -34,7 +35,9 @@
"description" : "uni小程序"
},
"Maps" : {},
"Push" : {}
"Push" : {},
"LivePusher" : {},
"Record" : {}
},
"safearea" : {
"bottom" : {
@ -47,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\"/>",
@ -60,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" : {
@ -79,7 +84,9 @@
},
"permissionPhoneState" : {
"request" : "none" //
}
},
"targetSdkVersion" : 30,
"minSdkVersion" : 23
},
/* ios */
"ios" : {
@ -89,7 +96,8 @@
"NSCameraUsageDescription" : "上传用户头像保存分享海报",
"NSLocationWhenInUseUsageDescription" : "根据客户地理位置推荐最近门店",
"NSLocationAlwaysUsageDescription" : "根据客户地理位置推荐最近门店",
"NSLocationAlwaysAndWhenInUseUsageDescription" : "根据客户地理位置推荐最近门店"
"NSLocationAlwaysAndWhenInUseUsageDescription" : "根据客户地理位置推荐最近门店",
"NSMicrophoneUsageDescription" : "根据用户录音进行语音识别转文字"
},
"idfa" : false,
"dSYMs" : false
@ -99,7 +107,8 @@
"maps" : {
"amap" : {
"appkey_ios" : "82af93ec51139c712c4118d84ba684ee",
"appkey_android" : "0799f37420c0784f1e6cba230a68bdb1"
"appkey_android" : "0799f37420c0784f1e6cba230a68bdb1",
"name" : "amap_18982406440DFVLElaO"
}
},
"payment" : {
@ -119,7 +128,8 @@
"amap" : {
"__platform__" : [ "ios", "android" ],
"appkey_ios" : "82af93ec51139c712c4118d84ba684ee",
"appkey_android" : "0799f37420c0784f1e6cba230a68bdb1"
"appkey_android" : "0799f37420c0784f1e6cba230a68bdb1",
"name" : "amap_18982406440DFVLElaO"
}
},
"oauth" : {},
@ -159,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" : {
@ -330,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

@ -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

@ -135,7 +135,7 @@
.then(res => {
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
});
})
@ -167,7 +167,7 @@
this.verify_code = res.resultStr
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();

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

@ -780,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>
@ -793,9 +794,9 @@
{{ 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>
@ -808,7 +809,6 @@
<i class="em" :class="emoji" :style="'background-image:url('+ httpUrl +')'"
v-for="emoji in emojiList" :key="emoji" @click="addEmoji(emoji)"></i>
</swiper-item>
</block>
</swiper>
@ -1402,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;
@ -1560,7 +1565,7 @@
self.scrollTop = parseInt(scrollTop) + 100
}
}).exec()
}, 1000)
}, 200)
},
//
bindScroll() {
@ -1626,7 +1631,8 @@
margin-top: 20rpx;
width: 710rpx;
position: fixed;
bottom: 160rpx;
bottom: 180rpx;
bottom: calc(160rpx + env(safe-area-inset-bottom)); /* 适应底部安全距离 */
left: 20rpx;
.broadcast-details_box,
@ -1967,11 +1973,10 @@
transition: all 0.005s cubic-bezier(0.25, 0.5, 0.5, 0.9);
background-color: #fff;
position: fixed;
bottom:var(--status-bar-height);
// bottom:var(--status-bar-height);
bottom: 20rpx;
bottom: calc(20rpx + env(safe-area-inset-bottom) );
left: 0;
}
.broadcast-details .footerCon.on {

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

@ -6,9 +6,9 @@
<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='where.keyword' @confirm="searchSubmit" @input="inputChange">
<text class='iconfont icon-sousuo'></text>
<input placeholder='搜索商品名称' placeholder-class='placeholder' confirm-type='search' name="search"
: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>
@ -21,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}}
@ -98,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>
@ -145,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>
@ -157,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>
@ -235,6 +239,7 @@
storeMerchantList,
getGeocoder
} from '@/api/store.js';
import { wgsToGcj } from "@/utils/wgs.js";
import {
initiateAssistApi
} from '@/api/activity.js';
@ -470,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();
@ -578,7 +585,7 @@
this.storeList = this.storeList.concat(res.data.list)
this.count = res.data.count
this.loading = false
})
},
//
@ -684,7 +691,7 @@
},
//
confirm2(data) {
let arr1 = [],
arr2 = []
if (data.storeTypeArr.length == 0) {
@ -776,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'
})
}
});
@ -822,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 = '';
@ -900,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 {
@ -963,7 +970,7 @@
width: 62rpx;
font-size: 40rpx;
height: 86rpx;
line-height: 86rpx ;
line-height: 86rpx;
}
.productList .nav-wrapper {
@ -1044,7 +1051,7 @@
.productList .list {
padding: 0 20rpx;
}
.productList .list.on {
@ -1080,7 +1087,7 @@
position: relative;
width: 100%;
height: 345rpx;
}
.productList .list .item .pictrue.on {
@ -1203,6 +1210,12 @@
}
}
.text_flex{
display: flex;
align-items: center;
}
.productList .list .item .text .money {
display: flex;
align-items: center;
@ -1424,7 +1437,7 @@
.store-wrapper {
margin-top: 310rpx;
border-top: 1px solid #F6F6F6;
.star-box {
@ -1520,11 +1533,12 @@
margin-left: 20px;
.avater {
width: 60px;
width: 80px;
height: 80px;
flex-shrink: 0;
image {
width: 60px;
width: 80px;
height: 80px;
}
}
@ -1540,10 +1554,13 @@
width: 20px;
height: 20px;
margin-right: 10px;
flex-shrink: 0;
}
.text_one_r {
flex: 1;
margin-left: 10px;
}
}
@ -1552,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;
}
}
@ -1568,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",
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,37 +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);
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(`/pages/moreProject/moreProject`);
// } else {
uni.showToast({
icon: 'none',
title: 'H5不支持打开小程序'
})
// uni.showToast({
// icon: 'none',
// title: 'H5'
// })
// }
uni.showToast({
icon: 'none',
title: 'H5不支持打开小程序'
})
// #endif
},
@ -427,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);
@ -456,11 +483,14 @@
title: err,
icon: 'none'
})
this.street = '定位失败'
})
},
fail: (err) => {
this.isshow = false
uni.setStorageSync("RejectTarget", true)
Toast('定位失败,请检查定位权限是否开启')
this.street = '定位失败'
}
});
},
@ -491,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>
@ -705,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="product_content_title">
{{description.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
@ -2533,7 +2543,8 @@
}
image{
width: 750rpx;
height: 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">
@ -107,21 +107,20 @@
});
},
//
//
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 + '是否同意缴纳保证金',
content: '商户' + this.merchant_Data.mer_name + '是否同意缴纳金',
success: (res) => {
if (res.confirm) {
paymerchant().then((res) => {

View File

@ -63,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>
@ -87,7 +87,7 @@
<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/commissionedSales/index/index?mer_id=${mer_id}`)">
@ -195,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>
@ -203,13 +203,13 @@
<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> -->
<!-- <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">
@ -318,7 +318,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>
@ -327,7 +327,7 @@
<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">
@ -390,7 +390,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>
@ -398,7 +398,7 @@
<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>
@ -848,7 +848,7 @@
}
},
//
//
margin(url) {
if (this.userInfoData.mer_info.mer_settlement_agree_status == 0) {
@ -880,6 +880,7 @@
url: '/pages/gather/gather'
})
},
//
buyserset() {
uni.navigateTo({

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

@ -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">
@ -228,7 +223,7 @@
// 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">
@ -168,15 +170,15 @@
</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>
@ -586,7 +588,7 @@
}
productDetail(this.merId, this.product_id).then(res => {
setStorage('editGoodsDetils', res.data);
if(res.data.content_arr) res.data.content = res.data.content_arr;
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 => {
@ -799,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;
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<=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');
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||postData.content.title?.trim().length<=0)return Toast('请输入商品详情');
if(!postData.content.image||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

@ -9,8 +9,8 @@
<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="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)">
@ -182,6 +182,7 @@
Toast
} from '@/libs/uniApi.js'
import { wgsToGcj } from "@/utils/wgs.js";
import {
merchantUpdateAPI,
merchantInfoAPI
@ -425,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();

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

@ -0,0 +1,200 @@
<template>
<view>
<view class="application-record" v-if="listData.length">
<view class="card-list" v-for="item in listData" :key="item.mer_intention_id">
<view class="card-top">
<view class="title">{{item.mer_name}}</view>
<view class="time">提交时间{{item.create_time}}</view>
<view v-if="item.fail_msg" class="reason">原因{{item.fail_msg}}</view>
</view>
<view class="line"></view>
<view class="card-bottom">
<view class="card-status">
<image class="status-icon" v-if="item.status === 0" src="../static/images/pending.png" mode=""></image>
<image class="status-icon" v-else-if="item.status === 1" src="../static/images/passed.png" mode=""></image>
<image class="status-icon" v-else-if="item.status === 2" src="../static/images/not-pass.png" mode=""></image>
<text class="status-text">{{statusText(item.status)}}</text>
</view>
<view class="status-btn" @click="jump(item)">{{statusBtn(item.status)}}</view>
</view>
</view>
</view>
<view class='no-shop' v-if="!listData.length && !loading">
<view class='pictrue' style="margin: 0 auto;">
<image src='/static/images/noCart.png'></image>
<text>暂无申请记录快去申请入驻吧!</text>
</view>
</view>
</view>
</template>
<script>
// +----------------------------------------------------------------------
// | CRMEB [ CRMEB ]
// +----------------------------------------------------------------------
// | Copyright (c) 2016~2021 https://www.crmeb.com All rights reserved.
// +----------------------------------------------------------------------
// | Licensed CRMEBCRMEB
// +----------------------------------------------------------------------
// | Author: CRMEB Team <admin@crmeb.com>
// +----------------------------------------------------------------------
import {
getApplicationRecordList
} from '@/api/store.js'
export default {
data() {
return {
loading: false,
listData: [],
pageData: {
page: 1,
limit: 10,
}
}
},
onLoad() {
this.getListData()
},
//
onReachBottom() {
if (this.count == this.listData.length) {
uni.showToast({
title: '没有更多啦',
icon: 'none',
duration: 1000
});
} else {
this.pageData.page += 1
this.getListData()
}
},
methods: {
getListData() {
this.loading = true
uni.showLoading({
title: '数据加载中',
});
getApplicationRecordList(this.pageData).then(res => {
this.count = res.data.count
this.listData = this.listData.concat(res.data.list)
uni.hideLoading();
this.loading = false
})
},
//
jump(item) {
console.log(item)
if ([0, 2].includes(item.status)) {
uni.navigateTo({
url: `/pages/store/settled/unit?mer_i_id=${item.mer_intention_id}`
})
} else if (item.status === 1) {
uni.navigateTo({
url: `/pages/store/merchantDetails/index?mer_i_id=${item.mer_intention_id}&mer_id=${item.mer_id}`
})
}
},
//
statusText(number) {
// 使
let statusData = {
0: "待审核",
1: "审核通过",
2: "审核未通过",
};
return statusData[number]
},
// button
statusBtn(number) {
// 使
let statusData = {
0: "编辑",
1: "查看",
2: "重新提交",
};
return statusData[number]
},
}
}
</script>
<style lang="scss" scoped>
.application-record {
display: flex;
flex-direction: column;
align-items: center;
background-color: #F5F5F5;
padding: 20rpx 30rpx;
.card-list {
width: 100%;
background-color: #fff;
padding: 20rpx 24rpx;
margin: 10rpx 20rpx;
border-radius: 12rpx;
.card-top {
height: 140rpx;
.title {
font-size: 28rpx;
font-weight: bold;
color: #333333;
}
.time {
color: #999999;
font-size: 24rpx;
padding: 5rpx 0;
}
.reason {
color: #E93323;
font-weight: bold;
font-size: 24rpx;
}
}
.line {
height: 2rpx;
margin: 20rpx 0 20rpx 0;
background-color: #EEEEEE;
}
.card-bottom {
display: flex;
justify-content: space-between;
align-items: center;
color: #333;
.card-status {
display: flex;
align-items: center;
.status-icon {
width: 30rpx;
height: 30rpx;
margin: 10rpx;
}
.status-text {
font-size: 28rpx;
font-weight: 500;
}
}
.status-btn {
font-size: 26rpx;
color: #555;
border: 1px solid #999999;
padding: 8rpx 32rpx;
border-radius: 40rpx;
}
}
}
}
.no-shop {
width: 100%;
background-color: #fff;
height: 100vh;
.pictrue {
display: flex;
flex-direction: column;
align-items: center;
color: $uni-nothing-text;
image {
width: 414rpx;
height: 380rpx;
}
}
}
</style>

View File

@ -210,11 +210,19 @@ export default {
type: 'routine'
};
//#endif
// #ifndef MP
params = {
type: 'app'
};
//#endif
merchantQrcode(this.id, params)
.then(res => {
console.log('二维码', res);
this.storeCode = res.data.url;
})
.catch(err => {});
.catch(err => {
console.log('二维码错误', err);
});
},
// #ifdef MP
//

View File

@ -39,14 +39,14 @@
<view class="record flex">
<view class="circle"></view>
<view class="cont-box">
<view class="title">签署里海云履约保证金协议</view>
<view class="title">签署里海云履约金协议</view>
<view class="text-box">
<view class="have-filled" v-if="false">
<text>1.完成签署履约保证金协议2023-05-08 13:15完成</text>
<text>1.完成签署履约金协议2023-05-08 13:15完成</text>
</view>
<view class="get-through" v-else>
<text class="through-title">1签署里海云履约保证金协议</text>
<text>请详细阅读里海云履约保证金协议并充分理解内容后进行电子签名</text>
<text class="through-title">1签署里海云履约金协议</text>
<text>请详细阅读里海云履约金协议并充分理解内容后进行电子签名</text>
<view class="flex_a_c" style="margin-top: auto;">
<view class="through-btn">签署协议</view>
<view class="tiaoguo">跳过</view>
@ -58,16 +58,16 @@
<view class="record flex">
<view class="circle"></view>
<view class="cont-box">
<view class="title">缴纳履约保证</view>
<view class="title">缴纳履约</view>
<view class="text-box">
<view class="have-filled" v-if="!true">
<text>1.完成履约保证金缴纳 2023-05-08 13:15完成</text>
<text>1.完成履约金缴纳 2023-05-08 13:15完成</text>
</view>
<view class="get-through" v-else>
<text class="through-title">1缴纳履约保证</text>
<text>线上缴纳履约保证金完成保证金审核后签约完成</text>
<text class="through-title">1缴纳履约</text>
<text>线上缴纳履约押金完成押金审核后签约完成</text>
<view class="flex_a_c" style="margin-top: auto;">
<view class="through-btn">缴纳履约保证</view>
<view class="through-btn">缴纳履约</view>
<view class="tiaoguo">跳过</view>
</view>
</view>

View File

@ -670,7 +670,7 @@
type: 3,
statusBarHeight: 0,
isLihaiYun: '',
screenHeight: 0,
}
},
computed: {
@ -744,6 +744,7 @@
this.isCoupon = options.coupon || 0;
this.diyActive = options.order || 0;
this.order = options.order;
this.screenHeight = uni.getSystemInfoSync().screenHeight;
if (options.spid) {
this.currSpid = options.spid
app.globalData.spid = options.spid;
@ -866,12 +867,15 @@
if (this.goodsLoading) return;
const query = uni.createSelectorQuery().in(this);
query.select('#goods').boundingClientRect(data => {
if (data.bottom < 1500 && data.top < 0) {
if (this.loadend == false) {
this.getProductSpu()
} else {
this.getGoods();
}
console.log(data.bottom,data.top);
if (data.bottom < 1500+this.screenHeight && data.top < 0) {
if(this.type==7) this.getProductSpu();
else this.getGoods();
// if (this.loadend == false) {
// this.getProductSpu()
// } else {;
// this.getGoods();
// }
}
}).exec();
//
@ -882,7 +886,7 @@
if (this.goodsLoading) return;
const query = uni.createSelectorQuery().in(this);
query.select('#product').boundingClientRect(data => {
if (data.bottom < 1500 && data.top < 0) {
if (data.bottom < 1500+this.screenHeight && data.top < 0) {
this.get_service_list();
}
}).exec();
@ -1008,6 +1012,7 @@
if (res.data.business_status == 2) {
this.isLihaiYun === 'Lihai' ? this.tabs = this.tabs4 : this.tabs = this.tabs3
this.type=7
} else {
this.tabs = this.tabs5
this.type=7
@ -1268,6 +1273,7 @@
},
onReachBottom() {
console.log('触底');
//
if (this.tabActive == 0) {
setTimeout(() => {

View File

@ -6,19 +6,18 @@
恭喜您的申请已通过
</view>
</view>
<!-- <view class="msg" v-if="mer_id > 0 && resData.login_url">
<view class="url">
<view class="msg" v-if="mer_id > 0 && resData.login_url">
<view class="url" @click="copyTBL(resData.login_url, '登录地址')">
<text class="head">登录地址</text>
<text class="content">{{resData.login_url}}</text>
</view>
<view class="phone">
<view class="phone" @click="copyTBL(resData.phone, '商户账号')">
<view class="">
<text class="head">商户账号</text>
<text class="content">{{resData.phone}}</text>
</view>
<text class="cope" @click="copyTBL()">复制</text>
</view>
</view> -->
</view>
<view class="btn" v-if="mer_id > 0">
<view class="">
温馨提示初始密码默认为手机号后六位请初次登录后及时修改
@ -59,21 +58,20 @@
this.resData = res.data
})
},
copyTBL(url) {
let copeData = `登录地址:${this.resData.login_url} 商户账号:${this.resData.phone}`
copyTBL(url, str="") {
// #ifdef MP || APP-PLUS
uni.setClipboardData({
data: copeData,
data: url,
success: function() {
uni.showToast({
title: '复制成功',
title: str+'复制成功',
duration: 1000
});
}
});
// #endif
// #ifdef H5
this.copyText(copeData)
this.copyText(url, str)
// #endif
},
//H5
@ -94,7 +92,7 @@
document.body.removeChild(transfer);
},
//
copyText(text) {
copyText(text, str="") {
//
const textString = text.toString();
let input = document.querySelector('#copy-input');
@ -113,7 +111,7 @@
if (document.execCommand('copy')) {
document.execCommand('copy');
this.$util.Tips({
title: '复制成功'
title: str + '复制成功'
});
}
input.blur();
@ -162,10 +160,10 @@
.msg {
width: 85%;
padding: 30rpx;
height: 150rpx;
height: 190rpx;
margin: 70rpx 70rpx;
background-color: #F6F6F6;
border-radius: 8rpx;
border-radius: 10rpx;
.url {
display: flex;
flex-wrap: nowrap;

View File

@ -1,5 +1,5 @@
<template>
<view class="">
<view class="page">
<!-- #ifdef MP || APP-PLUS -->
<view class="conten-top" :style="'height:'+statusBarHeight+'px'">
@ -20,7 +20,7 @@
<image mode="widthFix" class="merchantBg" :src="domain+'/static/diy/merchantBg'+keyColor+'.jpg'"
alt="">
</view>
<view class="application-record" @click="jumpToList">
<view class="application-record" @click="jumpToList" v-if="!mer_i_id">
申请记录
<text class="iconfont icon-xiangyou"></text>
</view>
@ -68,12 +68,16 @@
<view class="uni-list-cell">
<view class="uni-list-cell-db acea-row row-middle">
<text class="item-name">商户分类</text>
<picker @change="bindPickerChange" :value="index" :range="array"
range-key="category_name">
<picker @change="bindPickerChange" @columnchange="columnchange" mode="selector" :value="index" :range="array" range-key="category_name">
<input placeholder="请选择商户分类" type="text" readonly disabled
v-model="mer_classification">
<view class='iconfont icon-jiantou'></view>
</picker>
<!-- <picker @change="bindPickerChange" @columnchange="columnchange" mode="multiSelector" :value="index" :range="[array, bindPickerChangeidx]" range-key="cate_name">
<input placeholder="请选择商户分类" type="text" readonly disabled
v-model="mer_classification">
<view class='iconfont icon-jiantou'></view>
</picker>
</picker> -->
</view>
</view>
</view>
@ -111,6 +115,51 @@
</view>
</view>
</view>
<!-- <view class="item">
<view class="uni-list">
<view class="uni-list-cell">
<view class="uni-list-cell-db acea-row row-middle">
<text class="item-name businessBox">邀请码(选填)</text>
<input type="text" maxlength="30" placeholder="请输入邀请码"
v-model="merchantData.invitation_code" @input="validateBtn"
placeholder-class='placeholder' />
</view>
</view>
</view>
</view> -->
<view class="item">
<view class="uni-list">
<view class="uni-list-cell">
<view class="uni-list-cell-db acea-row row-middle">
<text class="item-name">公司性质</text>
<picker @change="natureBusinessChange" mode="selector" :value="index" :range="companyTypeList">
<input v-if="nature_business==1" placeholder="请选择公司性质" type="text" readonly disabled
value="对公户">
<input v-else-if="nature_business==2" placeholder="请选择公司性质" type="text" readonly disabled
value="个体户">
<input v-else placeholder="请选择公司性质" type="text" readonly disabled
value="">
<view class='iconfont icon-jiantou'></view>
</picker>
</view>
</view>
</view>
</view>
<view class="item no-border">
<view class='acea-row row-middle'>
<text class="item-title" style="margin-right: 20rpx;">请上传营业执照</text>
<text class="item-desc">(图片格式支持JPGPNGJPEG)</text>
<view class="upload">
<view v-if="business_license" class='pictrue' @click='uploadpicText'>
<image :src='business_license'></image>
</view>
<view v-else class='pictrue acea-row row-center-wrapper row-column' @click='uploadpicText'>
<text class='iconfont icon-icon25201'></text>
<view>上传图片</view>
</view>
</view>
</view>
</view>
<view class="item">
<view class="uni-list">
<view class="uni-list-cell">
@ -166,7 +215,7 @@
</view> -->
<view class="item no-border">
<view class='acea-row row-middle'>
<text class="item-title">请上传营业执照及行业相关资质证明图片</text>
<text class="item-title">请上传行业相关其他资质证明图片</text>
<text class="item-desc">(图片最多可上传10张,图片格式支持JPGPNGJPEG)</text>
<view class="upload">
<view class='pictrue' v-for="(item,index) in pics" :key="index" :data-index="index"
@ -218,19 +267,23 @@
<view style="margin: 20rpx 0;">甲方公司:{{company?company:"暂无公司信息"}}</view>
<view style="margin: 20rpx 0;">机构代码:{{organization_code?organization_code:"暂无公司信息"}}</view>
<view class="contenta">
<view class="contenta" v-if="detail.mer_services_agree">
<jyf-parser :html="detail.mer_services_agree" ref="article" :tag-style="tagStyle"></jyf-parser>
</view>
<view class="contenta" v-else>
<jyf-parser :html="detail.mer_supply_agree" ref="article" :tag-style="tagStyle"></jyf-parser>
</view>
<view class="setAgCountbtn">
<button class="setAgCountbtna" @click="refuse">
<view class="border"></view>
<!-- <button class="setAgCountbtna" @click="refuse">
拒绝
</button>
<button :class="num>0?'setAgCountbtnb':'setAgCountbtnc'" :disabled="num!=0" @click="agree">
<text v-if="num>0">请仔细阅读协议{{num}}S</text>
<text v-else>同意</text>
</button> -->
<button :class="num>0?'setAgCountbtnb':'setAgCountbtnc'" class="btn" :disabled="num!=0" @click="agree">
<text v-if="num>0">请仔细阅读协议 {{num}}秒后可提交</text>
<text v-else>同意本协议</text>
</button>
</view>
</view>
@ -270,10 +323,12 @@
create,
verify,
merClassifly,
getCategoryList,
getGoodsDetails,
updateGoodsRecord,
getStoreTypeApi,
agreeiness
agreeiness,
merchantLicenseIdentify
} from '@/api/store.js';
import {
getCaptcha,
@ -300,6 +355,7 @@
import {
HTTP_REQUEST_URL
} from '@/config/app';
import { Toast } from '../../../libs/uniApi';
const app = getApp();
export default {
components: {
@ -332,8 +388,10 @@
classification: '',
social_credit_code: '',
company_name: '',
address: ''
address: '',
invitation_code: '',
},
business_license: '',//
validate: false,
successful: false,
keyCode: "",
@ -344,10 +402,13 @@
index1: 0,
index2: [0, 0, 0],
mer_classification: "",
nature_business: 0,
array: [{
category_name: '',
merchant_category_id: ''
}],
companyTypeList: ['对公户', '个体户'],
bindPickerChangeidx: [],
storeTypeArr: [{
type_name: '',
mer_type_id: ''
@ -408,8 +469,7 @@
this.getGoodsDetails(options.mer_i_id)
})
}
this.getArea()
this.shoplist()
else this.getArea()
this.statusBarHeight = uni.getSystemInfoSync().statusBarHeight + 45;
},
onShow() {
@ -471,9 +531,10 @@
},
//
shoplist() {
shoplist(val) {
agreeiness({
type: 'mer_services_agree'
type: val
}).then(res => {
this.detail = res.data
})
@ -490,27 +551,34 @@
getVillage({
street_code: e
}).then(res => {
self.$set(self.business, 2, res.data)
self.$set(self.business, 2, res.data);
if(self.mer_i_id&&!this.business_name){
let area = self.business[0].find(item=>item.code==self.area_id)?.name;
let street = self.business[1].find(item=>item.code==self.street_id)?.name;
let village = self.business[2].find(item=>item.id==self.village_id)?.name;
this.business_name = `${area} ${street} ${village}`;
this.getArea();
}
})
},
//
getStreet(e) {
getStreet(e, street) {
const self = this;
getStreet({
area_code: e
}).then(res => {
self.$set(self.business, 1, res.data)
self.getVillage(self.business[1][0].code)
self.getVillage(street?street:self.business[1][0].code)
})
},
//
getArea() {
getArea(code=null, street=null) {
getArea({
city_code: 510500
}).then(res => {
this.business[0] = res.data;
this.code1 = this.business[0][0].code;
this.getStreet(this.code1)
this.code1 = code ? code : this.business[0][0].code;
this.getStreet(this.code1, street)
})
},
//
@ -548,7 +616,6 @@
//
getGoodsDetails(id) {
getGoodsDetails(id).then(res => {
console.log(res);
let arr = Object.keys(this.merchantData)
let resData = res.data
arr.map(item => {
@ -558,17 +625,26 @@
this.merchantData.social_credit_code = resData.social_credit_code
this.merchantData.company_name = resData.company_name
this.merchantData.address = resData.address
this.merchantData.invitation_code = resData.invitation_code
this.merchantData.classification = resData.merchant_category_id
this.merchantData.mer_type = resData.mer_type_id
this.area_id = resData.area_id
this.street_id = resData.street_id
this.mer_storeType = resData.mer_storeType
this.village_id = resData.village_id
})
this.pics = resData.images
this.business_license = resData.images[0];
resData.images.shift();
this.pics = resData.images;
this.mer_classification = this.getCategoryName(resData.merchant_category_id, this.array)
this.mer_storeType = this.getStoreTypeName(resData.mer_type_id, this.storeTypeArr)
this.business_name = '';
this.getArea(this.area_id, this.street_id);
if(resData.mer_type_id!=12){
this.shoplist('mer_services_agree')
}else{
this.shoplist('mer_supply_agree')
}
uni.hideLoading();
})
},
@ -588,30 +664,51 @@
}
}
},
//
natureBusinessChange(e){
this.nature_business = this.companyTypeList[e.detail.value]=='个体户'?2:1;
},
bindPickerChange: function(e) {
this.index = e.target.value
let idx = e.target.value
this.merchantData.classification = this.array[idx]['merchant_category_id']
this.mer_classification = this.array[idx]['category_name']
// console.log(e.detail);
// this.index = e.target.value[1];
let idx = e.target.value;
// let idx = e.target.value[1];
this.merchantData.classification = this.array[idx]['merchant_category_id']
this.mer_classification = this.array[idx]['category_name']
// this.merchantData.classification = this.bindPickerChangeidx[idx]['store_category_id']
// this.mer_classification = this.bindPickerChangeidx[idx]['cate_name']
this.validateBtn()
},
columnchange(e){
// console.log(e.detail);
if(e.detail.column==0){
this.bindPickerChangeidx = this.array[e.detail.value].children;
}
},
bindPickerChange1: function(e) {
this.index1 = e.target.value
let idx = e.target.value
this.merchantData.mer_type = this.storeTypeArr[idx]['mer_type_id']
this.mer_storeType = this.storeTypeArr[idx]['type_name']
// console.log(this.merchantData.mer_type)
if(this.storeTypeArr[idx]['type_code']== 'TypeStore'&&this.merchantData.mer_type){
this.shoplist('mer_services_agree')
}else{
this.shoplist('mer_supply_agree')
}
this.validateBtn()
},
bindPickerChange2: function(e) {
// console.log(e.detail)
// console.log(e.detail.value)
this.index2 = e.detail.value
this.business_name =
`${this.business[0][this.index2[0]].name} ${this.business[1][this.index2[1]].name} ${this.business[2][this.index2[2]].name}`
this.area_id = this.business[0][this.index2[0]].code
this.street_id = this.business[1][this.index2[1]].code
this.village_id = this.business[2][this.index2[2]].id
if(this.merchantData.mer_type==12) return ; //
merstreet({
street_code: this.street_id
}).then((res) => {
@ -643,6 +740,21 @@
title: res
});
});
// getCategoryList()
// .then(res => {
// // console.log(res);
// res.data.list.forEach(item=>{
// item.category_name = item.cate_name;
// item.merchant_category_id = item.store_category_id;
// })
// this.array = res.data.list;
// this.bindPickerChangeidx = this.array[0].children;
// })
// .catch(res => {
// this.$util.Tips({
// title: res
// });
// });
},
//
getStoreType: function() {
@ -705,6 +817,32 @@
that.$set(that, 'pics', that.pics);
});
},
/**
* 上传图片识别文字
*
*/
uploadpicText: function() {
let that = this;
that.$util.uploadImageOne('upload/image', function(res) {
that.business_license = res.data.path;
uni.showLoading({
title: '识别中'
})
merchantLicenseIdentify({
image: res.data.path
}).then(res=>{
that.merchantData.address = res.data.address;
that.merchantData.user_name = res.data.legal_person;
that.merchantData.social_credit_code = res.data.register_number;
that.merchantData.company_name = res.data.name;
// that.$set('merchantData', that.merchantData);
uni.hideLoading();
}).catch((e)=>{
uni.hideLoading();
Toast(e)
})
});
},
/**
* 删除图片
*
@ -808,15 +946,18 @@
code: that.merchantData.yanzhengma,
company_name: that.merchantData.company_name,
address: that.merchantData.address,
invitation_code: that.merchantData.invitation_code,
social_credit_code: that.merchantData.social_credit_code,
merchant_category_id: that.merchantData.classification,
merchant_category_name: that.mer_classification,
is_company: that.nature_business==1?1:0, // , 1, 0
mer_type_id: that.merchantData.mer_type,
mer_storeType: this.mer_storeType,
area_id: this.area_id,
street_id: this.street_id,
village_id: this.village_id,
is_nmsc: this.isnum,
images: that.pics
images: [this.business_license, ...that.pics]
}
that.validate = false;
if (that.mer_i_id) {
@ -846,7 +987,6 @@
that.validate = true;
}, 1000)
}
}).catch(res => {
this.isshow = false
that.validate = true;
@ -858,6 +998,7 @@
},
formSubmit() {
if (this.validateForm() && this.validate) {
if (this.merchantData.mer_type == '12') return this.agree();
if (this.codenote.length == 0) {
this.isshow = true
this.countDown()
@ -945,7 +1086,7 @@
if (value.enterprise_name && value.user_name && value.phone && /^1(3|4|5|7|8|9|6)\d{9}$/i.test(
value
.phone) &&
value.yanzhengma && that.isAgree && value.classification) {
value.yanzhengma && that.isAgree && this.mer_classification) {
if (!that.isShowCode) {
that.validate = true;
} else {
@ -986,12 +1127,14 @@
if (!value.yanzhengma) return that.$util.Tips({
title: '请填写验证码'
});
if (!value.classification) return that.$util.Tips({
if (!this.mer_classification) return that.$util.Tips({
title: '请选择商户分类'
});
if (!this.nature_business) return that.$util.Tips({
title: '请选择公司性质'
})
if (!this.mer_storeType) return that.$util.Tips({
title: '请选择商户类型'
title: '请选择店铺类型'
})
if (!this.business_name) return that.$util.Tips({
title: '请选择店铺所在地'
@ -1002,9 +1145,12 @@
if (that.isShowCode && !that.codeVal) return that.$util.Tips({
title: '请填写图片验证码'
});
if (that.pics.length == 0) return that.$util.Tips({
title: '请上传一张或者多张图片'
});
if (!that.business_license) return that.$util.Tips({
title: '请上传营业执照'
});
// if (that.pics.length == 0) return that.$util.Tips({
// title: ''
// });
that.validate = true;
@ -1043,6 +1189,7 @@
background-color: var(--view-theme) !important;
color: #fff !important;
}
.conten-top {
width: 100%;
@ -1083,9 +1230,8 @@
}
.merchantsSettled {
background-image: linear-gradient(var(--view-bntColor21) 0%, var(--view-bntColor22) 100%);
height: 140vh;
background-image: linear-gradient(var(--view-bntColor21) 0%, var(--view-bntColor22) 100%);
min-height: 2600rpx;
position: relative;
}
@ -1393,13 +1539,13 @@
.settlementAgreement .setAgCount {
background: #fff;
width: 656rpx;
width: 694rpx;
// height: 458px;
position: absolute;
top: 50%;
left: 50%;
padding: 52rpx;
padding: 28rpx;
-webkit-transform: translate(-50%, -50%);
-moz-transform: translate(-50%, -50%);
transform: translate(-50%, -50%);
@ -1463,10 +1609,11 @@
.setAgCountbtn {
display: flex;
justify-content: space-around;
position: relative;
.setAgCountbtna {
margin-top: 40rpx;
width: 200rpx;
// width: 200rpx;
height: 74rpx;
text-align: center;
line-height: 74rpx;
@ -1500,7 +1647,7 @@
.setAgCountbtnc {
margin-top: 40rpx;
width: 200rpx;
// width: 200rpx;
height: 74rpx;
text-align: center;
line-height: 74rpx;
@ -1513,6 +1660,22 @@
color: #fff;
}
.border{
position: absolute;
top: 0;
left: -28rpx;
width: 100vw;
height: 100%;
border-radius: 40rpx 40rpx 0 0;
box-shadow: 0px -5px 5px -2px rgba(0, 0, 0, 0.2); /* 在上边框添加阴影 */
}
.btn{
width: 694rpx;
font-weight: bold;
font-size: 34rpx;
}
}
.settledSuccessMain {

1622
pages/store/settled/unit.vue Normal file

File diff suppressed because it is too large Load Diff

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