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