import { Reducer, Effect } from 'umi'; import { fetchAlarmTypeStatistics, fetchAlarmAllStatistics, } from '../services/alarm'; export interface StateType { statusStatistics: { unaccept: number; unprocessed: number; processing: number; finished: number; }; typeStatistics: { real: number; danger: number; testing: number; inspect: number; useless: number; }; typeCounts: { type: string; total: number; unprocessed: number; }[]; } export interface ModelType { namespace: string; state: StateType; effects: { fetchCount: Effect; fetchTypeCount: Effect; }; reducers: { updateState: Reducer; }; } const Model: ModelType = { namespace: 'alarmAnalyse', state: { statusStatistics: { unaccept: 0, unprocessed: 0, processing: 0, finished: 0, }, typeStatistics: { real: 0, danger: 0, testing: 0, inspect: 0, useless: 0, }, typeCounts: [], }, effects: { *fetchCount({ payload }, { call, put }) { const response = yield call(fetchAlarmAllStatistics, payload); if (response?.data) { yield put({ type: 'updateState', payload: { ...response.data }, }); } }, *fetchTypeCount({ payload }, { call, put }) { const response = yield call(fetchAlarmTypeStatistics, payload); if (response?.data) { yield put({ type: 'updateState', payload: { typeCounts: response.data.list }, }); } }, }, reducers: { updateState(state, { payload }) { return { ...state, ...payload, }; }, }, }; export default Model;