fix(workbench): 工作台待关注优化+隔离补漏——类型标签/排序固化/标题措辞 + my_dashboard按entity_id过滤 (dashboard-optimize)

This commit is contained in:
Hermes CI Fix
2026-08-31 15:51:39 +08:00
parent 26e0c8da53
commit 815acda0da
2 changed files with 20 additions and 7 deletions
+14 -5
View File
@@ -32,16 +32,17 @@
</div>
<template v-if="!loading">
<!-- 提醒 -->
<!-- 关注提醒行动逾期 + KPI预警 -->
<div v-if="reminders.length > 0" class="reminder-section">
<div class="section-header">
<span class="section-icon">📌</span>
<span class="section-title">办提醒</span>
<span class="section-title">关注</span>
<span class="section-badge">{{ reminders.length }}</span>
</div>
<div v-for="r in reminders" :key="r.type + r.related_id" class="reminder-card" :class="'sev-' + r.severity">
<div v-for="r in sortedReminders" :key="r.type + r.related_id" class="reminder-card" :class="'sev-' + r.severity">
<div class="reminder-left">
<span class="reminder-icon">{{ r.severity === 'danger' ? '🔴' : '🟡' }}</span>
<el-tag size="small" :type="r.related_type === 'action_plan' ? 'primary' : 'warning'" class="reminder-tag">{{ r.related_type === 'action_plan' ? '行动' : '指标' }}</el-tag>
</div>
<div class="reminder-body">
<div class="reminder-msg">{{ r.message }}</div>
@@ -115,10 +116,17 @@
</template>
<script setup lang="ts">
import { ref, onMounted } from "vue"
import { ref, computed, onMounted } from "vue"
import { useRouter } from "vue-router"
import api from "../api/index"
// 排序固化: danger(逾期行动/红色预警) 在前, warning(黄色预警) 在后;
// 同 severity 保持后端生成顺序 (overdue→red→yellow), 不改变现有展示次序
const severityOrder: Record<string, number> = { danger: 0, warning: 1 }
const sortedReminders = computed(() =>
[...reminders.value].sort((a: any, b: any) => (severityOrder[a.severity] ?? 2) - (severityOrder[b.severity] ?? 2))
)
const router = useRouter()
const userStr = localStorage.getItem('cma_user') || '{}'
const user = JSON.parse(userStr)
@@ -255,8 +263,9 @@ onMounted(async () => {
}
.reminder-card.sev-danger { background: #fef0f0; border: 1px solid #fde2e2; }
.reminder-card.sev-warning { background: #fdf6ec; border: 1px solid #f5dab1; }
.reminder-left { flex-shrink: 0; }
.reminder-left { flex-shrink: 0; display: flex; align-items: center; gap: 6px; }
.reminder-icon { font-size: 18px; }
.reminder-tag { font-size: 11px; }
.reminder-body { flex: 1; }
.reminder-msg { font-size: 14px; }