2 天以前 dc1d067c566bbde1c7170186960a8bd27f210a47
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
import { requestClient } from '#/api/request';
 
export namespace DecisionKpiApi {
  export interface KpiItem {
    code: string;
    name: string;
    category: string;
    unit: string;
    value: number;
    alertStatus: 'normal' | 'warn' | 'critical';
    chartType: string;
    status: number;
  }
 
  export interface KpiOverview {
    kpis: KpiItem[];
    total: number;
  }
 
  export interface KpiDefinition {
    id?: number;
    code: string;
    name: string;
    category: string;
    unit?: string;
    dataSource?: string;
    querySql?: string;
    chartType?: string;
    thresholdWarn?: number;
    thresholdCritical?: number;
    comparisonOperator?: string;
    refreshInterval?: number;
    sort?: number;
    status?: number;
    remark?: string;
  }
 
  /** 趋势快照点 */
  export interface KpiTrendPoint {
    time: string;
    value: number;
  }
 
  /** 趋势数据 */
  export interface KpiTrend {
    kpiCode: string;
    kpiName: string;
    category: string;
    unit: string;
    periodType: string;
    points: KpiTrendPoint[];
  }
 
  /** 环比研判 */
  export interface KpiCompare {
    currentValue?: number;
    currentTime?: string;
    previousValue?: number;
    previousTime?: string;
    changeRate?: number | null;
    avgValue?: number;
    maxValue?: number;
    minValue?: number;
    periodCount: number;
  }
}
 
export function getKpiOverview() {
  return requestClient.get<DecisionKpiApi.KpiOverview>('/bi/decision/kpi/overview');
}
 
export function getKpiDetail(kpiCode: string) {
  return requestClient.get<Record<string, unknown>>(`/bi/decision/kpi/detail/${kpiCode}`);
}
 
export function getKpiByCategory(category: string) {
  return requestClient.get<Record<string, unknown>>(`/bi/decision/kpi/category/${category}`);
}
 
export function refreshKpi(kpiCode: string) {
  return requestClient.post<number>(`/bi/decision/kpi/refresh/${kpiCode}`);
}
 
export function getKpiTrend(
  kpiCode: string,
  params?: { beginTime?: string; endTime?: string; periodType?: string },
) {
  return requestClient.get<DecisionKpiApi.KpiTrend>(`/bi/decision/kpi/trend/${kpiCode}`, {
    params,
  });
}
 
export function getKpiCompare(kpiCode: string) {
  return requestClient.get<DecisionKpiApi.KpiCompare>(`/bi/decision/kpi/compare/${kpiCode}`);
}
 
export function getKpiDefinitionPage(params: Record<string, unknown>) {
  return requestClient.get('/bi/decision/kpi-definition/page', { params });
}
 
export function getKpiDefinitionList() {
  return requestClient.get('/bi/decision/kpi-definition/list-all');
}
 
export function getKpiDefinition(id: number) {
  return requestClient.get<DecisionKpiApi.KpiDefinition>('/bi/decision/kpi-definition/get', { params: { id } });
}
 
export function createKpiDefinition(data: DecisionKpiApi.KpiDefinition) {
  return requestClient.post('/bi/decision/kpi-definition/create', data);
}
 
export function updateKpiDefinition(data: DecisionKpiApi.KpiDefinition) {
  return requestClient.put('/bi/decision/kpi-definition/update', data);
}
 
export function deleteKpiDefinition(id: number) {
  return requestClient.delete('/bi/decision/kpi-definition/delete', { params: { id } });
}