爱简收旧衣按件回收前端代码仓库
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

741 lines
19 KiB

2 months ago
2 months ago
2 months ago
2 months ago
1 month ago
2 months ago
1 month ago
1 month ago
2 months ago
1 month ago
1 month ago
2 months ago
1 month ago
1 month ago
2 months ago
2 months ago
1 month ago
2 months ago
1 month ago
2 months ago
2 months ago
2 months ago
2 months ago
2 months ago
1 month ago
2 months ago
1 month ago
1 month ago
1 month ago
2 months ago
2 months ago
1 month ago
2 months ago
2 months ago
2 months ago
1 month ago
2 months ago
1 month ago
2 months ago
2 months ago
2 months ago
2 months ago
2 months ago
2 months ago
2 months ago
2 months ago
2 months ago
2 months ago
2 months ago
2 months ago
2 months ago
2 months ago
1 month ago
2 months ago
2 months ago
2 months ago
2 months ago
2 months ago
2 months ago
2 months ago
2 months ago
2 months ago
2 months ago
2 months ago
2 months ago
2 months ago
2 months ago
2 months ago
2 months ago
2 months ago
2 months ago
2 months ago
2 months ago
2 months ago
2 months ago
2 months ago
2 months ago
2 months ago
2 months ago
2 months ago
2 months ago
2 months ago
1 month ago
2 months ago
  1. <template>
  2. <view class="promotion-page">
  3. <!-- 顶部渐变导航栏 -->
  4. <view class="nav-bar" :style="{height: navBarTotalHeight + 'px', paddingTop: statusBarHeight + 'px'}">
  5. <view class="nav-bar-inner">
  6. <view class="back-icon" @tap="navigateBack">
  7. <uni-icons type="left" size="22" color="#222" />
  8. </view>
  9. <view class="nav-bar-title">回收侠·推客联盟</view>
  10. <view class="nav-bar-right">
  11. <uni-icons type="more-filled" size="22" color="#222" />
  12. </view>
  13. </view>
  14. </view>
  15. <!-- 打钩标签区 -->
  16. <view class="feature-tags" :style="{marginTop: navBarTotalHeight+statusBarHeight + 'px'}">
  17. <view class="tag" v-for="(t, i) in featureTags" :key="i">
  18. <text class="check"></text>
  19. <text class="text">{{t}}</text>
  20. </view>
  21. </view>
  22. <!-- 主内容区卡片悬浮覆盖打钩区 -->
  23. <view class="main-content">
  24. <!-- 用户卡片 -->
  25. <view class="user-card">
  26. <view class="user-info-row">
  27. <view class="avatar-box">
  28. <view class="avatar-frame">
  29. <image class="avatar-img" :src="userInfo.avatar" mode="aspectFill" />
  30. <view class="user-type">{{userInfo.type}}</view>
  31. </view>
  32. </view>
  33. <view class="user-meta">
  34. <view class="nickname">{{userInfo.name}}</view>
  35. <view class="userid">ID: {{userInfo.intentioCode}}</view>
  36. </view>
  37. <view class="user-count">推广人数</view>
  38. </view>
  39. <view class="user-stats-row">
  40. <view class="stat-block">
  41. <view class="stat-label">可提现佣金()</view>
  42. <view class="stat-value main">{{userInfo.money}}</view>
  43. <button class="withdraw-btn" @click="goWithdraw">提现</button>
  44. </view>
  45. <view class="stat-divider"></view>
  46. <view class="stat-block">
  47. <view class="stat-label">累计提现()</view>
  48. <view class="stat-value">{{userInfo.integerPrice}}</view>
  49. <button class="record-btn" @click="goWithdrawRecord">提现记录</button>
  50. </view>
  51. </view>
  52. <view class="bottom-menu-row">
  53. <view class="menu-item" @tap="goProfitDetail">
  54. <view class="menu-icon red">
  55. <uni-icons type="wallet" size="32" color="#fff" />
  56. </view>
  57. <text class="menu-text">收益明细</text>
  58. </view>
  59. <view class="menu-item" @tap="goTeam">
  60. <view class="menu-icon blue">
  61. <uni-icons type="person" size="32" color="#fff" />
  62. </view>
  63. <text class="menu-text">我的团队</text>
  64. </view>
  65. </view>
  66. </view>
  67. <!-- 推广排行榜 -->
  68. <view class="rank-section">
  69. <view class="rank-title">推广排行榜</view>
  70. <view class="rank-list">
  71. <view class="rank-item" v-for="(item, idx) in rankList.slice(0, 5)" :key="idx">
  72. <view class="rank-icon">
  73. <image v-if="idx<3" :src="getRankIcon(idx+1)" class="crown" mode="aspectFit" />
  74. <image v-else :src="getRankIcon(idx+1)" class="num-icon" mode="aspectFit" />
  75. </view>
  76. <image class="rank-avatar" :src="item.headImage" mode="aspectFill" />
  77. <text class="rank-phone">{{item.nickName}}</text>
  78. <text class="rank-amount">¥{{item.price}}</text>
  79. </view>
  80. </view>
  81. </view>
  82. <!-- 权益说明表格 -->
  83. <view class="rights-section">
  84. <view class="rights-title">权益说明</view>
  85. <image :src="indexLvxingUrl" mode="widthFix" class="rights-image" />
  86. </view>
  87. <!-- 联系客服二维码 -->
  88. <view class="qrcode-section">
  89. <view class="qrcode-title">联系客服</view>
  90. <image class="qrcode-img" :src="qrcodeUrl" mode="aspectFit" />
  91. </view>
  92. </view>
  93. <!-- 底部按钮区 -->
  94. <view class="bottom-btns">
  95. <button class="btn gray" @tap="goQrcode">我的二维码</button>
  96. <button class="btn green" @tap="goUpgrade" v-if="status===''">立即升级推广官</button>
  97. <button class="btn gray" v-if="status==0" @tap="showProgressModal = true">查看申请进度</button>
  98. </view>
  99. <!-- 申请进度弹窗 -->
  100. <view v-if="showProgressModal" class="progress-modal-mask">
  101. <view class="progress-modal-box">
  102. <view class="progress-modal-title">联系运营商\n升级解锁更多权益</view>
  103. <view class="progress-modal-list">
  104. <view class="progress-modal-item" @tap="goToFaq">
  105. <text>在线客服</text>
  106. <uni-icons type="right" size="22" color="#bbb" />
  107. </view>
  108. <view class="progress-modal-item" @tap="goToFaq">
  109. <text>客服电话</text>
  110. <uni-icons type="right" size="22" color="#bbb" />
  111. </view>
  112. </view>
  113. <button class="progress-modal-btn" @tap="showProgressModal = false">我知道了</button>
  114. </view>
  115. </view>
  116. </view>
  117. </template>
  118. <script>
  119. import pullRefreshMixin from '@/pages/mixins/pullRefreshMixin.js'
  120. export default {
  121. mixins: [pullRefreshMixin],
  122. data() {
  123. return {
  124. statusBarHeight: 0,
  125. navBarHeight: 44, // px
  126. navBarTotalHeight: 44, // px
  127. featureTags: ['收益高', '品类全', '到账快', '城市多'],
  128. userInfo: {
  129. avatar: '',
  130. name: '',
  131. id: '',
  132. type: '',
  133. balance: '',
  134. totalWithdraw: '',
  135. },
  136. tabActive: 0,
  137. rankList: [
  138. ],
  139. status: 0,
  140. showProgressModal: false
  141. }
  142. },
  143. computed: {
  144. qrcodeUrl() {
  145. console.log(getApp().globalData.configData,'getApp().globalData.configData')
  146. const item = getApp().globalData.configData.find(i => i.keyName === 'kefu_code')
  147. return item ? item.keyContent : ''
  148. },
  149. indexLvxingUrl() {
  150. console.log(getApp().globalData.configData,'getApp().globalData.configData')
  151. const item = getApp().globalData.configData.find(i => i.keyName === 'index_lvxing')
  152. return item ? item.keyContent : ''
  153. }
  154. },
  155. onLoad() {
  156. const sysInfo = uni.getSystemInfoSync()
  157. this.statusBarHeight = sysInfo.statusBarHeight
  158. this.navBarHeight = 44
  159. this.navBarTotalHeight = this.statusBarHeight + this.navBarHeight
  160. this.getUserInfoByToken()
  161. this.getRankList()
  162. this.getMyPromotionInfo()
  163. },
  164. onShow(){
  165. this.getMyPromotionInfo()
  166. },
  167. onPullDownRefresh() {
  168. this.getUserInfoByToken()
  169. uni.stopPullDownRefresh()
  170. },
  171. methods: {
  172. async onRefresh() {
  173. // 模拟刷新数据
  174. await new Promise(resolve => setTimeout(resolve, 1000))
  175. uni.stopPullRefresh()
  176. },
  177. navigateBack() {
  178. uni.navigateBack()
  179. },
  180. getRankIcon(idx) {
  181. return `/static/tui/${idx}.png`
  182. },
  183. goQrcode() {
  184. uni.navigateTo({ url: '/pages/subcomponent/promo-qrcode' })
  185. },
  186. goUpgrade() {
  187. uni.navigateTo({ url: '/pages/subcomponent/upgrad' })
  188. },
  189. getUserInfoByToken() {
  190. this.$api('getUserByToken', {}, (res) => {
  191. if (res && res.success && res.result) {
  192. this.userInfo.avatar = res.result.headImage || ''
  193. this.userInfo.name = res.result.nickName || ''
  194. this.userInfo.id = res.result.id || ''
  195. this.userInfo.intentioCode = res.result.intentioCode || ''
  196. this.userInfo.money = res.result.money || ''
  197. this.userInfo.integerPrice = res.result.integerPrice || ''
  198. // 你可以根据实际接口补充type、balance、totalWithdraw等字段
  199. }
  200. })
  201. },
  202. goWithdrawRecord() {
  203. uni.navigateTo({ url: '/pages/subcomponent/promotion-withdraw-record' })
  204. },
  205. goWithdraw() {
  206. uni.navigateTo({ url: '/pages/subcomponent/withdraw?fromPromotion=true' })
  207. },
  208. goProfitDetail() {
  209. uni.navigateTo({ url: '/pages/subcomponent/promotion-profit-detail' })
  210. },
  211. goTeam() {
  212. uni.navigateTo({ url: '/pages/subcomponent/promotion-team' })
  213. },
  214. getRankList(){
  215. this.$api('getRankList', {}, (res) => {
  216. if (res && res.success && res.result) {
  217. this.rankList = res.result.records || []
  218. }
  219. })
  220. },
  221. getMyPromotionInfo(){
  222. this.$api('getMyPromotionInfo', {}, (res) => {
  223. if (res && res.success && res.result) {
  224. // console.log(res.result,'res.result')
  225. this.status = res.result.status
  226. console.log(this.status,'this.status')
  227. }
  228. })
  229. },
  230. goToFaq() {
  231. uni.navigateTo({ url: '/pages/subcomponent/admin_faq' })
  232. }
  233. }
  234. }
  235. </script>
  236. <style lang="scss" scoped>
  237. .promotion-page {
  238. min-height: 100vh;
  239. background: linear-gradient(to right, #b2f08d 0%, #39e9d2 100%);
  240. padding-bottom: calc(env(safe-area-inset-bottom) + 120rpx);
  241. }
  242. .nav-bar {
  243. position: fixed;
  244. top: 0;
  245. left: 0;
  246. right: 0;
  247. z-index: 1000;
  248. width: 100vw;
  249. background: linear-gradient(to right, #b2f08d 0%, #39e9d2 100%);
  250. box-shadow: 0 2rpx 12rpx rgba(0,0,0,0.03);
  251. .nav-bar-inner {
  252. display: flex;
  253. align-items: center;
  254. height: 44px;
  255. width: 100vw;
  256. position: relative;
  257. }
  258. .back-icon {
  259. width: 44px;
  260. height: 44px;
  261. display: flex;
  262. align-items: center;
  263. justify-content: center;
  264. position: absolute;
  265. left: 0;
  266. top: 0;
  267. }
  268. .nav-bar-title {
  269. flex: 1;
  270. text-align: center;
  271. font-size: 36rpx;
  272. font-weight: bold;
  273. color: #222;
  274. letter-spacing: 2rpx;
  275. line-height: 44px;
  276. }
  277. .nav-bar-right {
  278. width: 44px;
  279. height: 44px;
  280. position: absolute;
  281. right: 0;
  282. top: 0;
  283. display: flex;
  284. align-items: center;
  285. justify-content: center;
  286. }
  287. }
  288. .feature-tags {
  289. // background: linear-gradient(to right, #b2f08d 0%, #39e9d2 100%);
  290. border-radius: 32rpx;
  291. display: flex;
  292. align-items: center;
  293. justify-content: space-between;
  294. padding: 0 24rpx;
  295. height: 80rpx;
  296. box-shadow: 0 4rpx 24rpx rgba(60, 167, 250, 0.08);
  297. .tag {
  298. flex: 1;
  299. display: flex;
  300. align-items: center;
  301. justify-content: center;
  302. .check {
  303. width: 36rpx;
  304. height: 36rpx;
  305. background: #fff;
  306. border-radius: 50%;
  307. display: flex;
  308. align-items: center;
  309. justify-content: center;
  310. font-size: 28rpx;
  311. color: #13ac47;
  312. font-weight: bold;
  313. margin-right: 10rpx;
  314. box-shadow: 0 2rpx 8rpx rgba(0,0,0,0.08);
  315. }
  316. .text {
  317. color: #fff;
  318. font-size: 28rpx;
  319. font-weight: bold;
  320. }
  321. }
  322. }
  323. .main-content {
  324. margin-top: 20rpx;
  325. padding-top: 88rpx;
  326. background: linear-gradient(180deg, #eaffe6 0%, #fff 30%);
  327. min-height: 100vh;
  328. width: 100vw;
  329. box-sizing: border-box;
  330. position: relative;
  331. z-index: 11;
  332. border-radius: 40rpx 40rpx 0 0;
  333. overflow: hidden;
  334. }
  335. .user-card {
  336. margin: 0 32rpx;
  337. background: linear-gradient(to bottom, #f6fff2 0%, #fff 100%);
  338. border-radius: 32rpx;
  339. box-shadow: 0 8rpx 32rpx rgba(60, 167, 250, 0.12);
  340. padding: 48rpx 36rpx 36rpx 36rpx;
  341. border: none;
  342. position: relative;
  343. top: -40rpx;
  344. display: flex;
  345. flex-direction: column;
  346. align-items: stretch;
  347. .user-info-row {
  348. display: flex;
  349. align-items: center;
  350. padding-bottom: 0;
  351. margin-bottom: 32rpx;
  352. // background-color: #fff;
  353. .avatar-box {
  354. margin-right: 24rpx;
  355. display: flex;
  356. flex-direction: column;
  357. align-items: center;
  358. .avatar-frame {
  359. width: 104rpx;
  360. height: 104rpx;
  361. border-radius: 10rpx;
  362. overflow: hidden;
  363. position: relative;
  364. background: #f2f2f2;
  365. box-shadow: 0 4rpx 16rpx rgba(0,0,0,0.10);
  366. .avatar-img {
  367. width: 104rpx;
  368. height: 80rpx;
  369. object-fit: cover;
  370. display: block;
  371. }
  372. .user-type {
  373. position: absolute;
  374. left: 0;
  375. bottom: 0;
  376. width: 100%;
  377. height: 32rpx;
  378. background: #e5e5e5;
  379. color: #888;
  380. font-size: 22rpx;
  381. font-weight: 500;
  382. text-align: center;
  383. line-height: 32rpx;
  384. border-bottom-left-radius: 10rpx;
  385. border-bottom-right-radius: 10rpx;
  386. }
  387. }
  388. }
  389. .user-meta {
  390. flex: 1;
  391. display: flex;
  392. flex-direction: column;
  393. justify-content: center;
  394. .nickname {
  395. font-size: 32rpx;
  396. font-weight: bold;
  397. color: #222;
  398. margin-bottom: 6rpx;
  399. }
  400. .userid {
  401. font-size: 24rpx;
  402. color: #bbb;
  403. }
  404. }
  405. .user-count {
  406. font-size: 30rpx;
  407. color: #222;
  408. font-weight: bold;
  409. text-align: right;
  410. min-width: 120rpx;
  411. margin-left: 16rpx;
  412. align-self: center;
  413. }
  414. }
  415. .user-stats-row {
  416. display: flex;
  417. align-items: stretch;
  418. justify-content: center;
  419. background: #f2fff6;
  420. border-radius: 24rpx;
  421. margin: 0 0 8rpx 0;
  422. padding: 32rpx 0;
  423. box-sizing: border-box;
  424. .stat-block {
  425. flex: 1;
  426. display: flex;
  427. flex-direction: column;
  428. align-items: center;
  429. justify-content: center;
  430. padding: 0 24rpx;
  431. .stat-label {
  432. font-size: 24rpx;
  433. color: #bbb;
  434. margin-bottom: 12rpx;
  435. text-align: center;
  436. }
  437. .stat-value {
  438. font-size: 40rpx;
  439. color: #222;
  440. font-weight: bold;
  441. margin-bottom: 18rpx;
  442. &.main {
  443. color: #13ac47;
  444. font-size: 48rpx;
  445. }
  446. }
  447. .withdraw-btn, .record-btn {
  448. width: 180rpx;
  449. height: 56rpx;
  450. border-radius: 28rpx;
  451. font-size: 26rpx;
  452. font-weight: bold;
  453. margin-top: 0;
  454. display: flex;
  455. align-items: center;
  456. justify-content: center;
  457. text-align: center;
  458. box-sizing: border-box;
  459. }
  460. .withdraw-btn {
  461. background: linear-gradient(90deg, #b2f08d, #39e9d2);
  462. color: #fff;
  463. border: none;
  464. }
  465. .record-btn {
  466. background: #fff;
  467. color: #13ac47;
  468. border: 2rpx solid #13ac47;
  469. &:active, &:focus {
  470. opacity: 0.8;
  471. }
  472. }
  473. }
  474. .stat-divider {
  475. width: 2rpx;
  476. height: 72rpx;
  477. background: #e0e0e0;
  478. margin: 0 16rpx;
  479. border-radius: 2rpx;
  480. align-self: center;
  481. }
  482. }
  483. .bottom-menu-row {
  484. display: flex;
  485. justify-content: center;
  486. align-items: center;
  487. margin: 40rpx 0 0 0;
  488. .menu-item {
  489. display: flex;
  490. align-items: center;
  491. margin: 0 40rpx;
  492. .menu-icon {
  493. width: 56rpx;
  494. height: 56rpx;
  495. border-radius: 50%;
  496. display: flex;
  497. align-items: center;
  498. justify-content: center;
  499. margin-right: 12rpx;
  500. &.red {
  501. background: #ff7e6a;
  502. }
  503. &.blue {
  504. background: #7eb6ff;
  505. }
  506. }
  507. .menu-text {
  508. font-size: 28rpx;
  509. color: #222;
  510. font-weight: 500;
  511. }
  512. }
  513. }
  514. }
  515. .rank-section {
  516. margin: 32rpx 32rpx 0 32rpx;
  517. .rank-title {
  518. font-size: 30rpx;
  519. color: #222;
  520. font-weight: bold;
  521. text-align: center;
  522. margin-bottom: 24rpx;
  523. }
  524. .rank-list {
  525. background: #fff;
  526. border-radius: 24rpx;
  527. box-shadow: 0 2rpx 8rpx rgba(60, 167, 250, 0.04);
  528. overflow: hidden;
  529. .rank-item {
  530. display: flex;
  531. align-items: center;
  532. padding: 0 44rpx;
  533. height: 104rpx;
  534. border-bottom: 1rpx solid #f3f3f3;
  535. &:last-child {
  536. border-bottom: none;
  537. }
  538. .rank-icon {
  539. width: 44rpx;
  540. display: flex;
  541. align-items: center;
  542. justify-content: center;
  543. .crown, .num-icon {
  544. width: 36rpx;
  545. height: 36rpx;
  546. }
  547. }
  548. .rank-avatar {
  549. width: 48rpx;
  550. height: 48rpx;
  551. border-radius: 50%;
  552. margin: 0 18rpx 0 10rpx;
  553. background: #f5f5f5;
  554. }
  555. .rank-phone {
  556. flex: 1;
  557. font-size: 28rpx;
  558. color: #222;
  559. font-weight: bold;
  560. }
  561. .rank-amount {
  562. font-size: 30rpx;
  563. color: #b98c4a;
  564. font-weight: bold;
  565. min-width: 120rpx;
  566. text-align: right;
  567. }
  568. }
  569. }
  570. }
  571. .rights-section {
  572. margin: 40rpx 32rpx 0 32rpx;
  573. .rights-title {
  574. font-size: 30rpx;
  575. color: #222;
  576. font-weight: bold;
  577. text-align: center;
  578. margin-bottom: 24rpx;
  579. }
  580. .rights-image {
  581. width: 100%;
  582. height: auto;
  583. }
  584. }
  585. .qrcode-section {
  586. margin: 48rpx 32rpx 0 32rpx;
  587. background: #fff;
  588. border-radius: 32rpx;
  589. box-shadow: 0 4rpx 24rpx rgba(60, 167, 250, 0.08);
  590. display: flex;
  591. flex-direction: column;
  592. align-items: center;
  593. padding: 32rpx 0 40rpx 0;
  594. .qrcode-title {
  595. font-size: 28rpx;
  596. color: #222;
  597. font-weight: bold;
  598. margin-bottom: 24rpx;
  599. }
  600. .qrcode-img {
  601. width: 220rpx;
  602. height: 220rpx;
  603. background: #fff;
  604. border-radius: 24rpx;
  605. box-shadow: 0 2rpx 8rpx rgba(0,0,0,0.08);
  606. }
  607. }
  608. .bottom-btns {
  609. position: fixed;
  610. left: 0;
  611. right: 0;
  612. bottom: 0;
  613. display: flex;
  614. justify-content: space-between;
  615. padding: 24rpx 32rpx calc(env(safe-area-inset-bottom) + 24rpx) 32rpx;
  616. background: #fff;
  617. z-index: 100;
  618. .btn {
  619. flex: 1;
  620. height: 88rpx;
  621. border-radius: 44rpx;
  622. font-size: 32rpx;
  623. font-weight: bold;
  624. margin: 0 12rpx;
  625. border: none;
  626. &.gray {
  627. background: #f5f5f5;
  628. color: #999;
  629. }
  630. &.green {
  631. background: linear-gradient(90deg, #42dfc2, #9be48f);
  632. color: #fff;
  633. }
  634. }
  635. }
  636. .bottom-menu-row {
  637. display: flex;
  638. justify-content: center;
  639. align-items: center;
  640. margin: 40rpx 0 0 0;
  641. .menu-item {
  642. display: flex;
  643. align-items: center;
  644. margin: 0 40rpx;
  645. .menu-icon {
  646. width: 56rpx;
  647. height: 56rpx;
  648. border-radius: 50%;
  649. display: flex;
  650. align-items: center;
  651. justify-content: center;
  652. margin-right: 12rpx;
  653. &.red {
  654. background: #ff7e6a;
  655. }
  656. &.blue {
  657. background: #7eb6ff;
  658. }
  659. }
  660. .menu-text {
  661. font-size: 28rpx;
  662. color: #222;
  663. font-weight: 500;
  664. }
  665. }
  666. }
  667. .progress-modal-mask {
  668. position: fixed;
  669. left: 0; right: 0; top: 0; bottom: 0;
  670. background: rgba(0,0,0,0.25);
  671. z-index: 2000;
  672. display: flex;
  673. align-items: center;
  674. justify-content: center;
  675. }
  676. .progress-modal-box {
  677. width: 80vw;
  678. max-width: 420px;
  679. background: linear-gradient(180deg, #f3fff2 0%, #eafff6 100%);
  680. border-radius: 32rpx;
  681. box-shadow: 0 8rpx 32rpx rgba(60, 167, 250, 0.10);
  682. padding: 56rpx 0 32rpx 0;
  683. display: flex;
  684. flex-direction: column;
  685. align-items: center;
  686. }
  687. .progress-modal-title {
  688. font-size: 34rpx;
  689. color: #222;
  690. font-weight: bold;
  691. text-align: center;
  692. margin-bottom: 48rpx;
  693. white-space: pre-line;
  694. }
  695. .progress-modal-list {
  696. width: 88%;
  697. display: flex;
  698. flex-direction: column;
  699. gap: 18rpx;
  700. margin-bottom: 48rpx;
  701. }
  702. .progress-modal-item {
  703. // background: #fff;
  704. border-radius: 18rpx;
  705. height: 80rpx;
  706. display: flex;
  707. align-items: center;
  708. justify-content: space-between;
  709. font-size: 30rpx;
  710. color: #222;
  711. padding: 0 32rpx;
  712. box-shadow: 0 2rpx 8rpx rgba(60, 167, 250, 0.04);
  713. }
  714. .progress-modal-btn {
  715. width: 88%;
  716. height: 88rpx;
  717. background: linear-gradient(90deg, #b2f08d, #39e9d2);
  718. color: #222;
  719. font-size: 32rpx;
  720. font-weight: bold;
  721. border-radius: 44rpx;
  722. margin-top: 8rpx;
  723. box-shadow: 0 4rpx 16rpx rgba(60, 167, 250, 0.08);
  724. display: flex;
  725. align-items: center;
  726. justify-content: center;
  727. border: none;
  728. }
  729. </style>