Compare commits

...

394 Commits
master ... wwz

Author SHA1 Message Date
wwz 2ecb39afb1 更新1.2.2 2025-01-14 16:27:55 +08:00
wwz 93bf0f35ff 202 :'kefu' 4
206:’kefuPhone‘ 链接
2025-01-14 13:26:46 +08:00
YeMingfei666 08a4983e92 邀请奖励文字修改 2025-01-10 18:38:09 +08:00
YeMingfei666 d8ef1bdb40 Merge branch 'test' of https://e.coding.net/g-cphe0354/duanju/video_app into ymf 2025-01-10 18:32:54 +08:00
YeMingfei666 948ea77ee6 邀请页面更新,抽奖优化,提现列表文字优化 2025-01-10 18:32:44 +08:00
YeMingfei666 ea57703e35 Merge branch 'ymf' of https://e.coding.net/g-cphe0354/duanju/video_app into test 2025-01-09 18:19:12 +08:00
YeMingfei666 b8c47e899d 修复缓存清除问题 2025-01-09 18:18:57 +08:00
GaoHao 12e98d2829 广告优化 2025-01-09 18:16:53 +08:00
GaoHao 13c270f4e6 广告优化 2025-01-09 18:11:24 +08:00
GaoHao 5f1d2db2bd 广告优化 2025-01-09 18:08:26 +08:00
GaoHao 92e53ae8b2 公告优化更新 2025-01-09 17:21:54 +08:00
GaoHao f53512d2a3 公告优化更新 2025-01-09 17:07:40 +08:00
GaoHao 1740c48292 Merge branch 'test' of https://e.coding.net/g-cphe0354/duanju/video_app into gaohao 2025-01-09 17:03:36 +08:00
GaoHao 6f70c40f84 公告优化 2025-01-09 17:03:25 +08:00
YeMingfei666 b1c9c15ea1 增加应用初次启动时清除全部缓存 2025-01-09 16:56:17 +08:00
GaoHao 9f193da9b6 修改最低版本 2025-01-09 16:49:02 +08:00
GaoHao 54efe2291b Merge branch 'test' of https://e.coding.net/g-cphe0354/duanju/video_app into gaohao 2025-01-09 16:48:06 +08:00
GaoHao 91c5592191 公告更新 2025-01-09 16:47:09 +08:00
YeMingfei666 18aedc57c2 去除推荐视频列表传参token 2025-01-09 16:46:46 +08:00
YeMingfei666 d7a604f7ff 修复重复插入提现数据问题 2025-01-09 16:45:13 +08:00
YeMingfei666 bc88a048aa 修复未登录时短剧详情接口报错引起的返回和跳转至登录页冲突循环问题 2025-01-09 11:19:08 +08:00
YeMingfei666 cc3bc45da5 Merge branch 'test' of https://e.coding.net/g-cphe0354/duanju/video_app into ymf 2025-01-09 11:06:38 +08:00
YeMingfei666 ccb2fc8375 去掉推荐视频接口部分无用参数 2025-01-09 11:06:27 +08:00
GaoHao d4237d4365 抽奖优化更新 2025-01-09 10:50:42 +08:00
GaoHao 339ddfc493 提现优化更新 2025-01-09 10:10:37 +08:00
GaoHao 58d7250464 实名更新 2025-01-08 22:24:32 +08:00
GaoHao 54d2f057c2 实名认证更新 2025-01-08 21:23:19 +08:00
GaoHao db3eed0163 Merge branch 'gaohao' of https://e.coding.net/g-cphe0354/duanju/video_app into test 2025-01-08 19:16:27 +08:00
GaoHao a69313043b 增加实名认证 2025-01-08 19:16:08 +08:00
YeMingfei666 e5bf7116ea 增加登录成功时清除全部缓存,重新请求配置文件 2025-01-07 17:18:44 +08:00
YeMingfei666 c734bdffdd Merge branch 'test' of https://e.coding.net/g-cphe0354/duanju/video_app into ymf 2025-01-06 22:43:05 +08:00
YeMingfei666 eea419f19e 配置更新 2025-01-06 22:40:52 +08:00
YeMingfei666 ba74f1009d 修复跳转到历史记录传承null字符串引起的跳转失败问题 2025-01-06 22:40:23 +08:00
YeMingfei666 ff6a2c7f0b 修复我的喜欢跳转播放未跳转到喜欢的集数 2025-01-06 22:02:22 +08:00
YeMingfei666 aa2e7d1ca4 修复追剧传参问题 2025-01-06 21:45:09 +08:00
YeMingfei666 e425f9dafc 修复本地视频无法播放问题 2025-01-06 20:01:42 +08:00
YeMingfei666 351a6fa5f7 修复本地视频无法播放问题 2025-01-06 20:01:34 +08:00
YeMingfei666 72562093fa 视频详情接口修改,部分代码优化增加节流 2025-01-06 20:01:03 +08:00
YeMingfei666 4ea69ba20b 短剧列表接口修改 2025-01-06 20:00:36 +08:00
YeMingfei666 409f7c5aef 修复缓存报错问题 2025-01-06 16:09:50 +08:00
GaoHao c463954279 全部提现优化 2025-01-06 14:23:52 +08:00
GaoHao b2431878bc 全部提现优化 2025-01-06 14:16:45 +08:00
GaoHao c2f881026d 修改无法生成订单问题 2025-01-06 11:15:07 +08:00
GYJ f98abcc079 bug 回滚2 2025-01-05 11:43:21 +08:00
GYJ 63a432c07c bug 回滚 2025-01-05 11:25:49 +08:00
YeMingfei666 9e3860fdb1 Merge branch 'test' of https://e.coding.net/g-cphe0354/duanju/video_app into test 2025-01-04 16:42:36 +08:00
YeMingfei666 5066b48d0f 增加服务器更新维护页面 2025-01-04 16:42:33 +08:00
GaoHao 8180b1d5ca Merge branch 'gaohao' of https://e.coding.net/g-cphe0354/duanju/video_app into test 2025-01-04 15:37:30 +08:00
GaoHao 40ffab1479 删除部分没引入图片资源 2025-01-04 15:36:47 +08:00
YeMingfei666 ef019ba0d7 修改判断配置是否为空判断 2025-01-04 11:42:05 +08:00
YeMingfei666 953b0d05ce 判断缓存是否为空优化改为方法 2025-01-04 11:41:06 +08:00
YeMingfei666 b8f0c0f5e9 修改配置请求全部放到一个接口里 2025-01-04 11:28:21 +08:00
YeMingfei666 38af72524b Merge branch 'test' of https://e.coding.net/g-cphe0354/duanju/video_app into test 2025-01-04 11:27:43 +08:00
YeMingfei666 de48d7f933 缓存封装增加是否为空属性 2025-01-04 11:27:02 +08:00
GaoHao abb08018d3 合作中心喜欢数量字段修改 2025-01-04 10:06:43 +08:00
GaoHao 4819da8b9d 修改我的页面喜欢以及追剧数量接口 2025-01-04 10:03:50 +08:00
YeMingfei666 ffdcec41c8 Merge branch 'test' of https://e.coding.net/g-cphe0354/duanju/video_app into ymf 2025-01-03 22:30:44 +08:00
YeMingfei666 6d5b9497a1 去除个人中心无用积分请求 2025-01-03 22:30:05 +08:00
YeMingfei666 773a888458 去除旧的无用签到请求 2025-01-03 22:29:34 +08:00
YeMingfei666 c53fb5502d 增加看剧详情页面,getDataList方法里如果未找到对应courseDetailsId,将current值改为0,否则会导致选集无法弹窗,弹窗后点击相对应集数也无反应 2025-01-03 22:29:02 +08:00
wwz 7396f577e1 Merge branch 'test' of https://e.coding.net/g-cphe0354/duanju/video_app into test 2025-01-03 21:57:04 +08:00
wwz cf0177da4b 1 2025-01-03 21:57:01 +08:00
YeMingfei666 5662fd6e4f 修复兑换记录不显示问题 2025-01-03 21:52:27 +08:00
YeMingfei666 688f814c2e 修复奖品列表触底加载 2025-01-03 21:27:25 +08:00
YeMingfei666 95be7e966f Merge branch 'test' of https://e.coding.net/g-cphe0354/duanju/video_app into test 2025-01-03 21:26:52 +08:00
YeMingfei666 2077b19cc3 兑换增加兑换成功弹窗 2025-01-03 21:25:24 +08:00
wwz cc15878f9c Merge branch 'test' of https://e.coding.net/g-cphe0354/duanju/video_app into test 2025-01-03 21:15:10 +08:00
wwz 5d3cdf848a 个人中心 2025-01-03 21:15:07 +08:00
YeMingfei666 c3d700d398 修复数据重复问题 2025-01-03 19:14:27 +08:00
YeMingfei666 cfc982e79c 修改抽奖动画时长 2025-01-03 19:03:41 +08:00
GaoHao 1d26fbb535 代码优化 2025-01-03 18:43:25 +08:00
GaoHao 4145bb9e5a 首页公告状态修改 2025-01-03 15:05:37 +08:00
GaoHao c8fd4dfa2a Merge branch 'gaohao' of https://e.coding.net/g-cphe0354/duanju/video_app into test 2025-01-03 14:22:35 +08:00
GaoHao 6cdb3c5840 提现增加观看广告 2025-01-03 14:22:14 +08:00
GaoHao 3695041951 Merge branch 'gaohao' of https://e.coding.net/g-cphe0354/duanju/video_app into test 2025-01-02 17:42:17 +08:00
GaoHao 39a6a720e7 增加公告 2025-01-02 17:41:29 +08:00
GaoHao b0b8406104 Merge branch 'gaohao' of https://e.coding.net/g-cphe0354/duanju/video_app into test 2025-01-02 16:56:29 +08:00
GaoHao 02b71cbf23 增加实名 2025-01-02 16:56:09 +08:00
YeMingfei666 e3fc3fa6c5 修改分享好友奖励文字描述图片 2025-01-02 09:37:23 +08:00
YeMingfei666 09c465c74e 缓存代码优化 2024-12-31 16:37:15 +08:00
YeMingfei666 3698ff6379 修复首页缓存下滑加载问题 2024-12-31 16:25:19 +08:00
GaoHao cfe567a206 增加app下载,支付失败优化 2024-12-31 16:06:10 +08:00
GaoHao 246d48a6e4 任务日期优化 2024-12-31 11:37:08 +08:00
GaoHao 731ba1a434 推荐视频优化 2024-12-31 10:02:39 +08:00
GaoHao 1c54f71329 Merge branch 'gaohao' of https://e.coding.net/g-cphe0354/duanju/video_app into test 2024-12-31 09:58:03 +08:00
GaoHao d1bca91769 任务缓存优化 2024-12-31 09:57:41 +08:00
YeMingfei666 05ad8ffaae Merge branch 'test' of https://e.coding.net/g-cphe0354/duanju/video_app into ymf 2024-12-31 09:56:43 +08:00
YeMingfei666 d5a096038d 用户中心修复下拉刷新后加载图标未隐藏 2024-12-31 09:56:02 +08:00
GaoHao 6710481852 推荐视频增加节流 2024-12-31 09:54:30 +08:00
GaoHao db9003585a Merge branch 'gaohao' of https://e.coding.net/g-cphe0354/duanju/video_app into test 2024-12-30 22:27:37 +08:00
GaoHao 20029e7aaf 任务优化 2024-12-30 22:27:21 +08:00
YeMingfei666 802f40aa26 抽奖页面样式调整 2024-12-30 22:04:18 +08:00
YeMingfei666 8d650e9959 Merge branch 'test' of https://e.coding.net/g-cphe0354/duanju/video_app into ymf 2024-12-30 21:52:09 +08:00
YeMingfei666 53346e3183 增加处理,登录后获取初始化配置项 2024-12-30 21:51:56 +08:00
GaoHao af0a7e81ea 删除金币、单集判断条件 2024-12-30 21:48:49 +08:00
YeMingfei666 34a175e3e6 修复配置缓存数据存储错误问题 2024-12-30 21:47:11 +08:00
GaoHao e568b853a6 Merge branch 'gaohao' of https://e.coding.net/g-cphe0354/duanju/video_app into test 2024-12-30 21:46:07 +08:00
GaoHao 08911e544e 删除金币、单集判断条件 2024-12-30 21:45:48 +08:00
YeMingfei666 f01510c172 取消注销按钮 2024-12-30 21:34:43 +08:00
YeMingfei666 50379d7b1f 追剧增加下拉刷新 2024-12-30 21:22:58 +08:00
YeMingfei666 03afcf6b0d 首页下拉刷新增加请求 2024-12-30 21:10:24 +08:00
YeMingfei666 860b14fdf5 增加h5支付跳转时清除任务和用户缓存 2024-12-30 19:49:47 +08:00
GaoHao c1a8de99a2 Merge branch 'gaohao' of https://e.coding.net/g-cphe0354/duanju/video_app into test 2024-12-30 19:31:42 +08:00
GaoHao eb60dbbab3 Merge branch 'test' of https://e.coding.net/g-cphe0354/duanju/video_app into gaohao 2024-12-30 19:30:25 +08:00
YeMingfei666 94a75cd374 增加修改支付宝账号后清除任务缓存 2024-12-30 19:29:58 +08:00
GaoHao ca19590876 测试环境优化 2024-12-30 19:29:22 +08:00
YeMingfei666 1611c92782 修复上传头像失败问题 2024-12-30 19:18:15 +08:00
YeMingfei666 4bedd70016 首页增加缓存 2024-12-30 18:29:45 +08:00
YeMingfei666 78f071dfda 增加部分公共方法 2024-12-30 17:56:01 +08:00
YeMingfei666 6d450987ba 设置页面增加清除缓存(隐藏) 2024-12-30 17:55:43 +08:00
YeMingfei666 e6cc9605a6 任务增加缓存 2024-12-30 17:55:20 +08:00
YeMingfei666 0da8cd5f3b 追剧缓存 2024-12-30 17:38:51 +08:00
YeMingfei666 f237774e0e 缓存清除全部方法优化 2024-12-30 17:38:23 +08:00
YeMingfei666 d12f35e078 对部分影响追剧页面展示的请求进行额外处理 2024-12-30 17:37:16 +08:00
YeMingfei666 4a7938a2c5 修复app运行page.json文件报错问题 2024-12-30 17:36:19 +08:00
YeMingfei666 643b9f3e26 去除请求里的双// 2024-12-30 16:45:19 +08:00
YeMingfei666 6fb98974d6 增加数据缓存,去除部分请求的重复/ 2024-12-30 16:31:24 +08:00
YeMingfei666 cbcd1c857c 版本升级 2024-12-28 19:07:11 +08:00
YeMingfei666 47bd309729 邀请好友列表增加触底加载 2024-12-28 18:59:20 +08:00
GaoHao 0801eed870 提现页面规则默认打开 2024-12-28 18:12:27 +08:00
GaoHao 820fb9aea6 代码优化 2024-12-28 17:34:13 +08:00
GaoHao f3615bfbb8 升级修改只允许android升级 2024-12-27 17:58:44 +08:00
GaoHao da80801e8c 任务列表广告加载优化 2024-12-27 16:09:15 +08:00
GaoHao 36d8f2fd39 权益列表优化 2024-12-27 15:47:52 +08:00
GaoHao 9322432b5e 任务页面优化 2024-12-27 14:23:02 +08:00
GaoHao 6f3f205a28 解锁后播放失败优化 2024-12-27 10:01:05 +08:00
GaoHao 54910d3330 解锁视频增加加载 2024-12-27 09:00:07 +08:00
GaoHao d5059305e7 解锁视频优化 2024-12-26 20:35:11 +08:00
GaoHao a413d150ae Merge branch 'gaohao' of https://e.coding.net/g-cphe0354/duanju/video_app into test 2024-12-26 19:32:17 +08:00
GaoHao e01198b1dd 视频列表获取优化 2024-12-26 19:32:01 +08:00
GaoHao 0362307423 增加默认最低回调金额 2024-12-26 18:28:47 +08:00
GaoHao 3cd1b88ff5 抽奖增加onshow 2024-12-26 17:40:38 +08:00
GaoHao ad94cbf772 Merge branch 'gaohao' of https://e.coding.net/g-cphe0354/duanju/video_app into test 2024-12-26 16:55:43 +08:00
GaoHao 4995135cda 金币解锁优化 2024-12-26 16:55:22 +08:00
YeMingfei666 82ebef76b1 恢复h5全剧购买和10集购买代码 2024-12-26 16:40:40 +08:00
YeMingfei666 59d18fb606 增加配置项打包去除全部打印 2024-12-26 16:11:45 +08:00
YeMingfei666 66a1b54044 修复自动领取抽奖传参丢失问题 2024-12-26 16:11:16 +08:00
YeMingfei666 1a5e4de454 修改规则弹窗确认按钮文字为知道了 2024-12-26 15:51:34 +08:00
YeMingfei666 054d24bf1f 修改申请提现样式 2024-12-26 15:49:30 +08:00
YeMingfei666 24cef44b8a Merge branch 'test' of https://e.coding.net/g-cphe0354/duanju/video_app into test 2024-12-26 15:46:36 +08:00
YeMingfei666 77c4f0ad92 申请提现增加规则说明 2024-12-26 15:46:26 +08:00
YeMingfei666 756a7e4267 申请提现增加规则说明 2024-12-26 15:45:10 +08:00
GaoHao 68b54a75f7 Merge branch 'test' of https://e.coding.net/g-cphe0354/duanju/video_app into gaohao 2024-12-26 15:33:00 +08:00
GaoHao ae7741ad5a 隐藏个人中心返回箭头 2024-12-26 15:32:48 +08:00
GaoHao b6a04b2f7c 代码优化 2024-12-26 15:02:08 +08:00
YeMingfei666 7a688e13e8 去除下载页false字符串 2024-12-26 14:53:09 +08:00
YeMingfei666 989a527081 代码优化 2024-12-26 14:41:53 +08:00
YeMingfei666 0545f6a3e3 增加公共方法 2024-12-26 14:41:18 +08:00
YeMingfei666 52edbfc424 修复h5没有抽奖次数跳抽奖问题 2024-12-26 14:40:42 +08:00
YeMingfei666 27a7af2005 修改判断当h5安装跳转下载清除token 2024-12-26 14:29:29 +08:00
YeMingfei666 8337bd0352 修改判断安卓方法 2024-12-26 14:28:13 +08:00
YeMingfei666 8c8b8b1b11 修改任务时间展示 2024-12-26 14:25:59 +08:00
YeMingfei666 0b5244171f 版本升级 2024-12-26 14:22:38 +08:00
YeMingfei666 15e22f8b5a Merge branch 'test' of https://e.coding.net/g-cphe0354/duanju/video_app into ymf 2024-12-26 14:09:30 +08:00
YeMingfei666 423d5fb47f 增加判断如果是安卓h5且登录状态下强行跳转至下载app页面 2024-12-26 14:08:45 +08:00
YeMingfei666 e51a518574 修改判断安卓平台方法 2024-12-26 14:08:01 +08:00
GaoHao 440811c3fa 绑定支付宝,视频解锁生成订单增加限制 2024-12-26 14:07:51 +08:00
YeMingfei666 dd96c6867f 修改领取抽奖为弹窗打开时就领取(延迟1秒) 2024-12-26 14:07:16 +08:00
GaoHao 646379471f 广告观看限制 2024-12-25 18:21:34 +08:00
GaoHao 2d1ccf6793 Merge branch 'gaohao' of https://e.coding.net/g-cphe0354/duanju/video_app into test 2024-12-25 17:59:15 +08:00
GaoHao 5b3eb4f602 观看视频限制 2024-12-25 17:58:51 +08:00
GaoHao eb985fc8f1 Merge branch 'gaohao' of https://e.coding.net/g-cphe0354/duanju/video_app into test 2024-12-25 17:10:57 +08:00
GaoHao 28bab311d3 任务修改,会员权益修改 2024-12-25 17:10:05 +08:00
GYJ 2346929566 h5显示首页红包 2024-12-25 15:24:31 +08:00
GaoHao 3960ff7586 升级版本 2024-12-24 18:33:24 +08:00
GaoHao 32725014a2 暂未开启页面调整 2024-12-24 18:13:41 +08:00
GaoHao 1fee3f3d0f 增加暂未开启功能展示 2024-12-24 18:10:02 +08:00
GaoHao fef62822c3 广告加载失败隐藏,兑换按钮条件修改 2024-12-24 17:57:49 +08:00
GaoHao 70594ec8cb Merge branch 'gaohao' of https://e.coding.net/g-cphe0354/duanju/video_app into test 2024-12-24 17:47:16 +08:00
GaoHao 0e52db9042 抽奖兑换修改 2024-12-24 17:44:27 +08:00
GaoHao 36dc91df60 抽奖修改 2024-12-24 17:38:44 +08:00
YeMingfei666 0f76db88ae 修复金币解锁未自动播放问题 2024-12-24 17:18:23 +08:00
YeMingfei666 06d0ff416d 修复抽奖物品展示问题 2024-12-24 16:52:22 +08:00
YeMingfei666 b170325a4a 修复抽奖物品展示问题 2024-12-24 16:52:13 +08:00
YeMingfei666 08c1deb4dc Merge branch 'test' of https://e.coding.net/g-cphe0354/duanju/video_app into ymf 2024-12-24 16:13:23 +08:00
GaoHao 9326ee6eae Merge branch 'gaohao' of https://e.coding.net/g-cphe0354/duanju/video_app into test 2024-12-24 16:03:03 +08:00
GaoHao ab4eeb1b8b 获取免费分钟播放视频修改 2024-12-24 16:00:33 +08:00
wwz db54cf81f7 1 2024-12-24 15:54:45 +08:00
GaoHao cbe5fca1bf Merge branch 'gaohao' of https://e.coding.net/g-cphe0354/duanju/video_app into test 2024-12-24 14:45:59 +08:00
GaoHao d312b614d7 广告修改参数 2024-12-24 14:45:32 +08:00
YeMingfei666 43722d9b00 Merge branch 'test' of https://e.coding.net/g-cphe0354/duanju/video_app into ymf 2024-12-24 14:36:12 +08:00
YeMingfei666 252fc8c425 增加全剧解锁和10集解锁 2024-12-24 14:35:40 +08:00
GaoHao c11ccf9e6b 激励视频处理 2024-12-24 14:09:37 +08:00
GaoHao a787c014cb Merge branch 'gaohao' of https://e.coding.net/g-cphe0354/duanju/video_app into test 2024-12-24 14:01:03 +08:00
GaoHao 78436969a6 任务增加看视频获取免费时长 2024-12-24 13:59:32 +08:00
GYJ 5390308a9f 修改客服不能跳转的问题 2024-12-24 11:30:43 +08:00
GaoHao 8ae7639d1c Merge branch 'test' of https://e.coding.net/g-cphe0354/duanju/video_app into gaohao 2024-12-24 11:20:22 +08:00
GaoHao 63af9f39c7 更新任务 2024-12-24 11:19:18 +08:00
wwz 89770feb70 请求广告播完掉接口 2024-12-24 11:17:39 +08:00
wwz 0661a4d616 广告 2024-12-24 11:15:08 +08:00
wwz 7a3d2d3477 1 2024-12-24 10:59:23 +08:00
YeMingfei666 fa72a47277 增加10集和全剧解锁 2024-12-24 10:26:01 +08:00
GaoHao 33e462c64f 增加ios判断条件 2024-12-24 09:53:00 +08:00
GaoHao 2ff5ebfd71 视频相关修改 2024-12-23 16:54:38 +08:00
GaoHao 4b592b14ab 任务字体大小调整 2024-12-23 16:20:29 +08:00
wwz 5280de71c0 激励视频 2024-12-23 15:52:12 +08:00
GaoHao 9bc7e710cc Merge branch 'gaohao' of https://e.coding.net/g-cphe0354/duanju/video_app into test 2024-12-23 13:48:10 +08:00
GaoHao 415269084f 任务页面未登录情况调整,隐藏签到按钮 2024-12-23 13:47:54 +08:00
GaoHao 5fe52bb52a Merge branch 'gaohao' of https://e.coding.net/g-cphe0354/duanju/video_app into test 2024-12-23 13:25:27 +08:00
GaoHao 35854982fb 我的页面增加判断是否在ios 2024-12-23 13:24:57 +08:00
YeMingfei666 35af3b0652 修改安装打包配置文件page.json 2024-12-23 11:18:35 +08:00
YeMingfei666 b35b2ed530 增加ios打包page.json文件 2024-12-23 11:08:44 +08:00
YeMingfei666 e598f50faf 提交ios打包的page.json文件 2024-12-23 11:06:37 +08:00
GaoHao c719ce1f27 抽奖列表,兑换列表调试 2024-12-23 10:32:42 +08:00
GaoHao 7c339bc617 抽象更新 2024-12-23 09:41:13 +08:00
GaoHao a67f470f5c Merge branch 'test' of https://e.coding.net/g-cphe0354/duanju/video_app into gaohao 2024-12-21 18:26:46 +08:00
GaoHao 4c8c89a844 任务修改 2024-12-21 18:26:35 +08:00
YeMingfei666 24b7eae649 Merge branch 'test' of https://e.coding.net/g-cphe0354/duanju/video_app into ymf 2024-12-21 18:25:27 +08:00
YeMingfei666 9600fcf2a9 修复抽奖抽到物品展示问题 2024-12-21 18:25:03 +08:00
GaoHao cfde959d35 Merge branch 'test' of https://e.coding.net/g-cphe0354/duanju/video_app into gaohao 2024-12-21 10:54:51 +08:00
GaoHao defeede5d7 任务相关修改 2024-12-21 10:54:39 +08:00
GYJ f87a4b285e 混淆,改动代码 2024-12-21 10:38:04 +08:00
YeMingfei666 a7f6209b08 隐藏other入口 2024-12-21 09:17:25 +08:00
YeMingfei666 52506bb2af 转盘抽奖增加类型 2024-12-20 18:17:28 +08:00
YeMingfei666 c9826276e9 Merge branch 'test' of https://e.coding.net/g-cphe0354/duanju/video_app into ymf 2024-12-20 18:03:20 +08:00
YeMingfei666 b2fd3ba347 增加other分包页面
我的页面里增加跳转other分包跳转(仅在ios不是浏览器审核时展示)
2024-12-20 18:02:58 +08:00
GaoHao 896cf17599 Merge branch 'gaohao' of https://e.coding.net/g-cphe0354/duanju/video_app into test 2024-12-20 17:10:40 +08:00
GaoHao 4d52a796da 结构调整、任务中心调整 2024-12-20 17:10:21 +08:00
YeMingfei666 908205200b 增加新的抽奖页面 2024-12-20 09:46:09 +08:00
YeMingfei666 168665eebc 代码合并 2024-12-19 18:19:37 +08:00
YeMingfei666 3535322923 pages下增加开屏页未启用,增加分包other以及静态页面 2024-12-19 18:18:24 +08:00
GaoHao 86af5ab3a9 任务已签到事件取消 2024-12-19 16:46:20 +08:00
GaoHao 4232765731 任务修改 2024-12-19 16:42:55 +08:00
GYJ 206546aed8 iOS 适配 2024-12-19 16:22:50 +08:00
YeMingfei666 a147eaab4f Merge branch 'ymf' of https://e.coding.net/g-cphe0354/duanju/video_app into test 2024-12-19 15:11:25 +08:00
GaoHao 8488799080 Merge branch 'test' of https://e.coding.net/g-cphe0354/duanju/video_app into gaohao 2024-12-19 14:52:58 +08:00
GaoHao a0e49f9830 H5中0元支付弹窗修改 2024-12-19 14:52:19 +08:00
GYJ 444b897528 iOS 跳转页面配置
适配 iOS 的视频播放大小
2024-12-19 11:39:43 +08:00
GaoHao 8e7d038dba 增加签到,修改0元支付问题 2024-12-19 10:00:04 +08:00
YeMingfei666 a30d2ed9fa 部分配置更新 2024-12-18 17:42:33 +08:00
YeMingfei666 dc67568b6b 提现限制最多两位小数 2024-12-18 17:41:38 +08:00
GaoHao c401d2695d Merge branch 'test' of https://e.coding.net/g-cphe0354/duanju/video_app into gaohao 2024-12-18 17:34:53 +08:00
GaoHao 71f0e2215c 签到修改 2024-12-18 17:33:49 +08:00
YeMingfei666 66e9d9a460 更新红包图片 2024-12-18 14:01:57 +08:00
YeMingfei666 5c067b3ef7 修改红包图片 2024-12-18 13:52:07 +08:00
YeMingfei666 3de0070cb6 我的团队接口增加参数 2024-12-18 13:24:03 +08:00
YeMingfei666 f9f33f7086 修改转盘为红包 2024-12-18 09:48:15 +08:00
YeMingfei666 50fd6369a9 调整追剧页面样式 2024-12-18 09:47:56 +08:00
YeMingfei666 ad01ea7faf 增加红包gif图 2024-12-18 09:22:53 +08:00
YeMingfei666 2cd3dbf0ac 登录成功增加处理,路由栈小于等于1时跳转到首页,为2时返回一层 2024-12-18 09:22:34 +08:00
YeMingfei666 f4796c76f0 修改追剧页面展示形式和数量 2024-12-18 09:18:49 +08:00
YeMingfei666 a5554ae3ea 版本号升级为7 2024-12-18 09:17:54 +08:00
YeMingfei666 6376a92caf 去除抽奖原生弹框 2024-12-18 09:17:28 +08:00
YeMingfei666 de3cf30105 修复Safari 浏览器没有最下面的工具栏跳转到视频详情时引起的选集被遮挡以及购买支付被遮挡问题
解决方案:跳转视频前先让页面滚动然后再跳转,让浏览器最下方工具栏出现再跳转
2024-12-18 09:16:34 +08:00
YeMingfei666 0636654dc2 修改视频播放形式 2024-12-18 09:13:31 +08:00
YeMingfei666 a291c2f629 修改抽奖页面样式 2024-12-18 09:13:02 +08:00
YeMingfei666 e4f6a3b14a 增加部分方法 2024-12-17 18:49:54 +08:00
YeMingfei666 a03f005009 当用户信息rate>0时展示团队 2024-12-17 18:49:41 +08:00
YeMingfei666 dee181749b 体现明细失败判断修改 2024-12-17 18:49:12 +08:00
YeMingfei666 9ac5b0c512 绑定支付宝增加修改上限提醒 2024-12-17 18:48:28 +08:00
YeMingfei666 57cfb4babd 修复ios浏览器刷太快时支付弹窗部分被遮挡 2024-12-17 18:47:36 +08:00
YeMingfei666 b5b403c7b1 处理h5报错问题 2024-12-17 11:31:39 +08:00
YeMingfei666 43c79cc554 修改协议,增加拒绝按钮,app上拒绝退出app,h5返回。 登录后不展示同意拒绝 2024-12-17 11:30:58 +08:00
YeMingfei666 f7650fb95f 红包明细提取到申请提现页面 2024-12-17 11:21:53 +08:00
YeMingfei666 3738cd5344 部分配置文件修改 2024-12-16 18:08:11 +08:00
YeMingfei666 0c0a30e85a 修改h5为有抽奖机会就跳转 2024-12-16 18:05:58 +08:00
YeMingfei666 cfaadad802 Merge branch 'test' of https://e.coding.net/g-cphe0354/duanju/video_app into ymf 2024-12-16 16:52:28 +08:00
YeMingfei666 57fbc3c9b9 修改抽奖未绑定支付宝跳转 2024-12-16 16:52:06 +08:00
YeMingfei666 497e9b9311 修改抽奖未绑定支付宝跳转 2024-12-16 16:52:06 +08:00
YeMingfei666 210737d357 修改协议文字 2024-12-16 16:52:06 +08:00
YeMingfei666 56c84e1b18 取消首页搜索 2024-12-16 16:52:06 +08:00
GaoHao 2d61ed447f 图片保存修改 2024-12-16 16:50:15 +08:00
YeMingfei666 88d32d8789 修改抽奖未绑定支付宝跳转 2024-12-16 16:50:11 +08:00
YeMingfei666 efd651aac7 修改抽奖未绑定支付宝跳转 2024-12-16 16:50:01 +08:00
YeMingfei666 087bb2b3e2 修改协议文字 2024-12-16 16:49:36 +08:00
YeMingfei666 66f7b6f57a 取消首页搜索 2024-12-16 13:21:40 +08:00
YeMingfei666 aa7f7f3392 修复首页报错问题 2024-12-16 10:19:05 +08:00
YeMingfei666 b4542559ae 协议增加我已知晓 2024-12-16 10:18:17 +08:00
YeMingfei666 5372daf2a7 Merge branch 'test' of https://e.coding.net/g-cphe0354/duanju/video_app into test 2024-12-16 09:14:07 +08:00
YeMingfei666 3c209118a6 修改版本1.0.6 2024-12-16 09:14:04 +08:00
GYJ e7afd83085 注册页添加登录按钮 2024-12-15 18:21:24 +08:00
GYJ fa60aeec42 首页 undefined 2024-12-14 17:19:48 +08:00
GYJ 31601ff334 返回键 显示 隐藏 2024-12-14 17:08:05 +08:00
GYJ cfcc0c15ec 查询流水进行区分 2024-12-14 14:40:56 +08:00
GYJ e79e7f5874 隐藏我的团队 2024-12-14 11:18:11 +08:00
GYJ 421a3fe4f1 处理h5无痕浏览问题 2024-12-14 11:09:58 +08:00
巩奕杰 ec7c3742bf Accept Merge Request #2: (ymf -> test)
Merge Request: h5 支付合并

Created By: @巩奕杰
Accepted By: @巩奕杰
URL: https://g-cphe0354.coding.net/p/duanju/d/video_app/git/merge/2?initial=true
2024-12-14 10:34:50 +08:00
GYJ 30ba7cde34 修改同意协议位置 2024-12-14 10:34:05 +08:00
YeMingfei666 4b9d78ec5a 修改iOS H5支付 2024-12-14 10:30:16 +08:00
GYJ 7b6044f4eb 调整抽奖页布局 2024-12-14 10:15:40 +08:00
GYJ 119a3d3c07 隐藏微信注册页面浏览器打开引导提示 2024-12-14 09:55:22 +08:00
巩奕杰 3b6d560539 Accept Merge Request #1: (ymf -> test)
Merge Request: 合并代码

Created By: @巩奕杰
Accepted By: @巩奕杰
URL: https://g-cphe0354.coding.net/p/duanju/d/video_app/git/merge/1?initial=true
2024-12-14 09:30:43 +08:00
YeMingfei666 e822e614b8 Merge branch 'test' of https://e.coding.net/g-cphe0354/duanju/video_app into ymf 2024-12-13 16:46:25 +08:00
YeMingfei666 b344413b2a 修改支付跳转修改打包版本 2024-12-13 16:46:16 +08:00
GaoHao 073f8a0797 增加了引导弹窗 2024-12-13 16:03:33 +08:00
YeMingfei666 f0edf9f419 修改购买剧时h5跳转支付方式
增加ios 自带浏览器快捷方式图标
2024-12-13 15:27:02 +08:00
YeMingfei666 5ad0d54662 Merge branch 'test' of https://e.coding.net/g-cphe0354/duanju/video_app into ymf 2024-12-13 14:19:57 +08:00
YeMingfei666 3ff35d7eb6 修改首页跳转 2024-12-13 14:19:48 +08:00
GaoHao 9083c9a454 支付拉起调整 2024-12-13 14:06:56 +08:00
GaoHao 3d7d5178e6 Merge branch 'test' of https://e.coding.net/g-cphe0354/duanju/video_app into gaohao 2024-12-13 11:40:46 +08:00
GaoHao f3f9af86f9 保存海报修改 2024-12-13 11:40:29 +08:00
YeMingfei666 d5aac20fd0 修改版本1.0.4 2024-12-13 09:48:42 +08:00
YeMingfei666 44a9d8669e 增加:
抽奖次数不足时不跳转
增加配速播放
2024-12-12 18:20:35 +08:00
YeMingfei666 fbdeaee553 修改邀请页面 2024-12-12 16:51:17 +08:00
YeMingfei666 b5a610660e 猜测未定义位置处理 2024-12-12 16:50:55 +08:00
YeMingfei666 e39688ab9f 修改金豆为金币 2024-12-12 16:18:41 +08:00
YeMingfei666 679df05a66 修改app保存海报按钮 2024-12-12 16:12:35 +08:00
YeMingfei666 d7650332a2 修改版本号 2024-12-12 13:55:32 +08:00
YeMingfei666 0a27d79563 修改更新 2024-12-12 13:55:12 +08:00
YeMingfei666 6fe850ed20 修改支付跳转判断 2024-12-12 13:54:54 +08:00
YeMingfei666 2c14e6c588 Merge branch 'test' of https://e.coding.net/g-cphe0354/duanju/video_app into ymf 2024-12-12 11:08:24 +08:00
YeMingfei666 6b40cf8089 增加新的支付跳转页面 2024-12-12 11:06:24 +08:00
YeMingfei666 3edfedb4ab 修改支付跳转页面 2024-12-12 11:05:04 +08:00
GaoHao 8ba1fd7f96 任务调整 2024-12-12 10:34:54 +08:00
GaoHao 9f4e438a31 支付webview修改 2024-12-11 18:08:56 +08:00
GaoHao 55fa85a8a3 Merge branch 'gaohao' of https://e.coding.net/g-cphe0354/duanju/video_app into test 2024-12-11 17:17:42 +08:00
GaoHao c531d15343 下载版本增加遮罩 2024-12-11 17:17:23 +08:00
GaoHao f48de14b28 领取完成获取列表增加延迟 2024-12-11 16:47:07 +08:00
GaoHao 3be46138ae 任务中心接口修改 2024-12-11 16:45:43 +08:00
GaoHao 0699489b2d 版本号获取修改 2024-12-11 16:38:29 +08:00
GaoHao a87c94fdba Merge branch 'gaohao' of https://e.coding.net/g-cphe0354/duanju/video_app into test 2024-12-11 16:33:19 +08:00
GaoHao 21cf4b9524 增加版本号显示 2024-12-11 16:32:58 +08:00
YeMingfei666 c83901fb46 Merge branch 'ymf' of https://e.coding.net/g-cphe0354/duanju/video_app into test 2024-12-11 16:30:26 +08:00
YeMingfei666 fa5f11cac3 修改邀请页面 2024-12-11 16:27:30 +08:00
GaoHao ae276c6a50 金币明细、红包明细区分 2024-12-11 16:22:14 +08:00
YeMingfei666 9b565065f9 增加空组件 2024-12-11 14:45:21 +08:00
YeMingfei666 264739b6e7 修改分享页面顶部导航栏 2024-12-11 14:04:01 +08:00
YeMingfei666 9f6eb2eb09 修改分享好友页面,增加海报保存按钮 2024-12-11 14:02:31 +08:00
GaoHao ca7c293d0e 任务中心修改 2024-12-11 11:02:08 +08:00
YeMingfei666 4964043cda Merge branch 'test' of https://e.coding.net/g-cphe0354/duanju/video_app into ymf 2024-12-11 09:38:06 +08:00
YeMingfei666 61a878b326 增加部分公共函数 2024-12-11 09:35:09 +08:00
GaoHao d05abf5c80 升级更新 2024-12-11 09:31:49 +08:00
GaoHao dc4bf2a5c1 Merge branch 'gaohao' of https://e.coding.net/g-cphe0354/duanju/video_app into test 2024-12-09 17:57:32 +08:00
GaoHao f1f5582381 抽奖次数修改 2024-12-09 17:56:54 +08:00
GaoHao afa4afbab6 抽奖次数修改,视频详情修改 2024-12-09 17:50:49 +08:00
YeMingfei666 483423531d 修改app跳转 2024-12-09 16:51:04 +08:00
YeMingfei666 f87dbc2ff5 Merge branch 'test' of https://e.coding.net/g-cphe0354/duanju/video_app into ymf 2024-12-09 16:40:50 +08:00
YeMingfei666 5458022b20 增加h5跳转app 2024-12-09 16:40:37 +08:00
GaoHao 9bb1b060e3 Merge branch 'gaohao' of https://e.coding.net/g-cphe0354/duanju/video_app into test 2024-12-09 16:40:16 +08:00
GaoHao 6f931f7157 任务中心调试 2024-12-09 16:39:33 +08:00
YeMingfei666 78c8acf09b 增加支付成功跳转app页面 2024-12-09 16:32:04 +08:00
YeMingfei666 f1728def4e Merge branch 'ymf' of https://e.coding.net/g-cphe0354/duanju/video_app into test 2024-12-09 15:10:49 +08:00
GaoHao 97f627fded Merge branch 'gaohao' of https://e.coding.net/g-cphe0354/duanju/video_app into test 2024-12-09 15:08:05 +08:00
GaoHao ca6baa5254 提现增加lodin,提现记录,红包记录修改 2024-12-09 15:07:36 +08:00
YeMingfei666 608c7b1678 修复抽奖不跳转问题 2024-12-09 15:06:11 +08:00
GaoHao 85e1b96557 Merge branch 'gaohao' of https://e.coding.net/g-cphe0354/duanju/video_app into test 2024-12-09 14:29:18 +08:00
GaoHao 2edc997c39 修改红包记录字体颜色 2024-12-09 14:28:55 +08:00
GaoHao b1978752aa Merge branch 'gaohao' of https://e.coding.net/g-cphe0354/duanju/video_app into test 2024-12-09 14:07:31 +08:00
GaoHao 69b1f22c82 金币解锁提示修改 2024-12-09 14:07:04 +08:00
GaoHao 72347c4c7b Merge branch 'gaohao' of https://e.coding.net/g-cphe0354/duanju/video_app into test 2024-12-09 13:32:14 +08:00
GaoHao ff44f08b93 分享海报更换 2024-12-09 13:31:37 +08:00
YeMingfei666 5f109be94d Merge branch 'ymf' of https://e.coding.net/g-cphe0354/duanju/video_app into test 2024-12-09 10:54:13 +08:00
YeMingfei666 0041214912 修改支付跳转逻辑 2024-12-09 10:50:02 +08:00
YeMingfei666 c63deab9f8 修改转盘时间 2024-12-09 10:49:37 +08:00
GaoHao bd98f12d4d 金币解锁修改 2024-12-09 10:44:30 +08:00
GaoHao d63cdea1ec 跳转抽奖处理 2024-12-09 10:08:47 +08:00
GaoHao 02ca722970 Merge branch 'test' of https://e.coding.net/g-cphe0354/duanju/video_app into gaohao 2024-12-09 10:01:24 +08:00
GaoHao c6a81de8fb 视频详情修改 2024-12-09 10:01:08 +08:00
GaoHao 4c6603de45 Merge branch 'gaohao' of https://e.coding.net/g-cphe0354/duanju/video_app into test 2024-12-09 09:31:05 +08:00
GaoHao 06b5c4f99b 隐藏首页追剧入口 2024-12-09 09:30:19 +08:00
YeMingfei666 e796c086f8 Merge branch 'ymf' of https://e.coding.net/g-cphe0354/duanju/video_app into test 2024-12-07 18:34:53 +08:00
YeMingfei666 57e7a9c032 增加跳转转盘时视频暂停 2024-12-07 18:33:55 +08:00
GaoHao 191297c1f6 Merge branch 'test' of https://e.coding.net/g-cphe0354/duanju/video_app into test 2024-12-07 18:29:22 +08:00
GaoHao da79e53e70 Merge branch 'gaohao' of https://e.coding.net/g-cphe0354/duanju/video_app into test 2024-12-07 18:28:58 +08:00
YeMingfei666 a234802534 修改判断跳转转盘逻辑,不进行是否是当前未购买视频判断 2024-12-07 18:26:55 +08:00
GaoHao 51d60f2dcb 增加金币解锁 2024-12-07 18:26:08 +08:00
YeMingfei666 8b61108053 增加返回按钮显示隐藏 2024-12-07 18:09:46 +08:00
YeMingfei666 f78b4fc14a Merge branch 'test' of https://e.coding.net/g-cphe0354/duanju/video_app into ymf 2024-12-07 17:40:08 +08:00
YeMingfei666 014f71b43b 增加视频播放返回按钮显示隐藏 2024-12-07 17:39:56 +08:00
GaoHao d5aa9080b6 任务页面调整 2024-12-07 16:29:34 +08:00
GaoHao 3ecd48231f 视频抽奖次数显示修改 2024-12-07 15:46:08 +08:00
GaoHao ff96875de7 注册页面/下载页面更新 2024-12-07 14:41:23 +08:00
GaoHao 665db9bb9a 视频抽奖增加提示 2024-12-07 11:24:58 +08:00
GaoHao 5a97705726 Merge branch 'test' of https://e.coding.net/g-cphe0354/duanju/video_app into test 2024-12-06 18:18:10 +08:00
GaoHao f55c9a9ee1 下载地址复制修改 2024-12-06 18:18:01 +08:00
YeMingfei666 2404b96717 Merge branch 'ymf' of https://e.coding.net/g-cphe0354/duanju/video_app into test 2024-12-06 18:08:30 +08:00
YeMingfei666 f3ca591e6a 隐藏个人中心抽奖项 2024-12-06 18:08:16 +08:00
YeMingfei666 1429b7277c Merge branch 'ymf' of https://e.coding.net/g-cphe0354/duanju/video_app into test 2024-12-06 18:06:37 +08:00
GaoHao ab815d703d 隐藏邀请码 2024-12-06 17:38:42 +08:00
YeMingfei666 e7d2b21ec2 修改红包弹窗 2024-12-06 17:13:32 +08:00
GaoHao 6ad0c6ab09 增加logo、修改下载app名字 2024-12-06 16:57:11 +08:00
GaoHao 817a4f7d55 Merge branch 'gaohao' of https://e.coding.net/g-cphe0354/duanju/video_app into test 2024-12-06 16:47:41 +08:00
GaoHao d625d301cf 首页增加抽奖悬浮,tab增加任务 2024-12-06 16:47:09 +08:00
YeMingfei666 1206f0ea22 Merge branch 'ymf' of https://e.coding.net/g-cphe0354/duanju/video_app into test 2024-12-06 15:18:40 +08:00
YeMingfei666 c97811b50d 修改转盘抽奖领取弹窗 2024-12-06 15:18:00 +08:00
GaoHao 6d91b3ec15 Merge branch 'gaohao' of https://e.coding.net/g-cphe0354/duanju/video_app into test 2024-12-06 15:11:15 +08:00
GaoHao 2506dd8d57 任务中心修改 2024-12-06 15:10:46 +08:00
GaoHao 51652f2f4f Merge branch 'gaohao' of https://e.coding.net/g-cphe0354/duanju/video_app into test 2024-12-06 14:24:14 +08:00
GaoHao f77d4b60f9 推荐视频播放统计 2024-12-06 14:23:53 +08:00
YeMingfei666 98d3572526 修改跳转抽奖逻辑 2024-12-06 13:58:49 +08:00
YeMingfei666 47751a7267 修改sdk版本号 2024-12-06 13:53:06 +08:00
YeMingfei666 d85b101e30 修复代码合并报错 2024-12-06 11:35:11 +08:00
YeMingfei666 eae93ae6c7 代码合并 2024-12-06 11:30:48 +08:00
YeMingfei666 8a340fabdd 修改转盘 2024-12-06 11:28:33 +08:00
GaoHao e1eff87490 提现/我的页面修改 2024-12-06 11:11:29 +08:00
YeMingfei666 fb9733d9eb Merge branch 'test' of https://e.coding.net/g-cphe0354/duanju/video_app into ymf 2024-12-05 17:22:38 +08:00
YeMingfei666 bf17bb3a5d 抽奖增加领取 2024-12-05 17:22:18 +08:00
GaoHao 400126ffeb 余额相关更新 2024-12-05 17:21:14 +08:00
GaoHao 30ceee0f2b 任务中心更新 2024-12-05 15:46:54 +08:00
GaoHao c7df084278 任务中心添加 2024-12-05 14:38:36 +08:00
YeMingfei666 9156891770 代码合并 2024-12-05 14:18:50 +08:00
YeMingfei666 f15ed3a330 增加我的奖品页面,兑换页面 2024-12-05 14:13:01 +08:00
GaoHao 3bcc491fc2 解锁视频修改更新 2024-12-05 10:25:34 +08:00
YeMingfei666 fb8c9f8431 修改域名配置等文件 2024-12-03 14:39:59 +08:00
350 changed files with 60154 additions and 3010 deletions

2
.gitignore vendored Normal file
View File

@ -0,0 +1,2 @@
/unpackage/
/test/

29
.hbuilderx/launch.json Normal file
View File

@ -0,0 +1,29 @@
{
"version" : "1.0",
"configurations" : [
{
"app-plus" : {
"launchtype" : "local"
},
"default" : {
"launchtype" : "local"
},
"h5" : {
"launchtype" : "local"
},
"mp-weixin" : {
"launchtype" : "local"
},
"provider" : "aliyun",
"type" : "uniCloud"
},
{
"playground" : "custom",
"type" : "uni-app:app-android"
},
{
"playground" : "standard",
"type" : "uni-app:app-ios"
}
]
}

376
App.vue
View File

@ -1,6 +1,36 @@
<script>
import config from '@/common/config.js'
import {isH5Android} from '@/utils/app.js'
import {init} from '@/utils/init.js'
import {cacheClearAll} from '@/store/cashe.js'
import store from './store/index.js'
export default {
onLaunch: function() {
console.log('onLaunch')
cacheClearAll()
// #ifdef H5
//
if(process.env.NODE_ENV === 'production'){
const prveTime=uni.getStorageSync('time')
const time=Date.now()
uni.setStorageSync('time',time)
if(prveTime&&time-prveTime<=2000){
uni.setStorageSync('isDisabledAll',true)
uni.request=()=>{
}
uni.removeStorageSync('prveTime')
return uni.showToast({
title:'休息一会儿吧,你刷新的太过频繁了!',
icon:'error'
})
}else{
uni.removeStorageSync('isDisabledAll')
}
}
// #endif
let that = this
// #ifdef MP-WEIXIN || MP-TOUTIAO
// 881
@ -271,62 +301,29 @@
// #endif
// setInterval(d => { //
// let userId = uni.getStorageSync('userId')
// if (userId) {
// this.$Request.getT('/app/message/selectMessageCount').then(res => {
// if (res.code === 0) {
// let num = res.data
// uni.setStorageSync('numCount', num)
// if (num == 0) {
// uni.removeTabBarBadge({
// index: 3
// })
// } else {
// uni.setTabBarBadge({
// index: 3,
// text: num + ''
// })
// }
// }
// });
// }
// }, 3000);
setInterval(d => { //
let userId = uni.getStorageSync('userId')
if (userId) {
this.$Request.getT('/app/message/selectMessageCount').then(res => {
if (res.code === 0) {
let num = res.data
uni.setStorageSync('numCount', num)
if (num == 0) {
uni.removeTabBarBadge({
index: 3
})
} else {
uni.setTabBarBadge({
index: 3,
text: num + ''
})
}
}
});
}
}, 3000);
//#ifdef H5
this.$u.get('/app/common/type/108').then(res => { //// 108
if (res.code == 0 && res.data) {
if (res.data.value == '是') {
let ua = navigator.userAgent.toLowerCase();
if (ua.indexOf('micromessenger') !== -1) {
let openid = uni.getStorageSync('openId');
let userId = uni.getStorageSync('userId');
if (!userId) {
if (openid) {
that.$u.get('/app/Login/openid/login?openId=' + openid).then(
res => {
if (res.code == 0) {
uni.setStorageSync('token', res.token)
uni.setStorageSync('userId', res.user.userId)
uni.setStorageSync('userName', res.user.userName)
uni.setStorageSync('phone', res.user.phone)
uni.setStorageSync('invitationCode', res.user
.invitationCode)
}
});
}
}
}
}
}
});
//#endif
//#ifdef APP-PLUS
// APP https://ask.dcloud.net.cn/article/35667
plus.screen.lockOrientation('portrait-primary'); //
@ -366,12 +363,23 @@
}
});
} else {
//
//
plus.runtime.getProperty(plus.runtime.appid, widgetInfo => {
//
that.$Request.getT('/app/user/selectNewApp').then(res => {
res = res.data[0];
if (res.wgtUrl && widgetInfo.version < res.version) {
console.log(widgetInfo)
console.log(res)
let version;
if (uni.getSystemInfoSync().platform == 'android') {
version = res.version
}
if (uni.getSystemInfoSync().platform == 'ios') {
version = res.iosVersion
}
version = res.version
// && uni.getSystemInfoSync().platform == 'android'
if (widgetInfo.version < version) {
let downloadLink = '';
let androidLink = res.androidWgtUrl;
let iosLink = res.iosWgtUrl;
@ -455,20 +463,30 @@
}
} else {
//线
if (res.method == 'true') {
if (res.method == "true") {
uni.showModal({
showCancel: false,
confirmText: '立即更新',
title: '发现新版本',
confirmText: '立即更新',
content: res.des,
success: res => {
if (res.confirm) {
that.$queue.showLoading('下载中...');
plus.runtime.openURL(config.APIHOST2 +
'/pages/login/appEq')
return
uni.showLoading({
title: '下载中...',
mask: true
});
if (uni.getSystemInfoSync().platform ==
'android') {
uni.downloadFile({
url: androidLink,
success: downloadResult => {
console.log(
downloadResult
)
if (downloadResult
.statusCode ===
200) {
@ -487,12 +505,25 @@
.restart();
},
e => {
console
.log(
e
)
console
.error(
'install fail...'
);
}
);
// plus.io.resolveLocalFileSystemURL(downloadResult.tempFilePath, entry => {
// entry.getParent(_oldFile=>{
// entry.moveTo(_oldFile,'.apk',newFilePath=>{
// console.log('newFilePath',newFilePath.fullPath)
// })
// })
// })
}
}
});
@ -515,7 +546,13 @@
content: res.des,
success: res => {
if (res.confirm) {
that.$queue.showLoading('下载中...');
plus.runtime.openURL(config.APIHOST2 +
'/pages/login/appEq')
return
uni.showLoading({
title: '下载中...',
mask: true
});
if (uni.getSystemInfoSync().platform ==
'android') {
uni.downloadFile({
@ -539,12 +576,41 @@
.restart();
},
e => {
console
.log(
e
)
console
.error(
'install fail...'
);
}
);
// plus.io.resolveLocalFileSystemURL(downloadResult.tempFilePath, entry => {
// entry.getParent(_oldFile=>{
// entry.moveTo(_oldFile,'.apk',newFilePath=>{
// console.log('newFilePath',newFilePath.fullPath)
// plus.runtime
// .install(newFilePath.fullPath, { force: false },
// d => {
// console
// .log(
// 'install success...'
// );
// plus.runtime
// .restart();
// },
// e => {
// console.log(e)
// console
// .error(
// 'install fail...'
// );
// }
// );
// })
// })
// })
}
}
});
@ -569,6 +635,12 @@
},
onShow: function() {
init()
// #ifdef H5
// isH5Android()
// #endif
console.log('App Show')
// #ifdef APP-PLUS
let userId = uni.getStorageSync('userId')
@ -593,183 +665,8 @@
// uni.setStorageSync('kefu', res.data.value)
// }
// });
//IOS 882
this.$u.get('/app/common/type/882').then(res => {
if (res.code == 0 && res.data) {
let value = res.data.value
const sysInfo = uni.getSystemInfoSync()
// #ifdef MP-WEIXIN
if (sysInfo.osName == 'ios') { //ios
if (value == '是') { //
uni.setStorageSync('isWxIosPay', true)
} else { //
uni.setStorageSync('isWxIosPay', false)
}
} else { //ios
uni.setStorageSync('isWxIosPay', true)
}
// #endif
//
// #ifndef MP-WEIXIN
uni.setStorageSync('isWxIosPay', true)
// #endif
}
});
// 833
this.$u.get('/app/common/type/833').then(res => {
if (res.code == 0 && res.data) {
uni.setStorageSync('checkIosLogin', res.data.value)
}
});
// 834
this.$u.get('/app/common/type/834').then(res => {
if (res.code == 0 && res.data) {
uni.setStorageSync('checkIosPay', res.data.value)
}
});
// 835
this.$u.get('/app/common/type/835').then(res => {
if (res.code == 0 && res.data) {
uni.setStorageSync('checkWxLogin', res.data.value)
}
});
// 836
this.$u.get('/app/common/type/836').then(res => {
if (res.code == 0 && res.data) {
uni.setStorageSync('checkPhoneLogin', res.data.value)
}
});
this.$u.get('/app/common/type/817').then(res => { // 817
if (res.code == 0 && res.data) {
uni.setStorageSync('zhengbu', res.data.value)
}
});
this.$u.get('/app/common/type/818').then(res => { // 818
if (res.code == 0 && res.data) {
uni.setStorageSync('danbu', res.data.value)
}
});
// 广id 252
this.$u.get('/app/common/type/252').then(res => {
if (res.code == 0 && res.data) {
uni.setStorageSync('adUnitId', res.data.value)
}
});
// 1: 2:
this.$u.get('/app/common/type/821').then(res => {
if (res.code == 0 && res.data) {
uni.setStorageSync('playType', res.data.value)
}
});
// 广 251
this.$u.get('/app/common/type/251').then(res => {
if (res.code == 0) {
if (res.data && res.data.value) {
uni.setStorageSync('isGuanggao', res.data.value)
}
}
});
// 广 254
this.$u.get('/app/common/type/254').then(res => {
if (res.code == 0) {
if (res.data && res.data.value) {
uni.setStorageSync('isGuanggaody', res.data.value)
}
}
});
this.$u.get('/app/common/type/202').then(res => { // 1 2 3
if (res.code == 0 && res.data) {
uni.setStorageSync('kefu', res.data.value)
}
});
this.$u.get('/app/common/type/206').then(res => { //
if (res.code == 0 && res.data) {
uni.setStorageSync('kefuPhone', res.data.value)
}
});
this.$u.get('/app/common/type/204').then(res => { //
if (res.code == 0 && res.data) {
uni.setStorageSync('kefuUrl', res.data.value)
}
});
this.$u.get('/app/common/type/203').then(res => { //appid
if (res.code == 0 && res.data) {
uni.setStorageSync('kefuAppId', res.data.value)
}
});
//
this.$u.get('/app/common/type/248').then(res => { //
if (res.code == 0 && res.data) {
uni.setStorageSync('isVips', res.data.value)
}
});
// 249
this.$u.get('/app/common/type/249').then(res => { //
if (res.code == 0 && res.data) {
uni.setStorageSync('moreSearch', res.data.value)
}
});
// 49
this.$u.get('/app/common/type/49').then(res => { //
if (res.code == 0 && res.data) {
uni.setStorageSync('AppUrl', res.data.value)
}
});
//OfferID 823
this.$u.get('/app/common/type/823').then(res => { //
if (res.code == 0 && res.data) {
uni.setStorageSync('OfferID', res.data.value)
}
});
//0 , 1 824
this.$u.get('/app/common/type/824').then(res => { //
if (res.code == 0 && res.data) {
uni.setStorageSync('payEnv', res.data.value)
}
});
// 825
this.$u.get('/app/common/type/825').then(res => { //
if (res.code == 0 && res.data) {
uni.setStorageSync('moneyTips', res.data.value)
}
});
// 855
this.$u.get('/app/common/type/855').then(res => {
if (res.code == 0 && res.data) {
uni.setStorageSync('kmPaySel', res.data.value)
}
});
// 849
this.$u.get('/app/common/type/849').then(res => {
if (res.code == 0 && res.data) {
uni.setStorageSync('homeTypeSel', res.data.value)
}
});
// 856
this.$u.get('/app/common/type/856').then(res => {
if (res.code == 0 && res.data) {
uni.setStorageSync('syPaySel', res.data.value)
}
});
//im 857
this.$u.get('/app/common/type/857').then(res => {
if (res.code == 0 && res.data) {
uni.setStorageSync('imId', res.data.value)
}
});
this.$u.get('/app/common/type/858').then(res => { //
if (res.code == 0 && res.data) {
uni.setStorageSync('isAccountPay', res.data.value)
}
});
//广id
this.$u.get('/app/common/type/860').then(res => { //广
if (res.code == 0 && res.data) {
uni.setStorageSync('dyadUnitId', res.data.value)
}
});
// #ifdef H5
if (!/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent)) {
//pc使 850
@ -798,4 +695,7 @@
@import "uview-ui/index.scss";
@import 'components/colorui/main.css';
@import 'components/colorui/icon.css';
@import '@/common/style/common.scss';
@import './tuniao-ui/index.scss';
@import './tuniao-ui/iconfont.css';
</style>

View File

@ -1,27 +1,25 @@
const ROOTPATH1 = "https://duanju.xianmxkj.com/sqx_fast"; //
const ROOTPATH = "https://duanju.xianmxkj.com/sqx_fast"; //后台服务域名
const ROOTPATH2 = "https://duanju.xianmxkj.com"; //后台服务域名
// APP
// const ROOTPATH1 = "https://dj-api.hnsiyao.cn/czg/"; //正式
// const ROOTPATH = "https://dj-api.hnsiyao.cn/czg/"; //后台服务域名
// const ROOTPATH2 = "https://dj-h5.hnsiyao.cn"; //后台服务域名
// const ROOTPATH1 = location.origin + "/sqx_fast"; //
// const ROOTPATH = location.origin + "/sqx_fast"; //后台服务域名
// const ROOTPATH2 = location.origin; //后台服务域名
// const ROOTPATH1 = "https://video.hnsiyao.cn/czg/"; //测试
// const ROOTPATH = "https://video.hnsiyao.cn/czg/"; //后台服务域名
// const ROOTPATH2 = "https://video-h5.hnsiyao.cn"; //后台服务域名
// const ROOTPATH1 = "https://duanju12.xianmxkj.com/sqx_fast"; //
// const ROOTPATH = "https://duanju12.xianmxkj.com/sqx_fast"; //后台服务域名
// const ROOTPATH2 = "https://duanju12.xianmxkj.com"; //后台服务域名
// h5
const ROOTPATH1 = "https://web.hnsiyao.cn/czg/"; //正式
const ROOTPATH = "https://web.hnsiyao.cn/czg/"; //后台服务域名
const ROOTPATH2 = "https://dj-h5.hnsiyao.cn"; //后台服务域名
// const ROOTPATH1 = "https://wap.xingqiu1985.com/sqx_fast"; //
// const ROOTPATH = "https://wap.xingqiu1985.com/sqx_fast"; //后台服务域名
// const ROOTPATH2 = "https://wap.xingqiu1985.com"; //后台服务域名
// const ROOTPATH1 = "https://web-api.hnsiyao.cn/czg/"; //测试
// const ROOTPATH = "https://web-api.hnsiyao.cn/czg/"; //后台服务域名
// const ROOTPATH2 = "https://video-h5.hnsiyao.cn"; //后台服务域名
// const ROOTPATH1 = "http://192.168.1.41:8100/czg/"; //
// const ROOTPATH = "http://192.168.1.41:8100/czg/"; //后台服务域名
// const ROOTPATH2 = "http://192.168.1.41:8100"; //后台服务域名
// const ROOTPATH1 = "https://jc.118zp.com/sqx_fast"; //
// const ROOTPATH = "https://jc.118zp.com/sqx_fast"; //后台服务域名
// const ROOTPATH2 = "https://jc.118zp.com"; //后台服务域名
// const ROOTPATH1 = "http://192.168.0.132:8100/sqx_fast"; //后台服务域名
// const ROOTPATH = "http://192.168.0.132:8100/sqx_fast"; //后台服务域名
// const ROOTPATH2 = "http://192.168.0.132:8100"; //后台服务域名
module.exports = {
APIHOST: ROOTPATH,
APIHOST1: ROOTPATH1,

8
common/config/config.js Normal file
View File

@ -0,0 +1,8 @@
export default {
baseUrl: 'http://127.0.0.1/',
baseApi: 'http://127.0.0.1:7001/',
color:{
main:'#FFC428',
red:'#fa3534'
}
}

View File

@ -51,16 +51,19 @@ const install = (Vue, vm) => {
let userMoney = (params = {}) => vm.$u.get('app/invite/selectUserMoney', params); //查看钱包
let cashMoney = (params = {}) => vm.$u.get('app/cash/cashMoney', params); //申请提现
let withdraw = (params = {}) => vm.$u.get('app/cash/withdraw', params); //申请提现
let selectPay = (params = {}) => vm.$u.get('app/cash/selectPayDetails', params); //提现记录
let moneyDet = (params = {}) => vm.$u.get('app/cash/queryUserMoneyDetails', params); //钱包明细
let type = (params = {}) => vm.$u.get('app/common/type', params); //钱包明细
let myPurseDet = (params = {}) => vm.$u.get('app/moneyDetails/queryUserMoneyDetails', params); //我的钱包
let myPurse = (params = {}) => vm.$u.get('app/moneyDetails/selectUserMoney', params); //钱包明细
let help = (params = {}) => vm.$u.get('app/helpWord/selectHelpList', params); //帮助中心
let helpDet = (params = {}) => vm.$u.get('app/helpWord/selectHelpWordDetails', params); //帮助中心 详情
//获取视频
let selectCourseDetailsById = (params = {}) => vm.$u.get('app/course/selectCourseDetailsById', params);
let selectCourseDetailsById = (params = {}) => vm.$u.get('app/course/courseSets', params);
// 将各个定义的接口名称统一放进对象挂载到vm.$u.api(因为vm就是this也即this.$u.api)下
vm.$u.api = {
@ -105,10 +108,14 @@ const install = (Vue, vm) => {
moneyList,
userMoney,
cashMoney,
withdraw,
selectPay,
moneyDet,
type,
myPurseDet,
myPurse,
help,
helpDet,
selectCourseDetailsById

View File

@ -1,5 +1,6 @@
// 这里的vm就是我们在vue文件里面的this所以我们能在这里获取vuex的变量比如存放在里面的token变量
import {APIHOST} from './config.js'
import {cacheClearAll} from '@/store/cashe.js'
const install = (Vue, vm) => {
// 此为自定义配置参数,具体参数见上方说明
Vue.prototype.$u.http.setConfig({
@ -26,8 +27,8 @@ const install = (Vue, vm) => {
// 所以哪怕您重新登录修改了Storage下一次的请求将会是最新值
const token = uni.getStorageSync('token');
config.header.token = token;
config.url=config.url.slice(0,1)==='/'?config.url.slice(1,config.url.length):config.url
// config.header.Token = 'xxxxxx';
// 可以对某个url进行特别处理此url参数为this.$u.get(url)中的url值
// if(config.url == '/user/login') config.header.noToken = true;
// 最后需要将config进行return
@ -52,6 +53,17 @@ const install = (Vue, vm) => {
}, 1500)
return false;
} else if (res.code == 401) {
// 获取当前页面实例
const pages = getCurrentPages();
// 获取当前页面的实例
const currentPage = pages[pages.length - 1];
// 获取页面路径
const pagePath = currentPage.route
const systemInfo = uni.getSystemInfoSync();
const isIOS = /iOS/.test(systemInfo.platform);
// if ( pagePath == "pages/task/index") {
// return;
// }
// 假设201为token失效这里跳转登录
vm.$u.toast('验证失败,请重新登录');
uni.removeStorageSync("token")
@ -64,6 +76,7 @@ const install = (Vue, vm) => {
uni.removeStorageSync("isInvitation")
uni.removeStorageSync("zhiFuBao")
uni.removeStorageSync("zhiFuBaoName")
cacheClearAll()
// 此为uView的方法详见路由相关文档
vm.$u.route('/pages/login/login')
return false;

View File

@ -1,6 +1,17 @@
import configdata from './config'
import cache from './cache'
import {
cacheClearAll,cacheClear
} from '@/store/cashe.js'
function successCallBack(url){
if(url.includes('app/courseCollect/insertCourseCollect')){
cacheClear('chasingDrama')
return
}
if(url.includes('app/user/updateUser') ){
cacheClear('renwu')
}
}
module.exports = {
config: function(name) {
var info = null;
@ -26,6 +37,17 @@ module.exports = {
},
logout: function() {
let that = this;
// 获取当前页面实例
const pages = getCurrentPages();
// 获取当前页面的实例
const currentPage = pages[pages.length - 1];
// 获取页面路径
const pagePath = currentPage.route
const systemInfo = uni.getSystemInfoSync();
const isIOS = /iOS/.test(systemInfo.platform);
// if ( pagePath == "pages/task/index") {
// return;
// }
uni.removeStorageSync("token")
uni.removeStorageSync("userId")
uni.removeStorageSync("phone")
@ -36,17 +58,20 @@ module.exports = {
uni.removeStorageSync("isInvitation")
uni.removeStorageSync("zhiFuBao")
uni.removeStorageSync("zhiFuBaoName")
cacheClearAll()
uni.showToast({
title: '用户信息失效,请重新登录!',
icon: 'none'
})
uni.navigateTo({
url: "/pages/login/login"
})
},
post: function(url, data, header) {
let that = this;
header = header || "application/x-www-form-urlencoded";
url = that.config("APIHOST") + url;
url = that.config("APIHOST") + url.replace(/^\//, "");
return new Promise((succ, error) => {
uni.request({
url: url,
@ -58,6 +83,8 @@ module.exports = {
success: function(result) {
if (result.data.code == 401) {
that.logout();
}else{
successCallBack(url)
}
succ.call(self, result.data)
},
@ -70,7 +97,7 @@ module.exports = {
postT: function(url, data, header) {
let that = this;
header = header || "application/x-www-form-urlencoded";
url = that.config("APIHOST1") + url;
url = that.config("APIHOST1") + url.replace(/^\//, "");
// let token = uni.getStorageSync("token");
let token = uni.getStorageSync("token");
if (token) {
@ -119,7 +146,7 @@ module.exports = {
postJson: function(url, data, header) {
let that = this;
header = header || "application/json";
url = that.config("APIHOST1") + url;
url = that.config("APIHOST1") + url.replace(/^\//, "");
// let token = uni.getStorageSync("token");
let token = uni.getStorageSync("token");
if (token) {
@ -135,7 +162,11 @@ module.exports = {
success: function(result) {
if (result.data.code == 401) {
that.logout();
}else{
successCallBack(url)
// cacheClear('chasingDrama')
}
succ.call(self, result.data)
},
fail: function(e) {
@ -168,7 +199,7 @@ module.exports = {
getT: function(url, data, header) {
let that = this;
header = header || "application/x-www-form-urlencoded";
url = that.config("APIHOST1") + url;
url = that.config("APIHOST1") + url.replace(/^\//, "");
// let token = uni.getStorageSync("token");
let token = uni.getStorageSync("token");
if (token) {
@ -288,7 +319,8 @@ module.exports = {
get: function(url, data, header) {
let that = this;
header = header || "application/x-www-form-urlencoded";
url = that.config("APIHOST") + url;
url = that.config("APIHOST") + url.replace(/^\//, "");
console.log(url);
return new Promise((succ, error) => {
uni.request({
url: url,
@ -335,7 +367,7 @@ module.exports = {
get1: function(url, data, header) {
let that = this;
header = header || "application/json";
url = that.config("APIHOST") + url;
url = that.config("APIHOST") + url.replace(/^\//, "");
return new Promise((succ, error) => {
uni.request({
url: url,

View File

@ -18,11 +18,11 @@ module.exports = {
},
//全局域名 部分html中需要单独替换 需要修改config中的网络请求域名
publicYuMing() {
return 'https://duanju.xianmxkj.com'
return 'https://dj-api.hnsiyao.cn'
},
//全局域名 部分html中需要单独替换 需要修改config中的网络请求域名
publicYuMingAll() {
return 'https://duanju.xianmxkj.com/sqx_fast'
return 'https://dj-api.hnsiyao.cn/sqx_fast/'
},
minMoney() {
return uni.getStorageSync("minMoney") ? uni.getStorageSync("minMoney") : '0.3'

409
common/style/common.scss Normal file
View File

@ -0,0 +1,409 @@
.u-relative,
.u-rela {
position: relative;
}
.u-absolute,
.u-abso {
position: absolute;
}
.u-fixed,.u-fix{
position: fixed;
}
.left-top{
left: 0;
top: 0;
}
.u-overflow-hide{
overflow: hidden;
}
// nvue不能用标签命名样式不能放在微信组件中否则微信开发工具会报警告无法使用标签名当做选择器
/* #ifndef APP-NVUE */
image {
display: inline-block;
}
// 在weex也即nvue中所有元素默认为border-box
view,
text {
box-sizing: border-box;
}
/* #endif */
.u-font-xs {
font-size: 22rpx;
}
.u-font-sm {
font-size: 26rpx;
}
.u-font-md {
font-size: 28rpx;
}
.u-font-lg {
font-size: 30rpx;
}
.u-font-xl {
font-size: 34rpx;
}
.u-flex {
/* #ifndef APP-NVUE */
display: flex;
/* #endif */
flex-direction: row;
align-items: center;
}
.u-flex-wrap {
flex-wrap: wrap;
}
.u-flex-nowrap {
flex-wrap: nowrap;
}
.u-col-center {
align-items: center;
}
.u-col-top {
align-items: flex-start;
}
.u-col-bottom {
align-items: flex-end;
}
.u-row-center {
justify-content: center;
}
.u-row-left {
justify-content: flex-start;
}
.u-row-right {
justify-content: flex-end;
}
.u-row-between {
justify-content: space-between;
}
.u-row-around {
justify-content: space-around;
}
.u-text-left {
text-align: left;
}
.u-text-center {
text-align: center;
}
.u-text-right {
text-align: right;
}
.u-flex-col {
/* #ifndef APP-NVUE */
display: flex!important;
/* #endif */
flex-direction: column!important;
}
// 定义flex等分
@for $i from 0 through 12 {
.u-flex-#{$i} {
flex: $i;
}
}
// 定义字体(px)单位小于20都为px单位字体
@for $i from 9 to 20 {
.u-font-#{$i} {
font-size: $i + px;
}
}
// 定义字体(rpx)单位大于或等于20的都为rpx单位字体
@for $i from 20 through 40 {
.u-font-#{$i} {
font-size: $i + rpx;
}
}
// 定义内外边距历遍1-80
@for $i from 0 through 80 {
// 只要双数和能被5除尽的数
@if $i % 2 == 0 or $i % 5 == 0 {
// 得出u-margin-30或者u-m-30
.u-margin-#{$i}, .u-m-#{$i} {
margin: $i + rpx!important;
}
// 得出u-padding-30或者u-p-30
.u-padding-#{$i}, .u-p-#{$i} {
padding: $i + rpx!important;
}
@each $short, $long in l left, t top, r right, b bottom {
// 缩写版结果如 u-m-l-30
// 定义外边距
.u-m-#{$short}-#{$i} {
margin-#{$long}: $i + rpx!important;
}
// 定义内边距
.u-p-#{$short}-#{$i} {
padding-#{$long}: $i + rpx!important;
}
// 完整版结果如u-margin-left-30
// 定义外边距
.u-margin-#{$long}-#{$i} {
margin-#{$long}: $i + rpx!important;
}
// 定义内边距
.u-padding-#{$long}-#{$i} {
padding-#{$long}: $i + rpx!important;
}
}
}
}
// 重置nvue的默认关于flex的样式
.u-reset-nvue {
flex-direction: row;
align-items: center;
}
/* start--文本行数限制--start */
.u-line-1 {
overflow: hidden;
white-space: nowrap;
text-overflow: ellipsis;
}
.u-line-2 {
-webkit-line-clamp: 2;
}
.u-line-3 {
-webkit-line-clamp: 3;
}
.u-line-4 {
-webkit-line-clamp: 4;
}
.u-line-5 {
-webkit-line-clamp: 5;
}
.u-line-2, .u-line-3, .u-line-4, .u-line-5 {
overflow: hidden;
word-break: break-all;
text-overflow: ellipsis;
display: -webkit-box; // 弹性伸缩盒
-webkit-box-orient: vertical; // 设置伸缩盒子元素排列方式
}
/* end--文本行数限制--end */
/* start--不同颜色文字--start */
.color-333{
color: #333;
}
.color-666{
color: #666;
}
.color-999{
color: #999;
}
.color-red{
color: $my-red-color;
}
.color-main{
color:$my-main-color
}
/* end--不同颜色文字--end */
.tranistion{
transition: all .3s ease-in-out;
}
.tranistion-1{
transition: all .1s ease-in-out;
}
.tranistion-2{
transition: all .2s ease-in-out;
}
.font-bold{
font-weight: 700;
}
/* start--不同颜色背景--start */
.my-bg-main{
background-color:$my-main-color
}
/* end--不同颜色背景--end */
.safe-page{
padding-bottom: 60rpx!important;
}
::v-deep .uni-switch-input.uni-switch-input-checked{
border-color: $my-main-color;
background-color: $my-main-color;
}
.btn-circle{
border-radius: 200px;
}
.min-page{
/* #ifdef H5 */
min-height: calc(100vh - 44px);
/* #endif */
/* #ifndef H5 */
min-height: 100vh;
/* #endif */
}
.w-full{
width: 100%;
}
.gap-20{
gap: 20rpx;
}
.color-000{
color: #000;
}
.color-fff{
color: #fff;
}
.bg-fff{
background-color: #fff;
}
.bg-gray{
background-color: #F9F9F9;
}
.overflow-hide{
/* #ifdef H5 */
height: calc(100vh - 44px);
/* #endif */
/* #ifndef H5 */
height: 100vh;
/* #endif */
overflow: hidden;
}
.no-wrap{
white-space: nowrap;
}
.border-r-12{
border-radius: 12rpx;
}
.border-r-18{
border-radius: 18rpx;
}
.border-top{
border-top: 1px solid #E5E5E5;
}
.border-bottom{
border-bottom: 1px solid #E5E5E5;
}
.scale7{
transform: scale(0.7);
}
.page-gray {
min-height: calc(100vh);
/* #ifdef H5 */
min-height: calc(100vh - var(--window-top));
/* #endif */
display: flex;
flex-direction: column;
background: #F9F9F9;
}
.box-shadow{
box-shadow: 0 0 5px #eee;
}
.safe-bottom{
padding-bottom: env(safe-area-inset-bottom);
/* #ifdef H5 */
padding-bottom: 28rpx;
/* #endif */
}
.position-all{
left: 0;
right: 0;
top: 0;
bottom: 0;
}
.fixed-top{
position: fixed;
/* #ifdef H5 */
top: 44px;
/* #endif */
/* #ifndef H5 */
top: 0;
/* #endif */
left: 0;
right: 0;
}
.lh30 {
line-height: 30px;
}
.default-box-padding{
padding: 32rpx 24rpx;
}
.icon-arrow-down-fill {
width: 16rpx;
height: 10rpx;
}
.zIndex-999{
z-index: 999;
}
.icon-default-size{
width: 28rpx;
height: 28rpx;
}
::v-deep.uni-easyinput__placeholder-class{
font-size: 28rpx!important;
}
.filter-gray{
filter: grayscale(1);
}
// .u-font-20{
// font-size: 10px;
// }
// .u-font-24{
// font-size: 12px;
// }
// .u-font-28{
// font-size: 14px;
// }
// .u-font-32{
// font-size: 16px;
// }
.line-th{
text-decoration: line-through;
}
//覆盖u-view-plus 颜色
.u-primary-light {
color: $my-main-color;
}
::v-deep .u-border{
border-width: 1px!important;
}
::v-deep .u-m-t-16 .u-textarea{
border-width: 1px!important;
}

42
components/my-empty.vue Normal file
View File

@ -0,0 +1,42 @@
<template>
<view class="u-flex u-row-center ">
<view class="color-999 my-empty u-relative">{{text}}</view>
</view>
</template>
<script>
export default{
props:{
text:{
type:String,
default:'空空如也~'
}
},
data(){
return {
}
}
}
</script>
<style lang="scss" scoped>
.my-empty{
&:before,&::after{
content: '';
display: block;
position: absolute;
border-bottom: 1px solid #999;
top: 50%;
transform: translateY(-50%);
}
&:before{
left: -80rpx;
width: 60rpx;
}
&::after{
width: 60rpx;
right: -80rpx;
}
}
</style>

458
components/other-xuafu.vue Normal file
View File

@ -0,0 +1,458 @@
<template>
<button @click="navThanks" v-if="show">
<view class="dong">
<view class="monster">
<view class="monster__face">
<view class="monster__eye avatar-eye avatar-eye--green eye--left">
<view class="avatar-eye-pupil pupil--green"><span class="avatar-eye-pupil-blackThing"><span
class="avatar-eye-pupil-lightReflection"></span></span></view>
</view>
<view class="monster__eye avatar-eye avatar-eye--violet eye--right">
<view class="avatar-eye-pupil pupil--pink"><span class="avatar-eye-pupil-blackThing"><span
class="avatar-eye-pupil-lightReflection"></span></span></view>
</view>
<view class="monster__noses">
<view class="monster__nose"></view>
<view class="monster__nose"></view>
</view>
<view class="monster__mouth">
<view class="monster__top"></view>
<view class="monster__bottom"></view>
</view>
</view>
</view>
</view>
</button>
</template>
<script>
import {returnIsShenhe} from '@/utils/api.js'
import {isIos} from '@/utils/app.js'
export default {
name: "other-xuanu",
data() {
return {
show:false
};
},
methods:{
navThanks(){
uni.navigateTo({
url:'/other/index/index'
})
},
async init(){
const isShehe=await returnIsShenhe()
this.show=isShehe
}
},
mounted() {
// #ifdef APP
if(isIos()){
// this.init()
}
// #endif
}
}
</script>
<style scoped>
/* 大嘴鸟*/
.dong {
z-index: 9999;
position: fixed;
bottom: 0;
right: -80px;
transform: scale(0.24);
-webkit-transform: scale(0.24);
-moz-transform: scale(0.24);
}
.monster {
transform: rotate(-50deg);
-ms-transform: rotate(-50deg);
/* IE 9 */
-moz-transform: rotate(-50deg);
/* Firefox */
-webkit-transform: rotate(-50deg);
/* Safari 和 Chrome */
-o-transform: rotate(-50deg);
/* Opera */
display: flex;
justify-content: center;
position: relative;
width: 170px;
height: 400px;
border-top-left-radius: 200px;
border-top-right-radius: 200px;
background-color: rgb(255, 117, 129);
box-shadow: 20px 20px 60px rgba(255, 117, 129,.7);
}
.monster__face {
display: flex;
justify-content: center;
align-items: center;
flex-direction: column;
position: absolute;
top: 14%;
width: 75%;
height: 160px;
}
.monster__noses {
top: 50%;
display: flex;
justify-content: space-between;
width: 28%;
height: auto;
margin-bottom: 10px;
}
.monster__nose {
width: 8px;
height: 12px;
border-radius: 20px;
background: rgba(0, 0, 0, 0.5);
box-shadow: 4px 8px 5px rgba(0, 0, 0, 0.1);
}
.monster__mouth {
display: flex;
justify-content: center;
align-items: center;
position: relative;
width: 100%;
height: 0%;
overflow: hidden;
border: 25px solid #FFC333;
border-radius: 100px;
background-color: #810332;
animation: mouth 1.75s infinite;
box-shadow: 4px 8px 5px rgba(0, 0, 0, 0.2);
box-sizing: border-box;
}
.monster__mouth::before {
content: '';
position: absolute;
width: 150px;
height: 80px;
border-radius: 100px;
background-color: #400018;
}
.monster__mouth::after {
content: '';
position: absolute;
bottom: -80px;
width: 160px;
height: 80px;
border-top-left-radius: 50%;
border-top-right-radius: 50%;
background-color: #DC1B50;
animation: tongue 1.75s infinite;
}
.monster__top {
position: absolute;
top: -30px;
width: 170px;
height: 30px;
border-bottom-left-radius: 10px;
border-bottom-right-radius: 10px;
background-color: #ffffff;
z-index: 100;
animation: t 1.75s infinite;
}
.monster__bottom {
position: absolute;
bottom: 0;
width: 100px;
height: 30px;
border-top-left-radius: 10px;
border-top-right-radius: 10px;
background-color: #ffffff;
z-index: 100;
animation: b 1.75s infinite;
}
.avatar-eye {
position: absolute;
top: -10%;
width: 65px;
height: 65px;
background: linear-gradient(105deg, white, #cb87f4);
border-radius: 100%;
box-shadow: 4px 8px 5px rgba(0, 0, 0, 0.2);
margin: 3px;
-webkit-transform: translateX(-50%);
transform: translateX(-50%);
}
.avatar-eye--green {
background: linear-gradient(to bottom, #fdfdfd, #c3efea);
}
.avatar-eye--violet {
background: linear-gradient(to bottom, #fdfdfd, #e6d6f6);
}
.eye--left {
left: 10%;
}
.eye--right {
left: 85%;
}
.eye--center {
left: 45%;
top: 10%;
}
.avatar-eye-pupil {
position: absolute;
width: 55%;
height: 55%;
left: 50%;
top: 25%;
-webkit-transform: translate(-50%);
transform: translate(-50%);
z-index: 100;
border-radius: 100%;
}
.pupil--green {
background: linear-gradient(135deg, rgba(188, 248, 177, 0.7), #2fa38c 75%);
}
.pupil--pink {
background: linear-gradient(135deg, #f1a183, #8535cd);
}
.avatar-eye-pupil-blackThing {
position: absolute;
width: 55%;
height: 55%;
left: 50%;
top: 25%;
background: #2c2f32;
-webkit-transform: translate(-50%);
transform: translate(-50%);
border-radius: 100%;
box-shadow: 0px 0px 10px rgba(0, 0, 0, 0.2);
}
.avatar-eye-pupil-lightReflection {
position: absolute;
width: 7px;
height: 7px;
left: 25%;
top: 10%;
background: #ebebeb;
-webkit-transform: translate(-50%);
transform: translate(-50%);
border-radius: 100%;
box-shadow: 10px 10px 10px rgba(255, 255, 255, 0.2);
}
/*大嘴动起来*/
@keyframes t {
0%,
10%,
80%,
100% {
top: -30px;
}
20% {
top: 0px;
}
30% {
top: -20px;
}
40% {
top: -0px;
}
50% {
top: -25px;
}
70% {
top: 0px;
}
}
@keyframes b {
0%,
10%,
80%,
100% {
bottom: -30px;
}
20% {
bottom: 0px;
}
30% {
bottom: -20px;
}
40% {
bottom: -0px;
}
50% {
bottom: -25px;
}
70% {
bottom: 0px;
}
}
@keyframes mouth {
0%,
10%,
100% {
width: 100%;
height: 0%;
}
15% {
width: 90%;
height: 30%;
}
20% {
width: 50%;
height: 70%;
}
25% {
width: 70%;
height: 70%;
}
30% {
width: 80%;
height: 60%;
}
35% {
width: 60%;
height: 70%;
}
40% {
width: 55%;
height: 75%;
}
45% {
width: 50%;
height: 90%;
}
50% {
width: 40%;
height: 70%;
}
55% {
width: 70%;
height: 95%;
}
60% {
width: 40%;
height: 50%;
}
65% {
width: 100%;
height: 60%;
}
70% {
width: 100%;
height: 70%;
}
75% {
width: 90%;
height: 70%;
}
80% {
width: 50%;
height: 70%;
}
85% {
width: 90%;
height: 50%;
}
85% {
width: 40%;
height: 70%;
}
90% {
width: 90%;
height: 30%;
}
95% {
width: 100%;
height: 10%;
}
}
@keyframes tongue {
0%,
20%,
100% {
bottom: -80px;
}
30%,
90% {
bottom: -40px;
}
40% {
bottom: -45px;
}
50% {
bottom: -50px;
}
70% {
bottom: -80px;
}
90% {
bottom: -40px;
}
}
</style>

View File

@ -3,45 +3,45 @@
<u-popup v-model="shows" @close="close" :mask-close-able="false" :safe-area-inset-bottom="true" mode="bottom"
border-radius="32" closeable>
<view class="title">购买后继续观看</view>
<view class="money">
<!-- <view class="money">
<view class="money-l flex align-center">
账号余额:
<text>{{moneyNum}}</text>
<text>{{moneyNum}}</text>
<view class="money-l-go" @click="goWallet('/me/wallet/wallet')">
查看明细
</view>
</view>
<view class="money-r">
解锁价格:
<text>{{payPrice}}</text>
<text>{{payPrice}}</text>
</view>
</view>
<scroll-view scroll-y="true" class="payLists">
</view> -->
<!-- <scroll-view scroll-y="true" class="payLists">
<view class="payList">
<view class="payList-item" @click="current = index" :class="current == index?'activePrice':''"
v-for="(item,index) in wallet" :key="index">
v-for="(item,index) in wallet" :key="index"> -->
<!-- #ifdef MP-TOUTIAO -->
<view class="payList-item-price">
<!-- <view class="payList-item-price">
{{item.payDiamond}}钻石
</view>
</view> -->
<!-- #endif -->
<!-- #ifndef MP-TOUTIAO -->
<view class="payList-item-price">
<!-- <view class="payList-item-price">
¥{{item.price}}
</view>
</view> -->
<!-- #endif -->
<view class="payList-item-dou">
{{item.money}}
<!-- <view class="payList-item-dou">
{{item.money}}
</view>
<view class="payList-item-duo" v-if="item.giveMoney>0">
多送{{item.giveMoney}}
多送{{item.giveMoney}}
</view>
<view class="payList-item-hui" v-if="item.remarks">
{{item.remarks}}
</view>
</view>
</view>
</scroll-view>
</scroll-view> -->
<!-- 支付类型 -->
<view class="payType">
<view class="payType-item" @tap='selectWay(item)' v-for="(item,index) in openLists" :key="index">
@ -132,7 +132,11 @@
type: Boolean,
default: true
},
//
orderId: {
type: Number,
default: null
},
//
payPrice: {
type: Number,
default: 0
@ -176,55 +180,61 @@
// #endif
// #ifdef APP-PLUS
if (plus.os.name.toLowerCase() === 'android') {
this.openLists = [{
image: '/static/images/pay/weixin.png',
text: '微信',
id: 2
}, {
image: '/static/images/pay/zhifubao.png',
text: '支付宝',
id: 1
}];
this.openWay = 2;
let syPaySel = this.$queue.getData('syPaySel')
if (syPaySel === '是') {
let openListsItem = {
image: '/static/images/pay/shouyi.png',
text: '收益余额',
id: 4
};
this.openLists.push(openListsItem)
}
} else {
let checkIosPay = this.$queue.getData('checkIosPay');
if (checkIosPay === '是') {
this.openLists = [{
image: '/static/images/pay/weixin.png',
text: '苹果',
id: 3
}];
this.openWay = 3;
} else {
this.openLists = [{
image: '/static/images/pay/weixin.png',
text: '微信',
id: 2
}, {
this.openLists = [
// {
// image: '/static/images/pay/weixin.png',
// text: '',
// id: 2
// },
{
image: '/static/images/pay/zhifubao.png',
text: '支付宝',
id: 1
}];
this.openWay = 2;
let syPaySel = this.$queue.getData('syPaySel')
if (syPaySel === '是') {
let openListsItem = {
image: '/static/images/pay/shouyi.png',
text: '收益余额',
id: 4
};
this.openLists.push(openListsItem)
}
}
];
this.openWay = 1;
let syPaySel = this.$queue.getData('syPaySel')
// if (syPaySel === '') {
// let openListsItem = {
// image: '/static/images/pay/shouyi.png',
// text: '',
// id: 4
// };
// this.openLists.push(openListsItem)
// }
} else {
let checkIosPay = this.$queue.getData('checkIosPay');
// if (checkIosPay === '') {
// this.openLists = [{
// image: '/static/images/pay/weixin.png',
// text: '',
// id: 3
// }];
// this.openWay = 3;
// } else {
this.openLists = [
// {
// image: '/static/images/pay/weixin.png',
// text: '',
// id: 2
// },
{
image: '/static/images/pay/zhifubao.png',
text: '支付宝',
id: 1
}
];
this.openWay = 1;
let syPaySel = this.$queue.getData('syPaySel')
// if (syPaySel === '') {
// let openListsItem = {
// image: '/static/images/pay/shouyi.png',
// text: '',
// id: 4
// };
// this.openLists.push(openListsItem)
// }
// }
}
// #endif
@ -240,31 +250,31 @@
// #ifdef H5
let ua = navigator.userAgent.toLowerCase();
if (ua.indexOf('micromessenger') !== -1) {
this.openLists = [{
image: '/static/images/pay/weixin.png',
text: '微信',
id: 2
}];
this.openWay = 2;
} else {
// if (ua.indexOf('micromessenger') !== -1) {
// this.openLists = [{
// image: '/static/images/pay/weixin.png',
// text: '',
// id: 2
// }];
// this.openWay = 2;
// } else {
this.openLists = [{
image: '/static/images/pay/zhifubao.png',
text: '支付宝',
id: 1
}];
this.openWay = 1;
}
// }
let syPaySel = this.$queue.getData('syPaySel')
if (syPaySel === '是') {
let openListsItem = {
image: '/static/images/pay/shouyi.png',
text: '收益余额',
id: 4
};
this.openLists.push(openListsItem)
}
// if (syPaySel === '') {
// let openListsItem = {
// image: '/static/images/pay/shouyi.png',
// text: '',
// id: 4
// };
// this.openLists.push(openListsItem)
// }
// #endif
},
methods: {
@ -562,28 +572,36 @@
// #endif
} else if (this.openWay == 1) {
console.log(this.orderId)
let paytype='h5'
// #ifdef APP
paytype='app'
// #endif
console.log('paypop payType='+paytype);
// APP
// #ifdef APP
this.$Request.postT("/app/aliPay/payMoney", {
classify: 1,
payClassifyId: this.wallet[this.current].payClassifyId,
}).then(ret => {
this.$Request.getT("/app/wuyou/payOrder/"+ this.orderId+'?payType='+paytype,{}).then(ret => {
console.log(ret)
this.isCheckPay(ret.code, 'alipay', ret.data);
// this.isCheckPay(ret.code, 'alipay', ret.data);
that.$emit('paySuccess', ret.data)
});
// #endif
// #ifdef H5
let data = {
classify: 2,
payClassifyId: this.wallet[this.current].payClassifyId,
orderId: this.orderId,
}
this.$Request.postT('/app/aliPay/payMoney', data).then(
this.$Request.getT("/app/wuyou/payOrder/"+ this.orderId+'?payType='+paytype, {}).then(
res => {
if (res.code === 0) {
const div = document.createElement('div')
div.innerHTML = res.data //form
document.body.appendChild(div)
document.forms[0].submit()
console.log(res)
that.$emit('paySuccess', {
ordersId: this.orderId,
h5Url: res.data.h5Url
})
// const div = document.createElement('div')
// div.innerHTML = res.data //form
// document.body.appendChild(div)
// document.forms[0].submit()
} else {
uni.showToast({
icon: 'none',
@ -601,7 +619,7 @@
this.$Request.postT("/app/ios/insertPayMoneyOrders", data).then(res => {
if (res.code === 0) {
this.iosPayId = res.data.orderId;
this.iphonepay();
// this.iphonepay();
} else {
uni.showToast({
icon: 'none',

View File

@ -0,0 +1,720 @@
<template>
<view>
<u-popup v-model="show">
<view class="almost-lottery">
<!-- head -->
<view class="almost-lottery__head">
<view class="btn-group u-flex u-row-between">
<view :class="['action', isApple && 'action-shadow']" @click="toRed">
<text class="pack"></text>
<text class="content">红包<text class="num">{{ totalMoney }}</text></text>
</view>
<view :class="['action', isApple && 'action-shadow']" @click="toGift">
<text class="gift"></text>
<text class="content">我的奖品</text>
</view>
</view>
<!-- <view class="tip"><text class="tip-content">每次抽奖消耗 {{ goldNum }} 金币不限次数</text></view> -->
</view>
<!-- action -->
<!-- <view class="almost-lottery__action-dev" @tap="handleInitCanvas" v-if="isDev">
<text class="text">重新生成画板-开发模式使用</text>
</view>
<view class="almost-lottery__action-dev" @tap="handleCheckPopup">
<text class="text">查看 uni-popup 用例</text>
</view> -->
<!-- lottery -->
<view class="almost-lottery__wheel">
<almost-lottery :lottery-size="lotteryConfig.lotterySize" :action-size="lotteryConfig.actionSize"
:ring-count="2" :duration="1" :self-rotaty="false" :img-circled="true" :canvasCached="true"
:prize-list="prizeList" :prize-index="prizeIndex" :lotteryBg="lotteryBg" :actionBg="actionBg"
@reset-index="prizeIndex = -1" @draw-before="handleDrawBefore" @draw-start="handleDrawStart"
@draw-end="handleDrawEnd" @finish="handleDrawFinish" v-if="prizeList.length" />
<view class="almost-lottery__count">
<text class="text">剩余免费抽奖 {{ freeNum }} </text>
</view>
</view>
<!-- rule -->
<view class="almost-lottery__rule">
<view class="rule-head">
<view class="line"></view>
<text class="title">活动规则</text>
<view class="line"></view>
</view>
<view class="rule-body">
<view class="item">
<view class="number">1</view>
<view class="text">
<text>抽奖细则</text>
<text>每人每天最多拥有{{ freeNumDay }}次抽奖机会</text>
</view>
</view>
<view class="item item-rule">
<view class="number">2</view>
<view class="text">
<text>奖励说明</text>
<text>a.现金奖系统会即时转入红包余额可提现</text>
<!-- <text>b.金币奖系统会即时转入金币账户可在平台内使用</text> -->
<text>b.实物奖中奖后需联系客服领取</text>
</view>
</view>
<!-- <template >
<view class="item">
<view class="number">3</view>
<view class="text">本次活动由XXXXXXX发起</view>
</view>
<view class="item">
<view class="number">4</view>
<view class="text">本活动仅限17岁以上用户参加</view>
</view>
<view class="item">
<view class="number">5</view>
<view class="text">本活动最终解释权归XXXXXXX所有</view>
</view>
</template> -->
</view>
</view>
</view>
</u-popup>
</view>
</template>
<script>
import AlmostLottery from '@/uni_modules/almost-lottery/components/almost-lottery/almost-lottery.vue'
import {
clearCacheFile,
clearStore
} from '@/uni_modules/almost-lottery/utils/almost-utils.js'
export default {
name: 'Home',
components: {
AlmostLottery
},
data() {
return {
show:true,
//
totalMoney: 0,
//
result: '',
//
isDev: true,
option: {},
//
lotteryConfig: {
// rpx
lotterySize: 600,
// rpx
actionSize: 200
},
// UI
// 稿
lotteryBg: require('@/uni_modules/almost-lottery/static/almost-lottery/almost-lottery__bg2x.png'),
//
actionBg: require('@/uni_modules/almost-lottery/static/almost-lottery/almost-lottery__action2x.png'),
//
//
prizeList: [],
//
onStock: true,
//
prizeIndex: -1,
//
prizeing: false,
//
//
onFrontend: false,
//
prizeWeightMax: 0,
//
prizeWeightArr: [],
//
//
goldCoin: 20,
//
freeNum: 1,
//
goldNum: 20,
//
freeNumDay: 10
}
},
computed: {
isApple() {
return uni.getSystemInfoSync().platform === 'ios'
}
},
methods: {
toRed() {
uni.navigateTo({
url: '/me/balance/index'
})
},
toGift() {
console.log('1');
uni.navigateTo({
url: '/me/gift/gift'
})
},
//
handleInitCanvas() {
clearCacheFile()
clearStore()
this.prizeList = []
this.getPrizeList()
},
// popup
handleCheckPopup() {
uni.navigateTo({
url: '/pages/popup/popup'
})
},
//
async getPrizeList() {
uni.showLoading({
title: '奖品准备中...'
})
//
let res = await this.requestApiGetPrizeList()
console.log('获取奖品列表', res)
if (res.ok) {
let data = res.data
if (data.length) {
this.prizeList = data
console.log('已获取到奖品列表数据,开始绘制抽奖转盘')
//
if (console.time) {
console.time('绘制转盘用时')
}
//
//
if (this.onFrontend) {
//
this.prizeWeightArr = this.prizeList.map(item => item.prizeWeight)
let prizeWeightArrSort = [...this.prizeWeightArr]
prizeWeightArrSort.sort((a, b) => b - a)
//
this.prizeWeightMax = this.prizeWeightMax > 0 ? this.prizeWeightMax : prizeWeightArrSort[0]
}
}
} else {
uni.hideLoading()
uni.showToast({
title: '获取奖品失败',
mask: true,
icon: 'none'
})
}
},
//
// Promise
//
async requestApiGetPrizeList() {
const res = await this.$Request.getT('/app/discSpinning/selectDiscSpinning')
if (res.code == 0) {
return {
ok: true,
data: res.data.records.map(v => {
return {
...v,
prizeId: v.id,
prizeName: v.name,
prizeStock: 10,
prizeWeight: 200,
prizeImage: v.url,
// prizeImage: require('@/static/git.png')
}
})
}
}
return
return new Promise((resolve, reject) => {
let requestTimer = setTimeout(() => {
clearTimeout(requestTimer)
requestTimer = null
// prizeStock
// prizeWeight
resolve({
ok: true,
data: [{
prizeId: 1,
prizeName: '0.1元现金',
prizeStock: 10,
prizeWeight: 200,
prizeImage: require('@/static/git.png')
},
{
prizeId: 2,
prizeName: '10元现金',
prizeStock: 0,
prizeWeight: 50,
prizeImage: 'https://vkceyugu.cdn.bspapp.com/VKCEYUGU-dc-site/56f085e0-bcfe-11ea-b244-a9f5e5565f30.png'
},
{
prizeId: 3,
prizeName: '5元话费',
prizeStock: 1,
prizeWeight: 80
},
{
prizeId: 4,
prizeName: '50元现金',
prizeStock: 0,
prizeWeight: 10,
prizeImage: 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABkAAAAZCAYAAADE6YVjAAAB2klEQVRIia3Wv09TURjG8U+u2kQZcNENh2ok0cnJ0R+L0RB2g/EvwITEwRgnV0Zx0fAHYBh0khBD4sBAmAgDiwQNg4qwmSBDAYf7Fi+n97al9UlObnvO836f3tO355b2GsAYZrCBPRzGdSPmx8J3YtXwDDsB7TR2wl/rNmAYK13C07ES9W11E9s9BjTHdnBKVf8PAcWgehpwCssF0w/5FzqLgw7AA7zDQ/wqzC8H90jjSeFMYW0Yr8PzALfjOh7z1wve2YTzpLlQw2ay+KZ1N7vS24SziVqGexhKzB07pEJXk/dDwTetdZ9HewwZLWFNw2oyudZjQFNrCW8109pqS32GpPX1TOu586fPkLR+IEMjmbzYZ0ha34Atx/fwW58hXxPeFixo7Yg7PQbcKmEtZFgsMb/C4AkDBuUnQKpFuFZI3cZuvP6C+8g6wDP572O95C4Og49/W/YJl/G5YPqO9yV3dh4f8LMCfhjcI93Afix8xAX5SVx2YBY10yagEdxjmiwY7uISXuIFrlSEPG0TMllWcAbzYViXd0rzeXC6ImSiImA+eKU6h7mCeV/eCBMnCJkLzpHSztnFCJ7L//ZkOFv1iRLtRd1IcLpSHVP4jccVnkexPqXkmd7UX15b7tiz29ReAAAAAElFTkSuQmCC'
},
{
prizeId: 5,
prizeName: '1卷抽纸',
prizeStock: 3,
prizeWeight: 3000,
prizeImage: 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADIAAAAyCAYAAAAeP4ixAAABCElEQVRoge3YMa4BURSH8Y8o7UAp0WgkotBZwluAfhqlZSgUGr23ENUUCpppJnTswAIUSCaTiziZJ8d9/193zdzrfMltABF5plb+oLscDoAV0Pn8OC/lwDhL0k35QT3wstcIuM61Cj0IhXiNuAvOFwr5SgrxRiHeKMSbhnHfAVgU1i1gajhnBpwK6wnQtgxkDTlmSTq/L7rLYQ9byG+WpLvCOT8YQ6K5WgrxRiHeKMQbhXijEG8U4o1CvIkmxPrDquwMrI37KlFJSJake2BUxVlW0VytaEKsV6t5+8Ohak3rRmtIH9hav/QvRHO1FOKNQrwJheQfn+I9wflCIeNHLzuQc51PRP6rC1ZeIm1I8cC5AAAAAElFTkSuQmCC'
},
{
prizeId: 6,
prizeName: '0.2元现金',
prizeStock: 8,
prizeWeight: 120
},
{
prizeId: 7,
prizeName: '谢谢参与',
prizeStock: 100,
prizeWeight: 10000
},
{
prizeId: 8,
prizeName: '100金币',
prizeStock: 100,
prizeWeight: 3000
}
]
})
}, 200)
})
},
//
async handleDrawBefore(callback) {
console.log('抽奖开始之前')
let flag = false
//
if (this.freeNum > 0) {
this.freeNum--
flag = true
} else {
flag = false
uni.showToast({
title: '抽奖次数不足',
icon: 'none'
})
}
callback(flag)
},
//
handleDrawStart() {
console.log('触发抽奖按钮')
if (this.prizeing) return
this.prizeing = true
this.tryLotteryDraw()
},
//
tryLotteryDraw() {
console.log('旋转开始,获取中奖下标......')
//
if (this.onFrontend) {
this.localGetPrizeIndex()
} else {
this.remoteGetPrizeIndex()
}
},
//
localGetPrizeIndex() {
console.warn('###当前处于前端控制中奖概率,安全起见,强烈建议由后端控制###')
//
// prizeId
if (!this.prizeWeightMax || !this.prizeWeightArr.length) {
console.warn('###当前已开启前端控制中奖概率,但是奖品数据列表中的 prizeWeight 参数似乎配置不正确###')
return
}
console.log('当前权重最大值为 =>', this.prizeWeightMax)
// 使 Math.ceil 0
let randomWeight = Math.ceil(Math.random() * this.prizeWeightMax)
console.log('本次权重随机数 =>', randomWeight)
//
let tempMaxArrs = []
this.prizeList.forEach((item) => {
if (item.prizeWeight >= randomWeight) {
tempMaxArrs.push(item.prizeWeight)
}
})
console.log('tempMaxArrs', tempMaxArrs)
//
//
let tempMaxArrsLen = tempMaxArrs.length
if (tempMaxArrsLen) {
tempMaxArrs.sort((a, b) => a - b)
//
if (tempMaxArrsLen > 1) {
//
let sameCount = 0
for (let i = 0; i < tempMaxArrs.length; i++) {
if (tempMaxArrs[i] === tempMaxArrs[0]) {
sameCount++
}
}
// 1
if (sameCount === 1) {
this.prizeIndex = this.prizeWeightArr.indexOf(tempMaxArrs[0])
} else {
//
let sameWeight = tempMaxArrs[0]
let sameWeightArr = []
let sameWeightItem = {}
this.prizeWeightArr.forEach((item, index) => {
if (item === sameWeight) {
sameWeightArr.push({
prizeWeight: item,
index
})
}
})
console.log('sameWeightArr', sameWeightArr)
sameWeightItem = sameWeightArr[Math.floor(Math.random() * sameWeightArr.length)]
console.log('sameWeightItem', sameWeightItem)
this.prizeIndex = sameWeightItem.index
}
} else {
this.prizeIndex = this.prizeWeightArr.indexOf(tempMaxArrs[0])
}
}
console.log('本次抽中奖品 =>', this.prizeList[this.prizeIndex].prizeName)
//
if (this.onStock) {
console.log('本次奖品库存 =>', this.prizeList[this.prizeIndex].prizeStock)
}
},
//
//
async remoteGetPrizeIndex() {
this.result = ''
console.warn('###当前处于模拟的请求接口,并返回了中奖信息###')
const res = await this.$Request.getT('app/discSpinning/draw', {
orderId: this.option.orderId || 2145
})
console.log(res);
if (res.code != 0) {
return uni.showToast({
title: res.msg
})
}
this.result = res.data
let list = [...this.prizeList]
// prizeId prizeId
const arr = list.filter(v => v.type == res.data.type)
let prizeId = arr[0].prizeId
// prizeId
for (let i = 0; i < list.length; i++) {
let item = list[i]
if (item.prizeId === prizeId) {
//
this.prizeIndex = i
break
}
}
console.log('本次抽中奖品 =>', this.prizeList[this.prizeIndex].prizeName)
},
//
handleDrawEnd() {
console.log('旋转结束,执行拿到结果后到逻辑')
//
// const prize = this.prizeList[this.prizeIndex]
const prize = this.result
let {
name
} = prize
let tipContent = ''
if (name.type == 1) {
tipContent = '很遗憾,没有中奖,请再接再厉!'
} else {
tipContent = `恭喜您,获得 ${name}${this.result.type==2?(this.result.number+'元'):''} `
}
const _this = this;
uni.showToast({
title: tipContent,
icon: 'none'
})
_this.getRedPack()
this.prizeing = false
},
//
handleDrawFinish(res) {
console.log('抽奖转盘绘制完成', res)
if (res.ok) {
//
if (console.timeEnd) {
console.timeEnd('绘制转盘用时')
}
}
let stoTimer = setTimeout(() => {
stoTimer = null
uni.hideLoading()
// uni.showToast({
// title: res.msg,
// mask: true,
// icon: 'none'
// })
}, 50)
},
async getRedPack() {
const res = await this.$Request.getT('app/moneyDetails/selectUserMoney')
if (res.code == 0) {
this.totalMoney = res.data.amount
}
}
},
onLoad(opt) {
this.option = opt
this.prizeList = []
this.getRedPack()
this.getPrizeList()
},
onUnload() {
uni.hideLoading()
}
}
</script>
<style lang="scss" scoped>
.btn-group {
position: absolute;
left: 0;
right: 0;
z-index: 2;
top: 200px;
gap: 20rpx;
padding: 0 32rpx;
}
.almost-lottery {
flex: 1;
background-color: #FF893F;
}
.almost-lottery__head {
position: relative;
width: 100%;
height: 640rpx;
background: url('~static/images/lottery/top-bg.png') no-repeat center center/cover;
.action {
display: flex;
justify-content: center;
align-items: center;
flex: 1;
height: 88rpx;
line-height: 88rpx;
margin: 0 auto;
color: #FFFFFF;
font-size: 32rpx;
background-color: rgba(255, 136, 61, 1);
border-radius: 44rpx;
}
.action-shadow {
box-shadow: 0px 14rpx 0px 0px rgba(235, 112, 36, 1);
}
.pack {
width: 44rpx;
height: 44rpx;
margin-right: 10rpx;
background-repeat: no-repeat;
background-position: center center;
background-size: contain;
background-image: url("~static/red-pack.png");
}
.gift {
width: 44rpx;
height: 44rpx;
margin-right: 10rpx;
background-repeat: no-repeat;
background-position: center center;
background-size: contain;
background-image: url("~static/gift.png");
}
.gold {
width: 44rpx;
height: 44rpx;
margin-right: 10rpx;
background-repeat: no-repeat;
background-position: center center;
background-size: contain;
background-image: url("~static/images/lottery/gold.png");
@media (-webkit-min-device-pixel-ratio: 2),
(min-device-pixel-ratio: 2) {
background-image: url("~static/images/lottery/gold@2x.png");
}
@media (-webkit-min-device-pixel-ratio: 3),
(min-device-pixel-ratio: 3) {
background-image: url("~static/images/lottery/gold@3x.png");
}
}
.num {
color: #F9FC31;
}
.tip {
position: relative;
top: 428rpx;
color: #FFFFFF;
font-size: 24rpx;
text-align: center;
}
}
.almost-lottery__wheel {
text-align: center;
.almost-lottery__count {
display: flex;
flex-direction: column;
justify-content: center;
align-items: center;
text-align: center;
padding: 40rpx 0;
}
.text {
color: #FFFFFF;
font-size: 24rpx;
}
}
.almost-lottery__rule {
padding: 0 28rpx;
color: #FFF8CB;
.rule-head {
display: flex;
justify-content: space-around;
align-items: center;
margin: 40rpx 0;
.line {
flex: 1;
height: 1px;
background-color: #FFF3A5;
}
.title {
width: 280rpx;
color: #F63857;
line-height: 70rpx;
text-align: center;
margin: 0 20rpx;
border-radius: 8rpx;
background-image: linear-gradient(0deg, rgba(255, 242, 158, 1), rgba(255, 244, 168, 1));
}
}
.rule-body {
color: #FFF8CB;
font-size: 24rpx;
padding: 10rpx 0 40rpx;
.item {
display: flex;
margin-bottom: 10rpx;
}
.number {
position: relative;
top: 4rpx;
width: 28rpx;
height: 28rpx;
line-height: 28rpx;
text-align: center;
color: #F63857;
background: #FFF8CB;
border-radius: 50%;
margin-right: 10rpx;
}
.text {
flex: 1;
}
.item-rule .text {
display: flex;
flex-direction: column;
}
}
}
.almost-lottery__action-dev {
display: flex;
flex-direction: row;
justify-content: center;
align-items: center;
width: 400rpx;
height: 80rpx;
border-radius: 10rpx;
text-align: center;
background-color: red;
margin: 0 auto 40rpx;
.text {
color: #FFFFFF;
font-size: 28rpx;
}
}
.almost-lottery__popup-wrap {
flex: 1;
display: flex;
justify-content: center;
align-items: center;
.almost-lottery {
background: transparent;
}
}
</style>

141
components/pop-ling-qu.vue Normal file
View File

@ -0,0 +1,141 @@
<template>
<view>
<u-popup v-model="show" mode="center" @close="close">
<view class="bg">
<view class="title">恭喜您获得</view>
<view class="goods">
<template v-if="result&&result.type==3">
<view class="u-flex u-col-center u-row-center">
<image style="height: 100px;" :src="result.img||result.url" mode="heightFix"></image>
</view>
<view class="u-flex u-row-center u-m-t-30">
<view class="type">{{result.name}}</view>
</view>
</template>
<template v-if="result&&result.type==2">
<view class="u-flex color-money u-col-center u-row-center">
<view class="money">{{result.number}}</view>
<view class="font-bold " style="margin-top: 20rpx;font-size: 36rpx;"></view>
</view>
<view class="u-flex u-m-t-24 u-row-center">
<view class="type">现金红包</view>
</view>
</template>
</view>
<view class="u-flex close u-row-center">
<u-icon name="close-circle" :size="54" @click="close" color="#fff"></u-icon>
</view>
</view>
</u-popup>
</view>
</template>
<script>
export default {
data() {
return {
show: false,
result: ''
}
},
methods: {
open(data) {
this.result = data
this.show = true
},
close() {
console.log('抽奖弹窗关闭');
this.show = false
this.$emit('close',key)
}
}
}
</script>
<style lang="scss" scoped>
::v-deep .u-mode-center-box {
background-color: transparent;
}
.color-money {
color: #E42F00;
}
.money {
font-weight: 700;
font-size: 96rpx;
letter-spacing: 2px;
}
.bg {
width: 628rpx;
height: 770rpx;
margin-right: 10rpx;
background-color: transparent;
background-repeat: no-repeat;
background-position: center center;
background-size: cover;
background-image: url("~static/images/zhuanpan/gift.png");
position: relative;
@media (-webkit-min-device-pixel-ratio: 2),
(min-device-pixel-ratio: 2) {
background-image: url("~static/images/zhuanpan/gift@2x.png");
}
.title {
position: absolute;
top: 218rpx;
text-align: center;
left: 0;
right: 0;
font-weight: 700;
font-size: 60rpx;
color: #AF6920;
letter-spacing: 4rpx;
}
.goods {
position: absolute;
top: 336rpx;
text-align: center;
left: 0;
right: 0;
text-align: center;
}
.type {
padding: 6rpx 28rpx;
border-radius: 100rpx;
background: #E25B41;
font-size: 28rpx;
color: #fff;
font-weight: bold;
}
.close{
position: absolute;
bottom: 0;
left: 0;
right: 0;
}
.btn-box {
position: absolute;
top: 574rpx;
left: 0;
right: 0;
.btn {
padding: 10rpx 60rpx 10rpx 64rpx;
text-align: center;
font-weight: bold;
font-size: 44rpx;
color: #AF6920;
letter-spacing: 2px;
}
}
}
</style>

View File

@ -4,7 +4,7 @@
<view class="list-box">
<view class="list-box-title flex align-center justify-between">
<view class="list-box-title-name">
{{title}}
{{title||''}}
</view>
<view @click="clickItem('more')" class="list-box-title-more flex align-center">
查看更多

View File

@ -1,6 +1,7 @@
<!DOCTYPE html>
<html>
<head>
<!-- <meta name="referrer" content="never"> -->
<script src="https://libs.baidu.com/jquery/1.11.3/jquery.min.js"></script>
<script language="JavaScript" type="text/JavaScript">
/**

BIN
key/certificate.cer Normal file

Binary file not shown.

1
key/readme.md Normal file
View File

@ -0,0 +1 @@
vMLdZb1r

BIN
key/video.keystore Normal file

Binary file not shown.

View File

@ -0,0 +1,94 @@
<template>
<view class="demo-title">
<view>
<view v-if="type === 'first'" class="main_title">
<view v-if="leftIcon" class="main_title__icon main_title__icon--left" :class="[`tn-icon-${leftIcon}`]"></view>
<view class="main_title__content">{{ title }}</view>
<view v-if="rightIcon" class="main_title__icon main_title__icon--right" :class="[`tn-icon-${rightIcon}`]"></view>
</view>
<view v-if="type === 'second'" class="second_title">
<view class="second_title__content">{{ title }}</view>
</view>
</view>
<view class="content" :class="[{
'content--padding': contentPadding
}]">
<slot></slot>
</view>
</view>
</template>
<script>
export default {
name: 'demo-title',
options: {
// Vue(shadow)
virtualHost: true
},
props: {
//
type: {
type: String,
default: 'first'
},
//
title: {
type: String,
default: ''
},
//
leftIcon: {
type: String,
default: 'star'
},
//
rightIcon: {
type: String,
default: 'star'
},
//
contentPadding: {
type: Boolean,
default: true
}
}
}
</script>
<style lang="scss" scoped>
.main_title {
display: flex;
align-items: center;
justify-content: center;
margin-top: 50rpx;
font-size: 36rpx;
font-weight: bold;
&__content {
padding: 0 18rpx;
}
&__icon {
font-size: 34rpx;
}
}
.second_title {
margin: 24rpx 0;
margin-left: 30rpx;
&__content {
font-size: 32rpx;
font-weight: bold;
}
}
.content {
margin-top: 30rpx;
&--padding {
margin-left: 30rpx;
margin-right: 30rpx;
}
}
</style>

View File

@ -0,0 +1,689 @@
<template>
<view class="dynamic-demo">
<!-- 效果预览窗口 -->
<view v-if="!noDemo" class="demo-container" :class="{'demo-container--full': full}">
<view class="demo">
<slot></slot>
</view>
<!-- 提示信息 -->
<view v-if="haveTips">
<view class="demo__tips__icon" @click="demoTipsClick">
<view class="icon tn-icon-help"></view>
</view>
<view class="demo__tips__content"
:class="[showContentTips ? 'demo__tips__content--show' : 'demo__tips__content--hide']">
<view v-for="(item,index) in tipsData" :key="index" class="demo__tips__content--item">{{ item }}</view>
</view>
</view>
</view>
<!-- 模式切换 -->
<view v-if="multiMode" class="mode-switch">
<view class="mode-switch__container">
<view v-for="(item, index) in sectionModeListInfos" :key="index" class="mode-switch__item"
:class="[`mode-switch-item-${index}`,{'mode-switch__item--active': modeIndex === index}]"
@click="switchMode(index)">{{ item.name }}</view>
<!-- 滑块样式 -->
<view class="mode-switch__slider" :style="[modeSwitchSliderStyle]"></view>
</view>
</view>
<!-- 组件对应可选项容器 -->
<view class="section-container">
<scroll-view
class="section__scroll-view"
:class="{'section__scroll-view--auto': sectionScrollViewStyle.height === 'auto'}"
:style="[sectionScrollViewStyle]"
:scroll-y="sectionScrollViewStyle.height !== 'auto'"
>
<block v-for="(item,index) in btnsList" :key="index">
<view class="section__content" :class="{'section__content--visible': item.show}">
<view class="section__content__title">
<view class="section__content__title__left-line" :class="[`tn-main-gradient-${tuniaoColorList[index]}`]"></view>
<view class="section__content__title--text tn-text-ellipsis" :class="[`tn-main-gradient-${tuniaoColorList[index]}`]">{{ item.title }}</view>
<view class="section__content__title__right-line" :class="[`tn-main-gradient-${tuniaoColorList[index]}`]"></view>
</view>
<view class="section__content__btns">
<view v-for="(section_btn,section_index) in item.optional" :key="section_index"
class="section__content__btns__item" :class="[`tn-main-gradient-${tuniaoColorList[index]}--light`]" @click="sectionBtnClick(index, section_index)">
<view class="section__content__btns__item__bg"
:class="[`tn-main-gradient-${tuniaoColorList[index]}`, {'section__content__btns__item__bg--active':sectionIndex[modeIndex][index]['value'] === section_index}]"></view>
<view class="section__content__btns__item--text tn-text-ellipsis"
:class="[sectionIndex[modeIndex][index]['value'] === section_index ? 'section__content__btns__item--text--active' : `tn-color-${tuniaoColorList[index]}`]">{{ section_btn }}</view>
</view>
</view>
</view>
</block>
</scroll-view>
</view>
</view>
</template>
<script>
export default {
name: 'dynamic-demo-template',
props: {
//
sectionList: {
type: Array,
default() {
return []
}
},
//
tips: {
type: [String, Array],
default: ''
},
//
full: {
type: Boolean,
default: false
},
// 使
customBar: {
type: Boolean,
default: true
},
//
fullWindowsScroll: {
type: Boolean,
default: false
},
//
noDemo: {
type: Boolean,
default: false
}
},
computed: {
tipsData() {
if (typeof this.tips === 'string') {
return [this.tips]
}
return this.tips
},
haveTips() {
return this.tips && this.tips.length > 0
},
multiMode() {
return this.sectionList.length > 1
},
sectionModeList() {
return this.sectionList.map((item) => {
return item.name
})
}
},
data() {
return {
//
tuniaoColorList: this.$t.color.getTuniaoColorList(),
// prop
_sectionList: [],
//
sectionModeListInfos: [],
//
modeIndex: 0,
//
modeSwitchSliderStyle: {
width: 0,
left: 0
},
//
showContentTips: false,
//
sectionScrollViewStyle: {
height: 0
},
//
btnsList: [],
//
sectionIndex: [],
// 使scroll-view
sectionScrollFlag: true
}
},
watch: {
sectionList: {
handler(value) {
// sectionList
this.initSectionBtns()
},
deep: true
},
sectionScrollFlag(value) {
if (!value) {
this.sectionScrollViewStyle.height = 'auto'
}
},
fullWindowsScroll: {
handler(value) {
if (value) {
this.sectionScrollViewStyle.height = 'auto'
}
},
immediate: true
}
},
created() {
//
this.sectionModeListInfos = this.sectionModeList.map((item) => {
return {
name: item
}
})
//
this.initSectionBtns()
},
mounted() {
//
// setTimeout(() => {
// // scroll-view
// this.initSectionScrollView()
// if (this.multiMode) {
// //
// this.getModeTabsInfo()
// }
// }, 10)
this.$nextTick(() => {
// scroll-view
this.initSectionScrollView()
if (this.multiMode) {
//
this.getModeTabsInfo()
}
})
},
methods: {
//
initSectionScrollView() {
//
if (this.fullWindowsScroll) {
return
}
//
uni.getSystemInfo({
success: (systemInfo) => {
//
const navBarHeight = this.customBar ? 0 : this.vuex_custom_bar_height
if (this.multiMode) {
uni.createSelectorQuery().in(this).select('.mode-switch').boundingClientRect(data => {
if (data.bottom >= systemInfo.safeArea.height) {
this.sectionScrollFlag = false
} else {
this.sectionScrollFlag = true
const containerBaseHeight = systemInfo.safeArea.height - data.bottom
this.sectionScrollViewStyle.height = (containerBaseHeight - navBarHeight) + systemInfo.statusBarHeight - uni.upx2px(75) + 'px'
}
}).exec()
} else {
if (!this.noDemo) {
uni.createSelectorQuery().in(this).select('.demo-container').boundingClientRect(data => {
if (data.bottom >= systemInfo.safeArea.height) {
this.sectionScrollFlag = false
} else {
this.sectionScrollFlag = true
const containerBaseHeight = systemInfo.safeArea.height - data.bottom
this.sectionScrollViewStyle.height = (containerBaseHeight - navBarHeight) + systemInfo.statusBarHeight - uni.upx2px(75) + 'px'
}
}).exec()
} else {
this.sectionScrollFlag = false
}
}
}
})
},
//
updateSectionScrollView() {
this.$nextTick(() => {
this.initSectionScrollView()
})
},
// tab
getModeTabsInfo() {
let view = uni.createSelectorQuery().in(this)
for (let i = 0; i < this.sectionModeListInfos.length; i++) {
view.select('.mode-switch-item-' + i).boundingClientRect()
}
view.exec(res => {
//
if (!res.length) {
setTimeout(() => {
this.getModeTabsInfo()
}, 10)
return
}
// list
res.map((item, index) => {
this.sectionModeListInfos[index].width = item.width
})
//
this.modeSwitchSliderStyle.width = this.sectionModeListInfos[0].width + 'px'
//
this.modeSliderPosition()
})
},
//
modeSliderPosition() {
let left = 0
//
this.sectionModeListInfos.map((item, index) => {
if (index < this.modeIndex) left += item.width
})
this.modeSwitchSliderStyle.left = left + 'px'
},
//
switchMode(index) {
//
if (index === this.modeIndex) return
this.modeIndex = index
this.modeSliderPosition()
this.updateSectionBtns()
this.$emit('modeClick', {
index: index
})
},
//
demoTipsClick() {
this.showContentTips = !this.showContentTips
},
//
initSectionBtns() {
this.sectionIndex = []
this.sectionIndex = this.sectionList.map((item) => {
if (item.hasOwnProperty('section') && item.section.length > 0) {
return Array(item.section.length).fill({
value: 0,
change: false
})
} else {
return []
}
})
this._sectionList = this.$t.deepClone(this.sectionList)
// show
this._sectionList.map((item) => {
const section = item.section.map((section_item) => {
if (!section_item.hasOwnProperty('show')) {
section_item.show = true
}
return section_item
})
item.section = section
return item
})
//
this.updateSectionBtns()
},
//
updateSectionBtns(sectionIndex = -1, showState = true) {
let sectionOptional = this._sectionList[this.modeIndex]['section']
this.btnsList = sectionOptional.map((item, index) => {
//
let changeValue = this.sectionIndex[this.modeIndex][index]['change'] || false
let currentSectionIndexValue = this.sectionIndex[this.modeIndex][index]['value'] || 0
// (使)
let indexValue = changeValue ? currentSectionIndexValue : item.hasOwnProperty('current') ? item.current : 0
//
let show = (sectionIndex !== -1 && sectionIndex === index) ? showState : item.hasOwnProperty('show') ? item.show : true
//
if (indexValue < 0) {
indexValue = 0
}
if (indexValue >= item.optional.length) {
indexValue = item.optional.length
}
// this.sectionIndex[this.modeIndex][index]['value'] = indexValue
this.$set(this.sectionIndex[this.modeIndex], index, {value: indexValue, change: changeValue})
item.show = show
return item
})
},
//
updateSectionBtnsState(sectionIndex = -1, showState = true) {
// sectionIndex
if (this.$t.array.isArray(sectionIndex)) {
if (sectionIndex.length === 0) {
return
}
sectionIndex = sectionIndex.filter((item) => item >= 0 && item < this.sectionList[this.modeIndex]['section'].length)
sectionIndex.map((item) => {
this.btnsList[item]['show'] = showState
this._sectionList[this.modeIndex]['section'][item]['show'] = showState
})
} else {
if (sectionIndex < 0 || sectionIndex >= this.sectionList[this.modeIndex]['section'].length) {
return
}
//
this.btnsList[sectionIndex]['show'] = showState
this._sectionList[this.modeIndex]['section'][sectionIndex]['show'] = showState
}
},
//
updateSectionBtnsValue(modeIndex = 0, sectionIndex = -1, value = 0) {
if (sectionIndex < 0 || sectionIndex >= this.sectionList[modeIndex]['section'].length) {
return
}
// showStatefalse
this.sectionIndex[modeIndex][sectionIndex] = {
value,
change: true
}
},
//
sectionBtnClick(index, sectionIndex) {
// if (this.sectionIndex[this.modeIndex][index] === sectionIndex) {
// return
// }
this.$set(this.sectionIndex[this.modeIndex], index, {value: sectionIndex, change: true})
this.$emit('click', {
methods: this.btnsList[index]['methods'],
index: sectionIndex,
name: this.btnsList[index]['optional'][sectionIndex]
})
}
}
}
</script>
<style lang="scss" scoped>
.dynamic-demo {
padding-top: 78rpx;
/* 顶部模式切换start */
.mode-switch {
width: 100%;
display: flex;
align-items: center;
justify-content: center;
margin-top: 75rpx;
padding: 0 30rpx;
&__container {
position: relative;
display: flex;
flex-direction: row;
align-items: center;
width: 476rpx;
height: 62rpx;
background-color: #FFFFFF;
box-shadow: 0rpx 10rpx 50rpx 0rpx rgba(0, 3, 72, 0.1);
border-radius: 31rpx;
}
&__item {
flex: 1;
height: 62rpx;
width: 100%;
line-height: 62rpx;
text-align: center;
font-size: 28rpx;
color: $tn-font-sub-color;
z-index: 2;
transition: all 0.3s;
&--active {
color: #FFFFFF;
font-weight: bold;
}
}
&__slider {
position: absolute;
height: 62rpx;
border-radius: 31rpx;
// background-image: linear-gradient(-86deg, #FF8359 0%, #FFDF40 100%);
background-image: linear-gradient(-86deg, #00C3FF 0%, #58FFF5 100%);
box-shadow: 1rpx 10rpx 24rpx 0rpx #00C3FF77;
z-index: 1;
transition: all 0.3s cubic-bezier(0.68, -0.55, 0.265, 1.55);
}
}
/* 顶部模式切换end */
/* 演示内容展示start */
.demo-container {
min-height: 327rpx;
width: calc(100% - 60rpx);
background-color: #FFFFFF;
box-shadow: 0rpx 10rpx 50rpx 0rpx rgba(0, 3, 72, 0.1);
margin: 0 30rpx 5rpx 30rpx;
border-radius: 20rpx;
position: relative;
display: flex;
justify-content: center;
align-items: center;
&--full {
display: inline-block;
padding-bottom: 20rpx;
min-height: 0rpx;
padding: 10rpx 20rpx 30rpx;
}
.demo {
padding-top: 70rpx;
&__tips {
&__icon {
position: absolute;
top: 20rpx;
right: 16rpx;
width: 39rpx;
height: 39rpx;
line-height: 39rpx;
font-size: 39rpx;
.icon {
background: linear-gradient(-45deg, #FF8359 0%, #FFDF40 100%);
-webkit-background-clip: text;
color: transparent;
text-shadow: 0rpx 10rpx 10rpx rgba(255, 156, 82, 0.2);
}
}
&__content {
position: absolute;
top: 65rpx;
right: 16rpx;
font-size: 20rpx;
margin-left: 20rpx;
word-wrap: normal;
display: flex;
flex-direction: column;
background-color: #E6E6E6;
padding: 20rpx;
border-radius: 10rpx;
transition: transform 0.3s cubic-bezier(0.68, -0.55, 0.265, 1);
transform-origin: 0 0;
z-index: 999999;
&--hide {
transform: scaleY(0);
}
&--show {
transform: scaleY(100%);
&::after {
content: "";
width: 0px;
height: 0px;
border-width: 4px;
border-style: solid;
border-color: transparent transparent rgba(149, 149, 149, 0.1) transparent;
position: absolute;
top: -8px;
right: 6px;
}
}
}
}
}
}
/* 演示内容展示end */
/* 可选项start */
.section-container {
width: 100%;
height: auto;
margin-top: 70rpx;
.section {
&__content {
margin-top: 70rpx;
display: none;
&--visible {
display: block;
&:last-child {
padding-bottom: calc(70rpx + env(safe-area-inset-bottom));
}
}
&:nth-child(1) {
margin-top: 0rpx;
}
&__title {
display: flex;
justify-content: center;
align-items: center;
margin: 0 30rpx;
text-align: center;
&__left-line,
&__right-line {
width: 100rpx;
height: 2rpx;
position: relative;
}
&__left-line {
&::after {
content: '';
background: inherit;
width: 12rpx;
height: 12rpx;
position: absolute;
top: -12rpx;
right: 0rpx;
border-radius: 50%;
transform: translateY(50%);
}
}
&__right-line {
&::after {
content: '';
background: inherit;
width: 12rpx;
height: 12rpx;
position: absolute;
top: -12rpx;
left: 0rpx;
border-radius: 50%;
transform: translateY(50%);
}
}
&--text {
-webkit-background-clip: text;
color: transparent;
min-width: 124rpx;
height: 30rpx;
font-size: 32rpx;
line-height: 1;
margin: 0 35rpx;
}
}
&__btns {
width: calc(100% - 60rpx);
margin: 0 30rpx;
margin-top: 29rpx;
padding: 50rpx 30rpx 0rpx 0rpx;
background-color: #FFFFFF;
box-shadow: 0rpx 10rpx 50rpx 0rpx rgba(0, 3, 72, 0.1);
border-radius: 20rpx;
display: flex;
flex-direction: row;
align-items: center;
justify-content: flex-start;
flex-wrap: wrap;
&__item {
max-width: 30%;
padding: 17rpx 36rpx;
border-radius: 10rpx;
margin-bottom: 40rpx;
margin-left: 40rpx;
position: relative;
z-index: 1;
// &::before {
// content: " ";
// position: absolute;
// top: 10rpx;
// left: 1rpx;
// width: 100%;
// height: 100%;
// background: inherit;
// filter: blur(24rpx);
// opacity: 1;
// z-index: -1;
// }
&__bg {
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
border-radius: inherit;
z-index: -1;
opacity: 0;
transform: scale(0);
transition: all 0.3s cubic-bezier(0.175, 0.885, 0.32, 1.275);
&--active {
opacity: 1;
transform: scale(1);
}
}
&--text {
font-size: 24rpx;
line-height: 1.2em;
transition: all 0.3s cubic-bezier(0.175, 0.885, 0.32, 1.275);
&--active {
color: #FFFFFF;
}
}
}
}
}
}
}
/* 可选项end */
}
</style>

View File

@ -0,0 +1,147 @@
<template>
<view class="multiple-options">
<view class="list">
<block v-for="(item, index) in listData" :key="index">
<view
class="list__item"
:class="[`tn-main-gradient-${tuniaoColorList[item.bgColorIndex]}--light`]"
@tap="navOptionsPage(item.url)"
>
<view class="list__content">
<view class="list__content__title">{{ item.title }}</view>
<view class="list__content__desc">{{ item.desc }}</view>
</view>
<view class="list__icon">
<view class="list__icon__main" :class="[`tn-icon-${item.mainIcon}`, `tn-main-gradient-${tuniaoColorList[item.bgColorIndex]}`]"></view>
<view class="list__icon__sub" :class="[`tn-icon-${item.subIcon}`, `tn-main-gradient-${tuniaoColorList[item.bgColorIndex]}`]"></view>
</view>
</view>
</block>
</view>
</view>
</template>
<script>
export default {
name: 'multiple-options-demo',
props: {
//
list: {
type: Array,
default() {
return []
}
}
},
data() {
return {
//
tuniaoColorList: [
'red',
'purplered',
'purple',
'bluepurple',
'aquablue',
'blue',
'indigo',
'cyan',
'teal',
'green',
'orange',
'orangered'
],
listData: []
}
},
watch: {
list(val) {
this.initList()
}
},
created() {
this.initList()
},
methods: {
//
initList() {
//
this.listData = this.list.map((item, index) => {
item.bgColorIndex = this.getBgNum()
item.mainIcon = item?.mainIcon || 'computer-fill'
item.subIcon = item?.subIcon || 'share'
return item
})
},
//
navOptionsPage(url) {
uni.navigateTo({
url: url
})
},
//
getBgNum() {
return Math.floor((Math.random() * this.tuniaoColorList.length))
}
}
}
</script>
<style lang="scss" scoped>
.list {
&__item {
display: flex;
flex-direction: row;
align-items: center;
justify-content: space-between;
width: calc(100% - 60rpx);
margin: 108rpx 30rpx 0rpx 30rpx;
box-shadow: 0rpx 10rpx 50rpx 0rpx rgba(0, 3, 72, 0.1);
border-radius: 20rpx;
}
&__content {
flex: 1;
// color: $tn-font-color;
margin: 34rpx 0rpx 27rpx 37rpx;
&__title {
font-size: 36rpx;
font-weight: bold;
margin-bottom: 12rpx;
}
&__desc {
font-size: 28rpx;
}
}
&__icon {
flex: 1;
margin-right: 26rpx;
position: relative;
&__main, &__sub {
-webkit-background-clip: text;
color: transparent;
position: absolute;
transition: transform 0.25s ease;
}
&__main {
font-size: 200rpx;
width: 190rpx;
line-height: 200rpx;
top: 0;
right: 0rpx;
transform: translateY(-60%);
}
&__sub {
font-size: 70rpx;
top: 0;
right: 175rpx;
transform: translateY(-5rpx);
}
}
}
</style>

View File

@ -0,0 +1,169 @@
<template>
<view class="nav-index-button" :style="{bottom: `${bottom}rpx`, right: `${right}rpx`}" @tap.stop="navIndex">
<view class="nav-index-button__content">
<view class="nav-index-button__content--icon tn-flex tn-flex-row-center tn-flex-col-center tn-shadow-blur tn-cool-bg-color-5">
<view class="tn-icon-home-fill"></view>
</view>
</view>
<view class="nav-index-button__meteor">
<view class="nav-index-button__meteor__wrapper">
<view v-for="(item,index) in 6" :key="index" class="nav-index-button__meteor__item" :style="{transform: `rotateX(${-60 + (30 * index)}deg) rotateZ(${-60 + (30 * index)}deg)`}">
<view class="nav-index-button__meteor__item--pic"></view>
</view>
</view>
</view>
</view>
</template>
<script>
export default {
name: 'nav-index-button',
props: {
//
bottom: {
type: [Number, String],
default: 300
},
//
right: {
type: [Number, String],
default: 75
},
//
indexPath: {
type: String,
default: '/pages/index'
}
},
methods: {
//
navIndex() {
//
const pages = getCurrentPages()
if (pages && pages.length > 0) {
const indexPath = this.indexPath || '/pages/index'
const firstPage = pages[0]
if (pages.length == 1 && (!firstPage.route || firstPage.route != indexPath.substring(1, indexPath.length))) {
uni.reLaunch({
url: indexPath
})
} else {
uni.navigateBack({
delta: 1
})
}
} else {
uni.reLaunch({
url: indexPath
})
}
}
}
}
</script>
<style lang="scss" scoped>
.nav-index-button {
position: fixed;
animation: suspension 3s ease-in-out infinite;
z-index: 999999;
&__content {
position: absolute;
width: 100rpx;
height: 100rpx;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
&--icon {
width: 100rpx;
height: 100rpx;
font-size: 60rpx;
border-radius: 50%;
margin-bottom: 18rpx;
position: relative;
z-index: 1;
transform: scale(0.85);
&::after {
content: " ";
position: absolute;
z-index: -1;
width: 100%;
height: 100%;
left: 0;
bottom: 0;
border-radius: inherit;
opacity: 1;
transform: scale(1, 1);
background-size: 100% 100%;
background-image: url(https://resource.tuniaokj.com/images/cool_bg_image/icon_bg6.png);
}
}
}
&__meteor {
position: absolute;
top: 50%;
left: 50%;
width: 100rpx;
height: 100rpx;
transform-style: preserve-3d;
transform: translate(-50%, -50%) rotateY(75deg) rotateZ(10deg);
&__wrapper {
width: 100rpx;
height: 100rpx;
transform-style: preserve-3d;
animation: spin 20s linear infinite;
}
&__item {
position: absolute;
width: 100rpx;
height: 100rpx;
border-radius: 1000rpx;
left: 0;
top: 0;
&--pic {
display: block;
width: 100%;
height: 100%;
background: url(https://resource.tuniaokj.com/images/cool_bg_image/arc3.png) no-repeat center center;
background-size: 100% 100%;
animation: arc 4s linear infinite;
}
}
}
}
@keyframes suspension {
0%, 100% {
transform: translateY(0);
}
50% {
transform: translateY(-0.8rem);
}
}
@keyframes spin {
0% {
transform: rotateX(0deg);
}
100% {
transform: rotateX(-360deg);
}
}
@keyframes arc {
to {
transform: rotate(360deg);
}
}
</style>

View File

@ -0,0 +1,52 @@
/**
* 动态参数演示mixin
*/
module.exports = {
data() {
return {
// 效果显示框top的值
contentContainerTop: '0px',
contentContainerIsTop: false,
// 参数显示框top的值
sectionContainerTop: '0px'
}
},
onReady() {
this.updateSectionContainerTop()
},
methods: {
// 处理演示效果框的位置
async _handleContentConatinerPosition() {
// 获取效果演示框的节点信息
const contentContainer = await this._tGetRect('#content_container')
// 获取参数框的节点信息
this._tGetRect('#section_container').then((res) => {
// 判断参数框是否在移动,如果是则更新效果框的位置
// 如果效果框的顶部已经触控到顶部导航栏就停止跟随
if (res.top - contentContainer.bottom != 15) {
const newTop = res.top - (contentContainer.height + uni.upx2px(20))
const minTop = this.vuex_custom_bar_height + 1
if (newTop < minTop) {
this.contentContainerTop = minTop + 'px'
this.contentContainerIsTop = true
} else {
this.contentContainerTop = newTop + 'px'
this.contentContainerIsTop = false
}
}
})
},
// 更新状态切换栏位置信息
updateSectionContainerTop() {
this._tGetRect('#content_container').then((res) => {
this.contentContainerTop = (this.vuex_custom_bar_height + 148) + 'px'
this.sectionContainerTop = (res.height + 20) + 'px'
})
}
},
// 监听页面滚动
onPageScroll() {
this._handleContentConatinerPosition()
}
}

View File

@ -0,0 +1,60 @@
/**
* 演示页面mixin
*/
module.exports = {
data() {
return {
}
},
onLoad() {
// 更新顶部导航栏信息
this.updateCustomBarInfo()
},
methods: {
// 点击左上角返回按钮时触发事件
goBack() {
// 通过判断当前页面的页面栈信息,是否有上一页进行返回,如果没有则跳转到首页
const pages = getCurrentPages()
if (pages && pages.length > 0) {
const firstPage = pages[0]
if (pages.length == 1 && (!firstPage.route || firstPage.route != 'pages/index')) {
uni.reLaunch({
url: '/pages/index'
})
} else {
uni.navigateBack({
delta: 1
})
}
} else {
uni.reLaunch({
url: '/pages/index'
})
}
},
// 更新顶部导航栏信息
async updateCustomBarInfo() {
// 获取vuex中的自定义顶栏的高度
let customBarHeight = this.vuex_custom_bar_height
let statusBarHeight = this.vuex_status_bar_height
// 如果获取失败则重新获取
if (!customBarHeight) {
try {
const navBarInfo = await this.$t.updateCustomBar()
customBarHeight = navBarInfo.customBarHeight
statusBarHeight = navBarInfo.statusBarHeight
} catch(e) {
setTimeout(() => {
this.updateCustomBarInfo()
}, 10)
return
}
}
// 更新vuex中的导航栏信息
this.$t.vuex('vuex_status_bar_height', statusBarHeight)
this.$t.vuex('vuex_custom_bar_height', customBarHeight)
}
}
}

View File

@ -0,0 +1,330 @@
/**
* 页面展示列表数据
*/
export default {
data: [{
title: '图鸟首页',
backgroundColor: 'tn-cool-bg-color-1',
list: [{
icon: 'code',
title: '关于我们',
url: '/homePages/about',
author: '图鸟北北'
},{
icon: 'code',
title: '全局搜索',
url: '/homePages/search',
author: '图鸟北北'
},
{
icon: 'code',
title: '今日热榜',
url: '/homePages/hot',
author: '图鸟北北'
},
{
icon: 'code',
title: '前端业务',
url: '/homePages/profession',
author: '图鸟北北'
},
{
icon: 'code',
title: '加载效果',
url: '/homePages/loading',
author: '图鸟北北'
}
]
},
{
title: '酷炫圈子',
backgroundColor: 'tn-cool-bg-color-1',
list: [{
icon: 'code',
title: '博主_Me',
url: '/circlePages/blogger',
author: '图鸟北北'
},
{
icon: 'code',
title: '博主_Ta',
url: '/circlePages/blogger_other',
author: '图鸟北北'
},
{
icon: 'code',
title: '编辑发布',
url: '/circlePages/edit',
author: '图鸟北北'
},
{
icon: 'code',
title: '广告页',
url: '/circlePages/advertise',
author: '图鸟北北'
},
{
icon: 'code',
title: '资讯详情',
url: '/circlePages/news',
author: '图鸟北北'
},
{
icon: 'code',
title: '名片王者',
url: '/circlePages/king',
author: '图鸟北北'
},
{
icon: 'code',
title: '智能名片',
url: '/circlePages/business',
author: '图鸟北北'
},
{
icon: 'code',
title: '精选圈子',
url: '/circlePages/group',
author: '图鸟北北'
},
{
icon: 'code',
title: '积分排行',
url: '/circlePages/ranking',
author: '图鸟北北'
},
{
icon: 'code',
title: '圈子详情',
url: '/circlePages/details',
author: '图鸟北北'
},
{
icon: 'code',
title: '预约接龙',
url: '/circlePages/reserve',
author: '图鸟北北'
},
{
icon: 'code',
title: '活动创建',
url: '/circlePages/create',
author: '图鸟北北'
},
{
icon: 'code',
title: '打造圈子',
url: '/circlePages/build',
author: '图鸟北北'
},
{
icon: 'code',
title: '一起群聊',
url: '/circlePages/chat',
author: '图鸟北北'
},
{
icon: 'code',
title: '对话聊天',
url: '/circlePages/chatting',
author: '图鸟北北'
}
]
},
{
title: '活动广场',
backgroundColor: 'tn-cool-bg-color-1',
list: [{
icon: 'code',
title: '地图打卡',
url: '/activityPages/map',
author: '图鸟北北'
},
{
icon: 'code',
title: '快速答题',
url: '/activityPages/topic',
author: '图鸟北北'
},
{
icon: 'code',
title: '课程学习',
url: '/activityPages/study',
author: '图鸟北北'
},
{
icon: 'code',
title: '开源项目',
url: '/activityPages/project',
author: '图鸟北北'
},
{
icon: 'code',
title: '活动星球',
url: '/activityPages/planet',
author: '图鸟北北'
}
]
},
{
title: '商品优选',
backgroundColor: 'tn-cool-bg-color-1',
list: [{
icon: 'code',
title: '优质商家',
url: '/preferredPages/shop',
author: '图鸟北北'
},
{
icon: 'code',
title: '商品详情',
url: '/preferredPages/product',
author: '图鸟北北'
},
{
icon: 'code',
title: '历史订单',
url: '/preferredPages/order',
author: '图鸟北北'
},
{
icon: 'code',
title: '商品分类',
url: '/preferredPages/classify',
author: '图鸟北北'
},
{
icon: 'code',
title: '商家相册',
url: '/preferredPages/photo',
author: '图鸟北北'
},
{
icon: 'code',
title: '品牌官网',
url: '/preferredPages/website',
author: '图鸟北北'
},
{
icon: 'code',
title: '积分兑换',
url: '/preferredPages/redeem',
author: '图鸟北北'
},
{
icon: 'code',
title: '免单活动',
url: '/preferredPages/award',
author: '图鸟北北'
},
{
icon: 'code',
title: '免单获取',
url: '/preferredPages/awardget',
author: '图鸟北北'
}
]
},
{
title: '关于我的',
backgroundColor: 'tn-cool-bg-color-1',
list: [{
icon: 'code',
title: '使用协议',
url: '/minePages/protocol',
author: '图鸟北北'
},
{
icon: 'code',
title: '授权登录',
url: '/minePages/login',
author: '图鸟北北'
},
{
icon: 'code',
title: '消息通知',
url: '/minePages/message',
author: '图鸟北北'
},
{
icon: 'code',
title: '全局设置',
url: '/minePages/set',
author: '图鸟北北'
},
{
icon: 'code',
title: '立即体验',
url: '/minePages/start',
author: '图鸟北北'
},
{
icon: 'code',
title: '感谢名单',
url: '/minePages/thanks',
author: '图鸟北北'
},
{
icon: 'code',
title: '版本更新',
url: '/minePages/version',
author: '图鸟北北'
},
{
icon: 'code',
title: '帮助中心',
url: '/minePages/help',
author: '图鸟北北'
},
{
icon: 'code',
title: '头像上传',
url: '/minePages/avatar',
author: '图鸟北北'
},
{
icon: 'code',
title: '积分明细',
url: '/minePages/integral',
author: '图鸟北北'
},
{
icon: 'code',
title: '积分签到',
url: '/minePages/signed',
author: '图鸟北北'
},
{
icon: 'code',
title: '好物收藏',
url: '/minePages/collect',
author: '图鸟北北'
},
{
icon: 'code',
title: '账号安全',
url: '/minePages/safety',
author: '图鸟北北'
},
{
icon: 'code',
title: '赞赏支持',
url: '/minePages/reward',
author: '图鸟北北'
},
{
icon: 'code',
title: '缺省页',
url: '/minePages/default',
author: '图鸟北北'
},
{
icon: 'code',
title: '富文本',
url: '/minePages/content',
author: '图鸟北北'
}
]
}
]
}

37
main.js
View File

@ -1,10 +1,10 @@
import Vue from 'vue'
import App from './App'
import store from './store'
import Vue from 'vue'
import HttpRequest from './common/httpRequest'
import HttpCache from './common/cache'
import queue from './common/queue'
import TuniaoUI from 'tuniao-ui'
Vue.config.productionTip = false
Vue.prototype.$Request = HttpRequest;
@ -12,7 +12,6 @@ Vue.prototype.$queue = queue;
Vue.prototype.$Sysconf = HttpRequest.config;
Vue.prototype.$SysCache = HttpCache;
App.mpType = 'app'
// 引入全局uView
@ -21,15 +20,41 @@ Vue.use(uView);
const app = new Vue({
...App
store,
...App
})
// http拦截器将此部分放在new Vue()和app.$mount()之间才能App.vue中正常使用
import httpInterceptor from '@/common/http.interceptor.js'
Vue.use(httpInterceptor, app)
Vue.use(TuniaoUI)
// 引入TuniaoUI提供的vuex简写方法
let vuexStore = require('@/store/$t.mixin.js')
Vue.mixin(vuexStore)
// http接口API集中管理引入部分
import httpApi from '@/common/http.api.js'
Vue.use(httpApi, app)
app.$mount()
// #ifdef APP
const sysInfo = uni.getSystemInfoSync();
let isIos = sysInfo.platform == 'ios'
if (isIos) {
const originNavigateTo = uni.navigateTo
uni.navigateTo = (params) => {
let jsonParam = JSON.parse(JSON.stringify(params))
if (isIos && jsonParam.url.includes('/me/detail/detail')) {
jsonParam.url = jsonParam.url.replace('/me/detail/detail', '/me/detail/detailIOS')
}
originNavigateTo(jsonParam)
}
}
// #endif

View File

@ -1,9 +1,9 @@
{
"name" : "短剧",
"appid" : "__UNI__CA593C1",
"name" : "斯耀短剧",
"appid" : "__UNI__E0B05B1",
"description" : "",
"versionName" : "1.0.0",
"versionCode" : "100",
"versionName" : "1.2.2",
"versionCode" : 122,
"transformPx" : false,
/* 5+App */
"app-plus" : {
@ -14,7 +14,7 @@
},
"usingComponents" : true,
"nvueStyleCompiler" : "uni-app",
"compilerVersion" : 3,
"compilerVersion" : 7,
"splashscreen" : {
"alwaysShowBeforeRender" : true,
"waiting" : true,
@ -27,8 +27,8 @@
"VideoPlayer" : {},
"Camera" : {},
"Record" : {},
"Push" : {},
"OAuth" : {}
"OAuth" : {},
"Push" : {}
},
/* */
"distribute" : {
@ -56,11 +56,19 @@
"<uses-permission android:name=\"android.permission.WRITE_EXTERNAL_STORAGE\"/>",
"<uses-permission android:name=\"android.permission.WRITE_SETTINGS\"/>"
],
"abiFilters" : [ "armeabi-v7a", "arm64-v8a", "x86" ]
"abiFilters" : [ "armeabi-v7a", "arm64-v8a", "x86" ],
"minSdkVersion" : 26,
"targetSdkVersion" : 33,
"schemes" : "com.hnsiyao.duanju"
},
/* ios */
"ios" : {
"dSYMs" : false
"dSYMs" : false,
"urltypes" : "com.hnsiyao.duanju",
"privacyDescription" : {
"NSPhotoLibraryUsageDescription" : "获取您的相册读取权限,目的是为了在我的资料页面使用相册读取功能,修改上传头像",
"NSCameraUsageDescription" : "获取您的摄像头权限,目的是为了在我的资料页面使用摄像头功能,修改上传头像"
}
},
/* SDK */
"sdkConfigs" : {
@ -77,14 +85,15 @@
},
"oauth" : {
"apple" : {},
"univerify" : {},
"weixin" : {
"appid" : "wxeaffcaea958472d3",
"appsecret" : "32f6f3ce599abff2fa0191a36780c66c",
"UniversalLinks" : "https://maxiong.xianmxkj.com/"
}
},
"univerify" : {}
},
"ad" : {
"gdt" : {}
},
"ad" : {},
"push" : {
"unipush" : {}
}
@ -159,13 +168,21 @@
"enable" : false
},
"h5" : {
"title" : "短剧",
"title" : "斯耀短剧",
"domain" : "https://jiaoyu.xianmxkj.com",
"router" : {
"mode" : "history"
}
"mode" : "history",
"cache" : {
"use" : true,
"maxAge" : "86400000",
"version" : "1.0.7"
}
},
"template" : "template.html"
},
"mp-kuaishou" : {
"appid" : "ks699465318929951101"
}
}
//

265
me/balance/index.vue Normal file
View File

@ -0,0 +1,265 @@
<template>
<view>
<view class="jf flex align-center justify-between">
<view class="jf-l">
<view class="jf-l-t">
当前余额
</view>
<view class="jf-l-b">
{{amount || '0.00'}}
</view>
</view>
<view class="jf-r" @click="withdraw()">
提现
</view>
</view>
<view class="listTitle flex align-center">
<u-icon name="order" color="#2e2f33" size="50"></u-icon>
<text>
余额明细
</text>
</view>
<view class="list">
<scroll-view @scrollToLower="scrollToLower" :refresher-enabled="refresherTriggered"
@scrollToUpper="scrollToUpper" scroll-y="true"
style="width: 100%;height: 100%;background-color: #ffffff;padding-bottom: 30rpx;">
<view class="list-item flex align-center justify-center" v-for="(item,index) in list" :key="index">
<view class="list-item-box flex align-center justify-between">
<view class="list-item-box-l">
<view class="list-item-box-l-t">
{{item.content}}
</view>
<view class="list-item-box-l-b">
{{item.createTime}}
</view>
</view>
<view class="list-item-box-r" v-if="item.type == 1">
+{{item.num}}
</view>
<view class="list-item-box-r" v-else>
-{{item.num}}
</view>
</view>
</view>
<view class="" style="width: 100%;height: 30rpx;" v-if="list.length>0"></view>
<u-loadmore v-if="list.length>0" :status="status" />
<empty :isShow="true" title="暂无明细" v-if="list.length == 0" />
</scroll-view>
</view>
</view>
</template>
<script>
import empty from '../../components/empty.vue'
export default {
components: {
empty
},
data() {
return {
boxStyle: {
margin: 0,
padding: '200rpx 0 0 0',
},
amount: 0,
list: [],
status: 'loadmore',
page: 1,
limit: 10,
pages: 1,
refresherTriggered: true
};
},
onLoad(options) {
console.log(options)
if ( options && options.amount) {
this.amount = options.amount
}
},
onShow() {
this.getAmount()
this.getUserBalanceList()
},
onPullDownRefresh() {
this.getAmount()
},
methods: {
/**
* 获取当前钱包信息
*/
getAmount() {
this.$Request.getT('app/moneyDetails/selectUserMoney').then(res => {
uni.stopPullDownRefresh()
if (res.code === 0) {
this.amount = res.data.amount || 0
} else {
this.amount = '0.00'
}
})
},
withdraw() {
let params = {
amount: this.amount
}
this.$Request.getT('app/cash/withdraw', params).then(res => {
console.log(res)
if (res.code === 0) {
// this.amount = res.data.amount
} else {
// this.amount = '0.00'
uni.showToast({
title: res.msg,
icon: 'none'
})
}
})
},
/**
* 获取余额明细
*/
getUserBalanceList() {
let data = {
page: this.page,
limit: this.limit
}
this.$Request.getT('app/moneyDetails/queryUserMoneyDetails', data).then(res => {
setTimeout(() => {
this.refresherTriggered = false
}, 1500)
if (res.code === 0) {
this.pages = res.data.pages
if (this.page < this.pages) {
this.status = 'loadmore'
} else {
this.status = 'nomore'
}
if (this.page === 1) {
this.list = res.data.records
} else {
this.list = [...this.list, ...res.data.records]
}
}
})
},
goNav(url) {
uni.navigateTo({
url: url
})
},
//
scrollToUpper() {
this.page = 1
this.refresherTriggered = true
this.getUserBalanceList()
},
//
scrollToLower() {
if (this.page < this.pages) {
this.status = 'loading'
this.page += 1
this.getUserBalanceList()
} else {
this.status = 'nomore'
}
},
}
}
</script>
<style lang="scss">
page {
background-color: #ffffff;
}
.jf {
width: 100%;
height: 252rpx;
background: linear-gradient(90deg, rgba(255, 117, 129, 0.6) 0%, #ff7581 100%);
padding: 0 40rpx;
.jf-l-t {
color: #ffffff;
font-size: 28rpx;
}
.jf-l-b {
font-size: 40rpx;
color: #ffffff;
font-weight: 600;
margin-top: 30rpx;
}
.jf-r {
padding: 20rpx 40rpx;
border-radius: 40rpx;
color: #ff7581;
background-color: #ffffff;
font-size: 28rpx;
font-weight: 500;
}
}
.listTitle {
width: 100%;
height: 110rpx;
margin-top: -40rpx;
background-color: #ffffff;
border-radius: 30rpx 30rpx 0 0;
border-bottom: 1px solid hsla(0, 0%, 90.2%, .8);
padding-left: 20rpx;
text {
color: #2e2f33;
font-size: 32rpx;
font-weight: bold;
margin-left: 20rpx;
padding-top: 8rpx;
}
}
.list {
width: 100%;
/* #ifdef H5 */
height: calc(100vh - 252rpx - 70rpx - 88rpx);
/* #endif */
/* #ifndef H5 */
height: calc(100vh - 252rpx - 70rpx);
/* #endif */
background-color: #ffffff;
.list-item {
width: 100%;
}
.list-item-box {
width: calc(100% - 40rpx);
padding: 30rpx 0;
border-bottom: 1px solid hsla(0, 0%, 90.2%, .8);
.list-item-box-l-t {
color: #2e2f33;
font-size: 28rpx;
}
.list-item-box-l-b {
font-size: 24rpx;
color: #aeb2c1;
margin-top: 30rpx;
}
.list-item-box-r {
color: #2e2f33;
font-weight: 600;
font-size: 36rpx;
}
}
}
</style>

746
me/choujiang/choujiang.vue Normal file
View File

@ -0,0 +1,746 @@
<template>
<view class="almost-lottery min-page">
<u-navbar title="" back-icon-color="#fff" :background="background" immersive :border-bottom="false"
title-color="#fff"></u-navbar>
<!-- head -->
<view class="almost-lottery__head">
<view class="btn-group u-flex u-row-between">
<view :class="['action', isApple && 'action-shadow']" @click="toRed">
<text class="pack"></text>
<text class="content">红包<text class="num">{{ totalMoney }}</text></text>
</view>
<view :class="['action', isApple && 'action-shadow']" @click="toGift">
<text class="gift"></text>
<text class="content">我的奖品</text>
</view>
</view>
<!-- <view class="tip"><text class="tip-content">每次抽奖消耗 {{ goldNum }} 金币不限次数</text></view> -->
</view>
<!-- action -->
<!-- <view class="almost-lottery__action-dev" @tap="handleInitCanvas" v-if="isDev">
<text class="text">重新生成画板-开发模式使用</text>
</view>
<view class="almost-lottery__action-dev" @tap="handleCheckPopup">
<text class="text">查看 uni-popup 用例</text>
</view> -->
<!-- lottery -->
<view class="almost-lottery__wheel">
<view class="almost-lottery__count">
<text class="text">剩余免费抽奖 {{ freeNum }} </text>
</view>
<!-- <button @click="showLingPop">showLingPop</button> -->
<almost-lottery :lottery-size="lotteryConfig.lotterySize" :action-size="lotteryConfig.actionSize"
:selfTime="selfTime"
:ring-count="8" :duration="3.5" :self-rotaty="false" :img-circled="true" :canvasCached="true"
:prize-list="prizeList" :prize-index="prizeIndex" :lotteryBg="lotteryBg" :actionBg="actionBg"
@reset-index="prizeIndex = -1" @draw-before="handleDrawBefore" @draw-start="handleDrawStart"
@draw-end="handleDrawEnd" @finish="handleDrawFinish" v-if="prizeList.length" />
</view>
<!-- rule -->
<view class="almost-lottery__rule">
<view class="rule-head">
<view class="line"></view>
<text class="title">活动规则</text>
<view class="line"></view>
</view>
<view class="rule-body">
<view class="item">
<view class="number">1</view>
<view class="text">
<text>抽奖细则</text>
<text>每日前{{ freeNumDay }}次付款均可获得抽奖机会</text>
</view>
</view>
<view class="item item-rule">
<view class="number">2</view>
<view class="text">
<text>奖励说明红包奖励将自动发放到红包余额已绑定支付宝账号将会自动发起提现其余奖品则需联系客服领取</text>
<!-- <text>b.金币奖系统会即时转入金币账户可在平台内使用</text> -->
</view>
</view>
<!-- <template >
<view class="item">
<view class="number">3</view>
<view class="text">本次活动由XXXXXXX发起</view>
</view>
<view class="item">
<view class="number">4</view>
<view class="text">本活动仅限17岁以上用户参加</view>
</view>
<view class="item">
<view class="number">5</view>
<view class="text">本活动最终解释权归XXXXXXX所有</view>
</view>
</template> -->
</view>
</view>
<ling-qu ref="refLingqu" @close="lingquClose" ></ling-qu>
</view>
</template>
<script>
import AlmostLottery from '@/uni_modules/almost-lottery/components/almost-lottery/almost-lottery.vue'
import lingQu from '@/components/pop-ling-qu.vue'
import {
clearCacheFile,
clearStore
} from '@/uni_modules/almost-lottery/utils/almost-utils.js'
export default {
name: 'Home',
components: {
AlmostLottery,lingQu
},
data() {
return {
// 1
// 2
// 3
source:1,
background:{
background:'transparent'
},
//
totalMoney:0,
//
result:'',
//
isDev: true,
option: {},
//
lotteryConfig: {
// rpx
lotterySize: 600,
// rpx
actionSize: 200
},
selfTime:2000,
// UI
// 稿
lotteryBg: require('@/uni_modules/almost-lottery/static/almost-lottery/almost-lottery__bg2x.png'),
//
actionBg: require('@/uni_modules/almost-lottery/static/almost-lottery/almost-lottery__action2x.png'),
//
//
prizeList: [],
//
onStock: true,
//
prizeIndex: -1,
//
prizeing: false,
//
//
onFrontend: false,
//
prizeWeightMax: 0,
//
prizeWeightArr: [],
//
//
goldCoin: 20,
//
freeNum: 0,
//
goldNum: 20,
//
freeNumDay: 0
}
},
computed: {
isApple() {
return uni.getSystemInfoSync().platform === 'ios'
}
},
methods: {
lingquClose(key){
console.log('lingquClose');
console.log(key);
if(key&&key=='isBindAliPay'){
uni.navigateTo({
url:'/me/invite/zhifubao'
})
}
},
toRed(){
uni.navigateTo({
url: '/me/invite/cashDetail'
})
},
toGift() {
console.log('1');
uni.navigateTo({
url: '/me/gift/gift?source='+this.source
})
},
//
handleInitCanvas() {
clearCacheFile()
clearStore()
this.prizeList = []
this.getPrizeList()
},
// popup
handleCheckPopup() {
uni.navigateTo({
url: '/pages/popup/popup'
})
},
//
async getPrizeList() {
uni.showLoading({
title: '奖品准备中...'
})
//
let res = await this.requestApiGetPrizeList()
console.log('获取奖品列表', res)
if (res.ok) {
let data = res.data
if (data.length) {
this.prizeList = data
console.log('已获取到奖品列表数据,开始绘制抽奖转盘')
//
if (console.time) {
console.time('绘制转盘用时')
}
//
//
if (this.onFrontend) {
//
this.prizeWeightArr = this.prizeList.map(item => item.prizeWeight)
let prizeWeightArrSort = [...this.prizeWeightArr]
prizeWeightArrSort.sort((a, b) => b - a)
//
this.prizeWeightMax = this.prizeWeightMax > 0 ? this.prizeWeightMax : prizeWeightArrSort[0]
}
}
} else {
uni.hideLoading()
uni.showToast({
title: '获取奖品失败',
mask: true,
icon: 'none'
})
}
},
//
// Promise
//
async requestApiGetPrizeList() {
const res = await this.$Request.getT('/app/discSpinning/selectDiscSpinning',{source:this.source})
if (res.code == 0) {
return {
ok: true,
data: res.data.records.map(v => {
return {
...v,
prizeId: v.id,
prizeName: v.name,
prizeStock: 10,
prizeWeight: 200,
prizeImage: v.url,
// prizeImage: require('@/static/git.png')
}
})
}
}
return
// return new Promise((resolve, reject) => {
// let requestTimer = setTimeout(() => {
// clearTimeout(requestTimer)
// requestTimer = null
// // prizeStock
// // prizeWeight
// resolve({
// ok: true,
// data: [{
// prizeId: 1,
// prizeName: '0.1',
// prizeStock: 10,
// prizeWeight: 200,
// prizeImage: require('@/static/git.png')
// },
// {
// prizeId: 2,
// prizeName: '10',
// prizeStock: 0,
// prizeWeight: 50,
// prizeImage: 'https://vkceyugu.cdn.bspapp.com/VKCEYUGU-dc-site/56f085e0-bcfe-11ea-b244-a9f5e5565f30.png'
// },
// {
// prizeId: 3,
// prizeName: '5',
// prizeStock: 1,
// prizeWeight: 80
// },
// {
// prizeId: 4,
// prizeName: '50',
// prizeStock: 0,
// prizeWeight: 10,
// prizeImage: 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABkAAAAZCAYAAADE6YVjAAAB2klEQVRIia3Wv09TURjG8U+u2kQZcNENh2ok0cnJ0R+L0RB2g/EvwITEwRgnV0Zx0fAHYBh0khBD4sBAmAgDiwQNg4qwmSBDAYf7Fi+n97al9UlObnvO836f3tO355b2GsAYZrCBPRzGdSPmx8J3YtXwDDsB7TR2wl/rNmAYK13C07ES9W11E9s9BjTHdnBKVf8PAcWgehpwCssF0w/5FzqLgw7AA7zDQ/wqzC8H90jjSeFMYW0Yr8PzALfjOh7z1wve2YTzpLlQw2ay+KZ1N7vS24SziVqGexhKzB07pEJXk/dDwTetdZ9HewwZLWFNw2oyudZjQFNrCW8109pqS32GpPX1TOu586fPkLR+IEMjmbzYZ0ha34Atx/fwW58hXxPeFixo7Yg7PQbcKmEtZFgsMb/C4AkDBuUnQKpFuFZI3cZuvP6C+8g6wDP572O95C4Og49/W/YJl/G5YPqO9yV3dh4f8LMCfhjcI93Afix8xAX5SVx2YBY10yagEdxjmiwY7uISXuIFrlSEPG0TMllWcAbzYViXd0rzeXC6ImSiImA+eKU6h7mCeV/eCBMnCJkLzpHSztnFCJ7L//ZkOFv1iRLtRd1IcLpSHVP4jccVnkexPqXkmd7UX15b7tiz29ReAAAAAElFTkSuQmCC'
// },
// {
// prizeId: 5,
// prizeName: '1',
// prizeStock: 3,
// prizeWeight: 3000,
// prizeImage: 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADIAAAAyCAYAAAAeP4ixAAABCElEQVRoge3YMa4BURSH8Y8o7UAp0WgkotBZwluAfhqlZSgUGr23ENUUCpppJnTswAIUSCaTiziZJ8d9/193zdzrfMltABF5plb+oLscDoAV0Pn8OC/lwDhL0k35QT3wstcIuM61Cj0IhXiNuAvOFwr5SgrxRiHeKMSbhnHfAVgU1i1gajhnBpwK6wnQtgxkDTlmSTq/L7rLYQ9byG+WpLvCOT8YQ6K5WgrxRiHeKMQbhXijEG8U4o1CvIkmxPrDquwMrI37KlFJSJake2BUxVlW0VytaEKsV6t5+8Ohak3rRmtIH9hav/QvRHO1FOKNQrwJheQfn+I9wflCIeNHLzuQc51PRP6rC1ZeIm1I8cC5AAAAAElFTkSuQmCC'
// },
// {
// prizeId: 6,
// prizeName: '0.2',
// prizeStock: 8,
// prizeWeight: 120
// },
// {
// prizeId: 7,
// prizeName: '',
// prizeStock: 100,
// prizeWeight: 10000
// },
// {
// prizeId: 8,
// prizeName: '100',
// prizeStock: 100,
// prizeWeight: 3000
// }
// ]
// })
// }, 200)
// })
},
//
async handleDrawBefore(callback) {
console.log('抽奖开始之前')
let flag = false
//
if (this.freeNum > 0) {
flag = true
} else {
flag = false
uni.showToast({
title: '抽奖次数不足',
icon: 'none'
})
}
callback(flag)
},
//
handleDrawStart() {
console.log('触发抽奖按钮')
if (this.prizeing) return
this.prizeing = true
this.tryLotteryDraw()
},
//
tryLotteryDraw() {
console.log('旋转开始,获取中奖下标......')
//
if (this.onFrontend) {
this.localGetPrizeIndex()
} else {
this.remoteGetPrizeIndex()
}
},
//
localGetPrizeIndex() {
console.warn('###当前处于前端控制中奖概率,安全起见,强烈建议由后端控制###')
//
// prizeId
if (!this.prizeWeightMax || !this.prizeWeightArr.length) {
console.warn('###当前已开启前端控制中奖概率,但是奖品数据列表中的 prizeWeight 参数似乎配置不正确###')
return
}
console.log('当前权重最大值为 =>', this.prizeWeightMax)
// 使 Math.ceil 0
let randomWeight = Math.ceil(Math.random() * this.prizeWeightMax)
console.log('本次权重随机数 =>', randomWeight)
//
let tempMaxArrs = []
this.prizeList.forEach((item) => {
if (item.prizeWeight >= randomWeight) {
tempMaxArrs.push(item.prizeWeight)
}
})
console.log('tempMaxArrs', tempMaxArrs)
//
//
let tempMaxArrsLen = tempMaxArrs.length
if (tempMaxArrsLen) {
tempMaxArrs.sort((a, b) => a - b)
//
if (tempMaxArrsLen > 1) {
//
let sameCount = 0
for (let i = 0; i < tempMaxArrs.length; i++) {
if (tempMaxArrs[i] === tempMaxArrs[0]) {
sameCount++
}
}
// 1
if (sameCount === 1) {
this.prizeIndex = this.prizeWeightArr.indexOf(tempMaxArrs[0])
} else {
//
let sameWeight = tempMaxArrs[0]
let sameWeightArr = []
let sameWeightItem = {}
this.prizeWeightArr.forEach((item, index) => {
if (item === sameWeight) {
sameWeightArr.push({
prizeWeight: item,
index
})
}
})
console.log('sameWeightArr', sameWeightArr)
sameWeightItem = sameWeightArr[Math.floor(Math.random() * sameWeightArr.length)]
console.log('sameWeightItem', sameWeightItem)
this.prizeIndex = sameWeightItem.index
}
} else {
this.prizeIndex = this.prizeWeightArr.indexOf(tempMaxArrs[0])
}
}
console.log('本次抽中奖品 =>', this.prizeList[this.prizeIndex].prizeName)
//
if (this.onStock) {
console.log('本次奖品库存 =>', this.prizeList[this.prizeIndex].prizeStock)
}
},
//
//
async remoteGetPrizeIndex() {
this.result=''
console.warn('###当前处于模拟的请求接口,并返回了中奖信息###')
const res = await this.$Request.getT('app/discSpinning/draw',{source:this.source})
// this.getCount()
console.log(res);
if (res.code != 0) {
this.prizeing = false
return uni.showToast({
title: res.msg||'请求抽奖失败',
icon:'none'
})
}
this.freeNum--
this.result=res.data
let list = [...this.prizeList]
// prizeId prizeId
const arr=list.filter(v=>v.type==res.data.type&&res.data.name==v.name)
let prizeId = arr[0].prizeId
this.result={...this.result,url:arr[0].url}
// prizeId
for (let i = 0; i < list.length; i++) {
let item = list[i]
if (item.prizeId === prizeId) {
//
this.prizeIndex = i
break
}
}
console.log('本次抽中奖品 =>', this.prizeList[this.prizeIndex].prizeName)
},
//
handleDrawEnd() {
console.log('旋转结束,执行拿到结果后到逻辑')
//
// const prize = this.prizeList[this.prizeIndex]
const prize = this.result
let {name} = prize
let tipContent = ''
if (name.type ==1) {
tipContent = '很遗憾,没有中奖,请再接再厉!'
uni.showToast({
title: tipContent,
icon: "none"
})
} else {
tipContent = `恭喜您,获得 ${name}${this.result.type==2?(this.result.number+'元'):''} `
this.showLingPop({...this.result})
const cacheData={...this.result}
// setTimeout(()=>{
// this.$Request.postJson('app/discSpinning/receive',cacheData )
// },1000)
}
console.log(this.result);
this.result=''
this.prizeing = false
},
//
handleDrawFinish(res) {
console.log('抽奖转盘绘制完成', res)
if (res.ok) {
//
if (console.timeEnd) {
console.timeEnd('绘制转盘用时')
}
}
let stoTimer = setTimeout(() => {
stoTimer = null
uni.hideLoading()
// uni.showToast({
// title: res.msg,
// mask: true,
// icon: 'none'
// })
}, 50)
},
async getRedPack(){
const res=await this.$Request.getT('app/moneyDetails/selectUserMoney')
if(res.code==0){
this.totalMoney=res.data.amount
}
},
async getCount(){
const res=await this.$Request.getT('app/discSpinning/drawCount',{source:this.source})
if(res.code==0){
this.freeNum=res.count||0
this.freeNumDay=res.sum||0
}
},
lingquClose(){
// this.getCount()
this.getRedPack()
},
showLingPop(data){
console.log(data);
this.$refs.refLingqu.open(data)
}
},
onLoad(opt) {
this.option = opt
if(opt.source){
this.source=opt.source
}
this.prizeList = []
this.getCount()
this.getPrizeList()
},
onShow() {
this.getRedPack()
},
onUnload() {
uni.hideLoading()
}
}
</script>
<style lang="scss" scoped>
.min-page{
min-height: 100vh;
}
.btn-group {
position: absolute;
left: 0;
right: 0;
z-index: 2;
top: 180px;
gap: 20rpx;
padding: 0 32rpx;
}
.almost-lottery {
flex: 1;
background-color: #FF893F;
}
.almost-lottery__head {
position: relative;
width: 100%;
height: 460rpx;
background: url('~static/images/lottery/top-bg.png') no-repeat center center/cover;
.action {
display: flex;
justify-content: center;
align-items: center;
flex: 1;
height: 88rpx;
line-height: 88rpx;
margin: 0 auto;
color: #FFFFFF;
font-size: 32rpx;
background-color: rgba(255, 136, 61, 1);
border-radius: 44rpx;
}
.action-shadow {
box-shadow: 0px 14rpx 0px 0px rgba(235, 112, 36, 1);
}
.pack {
width: 44rpx;
height: 44rpx;
margin-right: 10rpx;
background-repeat: no-repeat;
background-position: center center;
background-size: contain;
background-image: url("~static/red-pack.png");
}
.gift {
width: 44rpx;
height: 44rpx;
margin-right: 10rpx;
background-repeat: no-repeat;
background-position: center center;
background-size: contain;
background-image: url("~static/gift.png");
}
.num {
color: #F9FC31;
}
.tip {
position: relative;
top: 428rpx;
color: #FFFFFF;
font-size: 24rpx;
text-align: center;
}
}
.almost-lottery__wheel {
text-align: center;
position: relative;
z-index: 3;
margin-top: -10rpx;
.almost-lottery__count {
display: flex;
flex-direction: column;
justify-content: center;
align-items: center;
text-align: center;
padding: 20rpx 0 40rpx 0;
}
.text {
color: #FFFFFF;
font-size: 24rpx;
}
}
.almost-lottery__rule {
padding: 0 28rpx;
color: #FFF8CB;
.rule-head {
display: flex;
justify-content: space-around;
align-items: center;
margin: 40rpx 0;
.line {
flex: 1;
height: 1px;
background-color: #FFF3A5;
}
.title {
width: 280rpx;
color: #F63857;
line-height: 70rpx;
text-align: center;
margin: 0 20rpx;
border-radius: 8rpx;
background-image: linear-gradient(0deg, rgba(255, 242, 158, 1), rgba(255, 244, 168, 1));
}
}
.rule-body {
color: #FFF8CB;
font-size: 24rpx;
padding: 10rpx 0 40rpx;
.item {
display: flex;
margin-bottom: 10rpx;
}
.number {
position: relative;
top: 4rpx;
width: 28rpx;
height: 28rpx;
line-height: 28rpx;
text-align: center;
color: #F63857;
background: #FFF8CB;
border-radius: 50%;
margin-right: 10rpx;
}
.text {
flex: 1;
}
.item-rule .text {
display: flex;
flex-direction: column;
}
}
}
.almost-lottery__action-dev {
display: flex;
flex-direction: row;
justify-content: center;
align-items: center;
width: 400rpx;
height: 80rpx;
border-radius: 10rpx;
text-align: center;
background-color: red;
margin: 0 auto 40rpx;
.text {
color: #FFFFFF;
font-size: 28rpx;
}
}
.almost-lottery__popup-wrap {
flex: 1;
display: flex;
justify-content: center;
align-items: center;
.almost-lottery {
background: transparent;
}
}
</style>

View File

@ -47,8 +47,8 @@
limit: this.limit,
}
this.$u.api.collectList(data).then(res => {
if(res.code == 0) {
if( this.page == 1) {
if(res.code === 0) {
if( this.page === 1) {
this.collectList = res.data.records
uni.stopPullDownRefresh();
return

View File

@ -1,18 +1,25 @@
<template>
<view style="background: #FFFFFF;">
<canvas v-if="!tempFilePath" :canvas-id="CanvasID"
:style="{ width: canvasW + 'px', height: canvasH + 'px' }"></canvas>
<!-- #ifdef MP-WEIXIN -->
<image v-else lazy-load :src="tempFilePath" mode="widthFix" style="width: 100%;" class="is-response"
@longpress="saveqrcode"></image>
<!-- <button v-if="openSettingBtnHidden" class="purple_btn btn_box" hover-class="none" open-type="openSetting"
@opensetting='handleSetting'>请开启保存权限</button> -->
<!-- #endif -->
<!-- #ifndef MP-WEIXIN -->
<image v-else lazy-load :src="tempFilePath" mode="widthFix" style="width: 100%;" class="is-response"
@longpress="toSave(tempFilePath)"></image>
<!-- #endif -->
<view>
<view class="u-flex " >
<canvas v-if="!tempFilePath" :canvas-id="CanvasID"
:style="{ width: canvasW + 'px', height: canvasH + 'px' }"></canvas>
<!-- #ifdef MP-WEIXIN -->
<image v-else lazy-load :src="tempFilePath" mode="widthFix" style="width: 100%;" class="is-response"
@longpress="saveqrcode" crossorigin="Anonymous"></image>
<!-- <button v-if="openSettingBtnHidden" class="purple_btn btn_box" hover-class="none" open-type="openSetting"
@opensetting='handleSetting'>请开启保存权限</button> -->
<!-- #endif -->
<!-- #ifndef MP-WEIXIN -->
<image v-else lazy-load :src="tempFilePath" mode="widthFix" style="width: 100%;" class="is-response"
@longpress="toSave(tempFilePath)" crossorigin="Anonymous"></image>
<!-- #endif -->
</view>
<view class="u-flex bg-fff u-flex" >
<button class="purple_btn btn_box" hover-class="none" open-type="openSetting"
@click.stop="toSave(tempFilePath)">保存海报</button>
</view>
</view>
</template>
<script>
@ -151,6 +158,7 @@
let _QrCode = await _this.getImageInfo({
imgSrc: _this.QrSrc
}); //
console.log(_imgInfo)
let r = [_imgInfo.width, _imgInfo.height];
let q = [_QrCode.width, _QrCode.height];
let imgW = C_W - (C_P * 2.5);
@ -163,7 +171,7 @@
q[0] = C_Q;
}
_this.canvasW = C_W;
_this.canvasH = r[1] + q[1] + 25;
_this.canvasH = r[1];
_this.ctx.setFillStyle(_this.CanvasBg); //canvas
_this.ctx.fillRect(0, 0, C_W, _this.canvasH); //canvas
@ -182,7 +190,7 @@
_this.ctx.setFontSize(uni.upx2px(36)); //
_this.Title = _this.Title.substring(0, 20)
//#endif
_this.ctx.setFillStyle(_this.TitleColor); //
// _this.ctx.setFillStyle(_this.TitleColor); //
let _strLastIndex = 0; //
let _strHeight = r[1] + C_P * 2 + 10; //canvas
let _num = 1;
@ -229,7 +237,7 @@
// _this.ctx.setFontSize(uni.upx2px(24));
// _this.ctx.fillText(_this.OriginalTxt, _strlineW, _strHeight); //
// }
// #endif
//// #endif
_this.ctx.strokeStyle = _this.OriginalColor;
_this.ctx.moveTo(_strlineW, _strHeight - uni.upx2px(10)); //
_this.ctx.lineTo(_strlineW + _this.ctx.measureText(_this.OriginalTxt).width, _strHeight - uni.upx2px(
@ -239,22 +247,18 @@
//
_strHeight += uni.upx2px(20);
let toTop = uni.upx2px(20);
// _this.ctx.drawImage(_QrCode.path, r[0] - q[0] + C_P, _strHeight, q[0], q[1]);
_this.ctx.drawImage(_QrCode.path, r[0] - q[0] + C_P - uni.upx2px(20), _this.canvasH - q[1] - toTop, q[
0], q[1]);
let toTop = uni.upx2px(103);
_this.ctx.drawImage(_QrCode.path, r[0] - q[0] + C_P - uni.upx2px(201), _this.canvasH - q[1] - toTop,
69, 69);
// end
//
_this.ctx.setFillStyle(_this.TitleColor);
_this.ctx.setFontSize(uni.upx2px(30));
// _this.ctx.fillText(_this.Referrer, C_P, _strHeight + q[1] / 2);
_this.ctx.fillText(_this.Referrer, C_P + uni.upx2px(20), _this.canvasH - q[1] - toTop + q[1] / 2);
_this.ctx.setFillStyle(_this.OriginalColor);
_this.ctx.setFontSize(uni.upx2px(24));
// _this.ctx.fillText(_this.ViewDetails, C_P, _strHeight + q[1] / 2 + 20);
_this.ctx.fillText(_this.ViewDetails, C_P + uni.upx2px(20), _this.canvasH - q[1] - toTop + q[1] / 2 +
20);
// _this.ctx.setFillStyle(_this.TitleColor);
// _this.ctx.setFontSize(uni.upx2px(30));
// _this.ctx.fillText(_this.Referrer, C_P + uni.upx2px(20), _this.canvasH - q[1] - toTop + q[1] / 2);
// _this.ctx.setFillStyle(_this.OriginalColor);
// _this.ctx.setFontSize(uni.upx2px(24));
// _this.ctx.fillText(_this.ViewDetails, C_P + uni.upx2px(20), _this.canvasH - q[1] - toTop + q[1] / 2 + 20);
// end
//canvas
setTimeout(function() {
@ -269,41 +273,48 @@
return new Promise((resolve, errs) => {
uni.getImageInfo({
src: imgSrc,
crossOrigin: 'anonymous',
success: function(image) {
resolve(image);
},
fail(err) {
errs(err);
_this.$queue.showToast('海报生成失败');
// _this.$queue.showToast(imgSrc);
_this.$queue.showToast('海报生成失败1');
uni.hideLoading()
}
});
});
},
getNewImage() {
console.log(_this.CanvasID)
uni.canvasToTempFilePath({
canvasId: _this.CanvasID,
quality: 1,
complete: res => {
// #ifdef H5
let ua = navigator.userAgent.toLowerCase();
if (ua.indexOf('micromessenger') !== -1) {
console.log(res)
if ( res.tempFilePath) {
// #ifdef H5
let ua = navigator.userAgent.toLowerCase();
if (ua.indexOf('micromessenger') !== -1) {
_this.tempFilePath = res.tempFilePath;
_this.$emit('success', res);
} else {
_this.$emit('successH5', res.tempFilePath);
}
// #endif
// #ifndef H5
_this.tempFilePath = res.tempFilePath;
_this.$emit('success', res);
} else {
_this.$emit('successH5', res.tempFilePath);
// #endif
_this.loading = false;
uni.showToast({
title: '长按图片保存海报',
duration: 1000,
icon: 'none'
});
}
// #endif
// #ifndef H5
_this.tempFilePath = res.tempFilePath;
_this.$emit('success', res);
// #endif
_this.loading = false;
uni.showToast({
title: '长按图片保存海报',
duration: 1000,
icon: 'none'
});
uni.hideLoading()
}
},
@ -318,4 +329,15 @@
};
</script>
<style></style>
<style scoped lang="scss">
.btn_box {
width: 100%;
box-sizing: border-box;
background: rgb(221, 220, 255);
border-radius: 0;
color: rgb(69, 68, 255);
font-size: 28rpx;
font-weight: 700;
padding: 10rpx 32rpx;
}
</style>

View File

@ -69,13 +69,13 @@
limit: this.limit,
}
this.$u.api.selectCourse(data).then(res => {
if (res.code == 0) {
if (res.code === 0) {
res.data.list.forEach(ret => {
if (ret.avatar) {
ret.avatar = ret.avatar.split(',')
}
})
if (this.page == 1) {
if (this.page === 1) {
this.courseList = res.data.list
uni.stopPullDownRefresh();
return

View File

@ -3,12 +3,13 @@
<list :bounce="false" :loadmoreoffset="wHeight*3" :show-scrollbar="false" ref="listBox" :pagingEnabled="true"
:scrollable="true">
<cell v-for="(item,i) in videoList" :key="i" :ref="'list'+item.courseDetailsId">
<view class="swipers-items" @longpress="openBs()" @appear="appear(item.courseDetailsId,i)"
:style="boxStyle">
<view class="swipers-items" @longpress="openBs()" @disappear="disappear(item.courseDetailsId,i)"
@appear="appear(item.courseDetailsId,i)" :style="boxStyle">
<!-- 视频 -->
<video :show-fullscreen-btn="false" @controlstoggle="controlstoggles" object-fit="cover"
<video :show-fullscreen-btn="false" @controlstoggle="controlstoggles" object-fit="contain"
v-if="isShowVideo == item.courseDetailsId && item.videoUrl" :play-strategy="2"
:show-loading="true" codec="software" :muted="false" :show-center-play-btn="true" :loop="true"
@timeupdate="timeupdate" @play="videoPlay('myVideo'+item.courseDetailsId, item.courseDetailsId)"
@ended="ended" :enable-progress-gesture="false" :poster="item.titleImg"
:ref="'myVideo'+item.courseDetailsId" :id="'myVideo'+item.courseDetailsId" :src="item.videoUrl"
:autoplay="item.autoPlay" class="swipers-items-video"></video>
@ -16,7 +17,8 @@
mode="aspectFill">
</image>
<!-- 返回图标 -->
<image src="../static/nvueIcon/backs.png" @click="goBack()" class="swipers-items-back" mode="">
<image v-if="showBack" src="../static/nvueIcon/backs.png" @click="goBack()"
class="swipers-items-back" mode="">
</image>
<!-- 右边操作 -->
<view class="swipers-items-right" :style="rightTop" v-if="showControls">
@ -131,7 +133,7 @@
</view>
</uni-popup>
<!-- 购买弹窗 -->
<uni-popup ref="popupPya" :safe-area="false">
<uni-popup ref="popupPya" @change="popupPyaClose" :safe-area="false">
<view class="pay">
<view class="list-title">
<view class="list-title-l">
@ -143,24 +145,40 @@
<image class="list-title-rs" src="../../static/images/me/closeIconss.png" mode=""></image>
</view>
</view>
<text class=""
style="font-size: 24rpx;color: #999;padding: 0 34rpx;margin: 20rpx 0; auto;text-align: left;width: 100%;">
{{getRedEnvelopeTips}}
</text>
<view class="pay-content">
<view class="pay-content-item" @click="payVideo(1)" v-if="zhengbu === '是'">
<view class="pay-content-item" v-if="info&&info.price" @click="payVideo(2,'all')">
<image class="pay-content-item-icon" src="../../static/images/me/rmIcon.png" mode=""></image>
<text class="pay-content-items">
{{zongPrice}}金币解锁整部视频
{{info.price}}元解锁全剧
</text>
</view>
<view class="pay-content-item" @click="payVideo(2)" v-if="danbu === '是'">
<view class="pay-content-item" v-if="info&&info.wholesalePrice" @click="payVideo(2,10)">
<image class="pay-content-item-icon" src="../../static/images/me/rmIcon.png" mode=""></image>
<text class="pay-content-items">
{{countPrice}}金币解锁单集视频
{{info.wholesalePrice}}元解锁10集视频
</text>
</view>
<view class="pay-content-item" @click="goNav('/pages/me/vip/index')" v-if="isVips == '是'">
<view class="pay-content-item" @click="payVideo(1)">
<image class="pay-content-item-icon" src="../../static/images/me/rmIcon.png" mode=""></image>
<text class="pay-content-items">
{{countPrice*scale}}金币解锁单集视频
</text>
</view>
<view class="pay-content-item" @click="payVideo(2)">
<text class="pay-content-items">
{{countPrice}}元解锁单集视频
</text>
</view>
<!-- <view class="pay-content-item" @click="goNav('/pages/me/vip/index')" v-if="isVips == '是'">
<image class="pay-content-item-icon" src="../../static/images/me/rmIcon.png" mode=""></image>
<text class="pay-content-items">
开通会员
</text>
</view>
</view> -->
</view>
</view>
@ -176,6 +194,8 @@
</view>
</view>
</uni-popup>
<!-- 支付弹窗 -->
<uni-popup ref="popuppay" :safe-area="false">
<view class="popuppay">
@ -188,7 +208,7 @@
src="../../static/images/me/closeIconss.png" mode=""></image>
</view>
<!-- 余额 -->
<view class="popuppay-money">
<!-- <view class="popuppay-money">
<view class="popuppay-money-l">
<text class="popuppay-money-l-ye">
账号余额:
@ -208,9 +228,9 @@
{{payPrice}}金币
</text>
</view>
</view>
</view> -->
<!-- 充值类型列表 -->
<scroll-view scroll-y="true" class="payLists">
<!-- <scroll-view scroll-y="true" class="payLists">
<view class="popuppay-payList">
<view class="payList-item" @click="wallCurr = index" :class="wallCurr == index?'activePrice':''"
v-for="(item,index) in wallet" :key="index">
@ -237,7 +257,7 @@
</view>
</view>
</view>
</scroll-view>
</scroll-view> -->
<!-- 支付类型 -->
<view class="payType">
<view class="payType-item" @tap='selectWay(item)' v-for="(item,index) in openLists" :key="index">
@ -291,16 +311,30 @@
</view>
</uni-popup>
<!-- 抽奖弹窗 -->
<!-- <uni-popup ref="refPopupZhuanPan" :safe-area="true" background-color="#ffffff">
<view case="">
111
<l-dialer :prizeList="prizeList" @click="onClick" @done="onDone" ref="dialer" />
</view>
</uni-popup> -->
</view>
</template>
<script>
let backTimer=null
const listDom = uni.requireNativePlugin('dom')
import config from '../../common/config.js'
import httpsRequest from '../../common/httpRequest.js'
export default {
data() {
return {
//可抽奖次数
freeNum: 0,
showBack: true,
noBuyVideoIndex: null,
// 奖品列表,
showMoney: true,
nowBs: 1, //当前倍速
subList: [{
@ -324,7 +358,7 @@
haibaoShow: false,
title: '',
imgSrc: '',
current: 0,
current: 2,
maskCustomStyle: {
background: 'rgba(0, 0, 0, 0.5)'
},
@ -338,7 +372,7 @@
num: 1, //当前播放的集数
showPay: false, //购买视频的弹窗
info: {}, //整部的信息
courseDetailsId: '', //详情id
courseDetailsId: null, //详情id
scrollIntoView: '', //当前播放视频的位置
scrollIntoViews: 'video0', //当前播放视频的位置
isVips: '否', //是否显示会员
@ -368,6 +402,16 @@
'width': '750rpx',
},
isShowVideo: '',
noBuyVideoIndex: null,
playFlag: false,
getRedEnvelopeTips: '',
scale: 1,
// 防抖使用的变量
appearTimeout: null,
isOrder: true,
isGetDataList: false,
dianzanTimer:null,
zhuijuTimer:null
};
},
onUnload() {
@ -381,13 +425,17 @@
if (this.videoContext) {
this.videoContext.play()
}
const noBuyVideoIndex = uni.getStorageSync('noBuyVideoIndex')
if (noBuyVideoIndex !== null && noBuyVideoIndex !== undefined) {
this.noBuyVideoIndex = noBuyVideoIndex
}
this.isVips = uni.getStorageSync('isVips') ? uni.getStorageSync('isVips') : '否'
let that = this
uni.$on('back', (data) => {
if (data.flag == true) {
that.showPay = false
that.getDataList(that.courseId, that.courseDetailsId, true);
that.getMyLoveStatus()
// that.getMyLoveStatus()
that.getMoneyList()
that.getMyMoney()
}
@ -395,25 +443,28 @@
this.moneyTips = uni.getStorageSync('moneyTips')
// #ifdef APP-PLUS
if (plus.os.name.toLowerCase() === 'android') {
this.openLists = [{
image: '/static/images/pay/weixin.png',
text: '微信',
id: 2
}, {
image: '/static/images/pay/zhifubao.png',
text: '支付宝',
id: 1
}];
this.openWay = 2;
this.openLists = [
// {
// image: '/static/images/pay/weixin.png',
// text: '微信',
// id: 2
// },
{
image: '/static/images/pay/zhifubao.png',
text: '支付宝',
id: 1
},
];
this.openWay = 1;
let syPaySel = uni.getStorageSync('syPaySel')
if (syPaySel === '是') {
let openListsItem = {
image: '/static/images/pay/shouyi.png',
text: '收益余额',
id: 4
};
this.openLists.push(openListsItem)
}
// if (syPaySel === '是') {
// let openListsItem = {
// image: '/static/images/pay/shouyi.png',
// text: '收益余额',
// id: 4
// };
// this.openLists.push(openListsItem)
// }
} else {
let checkIosPay = uni.getStorageSync('checkIosPay');
if (checkIosPay === '是') {
@ -424,31 +475,59 @@
}];
this.openWay = 3;
} else {
this.openLists = [{
image: '/static/images/pay/weixin.png',
text: '微信',
id: 2
}, {
image: '/static/images/pay/zhifubao.png',
text: '支付宝',
id: 1
}];
this.openWay = 2;
this.openLists = [
// {
// image: '/static/images/pay/weixin.png',
// text: '微信',
// id: 2
// },
{
image: '/static/images/pay/zhifubao.png',
text: '支付宝',
id: 1
},
];
this.openWay = 1;
let syPaySel = uni.getStorageSync('syPaySel')
if (syPaySel === '是') {
let openListsItem = {
image: '/static/images/pay/shouyi.png',
text: '收益余额',
id: 4
};
this.openLists.push(openListsItem)
}
// if (syPaySel === '是') {
// let openListsItem = {
// image: '/static/images/pay/shouyi.png',
// text: '收益余额',
// id: 4
// };
// this.openLists.push(openListsItem)
// }
}
}
// #endif
this.$nextTick(() => {
this.closePopusPay()
})
if (this.courseId) {
this.getDataList(this.courseId, this.courseDetailsId);
}
httpsRequest.getT('app/course/getRedEnvelopeTips').then(res => {
if (res.code == 0) {
this.getRedEnvelopeTips = res.data
}
})
this.getScale()
},
onBackPress() {
console.log('onBackPress')
const {
courseId,
courseDetailsId,
videoUrl
} = this.videoList[this.current]
if (videoUrl) {
this.setHistor(courseId, courseDetailsId, true)
}
},
onLoad(e) {
this.courseDetailsId=e.courseDetailsId
//是开启整部购买
this.zhengbu = uni.getStorageSync('zhengbu') ? uni.getStorageSync('zhengbu') : '否'
//是否开启单集购买
@ -471,28 +550,134 @@
// 记录跳转过来的视频总id跟单集id
if (e.id) {
this.courseId = e.id;
if (e.courseDetailsId && e.courseDetailsId != 'null') {
this.courseDetailsId = e.courseDetailsId
}
this.getDataList(this.courseId, this.courseDetailsId);
this.getMyLoveStatus()
// this.getMyLoveStatus()
this.getMoneyList()
this.getMyMoney()
} else {
console.log("allId=====" + e.allId)
if (e.allId) {
const arr = e.allId.split('-')
this.courseId = arr[0];
// this.getMyLoveStatus()
this.getMoneyList()
this.getMyMoney()
}
}
if (document.documentElement.scrollHeight <= document.documentElement.clientHeight) {
bodyTag = document.getElementsByTagName('body')[0];
bodyTag.style.height = document.documentElement.clientWidth / screen.width * screen.height + 'px';
}
},
onHide() {
console.log('onHide')
clearTimeout(backTimer)
},
methods: {
/**
* 获取金币比例
*/
getScale() {
httpsRequest.getT("app/common/type/914", {}).then(res => {
if (res.code == 0) {
this.scale = Number(res.data.value)
}
});
},
//播放时的回掉
videoPlay(videoId, courseDetailsId) {
if (!this.playFlag) {
this.playFlag = true
if (this.isGetDataList) {
this.getDataList(this.courseId, courseDetailsId, true);
}
this.isGetDataList = true;
httpsRequest.getT('app/course/viewCourse', {
courseId: this.courseId,
courseDetailsId: courseDetailsId,
type: 'start'
}).then(res => {
console.log('播放开始')
})
}
},
//播放进度变化回掉
timeupdate(e) {
// console.log(this.courseDetailsId)
if (e.detail.currentTime > e.detail.duration * 0.9) {
if (this.playFlag) {
this.playFlag = false
httpsRequest.getT('app/course/viewCourse', {
courseId: this.courseId,
courseDetailsId: this.videoList[this.current].courseDetailsId,
type: 'end'
}).then(res => {
console.log('播放结束')
})
}
}
},
appear(e, index) {
this.current = index
this.showControls = true
this.isShowVideo = e
this.scrollIntoViews = 'video' + index
this.scrollIntoView = 'video' + index
console.log(this.scrollIntoViews, '当前位置')
//播放并更新video的上下文
this.startPlay(index)
//插入历史记录
this.setHistor(this.videoList[index].courseId, this.videoList[index].courseDetailsId);
this.$forceUpdate()
this.playFlag = false
this.courseDetailsId = e;
// 清除已经设置的定时器
clearTimeout(this.appearTimeout);
// 设置一个新的延迟执行的定时器
this.appearTimeout = setTimeout(() => {
// 实际要执行的操作
console.log('页面出现在视图中');
// 这里可以加入你需要执行的代码
console.log("appear===" + e)
console.log("appear===" + index)
// this.courseDetailsId = e
console.log(e)
this.current = index
this.showControls = true
this.isShowVideo = e
this.scrollIntoViews = 'video' + index
this.scrollIntoView = 'video' + index
console.log(this.scrollIntoViews, '当前位置')
this.getDataList(this.courseId, this.videoList[this.current].courseDetailsId);
//播放并更新video的上下文
this.startPlay(index)
//插入历史记录
this.setHistor(this.videoList[index].courseId, this.videoList[index].courseDetailsId);
this.$forceUpdate()
}, 500); // 延迟500毫秒执行
},
disappear(e, index) {
// if (this.videoContext) { //判断之前是否有视频的上下文
// this.videoContext.stop();
// this.videoContext = null;
// }
// console.log("disappear==="+index)
// if (this.current > index) {
// index = index + 1
// } else {
// index = index - 1
// }
// let numIdCurr = this.videoList[index].courseDetailsId;
// if (this.videoList[index].videoUrl) { //已经购买可直接播放
// // 播放时记录当前播放的id
// this.appear(numIdCurr, index)
// this.videoContextId = 'myVideo' + numIdCurr;
// this.videoContext = uni.createVideoContext(this.videoContextId, this);
// console.log('走更新了')
// this.$nextTick(() => {
// //播放当前的
// this.videoContext.play();
// })
// }
// this.$forceUpdate();
},
//选集弹窗的回调
changeXj(e) {
@ -633,15 +818,37 @@
payClassifyId: this.wallet[this.wallCurr].payClassifyId,
}).then(ret => {
this.isCheckPay(ret.code, 'wxpay', JSON.stringify(ret.data));
});
})
} else if (this.openWay == 1) {
let paytype = 'h5'
// #ifdef APP
paytype = 'app'
// #endif
// APP支付宝支付
httpsRequest.postT("/app/aliPay/payMoney", {
classify: 1,
payClassifyId: this.wallet[this.wallCurr].payClassifyId,
}).then(ret => {
console.log(ret)
this.isCheckPay(ret.code, 'alipay', ret.data);
console.log('nvue payType=' + paytype);
httpsRequest.getT("/app/wuyou/payOrder/" + this.ordersId + '?payType=' + paytype, {}).then(ret => {
console.log(ret);
// plus.runtime.openURL(ret.data.h5Url)
if (ret.code == 0) {
uni.hideLoading()
uni.navigateTo({
url: '/pages/pays/pays?ordersId=' + this.ordersId + '&url=' + ret.data
.h5Url
});
} else {
uni.hideLoading()
uni.showToast({
icon: "none",
title: res.msg
});
}
// uni.navigateTo({
// url: '/pages/index/webView?ordersId='+this.ordersId+'url=' + ret.data.h5Url
// });
// this.isCheckPay(ret.code, 'wxpay', JSON.stringify(ret.data));
});
} else if (this.openWay == 3) {
let userId = uni.getStorageSync('userId');
@ -768,6 +975,22 @@
//打开支付弹窗
openPopusPay() {
this.$refs.popuppay.open('bottom')
return
// 通过 id 获取 nvue 子窗体
// const subNVue = uni.getSubNVueById('pay')
// subNVue.setStyle({
// height: '350rpx',
// })
// // 打开 nvue 子窗体
// subNVue.show('slide-in-bottom', 300, function() {
// // 打开后进行一些操作...
// //
// console.log('subnvue open')
// });
// 关闭 nvue 子窗体
// subNVue.hide('fade-out', 300)
// this.$refs.refPopupZhuanPan.open('bottom')
},
// 获取收藏状态
getMyLoveStatus() {
@ -788,7 +1011,8 @@
//显示/隐藏适配控制器的回调
controlstoggles(e) {
this.showControls = e.detail.show
console.log(e.detail.show, '显示/隐藏控制栏')
this.showBack = this.showControls
// console.log(e.detail.show, '显示/隐藏控制栏')
},
//打开倍速弹框
openBs() {
@ -816,7 +1040,7 @@
qdCode = uni.getStorageSync('qdCode')
}
let url = config.APIHOST2 + '/pages/login/registerApp?invitation=' + invitationCode + '&qdCode=' + qdCode
this.setShareNum()
// this.setShareNum()
uni.setClipboardData({
data: url,
success(res) {
@ -839,14 +1063,26 @@
}
},
popupPyaClose() {
this.isOrder = true
console.log(this.isOrder)
},
/**
* @param {Object} type 类型
* 1:购买整部视频
* 2:购买单集视频
*/
payVideo(type) {
payVideo(type, num) {
console.log(this.isOrder)
if (!this.isOrder) {
return;
}
uni.showLoading({
title: '加载中'
})
this.isOrder = false
if (uni.getStorageSync('token')) {
this.submitPay(type)
this.submitPay(type, num)
} else {
uni.navigateTo({
url: "/pages/login/login"
@ -854,19 +1090,48 @@
}
},
//使用金币购买
submitPay(type) {
submitPay(type, num) {
let data = {
courseId: this.courseId
}
if (type != 1) { //购买单集
if (!num) {
console.log('进入num');
//单集解锁
data.courseDetailsId = this.videoList[this.current].courseDetailsId
}
httpsRequest.getT('/app/order/insertCourseOrders', data).then(res => {
console.log(this.current)
console.log(data)
this.setHistor()
httpsRequest.getT((num && num == 10) ? '/app/order/insertCourseOrders/limit10' :
'/app/order/insertCourseOrders', data).then(res => {
console.log(res)
if (res.code == 0) {
this.ordersId = res.data.orders.ordersId //记录订单id
this.payMoney = res.data.orders.payMoney //记录订单价格
this.payOrder(res.data.orders.ordersId, res.data.orders.payMoney)
if (res.status && res.status == 1) {
uni.hideLoading()
this.showPay = false //关闭购买选择弹窗
this.isOrder = true
this.getDataList(this.courseId, this.videoList[this.current].courseDetailsId,
true);
return;
} else {
this.ordersId = res.data.orders.ordersId //记录订单id
this.payMoney = res.data.orders.payMoney //记录订单价格
if (type == 1) { //金币
this.payOrder(res.data.orders.ordersId, res.data.orders.payMoney)
} else if (type == 2) { //支付宝
uni.hideLoading()
this.closePay() //关闭购买选择弹窗
this.payPrice = res.data.orders.payMoney //需要支付的价格
this.openPopusPay() //显示充值弹窗
}
}
console.log(this.isOrder)
// this.payOrder(res.data.orders.ordersId, res.data.orders.payMoney)
} else {
this.isOrder = true
uni.showToast({
title: res.msg,
icon: 'none'
@ -876,44 +1141,61 @@
},
payOrder(orderId, payMoney) {
let that = this
console.log("orderId==" + orderId)
httpsRequest.postT("/app/order/payOrders", {
orderId: orderId,
}).then(res => {
console.log("orderIds==", res)
if (res.code == 0) {
uni.hideLoading()
uni.showToast({
title: '已解锁,支付' + payMoney + '金币',
title: '已成功解锁',
icon: 'none'
})
this.closePopusPay()
this.closePay()
that.showPay = false
that.showMoney = false
that.noBuyVideoIndex = null
setTimeout(() => {
that.getDataList(that.courseId, that.videoList[that.current].courseDetailsId,
true);
}, 1000)
} else { //支付失败(余额不足)
that.closePay() //关闭购买选择弹窗
this.payPrice = payMoney //需要支付的价格
this.openPopusPay() //显示充值弹窗
uni.showToast({
title: res.msg,
icon: 'none'
})
that.showPay = true
that.showMoney = false
// that.closePay() //关闭购买选择弹窗
// this.payPrice = payMoney //需要支付的价格
// this.openPopusPay() //显示充值弹窗
}
this.isOrder = true
});
},
//打开购买弹窗
openPay() {
//获取总价跟单集价格
this.zongPrice = this.info.price
this.countPrice = this.videoList[this.current].price
this.$refs.popupPya.open('bottom')
this.noBuyVideoIndex = this.current
uni.setStorageSync('noBuyVideoIndex', this.current)
},
//关闭购买弹窗
closePay() {
console.log(1)
this.$refs.popupPya.close()
},
//选择播放
selectPlay(item) {
selectPlay(item, type) {
if (this.videoList[this.current].videoUrl == '' && this.videoList[this.current].price <= 0 && !type) {
this.getDataList(this.courseId, this.courseDetailsId, true, 'select')
return;
}
//重新计算一下当前观看的是哪个视频
this.comNumVideo()
//滚动到选择的位置
@ -943,16 +1225,23 @@
//收藏
shoucang() {
if (uni.getStorageSync('token')) {
this.isCollect=!this.isCollect
let data = {
courseId: this.courseId,
classify: 1,
type: this.isCollect == false ? 1 : 0
type: this.isCollect? 1 : 0
}
httpsRequest.postJson('/app/courseCollect/insertCourseCollect', data).then(res => {
if (res.code == 0) {
this.getMyLoveStatus()
}
})
clearTimeout(this.zhuijuTimer)
this.zhuijuTimer=setTimeout(()=>{
clearTimeout(this.zhuijuTimer)
this.zhuijuTimer=null;
httpsRequest.postJson('/app/courseCollect/insertCourseCollect', data).then(res => {
if (res.code == 0) {
// this.getMyLoveStatus()
}
})
},500)
} else {
uni.navigateTo({
url: "/pages/login/login"
@ -969,17 +1258,23 @@
classify: 2,
type: item.isGood == 0 ? 1 : 0
};
httpsRequest.postJson('/app/courseCollect/insertCourseCollect', data).then(res => {
if (res.code == 0) {
if (data.type == 1) {
item.isGood = 1;
item.goodNum += 1;
} else {
item.isGood = 0;
item.goodNum -= 1;
if (data.type == 1) {
item.isGood = 1;
item.goodNum += 1;
} else {
item.isGood = 0;
item.goodNum -= 1;
}
clearTimeout(this.dianzanTimer)
this.dianzanTimer = null
this.dianzanTimer = setTimeout(() => {
httpsRequest.postJson('/app/courseCollect/insertCourseCollect', data).then(res => {
if (res.code == 0) {
}
}
})
})
}, 500)
} else {
uni.navigateTo({
url: "/pages/login/login"
@ -990,9 +1285,9 @@
//播放结束后播放下一集
ended() {
if (this.current < this.videoList.length - 1) {
// this.current += 1
this.$nextTick(() => {
let courseDetailsId = this.videoList[this.current + 1].courseDetailsId
this.current += 1
let courseDetailsId = this.videoList[this.current].courseDetailsId
console.log(courseDetailsId, '开始移动了')
const el = this.$refs['list' + courseDetailsId][0]
listDom.scrollToElement(el, {})
@ -1016,6 +1311,7 @@
this.$nextTick(() => {
//播放当前的
this.videoContext.play();
this.videoContext.playbackRate(this.subList[this.nowBs].num)
})
} else { //没有视频链接则表示没有权限,需要购买 弹出购买弹窗
this.openPay()
@ -1028,36 +1324,65 @@
},
//滚动到指定位置
goListPosition(courseDetailsId) {
let _this = this;
// this.scrollIntoViews = 'video0'
this.$nextTick(() => {
// setTimeout(()=>{
console.log(courseDetailsId, '开始移动了')
const el = this.$refs['list' + courseDetailsId][0]
const el = _this.$refs['list' + courseDetailsId][0]
listDom.scrollToElement(el, {
animated: false
})
this.$forceUpdate()
console.log(el, '移动结束')
_this.$forceUpdate()
console.log('移动结束', el)
// },1000)
})
},
async getCount() {
console.log('getCount')
const res = await this.$Request.getT('app/discSpinning/drawCount')
if (res.code == 0) {
this.freeNum = res.count || 0
}
console.log(res);
return res
},
/**
* @param {Number} courseId 总id
* @param {Number} courseDetailsId 当前视频id
* @param {boolean} type 是购买后返回的还是直接进来的
*/
getDataList(courseId, courseDetailsId, type) {
getDataList(courseId, courseDetailsId, type, t) {
let data = {
id: courseId,
courseId: courseId,
token: uni.getStorageSync('token') ? uni.getStorageSync('token') : ''
};
httpsRequest.getT('/app/course/selectCourseDetailsById', data).then(res => {
httpsRequest.getT('/app/course/courseSets', data).then(res => {
console.log('getDataList')
console.log(res)
if(res.code==401){
// uni.showToast({
// title: '请先登录',
// icon: 'none'
// })
return
}
if (res.code == 0) {
if (res.data.listsDetail) {
this.isCollect = res.data.collect ? true : false;
courseDetailsId=(courseDetailsId&&courseDetailsId!=='null')?courseDetailsId: res.data.current.courseDetailsId
this.courseDetailsId = courseDetailsId
if (res.data.list) {
this.info = res.data;
this.title = this.info.title;
let arr = JSON.parse(JSON.stringify(res.data.listsDetail));
const indexs = arr.findIndex(menu => menu.courseDetailsId ===
Number(courseDetailsId));
this.current = indexs
const arr = res.data.list
const indexs = arr.findIndex(v => v.courseDetailsId == (courseDetailsId ?
courseDetailsId : res.data.current.courseDetailsId));
//如果未找到将current值改为0否则会导致选集无法弹窗弹窗后点击相对应集数也无反应
this.current = indexs === -1 ? 0 : indexs;
this.scrollIntoViews = 'video' + indexs
this.scrollIntoView = 'video' + indexs
// this.scrollIntoView = 'video' + indexs
arr.map((item, index) => {
item.num = index + 1;
if (item.videoUrl) {
@ -1070,6 +1395,7 @@
//菜单数组
this.meunList = arr;
if (type == true) { //购买视频后返回的
console.log('购买视频后返回的')
let courseDetailsIds = this.videoList[this.current].courseDetailsId;
this.meunList.some((item) => {
if (item.courseDetailsId == courseDetailsIds) {
@ -1085,36 +1411,97 @@
}
})
})
if (this.noBuyVideoIndex !== null && this.videoList[this
.noBuyVideoIndex].videoUrl) {
this.noBuyVideoIndex = null
uni.removeStorageSync('noBuyVideoIndex')
this.videoContext.stop()
httpsRequest.getT('app/discSpinning/drawCount').then(res => {
console.log('转盘抽奖次数')
console.log(res)
if (res.count >= 1) {
uni.navigateTo({
url: '/me/choujiang/choujiang'
})
} else {
this.videoContext.play();
}
})
} else {
console.log('播放')
this.$nextTick(() => {
console.log('myVideo' + courseDetailsIds)
this.videoContextId = 'myVideo' + courseDetailsIds;
this.videoContext = uni.createVideoContext(this
.videoContextId,
this);
if (this.videoList[this.current].videoUrl) {
this.videoContext.play();
} else {
console.log("播放失败")
this.getDataList(this.courseId, courseDetailsIds, true);
}
})
}
// console.log('this.noBuyVideoIndex', this.noBuyVideoIndex)
} else { //直接跳转进来的
this.videoList = this.meunList
//滚动到记录视频的位置(如果有记录)
if (indexs > 0) {
console.log(indexs, '有记录吗?')
this.goListPosition(this.videoList[indexs].courseDetailsId)
}
this.$nextTick(() => {
let indexss = indexs > 0 ? indexs : 0
//滚动到记录视频的位置(如果有记录)
if (indexs > 0) {
console.log(indexs, '有记录吗?')
this.goListPosition(this.videoList[indexs].courseDetailsId)
}
// console.log('this.noBuyVideoIndex', this.noBuyVideoIndex)
if (this.videoList[indexss].videoUrl) { //有播放权限
console.log('有播放权限进入是否抽取转盘判断')
let numIdCurr = this.videoList[indexss].courseDetailsId;
this.videoContextId = 'myVideo' + numIdCurr;
this.videoContext = uni.createVideoContext(this
.videoContextId,
this);
this.videoContext.play();
if (this.noBuyVideoIndex != null && this.videoList[this
.noBuyVideoIndex].videoUrl) {
this.videoContext.stop();
httpsRequest.getT('app/discSpinning/drawCount').then(res => {
console.log('转盘抽奖次数')
if (res.count >= 1) {
uni.navigateTo({
url: '/me/choujiang/choujiang'
})
} else {
this.videoContext.play();
}
})
uni.removeStorageSync('noBuyVideoIndex')
this.noBuyVideoIndex = null
} else {
this.videoContext.play();
}
} else { //没有播放权限打开购买弹窗
this.openPay()
}
this.$forceUpdate();
})
}
if (t == 'select') {
this.selectPlay(this.videoList[this.current], true)
}
this.$forceUpdate();
}
} else {
uni.showToast({
title: '加载失败',
icon: 'none'
})
setTimeout(() => {
clearTimeout(backTimer)
backTimer= setTimeout(() => {
uni.navigateBack();
}, 1000)
}
@ -1130,8 +1517,22 @@
})
},
//插入观看记录
setHistor(courseId, courseDetailsId) {
setHistor(courseId, courseDetailsId, now) {
clearTimeout(this.timer)
if (uni.getStorageSync('token')) {
clearTimeout(this.timer)
if (now) {
let data = {
courseId: courseId,
courseDetailsId: courseDetailsId,
classify: 3,
type: 1
};
console.log(data, '记录了')
httpsRequest.postJson('/app/courseCollect/insertCourseCollect', data).then(res => {})
return
}
let data = {
courseId: courseId,
courseDetailsId: courseDetailsId,

File diff suppressed because it is too large Load Diff

View File

@ -1,13 +1,14 @@
<template>
<view class="detail">
<view class="detail" :style="{paddingBottom:paddingBottom}">
<swiper @longpress="openBs()" :circular="true" class="swipers" @change="change" :current="current"
:vertical="true" :indicator-dots="false" :autoplay="false" :interval="3000" :duration="300">
<swiper-item class="swipers-item" v-for="(item,index) in swiperList" :key="item.courseDetailsId">
<view class="swipers-items" v-if="current == index">
<!-- 视频 -->
<video :show-fullscreen-btn="false" @controlstoggle="controlstoggles" object-fit="cover"
<video :show-fullscreen-btn="false" @controlstoggle="controlStoggles" object-fit="contain"
v-if="current === index && item.videoUrl" :play-strategy="2" :show-loading="true"
codec="software" :muted="false" :show-center-play-btn="true" :loop="true" @ended="ended"
@timeupdate="timeupdate" @play="videoPlay('myVideo'+item.courseDetailsId, item.courseDetailsId)"
:enable-progress-gesture="false" :poster="item.titleImg" :ref="'myVideo'+item.courseDetailsId"
:id="'myVideo'+item.courseDetailsId" :src="item.videoUrl" :autoplay="item.autoPlay"
class="swipers-items-video"></video>
@ -15,7 +16,8 @@
mode="aspectFill">
</image>
<!-- 返回图标 -->
<image src="../static/nvueIcon/backs.png" @click="goBack()" class="swipers-items-back" mode="">
<image v-if="showBack" src="../static/nvueIcon/backs.png" @click="goBack()"
class="swipers-items-back" mode="">
</image>
<!-- 右边操作 -->
<view class="swipers-items-right" :style="rightTop" v-if="showControls">
@ -44,7 +46,7 @@
</view>
</view>
<view class="swipers-items-right-item" v-if="isCollect">
<view class="swipers-items-right-item-img" @click.stop="shoucang()">
<view class="swipers-items-right-item-img" @click.stop="collectVideo()">
<image class="swipers-items-right-item-imgs" src="../../static/images/me/shuqian_s.png"
mode=""></image>
</view>
@ -55,7 +57,7 @@
</view>
</view>
<view class="swipers-items-right-item" v-else>
<view class="swipers-items-right-item-img" @click.stop="shoucang()">
<view class="swipers-items-right-item-img" @click.stop="collectVideo()">
<image class="swipers-items-right-item-imgs" src="../../static/images/me/shuqian.png"
mode=""></image>
</view>
@ -141,24 +143,28 @@
<image class="list-title-rs" src="../../static/images/me/closeIconss.png" mode=""></image>
</view>
</view>
<text class=""
style="font-size: 24rpx;color: #999;padding: 0 34rpx;margin: 20rpx 0; auto;text-align: left;width: 100%;">
{{getRedEnvelopeTips}}
</text>
<view class="pay-content">
<view class="pay-content-item" @click="payVideo(1)" v-if="zhengbu === '是'">
<view class="pay-content-item" @click="payVideo(1)">
<image class="pay-content-item-icon" src="../../static/images/me/rmIcon.png" mode=""></image>
<text class="pay-content-items">
{{zongPrice}}金豆解锁整部视频
{{countPrice*scale}}金币解锁整部视频
</text>
</view>
<view class="pay-content-item" @click="payVideo(2)" v-if="danbu === '是'">
<view v-if="isShowMoneyPay" class="pay-content-item" @click="payVideo(2)">
<text class="pay-content-items">
{{countPrice}}金豆解锁单集视频
{{countPrice}}解锁单集视频
</text>
</view>
<view class="pay-content-item" @click="goNav('/pages/me/vip/index')" v-if="isVips == '是'">
<!-- <view class="pay-content-item" @click="goNav('/pages/me/vip/index')" v-if="isVips == '是'">
<image class="pay-content-item-icon" src="../../static/images/me/rmIcon.png" mode=""></image>
<text class="pay-content-items">
开通会员
</text>
</view>
</view> -->
</view>
</view>
@ -182,17 +188,17 @@
<text class="popuppay-title-l">
购买后继续观看
</text>
<image @click="closePopusPay()" class="popuppay-title-r"
<image @click="closePopupPay()" class="popuppay-title-r"
src="../../static/images/me/closeIconss.png" mode=""></image>
</view>
<!-- 余额 -->
<view class="popuppay-money">
<!-- <view class="popuppay-money">
<view class="popuppay-money-l">
<text class="popuppay-money-l-ye">
账号余额:
</text>
<text class="popuppay-money-l-jd">
{{moneyNum}}金
{{moneyNum}}金
</text>
<text class="popuppay-money-l-mx" @click="goWallet('/me/wallet/wallet')">
查看明细
@ -203,12 +209,12 @@
解锁价格:
</text>
<text class="popuppay-money-jd">
{{payPrice}}金
{{payPrice}}金
</text>
</view>
</view>
</view> -->
<!-- 充值类型列表 -->
<scroll-view scroll-y="true" class="payLists">
<!-- <scroll-view scroll-y="true" class="payLists">
<view class="popuppay-payList">
<view class="payList-item" @click="wallCurr = index" :class="wallCurr == index?'activePrice':''"
v-for="(item,index) in wallet" :key="index">
@ -220,12 +226,12 @@
</view>
<view class="payList-item-dou">
<text class="payList-item-dous">
{{item.money}}金
{{item.money}}金
</text>
</view>
<view class="payList-item-duo" v-if="item.giveMoney>0">
<text class="payList-item-duos">
多送{{item.giveMoney}}金
多送{{item.giveMoney}}金
</text>
</view>
<view class="payList-item-hui" v-if="item.remarks">
@ -235,7 +241,7 @@
</view>
</view>
</view>
</scroll-view>
</scroll-view> -->
<!-- 支付类型 -->
<view class="payType">
<view class="payType-item" @tap='selectWay(item)' v-for="(item,index) in openLists" :key="index">
@ -298,6 +304,7 @@
export default {
data() {
return {
showBack: true,
nowBs: 1, //当前倍速
subList: [{
name: '0.5x',
@ -358,6 +365,11 @@
payPrice: 0, //解锁价格
iosPayId: '',
isCollect: false,
playFlag: false,
getRedEnvelopeTips: '',
scale: 1,
paddingBottom: '0',
isShowMoneyPay: true,
};
},
computed: {
@ -385,7 +397,7 @@
this.isVips = uni.getStorageSync('isVips') ? uni.getStorageSync('isVips') : '否'
let that = this
uni.$on('back', (data) => {
if (data.flag == true) {
if (data.flag) {
that.showPay = false
that.getDataList(that.courseId, that.courseDetailsId, true);
that.getMyLoveStatus()
@ -396,58 +408,97 @@
this.moneyTips = uni.getStorageSync('moneyTips')
// #ifdef APP-PLUS
if (plus.os.name.toLowerCase() === 'android') {
this.openLists = [{
image: '/static/images/pay/weixin.png',
text: '微信',
id: 2
}, {
image: '/static/images/pay/zhifubao.png',
text: '支付宝',
id: 1
}];
this.openWay = 2;
let syPaySel = uni.getStorageSync('syPaySel')
if (syPaySel === '是') {
let openListsItem = {
image: '/static/images/pay/shouyi.png',
text: '收益余额',
id: 4
};
this.openLists.push(openListsItem)
}
} else {
let checkIosPay = uni.getStorageSync('checkIosPay');
if (checkIosPay === '是') {
this.openLists = [{
image: '/static/images/pay/weixin.png',
text: '苹果',
id: 3
}];
this.openWay = 3;
} else {
this.openLists = [{
image: '/static/images/pay/weixin.png',
text: '微信',
id: 2
}, {
this.openLists = [
// {
// image: '/static/images/pay/weixin.png',
// text: '微信',
// id: 2
// },
{
image: '/static/images/pay/zhifubao.png',
text: '支付宝',
id: 1
}];
this.openWay = 2;
let syPaySel = uni.getStorageSync('syPaySel')
if (syPaySel === '是') {
let openListsItem = {
image: '/static/images/pay/shouyi.png',
text: '收益余额',
id: 4
};
this.openLists.push(openListsItem)
}
}
},
];
this.openWay = 1;
let syPaySel = uni.getStorageSync('syPaySel')
// if (syPaySel === '是') {
// let openListsItem = {
// image: '/static/images/pay/shouyi.png',
// text: '收益余额',
// id: 4
// };
// this.openLists.push(openListsItem)
// }
} else {
let checkIosPay = uni.getStorageSync('checkIosPay');
// if (checkIosPay === '是') {
// this.openLists = [{
// image: '/static/images/pay/weixin.png',
// text: '苹果',
// id: 3
// }];
// this.openWay = 3;
// } else {
this.openLists = [
// {
// image: '/static/images/pay/weixin.png',
// text: '微信',
// id: 2
// },
{
image: '/static/images/pay/zhifubao.png',
text: '支付宝',
id: 1
},
];
this.openWay = 1;
let syPaySel = uni.getStorageSync('syPaySel')
// if (syPaySel === '是') {
// let openListsItem = {
// image: '/static/images/pay/shouyi.png',
// text: '收益余额',
// id: 4
// };
// this.openLists.push(openListsItem)
// }
// }
}
// #endif
this.$nextTick(() => {
this.closePopupPay()
})
if (this.courseId) {
this.getDataList(this.courseId, this.courseDetailsId);
}
httpsRequest.getT('app/course/getRedEnvelopeTips').then(res => {
if (res.code === 0) {
this.getRedEnvelopeTips = res.data
}
})
this.getScale()
const sysInfo = uni.getSystemInfoSync()
console.log(sysInfo);
const padB = sysInfo.safeAreaInsets.bottom;
console.log('win height == ' + padB);
if (padB && padB > 0) {
this.paddingBottom = padB + 'px'
} else {
this.paddingBottom = '0'
}
console.log('this bottom padding = ' + this.paddingBottom);
httpsRequest.getT("app/common/type/919", {}).then(res => {
if (res.code === 0) {
const sysInfo = uni.getSystemInfoSync();
let isIos = sysInfo.platform == 'ios'
this.isShowMoneyPay = !(res.data.value == '1' && isIos)
}
});
},
onLoad(e) {
let that = this
@ -472,16 +523,57 @@
if (e.courseDetailsId) {
this.courseDetailsId = e.courseDetailsId;
}
this.getDataList(this.courseId, this.courseDetailsId);
this.getMyLoveStatus()
this.getMoneyList()
this.getMyMoney()
}
},
methods: {
/**
* 获取金币比例
*/
getScale() {
httpsRequest.getT("app/common/type/914", {}).then(res => {
if (res.code === 0) {
this.scale = Number(res.data.value)
}
});
},
//播放时的回掉
videoPlay(videoId, courseDetailsId) {
this.courseDetailsId = courseDetailsId
if (!this.playFlag) {
this.playFlag = true
httpsRequest.getT('app/course/viewCourse', {
courseId: this.courseId,
courseDetailsId: courseDetailsId,
type: 'start'
}).then(res => {
console.log('播放开始')
})
}
},
//播放进度变化回掉
timeupdate(e) {
if (e.detail.currentTime > e.detail.duration * 0.9) {
if (this.playFlag) {
this.playFlag = false
httpsRequest.getT('app/course/viewCourse', {
courseId: this.courseId,
courseDetailsId: this.courseDetailsId,
type: 'end'
}).then(res => {
console.log('播放结束')
})
}
}
},
//选集弹窗的回调
changeXj(e) {
if (e.show == false) {
if (!e.show) {
//关闭弹窗的时候重置scrollIntoViews防止关闭后第二次点就不能自动滑动到当前集的位置
this.scrollIntoViews = 'video0'
}
@ -522,7 +614,7 @@
});
},
isCheckPay(status, name, order) {
if (status == 0) {
if (status === 0) {
this.setPayment(name, order);
} else {
uni.hideLoading();
@ -532,7 +624,7 @@
});
}
},
iphonepay() {
iphonePay() {
let that = this
plus.payment.getChannels((res) => {
let channel = res.find(i => i.id === 'appleiap')
@ -588,7 +680,7 @@
httpsRequest.postT('/app/ios/isoPayApp?receipt=' + receipt + '&ordersId=' + that.iosPayId).then(
res => {
uni.hideLoading();
if (res.status == 0) {
if (res.status === 0) {
uni.showToast({
title: '支付成功',
duration: 2000,
@ -600,7 +692,7 @@
},
// 充值
pay() {
if (this.checked == false) {
if (!this.checked) {
uni.showToast({
title: '请阅读并同意《付费须知说明》',
icon: 'none'
@ -611,7 +703,7 @@
uni.showLoading({
title: '支付中...'
})
if (this.openWay == 2) {
if (this.openWay === 2) {
// 微信APP支付 根据订单id获取支付信息
httpsRequest.postT("/app/wxPay/payMoney", {
classify: 1,
@ -619,16 +711,20 @@
}).then(ret => {
this.isCheckPay(ret.code, 'wxpay', JSON.stringify(ret.data));
});
} else if (this.openWay == 1) {
} else if (this.openWay === 1) {
let paytype = 'h5'
// #ifdef APP
paytype = 'app'
// #endif
// APP支付宝支付
httpsRequest.postT("/app/aliPay/payMoney", {
classify: 1,
payClassifyId: this.wallet[this.wallCurr].payClassifyId,
}).then(ret => {
console.log(ret)
this.isCheckPay(ret.code, 'alipay', ret.data);
httpsRequest.getT("/app/wuyou/payOrder/" + this.ordersId + '?payType=' + paytype, {}).then(ret => {
// plus.runtime.openURL(ret.data.h5Url)
uni.navigateTo({
url: '/pages/pays/pays?ordersId=' + this.ordersId + '&url=' + ret.data.h5Url
});
// this.isCheckPay(ret.code, 'wxpay', JSON.stringify(ret.data));
});
} else if (this.openWay == 3) {
} else if (this.openWay === 3) {
let userId = uni.getStorageSync('userId');
let data = {
payClassifyId: this.wallet[this.wallCurr].payClassifyId,
@ -645,7 +741,7 @@
});
}
});
} else if (this.openWay == 4) {
} else if (this.openWay === 4) {
let userId = uni.getStorageSync('userId');
let data = {
// money: this.wallet[this.current].price
@ -675,7 +771,7 @@
getMyMoney() {
if (uni.getStorageSync('token')) {
httpsRequest.getT('/app/moneyDetails/selectUserMoney').then(res => {
if (res.code == 0) {
if (res.code === 0) {
this.moneyNum = res.data.money
}
})
@ -729,7 +825,7 @@
*/
getMoneyList() {
httpsRequest.getT('/app/payClassify/selectPayClassifyList').then(res => {
if (res.code == 0) {
if (res.code === 0) {
let priceObj = this.findMinMaxPricesWithIndexes(res.data)
this.wallet = res.data
this.wallet[priceObj.minPriceIndex].remarks = '特惠'
@ -746,7 +842,7 @@
this.wallet = arr
}
// #ifdef APP
this.iphonepay()
this.iphonePay()
// #endif
} else {
uni.showToast({
@ -757,11 +853,11 @@
})
},
//关闭支付弹窗
closePopusPay() {
closePopupPay() {
this.$refs.popuppay.close()
},
//打开支付弹窗
openPopusPay() {
openPopupPay() {
this.$refs.popuppay.open('bottom')
},
// 获取收藏状态
@ -781,8 +877,9 @@
})
},
//显示/隐藏适配控制器的回调
controlstoggles(e) {
controlStoggles(e) {
this.showControls = e.detail.show
this.showBack = this.showControls
console.log(e.detail.show, '显示/隐藏控制栏')
},
//打开倍速弹框
@ -856,19 +953,28 @@
})
}
},
//使用金购买
//使用金购买
submitPay(type) {
let data = {
courseId: this.courseId
}
if (type != 1) { //购买单集
data.courseDetailsId = this.videoList[this.current].courseDetailsId
}
data.courseDetailsId = this.videoList[this.current].courseDetailsId
httpsRequest.getT('/app/order/insertCourseOrders', data).then(res => {
if (res.code == 0) {
if (res.code === 0) {
this.ordersId = res.data.orders.ordersId //记录订单id
this.payMoney = res.data.orders.payMoney //记录订单价格
this.payOrder(res.data.orders.ordersId, res.data.orders.payMoney)
if (type === 1) { //金币
this.payOrder(res.data.orders.ordersId, res.data.orders.payMoney)
} else if (type === 2) { //支付宝
this.closePay() //关闭购买选择弹窗
this.payPrice = res.data.orders.payMoney //需要支付的价格
this.openPopupPay() //显示充值弹窗
}
// this.payOrder(res.data.orders.ordersId, res.data.orders.payMoney)
} else {
uni.showToast({
title: res.msg,
@ -882,25 +988,30 @@
httpsRequest.postT("/app/order/payOrders", {
orderId: orderId,
}).then(res => {
if (res.code == 0) {
if (res.code === 0) {
uni.hideLoading()
uni.showToast({
title: '已解锁,支付' + payMoney + '金豆',
title: '已成功解锁',
icon: 'none'
})
this.closePopusPay()
this.closePopupPay()
this.closePay()
that.showPay = false
that.showMoney = false
that.noBuyVideoIndex = null
setTimeout(() => {
that.getDataList(that.courseId, that.videoList[that.current].courseDetailsId,
true);
}, 1000)
} else { //支付失败(余额不足)
that.closePay() //关闭购买选择弹窗
this.payPrice = payMoney //需要支付的价格
this.openPopusPay() //显示充值弹窗
uni.showToast({
title: res.msg,
icon: 'none'
})
that.showPay = true
that.showMoney = false
}
});
},
@ -925,7 +1036,7 @@
this.videoList = [...this.videoList, ...this.meunList.slice(index + 1, index + 3)]
}
//只剩一条数据
if (lengths == 1) {
if (lengths === 1) {
//把剩下的一条给放进去
this.videoList = [
//选中的那条
@ -937,7 +1048,7 @@
]
}
//选择的就是最后一条数据
if (lengths == 0) {
if (lengths === 0) {
//后两条拿总数组的前两条就可以了
this.videoList = [...this.videoList, ...this.meunList.slice(0, 2)]
}
@ -945,11 +1056,15 @@
this.$forceUpdate()
},
//选择播放
selectPlay(item, index) {
selectPlay(item, index, type) {
// 根据选择的courseDetailsId拿到meunList列表中的相同数据的下标
// const index = this.meunList.findIndex(menu => menu.courseDetailsId === item.courseDetailsId);
// this.videoList = [this.meunList[index]]
this.current = index
if (this.videoList[this.current].videoUrl === '' && this.videoList[this.current].price <= 0 && !type) {
this.getDataList(this.courseId, this.courseDetailsId, true, 'select')
return;
}
//重新计算一下当前观看的是哪个视频
this.comNumVideo()
// 把选择的视频的自动播放设置为true
@ -988,7 +1103,7 @@
this.$refs.popup.close()
},
//收藏
shoucang() {
collectVideo() {
if (uni.getStorageSync('token')) {
let data = {
courseId: this.courseId,
@ -996,7 +1111,7 @@
type: this.isCollect == false ? 1 : 0
}
httpsRequest.postJson('/app/courseCollect/insertCourseCollect', data).then(res => {
if (res.code == 0) {
if (res.code === 0) {
this.getMyLoveStatus()
}
})
@ -1183,7 +1298,7 @@
* @param {Number} courseDetailsId 当前视频id
* @param {boolean} type 是购买后返回的还是直接进来的
*/
getDataList(courseId, courseDetailsId, type) {
getDataList(courseId, courseDetailsId, type, t) {
let data = {
id: courseId,
token: uni.getStorageSync('token') ? uni.getStorageSync('token') : ''
@ -1294,7 +1409,9 @@
} else { //不能播放则需要购买
this.openPay()
}
if (t == 'select') {
this.selectPlay(this.videoList[this.current], this.current, true)
}
this.$forceUpdate();
//插入历史记录
this.setHistor(this.videoList[this.current].courseId, this.videoList[this.current]

View File

@ -0,0 +1,15 @@
<template>
<view>
<web-view src="http://baidu.com/"></web-view>
</view>
</template>
<script>
</script>
<style scoped>
.bg-fff{
width: 750rpx;
height: 300rpx;background-color: #fff;
}
</style>

View File

@ -111,7 +111,7 @@
uni.showLoading({
title: '加载中...'
})
this.$u.post('/app/message/insertMessage', {
this.$u.post('app/message/sendMessage', {
title: this.sendDate.contact,
content: JSON.stringify(this.sendDate),
state: 2

View File

@ -59,7 +59,7 @@
types:1
}
this.$u.api.help(data).then(res => {
if (res.code == 0) {
if (res.code === 0) {
this.helpClassifyList = res.data
for (var i = 0; i < this.helpClassifyList.length; i++) {
this.helpClassifyList[i].parentId = 1

97
me/gift/duihuan.vue Normal file
View File

@ -0,0 +1,97 @@
<template>
<view class="min-page bg-gray u-font-28">
<view class="block bg-fff border-r-18 default-box-padding">
<view>
<view>中奖用户手机号</view>
<view class="border u-m-t-24 u-p-l-24" style="margin-bottom: 20rpx;">
<u-input v-model="query.phone" type="number" maxlength="11" placeholder="请输入中奖用户手机号"></u-input>
</view>
<view>收货地址</view>
<view class="border u-m-t-24 u-p-l-24" style="margin-bottom: 20rpx;">
<u-input v-model="query.address" type="text" placeholder="请输入收货地址"></u-input>
</view>
<view>备注</view>
<view class="border u-m-t-24 u-p-l-24">
<u-input v-model="query.remark" type="text" placeholder="请输入备注"></u-input>
</view>
</view>
<view class="u-m-t-48">
<view>兑换事项</view>
<view class="u-m-t-16 color-999">
请认真核实兑换账号一但兑换成功后不予退换
</view>
</view>
</view>
<view class="u-flex u-row-center">
<view class="btn-circle duihuan" @click="exchange">确认兑换</view>
</view>
</view>
</template>
<script>
export default {
data() {
return {
query: {
foreignId: null,
foreignType: 'spinning',
phone: "",
address: "",
remark: "",
},
}
},
onLoad(options) {
console.log(options)
if ( options.id ) {
this.query.foreignId = options.id
}
if ( options.foreignType ) {
this.query.foreignType = options.foreignType
}
},
methods: {
exchange(){
let url = ""
if ( !this.query.phone ) {
uni.showToast({ title: '请输入中奖用户手机号', icon: 'none' });
return;
}
if ( !this.query.address ) {
uni.showToast({ title: '请输入中奖用户地址', icon: 'none' });
return;
}
this.$Request.postJson("app/userPrizeExchange/exchange", this.query).then(res => {
if (res.code == 0 ) {
uni.navigateBack()
uni.showToast({ title: '兑换成功', icon: 'none' });
} else {
uni.showToast({ title: res.msg, icon: 'none' });
}
})
},
}
}
</script>
<style lang="scss" scoped>
.border {
border: 1px solid #999999;
border-radius: 12rpx 12rpx 12rpx 12rpx;
}
.duihuan{
background: #ED838A;
width: 556rpx;
padding: 18rpx 0;
text-align: center;
font-size: 32rpx;
font-weight: bold;
color: #fff;
margin-top: 84rpx;
}
.min-page {
padding: 32rpx 20rpx;
}
</style>

200
me/gift/gift.vue Normal file
View File

@ -0,0 +1,200 @@
<template>
<view class="min-page bg-gray u-font-28">
<u-navbar :background="background" back-icon-color="#fff" immersive :border-bottom="false"></u-navbar>
<view class="gift-bg">
</view>
<view class="list">
<view class="tab">
<view class="tab_item" :class="{active: item.type == tabIndex}" @click="tabClick(item)"
v-for="(item,index) in tab" :key="index">{{item.label}}</view>
</view>
<view class="item" v-for="(item,index) in list" :key="index">
<view class="color-666 u-font-24">{{tabIndex==1?'中奖时间':'兑换时间'}} {{item.createTime}}</view>
<view class="u-m-t-24 u-flex u-row-between">
<view class="u-flex-1 u-flex u-col-top">
<u-image width="128rpx" height="128rpx" v-if="item.type == 2 "
src="/static/red-pack.png"></u-image>
<u-image width="128rpx" height="128rpx" v-else :src="item.imgUrl"></u-image>
<view class="u-m-l-16">
<view v-if="tabIndex == 1">{{item.name}}</view>
<view v-else>{{item.prizeName}}</view>
<view v-if="tabIndex == 1" class="color-999 u-font-24 u-m-t-16">×{{item.number}}</view>
</view>
</view>
<view class="" v-if="tabIndex==1&&!item.targetId&&item.type==3">
<view class="btn-circle duihuan" @click="toDuiHuan(item)">立即兑换</view>
<!-- <view class="btn-circle duihuan finish">已完成</view> -->
</view>
</view>
</view>
<view class="u-p-t-30 u-p-b-30 empty" v-if="hasAjax&&!list.length">
<u-empty text="暂无记录" src="/static/icon-empty.svg"></u-empty>
</view>
</view>
<!-- <view class="u-p-30">
<u-loadmore font-size="24" color="#999" :status="status" />
</view> -->
</view>
</template>
<script>
export default {
data() {
return {
background: {
backgroundColor: 'transparent'
},
tab: [{
label: '抽奖记录',
type: 1
}, {
label: '兑换记录',
type: 2
}],
tabIndex: 1,
query: {
page: 1,
limit: 10,
},
total: 0,
status: 'nomore',
hasAjax: true,
list: [],
isLoading:false,
isEnd:false
}
},
onLoad(options) {
},
onShow() {
this.list = [];
this.getList()
},
// onReachBottom() {
// console.log('onReachBottom');
// if (this.isEnd || this.isLoading) {
// return
// }
// this.query.page+=1;
// this.getList()
// },
methods: {
toDuiHuan(item) {
uni.navigateTo({
url: `/me/gift/duihuan?id=${item.id}`
})
},
tabClick(item) {
this.list = [];
this.tabIndex = item.type;
this.query.page=1;
this.getList()
},
getList() {
let url = ""
if (this.tabIndex == 1) {
url = "app/discSpinningRecord/selectDiscSpinningRecord"
} else {
url = "/app/userPrizeExchange/page"
}
this.isLoading=true
this.$Request.getT(url, this.query).then(res => {
this.isLoading=false
this.isEnd=this.query.page>=( this.tabIndex == 1?res.data.totalPage:res.page.totalPage)
if (res.code == 0) {
if (this.tabIndex == 1) {
this.list = [...this.list, ...res.data.records]
this.total = res.data.total
} else {
this.list = [...this.list, ...res.page.list]
this.total = res.page.totalCount
}
}
})
},
onReachBottom: function() {
console.log(this.query.page)
console.log(this.query.limit)
if (!this.isEnd&&!this.isLoading) {
this.query.page = this.query.page + 1;
this.getList();
}
},
}
}
</script>
<style lang="scss" scoped>
.duihuan {
background: linear-gradient(87deg, #ED8087 0%, #ECA2AA 100%);
font-size: 24rpx;
color: #fff;
padding: 8rpx 16rpx;
text-align: center;
&.finish {
background: #E5E5E5;
color: #999;
}
}
.gift-bg {
position: relative;
width: 100%;
height: 524rpx;
background: url('~static/images/gift-bg.png') no-repeat center center/cover;
background-repeat: no-repeat;
background-position: center center;
background-size: cover;
background-image: url("~static/images/gift-bg.png");
@media (-webkit-min-device-pixel-ratio: 2),
(min-device-pixel-ratio: 2) {
background-image: url("~static/images/gift-bg@2x.png");
}
}
.empty {
// min-height: 50vh;
}
.min-page {
min-height: 100vh;
}
.list {
margin: 0 20rpx;
position: relative;
z-index: 2;
margin-top: -148rpx;
border-radius: 18rpx 18rpx 18rpx 18rpx;
overflow: hidden;
background-color: #fff;
.tab {
display: flex;
.tab_item {
height: 80rpx;
line-height: 80rpx;
width: 50%;
text-align: center;
font-size: 32rpx;
color: #333;
}
.tab_item.active {
background-color: #ECA2AA;
color: #fff;
}
}
.item {
padding: 32rpx 24rpx;
border-bottom: 1rpx solid #E5E5E5;
}
}
</style>

View File

@ -48,7 +48,7 @@
methods: {
getIntegral() {
this.$u.api.integral().then(res => {
if (res.code == 0) {
if (res.code === 0) {
this.integralNum = res.data.integralNum
}else {
uni.showToast({

View File

@ -1,58 +1,143 @@
<template>
<view class="cash">
<view
<u-navbar title="申请提现" title-bold back-icon-color="#fff" :background="{background:'rgb(255, 117, 129)'}" immersive
:border-bottom="false" title-color="#fff">
<view slot="right" class="u-p-r-30 u-flex u-col-center color-fff" @click="showRule">
<text class="rule-btn">规则</text>
</view>
</u-navbar>
<view class=""
style="background-color: #ff7581;height: 400upx;border-bottom-right-radius: 40upx;border-bottom-left-radius: 40upx;">
<view style="font-size: 32upx;color: #FFFFFF;padding-top: 100upx;">可提现总额</view>
<view style="font-size: 40upx;color: #FFFFFF;padding-top: 20upx;">¥ {{mayMoney}}</view>
<view style="font-size: 40upx;color: #FFFFFF;padding-top: 20upx;">¥ {{ mayMoney }}</view>
<view
style="width: 90%;height: max-content;margin-left: 40upx;background-color: #FFFFFF;box-shadow: rgba(183, 183, 183, 0.3) 0px 1px 10px;margin-top: 50upx;border-radius: 20upx;">
<view style="display: flex;flex-direction: row;padding: 20upx;">
<view style="font-size: 32upx;color: #333333;">提现金额 <text style="font-size: 28upx;color: #ff7581;"
v-if="shouxufei">提现手续费为{{shouxufei * 100}}%</text>
<view style="font-size: 32upx;color: #333333;">提现金额
<!-- <text style="font-size: 28upx;color: #ff7581;"
v-if="shouxufei">提现手续费为{{shouxufei * 100}}%</text> -->
</view>
</view>
<view style="display: flex;flex-direction: row;padding: 20upx;">
<view style="font-size: 40upx;color: #333333;">¥</view>
<input type="number" v-model="money" placeholder="请输入金额"
style="font-size: 40upx;color: #333333;text-align: left;margin-left: 10upx;width: 100%;" />
<view
style="display: flex;flex-direction: row;padding: 20upx;justify-content: space-between;align-items: center;">
<view style="display: flex;align-items: center;">
<view style="font-size: 40upx;color: #333333;">¥</view>
<input type="number" v-model="money" placeholder="请输入金额" @input="moneyInput" @blur="moneyBlur"
style="font-size: 40upx;color: #333333;text-align: left;margin-left: 10upx;width: 80%;" />
</view>
<view @click="setAllMoney"
style="font-size: 30rpx;color: #333333;background: #ff7581;color: white;border-radius: 10rpx;padding: 7rpx 15rpx;flex-shrink: 0;">
全部
</view>
</view>
<view style="background: #E6E6E6;width: 100%;height: 1upx;"></view>
<view style="display: flex;flex-direction: row;flex-wrap: wrap;">
<view style="display: flex;flex-direction: row;" v-for="(item, index) in moneyList" :key="index">
<view>
<view style="padding: 20upx;" @click="getOut1(item.money)">
<view
style="padding-top: 40upx;width: 180upx; height: 120upx;background-color: #FFFFFF;border:1px solid #ff7581;border-radius: 10upx;">
{{ item.money }}
</view>
<!-- <view style="display: flex;flex-direction: row;flex-wrap: wrap;">
<view style="display: flex;flex-direction: row;" v-for="(item, index) in moneyList" :key="index">
<view>
<view style="padding: 20upx;" @click="getOut1(item.money)">
<view
style="padding-top: 40upx;width: 180upx; height: 120upx;background-color: #FFFFFF;border:1px solid #ff7581;border-radius: 10upx;">
{{ item.money }}
</view>
</view>
</view>
</view>
</view> -->
</view>
<view @click="withdraw"
style="margin: 32upx;font-size: 18px;background: #ff7581;color: white;border-radius: 10px;height: 40px;line-height: 40px;">
{{!isWithdraw?'观看广告提现':'立即提现'}}
</view>
<view style="display: flex;width: 100%;justify-content: center;">
<view class="u-flex-1" style="color: grey;padding-bottom: 30px;padding-top: 20upx;" @click="realName">
实名认证
</view>
<!-- <view class="u-flex-1" style="color: grey;padding-bottom: 30px;padding-top: 20upx;" @click="goZhifuBao">
提现账号
</view> -->
<view class="u-flex-1" style="color: grey;padding-bottom: 30px;padding-top: 20upx;" @click="goqianbao">
红包明细
</view>
<!-- <view style="color: grey;padding-bottom: 30px;padding-top: 20upx;width: 33%;" @click="gojilu">提现记录
</view> -->
</view>
<view style="text-align: left" class="moneyList u-p-b-30">
<view v-if="list.length" v-for="(item, index) in list" :key="index" class="item">
<view>
<view style="margin-bottom: 8upx;text-align: right;">
<text style="margin-bottom: 8upx;color: green" v-if="item.state===1"> 提现成功</text>
<text style="margin-bottom: 8upx;color: green" v-if="item.state===0||item.state==3">
提现中</text>
<text style="margin-bottom: 8upx;color: #FD6416" v-if="item.state===-1||item.state===2">
提现失败
</text>
</view>
<view style="color: #999999;font-size: 28upx;">
<view style="margin-bottom: 8upx"> 收款人账号{{ item.zhifubao }}</view>
<view style="margin-bottom: 8upx"> 收款人姓名{{ item.zhifubaoName }}</view>
<view style="margin-bottom: 8upx"> 发起时间{{ item.createAt }}</view>
<view style="margin-bottom: 8upx" v-if="item.state===1">成功时间{{ item.outAt }}</view>
<view style="margin-bottom: 8upx;color: #FD6416" v-if="item.state===-1||item.state===2">
失败原因{{ item.refund }}
</view>
<view style="margin-bottom: 8upx;text-align: right;">
<!-- 提现金额 -->
<text style="color: #FD6416;font-size: 32upx;font-weight: 600"> {{ item.money }}</text>
</view>
</view>
</view>
</view>
</view>
<view @click="getOut"
style="margin: 32upx;font-size: 18px;background: #ff7581;color: white;border-radius: 10px;height: 40px;line-height: 40px">
提现
<view class="page-box" v-if="!list.length">
<view class="centre">
<image src="../../static/images/learn/none.png" mode=""></image>
<view class="tips">
暂无记录
</view>
</view>
</view>
</view>
<view style="display: flex;width: 100%;justify-content: center;">
<view style="color: grey;padding-bottom: 30px;padding-top: 20upx;width: 33%;" @click="goZhifuBao">提现账号
</view>
<view style="color: grey;padding-bottom: 30px;padding-top: 20upx;width: 33%;" @click="goqianbao">钱包明细
</view>
<view style="color: grey;padding-bottom: 30px;padding-top: 20upx;width: 33%;" @click="gojilu">提现记录
</view>
</view>
</view>
<u-modal v-model="ruleShow" confirm-text="知道了" @confirm="ruleConfirm" :title="rule_title" :title-style="{fontWeight:'700'}" confirm-color="rgb(255, 117, 129)">
<view class="u-p-30 u-text-left">
<scroll-view scroll-y="true" style="max-height: 50vh;" >
<rich-text class="color-666" :nodes="rule_content"></rich-text>
</scroll-view>
</view>
</u-modal>
<view style="width: 0;height: 0;overflow: hidden;;">
<!-- 激励视频广告 -->
<ad-rewarded-video v-if="adRewardedVideo" ref="adRewardedVideo" adpid="1531580352" :loadnext="true" v-slot:default="{loading, error}"
:url-callback="urlCallback" @load="onadload" @close="onadclose" @error="onaderror">
</ad-rewarded-video>
</view>
</view>
</template>
<script>
import { $cache_config, $cache_index,$cache_rule } from '@/store/cashe.js'
import { init } from '@/utils/init.js'
export default {
data() {
return {
ruleShow: false,
rule_title: "",
rule_content: "",
money: '',
mayMoney: '0',
shouxufei: '',
@ -81,36 +166,244 @@
userId: '',
zhifubao: '',
zhifubaoName: '',
list: [],
page: 1,
limit: 10,
totalCount: 0,
cashMoney: 0,
urlCallback: null,
adRewardedVideo: true,
adRewardedVideoloadNum: 0,
isWithdraw: false,
withdrawNum: $cache_config.withdrawNum,
ruleIndex: 0,
ruleList: $cache_rule.ruleCash||[]
};
},
onLoad() {
this.getshouxufei();
this.getExtractFei();
this.getMoneyDetail();
this.configInit()
if ($cache_rule.ruleCash) {
this.ruleInit()
return
}
this.$Request.getT("app/announcement", {type: 1}).then(res => {
if (res.code == 0 && res.data.length > 0) {
this.ruleList = res.data
$cache_rule.set('ruleCash',this.ruleList)
this.ruleInit()
this.ruleShow = true
}
});
},
onShow() {
this.token = uni.getStorageSync('token')
this.userId = uni.getStorageSync('userId')
this.zhifubao = uni.getStorageSync('zhiFuBao')
this.zhifubaoName = uni.getStorageSync('zhiFuBaoName')
this.getcashMoney()
this.$u.api.userinfo().then(res => {
if (res.code === 0) {
if (res.data.certName) {
this.zhifubaoName = res.data.certName;
}
if (res.data.accountNo) {
this.zhifubao = res.data.accountNo;
}
}
})
},
onReachBottom: function() {
if (this.page * this.limit < this.totalCount) {
this.page = this.page + 1;
this.getMoneyDetail();
}
},
onPullDownRefresh: function() {
this.page = 1;
// that.list = []
this.getMoneyDetail();
},
onNavigationBarButtonTap() {
// this.list();
},
onReady() {
this.$nextTick(()=>{
this.adRewardedVideoloadNum = 0
this.$refs.adRewardedVideo.load();
})
this.getCanCash()
},
methods: {
//
getshouxufei() {
this.$u.get('app/common/type/152').then(res => {
async configInit(){
if(!$cache_config.withdrawNum){
const res = await init(true)
this.withdrawNum = $cache_config.withdrawNum
}
},
ruleInit(){
this.rule_title = this.ruleList[this.ruleIndex].title
this.rule_content = this.ruleList[this.ruleIndex].content
},
/**
* 规则弹窗打开
*/
showRule(){
if( this.ruleList.length <= 0) {
uni.showToast({
title: "暂未配置规则",
icon: 'none'
})
return
}
this.ruleInit()
this.ruleShow = true
},
ruleConfirm(){
this.ruleIndex++
if( this.ruleIndex >= this.ruleList.length) {
this.ruleIndex = 0
return
}
this.ruleShow = false
setTimeout(res=>{
this.ruleInit()
this.ruleShow = true
},300)
},
/**
* 获取看广告状态
*/
getCanCash() {
this.$Request.getT('app/cash/canCash').then(res => {
console.log(res)
if (res.code == 0) {
this.isWithdraw = res.data;
} else {
this.isWithdraw = false;
}
})
},
/**
* 广告数据加载成功回调
* @param {Object} e
*/
onadload(e) {
this.adRewardedVideo = true;
console.log('广告数据加载成功');
},
/**
* 广告加载失败回调
* @param {Object} e
*/
onaderror(e) {
if ( this.adRewardedVideoloadNum >=3 ) {
this.adRewardedVideo = false;
return
}
this.adRewardedVideoloadNum++
setTimeout(() => {
this.$refs.adRewardedVideo.load();
}, 1000); // 10
console.log("广告加载失败")
},
/**
* 广告播放成功回调
* @param {Object} e
*/
async onadclose(e) {
const detail = e.detail
if (detail && detail.isEnded) {
//
let res = await this.$Request.getT('app/ad/state', {
extraKey: this.urlCallback.extra
})
this.getCanCash()
} else {
// 退
}
},
withdraw() {
if ( !this.isWithdraw ) {
if( !this.adRewardedVideo ){
uni.showToast({
title: "广告加载失败,请检查网络稍后重试",
icon: 'none'
})
return
}
this.urlCallback = {
userId: uni.getStorageSync('userId'),
extra: 'cash:'+uni.getStorageSync('userId') + "" + new Date().getTime(),
}
this.$refs.adRewardedVideo.show();
} else {
this.getOut()
}
},
moneyInput(e) {
let num = e.detail.value.match(/^\d*(\.?\d{0,2})/g)[0] || null;
this.$nextTick(() => {
this.money = num;
});
},
moneyBlur(e) {
let num = e.detail.value.match(/^\d*(\.?\d{0,2})/g)[0] || null;
this.$nextTick(() => {
this.money = num;
});
},
setAllMoney() {
this.money = this.mayMoney.toFixed(2)
},
/**
* 获取提现记录
*/
getMoneyDetail() {
let that = this;
let token = uni.getStorageSync('token')
if (token) {
//
let data = {
page: this.page,
limit: this.limit
}
this.$Request.getT('app/cash/selectPayDetails', data).then(res => {
this.totalCount = res.data.totalCount;
if (res.data.list.length > 0) {
if(this.page==1){
this.list = res.data.list
}else{
this.list = [...this.list, ...res.data.list];
}
}
})
}
},
//
getExtractFei() {
this.$u.get('app/common/type/152').then(res => {
if (res.code === 0) {
if (res.data && res.data.value) {
this.shouxufei = res.data.value;
}
}
});
this.$u.get('app/common/type/112').then(res => {
if (res.code == 0) {
if (res.code === 0) {
if (res.data && res.data.value) {
this.cashMoney = res.data.value;
}
@ -118,46 +411,59 @@
});
},
//
/**
* 可提现金额
*/
getcashMoney() {
let data = {
page: this.page,
limit: this.limit
}
this.$u.api.queryInviter(data).then(res => {
this.$Request.getT('app/moneyDetails/selectUserMoney').then(res => {
if (res.code == 0) {
this.mayMoney = res.data.inviteMoney.money
} else {
uni.showToast({
title: res.msg,
duration: 1000,
icon: 'none'
});
this.mayMoney = res.data.amount || 0
}
})
},
//
/**
* 提现记录
*/
gojilu() {
uni.navigateTo({
url: '/me/invite/cashList'
});
},
//
/**
* 红包明细
*/
goqianbao() {
uni.navigateTo({
url: '/me/invite/moneyList'
url: '/me/invite/moneyList?moneyType=1&viewType=2'
});
},
list() {
// uni.navigateTo({
// url: '/me/invite/cashList'
// })
/**
* 实名认证
*/
realName() {
uni.navigateTo({
url: '/me/invite/realName'
});
},
/**
* 绑定支付宝
*/
goZhifuBao() {
uni.navigateTo({
url: '/me/invite/zhifubao'
});
},
getMoney() {
let that = this;
let token = that.token
@ -166,12 +472,16 @@
//this.$queue.showLoading("...");
//
let data = {
money: that.money
amount: that.money
}
this.$u.api.cashMoney(data).then(res => {
uni.showLoading({
title: '提现中'
});
this.$u.api.withdraw(data).then(res => {
console.log(res)
if (res.code == 0) {
uni.showToast({
title: '提现申请成功,预计三个工作日到账',
title: res.msg,
icon: 'none'
})
that.money = ''
@ -179,7 +489,29 @@
that.getcashMoney()
}, 1500)
} else {
} else if (res.code == 9999) {
uni.showToast({
title: res.msg,
icon: 'none'
})
setTimeout(function() {
uni.navigateTo({
url: '/me/invite/zhifubao'
});
}, 1500)
} else if (res.code == 9991) {
uni.showToast({
title: res.msg,
icon: 'none'
})
setTimeout(function() {
uni.navigateTo({
url: '/me/invite/realName'
});
}, 1500)
} else {
uni.showToast({
title: res.msg,
icon: 'none'
@ -188,141 +520,86 @@
})
}
},
//
checkMobile(money) {
return RegExp(/^1[34578]\d{9}$/).test(money);
},
getOut() {
let that = this;
let token = that.token
let userId = that.userId
console.log(token)
let cashMoney = that.cashMoney;
if (token) {
if (that.zhifubao && that.zhifubaoName) {
if (!/^\d+$/.test(that.money)) {
uni.showToast({
icon: 'none',
title: '请输入正确金额,不能包含中文,英文,特殊字符和小数'
});
return;
}
let shouxufei = parseFloat(that.money * that.shouxufei).toFixed(2);
if (parseFloat(that.mayMoney).toFixed(1) >= parseFloat(that.money) + shouxufei * 1) {
if (parseFloat(that.money).toFixed(1) >= parseFloat(cashMoney)) {
if (that.shouxufei > 0) {
uni.showModal({
title: "提现申请提示",
content: '请仔细确认收款人信息\n\n收款人姓名:' + that.zhifubaoName + '\n\n提现金额:' + that
.money + '元\n\n提现手续费' + shouxufei +
'\n\n收款人账号' + that.zhifubao + '',
success: (e) => {
if (e.confirm) {
// that.money = money
that.getMoney();
}
}
});
} else {
uni.showModal({
title: "提现申请提示",
content: '请仔细确认收款人信息\n\n收款人姓名:' + that.zhifubaoName + '\n\n提现金额:' + that
.money + '元\n\n收款人账号' + that.zhifubao +
'',
success: (e) => {
if (e.confirm) {
// that.money = money
that.getMoney();
}
}
});
}
} else {
uni.showToast({
icon: 'none',
title: "提现金额必须大于或等于" + cashMoney + "元才可提现"
});
}
} else {
uni.showToast({
icon: 'none',
title: "您的余额不足"
});
}
} else {
uni.navigateTo({
url: "/me/invite/zhifubao"
})
if (!/^\d+(\.\d{1,2})?$/.test(that.money)) {
uni.showToast({
icon: 'none',
title: '请输入正确金额,不能包含中文,英文,特殊字符和小数'
});
return;
}
} else {
uni.navigateTo({
url: '/pages/login/login'
});
}
},
getOut1(money) {
let that = this;
let token = that.token
let userId = that.userId
if (token) {
if (that.zhifubao && that.zhifubaoName) {
if (parseFloat(this.mayMoney).toFixed(1) >= parseFloat(money)) {
if (parseFloat(money).toFixed(1) >= 10) {
if (this.shouxufei > 0) {
let shouxufei = parseFloat(money * this.shouxufei).toFixed(2);
uni.showModal({
title: '提现申请提示',
content: '请仔细确认收款人信息\n\n收款人姓名:' + that.zhifubaoName + '\n\n提现金额:' + money +
'元\n\n提现手续费' + shouxufei +
'\n\n收款人账号' + that.zhifubao + '',
confirmColor: '#ff7581',
success: e => {
if (e.confirm) {
this.money = money
that.getMoney();
// uni.showToast({
// icon: 'none',
// title: ''
// })
}
let shouxufei = parseFloat(that.money * that.shouxufei).toFixed(2);
if (parseFloat(that.mayMoney).toFixed(2) >= parseFloat(that.money)) {
// if (parseFloat(that.mayMoney).toFixed(1) >= parseFloat(that.money) + shouxufei * 1) {
if (parseFloat(that.money).toFixed(2) >= parseFloat(cashMoney)) {
if (that.shouxufei > 0) {
uni.showModal({
title: "提现申请提示",
content: `每日只可提现${this.withdrawNum}`,
success: (e) => {
if (e.confirm) {
uni.showModal({
title: "提现申请提示",
content: '请仔细确认收款人信息\n\n收款人姓名:' + that.zhifubaoName + '\n\n提现金额:' + that
.money + '元\n\n收款人账号' + that.zhifubao + '',
// content: '\n\n:' + that.zhifubaoName + '\n\n:' + that
// .money + '\n\n' + shouxufei +
// '\n\n' + that.zhifubao + '',
success: (e) => {
if (e.confirm) {
// that.money = money
that.getMoney();
that.getMoneyDetail();
}
}
});
}
});
} else {
uni.showModal({
title: '提现申请提示',
content: '请仔细确认收款人信息\n\n收款人姓名:' + that.zhifubaoName + '\n\n提现金额:' + money +
'元\n\n收款人账号' + that.zhifubao +
'',
success: e => {
if (e.confirm) {
this.money = money
that.getMoney();
// uni.showToast({
// icon: 'none',
// title: ''
// })
}
}
});
}
} else {
uni.showToast({
icon: 'none',
title: '提现金额必须大于或等于10元才可提现'
}
});
} else {
uni.showModal({
title: "提现申请提示",
content: '每日只可提现一次',
success: (e) => {
if (e.confirm) {
uni.showModal({
title: "提现申请提示",
content: '请仔细确认收款人信息\n\n收款人姓名:' + that.zhifubaoName + '\n\n提现金额:' + that
.money + '元\n\n收款人账号' + that.zhifubao +
'',
success: (e) => {
if (e.confirm) {
// that.money = money
that.getMoney();
that.getMoneyDetail();
}
}
});
}
}
});
}
} else {
uni.showToast({
icon: 'none',
title: '您的余额不足'
title: "提现金额必须大于或等于" + cashMoney + "元才可提现"
});
}
} else {
uni.navigateTo({
url: '/me/invite/zhifubao'
uni.showToast({
icon: 'none',
title: "您的余额不足"
});
}
} else {
@ -331,12 +608,19 @@
});
}
}
}
};
</script>
<style lang="less">
<style lang="scss" scoped>
// @import '../../static/css/index.css';
.rule-btn {
font-size: 16px;
// padding: 2rpx 10rpx;
// border: 1px solid rgba(255, 255, 255, .8);
// border-radius: 4rpx;
}
.view2-view-text {
font-size: 14px;
@ -370,4 +654,51 @@
margin-bottom: 10px;
}
}
.moneyList {
.item {
background: white;
padding: 32rpx;
margin: 32rpx;
font-size: 28rpx;
box-shadow: 7px 9px 34px rgba(0, 0, 0, 0.1);
border-radius: 16upx;
}
.item:first-child {
margin-top: 0;
}
}
.centre {
text-align: center;
padding: 200rpx 0;
font-size: 32rpx;
box-sizing: border-box;
image {
width: 360rpx;
height: 360rpx;
// margin-bottom: 20rpx;
margin: 0 auto 20rpx;
// border: 1px dotted #000000;
}
.tips {
font-size: 34rpx;
color: #999999;
margin-top: 20rpx;
}
.btn {
margin: 80rpx auto;
width: 600rpx;
border-radius: 32rpx;
line-height: 90rpx;
color: #ffffff;
font-size: 34rpx;
background: #ff7581;
}
}
</style>

View File

@ -1,137 +1,133 @@
<template>
<view style="text-align: left">
<view v-if="list.length" v-for="(item, index) in list" :key="index" class="item">
<view>
<view style="margin-bottom: 8upx;text-align: right;">
<text style="margin-bottom: 8upx;color: green" v-if="item.state==1"> 提现成功</text>
<text style="margin-bottom: 8upx;color: green" v-if="item.state==0"> 提现中</text>
<text style="margin-bottom: 8upx;color: #FD6416" v-if="item.state==-1"> 提现失败</text>
</view>
<view style="text-align: left">
<view v-if="list.length" v-for="(item, index) in list" :key="index" class="item">
<view>
<view style="margin-bottom: 8upx;text-align: right;">
<text style="margin-bottom: 8upx;color: green" v-if="item.state===1"> 提现成功</text>
<text style="margin-bottom: 8upx;color: green" v-if="item.state===0"> 提现中</text>
<text style="margin-bottom: 8upx;color: #FD6416" v-if="item.state===-1"> 提现失败</text>
</view>
<view style="color: #999999;font-size: 28upx;">
<view style="margin-bottom: 8upx"> 收款人账号{{item.zhifubao}}</view>
<view style="margin-bottom: 8upx"> 收款人姓名{{item.zhifubaoName}}</view>
<view style="margin-bottom: 8upx"> 发起时间{{item.createAt}}</view>
<view style="margin-bottom: 8upx" v-if="item.state==1">成功时间 {{item.outAt}}</view>
<view style="margin-bottom: 8upx;color: #FD6416" v-if="item.state==-1">{{item.refund}}</view>
<view style="color: #999999;font-size: 28upx;">
<view style="margin-bottom: 8upx"> 收款人账号{{ item.zhifubao }}</view>
<view style="margin-bottom: 8upx"> 收款人姓名{{ item.zhifubaoName }}</view>
<view style="margin-bottom: 8upx"> 发起时间{{ item.createAt }}</view>
<view style="margin-bottom: 8upx" v-if="item.state===1">成功时间 {{ item.outAt }}</view>
<view style="margin-bottom: 8upx;color: #FD6416" v-if="item.state===-1">{{ item.refund }}</view>
<view style="margin-bottom: 8upx;text-align: right;">
<!-- 提现金额 -->
<text style="color: #FD6416;font-size: 32upx;font-weight: 600"> {{item.money}}</text>
</view>
</view>
</view>
</view>
<view style="margin-bottom: 8upx;text-align: right;">
<!-- 提现金额 -->
<text style="color: #FD6416;font-size: 32upx;font-weight: 600"> {{ item.money }}</text>
</view>
</view>
</view>
</view>
<view class="page-box" v-if="!list.length">
<view class="centre">
<image src="../../static/images/learn/none.png" mode=""></image>
<view class="tips">
暂无记录
</view>
</view>
</view>
<view class="page-box" v-if="!list.length">
<view class="centre">
<image src="../../static/images/learn/none.png" mode=""></image>
<view class="tips">
暂无记录
</view>
</view>
</view>
</view>
</view>
</template>
<script>
export default {
data() {
return {
list: [],
page: 1,
limit: 10
}
},
onLoad: function(e) {
this.getMoney();
},
export default {
data() {
return {
list: [],
page: 1,
limit: 10,
totalCount: 0,
}
},
onLoad: function (e) {
this.getMoney();
},
methods: {
getMoney() {
let that = this;
let token = uni.getStorageSync('token')
methods: {
getMoney() {
let that = this;
let token = uni.getStorageSync('token')
if (token) {
//
let data = {
page: that.page,
limit: that.limit
}
that.$u.api.selectPay(data).then(res => {
if (that.page == 1) {
that.list = res.data.list
uni.stopPullDownRefresh();
return
}
that.list = res.data.list;
})
// this.$Request.getT("/cash/selectCashOutList/" + userId).then(res => {
// if (res.status === 0 && res.data) {
// that.list = res.data;
// }
// uni.hideLoading();
// });
}
if (token) {
//
let data = {
page: this.page,
limit: this.limit
}
this.$Request.getT('app/cash/selectPayDetails', data).then(res => {
this.totalCount = res.data.totalCount;
if (res.data.list.length > 0) {
this.list = [...this.list, ...res.data.list];
}
})
}
},
},
onReachBottom: function() {
this.page = this.page + 1;
this.getMoney();
},
onPullDownRefresh: function() {
this.page = 1;
// that.list = []
this.getMoney();
},
}
},
},
onReachBottom: function () {
if (this.page * this.limit < this.totalCount) {
this.page = this.page + 1;
this.getMoney();
}
},
onPullDownRefresh: function () {
this.page = 1;
// that.list = []
this.getMoney();
},
}
</script>
<style lang='scss' scoped>
/* @import "../../static/css/index.css"; */
/* @import "../../static/css/index.css"; */
page {
background: #FFFFFF;
}
page {
background: #FFFFFF;
}
.item {
background: white;
padding: 32rpx;
margin: 32rpx;
font-size: 28rpx;
box-shadow: 7px 9px 34px rgba(0, 0, 0, 0.1);
border-radius: 16upx;
}
.item {
background: white;
padding: 32rpx;
margin: 32rpx;
font-size: 28rpx;
box-shadow: 7px 9px 34px rgba(0, 0, 0, 0.1);
border-radius: 16upx;
}
.centre {
text-align: center;
margin: 200rpx auto;
font-size: 32rpx;
.centre {
text-align: center;
padding: 200rpx 0;
font-size: 32rpx;
box-sizing: border-box;
image {
width: 360rpx;
height: 360rpx;
// margin-bottom: 20rpx;
margin: 0 auto 20rpx;
// border: 1px dotted #000000;
}
image {
width: 360rpx;
height: 360rpx;
// margin-bottom: 20rpx;
margin: 0 auto 20rpx;
// border: 1px dotted #000000;
}
.tips {
font-size: 34rpx;
color: #999999;
margin-top: 20rpx;
}
.tips {
font-size: 34rpx;
color: #999999;
margin-top: 20rpx;
}
.btn {
margin: 80rpx auto;
width: 600rpx;
border-radius: 32rpx;
line-height: 90rpx;
color: #ffffff;
font-size: 34rpx;
background: #ff7581;
}
}
.btn {
margin: 80rpx auto;
width: 600rpx;
border-radius: 32rpx;
line-height: 90rpx;
color: #ffffff;
font-size: 34rpx;
background: #ff7581;
}
}
</style>

View File

@ -0,0 +1,768 @@
<!-- 我的邀请 -->
<template>
<view>
<u-image src="/me/static/invite/juxing.png" alt="" width="100%" mode="widthFix"></u-image>
<view class="padding" style="position: relative;height: 360rpx;">
<u-image src="@/me/static/invite/fenxiang.png" alt="" width="100%" height="100%"></u-image>
<view class="text-center padding-top yaoqing">
<view class="margin-top-xl margin-bottom-sm padding-top-sm text-xxl text-red text-bold">
{{invitationCode}}
</view>
<!-- #ifdef H5 -->
<u-button @tap="sharurl" :custom-style="customStyle" :hair-line="false" shape="circle" size="mini"
:ripple="true">一键分享</u-button>
<!-- #endif -->
<!-- #ifdef APP -->
<u-button @tap="sharurl" :custom-style="customStyle" :hair-line="false" shape="circle" size="mini"
:ripple="true">一键分享</u-button>
<!-- #endif -->
<!-- #ifdef MP-TOUTIAO || MP-KUAISHOU -->
<u-button open-type="share" :custom-style="customStyle" :hair-line="false" shape="circle" size="mini"
:ripple="true">一键分享</u-button>
<!-- #endif -->
<!-- #ifdef MP-WEIXIN -->
<u-button open-type="share" :custom-style="customStyle" :hair-line="false" shape="circle" size="mini"
:ripple="true">一键分享</u-button>
<!-- #endif -->
<!-- #ifndef MP-KUAISHOU -->
<u-button style="margin-left: 50rpx;" @click.stop="onSaveImg()" :custom-style="customStyle"
:hair-line="false" shape="circle" size="mini" :ripple="true">保存海报</u-button>
<!-- #endif -->
</view>
</view>
<view class="margin padding bg-white radius" v-if="inviterList.length">
<view class="flex justify-between" style="line-height: 80rpx;" v-for="(item, index) in inviterList"
:key='index'>
<view class="flex">
<!-- <u-image :src="item.avatar == null?avatar:item.avatar" width="40px" mode="widthFix"></u-image> -->
<image src="../static/invite/5.png" style="width: 80rpx;" mode="widthFix"></image>
<text class="margin-left-sm">{{item.userName}}</text>
</view>
<view style="width: 160rpx;">
<text>获得</text>
<text class="margin-left-xs text-red">{{item.money}}</text>
</view>
</view>
</view>
<view class="padding" style="position: relative;height: 160px;">
<u-image src="@/me/static/invite/yaoqing.png" alt="" width="100%" height="100%"></u-image>
<view class="text-center padding-top flex justify-center flex-direction zhanji">
<view class="flex justify-around margin-top-sm">
<view>
<view class="margin-bottom-sm">已邀请</view>
<view class="text-red"><text class="text-bold u-font-18">{{inviterNumber}}</text></view>
</view>
<view>
<view class="margin-bottom-sm">累计收益</view>
<view class="text-red"><text class="text-bold u-font-18">{{cumulativeRevenue}}</text></view>
</view>
<view>
<view class="margin-bottom-sm">已提现</view>
<view class="text-red">¥<text class="text-bold u-font-18">{{withdrawn}}</text></view>
</view>
</view>
</view>
</view>
<view class="padding" style="position: relative;height: 250rpx;">
<u-image src="@/me/static/invite/jiqiao.png" alt="" width="100%" height="100%"></u-image>
<view class="padding-top jiqiao" style="">
<view class="padding-top-xl padding-lr padding-bottom" style="line-height: 48rpx;">
<block v-if="price2==0">
<view class="flex padding-sm" style="background-color: #ffffff;">
<text class="cuIcon-title text-yellow"></text>
<view>邀请好友可得开通会员及消费金额 {{price}}%的佣金奖励</view>
</view>
</block>
<block v-else>
<view class="flex padding-sm" style="background-color: #ffffff;">
<text class="cuIcon-title text-yellow"></text>
<view>可得一级好友开通会员及消费金额 {{price}}%的佣金奖励</view>
</view>
<view class="flex padding-sm" style="background-color: #ffffff;">
<text class="cuIcon-title text-yellow"></text>
<view>可得二级好友开通会员及消费金额 {{price2}}%的佣金奖励</view>
</view>
</block>
</view>
</view>
</view>
<tki-qrcode ref="qrcode" :val="erweima" :size="200" background="#fff" foreground="#000" pdground="#000"
:onval="true" :loadMake="true" @result="qrR" :show="false"></tki-qrcode>
<view class="cu-modal" :class="modalName == 'Image' ? 'show' : ''" @tap="hideModal">
<view class="cu-dialog" v-if="bgImg && erweimapath && haibaoShow" @tap="hideModal">
<view class="bg-img">
<wm-poster @success="posterSuccess" @successH5="successH5" :imgSrc="bgImg"
:Referrer="'我的邀请码:'+invitationCode" :QrSrc="erweimapath" :LineType="false"></wm-poster>
</view>
</view>
</view>
</view>
</template>
<script>
let settingWritePhotosAlbum = false;
import tkiQrcode from '../../components/tki-qrcode/tki-qrcode.vue';
import wmPoster from '../components/wm-poster/wm-posterorders.vue';
import config from '../../common/config.js'
export default {
components: {
tkiQrcode,
wmPoster
},
data() {
return {
erweimapath: '',
poster: {},
qrShow: false,
haibaoImg: null,
haibaoShow: false,
modalName: '',
canvasId: 'default_PosterCanvasId',
avatar: '../../static/images/logo.png',
customStyle: {
background: '#FFE0E0',
border: '0',
color: 'rgb(254,30,35)',
fontSize: '12px',
fontWeight: '500',
padding: '15px 20px',
},
page: 1,
limit: 10,
inviterName: '', //
cumulativeRevenue: '', //
inviterNumber: '', //
withdrawn: '', //
inviterList: [],
erweima: '',
bgImg: '',
tuiguang: '',
invitationCode: 0,
price: 0,
price2: 0,
h5SaveImg: '',
modalName: '',
haibaoImgH5: '',
qdCode: '', //
}
},
onShareAppMessage(res) {
return {
path: '/pages/index/index?invitation=' + this.invitationCode + '&qdCode=' + this
.qdCode, // onload(data){let id=data.id;}
title: this.tuiguang,
imageUrl: this.bgImg
}
},
onShareTimeline(res) {
return {
path: '/pages/index/index?invitation=' + this.invitationCode + '&qdCode=' + this
.qdCode, // onload(data){let id=data.id;}
title: this.tuiguang,
imageUrl: this.bgImg
}
},
onLoad() {
this.getInviter()
this.queryInviter()
this.invitationCode = uni.getStorageSync('invitationCode')
this.getUserInfoBl()
this.getBgImg()
if (uni.getStorageSync('qdCode')) {
this.qdCode = uni.getStorageSync('qdCode')
}
// h5
// #ifdef H5
this.erweima = config.APIHOST2 + '/?invitation=' + this
.invitationCode + '&qdCode=' + this.qdCode
// #endif
// appapp
// #ifdef APP
this.erweima = config.APIHOST2 + '/pages/login/registerApp/?invitation=' + this
.invitationCode + '&qdCode=' + this.qdCode
// #endif
// #ifdef MP-WEIXIN
this.getWxEq()
// #endif
// #ifdef MP-TOUTIAO
this.getTouTiao()
// #endif
},
methods: {
//
getUserInfoBl() {
this.$Request.getT('/app/user/selectUserById').then(res => {
if (res.code == 0) {
//
if (res.data.rate) {
this.price = (Number(res.data.rate) * 100).toFixed(0)
} else {
this.price = 0
}
//
if (res.data.twoRate) {
this.price2 = (Number(res.data.twoRate) * 100).toFixed(0)
} else {
this.price2 = 0
}
}
})
},
//
getTouTiao() {
let that = this
uni.downloadFile({
url: config.APIHOST +
'/app/invite/dyCreateQr?invitationCode=' + that
.invitationCode + ',' + that.qdCode + '&page=/pages/index/index',
success: (res) => {
console.log(res)
if (res.statusCode === 200) {
that.erweimapath = res.tempFilePath
} else {
uni.hideLoading();
uni.showToast({
title: '海报制作失败,图片下载失败',
icon: 'none'
});
}
},
fail: err => {
console.log(err)
uni.hideLoading();
uni.showToast({
title: '海报制作失败,图片下载失败',
icon: 'none'
});
}
});
},
//
getWxEq() {
let that = this
uni.downloadFile({
url: config.APIHOST +
'/app/invite/mpCreateQr?invitationCode=' + that
.invitationCode + ',' + that.qdCode,
success: (res) => {
console.log(res)
if (res.statusCode === 200) {
that.erweimapath = res.tempFilePath
} else {
uni.hideLoading();
uni.showToast({
title: '海报制作失败,图片下载失败',
icon: 'none'
});
}
},
fail: err => {
console.log(err)
uni.hideLoading();
uni.showToast({
title: '海报制作失败,图片下载失败',
icon: 'none'
});
}
});
},
sharurl() {
let that = this;
uni.showModal({
title: '链接推广',
content: this.tuiguang + this.erweima,
showCancel: true,
cancelText: '关闭',
confirmText: '一键复制',
success: res => {
if (res.confirm) {
uni.setClipboardData({
data: this.tuiguang + this.erweima,
success: function() {
console.log('success');
uni.showToast({
title: '复制成功',
duration: 1000,
icon: 'none'
});
}
});
}
}
});
},
posterSuccess(haibaoImg) {
this.haibaoImg = haibaoImg;
this.modalName = 'Image';
uni.hideLoading();
},
successH5(haibaoImg) {
this.haibaoImgH5 = haibaoImg
uni.previewImage({
urls: [haibaoImg],
current: 1,
})
},
showModal() {
// #ifndef H5
if (!this.haibaoImg) {
this.haibaoShow = true;
uni.showLoading({
title: '海报生成中'
});
} else {
this.modalName = 'Image';
}
// #endif
// #ifdef H5
let ua = navigator.userAgent.toLowerCase();
if (ua.indexOf('micromessenger') !== -1) {
//
if (!this.haibaoImg) {
this.haibaoShow = true;
uni.showLoading({
title: '海报生成中'
});
} else {
this.modalName = 'Image';
}
} else {
if (!this.haibaoImgH5) {
this.haibaoShow = true;
uni.showLoading({
title: '海报生成中'
});
} else {
uni.previewImage({
urls: [this.haibaoImgH5],
current: 1,
})
}
}
// #endif
},
hideModal() {
this.modalName = null;
},
qrR(path) {
this.erweimapath = path;
},
getInviter() {
let data = {
page: this.page,
limit: this.limit
}
this.$u.api.inviter(data).then(res => {
if (res.code == 0) {
this.inviterList = res.data.list
} else {
uni.showToast({
title: res.msg,
duration: 1000,
icon: 'none'
});
}
})
},
queryInviter() {
this.$u.api.queryInviter().then(res => {
if (res.code == 0) {
this.cumulativeRevenue = res.data.inviteMoney.moneySum //
this.inviterNumber = res.data.inviteCount //
this.withdrawn = res.data.inviteMoney.cashOut //
} else {
uni.showToast({
title: res.msg,
duration: 1000,
icon: 'none'
});
}
})
},
goNav(e) {
uni.navigateTo({
url: e
})
},
//
getBgImg() {
this.$u.get('app/banner/selectBannerList?classify=5').then(res => {
if (res.code == 0) {
this.bgImg = res.data[0].imageUrl
this.tuiguang = res.data[0].describes
console.log(this.bgImg)
} else {
uni.showToast({
title: res.msg,
duration: 1000,
icon: 'none'
});
}
});
},
//h5
createH5Poster() {
let that = this;
return new Promise((resolve, reject) => {
uni.showLoading({
title: '海报生成中'
});
const ctx = uni.createCanvasContext('poster');
ctx.fillRect(0, 0, 375, 673);
ctx.setFillStyle("#FFF");
ctx.fillRect(0, 0, 375, 673);
let imgUrl = that.bgImg;
uni.downloadFile({
url: imgUrl,
success: (res) => {
console.log(res, '***************')
if (res.statusCode === 200) {
uni.downloadFile({
url: that.erweima,
success: (res2) => {
console.log(res2)
if (res.statusCode === 200) {
ctx.drawImage(res.tempFilePath, 0, 0, 375,
500);
// 访
let textTop = 0;
ctx.setFontSize(19);
ctx.setFillStyle('#333');
ctx.fillText("长按识别图中二维码", 17, textTop + 590);
//
ctx.drawImage(res2.tempFilePath, 238, textTop +
526, 120, 120);
ctx.draw(true, () => {
// canvas
uni.canvasToTempFilePath({
canvasId: 'poster',
width: 375,
height: 673,
success: (res) => {
console.log(
"海报制作成功!"
);
resolve(res
.tempFilePath
);
},
fail: () => {
uni
.hideLoading();
reject();
}
})
});
} else {
uni.hideLoading();
uni.showToast({
title: '海报制作失败,图片下载失败',
icon: 'none'
});
}
},
fail: err => {
console.log(err)
uni.hideLoading();
uni.showToast({
title: '海报制作失败,图片下载失败',
icon: 'none'
});
},
complete: com => {
console.log(com)
uni.showToast({
title: com,
icon: 'none'
});
},
});
} else {
uni.hideLoading();
uni.showToast({
title: '海报制作失败,图片下载失败',
icon: 'none'
});
}
},
fail: err => {
// that.yu.toast(err)
console.log(err)
uni.hideLoading();
uni.showToast({
title: '海报制作失败,图片下载失败',
icon: 'none',
});
}
});
});
},
//
createPoster() {
let that = this;
return new Promise((resolve, reject) => {
uni.showLoading({
title: '海报生成中'
});
const ctx = uni.createCanvasContext('poster');
ctx.fillRect(0, 0, 375, 673);
ctx.setFillStyle("#FFF");
ctx.fillRect(0, 0, 375, 673);
let imgUrl = that.bgImg;
uni.downloadFile({
url: imgUrl,
success: (res) => {
console.log(res, '***************')
if (res.statusCode === 200) {
uni.downloadFile({
url: config.APIHOST +
'/app/invite/mpCreateQr?invitationCode=' + that
.invitationCode,
// url: 'https://jiaoyu.xianmxkj.com/sqx_fast/app/invite/mpCreateQr?invitationCode=' +
// that.invitationCode,
success: (res2) => {
console.log(res2)
if (res.statusCode === 200) {
ctx.drawImage(res.tempFilePath, 0, 0, 375,
500);
// 访
let textTop = 0;
ctx.setFontSize(19);
ctx.setFillStyle('#333');
ctx.fillText("长按识别图中二维码", 17, textTop + 590);
//
ctx.drawImage(res2.tempFilePath, 238, textTop +
526, 120, 120);
ctx.draw(true, () => {
// canvas
uni.canvasToTempFilePath({
canvasId: 'poster',
width: 375,
height: 673,
success: (res) => {
console.log(
"海报制作成功!"
);
resolve(res
.tempFilePath
);
},
fail: () => {
uni
.hideLoading();
reject();
}
})
});
} else {
uni.hideLoading();
uni.showToast({
title: '海报制作失败,图片下载失败',
icon: 'none'
});
}
},
fail: err => {
console.log(err)
uni.hideLoading();
uni.showToast({
title: '海报制作失败,图片下载失败',
icon: 'none'
});
},
complete: com => {
console.log(com)
uni.showToast({
title: com,
icon: 'none'
});
},
});
} else {
uni.hideLoading();
uni.showToast({
title: '海报制作失败,图片下载失败',
icon: 'none'
});
}
},
fail: err => {
// that.yu.toast(err)
console.log(err)
uni.hideLoading();
uni.showToast({
title: '海报制作失败,图片下载失败',
icon: 'none',
});
}
});
});
},
//
async onSaveImg() {
this.showModal();
return
// #ifndef MP-WEIXIN
this.showModal();
// #endif
// #ifdef MP-WEIXIN
let imgUrl = await this.createPoster();
uni.showLoading({
title: '海报下载中'
});
if (settingWritePhotosAlbum) {
uni.getSetting({
success: res => {
if (res.authSetting['scope.writePhotosAlbum']) {
uni.saveImageToPhotosAlbum({
filePath: imgUrl,
success: () => {
uni.hideLoading();
uni.showToast({
title: '保存成功'
});
}
});
} else {
uni.showModal({
title: '提示',
content: '请先在设置页面打开“保存相册”使用权限',
confirmText: '去设置',
cancelText: '算了',
success: data => {
if (data.confirm) {
uni.hideLoading();
uni.openSetting();
}
}
});
}
}
});
} else {
uni.hideLoading();
settingWritePhotosAlbum = true;
uni.authorize({
scope: 'scope.writePhotosAlbum',
success: () => {
uni.saveImageToPhotosAlbum({
filePath: imgUrl,
success: () => {
uni.hideLoading();
uni.showToast({
title: '保存成功'
});
}
});
}
});
}
// #endif
},
}
}
</script>
<style>
.modal {
position: fixed;
top: 0;
right: 0;
bottom: 0;
left: 0;
z-index: 1110;
opacity: 0;
outline: 0;
text-align: center;
-ms-transform: scale(1.185);
transform: scale(1.185);
backface-visibility: hidden;
perspective: 2000upx;
background: rgba(0, 0, 0, 0.6);
transition: all 0.3s ease-in-out 0s;
pointer-events: none;
}
.modal.show {
opacity: 1;
transition-duration: 0.3s;
-ms-transform: scale(1);
transform: scale(1);
overflow-x: hidden;
overflow-y: auto;
pointer-events: auto;
}
page {
background: #E0EFFF;
}
img {
display: block;
}
.poster_canvas {
width: 750upx;
height: 1334upx;
position: fixed;
top: -10000upx;
left: 0;
}
.yaoqing {
width: 100%;
height: 136px;
position: absolute;
margin: auto;
top: 0;
left: 0;
right: 0;
bottom: 0;
/* background-image: url('@/me/static/invite/fenxiang.png'); */
/* background-size: 100%; */
/* background-repeat: no-repeat; */
}
.zhanji {
width: 100%;
height: 119px;
position: absolute;
margin: auto;
top: 0;
left: 0;
right: 0;
bottom: 0;
/* background-image: url('@/me/static/invite/yaoqing.png'); */
/* background-size: 100%; */
/* background-repeat: no-repeat; */
}
.jiqiao {
width: 100%;
height: 160rpx;
position: absolute;
margin: auto;
top: 0;
left: 0;
right: 0;
bottom: 0;
/* background-image: url('@/me/static/invite/jiqiao.png');
background-size: 100%;
background-repeat: no-repeat; */
}
</style>

View File

@ -1,73 +1,129 @@
<!-- 我的邀请 -->
<template>
<view>
<u-image src="/me/static/invite/juxing.png" alt="" width="100%" mode="widthFix"></u-image>
<view class="padding" style="position: relative;height: 360rpx;">
<u-image src="@/me/static/invite/fenxiang.png" alt="" width="100%" height="100%"></u-image>
<view class="text-center padding-top yaoqing">
<view class="margin-top-xl margin-bottom-sm padding-top-sm text-xxl text-red text-bold">
<view class="min-page">
<u-navbar title="分享好友" back-icon-color="#fff" :background="background" immersive :border-bottom="false"
title-color="#fff"></u-navbar>
<view class="u-relative">
<u-image src="/me/static/invite/top-bg.png" alt="" width="100%" mode="widthFix"></u-image>
<view class="u-absolute top-title">
<view class="u-flex u-row-center">
<u-image src="/me/static/invite/title.png" alt="" width="544rpx" mode="widthFix"></u-image>
</view>
<!-- <view class="u-flex u-row-right" style="padding-right:70rpx;">
<u-image src="/me/static/invite/rule.png" alt="" width="400rpx" mode="widthFix"></u-image>
</view> -->
<view class="u-m-t-24 color-fff u-font-28 u-text-left text-shadow "
style=" padding-left: 248rpx;">
<view>新人首次签到成功送1元现金红包</view>
<view>满15个新人完成签到额外送9.9元红包</view>
</view>
</view>
</view>
<view class=" inviteBox u-relative">
<view class="top">
<u-image src="/me/static/invite/bg1.png" alt="" width="422rpx" height="76rpx"></u-image>
<view class="u-absolute font-bold">
<text>邀请详情</text>
</view>
</view>
<view class="u-font-32 font-bold u-text-center color-000" style="padding-top: 84rpx;">
您的邀请码
</view>
<view class="text-center ">
<view class=" u-m-t-32 text-xxl text-red text-bold u-m-b-32">
{{invitationCode}}
</view>
<!-- #ifdef H5 -->
<u-button @tap="sharurl" :custom-style="customStyle" :hair-line="false" shape="circle" size="mini"
:ripple="true">一键分享</u-button>
<!-- #endif -->
<view class="u-flex u-row-between" style="padding: 0 88rpx;">
<!-- #ifdef H5 -->
<u-button @tap="sharurl" :custom-style="customStyle" :hair-line="false"
:ripple="true">一键分享</u-button>
<!-- #endif -->
<!-- #ifdef APP -->
<u-button @tap="sharurl" :custom-style="customStyle" :hair-line="false" shape="circle" size="mini"
:ripple="true">一键分享</u-button>
<!-- #endif -->
<!-- #ifdef APP -->
<u-button @tap="sharurl" :custom-style="customStyle" :hair-line="false"
:ripple="true">一键分享</u-button>
<!-- #endif -->
<!-- #ifdef MP-TOUTIAO || MP-KUAISHOU -->
<u-button open-type="share" :custom-style="customStyle" :hair-line="false" shape="circle" size="mini"
:ripple="true">一键分享</u-button>
<!-- #endif -->
<!-- #ifdef MP-TOUTIAO || MP-KUAISHOU -->
<u-button open-type="share" :custom-style="customStyle" :hair-line="false"
:ripple="true">一键分享</u-button>
<!-- #endif -->
<!-- #ifdef MP-WEIXIN -->
<u-button open-type="share" :custom-style="customStyle" :hair-line="false" shape="circle" size="mini"
:ripple="true">一键分享</u-button>
<!-- #endif -->
<!-- #ifndef MP-KUAISHOU -->
<u-button style="margin-left: 50rpx;" @click.stop="onSaveImg()" :custom-style="customStyle"
:hair-line="false" shape="circle" size="mini" :ripple="true">保存海报</u-button>
<!-- #endif -->
<!-- #ifdef MP-WEIXIN -->
<u-button open-type="share" :custom-style="customStyle" :hair-line="false"
:ripple="true">一键分享</u-button>
<!-- #endif -->
<!-- #ifndef MP-KUAISHOU -->
<u-button style="margin-left: 50rpx;" @click.stop="onSaveImg()" :custom-style="customStyle"
:hair-line="false" :ripple="true">保存海报</u-button>
<!-- #endif -->
</view>
</view>
</view>
<view class="margin padding bg-white radius" v-if="inviterList.length">
<view class="flex justify-between" style="line-height: 80rpx;" v-for="(item, index) in inviterList"
:key='index'>
<view class="flex">
<!-- <u-image :src="item.avatar == null?avatar:item.avatar" width="40px" mode="widthFix"></u-image> -->
<image src="../static/invite/5.png" style="width: 80rpx;" mode="widthFix"></image>
<text class="margin-left-sm">{{item.userName}}</text>
</view>
<view style="width: 160rpx;">
<text>获得</text>
<text class="margin-left-xs text-red">{{item.money}}</text>
<view class="gap u-m-t-32"></view>
<view class="u-m-t-32">
<view class="font-bold color-000 u-font-32 u-text-center">我的邀请战绩</view>
<view class="flex justify-around u-m-t-32 u-text-center font-bold" style="line-height: 46rpx;">
<view>
<view class="">已邀请</view>
<view class="text-red u-m-t-16 "><text class=" u-font-40">{{inviterNumber}}</text></view>
</view>
<view>
<view class="">签到</view>
<view class="text-red u-m-t-16 "><text class=" u-font-40">{{inviteSignCount}}</text></view>
</view>
<view @click="toGold">
<view class="">金币收益</view>
<view class="text-red u-m-t-16 "><text class=" u-font-40">{{earning.inviteGoldMoney}}</text></view>
</view>
<view @click="toPack">
<view class="">红包收益</view>
<view class="text-red u-m-t-16 "><text class=" u-font-40">{{earning.inviteMoney}}</text></view>
</view>
<!-- <view>
<view class="">累计收益</view>
<view class="text-red u-m-t-16 "><text class=" u-font-40">{{cumulativeRevenue}}</text></view>
</view> -->
<!-- <view>
<view class="">已提现</view>
<view class="text-red u-m-t-16 "><text class="u-font-40">{{withdrawn}}</text></view>
</view> -->
</view>
<view class="u-m-t-16 color-999 u-text-center u-p-b-32">好友签到成功可额外获得1元现金红包</view>
</view>
</view>
<view class="padding" style="position: relative;height: 160px;">
<u-image src="@/me/static/invite/yaoqing.png" alt="" width="100%" height="100%"></u-image>
<view class="text-center padding-top flex justify-center flex-direction zhanji">
<view class="flex justify-around margin-top-sm" @click="goNav('/me/invite/inviteDet')">
<view>
<view class="margin-bottom-sm">已邀请</view>
<view class="text-red"><text class="text-bold u-font-18">{{inviterNumber}}</text></view>
<view class="margin u-m-t-40 u-m-b-32 padding bg-white radius-16">
<view class="u-font-32 color-333 font-bold u-text-center">已邀请列表</view>
<view v-if="inviterList.length" class="u-m-t-20">
<view class="flex justify-between u-m-b-20" style="line-height: 80rpx;" v-for="(item, index) in inviterList"
:key='index'>
<view class="flex">
<!-- <u-image :src="item.avatar == null?avatar:item.avatar" width="40px" mode="widthFix"></u-image> -->
<view class="u-flex u-relative">
<image src="../static/invite/5.png" style="width: 80rpx;" mode="widthFix"></image>
<view class="tag-news" v-if="item.userTag==1">新人</view>
<text class="tag-no-real" v-if="item.userTag==0">未认证</text>
</view>
<text class="margin-left-sm">{{item.userName}}</text>
</view>
<view>
<view class="margin-bottom-sm">累计收益</view>
<view class="text-red"><text class="text-bold u-font-18">{{cumulativeRevenue}}</text></view>
</view>
<view>
<view class="margin-bottom-sm">已提现</view>
<view class="text-red">¥<text class="text-bold u-font-18">{{withdrawn}}</text></view>
<view style="width: 160rpx;" class="u-flex u-row-right font-bold">
<text class=" text-red" v-if="item.recordNum>0">已签到</text>
<text class=" color-999" v-else>未签到</text>
</view>
</view>
</view>
<!-- <view class="u-p-t-30 u-p-b-30 empty" v-if="hasAjax&&!inviterList.length">
<my-empty ></my-empty>
</view> -->
</view>
<view class="padding" style="position: relative;height: 250rpx;">
<view class="u-p-b-32">
<u-loadmore v-if="hasAjax" :status="comStatus" />
</view>
<!-- <view class="padding" style="position: relative;height: 250rpx;">
<u-image src="@/me/static/invite/jiqiao.png" alt="" width="100%" height="100%"></u-image>
<view class="padding-top jiqiao" style="">
<view class="padding-top-xl padding-lr padding-bottom" style="line-height: 48rpx;">
@ -90,7 +146,7 @@
</view>
</view>
</view>
</view> -->
<tki-qrcode ref="qrcode" :val="erweima" :size="200" background="#fff" foreground="#000" pdground="#000"
@ -110,14 +166,25 @@
let settingWritePhotosAlbum = false;
import tkiQrcode from '../../components/tki-qrcode/tki-qrcode.vue';
import wmPoster from '../components/wm-poster/wm-posterorders.vue';
import myEmpty from '@/components/my-empty.vue';
import config from '../../common/config.js'
export default {
components: {
tkiQrcode,
myEmpty,
wmPoster
},
data() {
return {
loading:false,
earning: {
inviteMoney: 0,
inviteGoldMoney: 0,
},
//
inviteCount: 0,
hasAjax: false,
erweimapath: '',
poster: {},
qrShow: false,
@ -126,16 +193,20 @@
modalName: '',
canvasId: 'default_PosterCanvasId',
avatar: '../../static/images/logo.png',
background: {
'background-color': 'transparent'
},
customStyle: {
background: '#FFE0E0',
border: '0',
color: 'rgb(254,30,35)',
fontSize: '12px',
fontWeight: '500',
padding: '15px 20px',
background: '#DDDCFF',
border: '8rpx',
color: '#4544FF',
fontSize: '28rpx',
fontWeight: '700',
padding: '10rpx 32rpx',
},
page: 1,
limit: 10,
isEnd:false,
inviterName: '', //
cumulativeRevenue: '', //
inviterNumber: '', //
@ -150,9 +221,21 @@
h5SaveImg: '',
modalName: '',
haibaoImgH5: '',
inviteSignCount:0,
qdCode: '', //
}
},
computed:{
comStatus(){
if(this.isEnd){
return 'nomore'
}
if(this.loading){
return 'loading'
}
return 'loadmore'
}
},
onShareAppMessage(res) {
return {
path: '/pages/index/index?invitation=' + this.invitationCode + '&qdCode=' + this
@ -181,7 +264,9 @@
}
// h5
// #ifdef H5
this.erweima = config.APIHOST2 + '/?invitation=' + this
// this.erweima = config.APIHOST2 + '/?invitation=' + this
// .invitationCode + '&qdCode=' + this.qdCode
this.erweima = config.APIHOST2 + '/pages/login/registerApp/?invitation=' + this
.invitationCode + '&qdCode=' + this.qdCode
// #endif
// appapp
@ -196,7 +281,24 @@
this.getTouTiao()
// #endif
},
onReachBottom() {
if(this.isEnd||this.loading){
return
}
this.page+=1
this.getInviter()
},
methods: {
toGold(){
uni.navigateTo({
url:'/me/invite/moneyList?moneyType=2&viewType=1'
})
},
toPack(){
uni.navigateTo({
url:'/me/invite/moneyList?moneyType=1&viewType=1'
})
},
//
getUserInfoBl() {
this.$Request.getT('/app/user/selectUserById').then(res => {
@ -305,11 +407,14 @@
uni.hideLoading();
},
successH5(haibaoImg) {
this.haibaoImgH5 = haibaoImg
uni.previewImage({
urls: [haibaoImg],
current: 1,
})
if ( haibaoImg ) {
this.haibaoImgH5 = haibaoImg
uni.previewImage({
urls: [haibaoImg],
current: 1,
})
}
},
showModal() {
// #ifndef H5
@ -322,6 +427,7 @@
this.modalName = 'Image';
}
// #endif
// #ifdef H5
let ua = navigator.userAgent.toLowerCase();
if (ua.indexOf('micromessenger') !== -1) {
@ -346,7 +452,6 @@
current: 1,
})
}
}
// #endif
},
@ -357,13 +462,18 @@
this.erweimapath = path;
},
getInviter() {
let data = {
page: this.page,
limit: this.limit
}
this.loading=true;
this.$u.api.inviter(data).then(res => {
this.loading=false;
if (res.code == 0) {
this.inviterList = res.data.list
this.inviterList =this.inviterList.concat(res.data.list)
this.hasAjax = true;
this.isEnd=this.page>=res.data.totalPage?true:false;
} else {
uni.showToast({
title: res.msg,
@ -379,6 +489,8 @@
this.cumulativeRevenue = res.data.inviteMoney.moneySum //
this.inviterNumber = res.data.inviteCount //
this.withdrawn = res.data.inviteMoney.cashOut //
this.inviteSignCount = res.data.inviteSignCount
Object.assign(this.earning,res.data.earning)
} else {
uni.showToast({
title: res.msg,
@ -399,6 +511,7 @@
//
getBgImg() {
this.$u.get('app/banner/selectBannerList?classify=5').then(res => {
console.log(res)
if (res.code == 0) {
this.bgImg = res.data[0].imageUrl
this.tuiguang = res.data[0].describes
@ -543,10 +656,9 @@
let textTop = 0;
ctx.setFontSize(19);
ctx.setFillStyle('#333');
ctx.fillText("长按识别图中二维码", 17, textTop + 590);
// ctx.fillText("", 17, textTop + 590);
//
ctx.drawImage(res2.tempFilePath, 238, textTop +
526, 120, 120);
// ctx.drawImage(res2.tempFilePath, 238, textTop + 526, 120, 120);
ctx.draw(true, () => {
// canvas
uni.canvasToTempFilePath({
@ -615,6 +727,7 @@
//
async onSaveImg() {
this.showModal();
return
// #ifndef MP-WEIXIN
this.showModal();
@ -678,7 +791,112 @@
}
</script>
<style>
<style lang="scss" scoped>
$color1: #5857FF;
.cu-dialog {
background-color: transparent;
}
.text-red {
color: $color1;
}
.tag-news{
position: absolute;
left: 0;
right: 0;
bottom: 0;
color: $color1;
background: #DDDCFF;
border-radius: 100rpx;
font-size: 20rpx;
line-height: 1;
padding: 4rpx;
text-align: center;
}
.tag-no-real{
position: absolute;
left: 0;
right: 0;
bottom: 0;
top: 0;
border-radius: 50%;
font-size: 20rpx;
text-align: center;
font-weight: bold;
color:#fff;
background: rgba(51,51,51,0.44);
}
.gap {
width: 100%;
height: 0;
position: relative;
border-bottom: 1px dashed #eee;
&:before,
&::after {
display: block;
content: '';
position: absolute;
width: 34rpx;
height: 34rpx;
background: #F3F4F8;
border-radius: 50%;
z-index: 2;
top: 50%;
transform: translateY(-50%);
background-size: 100% 18px;
background-repeat: repeat-x
}
&:before {
left: -16rpx;
}
&::after {
right: -16rpx;
}
}
.radius-16 {
border-radius: 16rpx;
}
.min-page {
background: #F3F4F8;
}
.inviteBox {
position: relative;
margin-top: -240rpx;
background-color: #fff;
border-radius: 16rpx 16rpx 16rpx 16rpx;
margin-left: 28rpx;
margin-right: 28rpx;
.top {
position: absolute;
display: flex;
justify-content: center;
left: 134rpx;
right: 134rpx;
top: -24rpx;
.u-absolute {
left: 0;
right: 0;
z-index: 1;
top: 0;
bottom: 0;
display: flex;
justify-content: center;
align-items: center;
font-size: 32rpx;
color: #FFFFFF;
}
}
}
.modal {
position: fixed;
top: 0;
@ -698,6 +916,10 @@
pointer-events: none;
}
.bg-img {
background-color: transparent;
}
.modal.show {
opacity: 1;
transition-duration: 0.3s;
@ -709,7 +931,7 @@
}
page {
background: #E0EFFF;
background: #F3F4F8;
}
img {
@ -737,16 +959,27 @@
/* background-size: 100%; */
/* background-repeat: no-repeat; */
}
.zhanji {
width: 100%;
height: 119px;
position: absolute;
margin: auto;
top: 0;
.text-shadow{
text-shadow: 4px 4px 4px #333;
}
.top-title {
left: 0;
right: 0;
bottom: 0;
top: 192rpx;
.rule {
line-height: 32rpx;
width: 428rpx;
padding-right: 150rpx;
}
.top-title-img {
width: 550rpx;
height: 92rpx;
}
}
.zhanji {
/* background-image: url('@/me/static/invite/yaoqing.png'); */
/* background-size: 100%; */
/* background-repeat: no-repeat; */

View File

@ -7,7 +7,7 @@
<view class="" style="position: relative;overflow: hidden;width: 90px;">
<view style="position: absolute;bottom:0;">
<!-- <view class="flex"> -->
<button @tap="getOut" class="cu-btn round">立即提现</button>
<button @tap="getOut" class="cuBtn round">立即提现</button>
<!-- </view> -->
</view>
</view>
@ -33,7 +33,7 @@
style="width: 80rpx;height:80rpx;border-radius: 50rpx;"></image>
<view class="margin-left-sm">
<view class="userName_view">{{item.userName}}</view>
<view class="text-cut" style="font-size: 24rpx;" v-if="item.userType && item.userType == 2">二级好友
<view class="text-cut" style="font-size: 24rpx;" v-if="item.userType && item.userType === 2">二级好友
</view>
<view class="text-cut" style="font-size: 24rpx;" v-else>一级好友
</view>
@ -45,7 +45,7 @@
</view>
</view>
<empty v-if="userList.length == 0" />
<empty v-if="userList.length === 0" />
</view>
</view>
</template>
@ -84,7 +84,7 @@
limit: this.limit
}
this.$u.api.queryInviter(data).then(res => {
if (res.code == 0) {
if (res.code === 0) {
this.inviterRecord = res.data.inviteMoney.money
} else {
uni.showToast({
@ -98,11 +98,12 @@
getInviter() {
let data = {
page: this.page,
limit: this.limit
limit: this.limit,
userType:1
}
this.$u.api.inviter(data).then(res => {
if (res.code == 0) {
if (this.page == 1) {
if (res.code === 0) {
if (this.page === 1) {
this.userList = res.data.list
} else {
this.userList = [...this.userList, ...res.data.list]
@ -127,7 +128,7 @@
</script>
<style>
.cu-btn {
.cuBtn {
background: rgba(255, 117, 129, 0.2);
color: #ff7581;
font-weight: bold;

View File

@ -9,8 +9,8 @@
<view style="margin-bottom: 8upx"> 时间 {{item.createTime}}</view>
<view style="margin-bottom: 8upx;text-align: right;">
<!-- 提现金额 -->
<text v-if="item.type==2" style="color: #FD6416;font-size: 32upx;font-weight: 600"> - {{item.money}}</text>
<text v-if="item.type==1" style="color: #FD6416;font-size: 32upx;font-weight: 600">+ {{item.money}}</text>
<text v-if="item.type===2" style="color: #666;font-size: 32upx;font-weight: 600"> - {{item.money}}</text>
<text v-if="item.type===1" style="color: #FD6416;font-size: 32upx;font-weight: 600">+ {{item.money}}</text>
</view>
</view>
@ -34,10 +34,22 @@
return {
list: [],
page: 1,
limit: 10
limit: 10,
totalCount: 0,
moneyType: null,
viewType: null,
}
},
onLoad: function(e) {
if (e.moneyType) {
this.moneyType = e.moneyType
uni.setNavigationBarTitle({
title: e.moneyType == 1 ? '红包明细' : '金币明细'
});
}
if (e.viewType) {
this.viewType = e.viewType
}
this.getMoney();
},
@ -49,15 +61,16 @@
if (token) {
let data = {
page : that.page,
limit : that.limit
limit : that.limit,
moneyType : this.moneyType,
viewType: this.viewType,
}
that.$u.api.moneyDet(data).then(res => {
if(that.page == 1) {
that.list = res.data.records
uni.stopPullDownRefresh();
return
this.$Request.getT('app/moneyDetails/queryUserMoneyDetails', data).then(res => {
this.totalCount = res.data.total;
if ( res.data.records.length > 0) {
this.list = [...this.list,...res.data.records];
}
that.list = [...that.list, ...res.data.records]
})
}
@ -65,8 +78,10 @@
},
},
onReachBottom: function() {
this.page = this.page + 1;
this.getMoney();
if (this.page*this.limit < this.totalCount) {
this.page = this.page + 1;
this.getMoney();
}
},
onPullDownRefresh: function() {
this.page = 1;
@ -94,8 +109,9 @@
.centre {
text-align: center;
margin: 200rpx auto;
padding: 200rpx 0;
font-size: 32rpx;
box-sizing: border-box;
image {
width: 360rpx;
height: 360rpx;
@ -105,7 +121,7 @@
}
.tips {
font-size: 34rpx;
color: #5074FF;
color: #999999;
margin-top: 20rpx;
}
.btn {

177
me/invite/realName.vue Normal file
View File

@ -0,0 +1,177 @@
<template>
<view class="containerView">
<list-cell title="姓名" type="text" placeholder="请输入姓名" v-model="certName"></list-cell>
<list-cell title="身份证号码" type="text" placeholder="请输入身份证号码" v-model="certNum"></list-cell>
<list-cell title="银行卡号码" type="text" placeholder="请输入银行卡号码" v-model="accountNo"></list-cell>
<list-cell title="手机号" type="text" placeholder="请输入银行预留号码" v-model="mobile"></list-cell>
<button v-if="!user.accountNo" class="confirm-btn" @click="toLogin"
:disabled="logining">认证</button>
<view style="font-size: 24upx;color: #999999;padding: 0 64rpx;margin-top: 32rpx;margin-bottom: 10rpx;">请正确填写收款人的银行卡号和真实的收款人姓名</view>
<view style="font-size: 24upx;color: #999999;padding: 0 64rpx;;margin-bottom: 10rpx;">手机号需是银行卡预留手机号</view>
<view style="font-size: 24upx;color: #999999;padding: 0 64rpx;;margin-bottom: 10rpx;">银行卡号需与收款人姓名一致</view>
<view style="font-size: 24upx;color: #999999;padding: 0 64rpx;;margin-bottom: 10rpx;">身份证信息仅可使用一次</view>
<view style="font-size: 24upx;color: #999999;padding: 0 64rpx">否则将无法正常收款请须知</view>
</view>
</template>
<script>
import listCell from '@/me/components/com-input';
export default {
components: {
listCell
},
data() {
return {
certName: '',
mobile: '',
certNum: '',
accountNo: '',
user: {},
logining: false
}
},
onLoad() {
let userId = uni.getStorageSync('userId');
if (userId) {
this.$u.api.userinfo().then(res => {
if (res.code === 0) {
this.user = res.data
if (res.data.certName) {
this.certName = res.data.certName;
}
if (res.data.mobile) {
this.mobile = res.data.mobile;
}
if (res.data.accountNo) {
this.certNum = res.data.certNo;
this.accountNo = res.data.accountNo;
}
}
})
}
},
methods: {
inputChange(e) {
const key = e.currentTarget.dataset.key;
this[key] = e.detail.value;
},
navBack() {
uni.navigateBack();
},
toLogin() {
if (!this.certName) {
uni.showToast({
title: '请输入姓名',
icon: 'none'
})
} else if (!this.mobile) {
uni.showToast({
title: '请输入手机号',
icon: 'none'
})
} else if (!this.certNum) {
uni.showToast({
title: '请输入身份证账号',
icon: 'none'
})
} else if (!this.accountNo) {
uni.showToast({
title: '请请输入银行卡号',
icon: 'none'
})
} else {
this.logining = true
this.$u.post('app/user/realNameAuth?certName=' + this.certName + '&mobile=' + this.mobile + '&certNum=' + this.certNum + '&accountNo=' + this.accountNo.replace(/\s+/g, '')).then(
res => {
this.logining = false
console.log(res);
if(res.code===0){
uni.setStorageSync('certName', this.certName)
uni.setStorageSync('mobile', this.mobile)
uni.setStorageSync('certNum', this.certNum)
uni.setStorageSync('accountNo', this.accountNo)
uni.showToast({
title: '修改成功',
icon: 'none',
complete() {
setTimeout(function() {
uni.navigateBack();
}, 1000)
}
})
}else{
uni.showToast({
title:res.msg||'修改失败',
icon:'none'
})
}
});
}
},
},
}
</script>
<style lang='scss'>
page {
background: #FFFFFF;
}
.containerView {
padding-top: 32upx;
position: relative;
width: 100%;
height: 100%;
overflow: hidden;
background: #ffffff;
}
.confirm-btn1 {
width: 300px;
height: 42px;
line-height: 42px;
border-radius: 30px;
margin-top: 70upx;
/* background: whitesmoke; */
background: #ff7581;
color: #FFFFFF;
font-size: 32rpx;
&:after {
border-radius: 60px;
}
}
.confirm-btn {
width: 300px;
height: 42px;
line-height: 42px;
border-radius: 30px;
margin-top: 70upx;
background: #ff7581;
color: #ffffff;
font-size: 32rpx;
&:after {
border-radius: 60px;
}
}
</style>

View File

@ -1,16 +1,15 @@
<template>
<view class="container">
<view class="containerView">
<list-cell title="收款人姓名" type="text" placeholder="请输入支付宝收款人姓名" v-model="zhiFuBaoName"></list-cell>
<list-cell title="支付宝账号" type="text" placeholder="请输入要绑定的支付宝手机号" v-model="zhiFuBao"></list-cell>
<button :class="zhiFuBao&&zhiFuBaoName?'confirm-btn':'confirm-btn1'" @click="toLogin"
<button class="confirm-btn" @click="toLogin"
:disabled="logining">绑定账户</button>
<view style="padding: 32upx 64upx;font-size: 24upx;color: #999999;">提示请正确填写收款人的支付宝账户和真实的收款人姓名否则将无法正常收款</view>
<view style="font-size: 24upx;color: #999999;padding: 0 64rpx;margin-top: 32rpx;margin-bottom: 10rpx;">请正确填写收款人的支付宝账户和真实的收款人姓名</view>
<view style="font-size: 24upx;color: #999999;padding: 0 64rpx">否则将无法正常收款请须知</view>
</view>
</view>
</template>
<script>
@ -31,15 +30,14 @@
if (userId) {
this.$u.api.userinfo().then(res => {
if (res.code == 0) {
if (res.code === 0) {
if (res.data.zhiFuBao) {
this.zhiFuBao = res.data.zhiFuBao;
}
if (res.data.zhiFuBaoName) {
this.zhiFuBaoName = res.data.zhiFuBaoName;
}
// console.log(this.zhiFuBao )
// console.log(this.zhiFuBaoName )
}
})
}
@ -55,16 +53,9 @@
},
toLogin() {
// console.log(this.zhiFuBao )
// console.log(this.zhiFuBaoName )
// const {
// zhiFuBao,
// zhiFuBaoName
// } = this;
let zhiFuBao = this.zhiFuBao
let zhiFuBaoName = this.zhiFuBaoName
console.log(zhiFuBao)
console.log(zhiFuBaoName)
if (!zhiFuBao) {
uni.showToast({
title: '请设置收款人姓名',
@ -76,20 +67,30 @@
icon: 'none'
})
} else {
this.$u.post('app/user/updateUser?zhiFuBao=' + zhiFuBao + '&zhiFuBaoName=' + zhiFuBaoName).then(
this.logining = true
this.$u.post('app/user/bindAlipay?zhiFuBao=' + zhiFuBao + '&certName=' + zhiFuBaoName).then(
res => {
// console.log(res);
uni.setStorageSync('zhiFuBao', zhiFuBao)
uni.setStorageSync('zhiFuBaoName', zhiFuBaoName)
uni.showToast({
title: '修改成功',
icon: 'none',
complete() {
setTimeout(function() {
uni.navigateBack();
}, 1000)
}
})
this.logining = false
console.log(res);
if(res.code===0){
uni.setStorageSync('zhiFuBao', zhiFuBao)
uni.setStorageSync('zhiFuBaoName', zhiFuBaoName)
uni.showToast({
title: '修改成功',
icon: 'none',
complete() {
setTimeout(function() {
uni.navigateBack();
}, 1000)
}
})
}else{
uni.showToast({
title:res.msg||'修改失败',
icon:'none'
})
}
});
@ -127,7 +128,7 @@
background: #FFFFFF;
}
.container {
.containerView {
padding-top: 32upx;
position: relative;
width: 100%;

View File

@ -77,7 +77,7 @@
integral: this.value
}
this.$Request.postT('/app/integral/creditsExchange', data).then(res => {
if (res.code == 0) {
if (res.code === 0) {
uni.showToast({
title: '积分兑换成功'
})
@ -97,7 +97,7 @@
//
getBili() {
this.$u.get('/app/common/type/104').then(res => { // 104
if (res.code == 0 && res.data) {
if (res.code === 0 && res.data) {
this.bili = res.data.value
}
});

View File

@ -112,14 +112,14 @@
setTimeout(() => {
this.refresherTriggered = false
}, 1500)
if (res.code == 0) {
if (res.code === 0) {
this.pages = res.data.pages
if (this.page < this.pages) {
this.status = 'loadmore'
} else {
this.status = 'nomore'
}
if (this.page == 1) {
if (this.page === 1) {
this.list = res.data.records
} else {
this.list = [...this.list, ...res.data.records]
@ -131,7 +131,7 @@
getNum() {
this.$Request.getT('/app/integral/selectByUserId').then(res => {
uni.stopPullDownRefresh()
if (res.code == 0) {
if (res.code === 0) {
this.num = res.data.integralNum
} else {
this.num = 0

View File

@ -15,7 +15,7 @@
</view>
<view class="list-box-r-new flex align-center justify-between">
<view class="list-box-r-new-l">
{{item.over==1?'完结':'更新'+item.courseDetailsCount+'集'}}
{{item.over===1?'完结':'更新'+item.courseDetailsCount+'集'}}
</view>
<view class="list-box-r-new-r">
继续观看
@ -27,7 +27,7 @@
<view class="" style="margin: 20rpx;" v-if="list.length > 0">
<u-loadmore :status="status" />
</view>
<empty v-if="list.length == 0" title="暂无记录" />
<empty v-if="list.length === 0" title="暂无记录" />
</view>
</template>
@ -47,17 +47,17 @@
};
},
onShow() {
this.getList()
this.getDataList()
},
onPullDownRefresh() {
this.page = 1
this.getList()
this.getDataList()
},
onReachBottom() {
if (this.page < this.pages) {
this.page += 1
this.status = 'loading'
this.getList()
this.getDataList()
} else {
this.status = 'nomore'
}
@ -70,7 +70,7 @@
})
},
//
getList() {
getDataList() {
let data = {
page: this.page,
limit: this.limit,
@ -78,14 +78,14 @@
}
this.$Request.getT('/app/courseCollect/selectByUserId', data).then(res => {
uni.stopPullDownRefresh()
if (res.code == 0) {
if (res.code === 0) {
this.pages = res.data.pages
if (this.page < this.pages) {
this.status = 'loadmore'
} else {
this.status = 'nomore'
}
if (this.page == 1) {
if (this.page === 1) {
this.list = res.data.records
} else {
this.list = [...this.list, ...res.data.records]

View File

@ -79,14 +79,14 @@
}
this.$u.api.courseList(data).then(res => {
uni.stopPullDownRefresh()
if (res.code == 0) {
if (res.code === 0) {
this.pages = res.data.totalPage
if (this.page < this.pages) {
this.status = 'loadmore'
} else {
this.status = 'nomore'
}
if (this.page == 1) {
if (this.page === 1) {
this.jqList = res.data.list
} else {
this.jqList = [...this.jqList, ...res.data.list]

View File

@ -51,8 +51,8 @@
state: 5
}
this.$u.api.message(data).then(res => {
if (res.code == 0) {
if (this.page == 1) {
if (res.code === 0) {
if (this.page === 1) {
this.msgList = res.data.list
uni.stopPullDownRefresh();
return

View File

@ -128,7 +128,7 @@
},
{
imgurl: '/static/images/pay/lingqian.png',
name: '金支付',
name: '金支付',
payAway: 3
}
]
@ -138,7 +138,7 @@
if (checkIosPay === '是') {
this.payList = [{
imgurl: '/static/images/pay/lingqian.png',
name: '金支付',
name: '金支付',
payAway: 3
}]
this.payAway = 3
@ -155,7 +155,7 @@
},
{
imgurl: '/static/images/pay/lingqian.png',
name: '金支付',
name: '金支付',
payAway: 3
}
]
@ -166,7 +166,7 @@
// #ifdef MP-WEIXIN
this.payList = [{
imgurl: '/static/images/pay/lingqian.png',
name: '金支付',
name: '金支付',
payAway: 3
}]
this.payAway = 3
@ -181,7 +181,7 @@
},
{
imgurl: '/static/images/pay/lingqian.png',
name: '金支付',
name: '金支付',
payAway: 3
}
]
@ -194,7 +194,7 @@
},
{
imgurl: '/static/images/pay/lingqian.png',
name: '金支付',
name: '金支付',
payAway: 3
}
]
@ -209,7 +209,7 @@
},
{
imgurl: '/static/images/pay/lingqian.png',
name: '金支付',
name: '金支付',
payAway: 3
}
]
@ -225,7 +225,7 @@
},
{
imgurl: '/static/images/pay/lingqian.png',
name: '金支付',
name: '金支付',
payAway: 3
}
]
@ -233,7 +233,7 @@
} else {
this.payList = [{
imgurl: '/static/images/pay/lingqian.png',
name: '金支付',
name: '金支付',
payAway: 3
}]
this.payAway = 3
@ -385,7 +385,7 @@
}
})
} else {
switch (this.payAway) { //1:,2: 3:
switch (this.payAway) { //1:,2: 3:
case 1: //
// #ifdef MP-WEIXIN
that.$Request.postT("/app/wxPay/wxPayJsApiOrder", {

View File

@ -17,7 +17,6 @@
<button class="confirm-btn" @click="toLogin" :disabled="logining">立即换绑
</button>
</view>
</view>
</template>
<script>

View File

@ -21,28 +21,68 @@
<view>隐私协议</view>
<view><u-icon name="arrow-right"></u-icon></view>
</view>
<view class="flex justify-between padding bg-white solid-bottom" @click="goNav('/me/setting/logOff')">
<!-- <view class="flex justify-between padding bg-white solid-bottom" @click="goNav('/me/setting/logOff')">
<view>注销账号</view>
<view><u-icon name="arrow-right"></u-icon></view>
</view>
</view> -->
<!-- <view class="flex justify-between padding bg-white solid-bottom" @click="clearCache">
<view>清除缓存</view>
<view>{{cacheSize}}</view>
</view> -->
<view class="flex justify-between padding bg-white solid-bottom" @click="loginOut">
<view>退出登录</view>
<view><u-icon name="arrow-right"></u-icon></view>
</view>
<view class="version" style="position: absolute;bottom: 50rpx;left: 0;right: 0;margin: auto;text-align: center;color: #666;">{{ version }}版本</view>
</view>
</template>
<script>
import {cacheClearAll} from '@/store/cashe.js'
export default {
data() {
return {
version: null,
cacheSize:'0M'
}
},
onLoad() {
const systemInfo = uni.getSystemInfoSync();
//#ifdef APP-PLUS
this.version = systemInfo.appWgtVersion;
//#endif
// #ifdef H5
this.version = systemInfo.appVersion;
// #endif
console.log(this.version,'版本号');
// plus.runtime.getProperty(plus.runtime.appid, widgetInfo => {
// console.log(widgetInfo)
// this.version = widgetInfo.version
// })
const info= uni.getStorageInfoSync()
console.log(info);
const size=(info.currentSize/1024).toFixed(2)
this.cacheSize=size<1?(info.currentSize+'kb'):(size) +'M'
},
onShow() {
},
methods: {
clearCache(){
uni.showModal({
title:'提示',
content:`是否清除全部缓存
`,
success(res) {
if(res.confirm){
cacheClearAll()
const info= uni.getStorageInfoSync()
info.keys.map(v=>{
console.log(v);
})
}
}
})
},
goNav(e) {
uni.navigateTo({
url: e
@ -71,6 +111,7 @@
uni.removeStorageSync('zhiFuBao')
uni.removeStorageSync('zhiFuBaoName')
uni.removeStorageSync('isVIP')
cacheClearAll()
uni.showToast({
icon: 'none',
title: '退出登录成功'

View File

@ -1,21 +1,38 @@
<template>
<view style="font-size: 14px;line-height: 26px;padding: 32upx;" class="home1">
<view style="font-size: 14px;line-height: 26px;padding: 32upx;" class="home1 ">
<view style="font-size: 28upx;" v-html="content"></view>
<view class="btn-box u-flex u-row-center" v-if="!isLogin">
<view class="btn cancel" @click="cancel">拒绝</view>
<view class="btn" @click="back">同意</view>
</view>
</view>
</template>
<script>
export default {
data() {
return {
content:''
data() {
return {
content: '',
isLogin:false
}
},
},
onLoad() {
this.getGuize();
this.isLogin=uni.getStorageSync('token')?true:false
},
methods: {
getGuize(){
methods: {
cancel(){
// #ifdef H5
uni.navigateBack()
// #endif
// #ifdef APP
plus.runtime.quit();
// #endif
},
back(){
uni.navigateBack()
},
getGuize() {
this.$u.get('app/common/type/155').then(res => {
this.content = res.data.value
});
@ -24,8 +41,25 @@
}
</script>
<style>
page {
<style scoped>
.btn {
width: 100%;
height: 42px;
line-height: 42px;
border-radius: 30px;
background: #ff7581;
color: #ffffff;
text-align: center;
}
.btn-box{
gap: 20px;
padding: 30rpx 130rpx;
}
.cancel{
background-color: #eee;
color: #999;
}
page{
/* background: #1c1b20; */
}
</style>
</style>

View File

@ -1,6 +1,10 @@
<template>
<view style="line-height: 26px;padding: 32upx;" class="home1">
<view style="line-height: 26px;padding: 32upx;" class="home1 ">
<view style="font-size: 28upx;" v-html="content"></view>
<view class="btn-box u-flex u-row-center" v-if="!isLogin">
<view class="btn cancel" @click="cancel">拒绝</view>
<view class="btn" @click="back">同意</view>
</view>
</view>
</template>
@ -8,13 +12,26 @@
export default {
data() {
return {
content:''
content:'',
isLogin:false
}
},
onLoad() {
this.getGuize();
this.isLogin=uni.getStorageSync('token')?true:false
},
methods: {
cancel(){
// #ifdef H5
uni.navigateBack()
// #endif
// #ifdef APP
plus.runtime.quit();
// #endif
},
back(){
uni.navigateBack()
},
getGuize(){
// this.$Request.getT('/agreement/find?id=1').then(res =>{
// if(res.status === 0){
@ -30,7 +47,24 @@
}
</script>
<style>
<style scoped>
.btn {
width: 100%;
height: 42px;
line-height: 42px;
border-radius: 30px;
background: #ff7581;
color: #ffffff;
text-align: center;
}
.btn-box{
gap: 20px;
padding: 30rpx 130rpx;
}
.cancel{
background-color: #eee;
color: #999;
}
page{
/* background: #1c1b20; */
}

BIN
me/static/invite/bg1.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

BIN
me/static/invite/rule.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB

BIN
me/static/invite/title.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 38 KiB

BIN
me/static/invite/top-bg.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 385 KiB

View File

@ -5,14 +5,14 @@
<view class="money-top">
<image src="../../static/images/me/moneyBanner.png" mode=""></image>
<view class="money-top-title">
当前剩余金
当前剩余金
</view>
<view class="money-top-money">
{{formatNumber(moneyNum)}}
</view>
</view>
<view @click="goNav('/me/wallet/mingxi')" class="money-bto flex align-center justify-between">
明细
<view @click="goNav('/me/wallet/wallet_detail')" class="money-bto flex align-center justify-between">
明细
<u-icon name="arrow-right" color="#ff7581" size="40"></u-icon>
</view>
</view>
@ -41,7 +41,7 @@
</view>
</view>
<view class="moneycz-bom">
{{item.money}}<text v-if="item.giveMoney>0">+{{item.giveMoney}}赠豆</text>
{{item.money}}<text v-if="item.giveMoney>0">+{{item.giveMoney}}赠豆</text>
</view>
</view>
<u-radio :name="index"></u-radio>

View File

@ -10,15 +10,15 @@
</view>
<view class="list-box-time flex align-center justify-between">
{{item.createTime}}
<text>{{item.type==1?'+':'-'}}{{item.money}}</text>
<text>{{item.type===1?'+':'-'}}{{item.money}}</text>
</view>
</view>
</view>
<view v-if="list.length > 3" class="loadmore">
<view v-if="list.length > 3" class="loadMore">
<u-loadmore :status="status" />
</view>
<empty v-if="list.length==0" title="暂无明细" />
<empty v-if="list.length===0" title="暂无明细" />
<!-- 抖音im客服 -->
<ttMsg />
</view>
@ -66,14 +66,14 @@
}
this.$Request.getT('/app/moneyDetails/queryUserMoneyDetails', data).then(res => {
uni.stopPullDownRefresh()
if (res.code == 0) {
if (res.code === 0) {
this.pages = res.data.pages
if (this.page < this.pages) {
this.status = 'loadmore'
} else {
this.status = 'nomore'
}
if (this.page == 1) {
if (this.page === 1) {
this.list = res.data.records
} else {
this.list = [...this.list, ...res.data.records]
@ -123,7 +123,7 @@
}
}
.loadmore {
.loadMore {
margin: 20rpx 0;
}
</style>

View File

@ -5,14 +5,14 @@
<view class="money-top">
<image src="../../static/images/me/moneyBanner.png" mode=""></image>
<view class="money-top-title">
当前剩余金
当前剩余金
</view>
<view class="money-top-money">
{{formatNumber(moneyNum)}}
</view>
</view>
<view @click="goNav('/me/wallet/mingxi')" class="money-bto flex align-center justify-between">
明细
明细
<u-icon name="arrow-right" color="#6696ff" size="40"></u-icon>
</view>
</view>
@ -34,7 +34,7 @@
</view>
</view>
<view class="moneycz-bom">
{{item.money}}<text v-if="item.giveMoney>0">+{{item.giveMoney}}赠豆</text>
{{item.money}}<text v-if="item.giveMoney>0">+{{item.giveMoney}}赠豆</text>
</view>
</view>
<u-radio :name="index"></u-radio>

17
other/about/about.vue Normal file
View File

@ -0,0 +1,17 @@
<template>
<view>
关于我们
</view>
</template>
<script>
export default {
data() {
return {
}
}
}
</script>
<style lang="scss" scoped></style>

139
other/address/address.vue Normal file
View File

@ -0,0 +1,139 @@
<template>
<view>
<view class="item" v-for="(res, index) in siteList" :key="res.id">
<view class="top">
<view class="name">{{ res.name }}</view>
<view class="phone">{{ res.phone }}</view>
<view class="tag">
<text v-for="(item, index) in res.tag" :key="index" :class="{red:item.tagText=='默认'}">{{ item.tagText }}</text>
</view>
</view>
<view class="bottom">
广东省深圳市宝安区 自由路66号
<u-icon name="edit-pen" :size="40" color="#999999"></u-icon>
</view>
</view>
<view class="addSite" @tap="toAddSite">
<view class="add">
<u-icon name="plus" color="#ffffff" class="icon" :size="30"></u-icon>
</view>
</view>
</view>
</template>
<script>
export default {
data() {
return {
siteList: []
};
},
onLoad() {
this.getData();
},
methods: {
getData() {
this.siteList = [
{
id: 1,
name: '游X',
phone: '183****5523',
tag: [
{
tagText: '默认'
},
{
tagText: '家'
}
],
site: '广东省深圳市宝安区 自由路66号'
},
{
id: 2,
name: '李XX',
phone: '183****5555',
tag: [
{
tagText: '公司'
}
],
site: '广东省深圳市宝安区 翻身路xx号'
},
{
id: 3,
name: '王YY',
phone: '153****5555',
tag: [],
site: '广东省深圳市宝安区 平安路13号'
}
];
},
toAddSite(){
uni.navigateTo({
url: '/pages/template/address/addSite'
});
}
}
};
</script>
<style lang="scss" scoped>
.item {
padding: 40rpx 20rpx;
.top {
display: flex;
font-weight: bold;
font-size: 34rpx;
.phone {
margin-left: 60rpx;
}
.tag {
display: flex;
font-weight: normal;
align-items: center;
text {
display: block;
width: 60rpx;
height: 34rpx;
line-height: 34rpx;
color: #ffffff;
font-size: 20rpx;
border-radius: 6rpx;
text-align: center;
margin-left: 30rpx;
background-color:rgb(49, 145, 253);
}
.red{
background-color:red
}
}
}
.bottom {
display: flex;
margin-top: 20rpx;
font-size: 28rpx;
justify-content: space-between;
color: #999999;
}
}
.addSite {
display: flex;
justify-content: space-around;
width: 600rpx;
line-height: 100rpx;
position: absolute;
bottom: 30rpx;
left: 80rpx;
background-color: red;
border-radius: 60rpx;
font-size: 30rpx;
.add{
display: flex;
align-items: center;
color: #ffffff;
.icon{
margin-right: 10rpx;
}
}
}
</style>

1206
other/blogger/blogger.vue Normal file

File diff suppressed because it is too large Load Diff

800
other/blogger/details.vue Normal file
View File

@ -0,0 +1,800 @@
<template>
<view class="template-details tn-safe-area-inset-bottom">
<!-- 顶部自定义导航 -->
<tn-nav-bar fixed alpha customBack>
<view slot="back" class='tn-custom-nav-bar__back'
@click="goBack">
<text class='icon tn-icon-left'></text>
<text class='icon tn-icon-home-capsule-fill'></text>
</view>
</tn-nav-bar>
<view class="" :style="{paddingTop: vuex_custom_bar_height + 'px'}">
<!-- 图文信息 -->
<block v-for="(item,index) in content" :key="index">
<view class="blogger__item">
<view class="blogger__author tn-flex tn-flex-row-between tn-flex-col-center">
<view class="justify__author__info" @click="tn('/circlePages/blogger_other')">
<view class="tn-flex tn-flex-row-center">
<view class="tn-flex tn-flex-row-center tn-flex-col-center">
<view class="">
<tn-avatar
class=""
shape="circle"
:src="item.userAvatar"
size="lg">
</tn-avatar>
</view>
<view class="tn-padding-right tn-text-ellipsis">
<view class="tn-padding-right tn-padding-left-sm tn-text-bold tn-text-lg">{{ item.userName }}</view>
<view class="tn-padding-right tn-padding-left-sm tn-padding-top-xs tn-color-gray">{{ item.date }}</view>
</view>
</view>
</view>
</view>
<view class="blogger__author__btn justify-content-item tn-flex-col-center tn-flex-row-center">
<!-- 既然都点到详情里面了加个关注按钮呗 -->
<text class="tn-bg-brown--light tn-round tn-text-df tn-text-bold tn-color-brown" style="padding: 10rpx 24rpx;">+ 关注</text>
</view>
</view>
<view class="blogger__desc tn-margin-top-sm tn-margin-bottom-sm tn-text-justify tn-flex-col-center tn-flex-row-left">
<view v-for="(label_item,label_index) in item.label" :key="label_index" class="blogger__desc__label tn-float-left tn-margin-right tn-bg-gray--light tn-round tn-text-sm tn-text-bold">
<text class="blogger__desc__label--prefix">#</text>
<text class="tn-text-df">{{ label_item }}</text>
</view>
<!-- 不用限制长度了因为发布的时候限制长度了-->
<text v-if="!item.label || item.label.length < 4" class="blogger__desc__content tn-flex-1 tn-text-justify tn-text-df">{{ item.desc }}</text>
</view>
<!-- 内容太多疲劳了-->
<!-- <view
v-if="item.content"
class="blogger__content"
:id="`blogger__content--${index}`"
>
<view
class="blogger__content__data clamp-text-2">
{{ item.content }}
</view>
</view> -->
<block v-if="item.mainImage">
<view v-if="[1,2,4].indexOf(item.mainImage.length) != -1" class="tn-padding-top-xs">
<image v-for="(image_item,image_index) in item.mainImage" :key="image_index"
class="blogger__main-image"
:class="{
'blogger__main-image--1 tn-margin-bottom-sm': item.mainImage.length === 1,
'blogger__main-image--2 tn-margin-right-sm tn-margin-bottom-sm': item.mainImage.length === 2 || item.mainImage.length === 4
}"
:src="image_item"
mode="aspectFill"
></image>
</view>
<view v-else class="tn-padding-top-xs">
<tn-grid hoverClass="none" :col="3">
<block v-for="(image_item,image_index) in item.mainImage" :key="image_index">
<!-- #ifndef MP-WEIXIN -->
<tn-grid-item style="width: 30%;margin: 10rpx;">
<image
class="blogger__main-image blogger__main-image--3"
:src="image_item"
mode="aspectFill"
></image>
</tn-grid-item>
<!-- #endif-->
<!-- #ifdef MP-WEIXIN -->
<tn-grid-item style="width: 30%;margin: 10rpx;">
<image
class="blogger__main-image blogger__main-image--3"
:src="image_item"
mode="aspectFill"
></image>
</tn-grid-item>
<!-- #endif-->
</block>
</tn-grid>
</view>
</block>
<view class="tn-flex tn-flex-row-between tn-flex-col-center tn-margin-top-xs">
<view class="justify-content-item tn-flex tn-flex-col-center">
<view style="margin-right: 10rpx;">
<tn-avatar-group :lists="item.viewUser.latestUserAvatar" size="sm"></tn-avatar-group>
</view>
<text class="tn-color-gray">{{ item.viewUser.viewUserCount }}</text>
</view>
<view class="justify-content-item tn-color-gray tn-text-center">
<view class="">
<text class="blogger__count-icon tn-icon-footprint"></text>
<text class="tn-padding-right">{{ item.collectionCount }}</text>
<text class="blogger__count-icon tn-icon-message"></text>
<text class="tn-padding-right">{{ item.commentCount }}</text>
<text class="blogger__count-icon tn-icon-like"></text>
<text class="">{{ item.likeCount }}</text>
</view>
</view>
</view>
</view>
<!-- 边距间隔 -->
<!-- <view class="tn-strip-bottom" v-if="index != content.length - 1"></view> -->
</block>
<!-- 按钮-->
<view class="tn-flex tn-flex-row-between" style="margin: 40rpx 0 60rpx 0;">
<view class="tn-flex-1 justify-content-item tn-margin-xs tn-text-center">
<tn-button backgroundColor="#00FFC6" padding="40rpx 0" width="90%" shadow fontBold>
<text class="tn-icon-like-lack tn-padding-right-xs tn-color-black"></text>
<text class="tn-color-black"> </text>
</tn-button>
</view>
<view class="tn-flex-1 justify-content-item tn-margin-xs tn-text-center">
<tn-button backgroundColor="#FFF00D" padding="40rpx 0" width="90%" shadow fontBold open-type="share">
<text class="tn-icon-share-triangle tn-padding-right-xs tn-color-black"></text>
<text class="tn-color-black"> </text>
</tn-button>
</view>
</view>
</view>
<!-- 评论 -->
<view class="tn-margin" style="padding-bottom: 120rpx;">
<!-- 图标logo/头像 -->
<view class="tn-flex tn-flex-row-between tn-flex-col-center tn-margin-top-xl" @click="tn('/circlePages/blogger_other')">
<view class="justify-content-item">
<view class="tn-flex tn-flex-col-center tn-flex-row-left">
<view class="logo-pic tn-shadow">
<view class="logo-image">
<view class="tn-shadow-blur" style="background-image:url('https://resource.tuniaokj.com/images/blogger/avatar_4.jpeg');width: 60rpx;height: 60rpx;background-size: cover;">
</view>
</view>
</view>
<view class="tn-padding-right tn-padding-left-sm">
<view class="tn-padding-right tn-text-df tn-text-bold tn-color-black">
抓住那只高产母猪
</view>
<view class="tn-padding-right tn-text-ellipsis tn-text-xs tn-color-gray" style="padding-top: 5rpx;">
2024年5月26日
</view>
</view>
</view>
</view>
<view class="justify-content-item tn-flex-row-center tn-flex-col-center tn-color-gray">
<view class="tn-text-center">
<text class="tn-icon-like-lack tn-padding-xs"></text>
</view>
<view class="tn-text-center">
<text class="tn-text-xs">26</text>
</view>
</view>
</view>
<view class="" style="margin: 20rpx 30rpx 30rpx 80rpx;">
求打卡地点
</view>
<view class="tn-bg-gray--light tn-padding-sm" style="margin: 20rpx 30rpx 30rpx 80rpx;border-radius: 10rpx;">
<text class="tn-text-bold tn-padding-right-xs">博主回复: </text>
<text style="line-height: 40rpx;">保密</text>
<view class="tn-flex tn-flex-row-between tn-margin-top-xs">
<view class="justify-content-item tn-text-xs tn-color-gray" style="padding-top: 5rpx;">
2024年5月26日
</view>
<view class="justify-content-item tn-text-xs tn-color-gray">
<text class="tn-padding-xs">16</text>
<text class="tn-icon-like-lack"></text>
</view>
</view>
</view>
<!-- 评论2-->
<!-- 图标logo/头像 -->
<view class="tn-flex tn-flex-row-between tn-flex-col-center tn-margin-top-xl" @click="tn('/circlePages/blogger_other')">
<view class="justify-content-item">
<view class="tn-flex tn-flex-col-center tn-flex-row-left">
<view class="logo-pic tn-shadow">
<view class="logo-image">
<view class="tn-shadow-blur" style="background-image:url('https://resource.tuniaokj.com/images/blogger/avatar_3.jpeg');width: 60rpx;height: 60rpx;background-size: cover;">
</view>
</view>
</view>
<view class="tn-padding-right tn-padding-left-sm">
<view class="tn-padding-right tn-text-df tn-text-bold tn-color-black">
北染陌人
</view>
<view class="tn-padding-right tn-text-ellipsis tn-text-xs tn-color-gray" style="padding-top: 5rpx;">
2024年5月25日
</view>
</view>
</view>
</view>
<view class="justify-content-item tn-flex-row-center tn-flex-col-center tn-color-gray">
<view class="tn-text-center">
<text class="tn-icon-like-lack tn-padding-xs"></text>
</view>
<view class="tn-text-center">
<text class="tn-text-xs">68</text>
</view>
</view>
</view>
<view class="" style="margin: 20rpx 30rpx 30rpx 80rpx;">
求摄影师微信谢谢
</view>
<!-- 评论3-->
<!-- 图标logo/头像 -->
<view class="tn-flex tn-flex-row-between tn-flex-col-center tn-margin-top-xl" @click="tn('/circlePages/blogger_other')">
<view class="justify-content-item">
<view class="tn-flex tn-flex-col-center tn-flex-row-left">
<view class="logo-pic tn-shadow">
<view class="logo-image">
<view class="tn-shadow-blur" style="background-image:url('https://resource.tuniaokj.com/images/blogger/avatar_2.jpeg');width: 60rpx;height: 60rpx;background-size: cover;">
</view>
</view>
</view>
<view class="tn-padding-right tn-padding-left-sm">
<view class="tn-padding-right tn-text-df tn-text-bold tn-color-black">
原来是吖释鸭
</view>
<view class="tn-padding-right tn-text-ellipsis tn-text-xs tn-color-gray">
2024年5月25日
</view>
</view>
</view>
</view>
<view class="justify-content-item tn-flex-row-center tn-flex-col-center tn-color-gray">
<view class="tn-text-center">
<text class="tn-icon-like-lack tn-padding-xs"></text>
</view>
<view class="tn-text-center">
<text class="tn-text-xs">43</text>
</view>
</view>
</view>
<view class="" style="margin: 20rpx 30rpx 30rpx 80rpx;">
吃瓜群众到此一游阿巴阿巴
</view>
</view>
<view class="tabbar footerfixed dd-glass">
<view class="tn-flex tn-flex-row-between tn-flex-col-center">
<view class="justify-content-item tn-margin-top">
<view class="tn-flex tn-flex-row-center tn-flex-col-center">
<!-- <view class="tn-flex tn-flex-row-center tn-padding-right tn-padding-left">
<text class="tn-icon-emoji-good tn-text-xxl"></text>
</view> -->
<view class="tn-flex tn-flex-row-center tn-flex-col-center tn-padding-right tn-padding-left-sm">
<view class="avatar-all">
<view class="tn-shadow-blur" style="background-image:url('https://resource.tuniaokj.com/images/blogger/onepiece-1.jpg');width: 60rpx;height: 60rpx;background-size: cover;">
</view>
</view>
</view>
<view class="topic__info__item__input tn-flex tn-flex-direction-row tn-flex-nowrap tn-flex-col-center tn-flex-row-left">
<view class="topic__info__item__input__left-icon">
<view class="tn-icon-emoji-good"></view>
</view>
<view class="topic__info__item__input__content">
<input maxlength="20" placeholder-class="input-placeholder" :cursor-spacing="18" placeholder="不说点啥子吗?" />
</view>
</view>
</view>
</view>
<view class="justify-content-item tn-flex-row-center tn-flex-col-center tn-margin-top tn-margin-right">
<view class="topic__info__item__sure">
<view class="tn-flex-1 justify-content-item tn-text-center">
<tn-button shape="round" backgroundColor="tn-cool-bg-color-15--reverse" width="100%" shadow>
<text class="tn-color-white" hover-class="tn-hover" :hover-stay-time="150">
</text>
</tn-button>
</view>
</view>
</view>
</view>
</view>
</view>
</template>
<script>
import template_page_mixin from '@/libs/mixin/template_page_mixin.js'
export default {
name: 'TemplateDetails',
mixins: [template_page_mixin],
data(){
return {
content: [
/* {
userAvatar: 'https://resource.tuniaokj.com/images/blogger/avatar_4.jpeg',
userName: '可我会像',
date: '2024年5月20日',
label: ['追剧达人','重生粉','UI框架'],
desc: '追剧比追人要轻松多了助你开发酷炫UI一臂之力',
content: '基础常用的布局元素,酷炫完善的配色体系,统一可增的图标 icon ,简便调用的功能组件,酷炫的前端页面,吖,编不下去了',
viewUser: {
latestUserAvatar: [
{src: 'https://resource.tuniaokj.com/images/blogger/avatar_1.jpeg'},
{src: 'https://resource.tuniaokj.com/images/blogger/avatar_2.jpeg'},
{src: 'https://resource.tuniaokj.com/images/blogger/avatar_3.jpeg'},
{src: 'https://resource.tuniaokj.com/images/blogger/avatar_4.jpeg'},
],
viewUserCount: 62
},
collectionCount: 439,
commentCount: 46,
likeCount: 83
},
{
userAvatar: 'https://resource.tuniaokj.com/images/blogger/avatar_1.jpeg',
userName: '可我会像',
date: '2024年5月20日',
label: ['追剧达人','重生粉','UI框架'],
desc: '追剧比追人要轻松多了助你开发酷炫UI一臂之力',
content: '基础常用的布局元素,酷炫完善的配色体系,统一可增的图标 icon ,简便调用的功能组件,酷炫的前端页面,吖,编不下去了',
mainImage:[
'https://resource.tuniaokj.com/images/blogger/content_1.jpeg'
],
viewUser: {
latestUserAvatar: [
{src: 'https://resource.tuniaokj.com/images/blogger/avatar_1.jpeg'},
{src: 'https://resource.tuniaokj.com/images/blogger/avatar_3.jpeg'},
{src: 'https://resource.tuniaokj.com/images/blogger/avatar_2.jpeg'},
{src: 'https://resource.tuniaokj.com/images/blogger/avatar_4.jpeg'},
],
viewUserCount: 12
},
collectionCount: 902,
commentCount: 64,
likeCount: 83
},
{
userAvatar: 'https://resource.tuniaokj.com/images/blogger/avatar_2.jpeg',
userName: '可我会像',
date: '2024年5月20日',
label: [],
desc: '',
content: '',
mainImage:[
'https://resource.tuniaokj.com/images/shop/computer2.jpg',
'https://resource.tuniaokj.com/images/shop/prototype2.jpg',
],
viewUser: {
latestUserAvatar: [
{src: 'https://resource.tuniaokj.com/images/blogger/avatar_4.jpeg'},
{src: 'https://resource.tuniaokj.com/images/blogger/avatar_2.jpeg'},
{src: 'https://resource.tuniaokj.com/images/blogger/avatar_3.jpeg'},
{src: 'https://resource.tuniaokj.com/images/blogger/avatar_1.jpeg'},
],
viewUserCount: 56
},
collectionCount: 431,
commentCount: 26,
likeCount: 84
},
{
userAvatar: 'https://resource.tuniaokj.com/images/blogger/avatar_3.jpeg',
userName: '可我会像',
date: '2024年5月20日',
label: ['追剧达人','重生粉'],
desc: '追剧比追人要轻松多了',
content: '基础常用的布局元素,酷炫完善的配色体系,统一可增的图标 icon ,简便调用的功能组件,酷炫的前端页面,吖,编不下去了 基础常用的布局元素,酷炫完善的配色体系,统一可增的图标 icon ,简便调用的功能组件,酷炫的前端页面,吖,编不下去了',
mainImage:[
'https://resource.tuniaokj.com/images/swiper/swiper2.jpg',
'https://resource.tuniaokj.com/images/swiper/swiper3.jpg',
'https://resource.tuniaokj.com/images/swiper/swiper4.jpg',
],
viewUser: {
latestUserAvatar: [
{src: 'https://resource.tuniaokj.com/images/blogger/avatar_1.jpeg'},
{src: 'https://resource.tuniaokj.com/images/blogger/avatar_4.jpeg'},
{src: 'https://resource.tuniaokj.com/images/blogger/avatar_2.jpeg'},
{src: 'https://resource.tuniaokj.com/images/blogger/avatar_3.jpeg'},
],
viewUserCount: 231
},
collectionCount: 780,
commentCount: 89,
likeCount: 82
},
{
userAvatar: 'https://resource.tuniaokj.com/images/blogger/content_1.jpeg',
userName: '可我会像',
date: '2024年5月20日',
label: ['追剧达人','链接'],
desc: 'https://www.yuque.com/tuniao',
mainImage:[
'https://resource.tuniaokj.com/images/shop/watch1.jpg',
'https://resource.tuniaokj.com/images/shop/watch2.jpg',
'https://resource.tuniaokj.com/images/shop/pillow2.jpg',
'https://resource.tuniaokj.com/images/shop/pillow.jpg',
],
viewUser: {
latestUserAvatar: [
{src: 'https://resource.tuniaokj.com/images/blogger/avatar_2.jpeg'},
{src: 'https://resource.tuniaokj.com/images/blogger/avatar_1.jpeg'},
{src: 'https://resource.tuniaokj.com/images/blogger/avatar_4.jpeg'},
{src: 'https://resource.tuniaokj.com/images/blogger/avatar_3.jpeg'},
],
viewUserCount: 28
},
collectionCount: 432,
commentCount: 33,
likeCount: 12
}, */
{
userAvatar: 'https://resource.tuniaokj.com/images/blogger/blogger_beibei.jpg',
userName: '可我会像',
date: '2024年5月20日',
label: ['追剧达人','重生粉'],
desc: '追剧比追人要轻松多了',
mainImage:[
'https://resource.tuniaokj.com/images/blogger/y11.jpg',
'https://resource.tuniaokj.com/images/blogger/y33.jpg',
'https://resource.tuniaokj.com/images/blogger/y22.jpg',
'https://resource.tuniaokj.com/images/blogger/y44.jpg',
'https://resource.tuniaokj.com/images/blogger/y55.jpg',
],
viewUser: {
latestUserAvatar: [
{src: 'https://resource.tuniaokj.com/images/blogger/avatar_4.jpeg'},
{src: 'https://resource.tuniaokj.com/images/blogger/avatar_3.jpeg'},
{src: 'https://resource.tuniaokj.com/images/blogger/avatar_2.jpeg'},
{src: 'https://resource.tuniaokj.com/images/blogger/avatar_1.jpeg'},
],
viewUserCount: 65
},
collectionCount: 265,
commentCount: 22,
likeCount: 102
}
],
}
},
methods: {
//
tn(e) {
uni.navigateTo({
url: e,
});
},
}
}
</script>
<style lang="scss" scoped>
/* 胶囊*/
.tn-custom-nav-bar__back {
width: 100%;
height: 100%;
position: relative;
display: flex;
justify-content: space-evenly;
align-items: center;
box-sizing: border-box;
background-color: rgba(0, 0, 0, 0.15);
border-radius: 1000rpx;
border: 1rpx solid rgba(255, 255, 255, 0.5);
color: #FFFFFF;
font-size: 18px;
.icon {
display: block;
flex: 1;
margin: auto;
text-align: center;
}
&:before {
content: " ";
width: 1rpx;
height: 110%;
position: absolute;
top: 22.5%;
left: 0;
right: 0;
margin: auto;
transform: scale(0.5);
transform-origin: 0 0;
pointer-events: none;
box-sizing: border-box;
opacity: 0.7;
background-color: #FFFFFF;
}
}
/* 文章内容 start*/
.blogger {
&__item {
padding: 30rpx;
}
&__author {
&__btn {
margin-right: -12rpx;
padding: 0 20rpx;
}
}
&__desc {
line-height: 55rpx;
&__label {
padding: 0 20rpx;
margin: 0rpx 18rpx 0 0;
&--prefix {
color: #00FFC8;
padding-right: 10rpx;
}
}
&__content {
}
}
&__content {
margin-top: 18rpx;
padding-right: 18rpx;
&__data {
line-height: 46rpx;
text-align: justify;
overflow: hidden;
transition: all 0.25s ease-in-out;
}
&__status {
margin-top: 10rpx;
font-size: 26rpx;
color: #82B2FF;
}
}
&__main-image {
border-radius: 16rpx;
&--1 {
max-width: 80%;
max-height: 300rpx;
}
&--2 {
max-width: 260rpx;
max-height: 260rpx;
}
&--3 {
height: 212rpx;
width: 100%;
}
}
&__count-icon {
font-size: 40rpx;
padding-right: 5rpx;
}
&__ad {
width: 100%;
height: 500rpx;
transform: translate3d(0px, 0px, 0px) !important;
::v-deep .uni-swiper-slide-frame {
transform: translate3d(0px, 0px, 0px) !important;
}
.uni-swiper-slide-frame {
transform: translate3d(0px, 0px, 0px) !important;
}
&__item {
position: absolute;
width: 100%;
height: 100%;
transform-origin: left center;
transform: translate3d(100%, 0px, 0px) scale(1) !important;
transition: transform 0.25s ease-in-out;
z-index: 1;
&--0 {
transform: translate3d(0%, 0px, 0px) scale(1) !important;
z-index: 4;
}
&--1 {
transform: translate3d(13%, 0px, 0px) scale(0.9) !important;
z-index: 3;
}
&--2 {
transform: translate3d(26%, 0px, 0px) scale(0.8) !important;
z-index: 2;
}
}
&__content {
border-radius: 40rpx;
width: 640rpx;
height: 500rpx;
overflow: hidden;
}
&__image {
width: 100%;
height: 100%;
}
}
}
/* 文章内容 end*/
/* 间隔线 start*/
.tn-strip-bottom {
width: 100%;
border-bottom: 20rpx solid rgba(241, 241, 241, 0.8);
}
/* 间隔线 end*/
/* 头像 start */
.logo-image {
width: 60rpx;
height: 60rpx;
position: relative;
}
.logo-pic {
background-size: cover;
background-repeat: no-repeat;
// background-attachment:fixed;
background-position: top;
box-shadow: 0rpx 0rpx 80rpx 0rpx rgba(0, 0, 0, 0.15);
border-radius: 50%;
overflow: hidden;
// background-color: #FFFFFF;
}
/* 底部 start*/
.footerfixed{
position: fixed;
width: 100%;
bottom: 0;
z-index: 999;
background-color: rgba(255,255,255,0.5);
box-shadow: 0rpx 0rpx 30rpx 0rpx rgba(0, 0, 0, 0.07);
}
.tabbar {
align-items: center;
min-height: 130rpx;
padding: 0;
height: calc(130rpx + env(safe-area-inset-bottom) / 2);
padding-bottom: calc(30rpx + env(safe-area-inset-bottom) / 2);
padding-left: 10rpx;
padding-right: 10rpx;
}
/* 毛玻璃*/
.dd-glass {
width: 100%;
backdrop-filter: blur(20rpx);
-webkit-backdrop-filter: blur(20rpx);
}
/* 头像*/
.avatar-all {
width: 60rpx;
height: 60rpx;
border: 4rpx solid rgba(255,255,255,0.05);
border-radius: 50%;
overflow: hidden;
box-shadow: 0rpx 0rpx 80rpx 0rpx rgba(0, 0, 0, 0.15);
}
/* 内容*/
.topic {
position: relative;
height: 100%;
z-index: 1;
margin-bottom: 120rpx;
/* 表单信息 start */
&__info {
margin: 0 50rpx;
margin-top: 105rpx;
padding: 30rpx 51rpx;
border-radius: 20rpx;
background-color: rgba(255,255,255,1);
border: 2rpx solid rgba(255, 255, 255, 0.1);
box-shadow: 0rpx 10rpx 50rpx 0rpx rgba(0, 3, 72, 0.1);
&__item {
&__input {
width: 400rpx;
height: 60rpx;
border: 1rpx solid #C6D1D8;
border-radius: 39rpx;
&__left-icon {
width: 10%;
font-size: 44rpx;
margin-left: 20rpx;
margin-right: 5rpx;
color: #C6D1D8;
}
&__content {
width: 80%;
padding-left: 10rpx;
&--verify-code {
width: 56%;
}
input {
font-size: 30rpx;
color: #78909C;
// letter-spacing: 0.1em;
}
}
&__right-icon {
width: 10%;
font-size: 34rpx;
margin-right: 20rpx;
color: #78909C;
}
&__right-verify-code {
width: 34%;
margin-right: 20rpx;
}
}
&__button {
width: 100%;
height: 60rpx;
text-align: center;
font-size: 31rpx;
font-weight: bold;
line-height: 77rpx;
// text-indent: 1em;
border-radius: 100rpx;
color: #FFFFFF;
background-color: rgba(255,255,255,0.2);
// border: 2rpx solid #FFFFFF;
}
&__sure {
height: 60rpx;
width: 140rpx;
}
}
}
/* 表单信息 end */
/* 内容 end */
}
/deep/.input-placeholder {
font-size: 30rpx;
color: #C6D1D8;
}
</style>

374
other/coup/coup.vue Normal file
View File

@ -0,0 +1,374 @@
<template>
<view class="u-wrap">
<view class="meituan">
<view class="content">
<view class="left">
<view class="sum">
<text class="num">8</text>
</view>
<view class="type">抵用券</view>
</view>
<view class="centre">
<view class="title">洗牙8元无门槛红包</view>
<view class="valid-date">今日到期</view>
</view>
<view class="right">
<view size="mini" class="immediate-use" :round="true">立即使用</view>
</view>
</view>
<view class="tips">
<view class="circle-left"></view>
<view class="circle-right"></view>
<view class="explain u-line-1">满8.1元可用限最新版本客户端使用</view>
<view class="rule u-line-1" @tap="xxx122">
<text>使用规则</text>
<u-icon name="arrow-right" color="" :size="20" @click=""></u-icon>
</view>
</view>
</view>
<view class="jingdong">
<view class="left">
<view class="sum">
<text class="num">100</text>
</view>
<view class="type">满149元可用</view>
</view>
<view class="right">
<view class="top">
<view class="title">
<text class="tag">限品类东券</text>
<text>仅可购买个人护理部分商品</text>
</view>
<view class="bottom">
<view class="date u-line-1">2020.01.01-2020.01.31</view>
<view class="immediate-use">立即使用</view>
</view>
</view>
<view class="tips">
<view class="explain">
<u-icon name="zhuanfa" class="transpond" :size="24"></u-icon>
<text>可赠送</text>
</view>
</view>
</view>
</view>
<view class="taobao">
<view class="title">
<view class="left">
<image class="buddha" src="https://ss0.bdstatic.com/70cFuHSh_Q1YnxGkpoWK1HF6hhy/it/u=1975388697,1068670603&fm=26&gp=0.jpg" mode="aspectFill"></image>
<view class="store">袜子精保护协会</view>
</view>
<view class="entrance">进店</view>
</view>
<view class="ticket">
<view class="left">
<image
class="picture"
src="https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1578059523488&di=5f592ac19c1b983005d3e85add469756&imgtype=0&src=http%3A%2F%2Fimg010.hc360.cn%2Fg7%2FM00%2F2D%2FB9%2FwKhQs1QfUo6EdeM-AAAAALwk1hM072.jpg"
mode="widthFix"
></image>
<view class="introduce">
<view class="top">
<text class="big">3</text>
满88减3
</view>
<view class="type">店铺优惠券</view>
<view class="date u-line-1">2019.11.28-2020.1.24</view>
</view>
</view>
<view class="right">
<view class="use immediate-use" :round="true">去使用</view>
</view>
</view>
</view>
</view>
</template>
<script>
export default {
};
</script>
<style lang="scss" scoped>
page {
height: 100%;
background-color: rgb(244, 244, 244);
}
.u-wrap {
padding: 24rpx;
}
.meituan {
margin: 30rpx auto;
background-color: #ffffff;
width: 700rpx;
// border: 10rpx;
color: $u-type-warning;
font-size: 28rpx;
.content {
display: flex;
align-items: center;
padding: 80rpx 20rpx;
border: 10rpx;
background-color: #fff5f4;
.left {
.sum {
font-size: 32rpx;
.num {
font-size: 60rpx;
font-weight: bold;
}
}
}
.centre {
margin-left: 40rpx;
.title {
font-size: 32rpx;
font-weight: bold;
color: $u-main-color;
margin-bottom: 20rpx;
}
}
.right {
margin-left: 30rpx;
.immediate-use {
padding: 0 20rpx;
height: 50rpx;
border-radius: 25rpx;
line-height: 50rpx;
background-color: $u-type-warning!important;
color: #ffffff!important;
font-size: 24rpx;
border: none;
word-break: keep-all;
}
}
}
.tips {
padding: 0 20rpx;
border: 10rpx;
background-color: $u-type-info-light;
position: relative;
color: $u-tips-color;
display: flex;
justify-content: space-between;
line-height: 60rpx;
font-size: 24rpx;
.circle-left,
.circle-right {
position: absolute;
height: 36rpx;
width: 18rpx;
background-color: #f2f2f2;
}
.circle-right {
border-radius: 40rpx 0 0 40rpx;
right: 0;
top: -18rpx;
}
.circle-left {
border-radius: 0 40rpx 40rpx 0;
left: 0;
top: -18rpx;
}
.rule {
font-size: 24rpx;
display: flex;
align-items: center;
text {
margin-right: 10rpx;
flex: 1;
}
}
}
}
.jingdong {
margin-top: 40rpx;
width: 700rpx;
height: auto;
background-color: #ffffff;
display: flex;
.left {
padding: 0 30rpx;
background-color: rgb(95, 148, 224); //rgb(94, 152, 225);
text-align: center;
font-size: 28rpx;
color: #ffffff;
.sum {
margin-top: 50rpx;
font-weight: bold;
font-size: 32rpx;
.num {
font-size: 80rpx;
}
}
.type {
margin-bottom: 50rpx;
font-size: 24rpx;
}
}
.right {
padding: 20rpx 20rpx 0;
font-size: 28rpx;
.top {
border-bottom: 2rpx dashed $u-border-color;
.title {
margin-right: 60rpx;
line-height: 40rpx;
.tag {
padding: 4rpx 20rpx;
background-color: rgb(73, 154, 201);
border-radius: 20rpx;
color: #ffffff;
font-weight: bold;
font-size: 24rpx;
margin-right: 10rpx;
}
}
.bottom {
display: flex;
margin-top: 20rpx;
align-items: center;
justify-content: space-between;
margin-bottom: 10rpx;
.date {
font-size: 20rpx;
flex: 1;
}
.immediate-use {
height: auto;
padding: 0 20rpx;
font-size: 24rpx;
border-radius: 40rpx;
line-height: 40rpx;
color: rgb(117, 142, 165);
border: 2rpx solid rgb(117, 142, 165);
}
}
}
.tips {
width: 100%;
line-height: 50rpx;
display: flex;
align-items: center;
justify-content: space-between;
font-size: 24rpx;
.transpond {
margin-right: 10rpx;
}
.explain {
display: flex;
align-items: center;
}
.particulars {
width: 30rpx;
height: 30rpx;
box-sizing: border-box;
padding-top: 8rpx;
border-radius: 50%;
background-color: $u-type-info-disabled;
text-align: center;
}
}
}
}
.taobao {
margin-top: 40rpx;
width: 700rpx;
background-color: white;
padding: 30rpx 20rpx 20rpx;
border-radius: 20rpx;
.title {
display: flex;
align-items: center;
justify-content: space-between;
margin-bottom: 20rpx;
font-size: 30rpx;
.left {
display: flex;
align-items: center;
}
.store {
font-weight: 500;
}
.buddha {
width: 70rpx;
height: 70rpx;
border-radius: 10rpx;
margin-right: 10rpx;
}
.entrance {
color: $u-type-info;
border: solid 2rpx $u-type-info;
line-height: 48rpx;
padding: 0 30rpx;
background: none;
border-radius: 15px;
}
}
.ticket {
display: flex;
.left {
width: 70%;
padding: 30rpx 20rpx;
background-color: rgb(255, 245, 244);
border-radius: 20rpx;
border-right: dashed 2rpx rgb(224, 215, 211);
display: flex;
.picture {
width: 172rpx;
border-radius: 20rpx;
}
.introduce {
margin-left: 10rpx;
.top{
color:$u-type-warning;
font-size: 28rpx;
.big{
font-size: 60rpx;
font-weight: bold;
margin-right: 10rpx;
}
}
.type{
font-size: 28rpx;
color: $u-type-info-dark;
}
.date{
margin-top: 10rpx;
font-size: 20rpx;
color: $u-type-info-dark;
}
}
}
.right {
width: 30%;
padding: 40rpx 20rpx;
background-color: rgb(255, 245, 244);
border-radius: 20rpx;
display: flex;
align-items: center;
.use{
height: auto;
padding: 0 20rpx;
font-size: 24rpx;
border-radius: 40rpx;
color: #ffffff!important;
background-color: $u-type-warning!important;
line-height: 40rpx;
color: rgb(117, 142, 165);
margin-left: 20rpx;
}
}
}
}
</style>

1042
other/index/index.vue Normal file

File diff suppressed because it is too large Load Diff

113
other/pay/pay.vue Normal file
View File

@ -0,0 +1,113 @@
<template>
<view>
<view class="u-padding-40">
<u-button type="success" @click="showPop(true)">
<u-icon name="red-packet"></u-icon>
<text class="u-padding-left-10">发送1.00元红包</text>
</u-button>
</view>
<u-keyboard
default=""
ref="uKeyboard"
mode="number"
:mask="true"
:mask-close-able="false"
:dot-enabled="false"
v-model="show"
:safe-area-inset-bottom="true"
:tooltip="false"
@change="onChange"
@backspace="onBackspace">
<view>
<view class="u-text-center u-padding-20 money">
<text>1.00</text>
<text class="u-font-20 u-padding-left-10"></text>
<view class="u-padding-10 close" data-flag="false" @tap="showPop(false)">
<u-icon name="close" color="#333333" size="28"></u-icon>
</view>
</view>
<view class="u-flex u-row-center">
<u-message-input
mode="box"
:maxlength="6"
:dot-fill="true"
v-model="password"
:disabled-keyboard="true"
@finish="finish"
></u-message-input>
</view>
<view class="u-text-center u-padding-top-10 u-padding-bottom-20 tips">支付键盘</view>
</view>
</u-keyboard>
</view>
</template>
<script>
export default {
data() {
return {
show:false,
password:''
}
},
onLoad() {
},
methods: {
onChange(val){
if(this.password.length<6){
this.password += val;
}
if(this.password.length>=6){
this.pay();
}
},
onBackspace(e){
if(this.password.length>0){
this.password = this.password.substring(0,this.password.length-1);
}
},
pay(){
uni.showLoading({
title:'支付中'
})
setTimeout(()=>{
uni.hideLoading();
this.show = false;
uni.showToast({
icon:'success',
title:'支付成功'
})
},2000);
},
showPop(flag = true){
this.password = '';
this.show = flag;
},
finish(){
console.log(11111)
}
}
}
</script>
<style lang="scss">
.money{
font-size: 80rpx;
color: $u-type-warning;
position: relative;
.close{
position: absolute;
top: 20rpx;
right: 20rpx;
line-height: 28rpx;
font-size: 28rpx;
}
}
.tips{
color:$u-tips-color;
}
</style>

View File

@ -0,0 +1,163 @@
<template>
<view>
<u-popup v-model="show" mode="center" @close="close">
<view class="bg">
<view class="title">恭喜您获得</view>
<view class="goods">
<template v-if="result&&result.type==3">
<view class="u-flex u-col-center u-row-center">
<image style="height: 100px;" :src="result.img" mode="heightFix"></image>
</view>
<view class="u-flex u-row-center u-m-t-30">
<view class="type">{{result.name}}</view>
</view>
</template>
<template v-if="result&&result.type==2">
<view class="u-flex color-money u-col-center u-row-center">
<view class="money">{{result.number}}</view>
<view class="font-bold " style="margin-top: 20rpx;font-size: 36rpx;"></view>
</view>
<view class="u-flex u-m-t-24 u-row-center">
<view class="type">现金红包</view>
</view>
</template>
</view>
<view class="u-flex close u-row-center">
<u-icon name="close-circle" :size="54" @click="close" color="#fff"></u-icon>
</view>
</view>
</u-popup>
</view>
</template>
<script>
export default {
data() {
return {
show: false,
result: ''
}
},
methods: {
open(data) {
console.log(data);
this.result = data
this.show = true
},
close() {
console.log('抽奖弹窗关闭');
this.show = false
// if(!this.result){
// return
// }
// const {
// orderId,
// id
// } = this.result
// this.$Request.postJson('app/discSpinning/receive', this.result).then(res => {
// this.result = ''
// console.log(res)
// if (res.code == 0) {
// console.log('');
// const key=res.data==0?'isBindAliPay':undefined
// this.$emit('close',key)
// if(key&&key=='isBindAliPay'){
// uni.navigateTo({
// url:'/me/invite/zhifubao'
// })
// }
// } else {
// }
// })
}
}
}
</script>
<style lang="scss" scoped>
::v-deep .u-mode-center-box {
background-color: transparent;
}
.color-money {
color: #E42F00;
}
.money {
font-weight: 700;
font-size: 96rpx;
letter-spacing: 2px;
}
.bg {
width: 628rpx;
height: 770rpx;
margin-right: 10rpx;
background-color: transparent;
background-repeat: no-repeat;
background-position: center center;
background-size: cover;
background-image: url("~static/images/zhuanpan/gift.png");
position: relative;
@media (-webkit-min-device-pixel-ratio: 2),
(min-device-pixel-ratio: 2) {
background-image: url("~static/images/zhuanpan/gift@2x.png");
}
.title {
position: absolute;
top: 218rpx;
text-align: center;
left: 0;
right: 0;
font-weight: 700;
font-size: 60rpx;
color: #AF6920;
letter-spacing: 4rpx;
}
.goods {
position: absolute;
top: 336rpx;
text-align: center;
left: 0;
right: 0;
text-align: center;
}
.type {
padding: 6rpx 28rpx;
border-radius: 100rpx;
background: #E25B41;
font-size: 28rpx;
color: #fff;
font-weight: bold;
}
.close{
position: absolute;
bottom: 0;
left: 0;
right: 0;
}
.btn-box {
position: absolute;
top: 574rpx;
left: 0;
right: 0;
.btn {
padding: 10rpx 60rpx 10rpx 64rpx;
text-align: center;
font-weight: bold;
font-size: 44rpx;
color: #AF6920;
letter-spacing: 2px;
}
}
}
</style>

View File

@ -0,0 +1,165 @@
<template>
<view class="content">
<u-navbar title="抽奖" back-icon-color="#fff" :background="{background:'transparent'}" immersive
:border-bottom="false" title-color="#fff"></u-navbar>
<view class="sm">
<HM-slotMachine ref="HMslotMachine"></HM-slotMachine>
</view>
<view class="start" @tap="start">
<text> </text>
</view>
<ling-qu ref="refLingqu"></ling-qu>
</view>
</template>
<script>
import lingQu from './components/pop-ling-qu.vue'
function isAllElementssame(array, key) {
for (let index = 0; index < array.length; index++) {
if (array[index][key] != array[0][key]) {
return false
}
}
return true;
}
export default {
components: {
lingQu
},
data() {
return {
prizeList: [{
name: 'iPhone13',
value: 'iPhone',
img: require('@/other/static/1.png')
},
{
name: 'airPods3',
value: 'airPods',
img: require('@/other/static/2.png')
},
{
name: '行李箱',
value: 'luggage',
img: require('@/other/static/3.png')
},
{
name: '风筒',
value: 'dryer',
img: require('@/other/static/4.png')
},
{
name: '平行车',
value: 'balanceCar',
img: require('@/other/static/5.png')
},
{
name: 'iPad5',
value: 'iPad',
img: require('@/other/static/6.png')
}
]
}
},
onLoad() {
},
onReady() {
// init(options)
// options
// prizeList
// defaultResults
// duration
// direction up|down
this.$refs.HMslotMachine.init({
prizeList: this.prizeList,
defaultResults: ['iPhone', 'iPhone', 'iPhone'],
duration: 4000,
direction: 'up'
})
},
methods: {
showLingPop(data) {
this.$refs.refLingqu.open(data)
},
start() {
// roll(options)
//
// results [value,value,value] valuevalue
// success e={results} results
const that = this;
this.$refs.HMslotMachine.roll({
results: this.getResults(),
success: (e) => {
console.log("success e: ", e);
const item = isAllElementssame(e.results, 'value') ? e.results[0] : undefined
if (item) {
that.showLingPop({...item,type:3})
} else {
uni.showToast({
title: '很遗憾,未中奖',
icon: 'none'
})
}
}
})
},
getResults() {
// ajax
let max = this.prizeList.length - 1;
let arr = [Math.floor(Math.random() * (max - 1 + 1) + 1), Math.floor(Math.random() * (max - 1 + 1) + 1),
Math.floor(Math.random() * (max - 1 + 1) + 1)
];
return [
this.prizeList[arr[0]].value,
this.prizeList[arr[1]].value,
this.prizeList[arr[2]].value
]
}
}
}
</script>
<style lang="scss">
page {
background-image: linear-gradient(to top, #8F1E70, #51279A);
min-height: calc(100vh - var(--window-bottom) - var(--window-top));
}
.content {
display: flex;
flex-direction: column;
align-items: center;
.sm {
margin-top: 200rpx;
}
.start {
width: 70%;
height: 80rpx;
display: flex;
justify-content: center;
align-items: center;
background-color: #f29c11;
border-radius: 40rpx;
margin-top: 30rpx;
box-shadow: 0 1px 2px rgba($color: #51279A, $alpha: 1);
border-bottom: solid 3px #8d5805;
box-sizing: border-box;
text {
font-size: 20px;
font-weight: bold;
color: #b51c06;
text-shadow: 1px 1px 1px #f2e811;
}
}
}
</style>

BIN
other/static/1.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

BIN
other/static/2.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

BIN
other/static/3.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

BIN
other/static/4.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

BIN
other/static/5.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB

BIN
other/static/6.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 29 KiB

BIN
other/static/ad.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 151 KiB

BIN
other/static/avatar/5.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

BIN
other/static/avatar/6.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 22 KiB

BIN
other/static/avatar/7.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

779
other/tools/tools.vue Normal file
View File

@ -0,0 +1,779 @@
<template>
<view class="template-activity tn-safe-area-inset-bottom">
<!-- 顶部自定义导航 -->
<tn-nav-bar fixed alpha customBack>
<view slot="back" class='tn-custom-nav-bar__back' @click="goBack">
<text class='icon tn-icon-left'></text>
<text class='icon tn-icon-home-capsule-fill'></text>
</view>
</tn-nav-bar>
<!-- 方式4 start-->
<!-- <view class="tn-flex">
<view class="tn-flex-1 tn-padding-sm tn-radius" @click="tn('/activityPages/planet')">
<view class="tn-flex tn-flex-direction-column tn-flex-row-center tn-flex-col-center">
<view class="icon4__item--icon tn-flex tn-flex-row-center tn-flex-col-center tn-shadow-blur">
<view class="tn-icon-discover-planet-fill tn-cool-color-icon4 tn-cool-bg-color-5"></view>
</view>
<view class="tn-color-gray--dark tn-text-center">
<text class="tn-text-ellipsis">知识星球</text>
</view>
</view>
</view>
<view class="tn-flex-1 tn-padding-sm tn-radius" @click="tn('/activityPages/project')">
<view class="tn-flex tn-flex-direction-column tn-flex-row-center tn-flex-col-center">
<view class="icon4__item--icon tn-flex tn-flex-row-center tn-flex-col-center tn-shadow-blur">
<view class="tn-icon-trophy-fill tn-cool-color-icon4 tn-cool-bg-color-15"></view>
</view>
<view class="tn-color-gray--dark tn-text-center">
<text class="tn-text-ellipsis">开源项目</text>
</view>
</view>
</view>
<view class="tn-flex-1 tn-padding-sm tn-radius" @click="tn('/activityPages/map')">
<view class="tn-flex tn-flex-direction-column tn-flex-row-center tn-flex-col-center">
<view class="icon4__item--icon tn-flex tn-flex-row-center tn-flex-col-center tn-shadow-blur">
<view class="tn-icon-map-fill tn-cool-color-icon4 tn-cool-bg-color-8"></view>
</view>
<view class="tn-color-gray--dark tn-text-center">
<text class="tn-text-ellipsis">地图打卡</text>
</view>
</view>
</view>
<view class="tn-flex-1 tn-padding-sm tn-radius" @click="tn('/activityPages/study')">
<view class="tn-flex tn-flex-direction-column tn-flex-row-center tn-flex-col-center">
<view class="icon4__item--icon tn-flex tn-flex-row-center tn-flex-col-center tn-shadow-blur">
<view class="tn-icon-creative-fill tn-cool-color-icon4 tn-cool-bg-color-3"></view>
</view>
<view class="tn-color-gray--dark tn-text-center">
<text class="tn-text-ellipsis">课程学习</text>
</view>
</view>
</view>
</view> -->
<!-- 方式4 end-->
<view class="tn-margin-top-lg">
<view class="nav_title--wrap">
<view class="nav_title tn-cool-bg-color-15">
<text class="tn-icon-star tn-padding-right-sm"></text>
/ / /
<text class="tn-icon-star tn-padding-left-sm"></text>
</view>
</view>
</view>
<view class='nav-list tn-margin-bottom tn-margin-top'>
<block v-for="(item, index) in list1" :key="index">
<view class="nav-list-item tn-shadow-blur tn-cool-bg-image"
:class="['tn-main-gradient-' + item.color + '--light']">
<view class="nav-link">
<view class='title tn-text-bold' style="color: #080808;">{{ item.title }}</view>
<view class='join tn-color-grey tn-text-sm'>{{ item.join }} 人参与</view>
</view>
<view class="icon tn-shadow-blur" :class="['tn-bg-' + item.color]">
<view class="" :class="['tn-icon-' + item.icon]"></view>
</view>
</view>
</block>
</view>
<view class="tn-margin-top-lg">
<view class="nav_title--wrap">
<view class="nav_title tn-cool-bg-color-15">
<text class="tn-icon-star tn-padding-right-sm"></text>
/ / /
<text class="tn-icon-star tn-padding-left-sm"></text>
</view>
</view>
</view>
<view class='nav-list tn-margin-bottom tn-margin-top'>
<navigator class="nav-list-item tn-shadow-blur tn-cool-bg-image"
:class="['tn-main-gradient-' + item.color + '--light']" target="miniProgram" :app-id="item.appid"
:path="item.path" version="release" delta="1" hover-class="none" v-for="(item, index) in linksData"
:key="index">
<view class="nav-link">
<view class='title tn-text-bold' style="color: #080808;">{{ item.title }}</view>
<view class='join tn-color-grey tn-text-sm'>{{ item.join }} 人查看</view>
</view>
<view class="icon tn-shadow-blur" :class="['tn-bg-' + item.color]">
<view class="" :class="['tn-icon-' + item.icon]"></view>
</view>
</navigator>
</view>
<view class='tn-tabbar-height'></view>
</view>
</template>
<script>
export default {
name: 'Discovery',
data() {
return {
cardCur: 0,
swiperList: [{
id: 0,
type: 'image',
url: 'https://resource.tuniaokj.com/images/index_bg/pro1.jpg',
}, {
id: 1,
type: 'image',
url: 'https://resource.tuniaokj.com/images/index_bg/pro2.jpg',
}, {
id: 2,
type: 'image',
url: 'https://resource.tuniaokj.com/images/index_bg/pro3.jpg',
}, {
id: 3,
type: 'image',
url: 'https://resource.tuniaokj.com/images/index_bg/pro4.jpg',
}, {
id: 4,
type: 'image',
url: 'https://resource.tuniaokj.com/images/index_bg/pro5.jpg',
}, {
id: 5,
type: 'image',
url: 'https://resource.tuniaokj.com/images/index_bg/pro6.jpg',
}],
list1: [{
icon: 'honor-fill',
title: '称呼计算器',
join: '629',
color: 'blue'
},
{
icon: 'count-fill',
title: '支付宝语音生成',
join: '268',
color: 'purplered'
},
{
icon: 'gloves-fill',
title: '一周天气预报',
join: '332',
color: 'cyan'
},
{
icon: 'trusty-fill',
title: '今日星座运势',
join: '106',
color: 'orangeyellow'
},
{
icon: 'hardware-fill',
title: '来碗毒鸡汤',
join: '98',
color: 'indigo'
},
{
icon: 'baby-fill',
title: '垃圾分一分',
join: '57',
color: 'red'
},
{
icon: 'safe-fill',
title: '手持弹幕',
join: '76',
color: 'green'
},
{
icon: 'flag-fill',
title: '孩子取名',
join: '225',
color: 'orange'
},
{
icon: 'topics-fill',
title: '午餐吃什么',
join: '422',
color: 'teal'
},
{
icon: 'light-fill',
title: '朋友圈文案',
join: '983',
color: 'orangered'
}
],
linksData: [{
icon: 'honor-fill',
join: '629',
color: 'purplered',
url: '',
title: '司命',
appid: 'wx734d93edc5b48019',
path: 'pages/index/index'
},
{
icon: 'count-fill',
join: '268',
color: 'blue',
url: '',
title: '爱小睡眠',
appid: 'wx65880bde88b32037',
path: 'pages/index/index'
},
{
icon: 'gloves-fill',
join: '332',
color: 'orangeyellow',
url: '',
title: '群友作品',
appid: '',
path: 'pages/index/index'
},
{
icon: 'trusty-fill',
join: '106',
color: 'cyan',
url: '',
title: '群友作品',
appid: '',
path: 'pages/index/index'
},
{
icon: 'hardware-fill',
join: '98',
color: 'red',
url: '',
title: '群友作品',
appid: '',
path: 'pages/index/index'
},
{
icon: 'baby-fill',
join: '57',
color: 'indigo',
url: '',
title: '群友作品',
appid: '',
path: 'pages/index/index'
},
{
icon: 'safe-fill',
join: '76',
color: 'orange',
url: '',
title: '群友作品',
appid: '',
path: 'pages/index/index'
},
{
icon: 'flag-fill',
join: '225',
color: 'green',
url: '',
title: '群友作品',
appid: '',
path: 'pages/index/index'
},
{
icon: 'topics-fill',
join: '422',
color: 'orangered',
url: '',
title: '群友作品',
appid: '',
path: 'pages/index/index'
},
{
icon: 'light-fill',
join: '983',
color: 'teal',
url: '',
title: '表情包制作',
appid: 'wx096589e82af2ffa5',
path: 'pages/index/index'
}
],
}
},
methods: {
goBack(){
uni.navigateBack()
},
// cardSwiper
cardSwiper(e) {
this.cardCur = e.detail.current
},
//
tn(e) {
uni.navigateTo({
url: e,
});
},
}
}
</script>
<style lang="scss" scoped>
.template-activity {
max-height: 100vh;
}
.tn-tabbar-height {
min-height: 120rpx;
height: calc(140rpx + env(safe-area-inset-bottom) / 2);
}
/* 胶囊*/
.tn-custom-nav-bar__back {
width: 100%;
height: 100%;
position: relative;
display: flex;
justify-content: space-evenly;
align-items: center;
box-sizing: border-box;
background-color: rgba(0, 0, 0, 0.15);
border-radius: 1000rpx;
border: 1rpx solid rgba(255, 255, 255, 0.5);
color: #FFFFFF;
font-size: 18px;
.icon {
display: block;
flex: 1;
margin: auto;
text-align: center;
}
&:before {
content: " ";
width: 1rpx;
height: 110%;
position: absolute;
top: 22.5%;
left: 0;
right: 0;
margin: auto;
transform: scale(0.5);
transform-origin: 0 0;
pointer-events: none;
box-sizing: border-box;
opacity: 0.7;
background-color: #FFFFFF;
}
}
/* .tnphone-white-min 细边框*/
.tnphone-white-min {
width: 380rpx;
height: 800rpx;
border-radius: 40rpx;
background: #E9E5F3;
padding: 7rpx;
display: table;
color: #333;
box-sizing: border-box;
box-shadow: 0rpx 10rpx 50rpx 0rpx rgba(0, 0, 0, 0.15);
margin: 70rpx auto;
cursor: default;
position: relative
}
.tnphone-white-min .skin {
width: 100%;
height: 100%;
border-radius: 40rpx;
background: #E9E5F3;
padding: 10rpx;
}
.tnphone-white-min .screen {
width: 100%;
height: 100%;
border-radius: 30rpx;
background: #E9E5F3;
position: relative;
overflow: hidden
}
.tnphone-white-min .head {
width: 100%;
height: 90rpx;
text-align: center;
position: absolute;
padding: 45rpx 15rpx 10rpx 15rpx;
}
.tnphone-white-min .peak {
left: 22%;
width: 56%;
height: 27rpx;
margin: -2rpx auto 0rpx;
border-radius: 0 0 20rpx 20rpx;
background: #E9E5F3;
position: absolute
}
.tnphone-white-min .sound {
width: 48rpx;
height: 6rpx;
border-radius: 15rpx;
background: #555;
position: absolute;
left: 50%;
top: 50%;
margin-left: -24rpx;
margin-top: -10rpx;
box-shadow: 0rpx 4rpx 4rpx 0rpx #444 inset
}
.tnphone-white-min .lens {
width: 6rpx;
height: 6rpx;
border-radius: 50%;
background: #2c5487;
position: absolute;
left: 50%;
top: 50%;
margin-left: 34rpx;
margin-top: -10rpx
}
.tnphone-white-min .talk {
width: 50%;
height: 6rpx;
border-radius: 15rpx;
background: rgba(0, 0, 0, .3);
position: absolute;
bottom: 8rpx;
left: 50%;
margin-left: -25%
}
.tnphone-white-min .area-l,
.tnphone-white-min .area-r {
width: 70rpx;
height: 16rpx;
position: absolute;
top: 6rpx
}
.tnphone-white-min .area-l {
left: 0;
text-align: center;
font-size: 12rpx;
line-height: 22rpx;
text-indent: 10rpx;
font-weight: 600;
padding-left: 20rpx;
}
.tnphone-white-min .area-r {
right: 0;
text-align: center;
font-size: 12rpx;
line-height: 22rpx;
text-indent: 10rpx;
font-weight: 600;
padding-right: 20rpx;
}
.tnphone-white-min .fa-feed {
float: left;
font-size: 12rpx !important;
transform: rotate(-45deg);
margin-top: 4rpx;
margin-right: 8rpx
}
.tnphone-white-min .fa-battery-full {
float: left;
font-size: 12rpx !important;
margin-top: 6rpx
}
.tnphone-white-min .fa-chevron-left {
float: left;
margin-top: 4rpx
}
.tnphone-white-min .fa-cog {
float: right;
margin-top: 4rpx
}
.tnphone-white-min .btn01 {
width: 3rpx;
height: 28rpx;
border-radius: 3rpx 0 0 3rpx;
background: #222;
position: absolute;
top: 105rpx;
left: -3rpx
}
.tnphone-white-min .btn02 {
width: 3rpx;
height: 54rpx;
border-radius: 3rpx 0 0 3rpx;
background: #222;
position: absolute;
top: 160rpx;
left: -3rpx
}
.tnphone-white-min .btn03 {
width: 3rpx;
height: 54rpx;
border-radius: 3rpx 0 0 3rpx;
background: #222;
position: absolute;
top: 230rpx;
left: -3rpx
}
.tnphone-white-min .btn04 {
width: 3rpx;
height: 86rpx;
border-radius: 0 3rpx 3rpx 0;
background: #222;
position: absolute;
top: 180rpx;
right: -3rpx
}
/* 顶部背景图 start */
.top-backgroup {
height: 450rpx;
z-index: -1;
.backgroud-image {
width: 100%;
height: 667rpx;
// z-index: -1;
}
}
/* 顶部背景图 end */
/* 轮播样机样式 start*/
.card-swiper {
height: 830rpx !important;
}
.card-swiper swiper-item {
width: 260rpx !important;
// left: 170rpx;
// width: 380rpx !important;
// left: 185rpx;
box-sizing: border-box;
padding: 0rpx 15rpx 90rpx 15rpx;
overflow: initial;
}
.card-swiper swiper-item .swiper-item {
display: block;
transform: scale(0.45);
transition: all 0.2s ease-in 0s;
overflow: hidden;
}
.card-swiper swiper-item.cur .swiper-item {
transform: scale(0.65);
transition: all 0.2s ease-in 0s;
}
.image-banner {
display: flex;
align-items: center;
justify-content: center;
}
.image-banner image {
width: 100%;
height: 770rpx;
// border: 1rpx solid red;
}
/* 轮播指示点 start*/
.indication {
z-index: 9999;
width: 100%;
height: 36rpx;
position: absolute;
display: flex;
flex-direction: row;
align-items: center;
justify-content: center;
}
.spot {
background-color: #000;
opacity: 0;
width: 10rpx;
height: 10rpx;
border-radius: 20rpx;
margin: 0 8rpx !important;
top: -80rpx;
position: relative;
}
.spot.active {
opacity: 0;
width: 30rpx;
background-color: #000;
}
/* 图标容器4 start */
.tn-cool-color-icon4 {
// background-image: -webkit-linear-gradient(135deg, #ED1C24, #FECE12); 16
// background-image: linear-gradient(135deg, #ED1C24, #FECE12);
-webkit-background-clip: text;
background-clip: text;
-webkit-text-fill-color: transparent;
text-fill-color: transparent;
}
.icon4 {
&__item {
width: 30%;
background-color: #FFFFFF;
border-radius: 10rpx;
padding: 30rpx;
margin: 20rpx 10rpx;
transform: scale(1);
transition: transform 0.3s linear;
transform-origin: center center;
&--icon {
width: 110rpx;
height: 110rpx;
font-size: 55rpx;
border-radius: 50%;
margin-bottom: 18rpx;
position: relative;
z-index: 1;
box-shadow: 0px 10px 30px rgba(70, 23, 129, 0.12),
0px -8px 40px rgba(255, 255, 255, 1),
inset 0px -10px 10px rgba(70, 23, 129, 0.05),
inset 0px 10px 20px rgba(255, 255, 255, 1);
}
}
}
/* 标题 start */
.nav_title {
-webkit-background-clip: text;
color: transparent;
&--wrap {
position: relative;
display: flex;
height: 120rpx;
font-size: 42rpx;
align-items: center;
justify-content: center;
font-weight: bold;
background-image: url(https://resource.tuniaokj.com/images/title_bg/title44.png);
background-size: cover;
}
}
/* 标题 end */
/* 组件导航列表 start*/
.nav-list {
display: flex;
flex-wrap: wrap;
padding: 0rpx 12rpx 0rpx;
justify-content: space-between;
/* 列表元素 start */
.nav-list-item {
padding: 95rpx 30rpx 5rpx 30rpx;
border-radius: 12rpx;
width: 45%;
margin: 0 18rpx 40rpx;
background-size: cover;
background-position: center;
position: relative;
z-index: 99;
/* 元素标题 start */
.nav-link {
font-size: 32rpx;
text-transform: capitalize;
padding: 0 0 10rpx 0;
position: relative;
.title {
color: #FFFFFF;
margin-top: 100rpx;
text-align: center;
}
.join {
color: #FFFFFF;
margin-top: 20rpx;
margin-bottom: 40rpx;
text-align: center;
}
}
/* 元素标题 end */
/* 元素图标 start */
.icon {
font-variant: small-caps;
position: absolute;
top: 60rpx;
right: 50rpx;
left: 37%;
width: 90rpx;
height: 90rpx;
line-height: 90rpx;
margin: 0;
padding: 0;
display: inline-flex;
text-align: center;
justify-content: center;
vertical-align: middle;
font-size: 50rpx;
color: #FFFFFF;
white-space: nowrap;
opacity: 0.9;
background-color: rgba(0, 0, 0, 0.05);
background-size: cover;
background-position: 50%;
border-radius: 5000rpx;
&::after {
content: " ";
position: absolute;
z-index: -1;
width: 100%;
height: 100%;
left: 0;
bottom: 0;
border-radius: inherit;
opacity: 1;
transform: scale(1, 1);
background-size: 100% 100%;
background-image: url(https://resource.tuniaokj.com/images/cool_bg_image/icon_bg2.png);
}
}
/* 元素图标 end */
}
/* 列表元素 end */
}
/* 组件导航列表 end*/
</style>

570
other/topic/reserve.vue Normal file
View File

@ -0,0 +1,570 @@
<template>
<view class="template-reserve tn-safe-area-inset-bottom">
<!-- 顶部自定义导航 -->
<tn-nav-bar fixed alpha customBack>
<view slot="back" class='tn-custom-nav-bar__back'
@click="goBack">
<text class='icon tn-icon-left'></text>
<text class='icon tn-icon-home-capsule-fill'></text>
</view>
</tn-nav-bar>
<!-- 页面内容 -->
<view class="slideshow">
<view class="slideshow-image" style="background-image: url('https://resource.tuniaokj.com/images/blogger/avatar_1.jpeg')"></view>
<view class="slideshow-image" style="background-image: url('https://resource.tuniaokj.com/images/blogger/avatar_2.jpeg')"></view>
<view class="slideshow-image" style="background-image: url('https://resource.tuniaokj.com/images/blogger/avatar_3.jpeg')"></view>
<view class="slideshow-image" style="background-image: url('https://resource.tuniaokj.com/images/blogger/avatar_4.jpeg')"></view>
</view>
<view class="reserve tn-safe-area-inset-bottom" :style="{paddingTop: vuex_custom_bar_height + 'px'}">
<view class="reserve-content tn-padding tn-color-black tn-text-lg dd-glass2" style="margin:71vh 30rpx 20vh 30rpx">
<view class="tn-text-center tn-text-bold tn-padding-top tn-padding-bottom">
活动详情
</view>
<view class="">
<view class="blogger__desc tn-margin-top-sm tn-margin-bottom-sm tn-text-justify tn-flex-col-center tn-flex-row-left">
<view class="blogger__desc__label tn-float-left tn-margin-right tn-bg-gray--light tn-round tn-text-sm tn-text-bold">
<text class="blogger__desc__label--prefix">#</text>
<text class="tn-text-df">常回家看看</text>
</view>
<!-- 不用限制长度了因为发布的时候限制长度了-->
<text class="blogger__desc__content tn-flex-1 tn-text-justify tn-text-df">
可爱的校友让我们相约华软来一场说看就看的木棉雨通知将于活动前一晚送达请查收
</text>
</view>
</view>
<view class="tn-padding-top-lg">
集合时间2024年12月20日 12:00:00
</view>
<view class="">
集合地点喷泉广场
</view>
<!-- <view class="tn-margin-top tn-color-black tn-bg-white tn-radius" >
<view class="tn-flex tn-flex-row-between tn-flex-col-center">
<view class="justify-content-item">
<view class="tn-flex tn-flex-col-center tn-flex-row-left">
<view class="tn-padding tn-color-black">
<view class="tn-padding-right-sm tn-text-lg tn-text-bold clamp-text-1">
广东省广州市番禺祈福新村129号
</view>
</view>
</view>
</view>
<view class="tn-flex justify-content-item tn-flex-row-center tn-padding-right-xs">
<view class="tn-bg-gray--light tn-padding-xs tn-margin-sm tn-color-black tn-round">
<text class="tn-icon-location-fill" style="font-size: 50rpx;"></text>
</view>
</view>
</view>
</view> -->
<view class="tn-text-center tn-text-bold tn-padding-top-xl">
活动参与者
</view>
<tn-read-more :closeBtn="true" openText="查看更多参与者" openIcon="more-circle" closeText="折叠起来" closeIcon="close" :showHeight="300">
<view class="tn-flex tn-flex-wrap tn-margin-top-xl">
<block v-for="(item, index) in groupList" :key="index">
<view class="tn-padding-bottom tn-padding-left" style="width: 20%;">
<view class="tn-flex tn-flex-row-left tn-flex-col-center" style="">
<view class="user-pic">
<view class="user-image">
<view class="tn-shadow-blur" :style="'background-image:url('+ item.src +');width: 70rpx;height: 70rpx;background-size: cover;'">
</view>
</view>
</view>
</view>
</view>
</block>
</view>
</tn-read-more>
</view>
<view class="tn-footerfixed tn-flex tn-flex-row-between tn-flex-col-center tn-padding tn-safe-area-inset-bottom dd-glass">
<view class="justify-content-item tn-padding-bottom">
<view class="tn-flex tn-flex-col-center tn-flex-row-left">
<view class="user-pic">
<view class="user-image">
<view class="tn-shadow-blur" style="background-image:url('https://resource.tuniaokj.com/images/blogger/blogger_beibei.jpg');width: 70rpx;height: 70rpx;background-size: cover;">
</view>
</view>
</view>
</view>
</view>
<!-- 按钮-->
<view class="justify-content-item tn-flex-col-center tn-flex-row-center tn-text-center tn-padding-bottom">
<view class="tn-flex tn-flex-row-between">
<view class="justify-content-item tn-margin-xs tn-text-center" style="width: 300rpx;">
<tn-button shape="round" backgroundColor="#00FFC6" padding="40rpx 0" width="90%" shadow fontBold>
<text class="tn-icon-topic tn-padding-right-xs tn-color-black"></text>
<text class="tn-color-black">参与活动</text>
</tn-button>
</view>
</view>
</view>
<view class="justify-content-item tn-flex-col-center tn-flex-row-center tn-text-center tn-padding-bottom" @click="openLocation">
<view class="tn-bg-gray--light tn-padding-xs tn-margin-sm tn-color-black tn-round">
<text class="tn-icon-location-fill" style="font-size: 50rpx;"></text>
</view>
</view>
</view>
</view>
</view>
</template>
<script>
import template_page_mixin from '@/libs/mixin/template_page_mixin.js'
export default {
name: 'TemplateReserve',
mixins: [template_page_mixin],
data(){
return {
groupList: [
{src: 'https://resource.tuniaokj.com/images/blogger/avatar_1.jpeg'},
{src: 'https://resource.tuniaokj.com/images/blogger/avatar_2.jpeg'},
{src: 'https://resource.tuniaokj.com/images/blogger/avatar_1.jpeg'},
{src: 'https://resource.tuniaokj.com/images/blogger/avatar_4.jpeg'},
{src: 'https://resource.tuniaokj.com/images/blogger/avatar_3.jpeg'},
{src: 'https://resource.tuniaokj.com/images/blogger/blogger_beibei.jpg'},
{src: 'https://resource.tuniaokj.com/images/blogger/avatar_4.jpeg'},
{src: 'https://resource.tuniaokj.com/images/blogger/avatar_1.jpeg'},
{src: 'https://resource.tuniaokj.com/images/shop/phonecase1.jpg'},
{src: 'https://resource.tuniaokj.com/images/blogger/avatar_3.jpeg'},
{src: 'https://resource.tuniaokj.com/images/shop/cup1.jpg'},
{src: 'https://resource.tuniaokj.com/images/blogger/avatar_4.jpeg'},
{src: 'https://resource.tuniaokj.com/images/blogger/avatar_3.jpeg'},
{src: 'https://resource.tuniaokj.com/images/blogger/blogger_beibei.jpg'},
{src: 'https://resource.tuniaokj.com/images/blogger/avatar_1.jpeg'},
{src: 'https://resource.tuniaokj.com/images/blogger/avatar_2.jpeg'},
{src: 'https://resource.tuniaokj.com/images/blogger/avatar_3.jpeg'},
{src: 'https://resource.tuniaokj.com/images/blogger/avatar_4.jpeg'},
{src: 'https://resource.tuniaokj.com/images/blogger/blogger_beibei.jpg'},
{src: 'https://resource.tuniaokj.com/images/blogger/avatar_1.jpeg'},
{src: 'https://resource.tuniaokj.com/images/blogger/avatar_2.jpeg'},
{src: 'https://resource.tuniaokj.com/images/blogger/avatar_3.jpeg'},
{src: 'https://resource.tuniaokj.com/images/blogger/avatar_4.jpeg'},
{src: 'https://resource.tuniaokj.com/images/blogger/avatar_3.jpeg'},
{src: 'https://resource.tuniaokj.com/images/blogger/blogger_beibei.jpg'},
{src: 'https://resource.tuniaokj.com/images/blogger/avatar_1.jpeg'},
{src: 'https://resource.tuniaokj.com/images/blogger/avatar_2.jpeg'},
{src: 'https://resource.tuniaokj.com/images/blogger/avatar_3.jpeg'},
{src: 'https://resource.tuniaokj.com/images/shop/watch1.jpg'},
{src: 'https://resource.tuniaokj.com/images/blogger/avatar_4.jpeg'},
{src: 'https://resource.tuniaokj.com/images/blogger/avatar_2.jpeg'},
{src: 'https://resource.tuniaokj.com/images/blogger/blogger_beibei.jpg'},
{src: 'https://resource.tuniaokj.com/images/blogger/avatar_1.jpeg'},
{src: 'https://resource.tuniaokj.com/images/blogger/avatar_2.jpeg'},
{src: 'https://resource.tuniaokj.com/images/blogger/avatar_3.jpeg'},
{src: 'https://resource.tuniaokj.com/images/blogger/avatar_4.jpeg'},
{src: 'https://resource.tuniaokj.com/images/blogger/blogger_beibei.jpg'},
{src: 'https://resource.tuniaokj.com/images/blogger/avatar_2.jpeg'},
{src: 'https://resource.tuniaokj.com/images/blogger/blogger_beibei.jpg'},
{src: 'https://resource.tuniaokj.com/images/blogger/avatar_4.jpeg'},
{src: 'https://resource.tuniaokj.com/images/blogger/blogger_beibei.jpg'},
{src: 'https://resource.tuniaokj.com/images/blogger/avatar_1.jpeg'},
{src: 'https://resource.tuniaokj.com/images/blogger/avatar_2.jpeg'},
{src: 'https://resource.tuniaokj.com/images/blogger/avatar_4.jpeg'},
{src: 'https://resource.tuniaokj.com/images/blogger/blogger_beibei.jpg'},
{src: 'https://resource.tuniaokj.com/images/blogger/avatar_1.jpeg'},
{src: 'https://resource.tuniaokj.com/images/blogger/avatar_3.jpeg'},
]
}
},
methods: {
openLocation() {
uni.openLocation({
longitude: 113.3298396012573,
latitude: 22.961803525530176,
name: '祈福新村',
address: '祈福新村'
})
},
}
}
</script>
<style lang="scss" scoped>
.template-reserve {
}
/* 胶囊*/
.tn-custom-nav-bar__back {
width: 100%;
height: 100%;
position: relative;
display: flex;
justify-content: space-evenly;
align-items: center;
box-sizing: border-box;
background-color: rgba(0, 0, 0, 0.15);
border-radius: 1000rpx;
border: 1rpx solid rgba(255, 255, 255, 0.5);
color: #FFFFFF;
font-size: 18px;
.icon {
display: block;
flex: 1;
margin: auto;
text-align: center;
}
&:before {
content: " ";
width: 1rpx;
height: 110%;
position: absolute;
top: 22.5%;
left: 0;
right: 0;
margin: auto;
transform: scale(0.5);
transform-origin: 0 0;
pointer-events: none;
box-sizing: border-box;
opacity: 0.7;
background-color: #FFFFFF;
}
}
/* 内容*/
.reserve{
position: relative;
z-index: 99;
}
.reserve-content{
background-color: rgba(255,255,255,0.7);
border-radius: 30rpx;
}
/* 标签 */
.blogger {
&__item {
padding: 30rpx;
}
&__desc {
line-height: 55rpx;
&__label {
padding: 0 20rpx;
margin: 0rpx 18rpx 0 0;
&--prefix {
color: #00FFC8;
padding-right: 10rpx;
}
}
}
}
/* 文字截取*/
.clamp-text-1 {
-webkit-line-clamp: 1;
display: -webkit-box;
-webkit-box-orient: vertical;
text-overflow: ellipsis;
overflow: hidden;
}
.clamp-text-2 {
-webkit-line-clamp: 2;
display: -webkit-box;
-webkit-box-orient: vertical;
text-overflow: ellipsis;
overflow: hidden;
}
/* 毛玻璃*/
.dd-glass {
width: 100%;
backdrop-filter: blur(20rpx);
-webkit-backdrop-filter: blur(20rpx);
}
/* 毛玻璃*/
.dd-glass2 {
// width: 100%;
backdrop-filter: blur(8rpx);
-webkit-backdrop-filter: blur(8rpx);
}
/* 用户头像 start */
.user-image {
width: 70rpx;
height: 70rpx;
position: relative;
}
.user-pic {
background-size: cover;
background-repeat: no-repeat;
// background-attachment:fixed;
background-position: top;
border-radius: 100rpx;
overflow: hidden;
background-color: #FFFFFF;
}
/* 底部悬浮按钮 start*/
.tn-tabbar-height {
min-height: 120rpx;
height: calc(140rpx + env(safe-area-inset-bottom) / 2);
}
.tn-footerfixed {
position: fixed;
background-color: rgba(255,255,255,0.5);
box-shadow: 0rpx 0rpx 30rpx 0rpx rgba(0, 0, 0, 0.07);
bottom: 0;
width: 100%;
transition: all 0.25s ease-out;
z-index: 100;
}
/* 相册 start*/
.slideshow {
top: 0;
position: fixed;
width: 100vw;
height: 100vh;
overflow: hidden;
z-index: 0;
}
.slideshow-image {
position: absolute;
width: 100%;
height: 100%;
background: no-repeat 50% 50%;
background-size: cover;
-webkit-animation-name: kenburns;
animation-name: kenburns;
-webkit-animation-timing-function: linear;
animation-timing-function: linear;
-webkit-animation-iteration-count: infinite;
animation-iteration-count: infinite;
-webkit-animation-duration: 16s;
animation-duration: 16s;
opacity: 1;
transform: scale(1.2);
}
.slideshow-image:nth-child(1) {
-webkit-animation-name: kenburns-1;
animation-name: kenburns-1;
z-index: 3;
}
.slideshow-image:nth-child(2) {
-webkit-animation-name: kenburns-2;
animation-name: kenburns-2;
z-index: 2;
}
.slideshow-image:nth-child(3) {
-webkit-animation-name: kenburns-3;
animation-name: kenburns-3;
z-index: 1;
}
.slideshow-image:nth-child(4) {
-webkit-animation-name: kenburns-4;
animation-name: kenburns-4;
z-index: 0;
}
@-webkit-keyframes kenburns-1 {
0% {
opacity: 1;
transform: scale(1.2);
}
1.5625% {
opacity: 1;
}
23.4375% {
opacity: 1;
}
26.5625% {
opacity: 0;
transform: scale(1);
}
100% {
opacity: 0;
transform: scale(1.2);
}
98.4375% {
opacity: 0;
transform: scale(1.2117647059);
}
100% {
opacity: 1;
}
}
@keyframes kenburns-1 {
0% {
opacity: 1;
transform: scale(1.2);
}
1.5625% {
opacity: 1;
}
23.4375% {
opacity: 1;
}
26.5625% {
opacity: 0;
transform: scale(1);
}
100% {
opacity: 0;
transform: scale(1.2);
}
98.4375% {
opacity: 0;
transform: scale(1.2117647059);
}
100% {
opacity: 1;
}
}
@-webkit-keyframes kenburns-2 {
23.4375% {
opacity: 1;
transform: scale(1.2);
}
26.5625% {
opacity: 1;
}
48.4375% {
opacity: 1;
}
51.5625% {
opacity: 0;
transform: scale(1);
}
100% {
opacity: 0;
transform: scale(1.2);
}
}
@keyframes kenburns-2 {
23.4375% {
opacity: 1;
transform: scale(1.2);
}
26.5625% {
opacity: 1;
}
48.4375% {
opacity: 1;
}
51.5625% {
opacity: 0;
transform: scale(1);
}
100% {
opacity: 0;
transform: scale(1.2);
}
}
@-webkit-keyframes kenburns-3 {
48.4375% {
opacity: 1;
transform: scale(1.2);
}
51.5625% {
opacity: 1;
}
73.4375% {
opacity: 1;
}
76.5625% {
opacity: 0;
transform: scale(1);
}
100% {
opacity: 0;
transform: scale(1.2);
}
}
@keyframes kenburns-3 {
48.4375% {
opacity: 1;
transform: scale(1.2);
}
51.5625% {
opacity: 1;
}
73.4375% {
opacity: 1;
}
76.5625% {
opacity: 0;
transform: scale(1);
}
100% {
opacity: 0;
transform: scale(1.2);
}
}
@-webkit-keyframes kenburns-4 {
73.4375% {
opacity: 1;
transform: scale(1.2);
}
76.5625% {
opacity: 1;
}
98.4375% {
opacity: 1;
}
100% {
opacity: 0;
transform: scale(1);
}
}
@keyframes kenburns-4 {
73.4375% {
opacity: 1;
transform: scale(1.2);
}
76.5625% {
opacity: 1;
}
98.4375% {
opacity: 1;
}
100% {
opacity: 0;
transform: scale(1);
}
}
/* 相册 end*/
</style>

1287
other/topic/topic.vue Normal file

File diff suppressed because it is too large Load Diff

854
pages-ios.json Normal file
View File

@ -0,0 +1,854 @@
{
"easycom": {
"^u-(.*)": "@/uview-ui/components/u-$1/u-$1.vue",
"^tn-(.*)": "@/tuniao-ui/components/tn-$1/tn-$1.vue"
},
"pages": [ //pageshttps://uniapp.dcloud.io/collocation/pages
{
"path": "pages/task/index",
"style": {
"navigationBarTitleText": "任务",
"enablePullDownRefresh": true,
"navigationStyle": "custom"
}
},
{
"path": "pages/index/index",
"style": {
"navigationBarTitleText": "斯耀短剧",
"enablePullDownRefresh": true,
"navigationStyle": "custom"
}
},
{
"path": "pages/task/prizeList",
"style": {
"navigationBarTitleText": "任务",
"navigationStyle": "custom"
}
},
{
"path": "pages/task/receiveMember",
"style": {
"navigationBarTitleText": "任务",
"navigationStyle": "custom"
}
},
{
"path": "pages/me/erweimaRegister",
"style": {
"navigationBarTitleText": "短剧",
"navigationStyle": "custom", //
"navigationBarTextStyle": "white", // white-black-
"h5": {
"titleNView": {
"backgroundColor": "#FFFFFF"
}
}
}
},
{
"path": "pages/index/search/index",
"style": {
"navigationBarTitleText": "搜索",
"navigationBarBackgroundColor": "#FFFFFF",
"enablePullDownRefresh": true
}
},
{
"path": "pages/index/course/courseList",
"style": {
"navigationBarTitleText": "资源列表",
"enablePullDownRefresh": true,
"navigationBarBackgroundColor": "#FFFFFF"
}
}, {
"path": "pages/index/course/orderDet",
"style": {
"navigationBarTitleText": "确认订单",
"navigationBarBackgroundColor": "#FFFFFF"
}
},
{
"path": "pages/index/webView",
"style": {
"navigationBarTitleText": "网页",
"navigationBarBackgroundColor": "#FFFFFF"
}
},
{
"path": "pages/learn/index",
"style": {
"navigationBarTitleText": "学习",
"enablePullDownRefresh": true,
"app-plus": {
"titleNView": false, //
"bounce": "none",
"scrollIndicator": "none"
}
}
},
{
"path": "pages/me/index",
"style": {
"navigationBarTitleText": "我的",
"navigationStyle": "custom"
}
},
{
"path": "pages/me/userinfo",
"style": {
"navigationBarTitleText": "个人资料",
"h5": {
"titleNView": {
"backgroundColor": "#FFFFFF"
}
}
}
},
{
"path": "pages/me/vip/index",
"style": {
"navigationBarTitleText": "会员中心",
"h5": {
"titleNView": {
"backgroundColor": "#FFFFFF"
}
}
}
},
{
"path": "pages/login/login",
"style": {
"navigationBarTitleText": "登录",
"h5": {
"titleNView": {
"backgroundColor": "#FFFFFF"
}
}
}
},
{
"path": "pages/login/registerApp",
"style": {
"navigationBarTitleText": "注册",
"navigationBarBackgroundColor": "#f1a48a",
"h5": {
"titleNView": {
"backgroundColor": "#f1a48a"
}
}
// #ifdef H5
,
"navigationStyle": "custom"
// #endif
}
},
{
"path": "pages/login/loginPhone",
"style": {
"navigationBarTitleText": "登录",
"h5": {
"titleNView": {
"backgroundColor": "#FFFFFF"
}
}
}
}, {
"path": "pages/login/bind",
"style": {
"navigationBarTitleText": "绑定手机号",
"h5": {
"titleNView": {
"backgroundColor": "#FFFFFF"
}
}
}
},
{
"path": "pages/login/register",
"style": {
"navigationBarTitleText": "",
"navigationBarBackgroundColor": "#f1a48a",
"h5": {
"titleNView": {
"backgroundColor": "#f1a48a"
}
}
// #ifdef H5
,
"navigationStyle": "custom"
// #endif
}
},
{
"path": "pages/login/forgetPwd",
"style": {
"navigationBarTitleText": "重置密码",
"h5": {
"titleNView": {
"backgroundColor": "#FFFFFF"
}
}
}
}, {
"path": "pages/chasingDrama/chasingDrama",
"style": {
"navigationBarTitleText": "追剧",
"enablePullDownRefresh": false
// #ifdef H5
,
"navigationStyle": "custom"
// #endif
}
}, {
"path": "pages/video/video",
"style": {
"navigationBarTitleText": "推荐",
"enablePullDownRefresh": false,
"navigationBarBackgroundColor": "#000"
// #ifndef MP-TOUTIAO
,
"navigationStyle": "custom"
// #endif
// #ifdef MP-TOUTIAO
,
"usingComponents": {
"video-player": "ext://industry/video-player"
}
// #endif
}
},
{
"path": "pages/login/appEq",
"style": {
"navigationBarTitleText": "注册成功",
"enablePullDownRefresh": false
// #ifdef H5
,
"navigationStyle": "custom"
// #endif
}
}, {
"path": "pages/login/iosmobile",
"style": {
"navigationBarTitleText": "手机号绑定"
}
},
{
"path": "pages/login/wxmobile",
"style": {
"navigationBarTitleText": "手机号绑定"
}
},
{
"path": "pages/login/phonebind",
"style": {
"navigationBarTitleText": "手机号绑定"
}
},
{
"path": "pages/pays/pays",
"style": {
"navigationBarTitleText": ""
}
},
{
"path": "pages/first/first",
"style": {
"navigationBarTitleText": "开屏广告",
"navigationStyle": "custom"
}
}
],
"subPackages": [{
"root": "me",
"pages": [{
"path": "feedback/index",
"style": {
"navigationBarTitleText": "意见反馈",
"navigationBarBackgroundColor": "#FFFFFF"
}
}, {
"path": "balance/index",
"style": {
"navigationBarTitleText": "我的余额"
}
}, {
"path": "feedbackIndex/feedbackIndex",
"style": {
"navigationBarTitleText": "帮助中心",
"enablePullDownRefresh": false,
"navigationBarBackgroundColor": "#FFFFFF"
}
}, {
"path": "helpDetail/helpDetail",
"style": {
"navigationBarTitleText": "帮助详情",
"enablePullDownRefresh": false,
"navigationBarBackgroundColor": "#FFFFFF"
}
}, {
"path": "message/index",
"style": {
"navigationBarTitleText": "消息中心"
}
},
{
"path": "course/index",
"style": {
"navigationBarTitleText": "我的课程",
"enablePullDownRefresh": true,
"h5": {
"titleNView": {
"backgroundColor": "#FFFFFF"
}
}
}
},
{
"path": "invite/index",
"style": {
"navigationBarTitleText": "分享好友",
"navigationStyle": "custom",
"h5": {
"titleNView": {
"backgroundColor": "#FFFFFF"
}
}
}
},
{
"path": "invite/inviteDet",
"style": {
"navigationBarTitleText": "我的团队",
"h5": {
"titleNView": {
"backgroundColor": "#FFFFFF"
}
}
}
},
{
"path": "invite/cashDetail",
"style": {
"navigationBarTitleText": "申请提现",
"h5": {
"titleNView": {
"backgroundColor": "#FFFFFF"
}
}
}
},
{
"path": "invite/zhifubao",
"style": {
"navigationBarTitleText": "提现账号",
"h5": {
"titleNView": {
"backgroundColor": "#FFFFFF"
}
}
}
},
{
"path": "invite/cashList",
"style": {
"navigationBarTitleText": "提现记录",
"h5": {
"titleNView": {
"backgroundColor": "#FFFFFF"
}
}
}
},
{
"path": "invite/moneyList",
"style": {
"navigationBarTitleText": "红包明细",
"h5": {
"titleNView": {
"backgroundColor": "#FFFFFF"
}
}
}
},
{
"path": "integral/index",
"style": {
"navigationBarTitleText": "我的积分",
"h5": {
"titleNView": {
"backgroundColor": "#FFFFFF"
}
}
}
},
{
"path": "collect/index",
"style": {
"navigationBarTitleText": "我的收藏",
"enablePullDownRefresh": true,
"h5": {
"titleNView": {
"backgroundColor": "#FFFFFF"
}
}
}
},
{
"path": "setting/index",
"style": {
"navigationBarTitleText": "设置",
"h5": {
"titleNView": {
"backgroundColor": "#FFFFFF"
}
}
}
}, {
"path": "setting/kefu",
"style": {
"navigationBarTitleText": "客服",
"navigationBarBackgroundColor": "#FFFFFF"
}
},
{
"path": "integral/inviteDet",
"style": {
"navigationBarTitleText": "我的钱包",
"h5": {
"titleNView": {
"backgroundColor": "#FFFFFF"
}
}
}
},
{
"path": "setting/xieyi",
"style": {
"navigationBarTitleText": "用户协议",
"h5": {
"titleNView": {
"backgroundColor": "#FFFFFF"
}
}
}
},
{
"path": "setting/mimi",
"style": {
"navigationBarTitleText": "隐私协议",
"h5": {
"titleNView": {
"backgroundColor": "#FFFFFF"
}
}
}
},
{
"path": "setting/bind",
"style": {
"navigationBarTitleText": "换绑手机号",
"h5": {
"titleNView": {
"backgroundColor": "#FFFFFF"
}
}
}
}, {
"path": "detail/detail",
"style": {
"navigationBarTitleText": "",
"enablePullDownRefresh": false,
"navigationBarBackgroundColor": "#000000",
"style": {
"safeAreaInsetBottom": "none"
},
"app-plus": {
// "subNVues": [{
// "id": "pay", //
// "path": "detail/subNvue/pay", //
// // "type": "popup",
// "style": {
// "position": "popup",
// "dock": "bottom",
// "width": "750rpx",
// "height": "150rpx",
// "background": "#fff"
// }
// }],
"bounce": "none",
"safearea": {
"bottom": {
"offset": "none"
}
}
}
// #ifndef MP-TOUTIAO
,
"navigationStyle": "custom"
// #endif
// #ifdef MP-TOUTIAO
,
"usingComponents": {
"video-player": "ext://industry/video-player"
}
// #endif
}
}, {
"path": "detail/detailIOS",
"style": {
"navigationBarTitleText": "",
"enablePullDownRefresh": false,
"navigationBarBackgroundColor": "#000000",
"style": {
"safeAreaInsetBottom": "none"
},
"app-plus": {
// "subNVues": [{
// "id": "pay", //
// "path": "detail/subNvue/pay", //
// // "type": "popup",
// "style": {
// "position": "popup",
// "dock": "bottom",
// "width": "750rpx",
// "height": "150rpx",
// "background": "#fff"
// }
// }],
"bounce": "none",
"safearea": {
"bottom": {
"offset": "none"
}
}
}
// #ifndef MP-TOUTIAO
,
"navigationStyle": "custom"
// #endif
// #ifdef MP-TOUTIAO
,
"usingComponents": {
"video-player": "ext://industry/video-player"
}
// #endif
}
}, {
"path": "wallet/wallet",
"style": {
"navigationBarTitleText": "金币充值",
"enablePullDownRefresh": false
}
}, {
"path": "wallet/wallet_detail",
"style": {
"navigationBarTitleText": "金币明细",
"enablePullDownRefresh": true
}
}, {
"path": "jilu/record",
"style": {
"navigationBarTitleText": "最近观看",
"enablePullDownRefresh": true
}
}, {
"path": "jilu/histor",
"style": {
"navigationBarTitleText": "追剧记录",
"enablePullDownRefresh": true
}
}, {
"path": "jifen/jifen",
"style": {
"navigationBarTitleText": "我的积分",
"enablePullDownRefresh": false
}
}, {
"path": "jifen/duihuan",
"style": {
"navigationBarTitleText": "积分兑换",
"enablePullDownRefresh": false
}
}, {
"path": "jilu/myLove",
"style": {
"navigationBarTitleText": "我的喜欢",
"enablePullDownRefresh": true
}
}, {
"path": "payOrder/payOrder",
"style": {
"navigationBarTitleText": "下单",
"enablePullDownRefresh": false
}
}, {
"path": "setting/logOff",
"style": {
"navigationBarTitleText": "注销账号",
"enablePullDownRefresh": false
}
}, {
"path": "setting/offXieyi",
"style": {
"navigationBarTitleText": "用户注销协议",
"enablePullDownRefresh": false
}
}, {
"path": "juqing/juqing",
"style": {
"navigationBarTitleText": "剧情介绍",
"enablePullDownRefresh": true
}
}, {
"path": "wallpaper/wallpaper",
"style": {
"navigationBarTitleText": "壁纸",
"enablePullDownRefresh": true
}
},
{
"path": "assistance/assistance",
"style": {
"navigationBarTitleText": "助力领会员",
"navigationBarBackgroundColor": "#F22947",
"navigationBarTextStyle": "white",
"enablePullDownRefresh": false
// #ifdef H5
,
"navigationStyle": "custom"
// #endif
}
},
{
"path": "setting/payXieYi",
"style": {
"navigationBarTitleText": "付费须知说明",
"enablePullDownRefresh": false
}
},
{
"path": "wallet/wallets",
"style": {
"navigationBarTitleText": "充值",
"enablePullDownRefresh": false,
"navigationStyle": "custom"
}
},
{
"path": "choujiang/choujiang",
"style": {
"navigationBarTitleText": "抽奖",
"navigationStyle": "custom"
}
},
{
"path": "gift/gift",
"style": {
"navigationStyle": "custom",
"navigationBarTitleText": "奖品列表"
}
},
{
"path": "gift/duihuan",
"style": {
"navigationBarTitleText": "兑换礼品"
}
}
]
},
{
"root": "pay",
"pages": [{
"path": "success",
"style": {
"navigationBarTitleText": "支付成功"
}
}
]
},
{
"root": "other",
"pages": [{
"path": "index/index",
"style": {
"navigationStyle": "custom",
"navigationBarTitleText": "更多"
}
},
{
"path": "about/about",
"style": {
"navigationBarTitleText": "关于我们"
}
},
{
"path": "coup/coup",
"style": {
"navigationBarTitleText": "卡包"
}
},
{
"path": "address/address",
"style": {
"navigationBarTitleText": "收货地址"
}
},
{
"path": "pay/pay",
"style": {
"navigationBarTitleText": "发红包"
}
},
{
"path": "slotMachine/slotMachine",
"style": {
"navigationBarTitleText": "抽奖",
"navigationStyle": "custom"
}
},
{
"path" : "blogger/blogger",
"style" :
{
"navigationBarTitleText" : "",
"navigationStyle": "custom"
}
},
{
"path" : "blogger/details",
"style" :
{
"navigationBarTitleText" : "",
"navigationStyle": "custom"
}
},
{
"path" : "topic/topic",
"style" :
{
"navigationBarTitleText" : "话题"
}
},
{
"path" : "topic/reserve",
"style" :
{
"navigationBarTitleText" : "",
"navigationStyle": "custom"
}
},
{
"path" : "tools/tools",
"style" :
{
"navigationBarTitleText" : "",
"navigationStyle": "custom"
}
}
]
}
],
"globalStyle": {
"navigationBarTextStyle": "black",
"navigationBarTitleText": "短剧",
"navigationBarBackgroundColor": "#FFFFFF",
"backgroundColor": "#F8F8F8"
},
"tabBar": {
"color": "#333333",
"selectedColor": "#FF7581",
"backgroundColor": "#FFFFFF",
"borderStyle": "black",
"list": [
{
"pagePath": "pages/task/index",
"iconPath": "static/tabbar/task@2x.png",
"selectedIconPath": "static/tabbar/task_@2x.png",
"text": "任务"
},
{
"pagePath": "pages/video/video",
"iconPath": "static/tabbar/index@2x.png",
"selectedIconPath": "static/tabbar/index_@2x.png",
"text": "刷剧"
}
// ,
// {
// "pagePath": "pages/index/index",
// "iconPath": "static/tabbar/index@2x.png",
// "selectedIconPath": "static/tabbar/index_@2x.png",
// "text": "刷剧"
// }
// {
// "pagePath": "pages/video/video",
// "iconPath": "static/tabbar/learn@2x.png",
// "selectedIconPath": "static/tabbar/learn_@2x.png",
// "text": "推荐"
// },
// {
// "pagePath": "pages/chasingDrama/chasingDrama",
// "iconPath": "static/tabbar/zhuiju.png",
// "selectedIconPath": "static/tabbar/zhuiju_.png",
// "text": "追剧"
// },
// {
// "pagePath": "pages/me/index",
// "iconPath": "static/tabbar/me@2x.png",
// "selectedIconPath": "static/tabbar/me_@2x.png",
// "text": "我的"
// }
]
},
"condition": { //
"current": 0, //(list )
"list": [{
"name": "", //
"path": "", //
"query": "" //onLoad
}]
}
}

View File

@ -1,14 +1,47 @@
{
"easycom": {
"^u-(.*)": "@/uview-ui/components/u-$1/u-$1.vue"
"^u-(.*)": "@/uview-ui/components/u-$1/u-$1.vue",
"^tn-(.*)": "@/tuniao-ui/components/tn-$1/tn-$1.vue"
},
"pages": [ //pageshttps://uniapp.dcloud.io/collocation/pages
{
"path": "pages/index/index",
"style": {
"navigationBarTitleText": "小剧场",
"navigationBarTitleText": "斯耀短剧",
"enablePullDownRefresh": true,
"navigationStyle": "custom"
}
},
{
"path": "pages/task/index",
"style": {
"navigationBarTitleText": "任务",
"enablePullDownRefresh": true,
"navigationStyle": "custom"
}
},
{
"path": "pages/task/stayTuned",
"style": {
"navigationBarTitleText": "任务",
"navigationStyle": "custom"
}
},
{
"path": "pages/task/prizeList",
"style": {
"navigationBarTitleText": "任务",
"navigationStyle": "custom"
}
},
{
"path": "pages/task/receiveMember",
"style": {
"navigationBarTitleText": "任务",
"navigationStyle": "custom"
}
},
@ -73,6 +106,15 @@
"style": {
"navigationBarTitleText": "我的",
"navigationStyle": "custom"
// #ifdef H5
,"enablePullDownRefresh": true
// #endif
}
},
{
"path": "pages/me/webview",
"style": {
"navigationBarTitleText": "客服"
}
},
{
@ -116,9 +158,10 @@
"path": "pages/login/registerApp",
"style": {
"navigationBarTitleText": "注册",
"navigationBarBackgroundColor": "#f1a48a",
"h5": {
"titleNView": {
"backgroundColor": "#FFFFFF"
"backgroundColor": "#f1a48a"
}
}
// #ifdef H5
@ -150,13 +193,19 @@
},
{
"path": "pages/login/register",
"style": {
"navigationBarTitleText": "注册",
"navigationBarTitleText": "",
"navigationBarBackgroundColor": "#f1a48a",
"h5": {
"titleNView": {
"backgroundColor": "#FFFFFF"
"backgroundColor": "#f1a48a"
}
}
// #ifdef H5
,
"navigationStyle": "custom"
// #endif
}
},
{
@ -173,7 +222,7 @@
"path": "pages/chasingDrama/chasingDrama",
"style": {
"navigationBarTitleText": "追剧",
"enablePullDownRefresh": false
"enablePullDownRefresh": true
// #ifdef H5
,
"navigationStyle": "custom"
@ -227,338 +276,549 @@
"style": {
"navigationBarTitleText": "手机号绑定"
}
},
{
"path": "pages/pays/pays",
"style": {
"navigationBarTitleText": ""
}
},
{
"path": "pages/first/first",
"style": {
"navigationBarTitleText": "开屏广告",
"navigationStyle": "custom"
}
},
{
"path" : "pages/pause/pause",
"style" :
{
// "navigationBarTitleText" : "服务器维护中",
"navigationStyle": "custom"
}
}
],
"subPackages": [{
"root": "me",
"pages": [{
"path": "feedback/index",
"style": {
"navigationBarTitleText": "意见反馈",
"navigationBarBackgroundColor": "#FFFFFF"
}
}, {
"path": "feedbackIndex/feedbackIndex",
"style": {
"navigationBarTitleText": "帮助中心",
"enablePullDownRefresh": false,
"navigationBarBackgroundColor": "#FFFFFF"
}
}, {
"path": "helpDetail/helpDetail",
"style": {
"navigationBarTitleText": "帮助详情",
"enablePullDownRefresh": false,
"navigationBarBackgroundColor": "#FFFFFF"
}
}, {
"path": "message/index",
"style": {
"navigationBarTitleText": "消息中心"
"root": "me",
"pages": [{
"path": "feedback/index",
"style": {
"navigationBarTitleText": "意见反馈",
"navigationBarBackgroundColor": "#FFFFFF"
}
}, {
"path": "balance/index",
"style": {
"navigationBarTitleText": "我的余额"
}
}, {
"path": "feedbackIndex/feedbackIndex",
"style": {
"navigationBarTitleText": "帮助中心",
"enablePullDownRefresh": false,
"navigationBarBackgroundColor": "#FFFFFF"
}
}, {
"path": "helpDetail/helpDetail",
"style": {
"navigationBarTitleText": "帮助详情",
"enablePullDownRefresh": false,
"navigationBarBackgroundColor": "#FFFFFF"
}
}, {
"path": "message/index",
"style": {
"navigationBarTitleText": "消息中心"
}
},
{
"path": "course/index",
"style": {
"navigationBarTitleText": "我的课程",
"enablePullDownRefresh": true,
"h5": {
"titleNView": {
"backgroundColor": "#FFFFFF"
}
}
}
},
{
"path": "invite/index",
"style": {
"navigationBarTitleText": "分享好友",
"navigationStyle": "custom",
"h5": {
"titleNView": {
"backgroundColor": "#FFFFFF"
}
}
}
},
{
"path": "invite/inviteDet",
"style": {
"navigationBarTitleText": "我的团队",
"h5": {
"titleNView": {
"backgroundColor": "#FFFFFF"
}
}
}
},
{
"path": "invite/cashDetail",
"style": {
"navigationBarTitleText": "申请提现",
"navigationStyle": "custom",
"h5": {
"titleNView": {
"backgroundColor": "#FFFFFF"
}
}
}
},
{
"path": "invite/realName",
"style": {
"navigationBarTitleText": "实名认证",
"h5": {
"titleNView": {
"backgroundColor": "#FFFFFF"
}
}
}
},
{
"path": "invite/zhifubao",
"style": {
"navigationBarTitleText": "提现账号",
"h5": {
"titleNView": {
"backgroundColor": "#FFFFFF"
}
}
}
},
{
"path": "invite/cashList",
"style": {
"navigationBarTitleText": "提现记录",
"h5": {
"titleNView": {
"backgroundColor": "#FFFFFF"
}
}
}
},
{
"path": "invite/moneyList",
"style": {
"navigationBarTitleText": "红包明细",
"h5": {
"titleNView": {
"backgroundColor": "#FFFFFF"
}
}
}
},
{
"path": "integral/index",
"style": {
"navigationBarTitleText": "我的积分",
"h5": {
"titleNView": {
"backgroundColor": "#FFFFFF"
}
}
}
},
{
"path": "collect/index",
"style": {
"navigationBarTitleText": "我的收藏",
"enablePullDownRefresh": true,
"h5": {
"titleNView": {
"backgroundColor": "#FFFFFF"
}
}
}
},
{
"path": "setting/index",
"style": {
"navigationBarTitleText": "设置",
"h5": {
"titleNView": {
"backgroundColor": "#FFFFFF"
}
}
}
}, {
"path": "setting/kefu",
"style": {
"navigationBarTitleText": "客服",
"navigationBarBackgroundColor": "#FFFFFF"
}
},
{
"path": "integral/inviteDet",
"style": {
"navigationBarTitleText": "我的钱包",
"h5": {
"titleNView": {
"backgroundColor": "#FFFFFF"
}
}
}
},
{
"path": "setting/xieyi",
"style": {
"navigationBarTitleText": "用户协议",
"h5": {
"titleNView": {
"backgroundColor": "#FFFFFF"
}
}
}
},
{
"path": "setting/mimi",
"style": {
"navigationBarTitleText": "隐私协议",
"h5": {
"titleNView": {
"backgroundColor": "#FFFFFF"
}
}
}
},
{
"path": "setting/bind",
"style": {
"navigationBarTitleText": "换绑手机号",
"h5": {
"titleNView": {
"backgroundColor": "#FFFFFF"
}
}
}
}, {
}
},
{
"path": "course/index",
"style": {
"navigationBarTitleText": "我的课程",
"enablePullDownRefresh": true,
"h5": {
"titleNView": {
"backgroundColor": "#FFFFFF"
"path": "detail/detail",
"style": {
"navigationBarTitleText": "",
"enablePullDownRefresh": false,
"navigationBarBackgroundColor": "#000000",
"style": {
"safeAreaInsetBottom": "none"
},
"app-plus": {
// "subNVues": [{
// "id": "pay", //
// "path": "detail/subNvue/pay", //
// // "type": "popup",
// "style": {
// "position": "popup",
// "dock": "bottom",
// "width": "750rpx",
// "height": "150rpx",
// "background": "#fff"
// }
// }],
"bounce": "none",
"safearea": {
"bottom": {
"offset": "none"
}
}
}
}
}
},
{
"path": "invite/index",
"style": {
"navigationBarTitleText": "分享好友",
"h5": {
"titleNView": {
"backgroundColor": "#FFFFFF"
}
}
}
},
{
"path": "invite/inviteDet",
"style": {
"navigationBarTitleText": "我的团队",
"h5": {
"titleNView": {
"backgroundColor": "#FFFFFF"
}
}
}
},
{
"path": "invite/cashDetail",
"style": {
"navigationBarTitleText": "申请提现",
"h5": {
"titleNView": {
"backgroundColor": "#FFFFFF"
}
}
}
},
{
"path": "invite/zhifubao",
"style": {
"navigationBarTitleText": "提现账号",
"h5": {
"titleNView": {
"backgroundColor": "#FFFFFF"
}
}
}
},
{
"path": "invite/cashList",
"style": {
"navigationBarTitleText": "提现记录",
"enablePullDownRefresh": true,
"h5": {
"titleNView": {
"backgroundColor": "#FFFFFF"
}
}
}
},
{
"path": "invite/moneyList",
"style": {
"navigationBarTitleText": "钱包明细",
"h5": {
"titleNView": {
"backgroundColor": "#FFFFFF"
}
}
}
},
{
"path": "integral/index",
"style": {
"navigationBarTitleText": "我的积分",
"h5": {
"titleNView": {
"backgroundColor": "#FFFFFF"
}
}
}
},
{
"path": "collect/index",
"style": {
"navigationBarTitleText": "我的收藏",
"enablePullDownRefresh": true,
"h5": {
"titleNView": {
"backgroundColor": "#FFFFFF"
}
}
}
},
{
"path": "setting/index",
"style": {
"navigationBarTitleText": "设置",
"h5": {
"titleNView": {
"backgroundColor": "#FFFFFF"
}
}
}
}, {
"path": "setting/kefu",
"style": {
"navigationBarTitleText": "客服",
"navigationBarBackgroundColor": "#FFFFFF"
}
},
{
"path": "integral/inviteDet",
"style": {
"navigationBarTitleText": "我的钱包",
"h5": {
"titleNView": {
"backgroundColor": "#FFFFFF"
}
}
}
},
{
"path": "setting/xieyi",
"style": {
"navigationBarTitleText": "用户协议",
"h5": {
"titleNView": {
"backgroundColor": "#FFFFFF"
}
}
}
},
{
"path": "setting/mimi",
"style": {
"navigationBarTitleText": "隐私协议",
"h5": {
"titleNView": {
"backgroundColor": "#FFFFFF"
}
}
}
},
{
"path": "setting/bind",
"style": {
"navigationBarTitleText": "换绑手机号",
"h5": {
"titleNView": {
"backgroundColor": "#FFFFFF"
}
}
}
}, {
"path": "detail/detail",
"style": {
"navigationBarTitleText": "",
"enablePullDownRefresh": false,
"navigationBarBackgroundColor": "#000000",
"app-plus": {
"bounce": "none"
}
// #ifndef MP-TOUTIAO
,
"navigationStyle": "custom"
// #endif
// #ifdef MP-TOUTIAO
// #ifndef MP-TOUTIAO
,
"usingComponents": {
"video-player": "ext://industry/video-player"
"navigationStyle": "custom"
// #endif
// #ifdef MP-TOUTIAO
,
"usingComponents": {
"video-player": "ext://industry/video-player"
}
// #endif
}
// #endif
}, {
}
}, {
"path": "wallet/wallet",
"style": {
"navigationBarTitleText": "金豆充值",
"enablePullDownRefresh": false
}
}, {
"path": "wallet/mingxi",
"style": {
"navigationBarTitleText": "金豆明细",
"enablePullDownRefresh": true
}
}, {
"path": "jilu/jilu",
"style": {
"navigationBarTitleText": "最近观看",
"enablePullDownRefresh": true
}
}, {
"path": "jilu/histor",
"style": {
"navigationBarTitleText": "追剧记录",
"enablePullDownRefresh": true
}
}, {
"path": "jifen/jifen",
"style": {
"navigationBarTitleText": "我的积分",
"enablePullDownRefresh": false
}
}, {
"path": "jifen/duihuan",
"style": {
"navigationBarTitleText": "积分兑换",
"enablePullDownRefresh": false
}
}, {
"path": "jilu/myLove",
"style": {
"navigationBarTitleText": "我的喜欢",
"enablePullDownRefresh": true
}
}, {
"path": "payOrder/payOrder",
"style": {
"navigationBarTitleText": "下单",
"enablePullDownRefresh": false
}
}, {
"path": "setting/logOff",
"style": {
"navigationBarTitleText": "注销账号",
"enablePullDownRefresh": false
}
}, {
"path": "setting/offXieyi",
"style": {
"navigationBarTitleText": "用户注销协议",
"enablePullDownRefresh": false
}
}, {
"path": "juqing/juqing",
"style": {
"navigationBarTitleText": "剧情介绍",
"enablePullDownRefresh": true
}
}, {
"path": "wallpaper/wallpaper",
"style": {
"navigationBarTitleText": "壁纸",
"enablePullDownRefresh": true
}
},
{
"path": "assistance/assistance",
"style": {
"navigationBarTitleText": "助力领会员",
"navigationBarBackgroundColor": "#F22947",
"navigationBarTextStyle": "white",
"enablePullDownRefresh": false
// #ifdef H5
"path": "detail/detailIOS",
"style": {
"navigationBarTitleText": "",
"enablePullDownRefresh": false,
"navigationBarBackgroundColor": "#000000",
"style": {
"safeAreaInsetBottom": "none"
},
"app-plus": {
// "subNVues": [{
// "id": "pay", //
// "path": "detail/subNvue/pay", //
// // "type": "popup",
// "style": {
// "position": "popup",
// "dock": "bottom",
// "width": "750rpx",
// "height": "150rpx",
// "background": "#fff"
// }
// }],
"bounce": "none",
"safearea": {
"bottom": {
"offset": "none"
}
}
}
// #ifndef MP-TOUTIAO
,
"navigationStyle": "custom"
// #endif
"navigationStyle": "custom"
// #endif
// #ifdef MP-TOUTIAO
,
"usingComponents": {
"video-player": "ext://industry/video-player"
}
// #endif
}
}, {
"path": "wallet/wallet",
"style": {
"navigationBarTitleText": "金币充值",
"enablePullDownRefresh": false
}
}, {
"path": "wallet/wallet_detail",
"style": {
"navigationBarTitleText": "金币明细",
"enablePullDownRefresh": true
}
}, {
"path": "jilu/record",
"style": {
"navigationBarTitleText": "最近观看",
"enablePullDownRefresh": true
}
}, {
"path": "jilu/histor",
"style": {
"navigationBarTitleText": "追剧记录",
"enablePullDownRefresh": true
}
}, {
"path": "jifen/jifen",
"style": {
"navigationBarTitleText": "我的积分",
"enablePullDownRefresh": false
}
}, {
"path": "jifen/duihuan",
"style": {
"navigationBarTitleText": "积分兑换",
"enablePullDownRefresh": false
}
}, {
"path": "jilu/myLove",
"style": {
"navigationBarTitleText": "我的喜欢",
"enablePullDownRefresh": true
}
}, {
"path": "payOrder/payOrder",
"style": {
"navigationBarTitleText": "下单",
"enablePullDownRefresh": false
}
}, {
"path": "setting/logOff",
"style": {
"navigationBarTitleText": "注销账号",
"enablePullDownRefresh": false
}
}, {
"path": "setting/offXieyi",
"style": {
"navigationBarTitleText": "用户注销协议",
"enablePullDownRefresh": false
}
}, {
"path": "juqing/juqing",
"style": {
"navigationBarTitleText": "剧情介绍",
"enablePullDownRefresh": true
}
}, {
"path": "wallpaper/wallpaper",
"style": {
"navigationBarTitleText": "壁纸",
"enablePullDownRefresh": true
}
},
{
"path": "assistance/assistance",
"style": {
"navigationBarTitleText": "助力领会员",
"navigationBarBackgroundColor": "#F22947",
"navigationBarTextStyle": "white",
"enablePullDownRefresh": false
// #ifdef H5
,
"navigationStyle": "custom"
// #endif
}
},
{
"path": "setting/payXieYi",
"style": {
"navigationBarTitleText": "付费须知说明",
"enablePullDownRefresh": false
}
},
{
"path": "wallet/wallets",
"style": {
"navigationBarTitleText": "充值",
"enablePullDownRefresh": false,
"navigationStyle": "custom"
}
},
{
"path": "choujiang/choujiang",
"style": {
"navigationBarTitleText": "抽奖",
"navigationStyle": "custom"
}
},
{
"path": "gift/gift",
"style": {
"navigationStyle": "custom",
"navigationBarTitleText": "奖品列表"
}
},
{
"path": "gift/duihuan",
"style": {
"navigationBarTitleText": "兑换礼品"
}
}
},
{
"path": "setting/payXieYi",
"style": {
"navigationBarTitleText": "付费须知说明",
"enablePullDownRefresh": false
]
},
{
"root": "pay",
"pages": [{
"path": "success",
"style": {
"navigationBarTitleText": "支付成功"
}
}
},
{
"path": "wallet/wallets",
"style": {
"navigationBarTitleText": "充值",
"enablePullDownRefresh": false,
"navigationStyle": "custom"
]
},
{
"root": "other",
"pages": [{
"path": "index/index",
"style": {
"navigationStyle": "custom",
"navigationBarTitleText": "更多"
}
},
{
"path": "about/about",
"style": {
"navigationBarTitleText": "关于我们"
}
},
{
"path": "coup/coup",
"style": {
"navigationBarTitleText": "卡包"
}
},
{
"path": "address/address",
"style": {
"navigationBarTitleText": "收货地址"
}
},
{
"path": "pay/pay",
"style": {
"navigationBarTitleText": "发红包"
}
},
{
"path": "slotMachine/slotMachine",
"style": {
"navigationBarTitleText": "抽奖",
"navigationStyle": "custom"
}
},
{
"path": "blogger/blogger",
"style": {
"navigationBarTitleText": "",
"navigationStyle": "custom"
}
},
{
"path": "blogger/details",
"style": {
"navigationBarTitleText": "",
"navigationStyle": "custom"
}
},
{
"path": "topic/topic",
"style": {
"navigationBarTitleText": "话题"
}
},
{
"path": "topic/reserve",
"style": {
"navigationBarTitleText": "",
"navigationStyle": "custom"
}
},
{
"path": "tools/tools",
"style": {
"navigationBarTitleText": "",
"navigationStyle": "custom"
}
}
}
]
}],
]
}
],
"globalStyle": {
"navigationBarTextStyle": "black",
@ -585,6 +845,12 @@
"selectedIconPath": "static/tabbar/learn_@2x.png",
"text": "推荐"
},
{
"pagePath": "pages/task/index",
"iconPath": "static/tabbar/task@2x.png",
"selectedIconPath": "static/tabbar/task_@2x.png",
"text": "任务"
},
{
"pagePath": "pages/chasingDrama/chasingDrama",
"iconPath": "static/tabbar/zhuiju.png",

View File

@ -1,6 +1,6 @@
<template>
<view style="padding-bottom: 100rpx;">
<view class="title flex align-center justify-center">
<!-- <view class="title flex align-center justify-center">
<view class="title-box">
<view class="title-box-title flex align-center justify-between">
<view class="title-box-title-l">
@ -45,13 +45,13 @@
</view>
</view>
</view>
</view>
</view> -->
<view v-if="list.length>0" class="itemTitle flex align-center justify-center">
<view class="itemTitle-box flex align-center justify-between">
<view class="itemTitle-box-l">
最近观看
</view>
<view class="itemTitle-box-r" @click="goNav('/me/jilu/jilu')">
<view class="itemTitle-box-r" @click="goNav('/me/jilu/record')">
更多
</view>
</view>
@ -113,15 +113,17 @@
</template>
<script>
import { isEmpty } from '../../utils/util';
import { $cache_chasingDrama} from '@/store/cashe.js'
export default {
data() {
return {
isErQd: false, //
isQd: false, //
day: 0, //
isErQd: $cache_chasingDrama.isErQd|| false, //
isQd: $cache_chasingDrama.isQd||false, //
day: $cache_chasingDrama.day|| 0, //
numList: this.getThisWeekDates(),
list: [],
zhuiju: [],
list: $cache_chasingDrama.list||[],
zhuiju: $cache_chasingDrama.zhuiju|| [],
};
},
onLoad() {
@ -135,6 +137,13 @@
this.myQianInfo()
}
},
onPullDownRefresh() {
$cache_chasingDrama.clear()
this.newLook()
this.myVideo()
this.myQianInfo()
uni.stopPullDownRefresh()
},
methods: {
//
goCourse(e, courseDetailsId) {
@ -154,30 +163,39 @@
let data = {
userId: uni.getStorageSync('userId')
}
this.$Request.getT('/app/integral/selectIntegralDay', data).then(res => {
if (res.code == 0) {
if (res.data.nowIntegral) { //
this.day = res.data.nowIntegral.day
this.isQd = true
}
if (res.data.yesterdayIntegral) { //
if (!this.day) {
this.day = res.data.yesterdayIntegral.day
}
this.isErQd = true
}
if (res.data.nowIntegral == null && res.data.yesterdayIntegral == null) {
this.day = 0
this.isQd = false
this.isErQd = false
}
} else {
uni.showToast({
title: res.msg,
icon: 'none'
})
}
})
if(!isEmpty($cache_chasingDrama.day)&&!isEmpty($cache_chasingDrama.isQd)&&!isEmpty($cache_chasingDrama.isErQd)){
this.day=$cache_chasingDrama.day
this.isQd=$cache_chasingDrama.isQd
this.isErQd=$cache_chasingDrama.isErQd
return
}
// this.$Request.getT('/app/integral/selectIntegralDay', data).then(res => {
// if (res.code == 0) {
// if (res.data.nowIntegral) { //
// this.day = res.data.nowIntegral.day
// this.isQd = true
// }
// if (res.data.yesterdayIntegral) { //
// if (!this.day) {
// this.day = res.data.yesterdayIntegral.day
// }
// this.isErQd = true
// }
// if (res.data.nowIntegral == null && res.data.yesterdayIntegral == null) {
// this.day = 0
// this.isQd = false
// this.isErQd = false
// }
// $cache_chasingDrama.set('day',this.day)
// $cache_chasingDrama.set('isQd',this.isQd)
// $cache_chasingDrama.set('isErQd',this.isErQd)
// } else {
// uni.showToast({
// title: res.msg,
// icon: 'none'
// })
// }
// })
},
//
goNav(url) {
@ -195,12 +213,17 @@
myVideo() {
let data = {
page: 1,
limit: 2,
limit: 6,
classify: 1, //1 2 3
}
if($cache_chasingDrama.zhuiju){
this.zhuiju = $cache_chasingDrama.zhuiju
return
}
this.$Request.getT('/app/courseCollect/selectByUserId', data).then(res => {
if (res.code == 0) {
this.zhuiju = res.data.records
$cache_chasingDrama.set('zhuiju',this.zhuiju)
}
})
},
@ -208,15 +231,20 @@
newLook() {
let data = {
page: 1,
limit: 2,
limit: 6,
classify: 3, //1 2 3
}
if($cache_chasingDrama.list){
this.list=$cache_chasingDrama.list
return
}
this.$Request.getT('/app/courseCollect/selectByUserId', data).then(res => {
if (res.code == 0) {
this.list = res.data.records
this.$nextTick(() => {
this.videPage = 1
})
$cache_chasingDrama.set('list',this.list)
}
})
},
@ -321,24 +349,32 @@
}
}
.zuijin-box.justify-between{
justify-content: flex-start;
}
.zuijin {
width: 100%;
margin-top: 26rpx;
.zuijin-box {
width: 686rpx;
width: 700rpx;
height: 100%;
flex-wrap: wrap;
}
.zuijin-box-item {
width: calc((686rpx - 20rpx) / 2);
width: calc((700rpx - 40rpx) / 3);
height: 100%;
margin-bottom: 30rpx;
margin-right: calc(40rpx / 2);
}
.zuijin-box-item:nth-of-type(3n){
margin-right: 0;
}
.zuijin-box-item-img {
width: 100%;
// height: 204rpx;
height: 204rpx;
border-radius: 24rpx 24rpx 0 0;
position: relative;

77
pages/first/first.vue Normal file
View File

@ -0,0 +1,77 @@
<template>
<view class="u-relative bg-gray fixed position-all">
<view class="time btn" v-if="time<=0" @click="enter"><text>进入</text></view>
<view class="time" v-else ><text>{{time}}</text></view>
<view class="w-full box">
<image src="/static/images/share_bg2.png" class="img"></image>
</view>
</view>
</template>
<script>
export default {
data() {
return {
time:3
}
},
onLoad() {
this.init()
},
methods: {
enter(){
uni.reLaunch({
url:'/pages/index/index'
})
},
init(){
this.timer=setInterval(()=>{
this.time--
if(this.time<=0){
clearInterval(this.timer)
}
},1000)
}
}
}
</script>
<style lang="scss" scoped>
.position-all{
position: fixed;
inset: 0;
.time{
position: absolute;
z-index: 10;
width: 50rpx;
height: 50rpx;
text-align: center;
display: flex;
justify-content: center;
font-size: 14px;
color: #555;
align-items: center;
right: 30rpx;
border-radius: 50%;
background-color: rgba(255, 255, 255, .5);
border: 1px solid rgba(255, 255, 255, .8);
top: calc(var(--status-bar-height) + 20rpx );
}
.btn{
border-radius: 100rpx;
white-space: nowrap;
width: auto;
height: auto;
padding: 4rpx 20rpx;
}
.box{
position: absolute;
inset: 0;
.img{
width: 100%;
height: 100%;
}
}
}
</style>

View File

@ -78,6 +78,7 @@
}
},
onShow() {
this.page=1;
this.enable = true
this.getCourseList()
},

View File

@ -116,7 +116,7 @@
<u-popup v-model="showjl" :closeable="true" close-icon-color="#ffffff" mode="center">
<view class="zl" @click="goZl()">
<image class="zl-bg"
src="https://duanju.xianmxkj.com/file/uploadPath/2023/12/14/adf37beca97826d44970d20118f88e29.png"
src="https://dj-api.hnsiyao.cn/file/uploadPath/2023/12/14/adf37beca97826d44970d20118f88e29.png"
mode=""></image>
<view class="zl-title">
会员免费领
@ -136,10 +136,10 @@
<u-popup v-model="xxPopu" :closeable="false" close-icon-color="#ffffff" mode="center">
<view class="zl" style="height: 580rpx;" @click="saveNewUser()">
<image class="zl-bgs"
src="https://duanju.xianmxkj.com/file/uploadPath/2024/02/22/cee2fcdc4c4ebe31ab4ce2c3c3a3d183.png"
src="https://dj-api.hnsiyao.cn/file/uploadPath/2024/02/22/cee2fcdc4c4ebe31ab4ce2c3c3a3d183.png"
mode=""></image>
<view class="zl-titles">
{{xxJDNum}} <text></text>
{{xxJDNum}} <text></text>
</view>
</view>
</u-popup>
@ -382,7 +382,7 @@
this.$Request.postT('/app/user/getNewUserRed').then(res => {
if (res.code == 0) {
this.xxPopu = false;
this.$queue.showToast('领取成功,金已到账!');
this.$queue.showToast('领取成功,金已到账!');
} else {
this.$queue.showToast(res.msg)
}

File diff suppressed because it is too large Load Diff

View File

@ -4,20 +4,20 @@
<view class="head">
<scroll-view scroll-x class="bg nav bg-white u-border-bottom">
<view class="flex text-center">
<view class="cu-item flex-sub text-bold" :class="item.name==TabCur?' cur ':'text-black'"
<view class="cu-item flex-sub text-bold" :class="item.name===TabCur?' cur ':'text-black'"
v-for="(item,index) in tabList" :key="index" :data-id="item.name" @tap="tabSelect">
{{item.name}}
<view v-if="item.name==TabCur"
<view v-if="item.name===TabCur"
style="width: 64rpx;height: 8rpx;;background: #5074FF;margin: -20rpx auto;border-radius: 10rpx;">
</view>
</view>
</view>
</scroll-view>
</view>
<view class="headlen">
<view v-if="TabCur == tabList[0].name">
<view class="headLen">
<view v-if="TabCur === tabList[0].name">
<view class="page-box" v-if="latelyCourseList.length && userId">
<view class="order" v-for="(item, index) in latelyCourseList" :key="index"
<view class="orderView" v-for="(item, index) in latelyCourseList" :key="index"
@click="goCourseDet(item)">
<view class="item">
<view class="left">
@ -71,7 +71,7 @@
</view>
<view v-if="TabCur == tabList[2].name">
<view class="page-box" v-if="collectList.length && userId">
<view class="order" v-for="(item,index) in collectList" :key='index' @click="goCourseDet(item)">
<view class="orderView" v-for="(item,index) in collectList" :key='index' @click="goCourseDet(item)">
<view class="item">
<view class="left">
<image :src="item.titleImg" mode="aspectFill"
@ -444,7 +444,7 @@
z-index: 999;
}
.headlen {
.headLen {
/* #ifdef H5 */
margin-top: 80rpx;
/* #endif */
@ -457,7 +457,7 @@
padding-bottom: 100px;
}
.order {
.orderView {
width: 700rpx;
background-color: #ffffff;
margin: 20rpx auto;

View File

@ -1,23 +1,22 @@
<template>
<view
style="background-image: url(https://renwu.xiansqx.com/img/20210809/71fcac577b1945a7aeb724c8bd12a171.png);background-size: 100%;">
<view style="text-align: center;">
<image
style="width: 160upx;height: 160upx;margin-top: 200upx;border-radius:20upx;border: 2px solid #FFFFFF;"
src="../../static/images/logo.png"></image>
<view style="font-size: 46upx;margin-top: 20upx;color: #FFFFFF;font-weight: 500;">短剧APP</view>
<view style="font-size: 28upx;margin-top: 8upx;color: #FFFFFF;font-weight: 300;">{{message}}</view>
<button class="confirm-btn" @click="taobaoLogin">下载短剧APP</button>
<view style="margin-top: 300upx;text-align: center"><text
style="color: #666666;font-size: 32upx;font-weight: 400;"></text></view>
<view style="color: #333333;margin-top: 20upx;font-weight: 600;font-size: 38upx;"></view>
<view style="margin-top: 40upx;background: #FF0223;height: 10upx;width: 60upx;margin-left: 46%;"></view>
<view class="containersView">
<div style="width: 100%;height: 85%;position: absolute;background: url('../../static/images/appeq_bg.png') no-repeat center bottom / cover;"></div>
<view style="text-align: center;position: relative;height: 100%;display: flex;flex-direction: column;align-items: center;justify-content: center;">
<image style="width: 124rpx;height: 124rpx;margin-top: -920rpx;border-radius:20upx;" src="../../static/images/appLogo.png"></image>
<view style="font-size: 40rpx;margin-top: 22rpx;color: #FFFFFF;font-weight: bold;">斯耀短剧APP</view>
<view style="font-size: 28rpx;margin-top: 16rpx;color: #FFFFFF;font-weight: bold;">海量电子榨菜 免费又过瘾</view>
<button class="confirm-btn" @click="taobaoLogin">{{confirmBtn}}</button>
</view>
<view id="shareit" v-if="show_share" @tap="closeShare">
<image class="arrow" src="https://renwu.xiansqx.com/img/20210813/9aa484db4c60458f86deb2a8ab6fe400.png">
</image>
<view id="follow">点击右上角按钮选择浏览器打开下载</view>
</view>
<!-- #ifdef H5 -->
<div v-if="isWeixin" style="width: 100%;height: 100%;position: absolute;top: 0;background: url('../../static/images/open_guide.png') no-repeat center bottom / cover;"></div>
<!-- #endif -->
</view>
</template>
<script>
@ -32,27 +31,33 @@
openShares: false,
relationId: '',
sending: false,
confirmBtn: '斯耀短剧APP',
isWeixin: false,
};
},
onLoad(e) {
let u = navigator.userAgent;
if ( u.indexOf('iPhone') > -1) {
// #ifdef H5
this.confirmBtn = "跳转网页版首页"
// #endif
}
if ( u.toLowerCase().indexOf('micromessenger') !== -1) {
this.isWeixin = true
}
},
methods: {
closeShare() {
this.show_share = false;
},
taobaoLogin() {
uni.setClipboardData({
data: this.relationId,
success: r => {
// this.$queue.showToast('');
}
});
var u = navigator.userAgent;
if (u.indexOf('Android') > -1 || u.indexOf('Adr') > -1) {
this.$Request.get('/app/common/type/49').then(res => {
if (res.code == 0) {
if (res.code === 0) {
if (res.data && res.data.value) {
if (this.openShare) {
let ua = navigator.userAgent.toLowerCase();
@ -69,6 +74,7 @@
} else {
this.show_share = true;
}
} else {
// #ifndef H5
plus.runtime.openURL(res.data.value, function(res) {
@ -76,6 +82,12 @@
});
// #endif
// #ifdef H5
uni.setClipboardData({
data: res.data.value,
success: r => {
// this.$queue.showToast('');
}
});
window.location.href = res.data.value;
// #endif
}
@ -83,8 +95,9 @@
}
});
} else {
this.$Request.get('/app/common/type/50').then(res => {
if (res.code == 0) {
if (res.code === 0) {
if (res.data && res.data.value) {
if (this.openShares) {
let ua = navigator.userAgent.toLowerCase();
@ -97,6 +110,9 @@
// #endif
// #ifdef H5
window.location.href = res.data.value;
// uni.switchTab({
// url: 'pages/index/index'
// })
// #endif
} else {
this.show_share = true;
@ -108,7 +124,17 @@
});
// #endif
// #ifdef H5
window.location.href = res.data.value;
uni.setClipboardData({
data: res.data.value,
success: r => {
// this.$queue.showToast('');
}
});
uni.switchTab({
url: '/pages/index/index'
})
// window.location.href = res.data.value;
// #endif
}
}
@ -120,7 +146,15 @@
};
</script>
<style lang="scss">
<style lang="scss" scoped>
uni-page-body{
width: 100%;
height: 100%;
}
.containersView {
width: 100%;
height: 100%;
}
#shareit {
-webkit-user-select: none;
position: fixed;
@ -252,16 +286,18 @@
}
.confirm-btn {
width: 500upx;
height: 100upx;
line-height: 100upx;
margin-top: 200upx;
color: #FE0122;
font-size: 38upx;
font-weight: 500;
// &:after {
// border-radius: 60px;
// }
width: 416rpx;
height: 90rpx;
line-height: 90rpx;
background: #FD5775;
color: #fff;
font-size: 32rpx;
font-weight: bold;
font-size: 32rpx;
color: #FFFFFF;
position: absolute;
left: 0;
right: 0;
bottom: 70rpx;
}
</style>

View File

@ -1,5 +1,5 @@
<template>
<view class="container1">
<view class="containerView">
<view class="cu-form-group"
style="margin: 30upx;border: 2upx solid whitesmoke;margin-bottom: 20px;border-radius: 30px">
<view class="title">手机号</view>
@ -11,11 +11,10 @@
<text class="title">验证码</text>
<input type="number" :value="code" placeholder="请输入验证码" maxlength="6" data-key="code" @input="inputChange"
@confirm="toLogin" />
<button class="send-msg" @click="sendMsg" :disabled="sending">{{ sendTime }}</button>
<button class="send-msg" @click="sendMsg" :disabled="sendIng">{{ sendTime }}</button>
</view>
<button class="confirm-btn" @click="toLogin" :disabled="logining">立即绑定</button>
</view>
<button class="confirm-btn" @click="toLogin" :disabled="loginIng">立即绑定</button>
</view>
</template>
@ -29,8 +28,8 @@
return {
mobile: '',
code: '',
logining: false,
sending: false,
loginIng: false,
sendIng: false,
sendTime: '获取验证码',
count: 60,
type: '',
@ -55,11 +54,11 @@
} = this;
if (count === 1) {
this.count = 60;
this.sending = false;
this.sendIng = false;
this.sendTime = '获取验证码'
} else {
this.count = count - 1;
this.sending = true;
this.sendIng = true;
this.sendTime = count - 1 + '秒后重新获取';
setTimeout(this.countDown.bind(this), 1000);
}
@ -76,7 +75,7 @@
this.$queue.showLoading("正在发送验证码...");
this.$Request.getT('/app/Login/sendMsg/' + mobile + '/gzg').then(res => {
if (res.code === 0) {
this.sending = true;
this.sendIng = true;
this.$queue.showToast('验证码发送成功请注意查收');
this.countDown();
uni.hideLoading();
@ -162,7 +161,7 @@
background: #557EFD;
}
.container1 {
.containerView {
top: 0;
padding-top: 32upx;
position: relative;

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