|
|
@ -36,31 +36,35 @@ |
|
|
<div class="right-stats-col"> |
|
|
<div class="right-stats-col"> |
|
|
<!-- 会员总数 --> |
|
|
<!-- 会员总数 --> |
|
|
<div class="stat-card orange-gradient small-card"> |
|
|
<div class="stat-card orange-gradient small-card"> |
|
|
<div class="top-row"> |
|
|
|
|
|
|
|
|
<div class="left-part"> |
|
|
<div class="card-title"> |
|
|
<div class="card-title"> |
|
|
<el-icon><Trophy /></el-icon> 会员总数 |
|
|
<el-icon><Trophy /></el-icon> 会员总数 |
|
|
</div> |
|
|
</div> |
|
|
<div class="card-value-small">{{ overviewData.member }}</div> |
|
|
|
|
|
</div> |
|
|
</div> |
|
|
<div class="card-tag-wrapper"> |
|
|
|
|
|
<div class="card-tag" :class="getGrowthClass(overviewData.member_growth)"> |
|
|
|
|
|
{{ getGrowthText(overviewData.member_growth) }} |
|
|
|
|
|
|
|
|
<div class="right-part"> |
|
|
|
|
|
<div class="card-value-small">{{ overviewData.member }}</div> |
|
|
|
|
|
<div class="card-tag-wrapper"> |
|
|
|
|
|
<div class="card-tag" :class="getGrowthClass(overviewData.member_growth)"> |
|
|
|
|
|
{{ getGrowthText(overviewData.member_growth) }} |
|
|
|
|
|
</div> |
|
|
</div> |
|
|
</div> |
|
|
</div> |
|
|
</div> |
|
|
</div> |
|
|
</div> |
|
|
|
|
|
|
|
|
<!-- 非会员总数 --> |
|
|
<!-- 非会员总数 --> |
|
|
<div class="stat-card blue-gradient small-card"> |
|
|
<div class="stat-card blue-gradient small-card"> |
|
|
<div class="top-row"> |
|
|
|
|
|
|
|
|
<div class="left-part"> |
|
|
<div class="card-title"> |
|
|
<div class="card-title"> |
|
|
<el-icon><User /></el-icon> 非会员总数 |
|
|
<el-icon><User /></el-icon> 非会员总数 |
|
|
</div> |
|
|
</div> |
|
|
<div class="card-value-small">{{ overviewData.normal }}</div> |
|
|
|
|
|
</div> |
|
|
</div> |
|
|
<div class="card-tag-wrapper"> |
|
|
|
|
|
<div class="card-tag" :class="getGrowthClass(overviewData.normal_growth)"> |
|
|
|
|
|
{{ getGrowthText(overviewData.normal_growth) }} |
|
|
|
|
|
</div> |
|
|
|
|
|
|
|
|
<div class="right-part"> |
|
|
|
|
|
<div class="card-value-small">{{ overviewData.normal }}</div> |
|
|
|
|
|
<div class="card-tag-wrapper"> |
|
|
|
|
|
<div class="card-tag" :class="getGrowthClass(overviewData.normal_growth)"> |
|
|
|
|
|
{{ getGrowthText(overviewData.normal_growth) }} |
|
|
|
|
|
</div> |
|
|
|
|
|
</div> |
|
|
</div> |
|
|
</div> |
|
|
</div> |
|
|
</div> |
|
|
</div> |
|
|
</div> |
|
|
@ -622,14 +626,28 @@ onMounted(() => { |
|
|
border-radius: 12px; |
|
|
border-radius: 12px; |
|
|
padding: 20px; |
|
|
padding: 20px; |
|
|
display: flex; |
|
|
display: flex; |
|
|
flex-direction: column; |
|
|
|
|
|
justify-content: flex-start; /* 改为从顶部开始布局 */ |
|
|
|
|
|
|
|
|
flex-direction: row; |
|
|
|
|
|
justify-content: space-between; |
|
|
|
|
|
align-items: center; |
|
|
color: #fff; |
|
|
color: #fff; |
|
|
position: relative; /* 确保绝对定位相对于卡片 */ |
|
|
position: relative; /* 确保绝对定位相对于卡片 */ |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
.left-part { |
|
|
|
|
|
display: flex; |
|
|
|
|
|
align-items: center; |
|
|
|
|
|
align-self: flex-start; /* 标题垂直居上 */ |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
.right-part { |
|
|
|
|
|
display: flex; |
|
|
|
|
|
flex-direction: column; |
|
|
|
|
|
align-items: center; /* 改为水平居中 */ |
|
|
|
|
|
justify-content: center; |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
.card-title { |
|
|
.card-title { |
|
|
font-size: 24px; /* 字体放大 */ |
|
|
|
|
|
|
|
|
font-size: 34px; /* 字体放大 */ |
|
|
font-weight: bold; /* 加粗 */ |
|
|
font-weight: bold; /* 加粗 */ |
|
|
display: flex; |
|
|
display: flex; |
|
|
align-items: center; |
|
|
align-items: center; |
|
|
@ -637,6 +655,12 @@ onMounted(() => { |
|
|
margin-bottom: 20px; /* 增加底部间距 */ |
|
|
margin-bottom: 20px; /* 增加底部间距 */ |
|
|
width: 100%; /* 占满宽度 */ |
|
|
width: 100%; /* 占满宽度 */ |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
.small-card .card-title { |
|
|
|
|
|
width: auto; |
|
|
|
|
|
margin-bottom: 0; |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
.card-value { |
|
|
.card-value { |
|
|
font-size: 64px; |
|
|
font-size: 64px; |
|
|
font-weight: bold; |
|
|
font-weight: bold; |
|
|
@ -652,10 +676,16 @@ onMounted(() => { |
|
|
gap: 10px; /* 数字和百分比之间的间距 */ |
|
|
gap: 10px; /* 数字和百分比之间的间距 */ |
|
|
} |
|
|
} |
|
|
.card-value-small { |
|
|
.card-value-small { |
|
|
font-size: 48px; |
|
|
|
|
|
|
|
|
font-size: 64px; |
|
|
font-weight: bold; |
|
|
font-weight: bold; |
|
|
margin-left: auto; |
|
|
margin-left: auto; |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
.small-card .card-value-small { |
|
|
|
|
|
margin-left: 0; |
|
|
|
|
|
line-height: 1.2; |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
.top-row { |
|
|
.top-row { |
|
|
display: flex; |
|
|
display: flex; |
|
|
align-items: center; |
|
|
align-items: center; |
|
|
@ -666,6 +696,10 @@ onMounted(() => { |
|
|
justify-content: flex-end; |
|
|
justify-content: flex-end; |
|
|
margin-top: 10px; |
|
|
margin-top: 10px; |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
.small-card .card-tag-wrapper { |
|
|
|
|
|
margin-top: 8px; |
|
|
|
|
|
} |
|
|
.card-tag { |
|
|
.card-tag { |
|
|
background-color: #fff; |
|
|
background-color: #fff; |
|
|
padding: 8px 16px; /* 增加高度 */ |
|
|
padding: 8px 16px; /* 增加高度 */ |
|
|
|