import { Model } from 'dva'; import { getData, getDetail } from './service'; import { history } from 'umi'; import humps from 'humps'; type State = CommonState<<%= pageType %>>; type PageModel = Omit & { state: State }; export default { namespace: '<%= pageName %>', state: { page: 1, pageSize: 10, list: [], total: 0, }, reducers: { setData(state, { payload }: any) { return { ...state, ...payload, }; }, }, effects: { *getData({ payload }, { call, select, put }) { const { page, pageSize, filter = {}, sorter = {} } = yield select( (state: GlobalState) => state.<%= pageName %>, ); const { searchValue, searchKey, dateRange, ...rest } = filter; const { filed, order } = sorter; const params = searchKey ? { search_keyword: searchValue, search_by: searchKey } : { page_no: page, page_size: pageSize, sort_by: filed, sort_type: order === 'descend' ? 'desc' : 'asc', created_at_from: +dateRange[0], created_at_to: +dateRange[1], ...humps.decamelizeKeys(rest) }; const { data, total } = yield call(getData, params); yield put({ type: 'setData', payload: { list: humps.camelizeKeys(data), total, }, }); }, *getDetail({ payload }, { call, select, put }) { const { id } = payload; const { data } = yield call(getDetail, { id }); yield put({ type: 'setData', payload: { detail: humps.camelizeKeys(data), }, }); history.push('<%= productName %>' ? '/<%= productName %>/<%= pageName %>/detail' : '/<%= pageName %>/detail'); }, }, } as PageModel;