import Config from '../../../../utils/config'; import { getAnnouncementList,getTabList } from '../../services/index'; import { Toast } from 'antd-mobile'; import router from 'umi/router'; import { ListView } from 'antd-mobile' let announcementList = new ListView.DataSource({ rowHasChanged: (row1, row2) => row1 !== row2, }); export default { namespace:'announcementModel', state: { tabList:[], announcementListArr:[], announcementList, isLoading:false, }, reducers: { updateState(state, { payload }) { return { ...state, ...payload, }; }, }, effects: { *getAnnouncementList({ payload }, { call, put,select }) { Toast.loading('加载中', 0, null, true); yield put({ type: 'updateState', payload: { isLoading:true, }, }); const { rc, msg, total,data } = yield call(getAnnouncementList, { ...payload }); let {announcementList,announcementListArr} = yield select(state => {return state.announcementModel}); if (rc === Config.constant.codeSuccess) { Toast.hide(); const lg = total; if(payload.pageNo>Math.ceil(lg/payload.pageSize) ){ Toast.info('没有数据了~',1); yield put({ type: 'updateState', payload: { isLoading:false, refreshing:false, }, }); if(payload.pageNo === 1){ yield put({ type: 'updateState', payload: { announcementListArr:[], announcementList:announcementList.cloneWithRows([]), }, }); } return false; }else{ let announcementListData = data; if(payload.pageNo === 1){ announcementListData = [...announcementListData]; }else{ announcementListData = [...announcementListArr,...announcementListData]; } yield put({ type: 'updateState', payload: { announcementListArr:announcementListData, announcementList:announcementList.cloneWithRows(announcementListData), isLoading:false, refreshing:false, }, }); } } else { Toast.fail(msg); } }, *getTabList({ payload }, { call, put,select }) { const { rc, msg, data } = yield call(getTabList, { ...payload }); if (rc === Config.constant.codeSuccess) { var arr= []; arr = [{id:'',title:'最新'},...data] yield put({ type: 'updateState', payload: { tabList:arr }, }); } else { Toast.fail(msg); } }, }, subscriptions: { // setupHistory({ dispatch, history }) { // history.listen(location => {}); // }, }, };