diff --git a/apps/web-antd/src/api/aiot/alarm/index.ts b/apps/web-antd/src/api/aiot/alarm/index.ts index f1b352e01..e8fac4533 100644 --- a/apps/web-antd/src/api/aiot/alarm/index.ts +++ b/apps/web-antd/src/api/aiot/alarm/index.ts @@ -18,6 +18,7 @@ export namespace AiotAlarmApi { algorithm?: string; confidence?: number; durationMinutes?: number; + durationMs?: number; triggerTime?: string; message?: string; bbox?: string; @@ -29,6 +30,7 @@ export namespace AiotAlarmApi { handleRemark?: string; handledBy?: string; handledAt?: string; + lastFrameTime?: string; workOrderId?: number; aiAnalysis?: Record; createdAt?: string; diff --git a/apps/web-antd/src/views/aiot/alarm/list/data.ts b/apps/web-antd/src/views/aiot/alarm/list/data.ts index 857edea97..d47f479df 100644 --- a/apps/web-antd/src/views/aiot/alarm/list/data.ts +++ b/apps/web-antd/src/views/aiot/alarm/list/data.ts @@ -96,7 +96,7 @@ export function useGridColumns(): VxeTableGridOptions['columns'] { slots: { default: 'confidence' }, }, { - field: 'durationMinutes', + field: 'durationMs', title: '持续时长', width: 125, slots: { default: 'duration' }, @@ -127,10 +127,10 @@ export function useGridColumns(): VxeTableGridOptions['columns'] { slots: { default: 'snapshot' }, }, { - field: 'createdAt', - title: '创建时间', + field: 'lastFrameTime', + title: '结束时间', minWidth: 170, - formatter: 'formatDateTime', + slots: { default: 'endTime' }, }, { title: '操作', diff --git a/apps/web-antd/src/views/aiot/alarm/list/index.vue b/apps/web-antd/src/views/aiot/alarm/list/index.vue index c4bf64c73..7347eae3b 100644 --- a/apps/web-antd/src/views/aiot/alarm/list/index.vue +++ b/apps/web-antd/src/views/aiot/alarm/list/index.vue @@ -21,6 +21,22 @@ import { defineOptions({ name: 'AiotAlarmList' }); +/** 格式化持续时长(毫秒 → 可读文本) */ +function formatDuration(ms: number): string { + if (!ms || ms <= 0) return '--'; + if (ms < 60000) { + return `${Math.round(ms / 1000)} 秒`; + } + if (ms < 3600000) { + const minutes = Math.floor(ms / 60000); + const seconds = Math.round((ms % 60000) / 1000); + return seconds > 0 ? `${minutes} 分 ${seconds} 秒` : `${minutes} 分`; + } + const hours = Math.floor(ms / 3600000); + const minutes = Math.round((ms % 3600000) / 60000); + return minutes > 0 ? `${hours} 小时 ${minutes} 分` : `${hours} 小时`; +} + const currentAlert = ref(null); const detailVisible = ref(false); @@ -202,10 +218,17 @@ const [Grid, gridApi] = useVbenVxeGrid({ + + + @@ -311,8 +334,8 @@ const [Grid, gridApi] = useVbenVxeGrid({
持续时长: {{ - currentAlert.durationMinutes != null - ? `${currentAlert.durationMinutes} 分钟` + currentAlert.durationMs != null && currentAlert.durationMs > 0 + ? formatDuration(currentAlert.durationMs) : '-' }}