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.

762 lines
21 KiB

5 months ago
5 months ago
5 months ago
5 months ago
5 months ago
5 months ago
5 months ago
5 months ago
5 months ago
5 months ago
5 months ago
5 months ago
5 months ago
5 months ago
5 months ago
5 months ago
5 months ago
5 months ago
5 months ago
5 months ago
  1. <template>
  2. <view class="personal-index">
  3. <view class="personal-base-info">
  4. <view style="width: 100%;height: 140px; margin-top: 10px;">
  5. <view style="width: 100%;text-align: center;" @click="openOtherPage('userInfo')">
  6. <img :src="userAvatar"
  7. class="user-avatar-circle"></img>
  8. </view>
  9. <!-- <view style="width: 100%;text-align: center;">
  10. <img src="https://catmdogf.oss-cn-shanghai.aliyuncs.com/CMDF/front/personal/index/cmdf_text.png"style="width:55px;height: 16px;" mode="widthFix"></img>
  11. </view>
  12. -->
  13. <view class="personal-user">
  14. <view class="personal-user-level">
  15. {{userLevel}}
  16. </view>
  17. <view class="personal-user-name" @click="openOtherPage('userInfo')">
  18. {{userName}}
  19. </view>
  20. <view style="width: 62px;margin-left: 15px;"> </view>
  21. </view>
  22. </view>
  23. <view style="padding: 0 15px; width: 100%;">
  24. <view class="personal-progress" @click="openOtherPage('member')">
  25. <view class="progress-text">
  26. {{consumption}}
  27. <!-- 累计消费{{spent}}{{startDate}}起至今 -->
  28. </view>
  29. <view class="progress">
  30. <view class="progress-box">
  31. <progress :percent="process" activeColor="#FFAA48" backgroundColor="#ffffff" border-radius="28px" stroke-width="5" />
  32. </view>
  33. </view>
  34. <view class="progress-text" v-if="userLevel!='金卡会员'">
  35. {{promotionDate}}
  36. <text style="font-weight: bold;font-size: 14px;">
  37. 再消费{{amountNeeded}}
  38. </text>即可升级至
  39. <text style="font-weight: bold;font-size: 14px;">{{nextLevel}}</text>
  40. </view>
  41. </view>
  42. </view>
  43. <view class="personal-stat">
  44. <view class="personal-stat-box">
  45. <view class="personal-stat-box-left" @click="openOtherPage('point')">
  46. <view class="personal-stat-box-label">
  47. 积分
  48. </view>
  49. <view class="personal-stat-box-value">
  50. {{point}}
  51. </view>
  52. </view>
  53. <view class="personal-stat-box-right">
  54. <img src="https://catmdogf.oss-cn-shanghai.aliyuncs.com/CMDF/front/personal/index/point.png" alt="point" class="personal-stat-box-img" mode="widthFix"/>
  55. </view>
  56. <view class="personal-stat-box-bottom">
  57. 查看历史明细
  58. </view>
  59. </view>
  60. <view class="personal-stat-box" @click="openOtherPage('collect')">
  61. <view class="personal-stat-box-left">
  62. <view class="personal-stat-box-label">
  63. 集点
  64. </view>
  65. <view class="personal-stat-box-value">
  66. {{collect}}
  67. </view>
  68. </view>
  69. <view class="personal-stat-box-right">
  70. <img src="https://catmdogf.oss-cn-shanghai.aliyuncs.com/CMDF/front/personal/index/collect.png" alt="collect" class="personal-stat-box-img" mode="widthFix"/>
  71. </view>
  72. <view class="personal-stat-box-bottom">
  73. 下单获得好礼
  74. </view>
  75. </view>
  76. <view class="personal-stat-box" @click="openOtherPage('coupon')">
  77. <view class="personal-stat-box-left">
  78. <view class="personal-stat-box-label">
  79. 卡券
  80. </view>
  81. <view class="personal-stat-box-value">
  82. {{coupon}}
  83. </view>
  84. </view>
  85. <view class="personal-stat-box-right">
  86. <img src="https://catmdogf.oss-cn-shanghai.aliyuncs.com/CMDF/front/personal/index/coupon.png" alt="coupon" class="personal-stat-box-img" mode="widthFix"/>
  87. </view>
  88. <view class="personal-stat-box-bottom">
  89. 我的卡券数量
  90. </view>
  91. </view>
  92. </view>
  93. <view class="personal-order">
  94. <uni-card margin="0 15px 10px" :is-shadow="false">
  95. <view class="personal-order-title" slot="title">
  96. <view class="personal-order-title-text">
  97. 订单状态
  98. </view>
  99. <view class="personal-order-title-link" @click="openOtherPage('order')">
  100. 全部订单 <uni-icons type="right" size="14px" color="#AAA"></uni-icons>
  101. </view>
  102. </view>
  103. <view v-if="isMember">
  104. <view style="padding-bottom: 10px;">
  105. <view style="color: #AAA;
  106. font-size: 14px;
  107. text-align: center;
  108. margin-bottom: 10px;">
  109. 当前订单
  110. </view>
  111. <uni-steps :options="orderStatus" active-icon="checkbox" :active="active" active-color='#ffaa48'
  112. />
  113. <view class="uni-steps-btns" v-if="active == 2">
  114. <u-button
  115. type="primary"
  116. shape="circle"
  117. color="#FFAA48"
  118. text="查看图片"
  119. @click="handleStepClick"></u-button>
  120. </view>
  121. </view>
  122. <view class="personal-order-footer" slot="actions">
  123. <view class="personal-order-footer-text">
  124. {{service}}
  125. <view style="color: #AAA;font-size: 12px;"> (本次服务共{{days}}) </view>
  126. </view>
  127. <view class="personal-order-footer-text">
  128. {{amount}}
  129. </view>
  130. </view>
  131. </view>
  132. <view v-else class="personal-order-login-btn" >
  133. <u-button type="primary"
  134. open-type="getPhoneNumber" @getphonenumber="onGetPhoneNumber"
  135. shape="circle" :plain="true"
  136. :hairline="true" color="#FFAA48"
  137. text="登录后方可预约"
  138. @click="toRegister"></u-button>
  139. </view>
  140. </uni-card>
  141. </view>
  142. <view class="personal-functions">
  143. <uni-card margin="0 15px 10px" :is-shadow="false">
  144. <view class="personal-function-title" slot="title">
  145. <view class="personal-function-title-text">
  146. 常用功能
  147. </view>
  148. </view>
  149. <view class="personal-functions-content">
  150. <view v-for="(item,index) in functions" :key="index" class="personal-function" @click="openOtherPage(item.path)">
  151. <img :src="item.icon" alt="item.label" style="width: 30px; height: 30px;" mode="widthFix" />
  152. <view class="personal-function-name">{{item.label}}</view>
  153. </view>
  154. </view>
  155. </uni-card>
  156. </view>
  157. </view>
  158. </view>
  159. </template>
  160. <script>
  161. import {getOpenId,getPhoneNumber} from "@/api/system/user.js"
  162. import { setToken,getToken,getOpenIdKey,setOpenIdKey } from '@/utils/auth'
  163. import {getPersonalInfo} from "@/api/system/personal.js"
  164. import { appletOrderDateFrequencyList } from '@/api/order/order.js'
  165. export default{
  166. data(){
  167. return{
  168. userName:'',
  169. userLevel:'',
  170. userAvatar:'https://catmdogf.oss-cn-shanghai.aliyuncs.com/CMDF/front/personal/index/avatar_1.png',
  171. process:0,
  172. spent:0,
  173. cost:0,
  174. consumption:'',
  175. promotion:'',
  176. point:0,
  177. collect:'0/10',
  178. coupon:0,
  179. active: 0,
  180. isMember:false,
  181. orderStatus: [{
  182. activeImg:'https://catmdogf.oss-cn-shanghai.aliyuncs.com/CMDF/front/personal/index/sentedOrder.png',
  183. deactiveImg:'https://catmdogf.oss-cn-shanghai.aliyuncs.com/CMDF/front/personal/index/sentOrder.png',
  184. title: '待派单'
  185. }, {
  186. activeImg:'https://catmdogf.oss-cn-shanghai.aliyuncs.com/CMDF/front/personal/index/ordered.png',
  187. deactiveImg:'https://catmdogf.oss-cn-shanghai.aliyuncs.com/CMDF/front/personal/index/order.png',
  188. title: '已派单'
  189. }, {
  190. activeImg:'https://catmdogf.oss-cn-shanghai.aliyuncs.com/CMDF/front/personal/index/serviced.png',
  191. deactiveImg:'https://catmdogf.oss-cn-shanghai.aliyuncs.com/CMDF/front/personal/index/service.png',
  192. title: '服务中'
  193. }, {
  194. activeImg:'https://catmdogf.oss-cn-shanghai.aliyuncs.com/CMDF/front/personal/index/overed.png',
  195. deactiveImg:'https://catmdogf.oss-cn-shanghai.aliyuncs.com/CMDF/front/personal/index/over.png',
  196. title: '已完成'
  197. }],
  198. service:'专业喂养',
  199. days:0,
  200. amount:0,
  201. promotionDate:'2025年01月01日',
  202. nextLevel:'普卡会员',
  203. amountNeeded:'0',
  204. functions:[
  205. {
  206. icon:'https://catmdogf.oss-cn-shanghai.aliyuncs.com/CMDF/front/personal/index/pet.png',
  207. label: '宠物档案',
  208. path:'pet'
  209. },
  210. {
  211. icon:'https://catmdogf.oss-cn-shanghai.aliyuncs.com/CMDF/front/personal/index/serviceFile.png',
  212. label: '服务档案',
  213. path:'service'
  214. },
  215. {
  216. icon:'https://catmdogf.oss-cn-shanghai.aliyuncs.com/CMDF/front/personal/index/address.png',
  217. label: '地址电话',
  218. path:'address'
  219. },
  220. {
  221. icon:'https://catmdogf.oss-cn-shanghai.aliyuncs.com/CMDF/front/personal/index/lock.png',
  222. label: '门锁信息',
  223. path:'lock'
  224. },
  225. {
  226. icon:'https://catmdogf.oss-cn-shanghai.aliyuncs.com/CMDF/front/personal/index/lock.png',
  227. label: '任务中心',
  228. path:'taskList'
  229. },
  230. {
  231. icon:'https://catmdogf.oss-cn-shanghai.aliyuncs.com/CMDF/front/personal/index/lock.png',
  232. label: '邀请绑定',
  233. path:'InvitationCode'
  234. },
  235. ],
  236. orderDateFrequencyList:[],
  237. orderDateFrequencyId : '',
  238. }
  239. },
  240. onShow() {
  241. if (!getToken() || !getOpenIdKey()) {
  242. this.login()
  243. } else{
  244. this.getPersonalInfo()
  245. // this.initVisitor()
  246. }
  247. },
  248. methods: {
  249. testBtn(){
  250. uni.reLaunch({
  251. // url: '/pages_order/order/orderList'
  252. url: '/pages_order/order/payOrderSuccessful'
  253. });
  254. },
  255. onGetPhoneNumber(e){
  256. if(e.detail.errMsg=="getPhoneNumber:fail user deny"){ //用户拒绝授权
  257. //拒绝授权后弹出一些提示
  258. }else{ //允许授权
  259. if(getOpenIdKey()){
  260. this.getPhoneNumber({"openId":getOpenIdKey(),"code":e.detail.code})
  261. }
  262. // debugger
  263. // console.log(e.detail.encryptedData)
  264. // e.detail.encryptedData //加密的用户信息
  265. // e.detail.iv //加密算法的初始向量 时要用到
  266. }
  267. },
  268. getPhoneNumber(data){
  269. getPhoneNumber(data).then(res=>{
  270. if(res&&res.code==200){
  271. let token = res.data.token
  272. setToken(token)
  273. this.isMember=true
  274. } else{
  275. uni.showToast({
  276. icon:'error',
  277. title:'获取手机号失败'
  278. })
  279. }
  280. })
  281. },
  282. login() {
  283. uni.login({
  284. provider: 'weixin',
  285. success: (loginRes) => {
  286. this.getOpenId(loginRes.code)
  287. },
  288. fail: function(error) {
  289. // 授权失败处理
  290. uni.showToast('授权失败,请授权后再试')
  291. }
  292. });
  293. },
  294. getOpenId(code) {
  295. getOpenId(code).then(res => {
  296. if (res.code == 200 && res.data) {
  297. let resData = JSON.parse(res.data)
  298. let token = resData.token;
  299. let openId = resData.openId;
  300. setOpenIdKey(openId)
  301. if(token){
  302. setToken(token)
  303. this.getPersonalInfo()
  304. }else{
  305. this.initVisitor()
  306. }
  307. }
  308. })
  309. },
  310. getPersonalInfo(){
  311. this.$store.commit('getUserInfo')
  312. this.isMember=true
  313. getPersonalInfo().then(res=>{
  314. if(res&&(res.id || res.id === 0)){
  315. this.userLevel=res.level
  316. this.userName=res.nickname
  317. // 设置用户头像,如果有头像则使用,否则使用默认头像
  318. this.userAvatar = res.avatar || 'https://catmdogf.oss-cn-shanghai.aliyuncs.com/CMDF/front/personal/index/avatar_1.png'
  319. this.consumption=res.consumption
  320. this.promotion=res.promotion
  321. this.process=res.process*100
  322. this.point=res.integral
  323. this.collect=`${res.centralPoint}/10`
  324. this.coupon=res.coupon
  325. this.promotionDate=res.promotionDate
  326. this.nextLevel=res.nextLevel
  327. this.amountNeeded=res.amountNeeded
  328. if(res.h5OrderVO){
  329. let orderInfo= res.h5OrderVO
  330. if(orderInfo.status) {
  331. if(orderInfo.status==1){
  332. this.active = 0
  333. }else if(orderInfo.status==11){
  334. // let date = new Date();
  335. // let currentDate = `${date.getFullYear()}-${("0" + (date.getMonth() + 1)).slice(-2)}-${("0" + date.getDate()).slice(-2)}`;
  336. // let serviceDate= orderInfo.orderServiceList[0]?.serviceDate
  337. // if(serviceDate.indexOf(currentDate)>-1){
  338. // this.active=2
  339. // }else{
  340. // this.active=1
  341. // }
  342. this.active=2
  343. this.orderDateFrequencyId = orderInfo.orderId
  344. // const params = {
  345. // orderId: orderInfo.orderId,
  346. // pageNumber: this.page,
  347. // pageSize: 9999999,
  348. // status : 2
  349. // };
  350. // appletOrderDateFrequencyList(params).then(res => {
  351. // if (res && res.data) {
  352. // this.active=2
  353. // this.orderDateFrequencyList = res.data
  354. // for (let index = 0; index < res.data.length; index++) {
  355. // const element = res.data[index];
  356. // element.list.forEach(n => {
  357. // if (n.status == 2) {
  358. // this.orderDateFrequencyId = n.id
  359. // }
  360. // })
  361. // }
  362. // }
  363. // }).catch(err => {
  364. // });
  365. }else if(orderInfo.status==3){
  366. this.active = 3
  367. }
  368. this.setOrderInfo(orderInfo)
  369. }else{
  370. this.active = 0
  371. this.amount=0
  372. this.service='专业喂养'
  373. this.days=0
  374. }
  375. }
  376. }
  377. console.log(res)
  378. })
  379. },
  380. initVisitor(){
  381. let currentYear = new Date().getFullYear()
  382. this.userLevel='游客'
  383. this.userName='游客'
  384. this.userAvatar='https://catmdogf.oss-cn-shanghai.aliyuncs.com/CMDF/front/personal/index/avatar_1.png'
  385. this.consumption=`累计消费 0 元( ${currentYear}-01-01起至今)`
  386. this.promotion='注册后即可享受会员权益'
  387. this.process=0
  388. this.point=0
  389. this.collect=`0/10`
  390. this.coupon=0
  391. this.active = 0
  392. this.amount=0
  393. this.service='专业喂养'
  394. this.days=0
  395. },
  396. setOrderInfo(orderInfo){
  397. this.amount=orderInfo.totalAmount
  398. this.service=orderInfo.orderItemList[0]?.productName
  399. let serviceDate= orderInfo.orderServiceList[0]?.serviceDate
  400. this.days = JSON.parse(serviceDate).length
  401. },
  402. toRegister(){
  403. this.$modal.showToast('敬请期待');
  404. },
  405. handleStepClick(orderInfo = {}) {
  406. // if(!this.isMember){
  407. // this.$modal.showToast('暂未匹配到您的会员信息,请先注册成为会员!');
  408. // return;
  409. // }
  410. uni.navigateTo({
  411. url: `/pages_order/order/serviceRecord?orderId=${this.orderDateFrequencyId}`
  412. });
  413. // 如果点击的是服务中状态(索引为2)且当前订单状态也是服务中
  414. // if (e.index === 2 && this.active === 2) {
  415. // 跳转到订单详情页面
  416. // uni.navigateTo({
  417. // url: `/pages/personalCenter/orderDetailImage?id=${this.orderDateFrequencyId}`
  418. // });
  419. // }
  420. },
  421. openOtherPage(type){
  422. if(!this.isMember){
  423. this.$modal.showToast('暂未匹配到您的会员信息,请先注册成为会员!');
  424. return;
  425. }
  426. switch(type){
  427. case 'member':{
  428. // this.$modal.showToast('页面开发中');
  429. uni.navigateTo({
  430. url: `/pages/personalCenter/member`
  431. });
  432. break;
  433. }
  434. case 'point':{
  435. uni.navigateTo({
  436. url: `/pages/personalCenter/point`
  437. });
  438. break;
  439. }
  440. case 'collect':{
  441. uni.navigateTo({
  442. url: `/pages/personalCenter/collect`
  443. });
  444. break;
  445. }
  446. case 'coupon':{
  447. // uni.showToast({
  448. // title: '敬请期待',
  449. // duration: 3000,
  450. // icon:"none"
  451. // })
  452. // this.$modal.showToast('敬请期待');
  453. uni.navigateTo({
  454. url: `/pages/personalCenter/coupon`
  455. });
  456. break;
  457. }
  458. case 'order':{
  459. uni.navigateTo({
  460. // url: `/pages/details/order`
  461. url: `/pages_order/order/orderList`
  462. });
  463. break;
  464. }
  465. case 'pet':{
  466. uni.navigateTo({
  467. url: `/pages/personalCenter/pet`
  468. });
  469. break;
  470. }
  471. case 'lock':{
  472. uni.navigateTo({
  473. url: `/pages/personalCenter/lock`
  474. });
  475. break;
  476. }
  477. case 'service':{
  478. uni.navigateTo({
  479. url: `/pages/personalCenter/service`
  480. });
  481. break;
  482. }
  483. case 'address':{
  484. uni.navigateTo({
  485. url: `/pages/personalCenter/address`
  486. });
  487. break;
  488. }
  489. case 'taskList':{
  490. uni.navigateTo({
  491. url: `/pages_order/task/taskList`
  492. });
  493. break;
  494. }
  495. case 'InvitationCode':{
  496. uni.navigateTo({
  497. url: `/pages_order/mine/InvitationCode`
  498. });
  499. break;
  500. }
  501. case 'userInfo':{
  502. uni.navigateTo({
  503. url: `/pages/personalCenter/userInfo`
  504. });
  505. break;
  506. }
  507. default:this.$modal.showToast('页面开发中');
  508. }
  509. }
  510. }
  511. }
  512. </script>
  513. <style lang="scss">
  514. .personal-index{
  515. .personal-base-info{
  516. display: flex;
  517. justify-content: center;
  518. flex-wrap: wrap;
  519. align-content:flex-start;
  520. width: 100%;
  521. height: 200px;
  522. flex-shrink: 0;
  523. background: linear-gradient(0deg, #F5F5F7 0%, #FFBF60 99.41%);
  524. .personal-user{
  525. display: flex;
  526. justify-content: center;
  527. align-items: center;
  528. margin-top: 10px;
  529. .personal-user-name{
  530. text-align: center;
  531. color: #111;
  532. font-size: 20px;
  533. font-style: normal;
  534. font-weight: blod;
  535. height: 28px;
  536. }
  537. .personal-user-level{
  538. width: 62px;
  539. height: 22px;
  540. line-height: 22px;
  541. background-color: #ffaa48;
  542. color: #FFF;
  543. text-align: center;
  544. font-size: 12px;
  545. font-style: normal;
  546. font-weight: 500;
  547. border-radius: 20px;
  548. border: #FFF solid 1.5px;
  549. margin-right: 15px;
  550. }
  551. }
  552. .personal-progress{
  553. width: 100%;
  554. height: 80px;
  555. flex-shrink: 0;
  556. border-radius: 8px;
  557. border: 1.5px solid #FFF;
  558. padding: 10px;
  559. background: linear-gradient(107deg, #FFE0BF 8.09%, #FFECD7 21.18%, #FFF4E8 32.78%, #FFEFDE 44.88%, #FEEEDB 57.48%);
  560. .progress-text{
  561. color: #B78B43;
  562. text-align: center;
  563. font-size: 12px;
  564. font-style: normal;
  565. font-weight: 400;
  566. line-height: 20px;
  567. }
  568. .progress{
  569. margin: 5px 0;
  570. }
  571. }
  572. }
  573. .personal-stat{
  574. display: flex;
  575. justify-content: space-between;
  576. align-items: center;
  577. padding: 10px 15px;
  578. .personal-stat-box{
  579. width: 30%;
  580. height: 90px;
  581. flex-shrink: 0;
  582. border-radius: 8px;
  583. background: #FFF;
  584. display: flex;
  585. flex-wrap: wrap;
  586. padding: 10px;
  587. .personal-stat-box-right{
  588. width: 50%;
  589. height: 45px;
  590. text-align: right;
  591. .personal-stat-box-img{
  592. width: 34px;
  593. height: 34px;
  594. }
  595. }
  596. .personal-stat-box-left{
  597. width: 50%;
  598. height: 45px;
  599. display:flex;
  600. flex-flow: column; //垂直排列
  601. justify-content: space-between;//两端对齐
  602. .personal-stat-box-label{
  603. color: #111;
  604. font-size: 14px;
  605. font-style: normal;
  606. font-weight: 400;
  607. line-height: 16px;
  608. }
  609. .personal-stat-box-value{
  610. color: #333;
  611. font-size: 16px;
  612. font-style: normal;
  613. font-weight: 500;
  614. line-height: 14px;
  615. }
  616. }
  617. .personal-stat-box-bottom{
  618. width: 100%;
  619. color: #AAA;
  620. font-size: 12px;
  621. font-style: normal;
  622. font-weight: 400;
  623. line-height: normal;
  624. display: flex;
  625. align-items: flex-end;
  626. }
  627. }
  628. }
  629. .uni-steps-btns{
  630. display: flex;
  631. justify-content: center;
  632. .u-button{
  633. width: 160rpx;
  634. height: 55rpx;
  635. margin-right: 155rpx;
  636. .u-button__text{
  637. font-size: 22rpx !important;
  638. }
  639. }
  640. }
  641. .personal-order{
  642. width: 100%;
  643. .personal-order-title{
  644. width: 100%;
  645. display: flex;
  646. justify-content: space-between;
  647. align-items: center;
  648. border-bottom: 1px solid #efefef;
  649. height: 36px;
  650. .personal-order-title-text{
  651. color: #333;
  652. font-size: 15px;
  653. font-style: normal;
  654. font-weight: 500;
  655. line-height: 16px;
  656. }
  657. .personal-order-title-link{
  658. color: #AAA;
  659. font-size: 13px;
  660. font-style: normal;
  661. font-weight: 400;
  662. line-height: 16px;
  663. }
  664. }
  665. .personal-order-footer{
  666. width: 100%;
  667. display: flex;
  668. justify-content: space-between;
  669. align-items: center;
  670. border-top: 1px solid #efefef;
  671. padding-top: 10px;
  672. .personal-order-footer-text{
  673. display: flex;
  674. color: #333;
  675. font-size: 13px;
  676. font-style: normal;
  677. font-weight: 400;
  678. line-height: normal;
  679. }
  680. }
  681. .personal-order-login-btn{
  682. height: 100px;
  683. display: flex;
  684. justify-content: center;
  685. align-items: center;
  686. }
  687. }
  688. }
  689. .personal-functions{
  690. width: 100%;
  691. .personal-function-title{
  692. width: 100%;
  693. display: flex;
  694. justify-content: space-between;
  695. align-items: center;
  696. border-bottom: 1px solid #efefef;
  697. height: 36px;
  698. .personal-function-title-text{
  699. color: #333;
  700. font-size: 15px;
  701. font-style: normal;
  702. font-weight: 500;
  703. line-height: 16px;
  704. }
  705. }
  706. .personal-functions-content{
  707. width: 100%;
  708. display: flex;
  709. // justify-content: space-between;
  710. align-items: center;
  711. flex-wrap: wrap;
  712. gap: 34rpx 0;
  713. .personal-function{
  714. width: 24%;
  715. display: flex;
  716. justify-content: center;
  717. flex-wrap: wrap;
  718. .personal-function-name{
  719. color: #333;
  720. font-size: 14px;
  721. font-style: normal;
  722. font-weight: 400;
  723. line-height: normal;
  724. margin-top: 5px;
  725. }
  726. }
  727. }
  728. }
  729. .user-avatar-circle {
  730. width: 66px;
  731. height: 66px;
  732. border-radius: 50%;
  733. object-fit: cover;
  734. }
  735. </style>