<template>
|
|
<view class="info">
|
|
<view class="title" v-if="data.title">{{ data.title }}</view>
|
|
<view class="flex process" v-if="difficulty">
|
|
<view>难度</view>
|
|
<view class="flex star">
|
|
<uv-icon v-for="(item, index) in new Array(difficulty).fill(1)" :key="index" name="star-fill" color="#FFFFFF" size="14rpx"></uv-icon>
|
|
</view>
|
|
</view>
|
|
<view class="content" v-if="data.shortTitle">
|
|
{{ data.shortTitle || '' }}
|
|
</view>
|
|
<view class="flex tag" v-if="tags.length">
|
|
<view class="tag-item" v-for="(item, index) in tags" :key="index">
|
|
{{ item }}
|
|
</view>
|
|
</view>
|
|
<view class="btn">
|
|
<image class="btn-img" src="@/static/image/icon-detail.png" mode="widthFix"></image>
|
|
</view>
|
|
</view>
|
|
</template>
|
|
|
|
<script>
|
|
export default {
|
|
props: {
|
|
data: {
|
|
type: Object,
|
|
default() {
|
|
return {}
|
|
}
|
|
}
|
|
},
|
|
computed: {
|
|
difficulty() {
|
|
const num = parseInt(this.data?.process)
|
|
|
|
return isNaN(num) ? 0 : num
|
|
},
|
|
tags() {
|
|
return this.data?.tag?.split?.('、') || []
|
|
}
|
|
},
|
|
}
|
|
</script>
|
|
|
|
<style scoped lang="scss">
|
|
.info {
|
|
padding: 30rpx 24rpx 24rpx 24rpx;
|
|
font-size: 0;
|
|
|
|
.title {
|
|
font-size: 32rpx;
|
|
font-weight: 700;
|
|
color: #6851A7;
|
|
}
|
|
|
|
.process {
|
|
margin-top: 7rpx;
|
|
column-gap: 8rpx;
|
|
display: inline-flex;
|
|
padding: 3rpx 16rpx;
|
|
font-size: 16rpx;
|
|
font-weight: 600;
|
|
color: #FFFFFF;
|
|
background: #6851A7;
|
|
border-radius: 13rpx;
|
|
|
|
.star {
|
|
column-gap: 6rpx;
|
|
}
|
|
}
|
|
|
|
.content {
|
|
margin-top: 24rpx;
|
|
font-size: 20rpx;
|
|
font-weight: 500;
|
|
color: #3E3A39;
|
|
}
|
|
|
|
.tag {
|
|
margin-top: 16rpx;
|
|
justify-content: flex-start;
|
|
flex-wrap: wrap;
|
|
column-gap: 12rpx;
|
|
row-gap: 8rpx;
|
|
|
|
&-item {
|
|
padding: 4rpx 10rpx;
|
|
font-size: 16rpx;
|
|
font-weight: 700;
|
|
color: #FFFFFF;
|
|
background: rgba($color: #6851A7, $alpha: 0.59);
|
|
border-radius: 4rpx;
|
|
}
|
|
}
|
|
|
|
.btn {
|
|
margin-top: 16rpx;
|
|
width: 190rpx;
|
|
height: auto;
|
|
&-img {
|
|
width: 100%;
|
|
height: auto;
|
|
}
|
|
}
|
|
}
|
|
</style>
|