|                                                                                                                                                                                          |  | <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>
 |