import axios from 'axios'; import { AlarmChartData, CategoryChartData, CategoryChartDataWithPercent, OnlineRateChartData, StateChartData, StateChartDataWithPercent } from "../../share/monitorTypes.ts"; export const MonitorChartsAPI = { // 资产分类数据查询 fetchCategoryData: async (): Promise => { const res = await axios.get(`/big/zichan_category_chart`); // 预先计算百分比 const data = res.data; const total = data.reduce((sum: number, item: CategoryChartData) => sum + item['设备数'], 0); // 为每个数据项添加百分比字段 return data.map(item => ({ ...item, 百分比: total > 0 ? (item['设备数'] / total * 100).toFixed(1) : '0' })); }, // 在线率变化数据查询 fetchOnlineRateData: async (params?: { created_at_gte?: string; created_at_lte?: string; dimension?: string; }): Promise => { // 可选参数 // const params = { // created_at_gte: dayjs().subtract(7, 'day').format('YYYY-MM-DD HH:mm:ss'), // created_at_lte: dayjs().format('YYYY-MM-DD HH:mm:ss'), // dimension: 'day' // }; const res = await axios.get(`/big/zichan_online_rate_chart`, { params }); return res.data; }, // 资产流转状态数据查询 fetchStateData: async (): Promise => { const res = await axios.get(`/big/zichan_state_chart`); // 预先计算百分比 const data = res.data; const total = data.reduce((sum: number, item: StateChartData) => sum + item['设备数'], 0); // 为每个数据项添加百分比字段 return data.map(item => ({ ...item, 百分比: total > 0 ? (item['设备数'] / total * 100).toFixed(1) : '0' })); }, // 告警数据变化查询 fetchAlarmData: async (params?: { created_at_gte?: string; created_at_lte?: string; dimension?: string; }): Promise => { // 可选参数 // const params = { // created_at_gte: dayjs().startOf('day').format('YYYY-MM-DD HH:mm:ss'), // created_at_lte: dayjs().endOf('day').format('YYYY-MM-DD HH:mm:ss'), // dimension: 'hour' // }; const res = await axios.get(`/big/zichan_alarm_chart`, { params }); return res.data; } };