| <template> | |
|   <view class="card"> | |
|     <view class="flex card-header"> | |
|       <view> | |
|         <view class="title">我的档案</view> | |
|         <button class="flex btn btn-question"> | |
|           <image class="btn-icon" src="@/static/image/icon-question.png" mode="widthFix"></image> | |
|           <view>如何完善我的档案?</view> | |
|         </button> | |
|       </view> | |
|       <view class="flex"> | |
|         <button class="btn btn-switch" @click="onSwitch">切换</button> | |
|         <!-- <button class="btn btn-add" @click="onAdd">新增记录</button> --> | |
|       </view> | |
|     </view> | |
|     <view class="card-content"> | |
|       <view class="flex info"> | |
|         <view class="avatar"> | |
|           <image class="img" :src="info.headImage" mode="scaleToFill"></image> | |
|           <view :class="['tag', `tag-${info.role}`]">{{ info.roleDesc || '' }}</view> | |
|         </view> | |
|         <view class="flex summary"> | |
|           <view class="flex flex-column summary-item name"> | |
|             <view class="summary-item-content">{{ info.nickName || '' }}</view> | |
|             <view class="summary-item-label">{{ `ID:${info.id}` }}</view> | |
|           </view> | |
|           <view class="flex flex-column summary-item" @click="jumpToAchievement"> | |
|             <view class="summary-item-content">{{ medalCount }}</view> | |
|             <view class="summary-item-label nowrap">成就</view> | |
|           </view> | |
|           <view class="flex flex-column summary-item"> | |
|             <view class="summary-item-content">{{ experienceCount }}</view> | |
|             <view class="summary-item-label nowrap">足迹</view> | |
|           </view> | |
|         </view> | |
|       </view> | |
|       <view class="flex medal" @click="jumpToAchievement"> | |
|         <image class="medal-item" v-for="item in medalList" :key="item.id" :src="item.medal.icon1" mode="widthFix"></image> | |
|       </view> | |
|     </view> | |
|   </view> | |
| </template> | |
|  | |
| <script> | |
| 	import { mapState } from 'vuex' | |
|  | |
|   export default { | |
|     props: { | |
|       medalList: { | |
|         type: Array, | |
|         default() { | |
|           return [] | |
|         } | |
|       }, | |
|       medalCount: { | |
|         type: Number, | |
|         default: 0 | |
|       }, | |
|       experienceCount: { | |
|         type: Number, | |
|         default: 0 | |
|       }, | |
|     }, | |
|     data() { | |
|       return { | |
|       } | |
|     }, | |
|     onLoad() { | |
|  | |
|     }, | |
|     computed: { | |
|       ...mapState(['userInfo', 'memberInfo']), | |
|       info() { | |
|         return this.memberInfo || this.userInfo | |
|       }, | |
|     }, | |
|     methods: { | |
|       onAdd() { | |
|         this.$emit('addRecord') | |
|       }, | |
|       onSwitch() { | |
|         this.$emit('switchMember') | |
|       }, | |
|       jumpToAchievement() { | |
|         uni.navigateTo({ | |
|           url: '/pages_order/growing/achievement/index' | |
|         }) | |
|       }, | |
|     }, | |
|   } | |
| </script> | |
|  | |
| <style scoped lang="scss"> | |
| 
 | |
|   @import '../member/styles/tag.scss'; | |
| 
 | |
|   .card { | |
|     font-family: PingFang SC; | |
|     font-weight: 400; | |
|     line-height: 1.4; | |
|     background: linear-gradient(to right, #DDF4FF, #9FE1FF); | |
|     border-radius: 48rpx; | |
| 
 | |
|     &-header { | |
|       justify-content: space-between; | |
|       padding: 24rpx 40rpx 20rpx 40rpx; | |
| 
 | |
|       .title { | |
|         font-size: 32rpx; | |
|         font-weight: 600; | |
|         color: #000000; | |
|       } | |
| 
 | |
|       .btn-question { | |
|         margin-top: 4rpx; | |
|         column-gap: 8rpx; | |
|         font-size: 26rpx; | |
|         color: #21607D; | |
| 
 | |
|         .btn-icon { | |
|           width: 32rpx; | |
|           height: auto; | |
|         } | |
|       } | |
| 
 | |
|       .btn-switch { | |
|         padding: 6rpx 22rpx; | |
|         font-size: 28rpx; | |
|         font-weight: 400; | |
|         line-height: 1.4; | |
|         color: #252545; | |
|         border: 2rpx solid #252545; | |
|         border-radius: 28rpx; | |
|       } | |
| 
 | |
|       .btn-add { | |
|         padding: 8rpx 24rpx; | |
|         font-size: 28rpx; | |
|         font-weight: 500; | |
|         line-height: 1.4; | |
|         color: #FFFFFF; | |
|         background: linear-gradient(to right, #21FEEC, #019AF9); | |
|         border-radius: 28rpx; | |
|       } | |
| 
 | |
|       .btn + .btn { | |
|         margin-left: 26rpx; | |
|       } | |
|     } | |
| 
 | |
|     &-content { | |
|       padding: 38rpx 38rpx 14rpx 38rpx; | |
|       background: linear-gradient(to right, #FBFEFF, #DAF3FF); | |
|       border: 2rpx solid #FFFFFF; | |
|       border-radius: 48rpx; | |
|       box-shadow: 0 2px 12px 0 #009AE717; | |
| 
 | |
|       .info { | |
|         column-gap: 24rpx; | |
| 
 | |
|         .avatar { | |
|           flex: none; | |
|           position: relative; | |
|           width: 128rpx; | |
|           height: 128rpx; | |
|           border-radius: 24rpx; | |
|           overflow: hidden; | |
| 
 | |
|           .img { | |
|             width: 100%; | |
|             height: 100%; | |
|           } | |
| 
 | |
|         } | |
| 
 | |
|         .summary { | |
|           flex: 1; | |
|           column-gap: 26rpx; | |
| 
 | |
|           &-item { | |
|             flex: 1; | |
|             row-gap: 8rpx; | |
| 
 | |
|             &.name { | |
|               flex: none; | |
|             } | |
| 
 | |
|             &-content { | |
|               font-size: 32rpx; | |
|               font-weight: 600; | |
|               color: #000000; | |
|             } | |
| 
 | |
|             &-label { | |
|               font-size: 24rpx; | |
|               color: #939393; | |
|             } | |
|           } | |
|         } | |
|       } | |
| 
 | |
|       .medal { | |
|         margin-top: 16rpx; | |
|         justify-content: flex-start; | |
|         flex-wrap: wrap; | |
|         gap: 16rpx; | |
| 
 | |
|         &-item { | |
|           width: 50rpx; | |
|           height: auto; | |
|         } | |
|       } | |
|     } | |
|   } | |
| 
 | |
|   .nowrap { | |
|     white-space: nowrap; | |
|   } | |
| 
 | |
| </style> |