monitor_charts.ts 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. import axios from 'axios';
  2. import { AlarmChartData, CategoryChartData, CategoryChartDataWithPercent, OnlineRateChartData, StateChartData, StateChartDataWithPercent } from "../../share/monitorTypes.ts";
  3. export const MonitorChartsAPI = {
  4. // 资产分类数据查询
  5. fetchCategoryData: async (): Promise<CategoryChartDataWithPercent[]> => {
  6. const res = await axios.get<CategoryChartData[]>(`/big/zichan_category_chart`);
  7. // 预先计算百分比
  8. const data = res.data;
  9. const total = data.reduce((sum: number, item: CategoryChartData) => sum + item['设备数'], 0);
  10. // 为每个数据项添加百分比字段
  11. return data.map(item => ({
  12. ...item,
  13. 百分比: total > 0 ? (item['设备数'] / total * 100).toFixed(1) : '0'
  14. }));
  15. },
  16. // 在线率变化数据查询
  17. fetchOnlineRateData: async (params?: {
  18. created_at_gte?: string;
  19. created_at_lte?: string;
  20. dimension?: string;
  21. }): Promise<OnlineRateChartData[]> => {
  22. // 可选参数
  23. // const params = {
  24. // created_at_gte: dayjs().subtract(7, 'day').format('YYYY-MM-DD HH:mm:ss'),
  25. // created_at_lte: dayjs().format('YYYY-MM-DD HH:mm:ss'),
  26. // dimension: 'day'
  27. // };
  28. const res = await axios.get<OnlineRateChartData[]>(`/big/zichan_online_rate_chart`, { params });
  29. return res.data;
  30. },
  31. // 资产流转状态数据查询
  32. fetchStateData: async (): Promise<StateChartDataWithPercent[]> => {
  33. const res = await axios.get<StateChartData[]>(`/big/zichan_state_chart`);
  34. // 预先计算百分比
  35. const data = res.data;
  36. const total = data.reduce((sum: number, item: StateChartData) => sum + item['设备数'], 0);
  37. // 为每个数据项添加百分比字段
  38. return data.map(item => ({
  39. ...item,
  40. 百分比: total > 0 ? (item['设备数'] / total * 100).toFixed(1) : '0'
  41. }));
  42. },
  43. // 告警数据变化查询
  44. fetchAlarmData: async (params?: {
  45. created_at_gte?: string;
  46. created_at_lte?: string;
  47. dimension?: string;
  48. }): Promise<AlarmChartData[]> => {
  49. // 可选参数
  50. // const params = {
  51. // created_at_gte: dayjs().startOf('day').format('YYYY-MM-DD HH:mm:ss'),
  52. // created_at_lte: dayjs().endOf('day').format('YYYY-MM-DD HH:mm:ss'),
  53. // dimension: 'hour'
  54. // };
  55. const res = await axios.get<AlarmChartData[]>(`/big/zichan_alarm_chart`, { params });
  56. return res.data;
  57. }
  58. };