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

921 lines
21 KiB

9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
  1. <template>
  2. <view class="container" >
  3. <!-- 顶部banner -->
  4. <view class="banner">
  5. <!-- <text class="banner-title">我的循环钱包</text> -->
  6. <image class="banner-bg" src="https://oss.budingxiaoshuo.com/upload/我的banneer(1)_1748252280266.png" mode="aspectFill"></image>
  7. </view>
  8. <view class="user-cards" v-if="!login_status">
  9. <view class="user-info">
  10. <image class="avatars" src="/static/暂未登录 请先登录.png" mode="aspectFill"></image>
  11. <view class="info">
  12. <text class="names">暂未登录请先登录</text>
  13. </view>
  14. </view>
  15. </view>
  16. <view class="btns" v-if="!login_status">
  17. <uv-button
  18. class="btn"
  19. type="primary"
  20. text="立即登录"
  21. :custom-style="customStyle"
  22. color="linear-gradient(to right, rgb(255, 190, 61), rgb(255, 171, 2))"
  23. shape="circle"
  24. @click="logout"
  25. ></uv-button>
  26. <text>暂未登录请先登录</text>
  27. </view>
  28. <!-- 用户信息卡片 -->
  29. <view class="user-card" v-if="login_status">
  30. <view class="user-info">
  31. <image class="avatar" :src="userInfo.headImage" mode="aspectFill"></image>
  32. <view class="info">
  33. <text class="name">{{userInfo.nickName}}</text>
  34. <text class="id">{{userInfo.id}}</text>
  35. </view>
  36. </view>
  37. <view class="wallet-info">
  38. <view class="balance">
  39. <text class="label">我的余额</text>
  40. <view class="amount">
  41. <text class="symbol">¥</text>
  42. <text class="value">{{userInfo.money}}</text>
  43. </view>
  44. <view class="withdraw-btn" @tap="goWithdraw">
  45. <text>去提现</text>
  46. <uni-icons type="right" size="10" color="#df8155" class="arrow"></uni-icons>
  47. </view>
  48. </view>
  49. <view class="recycle-count">
  50. <text class="label">累计回收</text>
  51. <view class="count">
  52. <text class="value">341</text>
  53. <text class="unit"></text>
  54. </view>
  55. </view>
  56. </view>
  57. </view>
  58. <!-- 分享赚佣金模块 -->
  59. <view class="share-commission-card" @tap="onShareCommission" v-if="login_status">
  60. <text class="share-commission-text">分享赚佣金</text>
  61. </view>
  62. <!-- 订单区域 -->
  63. <view class="order-section" v-if="login_status">
  64. <view class="section-header">
  65. <text class="title">我的订单</text>
  66. <view class="view-all" @tap="viewAllOrders">
  67. <text>查看全部</text>
  68. <text class="arrow">></text>
  69. </view>
  70. </view>
  71. <view class="order-tabs">
  72. <view
  73. v-for="(tab, index) in orderTabs"
  74. :key="index"
  75. class="tab-item"
  76. :class="{ active: currentTab === index }"
  77. @tap="switchTab(index)"
  78. >
  79. <text>{{tab.name}}</text>
  80. <text class="badge" v-if="tab.badge">{{tab.badge}}</text>
  81. </view>
  82. </view>
  83. <!-- 订单列表 -->
  84. <view class="order-list">
  85. <view class="order-item">
  86. <view class="order-header">
  87. <text class="order-id">订单编号 RE82738127861526</text>
  88. </view>
  89. <view class="order-content">
  90. <image class="goods-image" src="/static/回收/衣物.png" mode="aspectFill"></image>
  91. <view class="order-info-opt">
  92. <view class="order-info-top">
  93. <text class="order-info-count">8 </text>
  94. <text class="order-info-price">3-10 /</text>
  95. </view>
  96. <view class="order-info-estimate">
  97. 预估 76-80
  98. </view>
  99. </view>
  100. </view>
  101. <view class="order-footer">
  102. <image class="courier-avatar" src="/static/my/【上门中】快递员正在赶来.png" mode="aspectFill"></image>
  103. <view class="delivery-info">
  104. <text class="status">上门中快递员正在赶来</text>
  105. <text class="time">周四 11:00~13:00</text>
  106. </view>
  107. </view>
  108. </view>
  109. </view>
  110. </view>
  111. <!-- 管理中心列表型卡片 -->
  112. <view
  113. class="function-list manage-list"
  114. v-if="login_status && (userInfo.isOrderRole==='Y' || userInfo.isAppletUserRole==='Y' || userInfo.isUserRole==='Y' || userInfo.isTuiRole==='Y')"
  115. >
  116. <view
  117. class="function-item"
  118. v-if="userInfo.isOrderRole==='Y'"
  119. @tap="goOrderManage"
  120. >
  121. <view class="item-left">
  122. <image class="icon" src="/static/my/订单管理.png" mode="aspectFit"></image>
  123. <text>订单管理</text>
  124. </view>
  125. <uni-icons type="right" size="15"></uni-icons>
  126. </view>
  127. <view
  128. class="function-item"
  129. v-if="userInfo.isAppletUserRole==='Y'"
  130. @tap="goAppletUserManage"
  131. >
  132. <view class="item-left">
  133. <image class="icon" src="/static/my/用户管理.png" mode="aspectFit"></image>
  134. <text>用户管理</text>
  135. </view>
  136. <uni-icons type="right" size="15"></uni-icons>
  137. </view>
  138. <view
  139. class="function-item"
  140. v-if="userInfo.isUserRole==='Y'"
  141. @tap="goStaffManage"
  142. >
  143. <view class="item-left">
  144. <image class="icon" src="/static/my/员工管理.png" mode="aspectFit"></image>
  145. <text>员工管理</text>
  146. </view>
  147. <uni-icons type="right" size="15"></uni-icons>
  148. </view>
  149. <view
  150. class="function-item"
  151. v-if="userInfo.isTuiRole==='Y'"
  152. @tap="goTuiManage"
  153. >
  154. <view class="item-left">
  155. <image class="icon" src="/static/my/推广官管理.png" mode="aspectFit"></image>
  156. <text>推广官管理</text>
  157. </view>
  158. <uni-icons type="right" size="15"></uni-icons>
  159. </view>
  160. </view>
  161. <!-- 功能列表 -->
  162. <view class="function-list" v-if="login_status">
  163. <view class="function-item" v-for="(item, index) in functionList" :key="index" @tap="handleFunction(index)">
  164. <view class="item-left">
  165. <image class="icon" :src="item.icon" mode="aspectFit"></image>
  166. <text>{{item.name}}</text>
  167. </view>
  168. <uni-icons type="right" size="15"></uni-icons>
  169. </view>
  170. </view>
  171. <!-- 根据角色显示不同的导航栏 -->
  172. <uv-tabbar
  173. :value="value"
  174. :fixed="true"
  175. @change="changeTo"
  176. >
  177. <uv-tabbar-item text="首页" >
  178. <template v-slot:active-icon>
  179. <image class="icon" src="/static/home/首页-点击.png"></image>
  180. </template>
  181. <template v-slot:inactive-icon>
  182. <image class="icon" src="/static/home/首页-未点击.png"></image>
  183. </template>
  184. </uv-tabbar-item>
  185. <uv-tabbar-item text="回收" >
  186. <template v-slot:active-icon>
  187. <image class="icon" src="/static/home/回收-点击.png"></image>
  188. </template>
  189. <template v-slot:inactive-icon>
  190. <image class="icon" src="/static/home/回收-未点击.png"></image>
  191. </template>
  192. </uv-tabbar-item>
  193. <uv-tabbar-item text="我的" >
  194. <template v-slot:active-icon>
  195. <image class="icon" src="/static/home/我的-点击.png"></image>
  196. </template>
  197. <template v-slot:inactive-icon>
  198. <image class="icon" src="/static/home/我的-未点击.png"></image>
  199. </template>
  200. </uv-tabbar-item>
  201. </uv-tabbar>
  202. </view>
  203. </template>
  204. <script>
  205. import pullRefreshMixin from '@/mixins/pullRefreshMixin.js'
  206. export default {
  207. mixins: [pullRefreshMixin],
  208. data() {
  209. return {
  210. value:2,
  211. currentTab: 1,
  212. login_status:false,
  213. userInfo:{},
  214. orderTabs: [
  215. { name: '全部' },
  216. { name: '进行中', badge: '2' },
  217. { name: '已完成' }
  218. ],
  219. functionList: [
  220. // { name: '推广官', icon: '/static/my/promote.png' },
  221. { name: '我的地址', icon: '/static/my/地址.png' },
  222. { name: '联系客服', icon: '/static/my/客服.png' },
  223. { name: '修改信息', icon: '/static/my/修改信息.png' },
  224. { name: '退出登录', icon: '/static/my/退出登录.png' }
  225. ]
  226. }
  227. },
  228. methods: {
  229. async onRefresh() {
  230. console.log('开始刷新')
  231. try {
  232. await this.fetchUserInfo()
  233. console.log('刷新完成')
  234. return true // 返回 true 表示刷新成功
  235. } catch (error) {
  236. console.error('刷新失败', error)
  237. throw error // 抛出错误表示刷新失败
  238. }
  239. },
  240. changeTo(e){
  241. this.value = e
  242. console.log(e,'111')
  243. if(e==0){
  244. uni.reLaunch({
  245. url: '/pages/component/home'
  246. });
  247. }else if(e == 1){
  248. uni.reLaunch({
  249. url: '/pages/component/recycle'
  250. });
  251. }
  252. },
  253. goWithdraw() {
  254. uni.navigateTo({
  255. url: '/pages/subcomponent/wallet'
  256. })
  257. },
  258. viewAllOrders() {
  259. uni.navigateTo({
  260. url: '/pages/subcomponent/order'
  261. })
  262. },
  263. switchTab(index) {
  264. this.currentTab = index
  265. },
  266. handleFunction(index) {
  267. const pages = [
  268. // '/pages/subcomponent/promotion',
  269. '/pages/subcomponent/select',
  270. '/pages/subcomponent/customer',
  271. '/pages/subcomponent/edit_profile',
  272. 'logout'
  273. ]
  274. if (pages[index] === 'logout') {
  275. uni.showModal({
  276. title: '提示',
  277. content: '确定要退出登录吗?',
  278. success: (res) => {
  279. if (res.confirm) {
  280. // 执行退出登录逻辑
  281. getApp().globalData.login_status = false;
  282. console.log(getApp().globalData.login_status);
  283. this.login_status = false;
  284. uni.removeStorageSync('token');
  285. }
  286. }
  287. })
  288. return
  289. }
  290. uni.navigateTo({
  291. url: pages[index]
  292. })
  293. },
  294. logout(){
  295. uni.reLaunch({
  296. url: '/pages/index/index'
  297. });
  298. },
  299. onShareCommission() {
  300. uni.showToast({ title: '分享赚佣金', icon: 'none' });
  301. uni.navigateTo({ url: '/pages/subcomponent/promotion' })
  302. },
  303. goOrderManage() {
  304. uni.navigateTo({ url: '/pages/manager/order' })
  305. },
  306. goAppletUserManage() {
  307. uni.navigateTo({ url: '/pages/manager/user' })
  308. },
  309. goStaffManage() {
  310. uni.navigateTo({ url: '/pages/manager/staff' })
  311. },
  312. goTuiManage() {
  313. uni.navigateTo({ url: '/pages/manager/tui' })
  314. },
  315. fetchUserInfo() {
  316. console.log('开始获取用户信息')
  317. if(uni.getStorageSync('token')){
  318. this.login_status = getApp().globalData.login_status;
  319. this.$api("getUserByToken",{},(res)=>{
  320. console.log('获取用户信息响应:', res)
  321. if(res.code == 200){
  322. this.userInfo = res.result
  323. console.log('更新用户信息成功')
  324. }
  325. })
  326. } else {
  327. console.log('未登录状态')
  328. this.login_status = false;
  329. }
  330. },
  331. },
  332. computed: {
  333. customStyle() {
  334. return {
  335. // height: '80rpx',
  336. width: '70%',
  337. }
  338. }
  339. },
  340. onLoad() {
  341. // 启用下拉刷新
  342. uni.startPullDownRefresh()
  343. uni.$on('refreshUserInfo', () => {
  344. this.fetchUserInfo()
  345. })
  346. this.fetchUserInfo()
  347. },
  348. onShow() {
  349. this.fetchUserInfo()
  350. },
  351. onPullDownRefresh() {
  352. console.log('触发下拉刷新')
  353. this.fetchUserInfo()
  354. setTimeout(() => {
  355. console.log('停止下拉刷新')
  356. uni.stopPullDownRefresh()
  357. uni.showToast({
  358. title: '刷新成功',
  359. icon: 'success',
  360. duration: 2000
  361. })
  362. }, 1000)
  363. },
  364. }
  365. </script>
  366. <style lang="scss" scoped>
  367. .container {
  368. min-height: 100vh;
  369. background: #f8f8f8;
  370. padding-bottom: 120rpx;
  371. }
  372. .banner {
  373. height: 400rpx;
  374. background: #ff6b35;
  375. position: relative;
  376. overflow: hidden;
  377. border-radius:0 0 30rpx 30rpx;
  378. .banner-title {
  379. position: absolute;
  380. top: 30%;
  381. left: 20%;
  382. color: #fff;
  383. font-family: DingTalk JinBuTi;
  384. font-weight: 400;
  385. font-style: italic;
  386. font-size: 30px;
  387. line-height: 100%;
  388. letter-spacing: 0%;
  389. vertical-align: bottom;
  390. z-index: 2;
  391. }
  392. .banner-bg {
  393. position: absolute;
  394. width: 100%;
  395. height: 100%;
  396. object-fit: cover;
  397. }
  398. }
  399. .user-card {
  400. margin: -50rpx 30rpx 0;
  401. background: #fff;
  402. border-radius: 24rpx;
  403. padding: 30rpx;
  404. position: relative;
  405. z-index: 2;
  406. // box-shadow: 0 4rpx 12rpx rgba(0, 0, 0, 0.05);
  407. .user-info {
  408. display: flex;
  409. align-items: center;
  410. margin-bottom: 40rpx;
  411. .avatar {
  412. width: 110rpx;
  413. height: 110rpx;
  414. border-radius: 12rpx;
  415. margin-right: 24rpx;
  416. }
  417. .info {
  418. .name {
  419. font-size: 34rpx;
  420. font-weight: 600;
  421. color: #222;
  422. margin-bottom: 12rpx;
  423. display: block;
  424. }
  425. .id {
  426. font-size: 26rpx;
  427. color: #999;
  428. display: flex;
  429. align-items: center;
  430. &::before {
  431. // content: 'ID: ';
  432. color: #999;
  433. margin-right: 4rpx;
  434. }
  435. }
  436. }
  437. }
  438. .wallet-info {
  439. display: flex;
  440. padding: 30rpx;
  441. background: #fff8ea;
  442. border-radius: 16rpx;
  443. position: relative;
  444. &::after {
  445. content: '';
  446. position: absolute;
  447. top: 50%;
  448. left: 50%;
  449. transform: translate(-50%, -50%);
  450. width: 1rpx;
  451. height: 50%;
  452. background: #FFE4D9;
  453. }
  454. .balance {
  455. flex: 1;
  456. padding-right: 30rpx;
  457. .label {
  458. font-size: 26rpx;
  459. color: #999;
  460. margin-bottom: 12rpx;
  461. display: block;
  462. }
  463. .amount {
  464. display: flex;
  465. align-items: baseline;
  466. margin-bottom: 20rpx;
  467. .symbol {
  468. font-size: 30rpx;
  469. color: #FF5B05;
  470. font-weight: normal;
  471. margin-right: 4rpx;
  472. }
  473. .value {
  474. font-size: 46rpx;
  475. font-weight: 600;
  476. color: #FF5B05;
  477. line-height: 1;
  478. }
  479. }
  480. .withdraw-btn {
  481. display: inline-flex;
  482. align-items: center;
  483. padding: 8rpx 16rpx;
  484. background:#fff0d2;
  485. border: 1rpx solid rgba(255, 91, 5, 0.2);
  486. border-radius: 13rpx;
  487. color: #FF5B05;
  488. font-size: 24rpx;
  489. .arrow {
  490. margin-left: 6rpx;
  491. font-family: "PingFang SC";
  492. }
  493. }
  494. }
  495. .recycle-count {
  496. flex: 1;
  497. padding-left: 30rpx;
  498. .label {
  499. font-size: 26rpx;
  500. color: #999;
  501. margin-bottom: 12rpx;
  502. display: block;
  503. }
  504. .count {
  505. display: flex;
  506. align-items: baseline;
  507. .value {
  508. font-size: 46rpx;
  509. font-weight: 600;
  510. color: #222;
  511. line-height: 1;
  512. }
  513. .unit {
  514. font-size: 26rpx;
  515. color: #999;
  516. margin-left: 8rpx;
  517. font-weight: normal;
  518. }
  519. }
  520. }
  521. }
  522. }
  523. .order-section {
  524. margin: 20rpx 30rpx;
  525. background: linear-gradient(to bottom, #fff4e0 0%, #fff 10%);
  526. border-radius: 20rpx;
  527. padding: 20rpx 30rpx;
  528. .section-header {
  529. display: flex;
  530. justify-content: space-between;
  531. align-items: center;
  532. margin-bottom: 30rpx;
  533. .title {
  534. font-size: 34rpx;
  535. font-weight: bold;
  536. color: #333;
  537. }
  538. .view-all {
  539. font-size: 26rpx;
  540. color: #999;
  541. display: flex;
  542. align-items: center;
  543. .arrow {
  544. margin-left: 4rpx;
  545. }
  546. }
  547. }
  548. .order-tabs {
  549. display: flex;
  550. margin-bottom: 30rpx;
  551. background: #f8f8f8;
  552. border-radius: 8rpx;
  553. padding: 4rpx;
  554. .tab-item {
  555. flex: 1;
  556. text-align: center;
  557. padding: 16rpx 0;
  558. position: relative;
  559. color: #666;
  560. font-size: 28rpx;
  561. border-radius: 6rpx;
  562. &.active {
  563. color: #333;
  564. font-weight: bold;
  565. background: #fff;
  566. box-shadow: 0 2rpx 4rpx rgba(0, 0, 0, 0.05);
  567. }
  568. .badge {
  569. position: absolute;
  570. top: 4rpx;
  571. right: 50%;
  572. transform: translateX(24rpx);
  573. background: #ff6b35;
  574. color: #fff;
  575. font-size: 20rpx;
  576. padding: 0 8rpx;
  577. border-radius: 20rpx;
  578. min-width: 28rpx;
  579. height: 28rpx;
  580. line-height: 28rpx;
  581. }
  582. }
  583. }
  584. .order-item {
  585. background: #fff;
  586. border-radius: 16rpx;
  587. padding: 24rpx;
  588. border: none;
  589. box-shadow: 0 2rpx 8rpx rgba(0, 0, 0, 0.02);
  590. .order-header {
  591. margin-bottom: 24rpx;
  592. .order-id {
  593. font-size: 26rpx;
  594. color: #666;
  595. }
  596. }
  597. .order-content {
  598. display: flex;
  599. margin-bottom: 24rpx;
  600. align-items: center;
  601. justify-content: space-between;
  602. position: relative;
  603. &::after {
  604. content: '';
  605. position: absolute;
  606. left: 50%;
  607. top: 50%;
  608. transform: translate(-50%, -50%);
  609. width: 60rpx;
  610. height: 60rpx;
  611. background: #f8f8f8;
  612. border-radius: 50%;
  613. z-index: 1;
  614. }
  615. &::before {
  616. content: '⇌';
  617. position: absolute;
  618. left: 50%;
  619. top: 50%;
  620. transform: translate(-50%, -50%);
  621. color: #999;
  622. font-size: 32rpx;
  623. z-index: 2;
  624. }
  625. .goods-image {
  626. width: 200rpx;
  627. height: 200rpx;
  628. border-radius: 16rpx;
  629. background: #fffbe6;
  630. padding: 20rpx;
  631. box-sizing: border-box;
  632. display: block;
  633. }
  634. .order-info-opt {
  635. width: 200rpx;
  636. min-height: 110rpx;
  637. background: linear-gradient(180deg, #fffbe6 0%, #fff 100%);
  638. border-radius: 16rpx;
  639. display: flex;
  640. flex-direction: column;
  641. align-items: center;
  642. justify-content: space-between;
  643. padding: 24rpx 0 16rpx 0;
  644. box-sizing: border-box;
  645. margin-left: 16rpx;
  646. }
  647. .order-info-top {
  648. display: flex;
  649. flex-direction: column;
  650. align-items: center;
  651. margin-bottom: 8rpx;
  652. }
  653. .order-info-count {
  654. font-size: 32rpx;
  655. color: #222;
  656. font-weight: bold;
  657. margin-bottom: 4rpx;
  658. }
  659. .order-info-price {
  660. font-size: 22rpx;
  661. color: #999;
  662. }
  663. .order-info-estimate {
  664. background: linear-gradient(90deg, #ffd01e 0%, #ff8917 100%);
  665. color: #fff;
  666. font-size: 24rpx;
  667. font-weight: bold;
  668. border-radius: 0 0 16rpx 16rpx;
  669. padding: 12rpx 0;
  670. width: 100%;
  671. text-align: center;
  672. margin-top: 8rpx;
  673. box-shadow: 0 2rpx 8rpx rgba(255, 156, 0, 0.08);
  674. }
  675. }
  676. .order-footer {
  677. display: flex;
  678. align-items: center;
  679. padding: 24rpx;
  680. border-top: 1rpx solid #f5f5f5;
  681. background: #fafafa;
  682. border-radius: 12rpx;
  683. margin: 0 -24rpx -24rpx;
  684. .courier-avatar {
  685. width: 80rpx;
  686. height: 80rpx;
  687. border-radius: 12rpx;
  688. margin-right: 20rpx;
  689. background: #fff;
  690. }
  691. .delivery-info {
  692. flex: 1;
  693. display: flex;
  694. flex-direction: column;
  695. .status {
  696. font-size: 28rpx;
  697. color: #333;
  698. margin-bottom: 8rpx;
  699. font-weight: bold;
  700. }
  701. .time {
  702. font-size: 26rpx;
  703. color: #999;
  704. }
  705. }
  706. }
  707. }
  708. }
  709. .function-list {
  710. margin: 20rpx 30rpx;
  711. background: #fff;
  712. border-radius: 20rpx;
  713. padding: 0 30rpx;
  714. .function-item {
  715. display: flex;
  716. justify-content: space-between;
  717. align-items: center;
  718. padding: 30rpx 0;
  719. border-bottom: 1rpx solid #f5f5f5;
  720. &:last-child {
  721. border-bottom: none;
  722. }
  723. .item-left {
  724. display: flex;
  725. align-items: center;
  726. .icon {
  727. width: 40rpx;
  728. height: 40rpx;
  729. margin-right: 16rpx;
  730. }
  731. text {
  732. font-size: 28rpx;
  733. color: #333;
  734. }
  735. }
  736. .arrow {
  737. color: #999;
  738. font-size: 24rpx;
  739. }
  740. }
  741. }
  742. .tab-bar {
  743. position: fixed;
  744. bottom: 0;
  745. left: 0;
  746. right: 0;
  747. height: 100rpx;
  748. background: #fff;
  749. display: flex;
  750. padding-bottom: env(safe-area-inset-bottom);
  751. border-top: 1rpx solid #f5f5f5;
  752. .tab-item {
  753. flex: 1;
  754. display: flex;
  755. flex-direction: column;
  756. align-items: center;
  757. justify-content: center;
  758. padding: 10rpx 0;
  759. image {
  760. width: 48rpx;
  761. height: 48rpx;
  762. margin-bottom: 6rpx;
  763. }
  764. text {
  765. font-size: 20rpx;
  766. color: #999;
  767. }
  768. &.active {
  769. text {
  770. color: #ff6b35;
  771. }
  772. }
  773. }
  774. }
  775. .user-cards {
  776. margin: -50rpx 30rpx 0;
  777. background: #fff;
  778. border-radius: 24rpx;
  779. padding: 30rpx;
  780. position: relative;
  781. z-index: 2;
  782. box-shadow: 0 4rpx 12rpx rgba(0, 0, 0, 0.05);
  783. .user-info {
  784. display: flex;
  785. align-items: center;
  786. margin-bottom: 40rpx;
  787. .avatars {
  788. width: 110rpx;
  789. height: 110rpx;
  790. border-radius: 50%;
  791. margin-right: 24rpx;
  792. }
  793. }
  794. .info {
  795. .name {
  796. font-size: 34rpx;
  797. font-weight: 600;
  798. color: #222;
  799. margin-bottom: 12rpx;
  800. display: block;
  801. }
  802. }
  803. }
  804. .btns{
  805. width: 100%;
  806. margin: 0 auto;
  807. margin-top: 30%;
  808. display: flex;
  809. flex-direction: column;
  810. justify-content: center;
  811. align-items: center;
  812. .uv-button, .btn{
  813. width: 100%;
  814. height: 100rpx;
  815. background: linear-gradient(90deg, #FFD36D 0%, #FFA800 100%);
  816. color: #fff;
  817. font-size: 36rpx;
  818. border-radius: 50rpx;
  819. font-weight: bold;
  820. display: flex;
  821. align-items: center;
  822. justify-content: center;
  823. box-shadow: 0 4rpx 16rpx rgba(255, 168, 0, 0.08);
  824. border: none;
  825. margin: 0 auto;
  826. }
  827. text{
  828. margin-top: 20rpx;
  829. font-family: PingFang SC;
  830. font-weight: 400;
  831. font-size: 13px;
  832. line-height: 100%;
  833. letter-spacing: 0%;
  834. text-align: center;
  835. color: #a3a3a3;
  836. }
  837. }
  838. .share-commission-card {
  839. width: 90%;
  840. margin: 32rpx auto 24rpx auto;
  841. height: 90rpx;
  842. background: linear-gradient(90deg, #ffd01e 0%, #ff8917 100%);
  843. border-radius: 24rpx;
  844. display: flex;
  845. align-items: center;
  846. justify-content: center;
  847. box-shadow: 0 4rpx 16rpx rgba(255, 156, 0, 0.08);
  848. cursor: pointer;
  849. }
  850. .share-commission-text {
  851. color: #fff;
  852. font-size: 32rpx;
  853. font-weight: bold;
  854. letter-spacing: 2rpx;
  855. }
  856. .manage-list {
  857. margin-bottom: 20rpx;
  858. }
  859. </style>