diff --git a/frontend/src/components/BotSourceTag.vue b/frontend/src/components/BotSourceTag.vue new file mode 100644 index 00000000..6b7bb599 --- /dev/null +++ b/frontend/src/components/BotSourceTag.vue @@ -0,0 +1,45 @@ + + + + + diff --git a/frontend/src/views/AlertList.vue b/frontend/src/views/AlertList.vue index 77f4fb37..02d91163 100644 --- a/frontend/src/views/AlertList.vue +++ b/frontend/src/views/AlertList.vue @@ -9,6 +9,10 @@ +
+ +
+
@@ -342,6 +346,7 @@ import { ref, computed, onMounted } from 'vue' import { useRoute } from 'vue-router' import { ElMessage, ElMessageBox } from 'element-plus' import { alertApi, userApi, actionPlanApi, kpiApi, alertRulesApi } from '../api/index' +import BotSourceTag from '../components/BotSourceTag.vue' import RiskCell from '../components/charts/RiskCell.vue' const route = useRoute() @@ -398,6 +403,13 @@ function isTrendAlert(msg: string): boolean { return msg?.startsWith('[趋势') || msg?.startsWith('[动态') } +// ── C区标注:预警数据由预警引擎(定时规则)自动生成,展示最近生成时间(无预警行则不显示) ── +const latestAlertTime = computed(() => { + const times = alerts.value.map((a: any) => a.created_at || '').filter(Boolean) + if (!times.length) return '' + return formatTime(times.sort((x: string, y: string) => y.localeCompare(x))[0]) +}) + function formatTime(t: string): string { if (!t) return '-' try { return new Date(t).toLocaleString('zh-CN', { hour12: false }) } catch { return t } diff --git a/frontend/src/views/BotKpiDashboard.vue b/frontend/src/views/BotKpiDashboard.vue index 815d046b..ce2ea49e 100644 --- a/frontend/src/views/BotKpiDashboard.vue +++ b/frontend/src/views/BotKpiDashboard.vue @@ -7,6 +7,7 @@ 2026年7月
+ 刷新
@@ -163,6 +164,7 @@