incident.js 3.33 KB
import * as services from '@/services/incident';
import moment from 'moment';

/* SerachParams */
const staticSearch = {
  current: 1,
  size: 10,
  status: 'ALL',
  eventType: 'ALL',
  eventLevel: 'ALL',
  companyName: undefined,
  startTime: moment(new Date())
    .add(-7, 'days')
    .startOf('day'),
  endTime: moment(new Date())
    .add(0, 'days')
    .endOf('day'),
};

export default {
  namespace: 'Event',
  state: {
    dataSearch: {
      ...staticSearch,
    },
    dataEvent: {
      records: [],
      current: 1,
      size: 10,
      total: 0,
      totalPage: 0,
    },
    dataEventRiskList: [],
    dataModal: {
      modalType: '',
      modalShow: false,
      modalData: {},
    },
    dataEventLogList: {
      records: [],
      current: 1,
      size: 10,
      total: 0,
      totalPage: 0,
    },
  },
  effects: {
    /* 获取事件列表 */
    *getEventList({ payload }, { call, put, select }) {
      const {
        dataSearch,
        dataSearch: { status, eventType, eventLevel, startTime, endTime },
      } = yield select(state => state.Event);
      try {
        const res = yield call(services.getEventList, {
          current: 1,
          size: 10,
          ...dataSearch,
          ...payload,
          startTime: moment(startTime).format('YYYY-MM-DD HH:mm:ss'),
          endTime: moment(endTime).format('YYYY-MM-DD HH:mm:ss'),
          status: status === 'ALL' ? '' : status,
          eventType: eventType === 'ALL' ? '' : eventType,
          eventLevel: eventLevel === 'ALL' ? '' : eventLevel,
        });
        if (res.code === 0) {
          res.data.records = res.data.records || [];
          yield put({
            type: 'changeState',
            payload: {
              dataEvent: res.data,
            },
          });
        }
      } catch (err) {
        console.error(err);
      }
    },
    /* 事件详情 */
    *getEventRiskList({ payload }, { call, put, select }) {
      try {
        const res = yield call(services.getEventRiskList, {
          current: 1,
          size: 10,
          ...payload,
        });
        if (res.code === 0) {
          res.data.records = res.data.records || [];
          yield put({
            type: 'changeState',
            payload: {
              dataEventRiskList: res.data,
            },
          });
        }
      } catch (err) {
        console.error(err);
      }
    },
    /* 事件日志 */
    *getEventRiskLog({ payload }, { call, put, select }) {
      try {
        const res = yield call(services.getEventRiskLog, {
          current: 1,
          size: 10,
          ...payload,
        });
        if (res.code === 0) {
          res.data.records = res.data.records || [];
          yield put({
            type: 'changeState',
            payload: {
              dataEventLogList: res.data,
            },
          });
        }
      } catch (err) {
        console.error(err);
      }
    },
  },
  reducers: {
    changeState(state, { payload }) {
      return {
        ...state,
        ...payload,
      };
    },
    cancelModal(state, { payload }) {
      return {
        ...state,
        dataModal: {
          modalType: '',
          modalShow: false,
          modalData: {},
        },
      };
    },
    resetSearch(state, { payload }) {
      return {
        ...state,
        dataSearch: {
          ...staticSearch,
        },
      };
    },
  },
};