爱简收旧衣按件回收前端代码仓库
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.

745 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
1 month 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== 3">立即升级推广官</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. if (res.result.status == 0) {
  225. this.status = res.result.status
  226. console.log(this.status,'this.status')
  227. }
  228. }else{
  229. this.status = 3
  230. console.log(this.status,'this.status')
  231. }
  232. })
  233. },
  234. goToFaq() {
  235. uni.navigateTo({ url: '/pages/subcomponent/admin_faq' })
  236. }
  237. }
  238. }
  239. </script>
  240. <style lang="scss" scoped>
  241. .promotion-page {
  242. min-height: 100vh;
  243. background: linear-gradient(to right, #b2f08d 0%, #39e9d2 100%);
  244. padding-bottom: calc(env(safe-area-inset-bottom) + 120rpx);
  245. }
  246. .nav-bar {
  247. position: fixed;
  248. top: 0;
  249. left: 0;
  250. right: 0;
  251. z-index: 1000;
  252. width: 100vw;
  253. background: linear-gradient(to right, #b2f08d 0%, #39e9d2 100%);
  254. box-shadow: 0 2rpx 12rpx rgba(0,0,0,0.03);
  255. .nav-bar-inner {
  256. display: flex;
  257. align-items: center;
  258. height: 44px;
  259. width: 100vw;
  260. position: relative;
  261. }
  262. .back-icon {
  263. width: 44px;
  264. height: 44px;
  265. display: flex;
  266. align-items: center;
  267. justify-content: center;
  268. position: absolute;
  269. left: 0;
  270. top: 0;
  271. }
  272. .nav-bar-title {
  273. flex: 1;
  274. text-align: center;
  275. font-size: 36rpx;
  276. font-weight: bold;
  277. color: #222;
  278. letter-spacing: 2rpx;
  279. line-height: 44px;
  280. }
  281. .nav-bar-right {
  282. width: 44px;
  283. height: 44px;
  284. position: absolute;
  285. right: 0;
  286. top: 0;
  287. display: flex;
  288. align-items: center;
  289. justify-content: center;
  290. }
  291. }
  292. .feature-tags {
  293. // background: linear-gradient(to right, #b2f08d 0%, #39e9d2 100%);
  294. border-radius: 32rpx;
  295. display: flex;
  296. align-items: center;
  297. justify-content: space-between;
  298. padding: 0 24rpx;
  299. height: 80rpx;
  300. box-shadow: 0 4rpx 24rpx rgba(60, 167, 250, 0.08);
  301. .tag {
  302. flex: 1;
  303. display: flex;
  304. align-items: center;
  305. justify-content: center;
  306. .check {
  307. width: 36rpx;
  308. height: 36rpx;
  309. background: #fff;
  310. border-radius: 50%;
  311. display: flex;
  312. align-items: center;
  313. justify-content: center;
  314. font-size: 28rpx;
  315. color: #13ac47;
  316. font-weight: bold;
  317. margin-right: 10rpx;
  318. box-shadow: 0 2rpx 8rpx rgba(0,0,0,0.08);
  319. }
  320. .text {
  321. color: #fff;
  322. font-size: 28rpx;
  323. font-weight: bold;
  324. }
  325. }
  326. }
  327. .main-content {
  328. margin-top: 20rpx;
  329. padding-top: 88rpx;
  330. background: linear-gradient(180deg, #eaffe6 0%, #fff 30%);
  331. min-height: 100vh;
  332. width: 100vw;
  333. box-sizing: border-box;
  334. position: relative;
  335. z-index: 11;
  336. border-radius: 40rpx 40rpx 0 0;
  337. overflow: hidden;
  338. }
  339. .user-card {
  340. margin: 0 32rpx;
  341. background: linear-gradient(to bottom, #f6fff2 0%, #fff 100%);
  342. border-radius: 32rpx;
  343. box-shadow: 0 8rpx 32rpx rgba(60, 167, 250, 0.12);
  344. padding: 48rpx 36rpx 36rpx 36rpx;
  345. border: none;
  346. position: relative;
  347. top: -40rpx;
  348. display: flex;
  349. flex-direction: column;
  350. align-items: stretch;
  351. .user-info-row {
  352. display: flex;
  353. align-items: center;
  354. padding-bottom: 0;
  355. margin-bottom: 32rpx;
  356. // background-color: #fff;
  357. .avatar-box {
  358. margin-right: 24rpx;
  359. display: flex;
  360. flex-direction: column;
  361. align-items: center;
  362. .avatar-frame {
  363. width: 104rpx;
  364. height: 104rpx;
  365. border-radius: 10rpx;
  366. overflow: hidden;
  367. position: relative;
  368. background: #f2f2f2;
  369. box-shadow: 0 4rpx 16rpx rgba(0,0,0,0.10);
  370. .avatar-img {
  371. width: 104rpx;
  372. height: 80rpx;
  373. object-fit: cover;
  374. display: block;
  375. }
  376. .user-type {
  377. position: absolute;
  378. left: 0;
  379. bottom: 0;
  380. width: 100%;
  381. height: 32rpx;
  382. background: #e5e5e5;
  383. color: #888;
  384. font-size: 22rpx;
  385. font-weight: 500;
  386. text-align: center;
  387. line-height: 32rpx;
  388. border-bottom-left-radius: 10rpx;
  389. border-bottom-right-radius: 10rpx;
  390. }
  391. }
  392. }
  393. .user-meta {
  394. flex: 1;
  395. display: flex;
  396. flex-direction: column;
  397. justify-content: center;
  398. .nickname {
  399. font-size: 32rpx;
  400. font-weight: bold;
  401. color: #222;
  402. margin-bottom: 6rpx;
  403. }
  404. .userid {
  405. font-size: 24rpx;
  406. color: #bbb;
  407. }
  408. }
  409. .user-count {
  410. font-size: 30rpx;
  411. color: #222;
  412. font-weight: bold;
  413. text-align: right;
  414. min-width: 120rpx;
  415. margin-left: 16rpx;
  416. align-self: center;
  417. }
  418. }
  419. .user-stats-row {
  420. display: flex;
  421. align-items: stretch;
  422. justify-content: center;
  423. background: #f2fff6;
  424. border-radius: 24rpx;
  425. margin: 0 0 8rpx 0;
  426. padding: 32rpx 0;
  427. box-sizing: border-box;
  428. .stat-block {
  429. flex: 1;
  430. display: flex;
  431. flex-direction: column;
  432. align-items: center;
  433. justify-content: center;
  434. padding: 0 24rpx;
  435. .stat-label {
  436. font-size: 24rpx;
  437. color: #bbb;
  438. margin-bottom: 12rpx;
  439. text-align: center;
  440. }
  441. .stat-value {
  442. font-size: 40rpx;
  443. color: #222;
  444. font-weight: bold;
  445. margin-bottom: 18rpx;
  446. &.main {
  447. color: #13ac47;
  448. font-size: 48rpx;
  449. }
  450. }
  451. .withdraw-btn, .record-btn {
  452. width: 180rpx;
  453. height: 56rpx;
  454. border-radius: 28rpx;
  455. font-size: 26rpx;
  456. font-weight: bold;
  457. margin-top: 0;
  458. display: flex;
  459. align-items: center;
  460. justify-content: center;
  461. text-align: center;
  462. box-sizing: border-box;
  463. }
  464. .withdraw-btn {
  465. background: linear-gradient(90deg, #b2f08d, #39e9d2);
  466. color: #fff;
  467. border: none;
  468. }
  469. .record-btn {
  470. background: #fff;
  471. color: #13ac47;
  472. border: 2rpx solid #13ac47;
  473. &:active, &:focus {
  474. opacity: 0.8;
  475. }
  476. }
  477. }
  478. .stat-divider {
  479. width: 2rpx;
  480. height: 72rpx;
  481. background: #e0e0e0;
  482. margin: 0 16rpx;
  483. border-radius: 2rpx;
  484. align-self: center;
  485. }
  486. }
  487. .bottom-menu-row {
  488. display: flex;
  489. justify-content: center;
  490. align-items: center;
  491. margin: 40rpx 0 0 0;
  492. .menu-item {
  493. display: flex;
  494. align-items: center;
  495. margin: 0 40rpx;
  496. .menu-icon {
  497. width: 56rpx;
  498. height: 56rpx;
  499. border-radius: 50%;
  500. display: flex;
  501. align-items: center;
  502. justify-content: center;
  503. margin-right: 12rpx;
  504. &.red {
  505. background: #ff7e6a;
  506. }
  507. &.blue {
  508. background: #7eb6ff;
  509. }
  510. }
  511. .menu-text {
  512. font-size: 28rpx;
  513. color: #222;
  514. font-weight: 500;
  515. }
  516. }
  517. }
  518. }
  519. .rank-section {
  520. margin: 32rpx 32rpx 0 32rpx;
  521. .rank-title {
  522. font-size: 30rpx;
  523. color: #222;
  524. font-weight: bold;
  525. text-align: center;
  526. margin-bottom: 24rpx;
  527. }
  528. .rank-list {
  529. background: #fff;
  530. border-radius: 24rpx;
  531. box-shadow: 0 2rpx 8rpx rgba(60, 167, 250, 0.04);
  532. overflow: hidden;
  533. .rank-item {
  534. display: flex;
  535. align-items: center;
  536. padding: 0 44rpx;
  537. height: 104rpx;
  538. border-bottom: 1rpx solid #f3f3f3;
  539. &:last-child {
  540. border-bottom: none;
  541. }
  542. .rank-icon {
  543. width: 44rpx;
  544. display: flex;
  545. align-items: center;
  546. justify-content: center;
  547. .crown, .num-icon {
  548. width: 36rpx;
  549. height: 36rpx;
  550. }
  551. }
  552. .rank-avatar {
  553. width: 48rpx;
  554. height: 48rpx;
  555. border-radius: 50%;
  556. margin: 0 18rpx 0 10rpx;
  557. background: #f5f5f5;
  558. }
  559. .rank-phone {
  560. flex: 1;
  561. font-size: 28rpx;
  562. color: #222;
  563. font-weight: bold;
  564. }
  565. .rank-amount {
  566. font-size: 30rpx;
  567. color: #b98c4a;
  568. font-weight: bold;
  569. min-width: 120rpx;
  570. text-align: right;
  571. }
  572. }
  573. }
  574. }
  575. .rights-section {
  576. margin: 40rpx 32rpx 0 32rpx;
  577. .rights-title {
  578. font-size: 30rpx;
  579. color: #222;
  580. font-weight: bold;
  581. text-align: center;
  582. margin-bottom: 24rpx;
  583. }
  584. .rights-image {
  585. width: 100%;
  586. height: auto;
  587. }
  588. }
  589. .qrcode-section {
  590. margin: 48rpx 32rpx 0 32rpx;
  591. background: #fff;
  592. border-radius: 32rpx;
  593. box-shadow: 0 4rpx 24rpx rgba(60, 167, 250, 0.08);
  594. display: flex;
  595. flex-direction: column;
  596. align-items: center;
  597. padding: 32rpx 0 40rpx 0;
  598. .qrcode-title {
  599. font-size: 28rpx;
  600. color: #222;
  601. font-weight: bold;
  602. margin-bottom: 24rpx;
  603. }
  604. .qrcode-img {
  605. width: 220rpx;
  606. height: 220rpx;
  607. background: #fff;
  608. border-radius: 24rpx;
  609. box-shadow: 0 2rpx 8rpx rgba(0,0,0,0.08);
  610. }
  611. }
  612. .bottom-btns {
  613. position: fixed;
  614. left: 0;
  615. right: 0;
  616. bottom: 0;
  617. display: flex;
  618. justify-content: space-between;
  619. padding: 24rpx 32rpx calc(env(safe-area-inset-bottom) + 24rpx) 32rpx;
  620. background: #fff;
  621. z-index: 100;
  622. .btn {
  623. flex: 1;
  624. height: 88rpx;
  625. border-radius: 44rpx;
  626. font-size: 32rpx;
  627. font-weight: bold;
  628. margin: 0 12rpx;
  629. border: none;
  630. &.gray {
  631. background: #f5f5f5;
  632. color: #999;
  633. }
  634. &.green {
  635. background: linear-gradient(90deg, #42dfc2, #9be48f);
  636. color: #fff;
  637. }
  638. }
  639. }
  640. .bottom-menu-row {
  641. display: flex;
  642. justify-content: center;
  643. align-items: center;
  644. margin: 40rpx 0 0 0;
  645. .menu-item {
  646. display: flex;
  647. align-items: center;
  648. margin: 0 40rpx;
  649. .menu-icon {
  650. width: 56rpx;
  651. height: 56rpx;
  652. border-radius: 50%;
  653. display: flex;
  654. align-items: center;
  655. justify-content: center;
  656. margin-right: 12rpx;
  657. &.red {
  658. background: #ff7e6a;
  659. }
  660. &.blue {
  661. background: #7eb6ff;
  662. }
  663. }
  664. .menu-text {
  665. font-size: 28rpx;
  666. color: #222;
  667. font-weight: 500;
  668. }
  669. }
  670. }
  671. .progress-modal-mask {
  672. position: fixed;
  673. left: 0; right: 0; top: 0; bottom: 0;
  674. background: rgba(0,0,0,0.25);
  675. z-index: 2000;
  676. display: flex;
  677. align-items: center;
  678. justify-content: center;
  679. }
  680. .progress-modal-box {
  681. width: 80vw;
  682. max-width: 420px;
  683. background: linear-gradient(180deg, #f3fff2 0%, #eafff6 100%);
  684. border-radius: 32rpx;
  685. box-shadow: 0 8rpx 32rpx rgba(60, 167, 250, 0.10);
  686. padding: 56rpx 0 32rpx 0;
  687. display: flex;
  688. flex-direction: column;
  689. align-items: center;
  690. }
  691. .progress-modal-title {
  692. font-size: 34rpx;
  693. color: #222;
  694. font-weight: bold;
  695. text-align: center;
  696. margin-bottom: 48rpx;
  697. white-space: pre-line;
  698. }
  699. .progress-modal-list {
  700. width: 88%;
  701. display: flex;
  702. flex-direction: column;
  703. gap: 18rpx;
  704. margin-bottom: 48rpx;
  705. }
  706. .progress-modal-item {
  707. // background: #fff;
  708. border-radius: 18rpx;
  709. height: 80rpx;
  710. display: flex;
  711. align-items: center;
  712. justify-content: space-between;
  713. font-size: 30rpx;
  714. color: #222;
  715. padding: 0 32rpx;
  716. box-shadow: 0 2rpx 8rpx rgba(60, 167, 250, 0.04);
  717. }
  718. .progress-modal-btn {
  719. width: 88%;
  720. height: 88rpx;
  721. background: linear-gradient(90deg, #b2f08d, #39e9d2);
  722. color: #222;
  723. font-size: 32rpx;
  724. font-weight: bold;
  725. border-radius: 44rpx;
  726. margin-top: 8rpx;
  727. box-shadow: 0 4rpx 16rpx rgba(60, 167, 250, 0.08);
  728. display: flex;
  729. align-items: center;
  730. justify-content: center;
  731. border: none;
  732. }
  733. </style>