diff --git a/apps/web-antd/src/api/aiot/alarm/index.ts b/apps/web-antd/src/api/aiot/alarm/index.ts index c31650774..8822e6a94 100644 --- a/apps/web-antd/src/api/aiot/alarm/index.ts +++ b/apps/web-antd/src/api/aiot/alarm/index.ts @@ -98,6 +98,15 @@ export namespace AiotAlarmApi { hour: number; count: number; } + + /** 看板聚合数据 */ + export interface DashboardData { + statistics: AlertStatistics; + trend: TrendItem[]; + deviceTop: DeviceTopItem[]; + hourDistribution: HourDistItem[]; + recentAlerts: Alert[]; + } } // ==================== 告警管理 API ==================== @@ -133,6 +142,14 @@ export function deleteAlert(id: number | string) { return requestClient.delete(`/aiot/alarm/alert/delete?id=${id}`); } +/** 获取看板聚合数据(单次请求) */ +export function getAlertDashboard(trendDays: number = 7) { + return requestClient.get( + '/aiot/alarm/alert/dashboard', + { params: { trendDays } }, + ); +} + /** 获取告警统计 */ export function getAlertStatistics(startTime?: string, endTime?: string) { return requestClient.get( diff --git a/apps/web-antd/src/views/aiot/alarm/summary/index.vue b/apps/web-antd/src/views/aiot/alarm/summary/index.vue index e3551d44d..9ac2bc705 100644 --- a/apps/web-antd/src/views/aiot/alarm/summary/index.vue +++ b/apps/web-antd/src/views/aiot/alarm/summary/index.vue @@ -23,11 +23,8 @@ import { } from 'ant-design-vue'; import { - getAlertDeviceTop, - getAlertHourDistribution, - getAlertStatistics, + getAlertDashboard, getAlertTrend, - getRecentAlerts, } from '#/api/aiot/alarm'; import { @@ -94,23 +91,16 @@ const STATUS_NAMES: Record = { ignored: '已忽略', }; -/** 加载全部数据 */ +/** 加载全部数据(单次请求) */ async function loadAll() { loading.value = true; try { - const [statsRes, trendRes, deviceRes, hourRes, alertsRes] = - await Promise.all([ - getAlertStatistics(), - getAlertTrend(trendDays.value), - getAlertDeviceTop(10, 7), - getAlertHourDistribution(7), - getRecentAlerts(10), - ]); - stats.value = statsRes; - trendData.value = trendRes; - deviceTopData.value = deviceRes; - hourDistData.value = hourRes; - recentAlerts.value = alertsRes?.list || []; + const data = await getAlertDashboard(trendDays.value); + stats.value = data.statistics; + trendData.value = data.trend; + deviceTopData.value = data.deviceTop; + hourDistData.value = data.hourDistribution; + recentAlerts.value = data.recentAlerts || []; } finally { loading.value = false; await nextTick();