model.ts 2.54 KB
Newer Older
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
import { queryCurrent, queryProjectNotice, queryActivities, fakeChartData } from './service';

export default {
  namespace: 'BLOCK_NAME_CAMEL_CASE',
  state: {
    user: {
      currentUser: {},
    },
    project: {
      notice: [],
    },
    activities: {
      list: [],
    },
    chart: {
      visitData: [],
      visitData2: [],
      salesData: [],
      searchData: [],
      offlineData: [],
      offlineChartData: [],
      salesTypeData: [],
      salesTypeDataOnline: [],
      salesTypeDataOffline: [],
      radarData: [],
      loading: false,
    },
  },
  reducers: {
    saveCurrentUser(state, action) {
      return {
        ...state,
        user: {
          currentUser: action.payload || {},
        },
      };
    },
    saveNotice(state, action) {
      return {
        ...state,
        project: {
          notice: action.payload,
        },
      };
    },
    saveList(state, action) {
      return {
        ...state,
        activities: {
          list: action.payload,
        },
      };
    },
    saveChart(state, { payload }) {
      return {
        ...state,
        chart: {
          ...payload,
        },
      };
    },
    clear(state) {
      return {
        ...state,
        chart: {
          visitData: [],
          visitData2: [],
          salesData: [],
          searchData: [],
          offlineData: [],
          offlineChartData: [],
          salesTypeData: [],
          salesTypeDataOnline: [],
          salesTypeDataOffline: [],
          radarData: [],
        },
      };
    },
  },
  effects: {
    *init(_, { put }) {
      yield put({ type: 'fetchUserCurrent' });
      yield put({ type: 'fetchProjectNotice' });
      yield put({ type: 'fetchActivitiesList' });
      yield put({ type: 'fetchChart' });
    },
    *fetchUserCurrent(_, { call, put }) {
      const response = yield call(queryCurrent);
      yield put({
        type: 'saveCurrentUser',
        payload: response,
      });
    },
    *fetchProjectNotice(_, { call, put }) {
      const response = yield call(queryProjectNotice);
      yield put({
        type: 'saveNotice',
        payload: Array.isArray(response) ? response : [],
      });
    },
    *fetchActivitiesList(_, { call, put }) {
      const response = yield call(queryActivities);
      yield put({
        type: 'saveList',
        payload: Array.isArray(response) ? response : [],
      });
    },
    *fetchChart(_, { call, put }) {
      const response = yield call(fakeChartData);
      yield put({
        type: 'saveChart',
        payload: response,
      });
    },
  },
};