From 6a972c54fe99a186b5885db1b1319643ce9679dd Mon Sep 17 00:00:00 2001
From: shinnosuke <tantao@1hoper.com>
Date: 星期三, 26 八月 2026 18:43:38 +0800
Subject: [PATCH] 又又更新
---
talent-card-admin/src/views/DashboardView.vue | 24 +++++++++++++++++++++---
1 files changed, 21 insertions(+), 3 deletions(-)
diff --git a/talent-card-admin/src/views/DashboardView.vue b/talent-card-admin/src/views/DashboardView.vue
index bbfd672..008a607 100644
--- a/talent-card-admin/src/views/DashboardView.vue
+++ b/talent-card-admin/src/views/DashboardView.vue
@@ -78,6 +78,17 @@
return String(Math.round(value))
}
+function compareTrend(value: unknown) {
+ const number = Number(value ?? 0)
+ if (!Number.isFinite(number) || number === 0) return 'flat'
+ return number > 0 ? 'up' : 'down'
+}
+
+function trendIcon(value: unknown) {
+ const trend = compareTrend(value)
+ return trend === 'up' ? '↑' : trend === 'down' ? '↓' : '—'
+}
+
function barHeight(value: unknown) {
return `${Math.max(4, (Number(value || 0) / maxBarValue.value) * 168)}px`
}
@@ -123,7 +134,9 @@
<div v-for="card in summaryCards" :key="card.label" class="subsidy-card" :class="card.tone">
<div class="subsidy-label">{{ card.label }}</div>
<div class="subsidy-value">{{ formatNumber(card.value) }}</div>
- <div class="subsidy-compare">{{ card.unit }} <span>{{ formatNumber(card.compare) }}</span></div>
+ <div class="subsidy-compare" :class="`trend-${compareTrend(card.compare)}`">
+ {{ card.unit }} <span>{{ formatNumber(card.compare) }}</span><b>{{ trendIcon(card.compare) }}</b>
+ </div>
<div class="sparkline" :class="card.tone">
<i v-for="(point, index) in card.spark" :key="index" :style="{ height: `${point}%` }" />
</div>
@@ -210,7 +223,12 @@
.subsidy-card.green { background: #f0fff2; }
.subsidy-label { font-size: 14px; color: #111827; }
.subsidy-value { margin-top: 18px; font-size: 25px; line-height: 1; color: #07142c; }
-.subsidy-compare { margin-top: 8px; color: #8d98a7; font-size: 12px; }
+.subsidy-compare { display: flex; align-items: center; gap: 4px; margin-top: 8px; color: #8d98a7; font-size: 12px; }
+.subsidy-compare span { color: inherit; }
+.subsidy-compare b { font-size: 15px; line-height: 12px; font-weight: 700; }
+.subsidy-compare.trend-up { color: #18a957; }
+.subsidy-compare.trend-down { color: #f04444; }
+.subsidy-compare.trend-flat { color: #8d98a7; }
.subsidy-compare span { color: #ff3b30; }
.sparkline { position: absolute; right: 14px; bottom: 16px; display: flex; align-items: end; width: 80px; height: 44px; gap: 4px; }
.sparkline i { flex: 1; min-height: 5px; border-radius: 999px 999px 0 0; background: #1677ff; }
@@ -247,4 +265,4 @@
.donut-labels { display: flex; gap: 14px; margin-top: 18px; color: #697589; font-size: 12px; }
.donut-labels i { display: inline-block; width: 22px; height: 9px; margin-right: 4px; border-radius: 2px; vertical-align: middle; }
@media (max-width: 1100px) { .top-grid, .bottom-grid { grid-template-columns: 1fr; } .subsidy-cards { grid-template-columns: 1fr; max-width: none; } }
-</style>
\ No newline at end of file
+</style>
--
Gitblit v1.7.1