Commit 3ddcff4b030d1ce890f1a30bdc9041621331de8a

Authored by 陈鑫涛
2 parents 9ab93d9c 8bcca109

Merge branch 'main' of http://git.xlyprint.cn/zhangz/xlyUmi into main

Showing 1 changed file with 297 additions and 0 deletions
src/models/content.js 0 → 100644
  1 +/**
  2 + * Created by mar105 on 2017-11-14.
  3 + */
  4 +import { history } from 'umi';
  5 +import { message } from 'antd';
  6 +import * as services from '../services/services';
  7 +import * as commonUtils from '../utils/utils';
  8 +
  9 +export default {
  10 + namespace: 'content',
  11 + state: {
  12 + dataList: { sDataListTabId: '' }, /* 配置 */
  13 + },
  14 + reducers: {
  15 + setDataList(state, { payload: { dataList } }) {
  16 + return { ...state, dataList };
  17 + },
  18 + },
  19 + effects: {
  20 + /** 路由跳转 */
  21 + *onRouter({ payload }, { put, call, select }) {
  22 + /* 待用数据赋值 */
  23 + const {
  24 + refresh, /* 刷新方法 */
  25 + url, /* 接口地址 */
  26 + copyTo, /* 复制到数据 */
  27 + checkedId, /* 单据主表编号 */
  28 + sParentId, /* 父页面编号 */
  29 + sFilterOrderBy, /* 列表页排序规则(用于上一条下一条查询) */
  30 + pages, /* 列表页分页信息(用于上一条下一条查询) */
  31 + bFilter, /* 列表页查询条件(用于上一条下一条查询) */
  32 + currentIndex, /* 列表页游标(用于上一条下一条查询) */
  33 + sListFormmasterId,
  34 + classifyOption,
  35 + newRecordFlag,
  36 + newRecordRelation, /* 关联字段 */
  37 + newRecordMethod,
  38 + filterCondition,
  39 + otherCondition,
  40 + conditonValues,
  41 + currentData: currentRecord, /* 列表双击的选中行 */
  42 + sName, /* 当前列的sName */
  43 + sSqlConditionValues,
  44 + sSrcModelsId,
  45 + } = payload; /* 参数接收 */
  46 + const token = yield select(state => state.app.token); /* 用户令牌 */
  47 + /* 从接口获取数据 */
  48 + const { data } = yield call(services.getService, token, url);
  49 + /* 判断获取数据成功还是失败 */
  50 + if (data.code === 1) { /* 成功 */
  51 + /* 待用数据赋值 */
  52 + const { rows } = data.dataset; /* 数据集 */
  53 + const currentData = commonUtils.isEmptyArr(rows) ? {} : rows[0]; /* 窗体数据 */
  54 + const paneKey = commonUtils.createNewTabId(); /* 页签标识 */
  55 + /* 添加页签 */
  56 + yield put({
  57 + type: 'app/addNewPane',
  58 + payload: {
  59 + pane: {
  60 + refresh, /* 刷新方法 */
  61 + copyTo, /* 复制到数据 */
  62 + title: currentData.sMenuName, /* 菜单名称 */
  63 + route: currentData.sName, /* 路由名称 */
  64 + formId: currentData.sId, /* 窗体编号 */
  65 + sModelsType: currentData.sModelType, /* 窗体类型 */
  66 + sProcName: currentData.sProcName,
  67 + bFastOrderView: currentData.bFastOrderView,
  68 + key: paneKey, /* 页签标识 */
  69 + sParentId, /* 父页面编号 */
  70 + checkedId, /* 单据主表编号 */
  71 + sFilterOrderBy, /* 列表页排序规则(用于上一条下一条查询) */
  72 + pages, /* 列表页分页信息(用于上一条下一条查询) */
  73 + bFilter, /* 列表页查询条件(用于上一条下一条查询) */
  74 + currentIndex, /* 列表页游标(用于上一条下一条查询) */
  75 + sListFormmasterId,
  76 + classifyOption,
  77 + newRecordFlag,
  78 + newRecordRelation, /* 关联字段 */
  79 + newRecordMethod, /* NewRecord回调 */
  80 + filterCondition,
  81 + otherCondition,
  82 + conditonValues,
  83 + currentRecord,
  84 + sName,
  85 + sSqlConditionValues,
  86 + sSrcModelsId,
  87 + },
  88 + },
  89 + });
  90 + } else { /* 失败 */
  91 + yield put({ type: 'app/throwError', payload: data });
  92 + }
  93 + },
  94 +
  95 + *onRouterMobile({ payload }, { put, call, select }) {
  96 + const { urlKey } = payload; /* 参数接收 */
  97 + if (urlKey !== undefined) {
  98 + const token = yield select(state => state.app.token); /* 用户令牌 */
  99 + const { data } = yield call(services.getService, token, urlKey);
  100 + if (data.code === 1) { /* 成功 */
  101 + const { rows } = data.dataset; /* 数据集 */
  102 + const currentData = commonUtils.isEmptyArr(rows) ? {} : rows[0]; /* 窗体数据 */
  103 + /* 添加页签 */
  104 + const param = {
  105 + sModelsId: currentData.sId,
  106 + title: currentData.sMenuName, /* 菜单名称 */
  107 + sModelsType: currentData.sModelType, /* 窗体类型 */
  108 + sProcName: currentData.sProcName,
  109 + formRoute: currentData.sName,
  110 + ...payload,
  111 + };
  112 + if (commonUtils.isNotEmptyObject(param) && commonUtils.isNotEmptyObject(param.url) && param.url.includes('indexCssMobile')) {
  113 + param.formRoute = param.formRoute.replace('indexMobile', 'indexCssMobile');
  114 + currentData.sName = param.formRoute.replace('indexMobile', 'indexCssMobile');
  115 + } else if (commonUtils.isNotEmptyObject(param) && commonUtils.isNotEmptyObject(param.url) && param.url.includes('indexSrmMobile')) {
  116 + param.formRoute = param.formRoute.replace('indexMobile', 'indexSrmMobile');
  117 + currentData.sName = param.formRoute.replace('indexMobile', 'indexSrmMobile');
  118 + }
  119 + // yield put(routerRedux.push({
  120 + // pathname: currentData.sName,
  121 + // state: { sParam: commonUtils.convertObjToStr(param) },
  122 + // }));
  123 + history.push(currentData.sName, commonUtils.convertObjToStr(param));
  124 + } else { /* 失败 */
  125 + yield put({ type: 'app/throwErrorMobile', payload: data });
  126 + }
  127 + } else {
  128 + const param = {
  129 + sModelsId: payload.sModelsId,
  130 + sId: payload.sId,
  131 + personPic: payload.personPic,
  132 + slaveData: payload.slaveData,
  133 + };
  134 + history.push(payload.url, commonUtils.convertObjToStr(param));
  135 + // yield put(routerRedux.push({
  136 + // pathname: payload.url,
  137 + // state: { sParam: commonUtils.convertObjToStr(param) },
  138 + // }));
  139 + }
  140 + },
  141 + *getUrlData({ payload }, { put, call, select }) {
  142 + const {
  143 + currentIndex, refresh, url, sTabId, sParentId, formRoute, componentName, urlDataType, returnType, checkedId, disabled, copyToData, sFilterOrderBy, bFilter, pageSize, pages, sListFormmasterId, currentData, newKey,
  144 + } = payload;
  145 + const token = yield select(state => state.app.token);
  146 + let dataList = {
  147 + sDataListTabId: sTabId, formRoute, componentName, loading: true,
  148 + };
  149 + yield put({ type: 'setDataList', payload: { dataList } });
  150 + const { data } = yield call(services.getService, token, url);
  151 + let paneType = '';
  152 + if (data.code === 1) {
  153 + let rows;
  154 + if (urlDataType === 'First') {
  155 + rows = data.dataset.rows.length > 0 ? data.dataset.rows[0] : {};
  156 + } else if (urlDataType === 'newPane') {
  157 + rows = data.dataset.rows.length > 0 ? data.dataset.rows[0] : {};
  158 + paneType = 'new';
  159 + } else {
  160 + const rowsCopy = data.dataset.rows;
  161 + rows = rowsCopy;
  162 + }
  163 + dataList = {
  164 + sDataListTabId: sTabId,
  165 + sParentId, /* 父页面ID用于标识新页签是从哪个页面上来的,防止双击出现多个页签 */
  166 + formRoute,
  167 + componentName,
  168 + urlData: rows,
  169 + loading: false,
  170 + disabled,
  171 + paneType,
  172 + checkedId, /* 双击选中的Table中的数据ID */
  173 + returnType,
  174 + copyToData, /* 复制到数据 */
  175 + sFilterOrderBy,
  176 + bFilter,
  177 + pageSize,
  178 + pages,
  179 + sListFormmasterId,
  180 + currentData,
  181 + newKey,
  182 + refresh, /* commonList页面刷新方法 */
  183 + currentIndex,
  184 + };
  185 + yield put({ type: 'setDataList', payload: { dataList } });
  186 + dataList = {};
  187 + yield put({ type: 'setDataList', payload: { dataList } });
  188 + } else {
  189 + yield put({ type: 'app/throwError', payload: data });
  190 + }
  191 + },
  192 + *getUrlPostData({ payload }, { put, call, select }) {
  193 + /* 获取表数据 */
  194 + const {
  195 + formRoute, componentName, sTabId, url, value, urlDataType, returnType, sId,
  196 + } = payload;
  197 + let dataList = {
  198 + sDataListTabId: sTabId, formRoute, componentName, loading: true,
  199 + };
  200 + if (returnType !== 'CUD') {
  201 + yield put({ type: 'setDataList', payload: { dataList } });
  202 + }
  203 + const token = yield select(state => state.app.token);
  204 + const { data } = yield call(services.postValueService, token, value, url);
  205 + if (data.code === 1) {
  206 + if (returnType !== undefined && returnType === 'CUD') {
  207 + message.success(data.msg);
  208 + dataList = {
  209 + sDataListTabId: sTabId, formRoute, componentName, returnType, disabled: true, sId,
  210 + };
  211 + yield put({ type: 'setDataList', payload: { dataList } });
  212 + } else {
  213 + const { dataset } = data;
  214 + let dataTotal = {};
  215 + if (data.dataset.rows.length > 0 && data.dataset.rows[0].sumSet !== undefined) {
  216 + dataTotal = data.dataset.rows[0].sumSet;
  217 + }
  218 + let rows;
  219 + if (urlDataType === 'First') {
  220 + rows = data.dataset.rows.length > 0 && data.dataset.rows[0].dataSet.length > 0 ? data.dataset.rows[0].dataSet[0] : {};
  221 + } else {
  222 + rows = data.dataset.rows.length > 0 ? data.dataset.rows[0].dataSet : [];
  223 + }
  224 + // const { rows } = dataset; /* 整合前列表数据 */
  225 + const pages = {
  226 + pageNum: dataset.currentPageNo, /* 当前页 */
  227 + totalCount: dataset.totalCount, /* 总数 */
  228 + }; /* 分页 */
  229 + dataList = {
  230 + sDataListTabId: sTabId, formRoute, componentName, urlData: rows, pages, returnType, loading: false, dataTotal,
  231 + };
  232 + yield put({ type: 'setDataList', payload: { dataList } });
  233 + /* 用以清空数据集屏蔽类似保存后闪显老数据等问题 */
  234 + dataList = {};
  235 + yield put({ type: 'setDataList', payload: { dataList } });
  236 + }
  237 + } else {
  238 + yield put({ type: 'app/throwError', payload: data });
  239 + dataList = {
  240 + sDataListTabId: sTabId, formRoute, componentName, urlData: [], returnType, loading: false, pages: { pageNum: 0, totalCount: 0 }, dataTotal: [{}],
  241 + };
  242 + yield put({ type: 'setDataList', payload: { dataList } });
  243 + }
  244 + },
  245 + *getUrlPostDataSys({ payload }, { put, call, select }) {
  246 + /* 系统参数保存 */
  247 + const {
  248 + formRoute, componentName, sTabId, url, value, returnType, sId,
  249 + } = payload;
  250 + const token = yield select(state => state.app.token);
  251 + const { data } = yield call(services.postValueService, token, value, url);
  252 + if (data.code === 1) {
  253 + message.success(data.msg);
  254 + const dataList = {
  255 + sDataListTabId: sTabId, formRoute, componentName, returnType, disabled: true, sId,
  256 + };
  257 + yield put({ type: 'setDataList', payload: { dataList } });
  258 + const sysData = value.data;
  259 + const systemData = sysData.filter(item => item.sTable === 'syssystemsettings')[0].column;
  260 + const dNetPrice = systemData.filter(item => (item.sName === 'NetPrice'))[0];
  261 + const dNetMoney = systemData.filter(item => (item.sName === 'NetMoney'))[0];
  262 + const decimals = {
  263 + dNetPrice: dNetPrice.sValue !== undefined ? (dNetPrice.sValue) * 1 : 6,
  264 + dNetMoney: dNetMoney.sValue !== undefined ? (dNetMoney.sValue) * 1 : 6,
  265 + };
  266 + yield put({ type: 'app/saveDecimals', payload: decimals });
  267 + yield put({ type: 'app/saveSystemData', payload: systemData });
  268 + } else {
  269 + yield put({ type: 'app/throwError', payload: data });
  270 + }
  271 + },
  272 + *getCopyDataId({ payload }, { put, call, select }) {
  273 + const {
  274 + sTabId, formRoute, componentName, url,
  275 + } = payload;
  276 + const token = yield select(state => state.app.token);
  277 + const { data } = yield call(services.getService, token, url);
  278 + if (data.code === 1) {
  279 + const dataList = {
  280 + sDataListTabId: sTabId,
  281 + formRoute,
  282 + componentName,
  283 + newIds: data.dataset.rows,
  284 + };
  285 + yield put({ type: 'setDataList', payload: { dataList } });
  286 + } else {
  287 + yield put({ type: 'app/throwError', payload: data });
  288 + }
  289 + },
  290 + *saveLogoImageInfo({ payload }, { put }) {
  291 + const { logoImageInfo } = payload;
  292 + yield put({ type: 'app/saveLogoImageInfo', payload: logoImageInfo });
  293 + },
  294 + },
  295 + subscriptions: {},
  296 +};
  297 +