鸿宇研学生前端代码
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.
 
 
 

220 lines
5.0 KiB

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