diff --git a/src/models/content.js b/src/models/content.js new file mode 100644 index 0000000..cfd457a --- /dev/null +++ b/src/models/content.js @@ -0,0 +1,297 @@ +/** + * Created by mar105 on 2017-11-14. + */ +import { history } from 'umi'; +import { message } from 'antd'; +import * as services from '../services/services'; +import * as commonUtils from '../utils/utils'; + +export default { + namespace: 'content', + state: { + dataList: { sDataListTabId: '' }, /* 配置 */ + }, + reducers: { + setDataList(state, { payload: { dataList } }) { + return { ...state, dataList }; + }, + }, + effects: { + /** 路由跳转 */ + *onRouter({ payload }, { put, call, select }) { + /* 待用数据赋值 */ + const { + refresh, /* 刷新方法 */ + url, /* 接口地址 */ + copyTo, /* 复制到数据 */ + checkedId, /* 单据主表编号 */ + sParentId, /* 父页面编号 */ + sFilterOrderBy, /* 列表页排序规则(用于上一条下一条查询) */ + pages, /* 列表页分页信息(用于上一条下一条查询) */ + bFilter, /* 列表页查询条件(用于上一条下一条查询) */ + currentIndex, /* 列表页游标(用于上一条下一条查询) */ + sListFormmasterId, + classifyOption, + newRecordFlag, + newRecordRelation, /* 关联字段 */ + newRecordMethod, + filterCondition, + otherCondition, + conditonValues, + currentData: currentRecord, /* 列表双击的选中行 */ + sName, /* 当前列的sName */ + sSqlConditionValues, + sSrcModelsId, + } = payload; /* 参数接收 */ + const token = yield select(state => state.app.token); /* 用户令牌 */ + /* 从接口获取数据 */ + const { data } = yield call(services.getService, token, url); + /* 判断获取数据成功还是失败 */ + if (data.code === 1) { /* 成功 */ + /* 待用数据赋值 */ + const { rows } = data.dataset; /* 数据集 */ + const currentData = commonUtils.isEmptyArr(rows) ? {} : rows[0]; /* 窗体数据 */ + const paneKey = commonUtils.createNewTabId(); /* 页签标识 */ + /* 添加页签 */ + yield put({ + type: 'app/addNewPane', + payload: { + pane: { + refresh, /* 刷新方法 */ + copyTo, /* 复制到数据 */ + title: currentData.sMenuName, /* 菜单名称 */ + route: currentData.sName, /* 路由名称 */ + formId: currentData.sId, /* 窗体编号 */ + sModelsType: currentData.sModelType, /* 窗体类型 */ + sProcName: currentData.sProcName, + bFastOrderView: currentData.bFastOrderView, + key: paneKey, /* 页签标识 */ + sParentId, /* 父页面编号 */ + checkedId, /* 单据主表编号 */ + sFilterOrderBy, /* 列表页排序规则(用于上一条下一条查询) */ + pages, /* 列表页分页信息(用于上一条下一条查询) */ + bFilter, /* 列表页查询条件(用于上一条下一条查询) */ + currentIndex, /* 列表页游标(用于上一条下一条查询) */ + sListFormmasterId, + classifyOption, + newRecordFlag, + newRecordRelation, /* 关联字段 */ + newRecordMethod, /* NewRecord回调 */ + filterCondition, + otherCondition, + conditonValues, + currentRecord, + sName, + sSqlConditionValues, + sSrcModelsId, + }, + }, + }); + } else { /* 失败 */ + yield put({ type: 'app/throwError', payload: data }); + } + }, + + *onRouterMobile({ payload }, { put, call, select }) { + const { urlKey } = payload; /* 参数接收 */ + if (urlKey !== undefined) { + const token = yield select(state => state.app.token); /* 用户令牌 */ + const { data } = yield call(services.getService, token, urlKey); + if (data.code === 1) { /* 成功 */ + const { rows } = data.dataset; /* 数据集 */ + const currentData = commonUtils.isEmptyArr(rows) ? {} : rows[0]; /* 窗体数据 */ + /* 添加页签 */ + const param = { + sModelsId: currentData.sId, + title: currentData.sMenuName, /* 菜单名称 */ + sModelsType: currentData.sModelType, /* 窗体类型 */ + sProcName: currentData.sProcName, + formRoute: currentData.sName, + ...payload, + }; + if (commonUtils.isNotEmptyObject(param) && commonUtils.isNotEmptyObject(param.url) && param.url.includes('indexCssMobile')) { + param.formRoute = param.formRoute.replace('indexMobile', 'indexCssMobile'); + currentData.sName = param.formRoute.replace('indexMobile', 'indexCssMobile'); + } else if (commonUtils.isNotEmptyObject(param) && commonUtils.isNotEmptyObject(param.url) && param.url.includes('indexSrmMobile')) { + param.formRoute = param.formRoute.replace('indexMobile', 'indexSrmMobile'); + currentData.sName = param.formRoute.replace('indexMobile', 'indexSrmMobile'); + } + // yield put(routerRedux.push({ + // pathname: currentData.sName, + // state: { sParam: commonUtils.convertObjToStr(param) }, + // })); + history.push(currentData.sName, commonUtils.convertObjToStr(param)); + } else { /* 失败 */ + yield put({ type: 'app/throwErrorMobile', payload: data }); + } + } else { + const param = { + sModelsId: payload.sModelsId, + sId: payload.sId, + personPic: payload.personPic, + slaveData: payload.slaveData, + }; + history.push(payload.url, commonUtils.convertObjToStr(param)); + // yield put(routerRedux.push({ + // pathname: payload.url, + // state: { sParam: commonUtils.convertObjToStr(param) }, + // })); + } + }, + *getUrlData({ payload }, { put, call, select }) { + const { + currentIndex, refresh, url, sTabId, sParentId, formRoute, componentName, urlDataType, returnType, checkedId, disabled, copyToData, sFilterOrderBy, bFilter, pageSize, pages, sListFormmasterId, currentData, newKey, + } = payload; + const token = yield select(state => state.app.token); + let dataList = { + sDataListTabId: sTabId, formRoute, componentName, loading: true, + }; + yield put({ type: 'setDataList', payload: { dataList } }); + const { data } = yield call(services.getService, token, url); + let paneType = ''; + if (data.code === 1) { + let rows; + if (urlDataType === 'First') { + rows = data.dataset.rows.length > 0 ? data.dataset.rows[0] : {}; + } else if (urlDataType === 'newPane') { + rows = data.dataset.rows.length > 0 ? data.dataset.rows[0] : {}; + paneType = 'new'; + } else { + const rowsCopy = data.dataset.rows; + rows = rowsCopy; + } + dataList = { + sDataListTabId: sTabId, + sParentId, /* 父页面ID用于标识新页签是从哪个页面上来的,防止双击出现多个页签 */ + formRoute, + componentName, + urlData: rows, + loading: false, + disabled, + paneType, + checkedId, /* 双击选中的Table中的数据ID */ + returnType, + copyToData, /* 复制到数据 */ + sFilterOrderBy, + bFilter, + pageSize, + pages, + sListFormmasterId, + currentData, + newKey, + refresh, /* commonList页面刷新方法 */ + currentIndex, + }; + yield put({ type: 'setDataList', payload: { dataList } }); + dataList = {}; + yield put({ type: 'setDataList', payload: { dataList } }); + } else { + yield put({ type: 'app/throwError', payload: data }); + } + }, + *getUrlPostData({ payload }, { put, call, select }) { + /* 获取表数据 */ + const { + formRoute, componentName, sTabId, url, value, urlDataType, returnType, sId, + } = payload; + let dataList = { + sDataListTabId: sTabId, formRoute, componentName, loading: true, + }; + if (returnType !== 'CUD') { + yield put({ type: 'setDataList', payload: { dataList } }); + } + const token = yield select(state => state.app.token); + const { data } = yield call(services.postValueService, token, value, url); + if (data.code === 1) { + if (returnType !== undefined && returnType === 'CUD') { + message.success(data.msg); + dataList = { + sDataListTabId: sTabId, formRoute, componentName, returnType, disabled: true, sId, + }; + yield put({ type: 'setDataList', payload: { dataList } }); + } else { + const { dataset } = data; + let dataTotal = {}; + if (data.dataset.rows.length > 0 && data.dataset.rows[0].sumSet !== undefined) { + dataTotal = data.dataset.rows[0].sumSet; + } + let rows; + if (urlDataType === 'First') { + rows = data.dataset.rows.length > 0 && data.dataset.rows[0].dataSet.length > 0 ? data.dataset.rows[0].dataSet[0] : {}; + } else { + rows = data.dataset.rows.length > 0 ? data.dataset.rows[0].dataSet : []; + } + // const { rows } = dataset; /* 整合前列表数据 */ + const pages = { + pageNum: dataset.currentPageNo, /* 当前页 */ + totalCount: dataset.totalCount, /* 总数 */ + }; /* 分页 */ + dataList = { + sDataListTabId: sTabId, formRoute, componentName, urlData: rows, pages, returnType, loading: false, dataTotal, + }; + yield put({ type: 'setDataList', payload: { dataList } }); + /* 用以清空数据集屏蔽类似保存后闪显老数据等问题 */ + dataList = {}; + yield put({ type: 'setDataList', payload: { dataList } }); + } + } else { + yield put({ type: 'app/throwError', payload: data }); + dataList = { + sDataListTabId: sTabId, formRoute, componentName, urlData: [], returnType, loading: false, pages: { pageNum: 0, totalCount: 0 }, dataTotal: [{}], + }; + yield put({ type: 'setDataList', payload: { dataList } }); + } + }, + *getUrlPostDataSys({ payload }, { put, call, select }) { + /* 系统参数保存 */ + const { + formRoute, componentName, sTabId, url, value, returnType, sId, + } = payload; + const token = yield select(state => state.app.token); + const { data } = yield call(services.postValueService, token, value, url); + if (data.code === 1) { + message.success(data.msg); + const dataList = { + sDataListTabId: sTabId, formRoute, componentName, returnType, disabled: true, sId, + }; + yield put({ type: 'setDataList', payload: { dataList } }); + const sysData = value.data; + const systemData = sysData.filter(item => item.sTable === 'syssystemsettings')[0].column; + const dNetPrice = systemData.filter(item => (item.sName === 'NetPrice'))[0]; + const dNetMoney = systemData.filter(item => (item.sName === 'NetMoney'))[0]; + const decimals = { + dNetPrice: dNetPrice.sValue !== undefined ? (dNetPrice.sValue) * 1 : 6, + dNetMoney: dNetMoney.sValue !== undefined ? (dNetMoney.sValue) * 1 : 6, + }; + yield put({ type: 'app/saveDecimals', payload: decimals }); + yield put({ type: 'app/saveSystemData', payload: systemData }); + } else { + yield put({ type: 'app/throwError', payload: data }); + } + }, + *getCopyDataId({ payload }, { put, call, select }) { + const { + sTabId, formRoute, componentName, url, + } = payload; + const token = yield select(state => state.app.token); + const { data } = yield call(services.getService, token, url); + if (data.code === 1) { + const dataList = { + sDataListTabId: sTabId, + formRoute, + componentName, + newIds: data.dataset.rows, + }; + yield put({ type: 'setDataList', payload: { dataList } }); + } else { + yield put({ type: 'app/throwError', payload: data }); + } + }, + *saveLogoImageInfo({ payload }, { put }) { + const { logoImageInfo } = payload; + yield put({ type: 'app/saveLogoImageInfo', payload: logoImageInfo }); + }, + }, + subscriptions: {}, +}; +