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.

756 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
  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. onGetPhoneNumber(e){
  250. if(e.detail.errMsg=="getPhoneNumber:fail user deny"){ //用户拒绝授权
  251. //拒绝授权后弹出一些提示
  252. }else{ //允许授权
  253. if(getOpenIdKey()){
  254. this.getPhoneNumber({"openId":getOpenIdKey(),"code":e.detail.code})
  255. }
  256. // debugger
  257. // console.log(e.detail.encryptedData)
  258. // e.detail.encryptedData //加密的用户信息
  259. // e.detail.iv //加密算法的初始向量 时要用到
  260. }
  261. },
  262. getPhoneNumber(data){
  263. getPhoneNumber(data).then(res=>{
  264. if(res&&res.code==200){
  265. let token = res.data.token
  266. setToken(token)
  267. this.isMember=true
  268. } else{
  269. uni.showToast({
  270. icon:'error',
  271. title:'获取手机号失败'
  272. })
  273. }
  274. })
  275. },
  276. login() {
  277. uni.login({
  278. provider: 'weixin',
  279. success: (loginRes) => {
  280. this.getOpenId(loginRes.code)
  281. },
  282. fail: function(error) {
  283. // 授权失败处理
  284. uni.showToast('授权失败,请授权后再试')
  285. }
  286. });
  287. },
  288. getOpenId(code) {
  289. getOpenId(code).then(res => {
  290. if (res.code == 200 && res.data) {
  291. let resData = JSON.parse(res.data)
  292. let token = resData.token;
  293. let openId = resData.openId;
  294. setOpenIdKey(openId)
  295. if(token){
  296. setToken(token)
  297. this.getPersonalInfo()
  298. }else{
  299. this.initVisitor()
  300. }
  301. }
  302. })
  303. },
  304. getPersonalInfo(){
  305. this.$store.commit('getUserInfo')
  306. this.isMember=true
  307. getPersonalInfo().then(res=>{
  308. if(res&&(res.id || res.id === 0)){
  309. this.userLevel=res.level
  310. this.userName=res.nickname
  311. // 设置用户头像,如果有头像则使用,否则使用默认头像
  312. this.userAvatar = res.avatar || 'https://catmdogf.oss-cn-shanghai.aliyuncs.com/CMDF/front/personal/index/avatar_1.png'
  313. this.consumption=res.consumption
  314. this.promotion=res.promotion
  315. this.process=res.process*100
  316. this.point=res.integral
  317. this.collect=`${res.centralPoint}/10`
  318. this.coupon=res.coupon
  319. this.promotionDate=res.promotionDate
  320. this.nextLevel=res.nextLevel
  321. this.amountNeeded=res.amountNeeded
  322. if(res.h5OrderVO){
  323. let orderInfo= res.h5OrderVO
  324. if(orderInfo.status) {
  325. if(orderInfo.status==1){
  326. this.active = 0
  327. }else if(orderInfo.status==11){
  328. // let date = new Date();
  329. // let currentDate = `${date.getFullYear()}-${("0" + (date.getMonth() + 1)).slice(-2)}-${("0" + date.getDate()).slice(-2)}`;
  330. // let serviceDate= orderInfo.orderServiceList[0]?.serviceDate
  331. // if(serviceDate.indexOf(currentDate)>-1){
  332. // this.active=2
  333. // }else{
  334. // this.active=1
  335. // }
  336. this.active=2
  337. this.orderDateFrequencyId = orderInfo.orderId
  338. // const params = {
  339. // orderId: orderInfo.orderId,
  340. // pageNumber: this.page,
  341. // pageSize: 9999999,
  342. // status : 2
  343. // };
  344. // appletOrderDateFrequencyList(params).then(res => {
  345. // if (res && res.data) {
  346. // this.active=2
  347. // this.orderDateFrequencyList = res.data
  348. // for (let index = 0; index < res.data.length; index++) {
  349. // const element = res.data[index];
  350. // element.list.forEach(n => {
  351. // if (n.status == 2) {
  352. // this.orderDateFrequencyId = n.id
  353. // }
  354. // })
  355. // }
  356. // }
  357. // }).catch(err => {
  358. // });
  359. }else if(orderInfo.status==3){
  360. this.active = 3
  361. }
  362. this.setOrderInfo(orderInfo)
  363. }else{
  364. this.active = 0
  365. this.amount=0
  366. this.service='专业喂养'
  367. this.days=0
  368. }
  369. }
  370. }
  371. console.log(res)
  372. })
  373. },
  374. initVisitor(){
  375. let currentYear = new Date().getFullYear()
  376. this.userLevel='游客'
  377. this.userName='游客'
  378. this.userAvatar='https://catmdogf.oss-cn-shanghai.aliyuncs.com/CMDF/front/personal/index/avatar_1.png'
  379. this.consumption=`累计消费 0 元( ${currentYear}-01-01起至今)`
  380. this.promotion='注册后即可享受会员权益'
  381. this.process=0
  382. this.point=0
  383. this.collect=`0/10`
  384. this.coupon=0
  385. this.active = 0
  386. this.amount=0
  387. this.service='专业喂养'
  388. this.days=0
  389. },
  390. setOrderInfo(orderInfo){
  391. this.amount=orderInfo.totalAmount
  392. this.service=orderInfo.orderItemList[0]?.productName
  393. let serviceDate= orderInfo.orderServiceList[0]?.serviceDate
  394. this.days = JSON.parse(serviceDate).length
  395. },
  396. toRegister(){
  397. this.$modal.showToast('敬请期待');
  398. },
  399. handleStepClick(orderInfo = {}) {
  400. // if(!this.isMember){
  401. // this.$modal.showToast('暂未匹配到您的会员信息,请先注册成为会员!');
  402. // return;
  403. // }
  404. uni.navigateTo({
  405. url: `/pages_order/order/serviceRecord?orderId=${this.orderDateFrequencyId}`
  406. });
  407. // 如果点击的是服务中状态(索引为2)且当前订单状态也是服务中
  408. // if (e.index === 2 && this.active === 2) {
  409. // 跳转到订单详情页面
  410. // uni.navigateTo({
  411. // url: `/pages/personalCenter/orderDetailImage?id=${this.orderDateFrequencyId}`
  412. // });
  413. // }
  414. },
  415. openOtherPage(type){
  416. if(!this.isMember){
  417. this.$modal.showToast('暂未匹配到您的会员信息,请先注册成为会员!');
  418. return;
  419. }
  420. switch(type){
  421. case 'member':{
  422. // this.$modal.showToast('页面开发中');
  423. uni.navigateTo({
  424. url: `/pages/personalCenter/member`
  425. });
  426. break;
  427. }
  428. case 'point':{
  429. uni.navigateTo({
  430. url: `/pages/personalCenter/point`
  431. });
  432. break;
  433. }
  434. case 'collect':{
  435. uni.navigateTo({
  436. url: `/pages/personalCenter/collect`
  437. });
  438. break;
  439. }
  440. case 'coupon':{
  441. // uni.showToast({
  442. // title: '敬请期待',
  443. // duration: 3000,
  444. // icon:"none"
  445. // })
  446. // this.$modal.showToast('敬请期待');
  447. uni.navigateTo({
  448. url: `/pages/personalCenter/coupon`
  449. });
  450. break;
  451. }
  452. case 'order':{
  453. uni.navigateTo({
  454. // url: `/pages/details/order`
  455. url: `/pages_order/order/orderList`
  456. });
  457. break;
  458. }
  459. case 'pet':{
  460. uni.navigateTo({
  461. url: `/pages/personalCenter/pet`
  462. });
  463. break;
  464. }
  465. case 'lock':{
  466. uni.navigateTo({
  467. url: `/pages/personalCenter/lock`
  468. });
  469. break;
  470. }
  471. case 'service':{
  472. uni.navigateTo({
  473. url: `/pages/personalCenter/service`
  474. });
  475. break;
  476. }
  477. case 'address':{
  478. uni.navigateTo({
  479. url: `/pages/personalCenter/address`
  480. });
  481. break;
  482. }
  483. case 'taskList':{
  484. uni.navigateTo({
  485. url: `/pages_order/task/taskList`
  486. });
  487. break;
  488. }
  489. case 'InvitationCode':{
  490. uni.navigateTo({
  491. url: `/pages_order/mine/InvitationCode`
  492. });
  493. break;
  494. }
  495. case 'userInfo':{
  496. uni.navigateTo({
  497. url: `/pages/personalCenter/userInfo`
  498. });
  499. break;
  500. }
  501. default:this.$modal.showToast('页面开发中');
  502. }
  503. }
  504. }
  505. }
  506. </script>
  507. <style lang="scss">
  508. .personal-index{
  509. .personal-base-info{
  510. display: flex;
  511. justify-content: center;
  512. flex-wrap: wrap;
  513. align-content:flex-start;
  514. width: 100%;
  515. height: 200px;
  516. flex-shrink: 0;
  517. background: linear-gradient(0deg, #F5F5F7 0%, #FFBF60 99.41%);
  518. .personal-user{
  519. display: flex;
  520. justify-content: center;
  521. align-items: center;
  522. margin-top: 10px;
  523. .personal-user-name{
  524. text-align: center;
  525. color: #111;
  526. font-size: 20px;
  527. font-style: normal;
  528. font-weight: blod;
  529. height: 28px;
  530. }
  531. .personal-user-level{
  532. width: 62px;
  533. height: 22px;
  534. line-height: 22px;
  535. background-color: #ffaa48;
  536. color: #FFF;
  537. text-align: center;
  538. font-size: 12px;
  539. font-style: normal;
  540. font-weight: 500;
  541. border-radius: 20px;
  542. border: #FFF solid 1.5px;
  543. margin-right: 15px;
  544. }
  545. }
  546. .personal-progress{
  547. width: 100%;
  548. height: 80px;
  549. flex-shrink: 0;
  550. border-radius: 8px;
  551. border: 1.5px solid #FFF;
  552. padding: 10px;
  553. background: linear-gradient(107deg, #FFE0BF 8.09%, #FFECD7 21.18%, #FFF4E8 32.78%, #FFEFDE 44.88%, #FEEEDB 57.48%);
  554. .progress-text{
  555. color: #B78B43;
  556. text-align: center;
  557. font-size: 12px;
  558. font-style: normal;
  559. font-weight: 400;
  560. line-height: 20px;
  561. }
  562. .progress{
  563. margin: 5px 0;
  564. }
  565. }
  566. }
  567. .personal-stat{
  568. display: flex;
  569. justify-content: space-between;
  570. align-items: center;
  571. padding: 10px 15px;
  572. .personal-stat-box{
  573. width: 30%;
  574. height: 90px;
  575. flex-shrink: 0;
  576. border-radius: 8px;
  577. background: #FFF;
  578. display: flex;
  579. flex-wrap: wrap;
  580. padding: 10px;
  581. .personal-stat-box-right{
  582. width: 50%;
  583. height: 45px;
  584. text-align: right;
  585. .personal-stat-box-img{
  586. width: 34px;
  587. height: 34px;
  588. }
  589. }
  590. .personal-stat-box-left{
  591. width: 50%;
  592. height: 45px;
  593. display:flex;
  594. flex-flow: column; //垂直排列
  595. justify-content: space-between;//两端对齐
  596. .personal-stat-box-label{
  597. color: #111;
  598. font-size: 14px;
  599. font-style: normal;
  600. font-weight: 400;
  601. line-height: 16px;
  602. }
  603. .personal-stat-box-value{
  604. color: #333;
  605. font-size: 16px;
  606. font-style: normal;
  607. font-weight: 500;
  608. line-height: 14px;
  609. }
  610. }
  611. .personal-stat-box-bottom{
  612. width: 100%;
  613. color: #AAA;
  614. font-size: 12px;
  615. font-style: normal;
  616. font-weight: 400;
  617. line-height: normal;
  618. display: flex;
  619. align-items: flex-end;
  620. }
  621. }
  622. }
  623. .uni-steps-btns{
  624. display: flex;
  625. justify-content: center;
  626. .u-button{
  627. width: 160rpx;
  628. height: 55rpx;
  629. margin-right: 155rpx;
  630. .u-button__text{
  631. font-size: 22rpx !important;
  632. }
  633. }
  634. }
  635. .personal-order{
  636. width: 100%;
  637. .personal-order-title{
  638. width: 100%;
  639. display: flex;
  640. justify-content: space-between;
  641. align-items: center;
  642. border-bottom: 1px solid #efefef;
  643. height: 36px;
  644. .personal-order-title-text{
  645. color: #333;
  646. font-size: 15px;
  647. font-style: normal;
  648. font-weight: 500;
  649. line-height: 16px;
  650. }
  651. .personal-order-title-link{
  652. color: #AAA;
  653. font-size: 13px;
  654. font-style: normal;
  655. font-weight: 400;
  656. line-height: 16px;
  657. }
  658. }
  659. .personal-order-footer{
  660. width: 100%;
  661. display: flex;
  662. justify-content: space-between;
  663. align-items: center;
  664. border-top: 1px solid #efefef;
  665. padding-top: 10px;
  666. .personal-order-footer-text{
  667. display: flex;
  668. color: #333;
  669. font-size: 13px;
  670. font-style: normal;
  671. font-weight: 400;
  672. line-height: normal;
  673. }
  674. }
  675. .personal-order-login-btn{
  676. height: 100px;
  677. display: flex;
  678. justify-content: center;
  679. align-items: center;
  680. }
  681. }
  682. }
  683. .personal-functions{
  684. width: 100%;
  685. .personal-function-title{
  686. width: 100%;
  687. display: flex;
  688. justify-content: space-between;
  689. align-items: center;
  690. border-bottom: 1px solid #efefef;
  691. height: 36px;
  692. .personal-function-title-text{
  693. color: #333;
  694. font-size: 15px;
  695. font-style: normal;
  696. font-weight: 500;
  697. line-height: 16px;
  698. }
  699. }
  700. .personal-functions-content{
  701. width: 100%;
  702. display: flex;
  703. // justify-content: space-between;
  704. align-items: center;
  705. flex-wrap: wrap;
  706. gap: 34rpx 0;
  707. .personal-function{
  708. width: 24%;
  709. display: flex;
  710. justify-content: center;
  711. flex-wrap: wrap;
  712. .personal-function-name{
  713. color: #333;
  714. font-size: 14px;
  715. font-style: normal;
  716. font-weight: 400;
  717. line-height: normal;
  718. margin-top: 5px;
  719. }
  720. }
  721. }
  722. }
  723. .user-avatar-circle {
  724. width: 66px;
  725. height: 66px;
  726. border-radius: 50%;
  727. object-fit: cover;
  728. }
  729. </style>