application.js 3.49 KB
import { routerRedux } from 'dva';
import { message } from 'antd';
import { getPermissionList } from '@/utils/utils';
import * as services from '@/services/application';

/* SerachParams */
const staticSearch = {
  name: undefined,
  createTimeBegin: undefined,
  createTimeEnd: undefined
};

export default {
  namespace: 'Application',
  state: {
    dataSearch: {
      ...staticSearch
    },
    dataApplication: {
      data: [],
      page: 1,
      size: 10,
      totalItem: 0,
      totalPage: 0,
    },
    dataModal: {
      modalType: '',
      modalShow: false,
      modalData: {}
    },
    dataMenuList: [], // 获取所有的菜单
    dataAuth: [], // 权限模块提交给后端的数据
    dataExpandedKeys: [], // tree展开的数据
    dataApplicationInfo: {}, // 应用相关信息
    oldInfo: {}, // 上一次权限信息
  },
  effects: {
    /* 获取应用列表 */
    *getApplicationList({ payload }, { call, put, select }) {
      const { dataSearch } = yield select(state => state.Application);
      try {
        const res = yield call(services.getApplicationList, {
          page: 1,
          size: 10,
          ...dataSearch,
          ...payload
        });
        if (res.status === 1) {
          res.data.data = res.data.data || [];
          yield put({type: 'changeState', payload: {
            dataApplication: res.data
          }})
        }
      } catch (err) {
        console.error(err)
      }
    },
    /* 删除应用 */
    *delApplication({ payload }, { call, put, select }) {
      const { dataApplication: { data = [], page, size } } = yield select(state => state.Application);
      try {
        const res = yield call(services.delApplication, payload);
        if (res.status === 1) {
          message.success("删除成功~");
          yield put({type: 'getApplicationList', payload: {
            size,
            page: (data.length === 1 ? (page === 1 ? 1 : page - 1) : page)
          }})
        }
      } catch (err) {
        console.error(err)
      }
    },
    /* 新增、修改应用 */
    *updateApplication({ payload }, { call, put, select }) {
      const { id } = payload;
      try {
        const res = yield call(services[!id ? "addApplication" : "updateApplication"], payload);
        if (res.status === 1) {
          message.success(!id ? "新增成功~" : "修改成功~");
          yield put(routerRedux.push('/appliction'));
        }
      } catch (err) {
        console.error(err)
      }
    },
    /* 获取应用详情 */
    *getApplicationInfo({ payload }, { call, put, select }) {
      try {
        const res = yield call(services.getApplicationInfo, payload);
        if (res.status === 1) {
          const { data, dataMenu, dataExpandedKeys } = getPermissionList(res.data.permissionList, true);
          yield put({type: 'changeState', payload: {
            dataApplicationInfo: res.data || {},
            dataAuth: data,
            dataMenuList: dataMenu,
            dataExpandedKeys
          }})
        };
        return res;
      } 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
        }
      }
    }
  }
};