import { query, create, update } from '../services/campus'; import { message } from 'antd'; import modelExtend from 'dva-model-extend'; import queryString from 'query-string'; import { pageModel } from './common'; import { pageSize } from '../utils/config'; import { checkSearchParams } from '../utils/utils'; import { getLocalUser } from '../utils/helper'; export default modelExtend(pageModel, { namespace: 'campus', state: { currentItem: {}, listLoading: false, modalVisible: false, modalType: 'create', }, subscriptions: { setup({ dispatch, history }) { history.listen((location) => { if (location.pathname === '/campus') { const params = checkSearchParams(queryString.parse(location.search)); dispatch({ type: 'query', payload: params, }); } }); }, }, effects: { * query({ payload = {} }, { call, put }) { yield put({ type: 'changeLoading', payload: { listLoading: true } }); const { merchantId } = getLocalUser(); const { data, success } = yield call(query, { ...payload, merchantId }); if (success) { yield put({ type: 'querySuccess', payload: { list: data.list, pagination: { current: Number(payload.pageNo) || 1, pageSize: Number(payload.pageSize) || pageSize, total: data.totalSize, }, }, }); } yield put({ type: 'changeLoading', payload: { listLoading: false } }); }, * create({ payload, callback }, { call, put }) { const { merchantId } = getLocalUser(); const { data, success } = yield call(create, { ...payload, merchantId }); if (success) { message.success('创建成功!'); yield put({ type: 'hideModal' }); if (callback) callback(); } }, * update({ payload, callback }, { call, put }) { const { merchantId } = getLocalUser(); const { data, success } = yield call(update, { ...payload, merchantId }); if (success) { message.success('修改成功!'); yield put({ type: 'hideModal' }); if (callback) callback(); } }, }, reducers: { changeLoading(state, { payload }) { return { ...state, ...payload }; }, showModal(state, { payload }) { return { ...state, ...payload, modalVisible: true }; }, hideModal(state) { return { ...state, modalVisible: false }; }, }, });