/* eslint-disable */ import React, { Component } from "react"; import { Modal, Progress } from "antd-v4"; import { message } from "@/utils/common/message"; // import moment from 'moment'; import * as commonUtils from "@/utils/utils"; /* 通用方法 */ import * as commonBusiness from "@/components/Common/commonBusiness"; /* 单据业务功能 */ import * as commonServices from "@/services/services"; /* 服务类 */ import commonConfig from "@/utils/config"; import * as commonFunc from "@/components/Common/commonFunc"; import styles from "@/components/Common/ToolBar/index.less"; const { confirm } = Modal; export default ChildComponent => { return class extends Component { constructor(props) { super(props); this.state = { initSId: "", }; // this.state = { // masterConfig: {}, /* 主表配置 */ // slaveConfig: {}, /* 从表配置 */ // slaveColumn: [], /* 显示的从表表头 */ // checkConfig: {}, /* 审核配置 */ // checkColumn: [], /* 显示的审核表表头 */ // // billnosetting: {}, /* 是否自动审核 */ // report: [], /* 打印模板 */ // masterData: {}, /* 主表数据 */ // slaveData: [], /* 从表数据 */ // dataTotal: {}, /* 合计字段 */ // checkData: [], /* 审核表数据 */ // masterFlag: false, /* 是否获取主表数据 */ // slaveFlag: false, /* 是否获取从表数据 */ // checkFlag: false, /* 是否获取审核表数据 */ // sId: '', /* 数据Id */ // enabled: false, /* 页面是否可编辑 */ // slaveSelectedRowKeys: [], /* 已选择的数据行(数据格式:数组) */ // slaveDelData: [], /* 已删除的数据集合,保存的时候会与从表一并传给服务器(数据格式:数组) */ // expand: false, /* 默认主表只显示2行 */ // imgSrc: '', /* Avatar组件中的img中src的资源路径 */ // currentIndexFlag: false, /* 默认不显示当前的数据在主表页的位置序号 */ // }; this.form = {}; /* 表单对象 */ this.copyName = ""; const { sModelsId, sModelsType = "" } = props; if (sModelsType.includes("cashier/")) { commonUtils.setStoreDropDownData(sModelsId, "master", "sCustomerId", []); commonUtils.setStoreDropDownData(sModelsId, "master", "sCustomerNo", []); commonUtils.setStoreDropDownData(sModelsId, "master", "sCustomerName", []); commonUtils.setStoreDropDownData(sModelsId, "master", "sSupplyId", []); commonUtils.setStoreDropDownData(sModelsId, "master", "sSupplyNo", []); commonUtils.setStoreDropDownData(sModelsId, "master", "sSupplyName", []); commonUtils.setStoreDropDownData(sModelsId, "master", "sFamilyId", []); commonUtils.setStoreDropDownData(sModelsId, "master", "sFamilyNo", []); commonUtils.setStoreDropDownData(sModelsId, "master", "sFamilyName", []); } commonUtils.setStoreDropDownData(sModelsId, "slave", "sSrcNo", []); } async componentWillReceiveProps(nextProps) { const { formData, currentId } = nextProps; const { masterConfig: masterConfigOld, app } = nextProps; if (commonUtils.isEmptyObject(masterConfigOld) && formData.length > 0) { const sId = currentId || nextProps.masterData?.sId || ""; const masterConfig = formData.filter(item => !item.bGrd)[0]; const sReasonTitle = commonUtils.isNotEmptyObject(commonFunc.showMessage(app.commonConst, "sReason")) ? commonFunc.showMessage(app.commonConst, "sReason") : "报错原因"; /* 导入报错原因 */ /* 导入错误配置 */ let importConfig = {}; let importFilterData = formData.filter(item => item.bReportData && item.sGrd === "importTemplate"); if (commonUtils.isNotEmptyArr(importFilterData)) { importConfig = formData.filter(item => item.bReportData && item.sGrd === "importTemplate")[0]; const iIndex = importConfig.gdsconfigformslave.findIndex(item => item.sName === "sReason"); if (iIndex === -1) { importConfig.gdsconfigformslave.push({ bCanInput: false, bEntireLine: false, bFilter: false, bFind: false, bFirstEmpty: false, bIsOther: false, bMultipleChoice: false, bNewRecord: false, bNotEmpty: false, bNotRepeat: false, bReadonly: false, bSum: false, bTree: false, bVisible: true, iColValue: 1, iFitWidth: 200, /* iIncrement: 26154, */ iOrder: 1, iTag: 0, iVisCount: 0, iconName: "menu-unfold", sActiveKey: "", sAssignField: "", sBig5: "", sBig5DropDown: "", sBrandsId: "1111111111", sChinese: "报错原因", sChineseDropDown: "", sColor: "", sColorTerms: "", sControlName: "", sDateFormat: "", sDefault: "", sDropDownType: "", sEnglish: "", sEnglishDropDown: "", sFilterSql: "", /* sId: '19211681019715580740769130', */ sKeyUpFilter: "", sMaxValue: "", sMinValue: "", sName: "sReason", sNotRepeatColumn: "", /* sParentId: '19211681019715428730724240', */ sRelation: "", sSelectRelation: "", sSqlCondition: "", sSubsidiaryId: "1111111111", showDropDown: "", showName: sReasonTitle, }); } } let importColumn = []; if (commonUtils.isNotEmptyObject(importConfig)) { importColumn = commonFunc.getHeaderConfig(importConfig); } const config = {}; let addState = {}; let addOtherState = {}; let onlySlave = false; let onlySlave0 = false; let onlySlave1 = false; let onlyslave2 = false; let onlyslave3 = false; let onlyslave4 = false; let slaveColumn = []; let slave0Column = []; let slave1Column = []; let slave2Column = []; let slave3Column = []; let slave4Column = []; const slaveConfig = formData.length > 1 ? formData[1] : {}; if (!commonUtils.isEmptyObject(slaveConfig) && slaveConfig.bGrdVisible && slaveConfig.sGrd !== "importTemplate") { config.slaveConfig = slaveConfig; slaveColumn = commonFunc.getHeaderConfig(slaveConfig); onlySlave = true; const slavePageSize = commonUtils.isNotEmptyObject(slaveConfig) && commonUtils.isNotEmptyNumber(slaveConfig.iPageSize) && slaveConfig.iPageSize !== 0 ? slaveConfig.iPageSize : commonConfig.pageSize; addOtherState.slavePageSize = slavePageSize; } const slave0Config = formData.length > 2 ? formData[2] : {}; if (!commonUtils.isEmptyObject(slave0Config) && slave0Config.bGrdVisible && slave0Config.sGrd !== "importTemplate") { config.slave0Config = slave0Config; slave0Column = commonFunc.getHeaderConfig(slave0Config); onlySlave0 = true; const slave0PageSize = commonUtils.isNotEmptyObject(slave0Config) && commonUtils.isNotEmptyNumber(slave0Config.iPageSize) && slave0Config.iPageSize !== 0 ? slave0Config.iPageSize : commonConfig.pageSize; addOtherState.slave0PageSize = slave0PageSize; } const slave1Config = formData.length > 3 ? formData[3] : {}; if (!commonUtils.isEmptyObject(slave1Config) && slave1Config.bGrdVisible && slave1Config.sGrd !== "importTemplate") { config.slave1Config = slave1Config; slave1Column = commonFunc.getHeaderConfig(slave1Config); onlySlave1 = true; const slave1PageSize = commonUtils.isNotEmptyObject(slave1Config) && commonUtils.isNotEmptyNumber(slave1Config.iPageSize) && slave1Config.iPageSize !== 0 ? slave1Config.iPageSize : commonConfig.pageSize; addOtherState.slave1PageSize = slave1PageSize; } const slave2Config = formData.length > 4 ? formData[4] : {}; if (!commonUtils.isEmptyObject(slave2Config) && slave2Config.bGrdVisible && slave2Config.sGrd !== "importTemplate") { config.slave2Config = slave2Config; slave2Column = commonFunc.getHeaderConfig(slave2Config); onlyslave2 = true; const slave2PageSize = commonUtils.isNotEmptyObject(slave2Config) && commonUtils.isNotEmptyNumber(slave2Config.iPageSize) && slave2Config.iPageSize !== 0 ? slave2Config.iPageSize : commonConfig.pageSize; addOtherState.slave2PageSize = slave2PageSize; } const slave3Config = formData.length > 5 ? formData[5] : {}; if (!commonUtils.isEmptyObject(slave3Config) && slave3Config.bGrdVisible && slave3Config.sGrd !== "importTemplate") { config.slave3Config = slave3Config; slave3Column = commonFunc.getHeaderConfig(slave3Config); onlyslave3 = true; const slave3PageSize = commonUtils.isNotEmptyObject(slave3Config) && commonUtils.isNotEmptyNumber(slave3Config.iPageSize) && slave3Config.iPageSize !== 0 ? slave3Config.iPageSize : commonConfig.pageSize; addOtherState.slave3PageSize = slave3PageSize; } const slave4Config = formData.length > 6 ? formData[6] : {}; if (!commonUtils.isEmptyObject(slave4Config) && slave4Config.bGrdVisible && slave4Config.sGrd !== "importTemplate") { config.slave4Config = slave4Config; slave4Column = commonFunc.getHeaderConfig(slave4Config); onlyslave4 = true; const slave4PageSize = commonUtils.isNotEmptyObject(slave4Config) && commonUtils.isNotEmptyNumber(slave4Config.iPageSize) && slave4Config.iPageSize !== 0 ? slave4Config.iPageSize : commonConfig.pageSize; addOtherState.slave4PageSize = slave4PageSize; } let slaveInfoList = ["slave"]; /* 父表格名配置集合 */ let slaveChildInfoList = []; /* 子表格名配置集合 */ const addStateConfig = {}; /* 所有表格配置集合 */ addStateConfig["slaveConfig"] = slaveConfig; let addStateMap = {}; /* 所有表格配置集合 */ if (formData.length > 7) { formData.forEach((item, index) => { if (index > 6 && item.sGrd !== "importTemplate" && !item.sGrd?.includes("_")) { const num = index - 2; addOtherState[`slave${num}Config`] = item; config[`slave${num}Config`] = item; addOtherState[`slave${num}Column`] = commonFunc.getHeaderConfig(item); addOtherState[`onlyslave${num}`] = true; const pageSize = commonUtils.isNotEmptyObject(item) && commonUtils.isNotEmptyNumber(item.iPageSize) && item.iPageSize !== 0 ? item.iPageSize : commonConfig.pageSize; addOtherState[`slave${num}PageSize`] = pageSize; } }); } /* commonNewBill 可以一带N表 */ const tableConfigArr = formData.filter(item => item.bGrd && item.bGrdVisible && item.sGrd !== "importTemplate" && !item.sGrd?.includes("_")); const slaveOtherConfigArr = []; if (commonUtils.isNotEmptyArr(tableConfigArr)) { tableConfigArr.forEach((item, iIndex) => { if (iIndex > 5) { const iSlaveTag = iIndex - 1; item.slaveNameTag = iSlaveTag; slaveOtherConfigArr.push(item); const slaveOtherConfigName = "slave" + iSlaveTag + "Config"; let slaveOtherColumnName = "slave" + iSlaveTag + "Column"; const onlyslaveTag = "onlyslave" + iSlaveTag; const slavePageSizeTag = "slave" + iSlaveTag + "PageSize"; const slaveOtherColumn = commonFunc.getHeaderConfig(item); addOtherState[slaveOtherConfigName] = item; addOtherState[slaveOtherColumnName] = slaveOtherColumn; addOtherState[onlyslaveTag] = true; const slavePageSize = commonUtils.isNotEmptyObject(item) && commonUtils.isNotEmptyNumber(item.iPageSize) && item.iPageSize !== 0 ? item.iPageSize : commonConfig.pageSize; addOtherState[slavePageSizeTag] = slavePageSize; } /* 封装父级表格 */ let num = 0; if (iIndex > 0) { num = iIndex - 1; slaveInfoList.push(`slave${num}`); addStateConfig[`slave${num}Config`] = item; } /* 找到父级页签下面的子级页签数据集 */ const childFormData = formData.filter( child => !child.bGrdVisible && child.sGrd && item.sChildTableName && item.sChildTableName.includes(child.sGrd) && child.sGrd !== "slave" ); if (commonUtils.isNotEmptyArr(childFormData)) { childFormData.forEach((child, tag) => { addOtherState[`slave${num}Child${tag}Config`] = child; addStateConfig[`slave${num}Child${tag}Config`] = child; addOtherState[`slave${num}Child${tag}Column`] = commonFunc.getHeaderConfig(child); const sChildName = child.showName; slaveChildInfoList.push(`slave${num}Child${tag}-${sChildName}`); }); } }); addStateMap = addStateConfig; addOtherState.slaveOtherConfigArr = slaveOtherConfigArr; } config.masterConfig = masterConfig; if (sId === "") { let copyTo = nextProps.app.currentPane.copyTo; if (nextProps.formRoute === '/indexMobile/commobilePadBill') { copyTo = nextProps.copyTo; } addState = await this.handleAdd(config, copyTo, true); // 如果配置了bEmptyAddLine, 默认不添加空数据 formData.forEach((item, index) => { if (index > 0) { const tempConfig = formData[index]; const i = index === 1 ? "" : index - 2; if (commonUtils.isNotEmptyObject(tempConfig) && tempConfig.bGrdVisible) { const bEmptyAddLine = tempConfig.gdsconfigformslave.find(item => item.sControlName === "bEmptyAddLine"); if (commonUtils.isNotEmptyObject(bEmptyAddLine) && bEmptyAddLine.bVisible) { if (this.initHandleAddNoValue.includes(i)) { addState[`slave${i}Data`] = []; } } } } }); } else { this.handleGetData( masterConfig, slaveConfig, slave0Config, slave1Config, slave2Config, slave3Config, slave4Config, null, commonUtils.isNotEmptyObject(addOtherState) ? addOtherState.slave5Config : null, commonUtils.isNotEmptyObject(addOtherState) ? addOtherState.slave6Config : null, commonUtils.isNotEmptyObject(addOtherState) ? addOtherState.slave7Config : null, commonUtils.isNotEmptyObject(addOtherState) ? addOtherState.slave8Config : null, commonUtils.isNotEmptyObject(addOtherState) ? addOtherState.slave9Config : null, commonUtils.isNotEmptyObject(addOtherState) ? addOtherState.slave10Config : null ); } this.props.onSaveState({ masterConfig, sId, pageLoading: false, ...addState, slaveConfig, slaveColumn, slave0Config, slave0Column, slave1Config, slave1Column, slave2Config, slave2Column, slave3Config, slave3Column, slave4Config, slave4Column, onlySlave, onlySlave0, onlySlave1, onlyslave2, onlyslave3, onlyslave4, importConfig, importColumn, addStateMap, slaveInfoList, slaveChildInfoList, ...addOtherState, }); } } shouldComponentUpdate(nextProps) { const { slaveColumn, masterConfig } = nextProps; return commonUtils.isNotEmptyArr(slaveColumn) || commonUtils.isNotEmptyObject(masterConfig); } /** 获取应收账款 */ getCustomerReceipt = async masterData => { const { sModelsId } = this.props; if (!commonUtils.isEmpty(masterData.sCustomerId)) { const url = `${commonConfig.server_host}business/getProData?sModelsId=${sModelsId}`; const value = { sProName: "Sp_Receivables_AR", paramsMap: { sStatistics: masterData.sCustomerId } }; const dataReturn = (await commonServices.postValueService(this.props.app.token, value, url)).data; if (dataReturn.code === 1) { /* 数据查询成功 */ const [returnData] = dataReturn.dataset.rows[0].dataSet.outData; const masterDataNew = { ...masterData, dNoReceiptMoney: returnData.dNoReceiptMoney, dDueReceiptMoney: returnData.dNoReceiptMoney, }; this.props.onSaveState({ masterData: masterDataNew }); } else { /* 失败 */ this.props.getServiceError(dataReturn); } } }; /** 获取上查下查数据 */ getSearchUpDownData = async showConfig => { const { sModelsId } = this.props; const url = `${commonConfig.server_host}searchupdown/getSearchUpDown/${showConfig.sId}?sModelsId=${sModelsId}`; const conditonValues = this.props.getSqlCondition(showConfig); if (commonUtils.isNotEmptyObject(conditonValues)) { const iIndex = Object.keys(conditonValues).findIndex(item => commonUtils.isEmpty(conditonValues[item])); if (iIndex === -1) { /* 调用后台接口 */ const body = { sSqlCondition: commonUtils.isEmptyObject(conditonValues) ? "" : conditonValues /* 查询条件 */, }; const dataReturn = (await commonServices.postValueService(this.props.app.token, body, url)).data; if (dataReturn.code === 1) { /* 数据查询成功 */ return dataReturn.dataset.rows; } else { /* 失败 */ this.props.getServiceError(dataReturn); return []; } } } }; sortData = (tableData, processData) => { processData.sort((g1, g2) => { const iIndex1 = tableData.findIndex(item => item.sId === g1.sControlId) === -1 ? 999 : tableData.findIndex(item => item.sId === g1.sControlId); let sPartOrder1 = `0000${iIndex1}`; sPartOrder1 = sPartOrder1.substring(sPartOrder1.length - 3); let sOrder1 = `000${g1.iOrder}`; sOrder1 = sOrder1.substring(sOrder1.length - 3); const iIndex2 = tableData.findIndex(item => item.sId === g2.sControlId) === -1 ? 999 : tableData.findIndex(item => item.sId === g2.sControlId); let sPartOrder2 = `0000${iIndex2}`; sPartOrder2 = sPartOrder2.substring(sPartOrder2.length - 3); let sOrder2 = `000${g2.iOrder}`; sOrder2 = sOrder2.substring(sOrder2.length - 3); return parseInt(sPartOrder1 + g1.sType + sOrder1, 10) - parseInt(sPartOrder2 + g2.sType + sOrder2, 10); }); return processData; }; /** 获取主表、从表、审核表数据 */ handleGetData = async ( masterConfig, slaveConfig, slave0Config, slave1Config, slave2Config, slave3Config, slave4Config, bEditClick, slave5Config, slave6Config, slave7Config, slave8Config, slave9Config, slave10Config ) => { const { currentId, app } = this.props; /* 当前页签数据 */ const { sModelsId, masterData, sModelsType, slaveSelectedRowKeys } = this.props; const sId = currentId || masterData.sId || ""; await this.props.handleGetDataOne({ name: "master", configData: masterConfig, condition: { sId, pageSize: "", pageNum: "" }, bEditClick }); let addStateSlave = {}; if (!commonUtils.isEmptyObject(slaveConfig)) { addStateSlave = await this.props.handleGetDataSet({ name: "slave", configData: slaveConfig, condition: { sSqlCondition: { sParentId: sId } }, isWait: true, }); // if (sModelsType === 'cost/cosInsert' && commonUtils.isNotEmptyObject(addStateSlave) && commonUtils.isNotEmptyArr(addStateSlave.slaveData)) { // let slaveDelData = []; // addStateSlave.slaveData.forEach((item) => { // item.handleType = 'del'; // slaveDelData.push(item); // }); // addStateSlave.slaveData = [] // let sDepartNameDropDown; // const allTableData = {}; // const masterIndex = masterConfig.gdsconfigformslave.findIndex(item => item.sName === 'sDepartName'); // if (masterIndex > -1) { // const sqlDropDownData = await this.props.getSqlDropDownData(sModelsId, 'master', masterConfig.gdsconfigformslave[masterIndex]); // sDepartNameDropDown = sqlDropDownData.dropDownData; // sDepartNameDropDown.forEach((item) => { // const tableDataRowAdd = commonFunc.getDefaultData(slaveConfig, allTableData); // tableDataRowAdd.handleType = 'add'; // tableDataRowAdd.sId = commonUtils.createSid(); // tableDataRowAdd.sParentId = masterData && masterData.sId ? masterData.sId : null; // tableDataRowAdd.key = tableDataRowAdd.sId; // tableDataRowAdd.bDefault = false; // tableDataRowAdd.iOrder = 0; // tableDataRowAdd.sDepartName = item.sName; // addStateSlave.slaveData.push(tableDataRowAdd); // }); // } if (app) { const { currentPane } = app; if (currentPane && addStateSlave) { const temp = addStateSlave.slaveData.find(item => item.sName === app.currentPane.sName); if (temp && bEditClick !== "update") { addStateSlave.slaveSelectedRowKeys = [temp.sId]; this.setState({ initSId: temp.sId, }); } else if (temp && bEditClick === "update") { /* 修改后 选中行不要消失 */ if (commonUtils.isNotEmptyArr(slaveSelectedRowKeys)) { addStateSlave.slaveSelectedRowKeys = slaveSelectedRowKeys; } } } } } let addStateSlave1 = {}; if (!commonUtils.isEmptyObject(slave1Config)) { addStateSlave1 = await this.props.handleGetDataSet({ name: "slave1", configData: slave1Config, condition: { sSqlCondition: { sParentId: sId } }, isWait: true, }); } let addStateSlave0 = {}; if (!commonUtils.isEmptyObject(slave0Config)) { addStateSlave0 = await this.props.handleGetDataSet({ name: "slave0", configData: slave0Config, condition: { sSqlCondition: { sParentId: sId } }, isWait: true, }); /* 如果配置了控件Form 切数据为0 则初始化一条空数据 */ const ableConfigs0 = commonUtils.isNotEmptyObject(slave0Config) ? slave0Config.gdsconfigformslave.filter(item => item.sName !== "" && item.bControl && item.sControlName.indexOf("Btn") === -1) : []; let slave0NewData = []; if ( commonUtils.isNotEmptyArr(ableConfigs0) && commonUtils.isNotEmptyObject(addStateSlave0) && commonUtils.isEmptyArr(addStateSlave0.slave0Data) ) { const allTableData = {}; allTableData.masterData = masterData; const newSid = commonUtils.createSid(); const tableDataRowAdd = commonFunc.getDefaultData(slave0Config, allTableData, { newSid }); tableDataRowAdd.handleType = "add"; tableDataRowAdd.sId = newSid; tableDataRowAdd.sParentId = masterData && masterData.sId ? masterData.sId : null; tableDataRowAdd.key = tableDataRowAdd.sId; tableDataRowAdd.bDefault = false; tableDataRowAdd.iOrder = 1; slave0NewData.push(tableDataRowAdd); addStateSlave0.slave0Data = slave0NewData; } // if (sModelsType === 'cost/cosInsert' && commonUtils.isNotEmptyObject(addStateSlave0) && commonUtils.isNotEmptyArr(addStateSlave0.slave0Data)) { // let slave0DelData = [] // addStateSlave0.slave0Data.forEach((item) => { // item.handleType = 'del'; // slave0DelData.push(item); // }); // addStateSlave0.slave0Data = []; // // let sWorkCenterNameDropDown; // const allTableData = {}; // const master1Index = masterConfig.gdsconfigformslave.findIndex(item => item.sName === 'sWorkCenterName'); // if (master1Index > -1) { // const sqlDropDownData = await this.props.getSqlDropDownData(sModelsId, 'master', masterConfig.gdsconfigformslave[master1Index]); // sWorkCenterNameDropDown = sqlDropDownData.dropDownData; // console.log(sWorkCenterNameDropDown); // sWorkCenterNameDropDown.forEach((item) => { // const tableDataRowAdd = commonFunc.getDefaultData(slaveConfig, allTableData); // tableDataRowAdd.handleType = 'add'; // tableDataRowAdd.sId = commonUtils.createSid(); // tableDataRowAdd.sParentId = masterData && masterData.sId ? masterData.sId : null; // tableDataRowAdd.key = tableDataRowAdd.sId; // tableDataRowAdd.bDefault = false; // tableDataRowAdd.iOrder = 1; // tableDataRowAdd.sDepartName = item.sName; // item.sDepartName = item.sName; // addStateSlave0.slave0Data.push(item); // }) // } // } } let addStateSlave2 = {}; if (!commonUtils.isEmptyObject(slave2Config)) { addStateSlave2 = await this.props.handleGetDataSet({ name: "slave2", configData: slave2Config, condition: { sSqlCondition: { sParentId: sId } }, }); } let addStateSlave3 = {}; if (!commonUtils.isEmptyObject(slave3Config)) { addStateSlave3 = await this.props.handleGetDataSet({ name: "slave3", configData: slave3Config, condition: { sSqlCondition: { sParentId: sId } }, }); } let addStateSlave4 = {}; if (!commonUtils.isEmptyObject(slave4Config)) { addStateSlave4 = await this.props.handleGetDataSet({ name: "slave4", configData: slave4Config, condition: { sSqlCondition: { sParentId: sId } }, }); } let addStateSlave5 = {}; if (!commonUtils.isEmptyObject(slave5Config)) { addStateSlave5 = await this.props.handleGetDataSet({ name: "slave5", configData: slave5Config, condition: { sSqlCondition: { sParentId: sId } }, isWait: true, }); } let addStateSlave6 = {}; if (!commonUtils.isEmptyObject(slave6Config)) { addStateSlave6 = await this.props.handleGetDataSet({ name: "slave6", configData: slave6Config, condition: { sSqlCondition: { sParentId: sId } }, isWait: true, }); } let addStateSlave7 = {}; if (!commonUtils.isEmptyObject(slave7Config)) { addStateSlave7 = await this.props.handleGetDataSet({ name: "slave7", configData: slave7Config, condition: { sSqlCondition: { sParentId: sId } }, isWait: true, }); } let addStateSlave8 = {}; if (!commonUtils.isEmptyObject(slave8Config)) { addStateSlave8 = await this.props.handleGetDataSet({ name: "slave8", configData: slave8Config, condition: { sSqlCondition: { sParentId: sId } }, isWait: true, }); } let addStateSlave9 = {}; if (!commonUtils.isEmptyObject(slave9Config)) { addStateSlave9 = await this.props.handleGetDataSet({ name: "slave9", configData: slave9Config, condition: { sSqlCondition: { sParentId: sId } }, isWait: true, }); } let addStateSlave10 = {}; if (!commonUtils.isEmptyObject(slave10Config)) { addStateSlave10 = await this.props.handleGetDataSet({ name: "slave10", configData: slave10Config, condition: { sSqlCondition: { sParentId: sId } }, isWait: true, }); } this.props.onSaveState({ pageLoading: false, ...addStateSlave, ...addStateSlave0, ...addStateSlave1, ...addStateSlave2, ...addStateSlave3, ...addStateSlave4, ...addStateSlave5, ...addStateSlave6, ...addStateSlave7, ...addStateSlave8, ...addStateSlave9, ...addStateSlave10, }); }; /* 获取表数据 */ handleGetMemoData = async (slaveConfig, slave0Config, slave1Config, slave2Config, slave3Config, slave4Config) => { const { currentId } = this.props; /* 当前页签数据 */ const sId = currentId || this.props.masterData?.sId || ""; /* 数据Id */ const addStateSlave = slaveConfig ? await this.props.handleGetDataSet({ name: "slave", configData: slaveConfig, condition: { sSqlCondition: { sParentId: sId } }, isWait: true, }) : ""; const addStateSlave0 = slave0Config ? await this.props.handleGetDataSet({ name: "slave0", configData: slave0Config, condition: { sSqlCondition: { sParentId: sId } }, }) : ""; const addStateSlave1 = slave1Config ? await this.props.handleGetDataSet({ name: "slave1", configData: slave1Config, condition: { sSqlCondition: { sParentId: sId } }, isWait: true, }) : ""; const addStateslave2 = slave2Config ? await this.props.handleGetDataSet({ name: "slave2", configData: slave2Config, condition: { sSqlCondition: { sParentId: sId } }, isWait: true, }) : ""; const addStateslave3 = slave3Config ? await this.props.handleGetDataSet({ name: "slave3", configData: slave3Config, condition: { sSqlCondition: { sParentId: sId } }, isWait: true, }) : ""; const addStateslave4 = slave4Config ? await this.props.handleGetDataSet({ name: "slave4", configData: slave4Config, condition: { sSqlCondition: { sParentId: sId } }, isWait: true, }) : ""; // addStateProcess.processData = this.sortData(addStateControl.controlData, addStateProcess.processData); this.props.onSaveState({ pageLoading: false, ...addStateSlave, ...addStateSlave0, ...addStateSlave1, ...addStateslave2, ...addStateslave3, ...addStateslave4, }); }; /* 获取单张表数据 */ handleGetOneMemoData = (memoName, memoConfig) => { const { currentId } = this.props; /* 当前页签数据 */ const sId = currentId || this.props.masterData?.sId || ""; /* 数据Id */ if (commonUtils.isNotEmptyObject(sId)) { /* 解决detail数据没有问题 */ this.props.handleGetDataSet({ name: memoName, configData: memoConfig, condition: { sSqlCondition: { sParentId: sId } }, }); } }; initHandleAddNoValue = []; /** 点击新增按钮 */ handleAdd = async (config, copyTo, isWait) => { /* 外置处理业务 */ const { sModelsId, sModelsType, token, app } = this.props; if (sModelsType.includes("cashier/")) { commonUtils.setStoreDropDownData(sModelsId, "master", "sCustomerId", []); commonUtils.setStoreDropDownData(sModelsId, "master", "sCustomerNo", []); commonUtils.setStoreDropDownData(sModelsId, "master", "sCustomerName", []); commonUtils.setStoreDropDownData(sModelsId, "master", "sSupplyId", []); commonUtils.setStoreDropDownData(sModelsId, "master", "sSupplyNo", []); commonUtils.setStoreDropDownData(sModelsId, "master", "sSupplyName", []); commonUtils.setStoreDropDownData(sModelsId, "master", "sFamilyId", []); commonUtils.setStoreDropDownData(sModelsId, "master", "sFamilyNo", []); commonUtils.setStoreDropDownData(sModelsId, "master", "sFamilyName", []); } let masterConfig = commonUtils.isEmptyObject(config) ? {} : config.masterConfig; if (!isWait) { masterConfig = this.props.masterConfig; } let configNew = {}; if (commonUtils.isEmptyObject(config)) { const { slaveConfig } = this.props; configNew.slaveConfig = slaveConfig; } else { configNew = config; } let masterData = commonFunc.getDefaultData(masterConfig); masterData.handleType = "add"; masterData.sId = commonUtils.createSid(); masterData.sFormId = sModelsId; masterData.maxBillNo = "sBillNo"; /* 新增产品/印件,如果是newRecord过来的,则要获取关联的客户信息 */ if (this.props.app.currentPane.newRecordRelation !== undefined) { const addStata = this.props.app.currentPane.newRecordRelation; if (commonUtils.isNotEmptyObject(addStata) && commonUtils.isNotEmptyObject(addStata.sCustomerId)) { masterData.sCustomerId = addStata.sCustomerId; masterData.sCustomerNo = addStata.sCustomerNo; masterData.sCustomerName = addStata.sCustomerName; /* newRecord新增产品,客户不可修改 */ const ssCustomerNameIndex = masterConfig.gdsconfigformslave.findIndex(item => item.sName === "sCustomerName"); if (ssCustomerNameIndex > -1) { masterConfig.gdsconfigformslave[ssCustomerNameIndex].iTag = 1; } } } let slaveData = []; let slave1Data = []; let slave0Data = []; let slave2Data = []; let slave3Data = []; let slave4Data = []; const addstate = {}; // const slaveTotal = []; // const tableDataTotal = {}; if (commonUtils.isNotEmptyObject(copyTo)) { if (copyTo.formRoute === "/indexPage/commonListLeft") { masterData = { ...masterData, ...copyTo.masterData }; } else { const copyToMasterConfig = copyTo.config.filter(item => item.sControlName === copyTo.name); const masterAssignField = commonUtils.isNotEmptyArr(copyToMasterConfig) ? copyToMasterConfig[0].sAssignField : ""; const newCopyTo = {}; newCopyTo.master = copyTo.masterData; newCopyTo.slave = commonUtils.isEmpty(copyTo.slaveData) ? [] : copyTo.slaveData[0]; masterData = { ...masterData, ...commonFunc.getAssignFieldValue(masterAssignField, copyTo.masterData, newCopyTo) }; masterData.tGetPayDate = commonBusiness.getGeyPayDate(masterData); if (sModelsType === "semigoodsStock/matchbill") { const sConfigformId = commonUtils.isEmpty(copyTo.config[0]) ? "" : copyTo.config[0].sParentId; const sControlName = copyTo.name; const sSqlCondition = { sProductId: copyTo.slaveData[0].sProductId, sId: copyTo.masterData.sId }; const condition = { sConfigformId, sControlName, sSqlCondition }; const dataUrl = `${commonConfig.server_host}salesorder/getTmpInfo/?sModelsId=${sModelsId}`; const dataReturn = (await commonServices.postValueService(token, condition, dataUrl)).data; if (dataReturn.code === 1) { const returnData = dataReturn.dataset.rows[0]; const copyToMasterDetailConfig = copyTo.config.filter( item => item.sControlName.toLowerCase() === `${copyTo.name}.masterdetail`.toLowerCase() ); const copyToSlaveConfig = copyTo.config.filter(item => item.sControlName.toLowerCase() === `${copyTo.name}.slave`.toLowerCase()); const copyToSlaveDetailConfig = copyTo.config.filter( item => item.sControlName.toLowerCase() === `${copyTo.name}.slavedetail`.toLowerCase() ); const copyToSlave1Config = copyTo.config.filter(item => item.sControlName.toLowerCase() === `${copyTo.name}.slave1`.toLowerCase()); const copyToSlave0Config = copyTo.config.filter(item => item.sControlName.toLowerCase() === `${copyTo.name}.slave0`.toLowerCase()); const copyToSlave2Config = copyTo.config.filter(item => item.sControlName.toLowerCase() === `${copyTo.name}.slave2`.toLowerCase()); const copyToSlava3Config = copyTo.config.filter(item => item.sControlName.toLowerCase() === `${copyTo.name}.slava3`.toLowerCase()); const copyToSlava4Config = copyTo.config.filter(item => item.sControlName.toLowerCase() === `${copyTo.name}.slava4`.toLowerCase()); const masterDetailAssignField = commonUtils.isNotEmptyArr(copyToMasterDetailConfig) ? copyToMasterDetailConfig[0].sAssignField : ""; const salveDetailAssignField = commonUtils.isNotEmptyArr(copyToSlaveDetailConfig) ? copyToSlaveDetailConfig[0].sAssignField : ""; const salveAssignField = commonUtils.isNotEmptyArr(copyToSlaveConfig) ? copyToSlaveConfig[0].sAssignField : ""; const slave1AssignField = commonUtils.isNotEmptyArr(copyToSlave1Config) ? copyToSlave1Config[0].sAssignField : ""; const slave0AssignField = commonUtils.isNotEmptyArr(copyToSlave0Config) ? copyToSlave0Config[0].sAssignField : ""; const slave2AssignField = commonUtils.isNotEmptyArr(copyToSlave2Config) ? copyToSlave2Config[0].sAssignField : ""; const slave3AssignField = commonUtils.isNotEmptyArr(copyToSlava3Config) ? copyToSlava3Config[0].sAssignField : ""; const slave4AssignField = commonUtils.isNotEmptyArr(copyToSlava4Config) ? copyToSlava4Config[0].sAssignField : ""; if (commonUtils.isNotEmptyArr(returnData.master)) { masterData = { ...masterData, ...commonFunc.getAssignFieldValue(masterDetailAssignField, returnData.master[0], newCopyTo) }; } if (salveAssignField) { if (commonUtils.isNotEmptyArr(returnData.slave)) { returnData.slave.forEach(slaveItem => { newCopyTo.slave = slaveItem; const newSid = commonUtils.createSid(); let slaveRow = commonFunc.getDefaultData(config.slaveConfig, newCopyTo, { newSid }); // 取默认值 slaveRow = { ...slaveRow, ...commonFunc.getAssignFieldValue(salveDetailAssignField, copyTo.masterData, newCopyTo) }; slaveRow = { ...slaveRow, ...commonFunc.getAssignFieldValue(salveAssignField, slaveItem, newCopyTo) }; // 取赋值字段 slaveRow.handleType = "add"; slaveRow.sId = newSid; slaveRow.sParentId = masterData.sId; slaveData.push(slaveRow); }); } } if (slave0AssignField) { if (commonUtils.isNotEmptyArr(returnData.slave0)) { returnData.slave0.forEach(slave0Item => { newCopyTo.slave0 = slave0Item; const newSid = commonUtils.createSid(); let slave0Row = commonFunc.getDefaultData(config.slave0Config, newCopyTo, { newSid }); // 取默认值 slave0Row = { ...slave0Row, ...commonFunc.getAssignFieldValue(slave0AssignField, slave0Item, newCopyTo) }; // 取赋值字段 slave0Row.handleType = "add"; slave0Row.sId = newSid; slave0Row.sParentId = masterData.sId; slave0Data.push(slave0Row); }); } } if (slave1AssignField) { if (commonUtils.isNotEmptyArr(returnData.slave1)) { returnData.slave1.forEach(slave1Item => { newCopyTo.slave1 = slave1Item; const newSid = commonUtils.createSid(); let slave1Row = commonFunc.getDefaultData(config.slave1Config, newCopyTo, { newSid }); // 取默认值 slave1Row = { ...slave1Row, ...commonFunc.getAssignFieldValue(slave1AssignField, slave1Item, newCopyTo) }; // 取赋值字段 slave1Row.handleType = "add"; slave1Row.sId = newSid; slave1Row.sParentId = masterData.sId; slave1Data.push(slave1Row); }); } } if (slave2AssignField) { if (commonUtils.isNotEmptyArr(returnData.slave2)) { returnData.slave2.forEach(slave2Item => { newCopyTo.slave2 = slave2Item; const newSid = commonUtils.createSid(); let slave2Row = commonFunc.getDefaultData(config.slave2Config, newCopyTo, { newSid }); // 取默认值 slave2Row = { ...slave2Row, ...commonFunc.getAssignFieldValue(slave2AssignField, slave2Item, newCopyTo) }; // 取赋值字段 slave2Row.handleType = "add"; slave2Row.sId = newSid; slave2Row.sParentId = masterData.sId; slave2Data.push(slave2Row); }); } } if (slave3AssignField) { if (commonUtils.isNotEmptyArr(returnData.slave3)) { returnData.slave3.forEach(slave3Item => { newCopyTo.slave3 = slave3Item; const newSid = commonUtils.createSid(); let slave3Row = commonFunc.getDefaultData(config.slave3Config, newCopyTo, { newSid }); // 取默认值 slave3Row = { ...slave3Row, ...commonFunc.getAssignFieldValue(slave3AssignField, slave3Item, newCopyTo) }; // 取赋值字段 slave3Row.handleType = "add"; slave3Row.sId = newSid; slave3Row.sParentId = masterData.sId; slave3Data.push(slave3Row); }); } } if (slave4AssignField) { if (commonUtils.isNotEmptyArr(returnData.slave4)) { returnData.slave4.forEach(slave4Item => { newCopyTo.slave4 = slave4Item; const newSid = commonUtils.createSid(); let slave4Row = commonFunc.getDefaultData(config.slave4Config, newCopyTo, { newSid }); // 取默认值 slave4Row = { ...slave4Row, ...commonFunc.getAssignFieldValue(slave4AssignField, slave4Item, newCopyTo) }; // 取赋值字段 slave4Row.handleType = "add"; slave4Row.sId = newSid; slave4Row.sParentId = masterData.sId; slave4Data.push(slave4Row); }); } } } else { this.props.getServiceError(dataReturn); } } else if ( false && commonUtils.isNotEmptyArr(copyTo.config) && copyTo.config.filter(item => item.sControlName && item.sControlName.includes("TmpInfoBySql")).length > 1 ) { const sTmpInfoConfig = copyTo.config.filter(item => item.sControlName && item.sControlName.includes("TmpInfoBySql"))[0]; const sControlName = sTmpInfoConfig.sControlName; const dataUrl = `${commonConfig.server_host}salesorder/getTmpInfoBySql/?sModelsId=${sModelsId}`; const sConfigformId = commonUtils.isEmpty(sTmpInfoConfig) ? "" : sTmpInfoConfig.sParentId; if (commonUtils.isNotEmptyArr(copyTo.slaveData)) { const sRowData = copyTo.slaveData; const condition = { sConfigformId, sControlName, sRowData }; const dataReturn = (await commonServices.postValueService(token, condition, dataUrl)).data; if (dataReturn.code === 1) { const returnData = dataReturn.dataset.rows[0]; const copyToMasterDetailConfig = copyTo.config.filter( item => item.sControlName.toLowerCase() === `${copyTo.name}.master`.toLowerCase() ); const copyToMasterConfig = copyTo.config.filter(item => item.sControlName.toLowerCase() === `${copyTo.name}`.toLowerCase()); const copyToSlaveConfig = copyTo.config.filter(item => item.sControlName.toLowerCase() === `${copyTo.name}.slave`.toLowerCase()); const copyToSlaveDetailConfig = copyTo.config.filter( item => item.sControlName.toLowerCase() === `${copyTo.name}.slavedetail`.toLowerCase() ); const copyToSlave1Config = copyTo.config.filter(item => item.sControlName.toLowerCase() === `${copyTo.name}.slave1`.toLowerCase()); const copyToSlave0Config = copyTo.config.filter(item => item.sControlName.toLowerCase() === `${copyTo.name}.slave0`.toLowerCase()); const copyToSlave2Config = copyTo.config.filter(item => item.sControlName.toLowerCase() === `${copyTo.name}.slave2`.toLowerCase()); const copyToSlava3Config = copyTo.config.filter(item => item.sControlName.toLowerCase() === `${copyTo.name}.slava3`.toLowerCase()); const copyToSlava4Config = copyTo.config.filter(item => item.sControlName.toLowerCase() === `${copyTo.name}.slava4`.toLowerCase()); const masterDetailAssignField = commonUtils.isNotEmptyArr(copyToMasterDetailConfig) ? copyToMasterDetailConfig[0].sAssignField : ""; const masterAssignField = commonUtils.isNotEmptyArr(copyToMasterConfig) ? copyToMasterConfig[0].sAssignField : ""; const salveDetailAssignField = commonUtils.isNotEmptyArr(copyToSlaveDetailConfig) ? copyToSlaveDetailConfig[0].sAssignField : ""; const salveAssignField = commonUtils.isNotEmptyArr(copyToSlaveConfig) ? copyToSlaveConfig[0].sAssignField : ""; const slave1AssignField = commonUtils.isNotEmptyArr(copyToSlave1Config) ? copyToSlave1Config[0].sAssignField : ""; const slave0AssignField = commonUtils.isNotEmptyArr(copyToSlave0Config) ? copyToSlave0Config[0].sAssignField : ""; const slave2AssignField = commonUtils.isNotEmptyArr(copyToSlave2Config) ? copyToSlave2Config[0].sAssignField : ""; const slave3AssignField = commonUtils.isNotEmptyArr(copyToSlava3Config) ? copyToSlava3Config[0].sAssignField : ""; const slave4AssignField = commonUtils.isNotEmptyArr(copyToSlava4Config) ? copyToSlava4Config[0].sAssignField : ""; if (commonUtils.isNotEmptyArr(returnData.TmpInfoBySql) && masterAssignField) { masterData = { ...masterData, ...commonFunc.getAssignFieldValue(masterAssignField, returnData.TmpInfoBySql[0], newCopyTo) }; } if (commonUtils.isNotEmptyArr(returnData.master) && masterDetailAssignField) { masterData = { ...masterData, ...commonFunc.getAssignFieldValue(masterDetailAssignField, returnData.master[0], newCopyTo) }; } if (commonUtils.isNotEmptyArr(returnData.slave)) { returnData.slave.forEach(slaveItem => { newCopyTo.slave = slaveItem; const newSid = commonUtils.createSid(); let slaveRow = commonFunc.getDefaultData(config.slaveConfig, newCopyTo, { newSid }); // 取默认值 if (salveDetailAssignField) { slaveRow = { ...slaveRow, ...commonFunc.getAssignFieldValue(salveDetailAssignField, copyTo.masterData, newCopyTo) }; } else if (salveAssignField) { slaveRow = { ...slaveRow, ...commonFunc.getAssignFieldValue(salveAssignField, slaveItem, newCopyTo) }; // 取赋值字段 } slaveRow.handleType = "add"; slaveRow.sId = newSid; slaveRow.sParentId = masterData.sId; slaveData.push(slaveRow); }); } if (commonUtils.isNotEmptyArr(returnData.slave0)) { returnData.slave0.forEach(slave0Item => { newCopyTo.slave0 = slave0Item; const newSid = commonUtils.createSid(); let slave0Row = commonFunc.getDefaultData(config.slave0Config, newCopyTo, { newSid }); // 取默认值 slave0Row = { ...slave0Row, ...commonFunc.getAssignFieldValue(slave0AssignField, slave0Item, newCopyTo) }; // 取赋值字段 slave0Row.handleType = "add"; slave0Row.sId = newSid; slave0Row.sParentId = masterData.sId; slave0Data.push(slave0Row); }); } if (commonUtils.isNotEmptyArr(returnData.slave1)) { returnData.slave1.forEach(slave1Item => { newCopyTo.slave1 = slave1Item; const newSid = commonUtils.createSid(); let slave1Row = commonFunc.getDefaultData(config.slave1Config, newCopyTo, { newSid }); // 取默认值 slave1Row = { ...slave1Row, ...commonFunc.getAssignFieldValue(slave1AssignField, slave1Item, newCopyTo) }; // 取赋值字段 slave1Row.handleType = "add"; slave1Row.sId = newSid; slave1Row.sParentId = masterData.sId; slave1Data.push(slave1Row); }); } if (commonUtils.isNotEmptyArr(returnData.slave2)) { returnData.slave2.forEach(slave2Item => { newCopyTo.slave2 = slave2Item; const newSid = commonUtils.createSid(); let slave2Row = commonFunc.getDefaultData(config.slave2Config, newCopyTo, { newSid }); // 取默认值 slave2Row = { ...slave2Row, ...commonFunc.getAssignFieldValue(slave2AssignField, slave2Item, newCopyTo) }; // 取赋值字段 slave2Row.handleType = "add"; slave2Row.sId = newSid; slave2Row.sParentId = masterData.sId; slave2Data.push(slave2Row); }); } if (commonUtils.isNotEmptyArr(returnData.slave3)) { returnData.slave3.forEach(slave3Item => { newCopyTo.slave3 = slave3Item; const newSid = commonUtils.createSid(); let slave3Row = commonFunc.getDefaultData(config.slave3Config, newCopyTo, { newSid }); // 取默认值 slave3Row = { ...slave3Row, ...commonFunc.getAssignFieldValue(slave3AssignField, slave3Item, newCopyTo) }; // 取赋值字段 slave3Row.handleType = "add"; slave3Row.sId = newSid; slave3Row.sParentId = masterData.sId; slave3Data.push(slave3Row); }); } if (commonUtils.isNotEmptyArr(returnData.slave4)) { returnData.slave4.forEach(slave4Item => { newCopyTo.slave4 = slave4Item; const newSid = commonUtils.createSid(); let slave4Row = commonFunc.getDefaultData(config.slave4Config, newCopyTo, { newSid }); // 取默认值 slave4Row = { ...slave4Row, ...commonFunc.getAssignFieldValue(slave4AssignField, slave4Item, newCopyTo) }; // 取赋值字段 slave4Row.handleType = "add"; slave4Row.sId = newSid; slave4Row.sParentId = masterData.sId; slave4Data.push(slave4Row); }); } } else { this.props.getServiceError(dataReturn); } } else { message.error("请正确配置参数!"); } } else { /* 走copyTo数据源 */ const returnData = { masterData: copyTo.masterData, slave: commonUtils.isNotEmptyArr(copyTo.slaveData) ? copyTo.slaveData : [], slave0: commonUtils.isNotEmptyArr(copyTo.slave0Data) ? copyTo.slave0Data : [], slave1: commonUtils.isNotEmptyArr(copyTo.slave1Data) ? copyTo.slave1Data : [], slave2: commonUtils.isNotEmptyArr(copyTo.slave2Data) ? copyTo.slave2Data : [], slave3: commonUtils.isNotEmptyArr(copyTo.slave3Data) ? copyTo.slave3Data : [], slave4: commonUtils.isNotEmptyArr(copyTo.slave4Data) ? copyTo.slave4Data : [], }; const copyToMasterDetailConfig = copyTo.config.filter(item => item.sControlName.toLowerCase() === `${copyTo.name}`.toLowerCase()); const copyToSlaveConfig = copyTo.config.filter(item => item.sControlName.toLowerCase() === `${copyTo.name}.slave`.toLowerCase()); const copyToSlaveDetailConfig = copyTo.config.filter( item => item.sControlName.toLowerCase() === `${copyTo.name}.slavedetail`.toLowerCase() ); const copyToSlave1Config = copyTo.config.filter(item => item.sControlName.toLowerCase() === `${copyTo.name}.slave1`.toLowerCase()); const copyToSlave0Config = copyTo.config.filter(item => item.sControlName.toLowerCase() === `${copyTo.name}.slave0`.toLowerCase()); const copyToSlave2Config = copyTo.config.filter(item => item.sControlName.toLowerCase() === `${copyTo.name}.slave2`.toLowerCase()); const copyToSlava3Config = copyTo.config.filter(item => item.sControlName.toLowerCase() === `${copyTo.name}.slave3`.toLowerCase()); const copyToSlava4Config = copyTo.config.filter(item => item.sControlName.toLowerCase() === `${copyTo.name}.slave4`.toLowerCase()); const masterDetailAssignField = commonUtils.isNotEmptyArr(copyToMasterDetailConfig) ? copyToMasterDetailConfig[0].sAssignField : ""; const salveDetailAssignField = commonUtils.isNotEmptyArr(copyToSlaveDetailConfig) ? copyToSlaveDetailConfig[0].sAssignField : ""; const salveAssignField = commonUtils.isNotEmptyArr(copyToSlaveConfig) ? copyToSlaveConfig[0].sAssignField : ""; const slave1AssignField = commonUtils.isNotEmptyArr(copyToSlave1Config) ? copyToSlave1Config[0].sAssignField : ""; const slave0AssignField = commonUtils.isNotEmptyArr(copyToSlave0Config) ? copyToSlave0Config[0].sAssignField : ""; const slave2AssignField = commonUtils.isNotEmptyArr(copyToSlave2Config) ? copyToSlave2Config[0].sAssignField : ""; const slave3AssignField = commonUtils.isNotEmptyArr(copyToSlava3Config) ? copyToSlava3Config[0].sAssignField : ""; const slave4AssignField = commonUtils.isNotEmptyArr(copyToSlava4Config) ? copyToSlava4Config[0].sAssignField : ""; if (commonUtils.isNotEmptyArr(returnData.master)) { masterData = { ...masterData, ...commonFunc.getAssignFieldValue(masterDetailAssignField, returnData.master[0], newCopyTo) }; } if (salveAssignField) { if (commonUtils.isNotEmptyArr(returnData.slave)) { returnData.slave.forEach(slaveItem => { newCopyTo.slave = slaveItem; const newSid = commonUtils.createSid(); let slaveRow = commonFunc.getDefaultData(config.slaveConfig, newCopyTo, { newSid }); // 取默认值 slaveRow = { ...slaveRow, ...commonFunc.getAssignFieldValue(salveDetailAssignField, copyTo.masterData, newCopyTo) }; slaveRow = { ...slaveRow, ...commonFunc.getAssignFieldValue(salveAssignField, slaveItem, newCopyTo) }; // 取赋值字段 if ( (!commonUtils.isEmpty(slaveRow.dProductQty) && slaveRow.dProductQty !== slaveRow.dSrcQty) || (!commonUtils.isEmpty(slaveRow.dAuxiliaryQty) && slaveRow.dAuxiliaryQty !== slaveRow.dSrcAuxiliaryQty) ) { let models = sModelsType.includes("sales/") || sModelsType.includes("manufacture/") || sModelsType.includes("productStock/") ? "Product" : "Materials"; let sFieldName = sModelsType.includes("sales/") || sModelsType.includes("manufacture/") || sModelsType.includes("productStock/") ? "dProductQty" : "dAuxiliaryQty"; /* 20210901标板问题 未清新增时,材料销售模块需要用换算数量进行业务计算 */ if (sModelsType.includes("sales/materials") || sModelsType === "sales/salesCheck") { /* 如果是材料销售模块/销售对账 如果是材料 则用换算数量*单价 算金额 */ slaveRow.dAuxiliaryQty = slaveRow.dProductQty; /* 材料逻辑计算 */ if ( commonUtils.isNotEmptyNumber("dMaterialsQty") && slaveRow.dMaterialsQty !== 0 && commonUtils.isNotEmptyObject(slaveRow.sMaterialsUnit) ) { let modelsNew = ""; if (models === "Product") { /* 计算前将Product替换为Materials */ modelsNew = "Materials"; const dCurrencyRate = commonUtils.convertIsNotNumToNumber1(masterData.dCurrencyRate); /* 汇率 */ const { dNetPrice } = app.decimals; const dForeignPrice = slaveRow[`d${models}ForeignPrice`]; if (commonUtils.isNotEmptyNumber(dForeignPrice)) { /* 只有外币单价情況下 要算本位币单价 */ const dProductPrice = commonUtils.convertFixNum(dForeignPrice * dCurrencyRate, dNetPrice); slaveRow[`d${models}Price`] = dProductPrice; } slaveRow[`dN${modelsNew}Price`] = slaveRow[`d${models}ForeignPrice`]; slaveRow[`d${modelsNew}ForeignPrice`] = slaveRow[`d${models}ForeignPrice`]; slaveRow[`d${modelsNew}Price`] = slaveRow[`d${models}Price`]; slaveRow[`dN${modelsNew}Money`] = slaveRow[`dN${models}Price`]; slaveRow[`dN${modelsNew}Money`] = slaveRow[`d${models}ForeignMoney`]; slaveRow[`d${modelsNew}ForeignMoney`] = slaveRow[`d${models}ForeignMoney`]; slaveRow[`d${modelsNew}Money`] = slaveRow[`d${models}Money`]; slaveRow.bSalesMaterials = true; /* 材料销售 销售对账 材料计算 */ models = "Materials"; sFieldName = commonUtils.isNotEmptyObject(sFieldName) ? sFieldName.replace("Product", "Materials") : sFieldName; } } } slaveRow = commonBusiness.getCalculateAllMoney(app, models, sFieldName, masterData, slaveRow); } slaveRow.handleType = "add"; slaveRow.sId = newSid; slaveRow.sParentId = masterData.sId; slaveData.push(slaveRow); }); } } if (slave0AssignField) { if (commonUtils.isNotEmptyArr(returnData.slave0)) { returnData.slave0.forEach(slave0Item => { newCopyTo.slave0 = slave0Item; const newSid = commonUtils.createSid(); let slave0Row = commonFunc.getDefaultData(config.slave0Config, newCopyTo, { newSid }); // 取默认值 slave0Row = { ...slave0Row, ...commonFunc.getAssignFieldValue(slave0AssignField, slave0Item, newCopyTo) }; // 取赋值字段 slave0Row.handleType = "add"; slave0Row.sId = newSid; slave0Row.sParentId = masterData.sId; slave0Data.push(slave0Row); }); } } if (slave1AssignField) { if (commonUtils.isNotEmptyArr(returnData.slave1)) { returnData.slave1.forEach(slave1Item => { newCopyTo.slave1 = slave1Item; const newSid = commonUtils.createSid(); let slave1Row = commonFunc.getDefaultData(config.slave1Config, newCopyTo, { newSid }); // 取默认值 slave1Row = { ...slave1Row, ...commonFunc.getAssignFieldValue(slave1AssignField, slave1Item, newCopyTo) }; // 取赋值字段 slave1Row.handleType = "add"; slave1Row.sId = newSid; slave1Row.sParentId = masterData.sId; slave1Data.push(slave1Row); }); } } if (slave2AssignField) { if (commonUtils.isNotEmptyArr(returnData.slave2)) { returnData.slave2.forEach(slave2Item => { newCopyTo.slave2 = slave2Item; const newSid = commonUtils.createSid(); let slave2Row = commonFunc.getDefaultData(config.slave2Config, newCopyTo, { newSid }); // 取默认值 slave2Row = { ...slave2Row, ...commonFunc.getAssignFieldValue(slave2AssignField, slave2Item, newCopyTo) }; // 取赋值字段 slave2Row.handleType = "add"; slave2Row.sId = newSid; slave2Row.sParentId = masterData.sId; slave2Data.push(slave2Row); }); } } if (slave3AssignField) { if (commonUtils.isNotEmptyArr(returnData.slave3)) { returnData.slave3.forEach(slave3Item => { newCopyTo.slave3 = slave3Item; const newSid = commonUtils.createSid(); let slave3Row = commonFunc.getDefaultData(config.slave3Config, newCopyTo, { newSid }); // 取默认值 slave3Row = { ...slave3Row, ...commonFunc.getAssignFieldValue(slave3AssignField, slave3Item, newCopyTo) }; // 取赋值字段 slave3Row.handleType = "add"; slave3Row.sId = newSid; slave3Row.sParentId = masterData.sId; slave3Data.push(slave3Row); }); } } if (slave4AssignField) { if (commonUtils.isNotEmptyArr(returnData.slave4)) { returnData.slave4.forEach(slave4Item => { newCopyTo.slave4 = slave4Item; const newSid = commonUtils.createSid(); let slave4Row = commonFunc.getDefaultData(config.slave4Config, newCopyTo, { newSid }); // 取默认值 slave4Row = { ...slave4Row, ...commonFunc.getAssignFieldValue(slave4AssignField, slave4Item, newCopyTo) }; // 取赋值字段 slave4Row.handleType = "add"; slave4Row.sId = newSid; slave4Row.sParentId = masterData.sId; slave4Data.push(slave4Row); }); } } } } } // /* 剔除订单到收款单新增空行 */ let bUpload = false; /* 图片文件不要新增空行 */ if (commonUtils.isNotEmptyObject(configNew.slaveConfig)) { const filterData = configNew.slaveConfig.gdsconfigformslave.filter(item => item.sControlName.includes("BtnUpload") && item.bVisible); if (commonUtils.isNotEmptyArr(filterData) && filterData.length > 0) { bUpload = true; } } if ( slaveData.length === 0 && !bUpload && commonUtils.isNotEmptyObject(configNew.slaveConfig) && this.props.sModelsType !== "cashier/receipt" && this.props.sModelsType !== "cashier/payment" ) { this.initHandleAddNoValue = [...new Set([...this.initHandleAddNoValue, ""])]; const allTableData = {}; allTableData.master = masterData; allTableData.slave = slaveData; const newSid = commonUtils.createSid(); const tableDataRowAdd = commonFunc.getDefaultData(configNew.slaveConfig, allTableData, { newSid }); tableDataRowAdd.handleType = "add"; tableDataRowAdd.sId = newSid; tableDataRowAdd.sParentId = masterData && masterData.sId ? masterData.sId : null; tableDataRowAdd.key = tableDataRowAdd.sId; tableDataRowAdd.bDefault = false; tableDataRowAdd.iOrder = 1; slaveData.push(tableDataRowAdd); } if (false && commonUtils.isNotEmptyObject(configNew)) { for (const key of Object.keys(configNew)) { if (key.includes("Config") && !key.includes("onGet") && !key.includes("report")) { const tablename = key.replace("Config", "").trim(); let tableData = []; if (tablename !== "slave" && tablename !== "master") { this.initHandleAddNoValue = [...new Set([...this.initHandleAddNoValue, 0])]; const allTableData = {}; allTableData.master = masterData; allTableData.slave = slaveData; const newSid = commonUtils.createSid(); const tableDataRowAdd = {}; tableDataRowAdd.handleType = "add"; tableDataRowAdd.sId = newSid; tableDataRowAdd.sParentId = masterData && masterData.sId ? masterData.sId : null; tableDataRowAdd.key = tableDataRowAdd.sId; tableDataRowAdd.bDefault = false; tableDataRowAdd.iOrder = 1; tableData.push(tableDataRowAdd); addstate[`${tablename}Data`] = tableData; } } } } if (commonUtils.isNotEmptyObject(copyTo) && copyTo.masterData) { /* 重新塞入copyTo.masterData */ copyTo.masterData = masterData; } if (commonUtils.isNotEmptyObject(copyTo) && copyTo.masterData) { /* 重新塞入copyTo.masterData */ copyTo.masterData = masterData; } const { slaveConfig, slave0Config, slave1Config, slave2Config, slave3Config, slave4Config } = this.props; if (commonUtils.isNotEmptyObject(slaveConfig) && slaveConfig.bGrdVisible) { const bEmptyAddLine = slaveConfig.gdsconfigformslave.find(item => item.sControlName === "bEmptyAddLine"); if (commonUtils.isNotEmptyObject(bEmptyAddLine) && bEmptyAddLine.bVisible) { slaveData = []; } } if (commonUtils.isNotEmptyObject(slave0Config) && slave0Config.bGrdVisible) { const bEmptyAddLine = slave0Config.gdsconfigformslave.find(item => item.sControlName === "bEmptyAddLine"); if (commonUtils.isNotEmptyObject(bEmptyAddLine) && bEmptyAddLine.bVisible) { slave0Data = []; } } if (commonUtils.isNotEmptyObject(slave1Config) && slave1Config.bGrdVisible) { const bEmptyAddLine = slave1Config.gdsconfigformslave.find(item => item.sControlName === "bEmptyAddLine"); if (commonUtils.isNotEmptyObject(bEmptyAddLine) && bEmptyAddLine.bVisible) { slave1Data = []; } } if (commonUtils.isNotEmptyObject(slave2Config) && slave2Config.bGrdVisible) { const bEmptyAddLine = slave2Config.gdsconfigformslave.find(item => item.sControlName === "bEmptyAddLine"); if (commonUtils.isNotEmptyObject(bEmptyAddLine) && bEmptyAddLine.bVisible) { slave2Data = []; } } if (commonUtils.isNotEmptyObject(slave3Config) && slave3Config.bGrdVisible) { const bEmptyAddLine = slave3Config.gdsconfigformslave.find(item => item.sControlName === "bEmptyAddLine"); if (commonUtils.isNotEmptyObject(bEmptyAddLine) && bEmptyAddLine.bVisible) { slave3Data = []; } } if (commonUtils.isNotEmptyObject(slave4Config) && slave4Config.bGrdVisible) { const bEmptyAddLine = slave4Config.gdsconfigformslave.find(item => item.sControlName === "bEmptyAddLine"); if (commonUtils.isNotEmptyObject(bEmptyAddLine) && bEmptyAddLine.bVisible) { slave4Data = []; } } new Array(6).fill("").forEach((_, index) => { const num = index + 5; const config = this.props[`slave${num}Config`]; if (commonUtils.isNotEmptyArr(config)) { addstate[`slave${num}Data`] = []; } }); const { slavePagination = {} } = this.props; const slavePaginationNew = { ...slavePagination, total: commonUtils.isEmptyArr(slaveData) ? 0 : slaveData.length, current: 999, }; masterData.enabled = true; const state = { masterData, slaveData, // slavePagination: slavePaginationNew, slaveTotal: [], slaveSelectedRowKeys: [], slave1SelectedRowKeys: [], searchUpDownData: {}, enabled: true, slave0Data, slave1Data, slave2Data, slave3Data, slave4Data, processSelectedRowKeys: [], controlSelectedRowKeys: [], slave0SelectedRowKeys: [], ...addstate, }; state.sUseInfo = ""; if (isWait) { return state; } else { this.props.onSaveState(state); return true; } }; /** 点击修改按钮操作 */ handleEdit = async () => { const { masterConfig, slaveConfig, slave0Config, slave1Config, slave2Config, slave3Config, slave4Config, currentId, app, masterData, dispatch, } = this.props; const { userinfo, systemData } = app; const { sMakePerson } = masterData; /* 本单据制单人 */ const { sUserName, sType } = userinfo; /* 登录用户 */ const iIndex = systemData.findIndex(item => item.sName === "CkxModifyBillNoMakePerson"); if (iIndex > -1) { const sValue = systemData[iIndex].sValue; if (sValue === "0") { /* 系统未启用非制单人修改单据,普通用户非制单人不可以修改制单人的单据 */ if (sType !== "sysadmin" && sUserName !== sMakePerson) { message.error(commonFunc.showMessage(app.commonConst, "NoUpdateByNoMakePerson")); this.props.onSaveState({ loading: false, }); return; } } } this.props.app.webSocket.onmessageTmp = async msg => { const rtmsg = JSON.parse(msg.data); if (rtmsg.action === "showMsg") { message.warning(rtmsg.msg); this.props.onSaveState({ loading: false }); } else if (rtmsg.action === "update") { await this.handleGetData(masterConfig, slaveConfig, slave0Config, slave1Config, slave2Config, slave3Config, slave4Config, "update"); this.props.onSaveState({ enabled: true, loading: false }); } }; this.props.handleSendSocketMessage("update", "showMsg", currentId, userinfo.sId, null, null); }; /** 表单回带 */ handleForm = form => { this.form = form; }; /** toolbar审核(消审) */ handleAudit = async flag => { /* 待用数据声明 */ let bResult = true; const { masterData, app } = this.props; /* 作废订单不能审核 */ if (masterData.bInvalid) { message.warning(commonFunc.showMessage(app.commonConst, "sToVoid")); this.props.onSaveState({ loading: false, }); return ""; } /** 数据审核 */ bResult = await this.dataAudit(flag); return bResult; }; /** 数据审核 */ dataAudit = async (flag, tmpCheck, isWait) => { message.destroy(); /* 待用数据声明 */ const { sModelsId, masterData, app, masterConfig, slaveConfig, slave2Config, slave1Config, token, sModelsType, slave4Config, slave0Config, slave3Config, slaveData, orderDetailConfig, } = this.props; const sSlaveIdArray = []; if (commonUtils.isNotEmptyArr(slaveData)) { slaveData.forEach(item => { sSlaveIdArray.push(commonUtils.isNotEmptyObject(item.sId) ? item.sId : item.sSlaveId); }); } const slaveId = sSlaveIdArray.toString(); /* 数据参数 */ const value = { sClientType: "1", paramsMap: { iFlag: flag, iTmpCheck: commonUtils.isEmptyNumber(tmpCheck) ? 0 : tmpCheck, sFormGuid: sModelsId, sGuid: masterData.sId, sSlaveId: slaveId, sBillNo: commonUtils.isNotEmptyObject(masterData.sBillNo) ? masterData.sBillNo : "", }, }; let clearFlag = false; if (sModelsType === "sales/salesOrder" || sModelsType === "manufacture/workOrder") { for (const item of slaveData) { if (commonUtils.isNotEmptyStr(item.sProductInfo)) { clearFlag = true; break; } } } /* 数据审核 */ const url = `${commonConfig.server_host}business/doExamine?sModelsId=${sModelsId}`; const returnData = (await commonServices.postValueService(app.token, value, url)).data; if (isWait) { return returnData; } else { /* 接收返回值 */ await this.handleGetData(masterConfig, slaveConfig, slave0Config, slave1Config, slave2Config, slave3Config, slave4Config); const check = commonFunc.showMessage(app.commonConst, "BtnExamine"); /* 审核 */ const BtnCancelExamine = commonFunc.showMessage(app.commonConst, "BtnCancelExamine"); /* 销审 */ if ((sModelsType === "sales/salesOrder" || sModelsType === "manufacture/workOrder3") && !commonUtils.isEmpty(slave3Config)) { await this.handleGetMemoData(slave4Config, slave0Config, slave3Config); } else if (sModelsType === "purchase/purchaseOrder") { await this.handleGetOneMemoData("orderDetail", orderDetailConfig); } if (this.props.app.currentPane.refresh !== undefined) { this.props.app.currentPane.refresh(); } if (returnData.code === 1) { /* 成功 */ this.props.onSaveState({ loading: false, }); if (flag === 1) { /* 审核 */ if (clearFlag && (sModelsType === "sales/salesOrder" || sModelsType === "manufacture/workOrder")) { commonUtils.setStoreDropDownData(sModelsId, "master", "sProductId", []); commonUtils.setStoreDropDownData(sModelsId, "master", "sProductNo", []); commonUtils.setStoreDropDownData(sModelsId, "master", "sProductName", []); } const { outData } = returnData.dataset.rows[0].dataSet; if (commonUtils.isNotEmptyStr(outData[0].sReturn)) { const sReturnArray = outData[0].sReturn.split("|"); if (outData[0].sReturn.split("-").length < 2) { // 正常业务提示,非审核模板 // if (this.props.app.currentPane.refresh !== undefined) { // this.props.app.currentPane.refresh(); // } message.error(check + outData[0].sReturn); return; } const checkConditions = []; let checkPersonData = {}; sReturnArray.forEach(item => { const checkCondition = item.split("-")[2]; checkConditions.push({ key: commonUtils.createSid(), condition: checkCondition, }); }); const sCheckModelId = sReturnArray[0].split("-")[1]; if (commonUtils.isNotEmptyStr(sCheckModelId)) { const urlCheck = `${commonConfig.server_host}checkModel/getUserListByModelId/${sCheckModelId}?sModelsId=${sModelsId}`; const dataReturn = (await commonServices.getService(token, urlCheck)).data; if (dataReturn.code === 1) { checkPersonData = dataReturn.dataset.rows; checkPersonData.forEach(item => { item.key = commonUtils.createSid(); }); this.props.onSaveState({ checkConditions, checkPersonData, sCheckModelId, visible: true, }); } else { /* 失败 */ this.props.getServiceError({ msg: check + dataReturn }); } } } else { message.success(check + returnData.msg); } } else { /* 消审 */ const { outData } = returnData.dataset.rows[0].dataSet; if (commonUtils.isNotEmptyStr(outData[0].sReturn)) { message.error(outData[0].sReturn); } else { // if (this.props.app.currentPane.refresh !== undefined) { // this.props.app.currentPane.refresh(); // } message.success(BtnCancelExamine + returnData.msg); } } } else if (returnData.code === -8) { Modal.info({ title: "温馨提示:", content:
{this.handleGetMsg(returnData.msg)}
, okText: "确认", onOk() {}, }); this.props.onSaveState({ loading: false, }); return false; } else { /* 失败 */ this.props.getServiceError(returnData); this.props.onSaveState({ loading: false, }); return false; } return true; } }; /** toolbar保存 */ handleSaveData = async params => { const { token, sModelsId, currentId, masterData, masterConfig, slaveConfig, slave1Config, billnosetting, app, // eslint-disable-next-line no-unused-vars sModelsType, // eslint-disable-next-line no-unused-vars slave0Config, // eslint-disable-next-line no-unused-vars slave2Config, // eslint-disable-next-line no-unused-vars slave3Config, // eslint-disable-next-line no-unused-vars slave4Config, slave5Config, slave6Config, slave7Config, slave8Config, slave9Config, slave10Config, dispatch, } = this.props; const { userinfo } = app; const { copyTo } = app.currentPane; const onSendSocketMessage = this.props.handleSendSocketMessage; const BtnSave = commonFunc.showMessage(app.commonConst, "BtnSave"); /* 保存 */ params.optName = BtnSave; // params.data.forEach(item=>{ // item.column?.forEach(col=>{ // if(col.isSettingFunctions) { // if(col.iOrder > 10 ) { // const i = Math.floor(col.iOrder / 10) // col.iOrder = this.props.slaveData[i - 1].iOrder // } else { // col.iOrder = 1; // } // } // }) // }) const tableData = this.props.slaveData?.sort((a, b) => { const hasA = a.hasOwnProperty("sName") && a.sName != null; const hasB = b.hasOwnProperty("sName") && b.sName != null; if (hasA && !hasB) return -1; if (!hasA && hasB) return 1; // 2. bVisible 为 true 的在前 const visA = a.bVisible === true; const visB = b.bVisible === true; if (visA && !visB) return -1; if (!visA && visB) return 1; // 3. 最后按 iOrder 升序 return a.iOrder - b.iOrder; }); params.data.forEach(item=>{ if (item.name === "slave") { const isSettingFunctions = item.column.some(col => col.isSettingFunctions); if (isSettingFunctions) { item.column = tableData.map((col,i) => { col.iOrder =( i + 1 )* 10; col.handleType = col.handleType || "update"; return col }); } } }) const returnData = await commonBusiness.saveData({ token, value: params, sModelsId }); if (commonUtils.isNotEmptyObject(returnData)) { if (commonUtils.isNotEmptyObject(copyTo)) { const sIdArray = []; if (commonUtils.isNotEmptyArr(copyTo.slaveData)) { const { slaveData } = copyTo; slaveData.forEach(item => { const redisKey = item.sSlaveId; sIdArray.push(redisKey); }); } /* 处理只有单主表解锁问题 */ if (commonUtils.isNotEmptyObject(masterData) && commonUtils.isNotEmptyObject(masterData.sSrcSlaveId)) { sIdArray.push(masterData.sSrcSlaveId); } const sId = sIdArray.toString(); onSendSocketMessage("copyfinish", "noAction", sId, userinfo.sId, null, null); } onSendSocketMessage("release", "noAction", currentId, userinfo.sId, null, null); this.props.onSaveState({ enabled: false, currentId: masterData.sId, }); // 保存后更新panes,currentPane的checkedId,防止浏览器刷新时重新又变成新增。 const iPaneIndex = app.panes.findIndex(item => item.key === app.currentPane.key); app.panes[iPaneIndex].checkedId = masterData.sId; app.currentPane.checkedId = masterData.sId; dispatch({ type: "app/savePanesAndCurrentPane", payload: { panes: app.panes, currentPane: app.currentPane } }); /* 新记录时,关闭后能自动带值 */ const callBackRecord = this.props.app.currentPane.newRecordMethod; if (callBackRecord !== undefined) { const sId = masterData.sId === undefined ? masterData.sid : masterData.sId; /* sId */ /* 回调 传[新增的数据sId] */ if (this.props.app.currentPane.newRecordMethod !== undefined) { this.props.app.currentPane.newRecordMethod(sId); } } if (billnosetting.bAutoCheck) { await this.handleAudit(1); } else { await this.handleGetData( masterConfig, slaveConfig, slave0Config, slave1Config, slave2Config, slave3Config, slave4Config, null, slave5Config, slave6Config, slave7Config, slave8Config, slave9Config, slave10Config ); if (this.props.app.currentPane.refresh !== undefined) { this.props.app.currentPane.refresh(); } } this.props.onSaveState({ loading: false, }); return true; } else { this.props.onSaveState({ loading: false, }); return false; } }; /** toolbar校验保存 */ handleValidateSave = () => { this.form.validateFields(async err => { /* 验证通过与不通过走不同的流程 */ if (err) { /* 验证失败 */ /* 直接渲染显示错误提示 */ for (const key of Object.keys(err)) { message.error(err[key].errors[0].message); } this.props.onSaveState({ loading: false, }); } else { /* 验证成功 */ const { masterConfig, slaveConfig, slaveData, slaveDelData, app, sModelsType, slave0Config, slaveColumn, slave0Data, slave0Column, slave0DelData, slave1Config, slave1Column, slave1Data, slave1DelData, slave2Config, slave2Column, slave2Data, slave2DelData, slave3Config, slave3Column, slave3Data, slave3DelData, slave4Config, slave4Column, slave4Data, slave4DelData, } = this.props; let { masterData } = this.props; // if (commonUtils.isEmptyArr(slaveData) && !sModelsType.includes('sales/salesInvoice') && !sModelsType.includes('purchase/purchaseInvoice') && sModelsType !== 'cashier/financialTransfer' && sModelsType !== 'cashier/financialAdjustment' // && !sModelsType.includes('cashier/receipt') && !sModelsType.includes('cashier/payment') && !sModelsType.includes('purchase/purchaseEnquiry') || !commonBusiness.validateTable(slave0Config, materialsData, this.props)) { // message.error(commonFunc.showMessage(app.commonConst, 'slaveNotNull')); // 从表不能为空! // this.props.onSaveState({ // loading: false, // }); // return; // } if ( !commonBusiness.validateMaster(masterConfig, masterData, this.props) || !commonBusiness.validateTable(slaveConfig, slaveData, this.props) || !commonBusiness.validateTable(slave1Config, slave1Data, this.props) || !commonBusiness.validateTable(slave0Config, slave0Data, this.props) || !commonBusiness.validateTable(slave2Config, slave2Data, this.props) || !commonBusiness.validateTable(slave3Config, slave3Data, this.props) || !commonBusiness.validateTable(slave4Config, slave4Data, this.props) ) { this.props.onSaveState({ loading: false, }); return; } /* 根据配置校验 表格内容是否为空 */ if (commonUtils.isNotEmptyObject(this.props)) { for (const key of Object.keys(this.props)) { if (key.includes("Config") && !key.includes("onGet") && !key.includes("report")) { const tablename = key.replace("Config", "").trim(); const tableConfigName = key; const tableDataName = tablename + "Data"; const tableConfig = this.props[tableConfigName]; const tableData = this.props[tableDataName]; if (tableConfig && tableConfig.bNotCanEmpty) { if (commonUtils.isEmptyArr(tableData)) { message.error(commonFunc.showMessage(app.commonConst, "slaveNotNull")); // 表格不能为空! this.props.onSaveState({ loading: false, }); return; } } } } } // && sModelsType === 'materialsStock/productionmaterialsadjust' if (commonUtils.isNotEmptyArr(slaveData)) { let flag = true; for (const item of slaveData) { if (sModelsType === "materialsStock/productionmaterialsadjust") { if (commonUtils.isNotEmptyStr(item.sWareHouseId)) { if (masterData.sWareHouseId === item.sWareHouseId) { message.error(commonFunc.showMessage(app.commonConst, "NotSameMateMaterialWarehouse")); /* 材料调拨原仓库与调入仓库不能一致 */ flag = false; break; } } } // {"paper":"纸张","finished":"成品","half_finished":"半成品","accessories":"辅料","corrugated":"瓦楞"} if ( commonUtils.isNotEmptyObject(item.sMaterialsType) && item.sMaterialsType === "paper" && commonUtils.isEmptyObject(item.sMaterialsStyle) ) { message.error(item.sMaterialsName + commonFunc.showMessage(app.commonConst, "NoStyle")); /* 请填写"${item.sMaterialsName}"的规格 */ flag = false; break; } } if (!flag) { this.props.onSaveState({ loading: false, }); return; } } if (!commonBusiness.validateTable(slaveConfig, slaveData, this.props)) { this.props.onSaveState({ loading: false, }); return; } if (commonUtils.isNotEmptyArr(slaveData) && sModelsType === "materialsStock/productionmaterials") { const flag = await this.handleEleMaterialsStoreCurrQty(slaveData); if (!flag) { this.props.onSaveState({ loading: false, }); return; } } if (sModelsType === "purchase/purchaseEnquiry") { delete masterData.maxBillNo; } if (sModelsType === "cashier/receipt" || sModelsType === "cashier/payment") { let flag = true; if (masterData.sSettlementId === "bank") { if (commonUtils.isEmptyStr(masterData.sBankId) || commonUtils.isEmptyStr(masterData.sBankAccount)) { message.error(commonFunc.showMessage(app.commonConst, "requiredsBankAccount")); /* 收/付款条件为银行时,银行、银行账号为必填项 */ flag = false; } } if (masterData.sSettlementId === "bill") { if (commonUtils.isEmptyStr(masterData.sInvoiceNo)) { message.error(commonFunc.showMessage(app.commonConst, "requiredsInvoiceNo")); /* 收/付款条件为票据时,银行、票据号码为必填项 */ flag = false; } } let dslaveTotalMoney = 0; for (const item of slaveData) { if (item.handleType !== "del") { if (commonUtils.isNotEmptyNumber(item.dTotalMoney)) { dslaveTotalMoney += item.dTotalMoney; } } } const dPmoney = this.props.getFloatNum("dProductMoney"); dslaveTotalMoney = commonUtils.convertFixNum(dslaveTotalMoney, dPmoney); /* 取系统设定小数位 */ if ( commonUtils.isNotEmptyArr(slaveData) && commonUtils.isNotEmptyNumber(masterData.dTotalMoney) && commonUtils.isNotEmptyNumber(masterData.dAdvanceMoney) && commonUtils.convertFixNum(masterData.dTotalMoney - masterData.dAdvanceMoney, dPmoney) !== dslaveTotalMoney ) { message.error(commonFunc.showMessage(app.commonConst, "NotSameTotalMoney")); /* 主从表总金额不一致 */ flag = false; } /* 收付款保存前,看到从表没数据,预收勾上时,自动调用一下分摊 */ if (commonUtils.isEmptyArr(slaveData)) { masterData = this.handleShare(); } if (!flag) { this.props.onSaveState({ loading: false, }); return; } } const configNameList = Object.keys(this.props) .filter(item => item && item.startsWith("slave") && item.endsWith("Config")) .map(item => item.replace("Config", "")); const data = []; data.push(commonBusiness.mergeData("master", masterConfig.sTbName, [masterData])); if (slaveConfig && commonUtils.isNotEmptyArr(slaveColumn)) { data.push(commonBusiness.mergeData("slave", slaveConfig.sTbName, slaveData, slaveDelData)); } if (slave0Config && commonUtils.isNotEmptyArr(slave0Column) && slave0Config.sTbName !== "sysbillcheckresult") { data.push(commonBusiness.mergeData("slave0", slave0Config.sTbName, slave0Data, slave0DelData)); } if (slave1Config && commonUtils.isNotEmptyArr(slave1Column) && slave1Config.sTbName !== "sysbillcheckresult") { data.push(commonBusiness.mergeData("slave1", slave1Config.sTbName, slave1Data, slave1DelData)); } if (slave2Config && commonUtils.isNotEmptyArr(slave2Column) && slave2Config.sTbName !== "sysbillcheckresult") { data.push(commonBusiness.mergeData("slave2", slave2Config.sTbName, slave2Data, slave2DelData)); } if (slave3Config && commonUtils.isNotEmptyArr(slave3Column) && slave3Config.sTbName !== "sysbillcheckresult") { data.push(commonBusiness.mergeData("slave3", slave3Config.sTbName, slave3Data, slave3DelData)); } if (slave4Config && commonUtils.isNotEmptyArr(slave4Column) && slave4Config.sTbName !== "sysbillcheckresult") { data.push(commonBusiness.mergeData("slave4", slave4Config.sTbName, slave4Data, slave4DelData)); } if (commonUtils.isNotEmptyArr(configNameList)) { configNameList.forEach(tbName => { const { [`${tbName}Config`]: tableConfig, [`${tbName}Data`]: tableData, [`${tbName}DelData`]: tableDelData } = this.props; if ( tableConfig && tableConfig.sTbName && tableConfig.sSqlStr !== "noQuery" && tbName !== "slave" && tbName !== "slave0" && tbName !== "slave1" && tbName !== "slave2" && tbName !== "slave3" && tbName !== "slave4" ) { const tableDataNew = tbName === "master" ? [tableData] : tableData; data.push(commonBusiness.mergeData(tbName, tableConfig.sTbName, tableDataNew, tableDelData)); } }); } this.handleSaveData({ data, sClientType: "1", sSysLogSrcId: masterData.sId }); } }); }; /* 切换作废状态 */ handleOkChangeInvaild = async props => { const { sModelsId, masterData, masterConfig, handleType } = props; const value = { sClientType: "1", sId: [masterData.sId], sTableName: masterConfig.sTbName, handleType, }; const url = `${commonConfig.server_host}checkModel/updatebInvalid?sModelsId=${sModelsId}`; const { data } = await commonServices.postValueService(props.app.token, value, url); if (data.code === 1) { message.success(data.msg); masterData.bInvalid = handleType === "toVoid"; /* 作废状态 */ props.onSaveState({ masterData }); /* 审核(消审)后刷新跳转路由数据(commonList)的数据 */ if (props.app.currentPane.refresh !== undefined) { props.app.currentPane.refresh(); } } else { props.getServiceError(data); } }; /* 作废、取消作废的公用函数 */ handleInvalid = obj => { const props = { ...this.props, ...this.state, ...obj }; const onOkInvaild = this.handleOkChangeInvaild; confirm({ title: obj.title, onOk() { onOkInvaild(props); }, onCancel() {}, }); }; /* 单据页上查下查跳转页面 */ handleSearchUpDown = async (sId, sActiveId) => { /* 待用数据声明 */ const { dispatch, sTabId } = this.props; dispatch({ type: "content/onRouter", payload: { url: `${commonConfig.server_host}gdsmodule/getGdsmoduleById/${sActiveId}?sModelsId=${sActiveId}` /* 接口地址 */, sParentId: sTabId /* 父页面编号 */, checkedId: sId, }, }); }; /* 上查下查三级菜单 在上一条下一条时必须清除searchUpDownData */ handleSearchUpDownThird = async upDownKey => { /* 待用数据声明 */ const { masterConfig, searchUpDownData: searchUpDownDataOld } = this.props; /** 获取sqlCondition参数:{sSqlCondition,sId} */ const searchUpDownData = commonUtils.isEmptyObject(searchUpDownDataOld) ? {} : { ...searchUpDownDataOld }; if (commonUtils.isNotEmptyObject(masterConfig)) { const searchUpDownConfig = masterConfig.gdsconfigformslave.filter(item => item.sControlName.includes(`${upDownKey}`)); for (const item of searchUpDownConfig) { if (commonUtils.isEmptyArr(searchUpDownData[item.sControlName])) { searchUpDownData[item.sControlName] = await this.getSearchUpDownData(item); } } this.props.onSaveState({ searchUpDownData }); } }; /* 单据页复制到 */ handleCopyTo = (name, sActiveId) => { /* 待用数据声明 */ const { dispatch, masterConfig, slave1Data, masterData, slaveData, slave2Data, slave0Data, slave3Data, slave4Data } = this.props; // 从表有sCopyToCondition则不能复制,并提示 if (commonUtils.isNotEmptyArr(slaveData) && name.includes(".")) { const sCopyToConditionIndex = slaveData.findIndex(item => item.sCopyToCondition); if (sCopyToConditionIndex !== -1) { message.warning(slaveData[sCopyToConditionIndex].sCopyToCondition); return; } } const copyTo = {}; const copyToConfig = masterConfig.gdsconfigformslave.filter(item => item.sControlName.includes(name)); copyTo.name = name; copyTo.config = copyToConfig; copyTo.masterData = masterData; copyTo.slaveData = slaveData; copyTo.slave1Data = slave1Data; copyTo.slave0Data = slave0Data; copyTo.slave2Data = slave2Data; copyTo.slave3Data = slave3Data; copyTo.slave4Data = slave4Data; dispatch({ type: "content/onRouter", payload: { url: `${commonConfig.server_host}gdsmodule/getGdsmoduleById/${sActiveId}?sModelsId=${sActiveId}` /* 接口地址 */, copyTo, }, }); }; handleCopyFrom = async obj => { // const { // slaveData, masterData, masterConfig, // } = this.props; /* 根据sql条件进行判断 */ // const buttonConfig = masterConfig.gdsconfigformslave.filter(item => item.sName === '' && item.showName !== '' && item.sControlName === obj.copyFromKey); // if (commonUtils.isNotEmptyArr(buttonConfig) && commonUtils.isNotEmptyObject(buttonConfig[0].sSqlCondition) && buttonConfig[0].sSqlCondition.includes('slave.')) { // if (commonUtils.isNotEmptyArr(slaveData) && commonUtils.isEmptyStr(slaveData[0].sCustomerId) && commonUtils.isEmptyStr(masterData.sCustomerId)) { // message.error(commonFunc.showMessage(this.props.app.commonConst, 'pleaseInputCustomer'));/* 请填写客户 */ // return; // } // } this.copyName = obj.name; const { token } = this.props; const url = `${commonConfig.server_host}/gdsmodule/getGdsmoduleById/${obj.copyFromSActiveId}?sModelsId=${obj.copyFromSActiveId}`; const dataReturn = (await commonServices.getService(token, url)).data; if (dataReturn.code === 1) { const returnData = dataReturn.dataset.rows[0]; if (obj.copyFromKey.includes("customizeFormInfo")) { /* 复制从自定义窗体 */ this.props.onSaveState({ copyFromChooseVisible: true, copyFromChooseData: returnData, copyFromKey: obj.copyFromKey }); } else { this.props.onSaveState({ productProcessInfoChooseVisible: true, productProcessInfoChooseData: returnData, productProcessInfoCopyFromKey: obj.copyFromKey, }); } } else { this.props.getServiceError(dataReturn); } }; /* 上一条、下一条、首条、末条 */ handleSearchData = async handleType => { const { sModelsId, app, currentIndexFlag, currentPageNo, masterData, sSrcModelsId, masterConfig, slaveConfig, slave0Config, slave1Config, slave2Config, slave3Config, slave4Config, } = this.props; let { sBillIdsArray = [] } = this.props; let { currentId } = this.props; const { currentPane, token } = app; const tipLast = commonFunc.showLocalMessage(this.props, "tipLast", "当前已经是最后一条"); const tipFirst = commonFunc.showLocalMessage(this.props, "tipFirst", "当前已经是第一条"); let { pages, sFilterOrderBy, bFilter, sListFormmasterId, currentIndex, fromKey } = currentPane; if (fromKey === "1") { const fromKeyConfig = masterConfig.gdsconfigformslave.find(i => i && i.sName === "sListFormmasterId"); if (fromKeyConfig) sListFormmasterId = fromKeyConfig.sActiveKey; } let currentPosition = currentIndexFlag ? currentPageNo : commonUtils.isEmptyObject(pages) ? 1 : (pages.current - 1) * commonConfig.pageSize + Number.parseInt(currentIndex, 10) + 1; if (currentIndex === undefined) { currentPosition = 1; } // if (handleType === 'first') { // currentPosition = 1; // } else if (handleType === 'end') { // currentPosition = pages.total; // } if (!commonUtils.isNum(currentPosition)) { // 如果是列表直接点增加,就跳到第一条去 currentPosition = 1; } let bExist = false; /* 如果sBillIdsArray已存在 则不请求 */ if (commonUtils.isNotEmptyArr(sBillIdsArray) && sBillIdsArray.length > 0) { const index = sBillIdsArray.indexOf(currentId); if (index > -1) { if ("next".includes(handleType)) { currentPosition = index + 1; if (currentPosition > sBillIdsArray.length - 1) { message.warn(tipLast); return; } } else if ("up".includes(handleType)) { if (index === 0) { message.warn(tipFirst); return; } currentPosition = index - 1; } else if ("first".includes(handleType)) { currentPosition = 0; } else if ("end".includes(handleType)) { currentPosition = sBillIdsArray.length - 1; } currentId = sBillIdsArray[currentPosition]; currentPosition = currentPosition + 1; bExist = true; } else { bExist = false; } } /* 如果是第一次请求 */ if (!bExist) { const bFromList = commonUtils.isEmptyObject(pages) ? true : false; if (bFromList) { if (handleType === "next" || handleType === "end") { message.warn(tipLast); return; } else { message.warn(tipFirst); return; } } const value = { sClientType: "1", sFilterOrderBy, bFilter, sListFormmasterId, currentPosition, handleType, iCountSum: pages.total, sUpId: masterData?.sId, sParentModelId: sSrcModelsId, }; this.props.onSaveState({ loading: true }); const url = `${commonConfig.server_host}business/getBusinessDataByIndex?sModelsId=${sModelsId}`; /* 接收返回值 */ const { data } = await commonServices.postValueService(token, value, url); /* 接收返回值 */ /* 成功的话刷新页面(同步主表和从表数据),不成功就弹出错误提示 */ if (data.code === 1) { /* 数据查询成功 */ const returnData = data.dataset.rows[0]; /* 拿到接口返回的sBillids */ console.log("returnData", returnData); const sBillIds = returnData.sBillIds; if (commonUtils.isNotEmptyArr(sBillIds)) { sBillIdsArray = sBillIds; } currentId = returnData.sId; currentPosition = returnData.currentPosition; } else { /* 失败 */ this.props.getServiceError(data); return false; } } this.props.onSaveState( { currentIndexFlag: true, currentPageNo: currentPosition, currentId, searchUpDownData: {}, slaveSelectedRowKeys: [], sBillIdsArray, loading: true }, () => { this.handleGetData(masterConfig, slaveConfig, slave0Config, slave1Config, slave2Config, slave3Config, slave4Config); } ); return true; }; handleCancel = obj => { /* 待用数据声明 */ const that = this; const { currentId, masterConfig, slaveConfig, slave0Config, slave1Config, slave2Config, slave3Config, slave4Config, app, masterData } = this.props; const { userinfo } = app; const onSendSocketMessage = this.props.handleSendSocketMessage; const onGetDataOk = this.handleGetData; const onSaveStateOk = this.props.onSaveState; const { copyTo } = app.currentPane; confirm({ title: obj.title, onOk() { // 解决新建页签sid为空的bug if (!currentId) { const { panes, currentPane } = that.props.app; const currentPaneIndex = panes.findIndex(item => item.key === currentPane.key); const newPanes = []; if (currentPaneIndex > 0) { panes.forEach((item, index) => { if (index !== currentPaneIndex) { newPanes.push(item); } }); that.props.dispatch({ type: "app/removePane", payload: { changePanes: newPanes, currentPane: panes[currentPaneIndex - 1] }, }); /* 关闭当前页签 */ } /* 复制到新增页签取消时 关闭页签 并清除操作记录 */ if (commonUtils.isNotEmptyObject(copyTo)) { const { slaveData, srcFormRoute, copyOtherData } = copyTo; if (commonUtils.isNotEmptyObject(srcFormRoute) && srcFormRoute.includes("materialRequirementsPlanning")) { /* 物料需求计划用sWorkOrderMaterialId作为唯一键 */ const sIdArray = []; if ( commonUtils.isNotEmptyArr(copyOtherData) && copyOtherData[0].name === "detail" && commonUtils.isNotEmptyArr(copyOtherData[0].data) ) { const slaveDetailData = copyOtherData[0].data; slaveDetailData.forEach(item => { const redisKey = item.sWorkOrderMaterialId; sIdArray.push(redisKey); }); } else { /* 变更单、采购申请单 */ slaveData.forEach(item => { const redisKey = item.sWorkOrderMaterialId; sIdArray.push(redisKey); }); } const sId = sIdArray.toString(); onSendSocketMessage("copyfinish", "noAction", sId, userinfo.sId, null, null); } else if (commonUtils.isNotEmptyArr(slaveData)) { const sIdArray = []; slaveData.forEach(item => { const redisKey = item.sSlaveId; sIdArray.push(redisKey); }); /* 处理只有单主表解锁问题 */ if (commonUtils.isNotEmptyObject(masterData) && commonUtils.isNotEmptyObject(masterData.sSrcSlaveId)) { sIdArray.push(masterData.sSrcSlaveId); } const sId = sIdArray.toString(); onSendSocketMessage("copyfinish", "noAction", sId, userinfo.sId, null, null); } else if (commonUtils.isNotEmptyObject(masterData) && commonUtils.isNotEmptyObject(masterData.sSrcSlaveId)) { const sIdArray = []; /* 处理只有单主表解锁问题 */ sIdArray.push(masterData.sSrcSlaveId); const sId = sIdArray.toString(); onSendSocketMessage("copyfinish", "noAction", sId, userinfo.sId, null, null); } } return; } const bChanged = commonBusiness.handleGetChanged(that.props); if (bChanged) { onGetDataOk(masterConfig, slaveConfig, slave0Config, slave1Config, slave2Config, slave3Config, slave4Config); } onSaveStateOk({ enabled: false }); if (commonUtils.isNotEmptyObject(copyTo)) { const { slaveData } = copyTo; const sIdArray = []; slaveData.forEach(item => { const redisKey = item.sSlaveId; sIdArray.push(redisKey); }); const sId = sIdArray.toString(); onSendSocketMessage("copyfinish", "noAction", sId, userinfo.sId, null, null); } onSendSocketMessage("release", "noAction", currentId, userinfo.sId, null, null); }, // onOk() { // if (!currentId) { // const { panes, currentPane } = that.props.app; // const currentPaneIndex = panes.findIndex(item => item.key === currentPane.key); // const newPanes = []; // if (currentPaneIndex > 0 && currentPane.fromKey === '1') { // panes.forEach((item, index) => { // if (index !== currentPaneIndex) { // newPanes.push(item); // } // }); // that.props.dispatch({ type: 'app/removePane', payload: { changePanes: newPanes, currentPane: panes[currentPaneIndex - 1] } });/* 关闭当前页签 */ // } // } // onGetDataOk(masterConfig, slaveConfig, slave1Config); // onSaveStateOk({ enabled: false }); // if (commonUtils.isNotEmptyObject(copyTo)) { // const { slaveData } = copyTo; // const sIdArray = []; // if(commonUtils.isNotEmptyArr(slaveData)) { // slaveData.forEach((item) => { // const redisKey = item.sSlaveId; // sIdArray.push(redisKey); // }); // } // /* 处理只有单主表解锁问题 */ // if (commonUtils.isNotEmptyObject(masterData) && commonUtils.isNotEmptyObject(masterData.sSrcSlaveId)) { // sIdArray.push(masterData.sSrcSlaveId); // } // const sId = sIdArray.toString(); // onSendSocketMessage('copyfinish', 'noAction', sId, userinfo.sId, null, null); // } // onSendSocketMessage('release', 'noAction', currentId, userinfo.sId, null, null); // }, onCancel() {}, }); }; /* 删除 */ handleDel = obj => { const props = { ...this.props, ...this.state }; const onOkDel = this.handleOkDel; confirm({ title: obj.title, onOk() { onOkDel(props); }, onCancel() {}, }); }; /* 确定要删除 */ handleOkDel = async props => { /* 数据参数 */ const { token, sModelsId, sModelsType, masterConfig, masterData, slaveConfig, slave1Config, orderDetailConfig, app, formData } = props; const { userinfo, systemData } = app; const { sMakePerson } = masterData; /* 本单据制单人 */ const { sUserName, sType } = userinfo; /* 登录用户 */ const iIndex = systemData.findIndex(item => item.sName === "CkxModifyBillNoMakePerson"); if (iIndex > -1) { const sValue = systemData[iIndex].sValue; if (sValue === "0") { /* 系统未启用非制单人修改单据,普通用户非制单人不可以修改制单人的单据 */ if (sType !== "sysadmin" && sUserName !== sMakePerson) { message.error(commonFunc.showMessage(app.commonConst, "NoDelByNoMakePerson")); return; } } } const value = { sClientType: "1", data: { sMasterTable: masterConfig.sTbName, sId: [masterData.sId], }, }; const sSlaveTable = []; if (commonUtils.isNotEmptyObject(slaveConfig)) { sSlaveTable.push({ tableName: slaveConfig.sTbName, relationName: "sParentId", }); } if (commonUtils.isNotEmptyObject(slave1Config)) { sSlaveTable.push({ tableName: slave1Config.sTbName, relationName: "sParentId", }); } if (sModelsType === "purchase/purchaseOrder") { let orderDetailConfig = {}; let orderDetailConfigArr = formData.filter(item => item.bGrd && item.sTbName === "purpurchaseorderDetail"); if (commonUtils.isNotEmptyArr(orderDetailConfigArr)) { orderDetailConfig = orderDetailConfigArr[0]; } if (commonUtils.isNotEmptyObject(orderDetailConfig)) { sSlaveTable.push({ tableName: orderDetailConfig.sTbName, relationName: "sParentId", }); } } value.sSlaveTable = sSlaveTable; const { sBillNo, sId } = masterData || {}; const url = `${commonConfig.server_host}business/delMasSlaBusinessData?sModelsId=${sModelsId}&sBillNo=${sBillNo}&sSysLogSrcId=${sId}`; /* 接收返回值 */ const { data } = await commonServices.postValueService(token, value, url); if (data.code === 1) { /* 数据删除成功 */ if (this.props.app.currentPane.refresh !== undefined) { this.props.app.currentPane.refresh(); } if(location.pathname.includes(('commobilePadBill'))){ this.handleDelDataSuccessPad(props); } else { this.handleDelDataSuccess(props); } } else { /* 失败 */ this.props.getServiceError(data); } }; /* 数据删除成功跳转到新路由即pane */ handleDelDataSuccess = props => { if(location.pathname.includes(('commobilePadBill'))){ window.history.back(-1); setTimeout(() => { this.props.dispatch({ type: "app/refreshPage" }); }, 100); return; } const { app } = props; let { panes, currentPane } = app; /* 删除单据后退出当前路由后,标签panes变化后的集合 */ panes = panes.filter(pane => pane.key !== currentPane.key); /* 跳转到panes集合的最后一个路由,因为panes集合一定含有主页路由所以panes的集合大于等于1 */ currentPane = panes[panes.length - 1]; this.props.onRemovePane(panes, currentPane); }; handleDelDataSuccessPad = props => { window.history.back(-1); setTimeout(() => { this.props.dispatch({ type: "app/refreshPage" }); // history.push(location.pathname); }, 100); }; /** 添加表格空行 */ handleTableAdd = (name, isWait) => { /* 从CommonBase获取默认参数 */ const { masterData, masterConfig, sModelsType, app } = this.props; let { [`${name}Data`]: tableData } = this.props; tableData = commonUtils.isEmptyObject(tableData) ? [] : tableData; const tableDataRow = this.props.onDataRowAdd(name, true); /* 添加行的业务处理拿出去 */ if (sModelsType.includes("sales/")) { if (commonUtils.isEmptyStr(masterData.sCustomerId)) { const iIndex = masterConfig.gdsconfigformslave.findIndex( item => (item.sName === "sCustomerId" || item.sName === "sCustomerNo" || item.sName === "sCustomerName") && item.bVisible ); if (iIndex > -1) { const { showName } = masterConfig.gdsconfigformslave[iIndex]; message.warn(showName + commonFunc.showMessage(app.commonConst, "isNotNull")); // 不能为空 return; } } } tableDataRow.sWareHouseId = masterData.sWareHouseId; tableDataRow.sWareHouseNo = masterData.sWareHouseNo; tableDataRow.sWareHouseName = masterData.sWareHouseName; tableDataRow.sLocationId = masterData.sLocationId; tableDataRow.sLocationNo = masterData.sLocationNo; tableDataRow.sLocationName = masterData.sLocationName; tableDataRow.sWareHouseLocationId = masterData.sWareHouseLocationId; tableDataRow.sWareHouseLocationNo = masterData.sWareHouseLocationNo; tableDataRow.sWareHouseLocationName = masterData.sWareHouseLocationName; if (isWait) { return tableDataRow; } else if (commonUtils.isNotEmptyObject(tableDataRow)) { tableData.push(tableDataRow); this.props.onSaveState({ [`${name}Data`]: tableData, [`${name}Pagination`]: { total: tableData.length, current: 9999 }, [`${name}SelectedRowKeys`]: [tableDataRow.sId], }); } }; /* 新增子级 */ handleTableAddChild = (name, flag, bchild) => { /* 从CommonBase获取默认参数 */ const { masterData, masterConfig, sModelsType, app, [`${name}Pagination`]: tablePagination, slaveSelectedRowKeys, [`${name}SelectedRowKeys`]: tableSelectedRowKeys, } = this.props; let { [`${name}Data`]: tableData } = this.props; tableData = commonUtils.isEmptyObject(tableData) ? [] : tableData; if (name === "slave" && bchild === "childNode") { const tableDataRow = this.props.onDataRowAdd(name, true); if (commonUtils.isEmptyArr(tableSelectedRowKeys)) { message.error("请选择数据!"); return; } const iSlaveIndex = tableData.findIndex(item => item.sId === tableSelectedRowKeys[0]); if (iSlaveIndex > -1) { const slaveRow = tableData[iSlaveIndex]; if (commonUtils.isNotEmptyObject(slaveRow)) { tableDataRow.sFatherSlaveId = slaveRow.sId; if (commonUtils.isNotEmptyObject(tableDataRow)) { tableData.push(tableDataRow); this.props.onSaveState({ [`${name}Data`]: tableData, [`${name}Pagination`]: { ...tablePagination, total: tableData.length, current: 9999 }, [`${name}SelectedRowKeys`]: [tableDataRow.sId], }); } } } } }; /** 复制 */ handleTableCopy = (name, isWait) => { const { [`${name}Data`]: tableData, [`${name}SelectedRowKeys`]: tableSelectedRowKeys } = this.props; if (commonUtils.isEmptyArr(tableSelectedRowKeys)) { message.warn(commonFunc.showMessage(this.props.app.commonConst, "pleaseChooseCopyData")); /* 请选择复制数据 */ } else { for (const sId of tableSelectedRowKeys) { const tableDataIndex = tableData.findIndex(item => item.sId === sId); if (tableDataIndex > -1) { const tableDataRow = JSON.parse(JSON.stringify(tableData[tableDataIndex])); tableDataRow.sId = commonUtils.createSid(); tableDataRow.handleType = "add"; tableDataRow.key = tableDataRow.sId; tableDataRow.sSrcSlaveId = ""; tableDataRow.sSrcId = ""; tableDataRow.dSrcQty = null; if (commonUtils.isNotEmptyObject(tableDataRow.sMaterialsMemo)) { tableDataRow.sMaterialsMemo = ""; } if (commonUtils.isNotEmptyObject(tableDataRow.sProcessMemo)) { tableDataRow.sProcessMemo = ""; } if (isWait) { return tableDataRow; } else if (commonUtils.isNotEmptyObject(tableDataRow)) { tableData.push(tableDataRow); this.props.onSaveState({ [`${name}Data`]: tableData, [`${name}Pagination`]: { total: tableData.length, current: 9999 } }); } } } } }; handleTableCopyTo = (name, toname, isWait) => { const { [`${name}Data`]: tableData, [`${toname}Data`]: tablePersonData, [`${name}SelectedRowKeys`]: tableSelectedRowKeys } = this.props; if (commonUtils.isEmptyArr(tableSelectedRowKeys)) { message.warn(commonFunc.showMessage(this.props.app.commonConst, "pleaseChooseCopyData")); /* 请选择复制数据 */ } else { for (const sId of tableSelectedRowKeys) { const tableDataIndex = tableData.findIndex(item => item.sId === sId); if (tableDataIndex > -1) { const tableDataRow = JSON.parse(JSON.stringify(tableData[tableDataIndex])); tableDataRow.sId = commonUtils.createSid(); tableDataRow.handleType = "add"; tableDataRow.key = tableDataRow.sId; if (isWait) { return tableDataRow; } else if (commonUtils.isNotEmptyObject(tableDataRow)) { if (commonUtils.isNotEmptyObject(toname)) { tablePersonData.push(tableDataRow); this.props.onSaveState({ [`${toname}Data`]: tablePersonData, [`${toname}Pagination`]: { total: tablePersonData.length, current: 9999 }, }); message.success("操作成功!"); } else { tableData.push(tableDataRow); this.props.onSaveState({ [`${name}Data`]: tableData, [`${name}Pagination`]: { total: tableData.length, current: 9999 } }); } } } } } }; /** 复制全部 */ handleTableCopyAll = (name, isWait) => { const { slaveData, controlData, slaveSelectedRowKeys, slave0Data } = this.props; let { processData } = this.props; if (name === "slave") { if (commonUtils.isEmptyArr(slaveSelectedRowKeys)) { message.warn(commonFunc.showMessage(this.props.app.commonConst, "pleaseChooseCopyData")); /* 请选择复制数据 */ } else { for (const sId of slaveSelectedRowKeys) { const slaveDataIndex = slaveData.findIndex(item => item.sId === sId); if (slaveDataIndex > -1) { const slaveDataRow = JSON.parse(JSON.stringify(slaveData[slaveDataIndex])); slaveDataRow.sId = commonUtils.createSid(); slaveDataRow.handleType = "add"; slaveDataRow.key = slaveDataRow.sId; slaveData.push(slaveDataRow); if (commonUtils.isNotEmptyArr(controlData)) { controlData .filter(itemControl => itemControl.sSlaveId === sId) .forEach(itemControl => { const tableDataRow = JSON.parse(JSON.stringify(itemControl)); tableDataRow.sId = commonUtils.createSid(); tableDataRow.handleType = "add"; tableDataRow.key = tableDataRow.sId; tableDataRow.sSlaveId = slaveDataRow.sId; controlData.push(tableDataRow); /* 部件表复制其材料表、工序表 */ slave0Data .filter(item => item.sControlId === itemControl.sId && item.sType !== "2") .forEach(item => { const slave0Row = JSON.parse(JSON.stringify(item)); slave0Row.sId = commonUtils.createSid(); slave0Row.handleType = "add"; slave0Row.sControlId = tableDataRow.sId; slave0Row.sPartsName = tableDataRow.sPartsName; slave0Row.sSlaveId = tableDataRow.sSlaveId; slave0Data.push(slave0Row); }); processData .filter(item => item.sControlId === itemControl.sId && item.sType !== "3") .forEach(item => { const processRow = JSON.parse(JSON.stringify(item)); processRow.sId = commonUtils.createSid(); processRow.handleType = "add"; processRow.sControlId = tableDataRow.sId; processRow.sPartsName = tableDataRow.sPartsName; processRow.sSlaveId = tableDataRow.sSlaveId; processData.push(processRow); }); processData = this.sortData(controlData, processData); }); } if (commonUtils.isNotEmptyArr(slave0Data)) { /* 订单从表复制全部 复制成品材料 */ slave0Data .filter(item => item.sSlaveId === sId && item.sType === "2") .forEach(slave0Item => { const slave0Row = JSON.parse(JSON.stringify(slave0Item)); slave0Row.handleType = "add"; slave0Row.sId = commonUtils.createSid(); slave0Row.sSlaveId = slaveDataRow.sId; slave0Data.push(slave0Row); }); } if (commonUtils.isNotEmptyArr(processData)) { /* 订单从表复制全部 复制成品工序 */ processData .filter(item => item.sSlaveId === sId && item.sType === "3") .forEach(processItem => { const processRow = JSON.parse(JSON.stringify(processItem)); processRow.handleType = "add"; processRow.sId = commonUtils.createSid(); processRow.sSlaveId = slaveDataRow.sId; processData.push(processRow); }); } } this.props.onSaveState({ slaveData, [`${name}Pagination`]: { total: slaveData.length, current: 9999 }, controlData, slave0Data, processData, }); } } } else if (name === "control") { const { [`${name}Data`]: tableData, [`${name}SelectedRowKeys`]: tableSelectedRowKeys } = this.props; if (commonUtils.isEmptyArr(tableSelectedRowKeys)) { message.warn(commonFunc.showMessage(this.props.app.commonConst, "pleaseChooseCopyData")); /* 请选择复制数据 */ } else { for (const sId of tableSelectedRowKeys) { const tableDataIndex = tableData.findIndex(item => item.sId === sId); if (tableDataIndex > -1) { const tableDataRow = JSON.parse(JSON.stringify(tableData[tableDataIndex])); tableDataRow.sId = commonUtils.createSid(); tableDataRow.handleType = "add"; tableDataRow.key = tableDataRow.sId; if (isWait) { return tableDataRow; } else if (commonUtils.isNotEmptyObject(tableDataRow)) { tableData.push(tableDataRow); /* 部件表复制其材料表、工序表 */ slave0Data .filter(item => item.sControlId === sId && item.sType !== "2") .forEach(item => { const slave0Row = JSON.parse(JSON.stringify(item)); slave0Row.sId = commonUtils.createSid(); slave0Row.handleType = "add"; slave0Row.sControlId = tableDataRow.sId; slave0Row.sPartsName = tableDataRow.sPartsName; slave0Data.push(slave0Row); }); processData .filter(item => item.sControlId === sId && item.sType !== "3") .forEach(item => { const processRow = JSON.parse(JSON.stringify(item)); processRow.sId = commonUtils.createSid(); processRow.handleType = "add"; processRow.sControlId = tableDataRow.sId; processRow.sPartsName = tableDataRow.sPartsName; processData.push(processRow); }); processData = this.sortData(tableData, processData); this.props.onSaveState({ [`${name}Data`]: tableData, [`${name}Pagination`]: { total: tableData.length, current: 9999 }, slave0Data, processData, }); } } } } } }; handleCloseProductProcessInfoChooseModal = () => { this.props.onSaveState({ productProcessInfoChooseVisible: false, }); }; singlePQtyChange = tableDataRow => { const bZfZf = tableDataRow.iPrintMode === 2; // 正反版 const bSample = tableDataRow.dSumPQty >= 4; // 样本 tableDataRow.iPrintModePo = tableDataRow.iPrintMode <= 2 ? 2 : tableDataRow.iPrintMode === 3 ? 0 : -1; if (bSample) { if (tableDataRow.dSinglePQty > 0) { tableDataRow.dPlateQty = Math.ceil(tableDataRow.dSumPQty / tableDataRow.dSinglePQty); } if (bZfZf && tableDataRow.iPrintModePo === 2) { // 双面样本,正反 if (tableDataRow.dPlateQty < 2) { // 不管建议放正自翻版了,点方式什么是什么 tableDataRow.dPlateQty = 2; tableDataRow.iStick = Math.ceil(commonUtils.isNull(tableDataRow.dPlateQty, 0) / 2); tableDataRow.dSumPlateQty = tableDataRow.iStick * (commonUtils.isNull(tableDataRow.iPositiveColor, 0) + commonUtils.isNull(tableDataRow.iPositiveSpecialColor, 0) + commonUtils.isNull(tableDataRow.iOppositeColor, 0) + commonUtils.isNull(tableDataRow.iOppositeSpecialColor, 0)); } else { if (tableDataRow.iPrintModePo !== 2) { // 单面样本 tableDataRow.dPlateQty = (commonUtils.isNull(tableDataRow.dSumPQty, 0) * 0.5) / tableDataRow.dSinglePQty; tableDataRow.iStick = Math.ceil(tableDataRow.dPlateQty); tableDataRow.dSumPlateQty = tableDataRow.iStick * (commonUtils.isNull(tableDataRow.iPositiveColor, 0) + commonUtils.isNull(tableDataRow.iPositiveSpecialColor, 0)); } else { tableDataRow.dPlateQty = commonUtils.isNull(tableDataRow.dSumPQty, 0) / commonUtils.isNull(commonUtils.nullIf(tableDataRow.dSinglePQty, 0), 1); tableDataRow.iStick = Math.ceil(tableDataRow.dPlateQty / 2); } tableDataRow.dSumPlateQty = tableDataRow.iStick * (commonUtils.isNull(tableDataRow.iPositiveColor, 0) + commonUtils.isNull(tableDataRow.iPositiveSpecialColor, 0) + commonUtils.isNull(tableDataRow.iOppositeColor, 0) + commonUtils.isNull(tableDataRow.iOppositeSpecialColor, 0)); } } else { if (tableDataRow.iPrintModePo !== 2) { // 单面样本 tableDataRow.dPlateQty = (commonUtils.isNull(tableDataRow.dSumPQty, 0) * 0.5) / tableDataRow.dSinglePQty; } else { tableDataRow.dPlateQty = commonUtils.isNull(tableDataRow.dSumPQty, 0) / commonUtils.isNull(commonUtils.nullIf(tableDataRow.dSinglePQty, 0), 1); } tableDataRow.iStick = Math.ceil(tableDataRow.dPlateQty); tableDataRow.dSumPlateQty = tableDataRow.iStick * (commonUtils.isNull(tableDataRow.iPositiveColor, 0) + commonUtils.isNull(tableDataRow.iPositiveSpecialColor, 0)); } if (tableDataRow.iStick > 0 && tableDataRow.dSinglePQty > 0) { tableDataRow.dMachineQty = commonUtils.convertFixNum( (commonUtils.isNull(tableDataRow.dPartsQty, 0) * commonUtils.isNull(tableDataRow.dSumPQty, 0) * 0.5) / tableDataRow.dSinglePQty / tableDataRow.iStick, 0 ); tableDataRow.dSumMachineQty = tableDataRow.dMachineQty * tableDataRow.iStick; } } else { tableDataRow.iStick = 1; tableDataRow.dSumPlateQty = tableDataRow.iStick * (commonUtils.isNull(tableDataRow.iPositiveColor, 0) + commonUtils.isNull(tableDataRow.iPositiveSpecialColor, 0) + commonUtils.isNull(tableDataRow.iOppositeColor, 0) + commonUtils.isNull(tableDataRow.iOppositeSpecialColor, 0)); if (bZfZf && tableDataRow.iPrintModePo === 2) { tableDataRow.dPlateQty = 2; tableDataRow.dSumPlateQty = tableDataRow.iStick * (commonUtils.isNull(tableDataRow.iPositiveColor, 0) + commonUtils.isNull(tableDataRow.iPositiveSpecialColor, 0) + commonUtils.isNull(tableDataRow.iOppositeColor, 0) + commonUtils.isNull(tableDataRow.iOppositeSpecialColor, 0)); } else { tableDataRow.dPlateQty = 1; tableDataRow.dSumPlateQty = tableDataRow.iStick * (commonUtils.isNull(tableDataRow.iPositiveColor, 0) + commonUtils.isNull(tableDataRow.iPositiveSpecialColor, 0)); } if (tableDataRow.dSinglePQty > 0) { if (tableDataRow.iPage > 1) { // 笔记本 用 非样本 来做, 倍率是每页都一样才可以用 原先 /2 是指页数, 现在直接按张数 tableDataRow.dMachineQty = commonUtils.convertFixNum((tableDataRow.dPartsQty * tableDataRow.iPage) / tableDataRow.dSinglePQty, 0); } else { tableDataRow.dMachineQty = commonUtils.convertFixNum(commonUtils.isNull(tableDataRow.dPartsQty, 0) / tableDataRow.dSinglePQty, 0); tableDataRow.dSumMachineQty = tableDataRow.dMachineQty * tableDataRow.iStick; } } } return tableDataRow; }; /** 表格数据更改 */ // name 不写完整的state名称作用为了要用到total // (name, changeValue, sId, dropDownData) handleTableChange = async (name, sFieldName, changeValue, sId, dropDownData, isWait) => { /* 从CommonBase获取默认参数 */ const { [`${name}Data`]: tableData, sModelsType, sModelsId, token, app, slaveConfig, slave0Data, slaveData } = this.props; const { dNetMoney, dNetPrice } = app.decimals; if (name === "control" && sModelsType === "sales/salesOrder") { const { [`${name}Data`]: tableData, slave0Data: slave0DataOld, slave2Data: slave2DataOld } = this.props; let tableDataRow = await this.props.onDataChange(name, sFieldName, changeValue, sId, dropDownData, true); if (tableDataRow === undefined) return; if ( sFieldName === "dSinglePQty" || sFieldName === "dSumPQty" || sFieldName === "iPrintModePo" || sFieldName === "iPrintMode" || sFieldName === "iPrintModePo" || sFieldName === "iPositiveColor" || sFieldName === "iPositiveSpecialColor" || sFieldName === "iOppositeColor" || sFieldName === "iOppositeSpecialColor" ) { if (sFieldName === "iPrintModePo") { if (tableDataRow.iPrintModePo === 0) { tableDataRow.iPrintMode = 3; if (tableDataRow.iPositiveColor === 0) { tableDataRow.iPositiveColor = tableDataRow.iPositiveColor === 0 ? 4 : tableDataRow.iPositiveColor; tableDataRow.iOppositeColor = 0; tableDataRow.iOppositeSpecialColor = 0; } else { tableDataRow.iOppositeColor = 0; tableDataRow.iOppositeSpecialColor = 0; } } else if (tableDataRow.iPrintModePo === 1) { tableDataRow.iPrintMode = 3; if (tableDataRow.iPositiveColor === 0) { tableDataRow.iPositiveColor = 0; tableDataRow.iPositiveSpecialColor = 0; tableDataRow.iOppositeColor = tableDataRow.iOppositeColor === 0 ? 4 : tableDataRow.iOppositeColor; } else { tableDataRow.iPositiveColor = 0; tableDataRow.iPositiveSpecialColor = 0; } } else { tableDataRow.iPositiveColor = tableDataRow.iPositiveColor === 0 ? 4 : tableDataRow.iPositiveColor; tableDataRow.iOppositeColor = tableDataRow.iOppositeColor === 0 ? tableDataRow.iPositiveColor : tableDataRow.iOppositeColor; } } else if (sFieldName === "iPrintMode") { if (tableDataRow.iPrintMode === 0 || tableDataRow.iPrintMode === 1) { tableDataRow.iPositiveColor = commonUtils.isEmpty(tableDataRow.iPositiveColor) || tableDataRow.iPositiveColor === 0 ? 4 : tableDataRow.iPositiveColor; tableDataRow.iOppositeColor = tableDataRow.iPositiveColor; tableDataRow.iOppositeSpecialColor = tableDataRow.iPositiveSpecialColor; } else if (tableDataRow.iPrintMode === 2) { tableDataRow.iPositiveColor = tableDataRow.iPositiveColor === 0 ? 4 : tableDataRow.iPositiveColor; tableDataRow.iOppositeColor = tableDataRow.iOppositeColor === 0 ? tableDataRow.iPositiveColor : tableDataRow.iOppositeColor; } else if (tableDataRow.iPrintMode === 3) { tableDataRow.iPositiveColor = tableDataRow.iPositiveColor === 0 ? 4 : tableDataRow.iPositiveColor; tableDataRow.iOppositeColor = 0; tableDataRow.iOppositeSpecialColor = 0; } else if (tableDataRow.iPrintMode === 4) { tableDataRow.iPositiveColor = 0; tableDataRow.iPositiveSpecialColor = 0; tableDataRow.iOppositeColor = 0; tableDataRow.iOppositeSpecialColor = 0; } } else if (sFieldName === "iPositiveColor" || sFieldName === "iPositiveSpecialColor") { if (tableDataRow.iPrintMode === 0 || tableDataRow.iPrintMode === 1) { tableDataRow.iOppositeColor = tableDataRow.iPositiveColor; tableDataRow.iOppositeSpecialColor = tableDataRow.iPositiveSpecialColor; } } tableDataRow = this.singlePQtyChange(tableDataRow); } const slave0Data = []; const slave2Data = []; slave0DataOld.forEach(item => { const itemNew = { ...item }; if (itemNew.sControlId === sId) { itemNew.sPartsName = tableDataRow.sPartsName; } slave0Data.push(itemNew); }); slave2DataOld.forEach(item => { const itemNew = { ...item }; if (itemNew.sControlId === sId) { itemNew.sPartsName = tableDataRow.sPartsName; } slave2Data.push(itemNew); }); const slave0DataNew = this.sortData(tableData, slave0Data); const slave2DataNew = this.sortData(tableData, slave2Data); const iIndex = tableData.findIndex(item => item.sId === sId); tableData[iIndex] = tableDataRow; this.props.onSaveState({ [`${name}Data`]: tableData, slave0Data: slave0DataNew, slave2Data: slave2DataNew }); } else { let { masterData } = this.props; const iIndex = tableData.findIndex(item => item.sId === sId); if ( sFieldName.substring(0, 1) === "d" && commonUtils.convertToNum(tableData[iIndex][sFieldName]) === commonUtils.convertToNum(changeValue[sFieldName]) ) { if (!(tableData[iIndex][sFieldName] === undefined && commonUtils.convertToNum(changeValue[sFieldName]) === 0)) return; } if ( sFieldName === "sProductName" && name === "slave" && (sModelsType.includes("sales/salesOrder") || sModelsType.includes("manufacture/workOrder") || sModelsType.includes("quotation/quotation")) ) { if (commonUtils.isNotEmptyObject(changeValue) && Object.keys(changeValue).length === 1 && Object.keys(changeValue)[0] === sFieldName) { changeValue.sProductId = changeValue.sProductName; } } let tableDataRow = this.props.onDataChange(name, sFieldName, changeValue, sId, dropDownData, true); if ( (sFieldName === "sProductId" || sFieldName === "sProductName" || sFieldName === "sProductStyle" || sFieldName === "sProductUnit" || sFieldName === "sProductNo" || sFieldName === "sCustomerProductNo" || sFieldName === "sProductClassifyId" || sFieldName === "sProductClassifyName") && !commonUtils.isEmpty(tableDataRow.sProductId) ) { // const productIdDropDown = commonUtils.getStoreDropDownData(sModelsId, 'slave', sFieldName); let productIdDropDown; const slaveIndex = slaveConfig.gdsconfigformslave.findIndex(item => item.sName === sFieldName); if (slaveIndex > -1) { const sqlDropDownData = await this.props.getSqlDropDownData(sModelsId, "slave", slaveConfig.gdsconfigformslave[slaveIndex]); productIdDropDown = sqlDropDownData.dropDownData; } const iProductIdIndex = commonUtils.isEmptyArr(productIdDropDown) ? -1 : productIdDropDown.findIndex(item => item.sId === tableDataRow.sProductId); if (iProductIdIndex === -1) { tableDataRow.sProductInfo = JSON.stringify({ sProductId: tableDataRow.sProductName, sProductName: tableDataRow.sProductName, sProductStyle: tableDataRow.sProductStyle, sProductUnit: tableDataRow.sProductUnit, sProductNo: tableDataRow.sProductNo, sCustomerProductNo: tableDataRow.sCustomerProductNo, sProductClassifyId: tableDataRow.sProductClassifyId, sProductClassifyName: tableDataRow.sProductClassifyName, }); } else { tableDataRow.sProductInfo = ""; } if ( (sFieldName === "sProductId" || sFieldName === "sProductName" || sFieldName === "sProductNo") && !commonUtils.isEmpty(changeValue.sProductId) ) { const url = `${commonConfig.server_host}business/getProData?sModelsId=${sModelsId}`; const { sCustomerId } = masterData; /* 增加客户id参数 */ const value = { sProName: "Sp_Cashier_GetProductPrice", paramsMap: { sProductGuid: changeValue.sProductId, sCustomerId, }, }; const returnData = (await commonServices.postValueService(app.token, value, url)).data; if (returnData.code === 1) { tableDataRow.dProductPrice = returnData.dataset.rows[0].dataSet.outData[0].dPrice; } // else { // this.props.getServiceError(returnData); // } } } else if ( sModelsType === "sales/salesOrder" && (sFieldName === "sProductClassifyId" || sFieldName === "sProductClassifyName") && name === "slave" ) { const { controlData } = this.props; if (controlData !== undefined && !commonUtils.isEmpty(tableData.sProductInfo)) { const controlDataFilter = controlData.filter(item => item.sSlaveId === tableData[iIndex].sId); const tableSelectedRowKeys = []; controlDataFilter.forEach(item => { tableSelectedRowKeys.push(item.sId); }); const slave0ReturnData = this.otherTableDel("slave0", tableSelectedRowKeys); const slave2ReturnData = this.otherTableDel("slave2", tableSelectedRowKeys); const slave3ReturnData = this.props.onDataRowDel("slave3", true, tableSelectedRowKeys); this.props.onSaveState({ ...slave0ReturnData, ...slave2ReturnData, ...slave3ReturnData, }); } } else if (sModelsType.includes("cashier/") && sFieldName === "dTotalMoney") { /* 付款单、收款单,从表付款/收款金额改变,会自动汇总到主表付款金额中 */ const addStata = {}; addStata.dTotalMoney = 0; if (iIndex > -1) { /* 选中行 */ let dMoney = commonUtils.isNotEmptyNumber(tableDataRow.dTotalMoney) ? tableDataRow.dTotalMoney : 0; dMoney = commonUtils.convertStrToNumber(dMoney); addStata.dTotalMoney = dMoney + commonUtils.convertStrToNumber(addStata.dTotalMoney); } tableData.forEach((item, index) => { /* 非选中行 */ if (index !== iIndex) { const dMoney = commonUtils.isNotEmptyNumber(item.dTotalMoney) ? item.dTotalMoney : 0; addStata.dTotalMoney = commonUtils.convertFixNum(dMoney, 6) + commonUtils.convertFixNum(addStata.dTotalMoney, 6); } }); masterData = { ...masterData, ...addStata }; this.props.onSaveState({ masterData }); } // 取工艺卡数据 if ( sModelsType && sModelsType.includes("sales/salesOrder") && (sFieldName === "sProductId" || sFieldName === "sProductNo" || sFieldName === "sProductName") && name === "slave" ) { const { controlConfig, slave0Config, processConfig } = this.props; let { controlData, slave0Data, processData } = this.props; const sId = tableData[iIndex].sId; const bCkxCopyFromTechnology = app.systemData.filter(item => item.sName === "CkxCopyFromTechnology")[0].sValue; if (bCkxCopyFromTechnology === "1" && tableDataRow.sProductId !== tableDataRow.sProductName) { const controlSelectedData = commonUtils.isNotEmptyArr(controlData) ? controlData.filter(item => item.sSlaveId === sId) : []; if (commonUtils.isNotEmptyObject(controlSelectedData)) { const slave0ReturnData = this.otherTableDel("slave0", controlSelectedData); const processReturnData = this.otherTableDel("process", controlSelectedData); const controlReturnData = this.props.onDataRowDel("control", true, controlSelectedData); controlData = controlReturnData.controlData; slave0Data = slave0ReturnData.slave0Data; processData = processReturnData.processData; this.props.onSaveState({ ...slave0ReturnData, ...processReturnData, ...controlReturnData, }); } const sCustomerId = masterData.sCustomerId; const sProductId = changeValue.sProductId; const sProductIdArray = []; sProductIdArray.push(sProductId); const sProductIds = sProductIdArray.toString(); const condition = { sCustomerId, sProductIds, sType: "select" }; const dataUrl = `${commonConfig.server_host}salesorder/getProcessCardDataByCustomIdProductId/?sModelsId=${sModelsId}`; const dataReturn = (await commonServices.postValueService(token, condition, dataUrl)).data; const config = this.props.masterConfig.gdsconfigformslave.filter(item => item.sControlName.includes("BtnCopyFrom.ActProcessCard")); if (dataReturn.code === 1) { const returnData = dataReturn.dataset.rows[0]; const copyToControlConfig = config.filter( item => item.sControlName.toLowerCase() === "BtnCopyFrom.ActProcessCard.Control".toLowerCase() ); const copyToSlave0Config = config.filter(item => item.sControlName.toLowerCase() === "BtnCopyFrom.ActProcessCard.Slave0".toLowerCase()); const copyToProcessConfig = config.filter( item => item.sControlName.toLowerCase() === "BtnCopyFrom.ActProcessCard.Process".toLowerCase() ); const controlAssignField = commonUtils.isNotEmptyArr(copyToControlConfig) ? copyToControlConfig[0].sAssignField : ""; const slave0AssignField = commonUtils.isNotEmptyArr(copyToSlave0Config) ? copyToSlave0Config[0].sAssignField : ""; const processAssignField = commonUtils.isNotEmptyArr(copyToProcessConfig) ? copyToProcessConfig[0].sAssignField : ""; const newCopyTo = {}; newCopyTo.master = masterData; newCopyTo.slave = commonUtils.isEmptyArr(tableData) ? {} : tableData; /* 订单选择产品 调用工艺卡数据 */ if (commonUtils.isNotEmptyArr(returnData.slaveData)) { returnData.slaveData.forEach(slaveItem => { /* 从工艺卡数据集 找到从表相同产品ID,客户ID */ if (slaveItem.sProductId === tableDataRow.sProductId) { /* 选中当前行 */ tableDataRow = { ...tableDataRow, ...commonFunc.getAssignFieldValue(slaveAssignField, slaveItem, newCopyTo) }; // 取赋值字段 // tableDataRow.sFatherSlaveId = slaveItem.sFatherSlaveId; tableDataRow.sOriginalId = commonUtils.isNotEmptyObject(slaveItem.sSlaveId) ? slaveItem.sSlaveId : slaveItem.sId; /* 原始sId */ tableDataRow.sBatchNo = tableDataRow.sId; /* 添加批次行 */ tableData[iIndex] = { ...tableData[iIndex], ...tableDataRow }; // 取赋值字段 } else { /* 其他数据 新增 */ newCopyTo.slave = slaveItem; let slaveRow = {}; slaveRow = { ...slaveRow, ...commonFunc.getAssignFieldValue(slaveAssignField, slaveItem, newCopyTo) }; // 取赋值字段 slaveRow.handleType = "add"; slaveRow.sFatherSlaveId = slaveItem.sFatherSlaveId; slaveRow.sId = commonUtils.createSid(); slaveRow.sParentId = masterData.sId; slaveRow.sOriginalId = commonUtils.isNotEmptyObject(slaveItem.sSlaveId) ? slaveItem.sSlaveId : slaveItem.sId; /* 原始sId */ slaveRow.sBatchNo = tableDataRow.sId; /* 添加批次行 */ tableData.push(slaveRow); } }); } /* 若有层级 则拼装新的slaveData层级 */ const tableFilterData = tableData.filter(item => item.sBatchNo === tableDataRow.sId); if (commonUtils.isNotEmptyArr(tableFilterData)) { const slaveNewData = commonUtils.genTreeDataByArrSales(tableFilterData, "sId", "sFatherSlaveId"); if (commonUtils.isNotEmptyArr(slaveNewData)) { slaveNewData.forEach(item => { const iIndex = tableData.findIndex(row => row.sId === item.sId); if (iIndex > -1) { tableData[iIndex] = { ...tableData[iIndex], ...item }; } }); } } if (commonUtils.isNotEmptyArr(returnData.controlData)) { // eslint-disable-next-line no-loop-func returnData.controlData.forEach(controlItem => { newCopyTo.control = controlItem; const newSid = commonUtils.createSid(); let controlRow = commonFunc.getDefaultData(controlConfig, newCopyTo, { newSid }); // 取默认值 controlRow = { ...controlRow, ...commonFunc.getAssignFieldValue(controlAssignField, controlItem, newCopyTo) }; // 取赋值字段 controlRow.handleType = "add"; controlRow.sId = newSid; controlRow.sSlaveId = tableDataRow.sId; controlRow.sParentId = masterData.sId; controlData.push(controlRow); if (commonUtils.isNotEmptyArr(returnData.slave0Data)) { returnData.slave0Data .filter(item => item.sControlId === controlItem.sId) .forEach(slave0Item => { newCopyTo.slave0 = slave0Item; const newSid = commonUtils.createSid(); let slave0Row = commonFunc.getDefaultData(slave0Config, newCopyTo, { newSid }); // 取默认值 slave0Row = { ...slave0Row, ...commonFunc.getAssignFieldValue(slave0AssignField, slave0Item, newCopyTo) }; // 取赋值字段 slave0Row.handleType = "add"; slave0Row.sId = newSid; slave0Row.sSlaveId = tableDataRow.sId; slave0Row.sParentId = masterData.sId; slave0Row.sControlId = controlRow.sId; slave0Row.sPartsName = controlRow.sPartsName; slave0Data.push(slave0Row); }); } if (commonUtils.isNotEmptyArr(returnData.processData)) { returnData.processData .filter(item => item.sControlId === controlItem.sId) .forEach(processItem => { newCopyTo.process = processItem; const newSid = commonUtils.createSid(); let processRow = commonFunc.getDefaultData(processConfig, newCopyTo, { newSid }); // 取默认值 processRow = { ...processRow, ...commonFunc.getAssignFieldValue(processAssignField, processItem, newCopyTo) }; // 取赋值字段 processRow.handleType = "add"; processRow.sId = newSid; processRow.sSlaveId = tableDataRow.sId; processRow.sParentId = masterData.sId; processRow.sControlId = controlRow.sId; processRow.sPartsName = controlRow.sPartsName; processData.push(processRow); }); } }); } if (commonUtils.isNotEmptyArr(returnData.slave0Data)) { // eslint-disable-next-line no-loop-func returnData.slave0Data .filter(item => item.sType === "2") .forEach(slave0Item => { newCopyTo.slave0 = slave0Item; const newSid = commonUtils.createSid(); let slave0Row = commonFunc.getDefaultData(slave0Config, newCopyTo, { newSid }); // 取默认值 slave0Row = { ...slave0Row, ...commonFunc.getAssignFieldValue(slave0AssignField, slave0Item, newCopyTo) }; // 取赋值字段 slave0Row.handleType = "add"; slave0Row.sId = newSid; slave0Row.sSlaveId = tableDataRow.sId; slave0Row.sParentId = masterData.sId; slave0Data.push(slave0Row); }); } if (commonUtils.isNotEmptyArr(returnData.processData)) { // eslint-disable-next-line no-loop-func returnData.processData .filter(item => item.sType === "3") .forEach(processItem => { newCopyTo.process = processItem; const newSid = commonUtils.createSid(); let processRow = commonFunc.getDefaultData(processConfig, newCopyTo, { newSid }); // 取默认值 processRow = { ...processRow, ...commonFunc.getAssignFieldValue(processAssignField, processItem, newCopyTo) }; // 取赋值字段 processRow.handleType = "add"; processRow.sId = newSid; processRow.sSlaveId = tableDataRow.sId; processRow.sParentId = masterData.sId; processData.push(processRow); }); } this.props.onSaveState({ controlData, slave0Data, processData }); } } } else if ( sModelsType === "sales/salesOrder" && (sFieldName === "dProductQty" || sFieldName === "dGiveQty" || sFieldName === "dStockupQty") && name === "slave" ) { const { controlData, slaveSelectedRowKeys } = this.props; const controlSelectedData = controlData.filter(item => item.sSlaveId === slaveSelectedRowKeys[0]); for (const one of controlSelectedData) { one.dPartsQty = commonUtils.isNull(tableDataRow.dProductQty, 0) + commonUtils.isNull(tableDataRow.dGiveQty, 0); } this.props.onSaveState({ controlData }); } else if ( sModelsType.includes("purchase/") && (sFieldName === "sMaterialsId" || sFieldName === "sMaterialsNo" || sFieldName === "sMaterialsName") && name === "slave" ) { const url = `${commonConfig.server_host}business/getProData?sModelsId=${sModelsId}`; const value = { sProName: "Sp_Cashier_GetMaterialsPrice", paramsMap: { sMaterialsGuid: changeValue.sMaterialsId, sSupplyGuid: masterData.sSupplyId, }, }; const returnData = (await commonServices.postValueService(app.token, value, url)).data; if (returnData.code === 1) { tableDataRow.dMaterialsPrice = returnData.dataset.rows[0].dataSet.outData[0].dPrice; } // else { // this.props.getServiceError(returnData); // } } else if (sModelsType === 'sales/salesCheck' && sFieldName === 'dLossMoney' && name === 'slave') { const dPmoney = this.props.getFloatNum('dProductMoney'); const { dNetPrice } = app.decimals; const dCurrencyRate = commonUtils.convertIsNotNumToNumber1(masterData.dCurrencyRate); /* 汇率 */ const dTaxRate = commonUtils.convertToNum(tableDataRow.dTaxRate); /* 税率 */ const dProductQty = commonUtils.convertToNum(tableDataRow.dProductQty); /* 数量 */ if (commonUtils.isNotEmptyNumber(tableDataRow.dSrcNoCheckMoney) && commonUtils.isNotEmptyNumber(tableDataRow.dLossMoney)) { const dProductForeignMoney = commonUtils.convertFixNum(tableDataRow.dSrcNoCheckMoney - tableDataRow.dLossMoney, dPmoney); const dProductMoney = commonUtils.convertFixNum(dCurrencyRate !== 0 ? dProductForeignMoney * dCurrencyRate : 0, dPmoney); /* 本位币金额 */ tableDataRow.dProductForeignMoney = dProductForeignMoney; tableDataRow.dProductMoney = dProductMoney; const dProductNoTaxMoney = commonUtils.convertFixNum(dProductMoney / (1 + (dTaxRate / 100)), dPmoney); /* 不含税金额 */ const dProductNoTaxPrice = commonUtils.convertFixNum(dProductQty !== 0 ? dProductNoTaxMoney / dProductQty : 0, dPmoney); /* 不含税价 */ const dProductTaxMoney = commonUtils.convertFixNum(dProductMoney - dProductNoTaxMoney, dPmoney); /* 税额 */ const dProductTaxForeignMoney = commonUtils.convertFixNum(dCurrencyRate !== 0 ? dProductTaxMoney / dCurrencyRate : 0, dPmoney); /* 外币税额 */ tableDataRow.dProductNoTaxMoney = dProductNoTaxMoney; /* 不含税金额 */ tableDataRow.dProductNoTaxPrice = dProductNoTaxPrice; /* 不含税价 */ tableDataRow.dProductTaxMoney = dProductTaxMoney; /* 税额 */ tableDataRow.dProductTaxForeignMoney = dProductTaxForeignMoney; /* 外币税额 */ /* 报损金额改变后 反算单价 */ tableDataRow.dProductForeignPrice = tableDataRow.dProductQty !==0 ? commonUtils.convertFixNum( dProductForeignMoney/tableDataRow.dProductQty, dNetPrice) : 0; /* 外币税额 */ tableDataRow.dProductPrice = tableDataRow.dProductQty !==0 ? commonUtils.convertFixNum( dProductMoney/tableDataRow.dProductQty, dNetPrice) : 0; /* 外币税额 */ } else if (commonUtils.isNotEmptyNumber(tableDataRow.dSrcNoCheckMoney) && commonUtils.isEmptyNumber(tableDataRow.dLossMoney)) { const dProductForeignMoney = commonUtils.isNull(tableDataRow.dSrcNoCheckMoney, 0); const dProductMoney = commonUtils.convertFixNum(dCurrencyRate !== 0 ? dProductForeignMoney * dCurrencyRate : 0, dPmoney); /* 本位币金额 */ tableDataRow.dProductForeignMoney = dProductForeignMoney; tableDataRow.dProductMoney = dProductMoney; tableDataRow.dLossMoney = 0; const dProductNoTaxMoney = commonUtils.convertFixNum(dProductMoney / (1 + (dTaxRate / 100)), dPmoney); /* 不含税金额 */ const dProductNoTaxPrice = commonUtils.convertFixNum(dProductQty !== 0 ? dProductNoTaxMoney / dProductQty : 0, dPmoney); /* 不含税价 */ const dProductTaxMoney = commonUtils.convertFixNum(dProductMoney - dProductNoTaxMoney, dPmoney); /* 税额 */ const dProductTaxForeignMoney = commonUtils.convertFixNum(dCurrencyRate !== 0 ? dProductTaxMoney / dCurrencyRate : 0, dPmoney); /* 外币税额 */ tableDataRow.dProductNoTaxMoney = dProductNoTaxMoney; /* 不含税金额 */ tableDataRow.dProductNoTaxPrice = dProductNoTaxPrice; /* 不含税价 */ tableDataRow.dProductTaxMoney = dProductTaxMoney; /* 税额 */ tableDataRow.dProductTaxForeignMoney = dProductTaxForeignMoney; /* 外币税额 */ } } else if (sModelsType && (sModelsType === 'purchase/purchasecheck' || sModelsType.includes('outside/outsideChecking') ) && sFieldName === 'dLossMoney' && name === 'slave') { const dPmoney = this.props.getFloatNum('dMaterialsMoney'); const { dNetPrice } = app.decimals; const dTaxRate = commonUtils.convertToNum(tableDataRow.dTaxRate); /* 税率 */ const type = 'Materials'; const dProductQty = commonUtils.convertToNum(tableDataRow[`d${type}Qty`]); /* 数量 */ if (commonUtils.isNotEmptyNumber(tableDataRow.dSrcNoCheckMoney) && commonUtils.isNotEmptyNumber(tableDataRow.dLossMoney)) { const dMoney = commonUtils.convertFixNum(tableDataRow.dSrcNoCheckMoney - tableDataRow.dLossMoney, dPmoney); tableDataRow[`d${type}Money`] = dMoney; const dProductNoTaxMoney = commonUtils.convertFixNum(dMoney / (1 + (dTaxRate / 100)), dPmoney); /* 不含税金额 */ const dProductNoTaxPrice = commonUtils.convertFixNum(dProductQty !== 0 ? dProductNoTaxMoney / dProductQty : 0, dPmoney); /* 不含税价 */ const dProductTaxMoney = commonUtils.convertFixNum(dMoney - dProductNoTaxMoney, dPmoney); /* 税额 */ tableDataRow[`d${type}NoTaxMoney`] = dProductNoTaxMoney; /* 不含税金额 */ tableDataRow[`d${type}NoTaxPrice`] = dProductNoTaxPrice; /* 不含税价 */ tableDataRow[`d${type}TaxMoney`] = dProductTaxMoney; /* 税额 */ /* 报损金额改变后 反算单价 */ tableDataRow[`d${type}Price`] = dProductQty !==0 ? commonUtils.convertFixNum( dMoney/dProductQty, dNetPrice) : 0; /* 外币税额 */ } else if (commonUtils.isNotEmptyNumber(tableDataRow.dSrcNoCheckMoney) && commonUtils.isEmptyNumber(tableDataRow.dLossMoney)) { tableDataRow.dMaterialsMoney = commonUtils.isNull(tableDataRow.dSrcNoCheckMoney, 0); tableDataRow.dLossMoney = 0; } } /* 各种金额,税额,价格计算 */ let models = name === "materials" ? "Materials" : sModelsType.includes("sales/") || sModelsType.includes("manufacture/") || sModelsType.includes("quotation/") || sModelsType.includes("productStock/") || sModelsType.includes("semigoodsStock/") ? "Product" : "Materials"; const bSaleMaterials = models === "Product" && commonUtils.isNotEmptyObject(tableDataRow.sMaterialsId); if ( sModelsType.includes("purchase/") || sModelsType.includes("quotation/") || sModelsType.includes("manufacture/") || sModelsType.includes("materialsStock/") || sModelsType.includes("outside/") || sModelsType.includes("semigoodsStock/") || sModelsType.includes("sales/materials") || sModelsType === "sales/salesCheck" ) { if (sModelsType.includes("sales/materials") || sModelsType === "sales/salesCheck" || bSaleMaterials) { tableDataRow.dAuxiliaryQty = tableDataRow.dProductQty; } tableDataRow = await this.handleMaterialsChange(tableDataRow, sModelsId, masterData, changeValue, sFieldName, app, token, models); } if (bSaleMaterials) { /* 如果是材料销售模块/销售对账 如果是材料 则用换算数量*单价 算金额 */ /* 材料逻辑计算 */ if (commonUtils.isNotEmptyNumber(tableDataRow.dMaterialsQty) && tableDataRow.dMaterialsQty !== 0) { let modelsNew = ""; if (models === "Product") { /* 计算前将Product替换为Materials */ modelsNew = "Materials"; const dCurrencyRate = commonUtils.convertIsNotNumToNumber1(masterData.dCurrencyRate); /* 汇率 */ const { dNetPrice } = app.decimals; const dForeignPrice = tableDataRow[`d${models}ForeignPrice`]; if (commonUtils.isNotEmptyNumber(dForeignPrice)) { /* 只有外币单价情況下 要算本位币单价 */ const dProductPrice = commonUtils.convertFixNum(dForeignPrice * dCurrencyRate, dNetPrice); tableDataRow[`d${models}Price`] = dProductPrice; } tableDataRow[`dN${modelsNew}Price`] = tableDataRow[`d${models}ForeignPrice`]; tableDataRow[`d${modelsNew}ForeignPrice`] = tableDataRow[`d${models}ForeignPrice`]; tableDataRow[`d${modelsNew}Price`] = tableDataRow[`d${models}Price`]; tableDataRow[`dN${modelsNew}Money`] = tableDataRow[`dN${models}Price`]; tableDataRow[`dN${modelsNew}Money`] = tableDataRow[`d${models}ForeignMoney`]; tableDataRow[`d${modelsNew}ForeignMoney`] = tableDataRow[`d${models}ForeignMoney`]; tableDataRow[`d${modelsNew}Money`] = tableDataRow[`d${models}Money`]; tableDataRow.bSalesMaterials = true; /* 材料销售 销售对账 材料计算 */ models = "Materials"; sFieldName = commonUtils.isNotEmptyObject(sFieldName) ? sFieldName.replace("Product", "Materials") : sFieldName; } } } tableDataRow = commonBusiness.getCalculateAllMoney(app, models, sFieldName, masterData, tableDataRow); let dMaterialsMoney = ""; if (sModelsType.includes("outside/")) { /* 工序发外 && (sFieldName === 'sSupplyName' || sFieldName === 'sProcessName' || sFieldName === 'dAuxiliaryQty') */ let sComputeId = {}; const sSupplyId = masterData.sSupplyId; const sProcessId = tableDataRow.sProcessId; if (commonUtils.isNotEmptyObject(sProcessId)) { /* 根据客户id,工序id获取公式ID */ sComputeId = await commonBusiness.getOutSideProcessFormula({ token, sModelsId, sSupplyId, sProcessId, }); if (!commonUtils.isEmpty(sComputeId)) { dMaterialsMoney = await commonBusiness.getFormulaValue({ token, sModelsId, masterData, tableDataRow, sComputeId, }); tableDataRow.dMaterialsMoney = dMaterialsMoney; tableDataRow = commonBusiness.getCalculateMoney(app, masterData, tableDataRow, "Materials"); } } /* 在detail表(加工工序)中将每一个工序都填写单价,算出金额,几个工序金额应该汇总到slave表(回厂信息)最后一道工序金额中,并要自动算单价 */ // /* 将改变数量、金额 汇总到slave0回厂信息表 */ const iSlave0ProductIndex = slave0Data.findIndex( item => commonUtils.isNotEmptyObject(item.sCombineProcessIds) && item.sCombineProcessIds.split(",").includes(tableDataRow.sSrcSlaveId) ); if (iSlave0ProductIndex > -1) { const addState = {}; let dMaterialsProductMoneyAll = 0; let dMaterialsProductPrice = 0; const slaveORow = slave0Data[iSlave0ProductIndex]; /* 合计该组金额 */ const slaveFilterData = tableData.filter( item => commonUtils.isNotEmptyObject(slaveORow.sCombineProcessIds) && slaveORow.sCombineProcessIds.split(",").includes(item.sSrcSlaveId) ); if (commonUtils.isNotEmptyArr(slaveFilterData)) { for (const one of slaveFilterData) { if (one.sId === tableDataRow.sId) { dMaterialsProductMoneyAll += tableDataRow.dMaterialsMoney; } else { dMaterialsProductMoneyAll += commonUtils.isNull(one.dMaterialsMoney, 0); } } } // /* 更新数量 */ // if(slaveORow.sCombineProcessIds){ // const sFirstId =commonUtils.isNotEmptyArr(slaveORow.sCombineProcessIds.split(',')) ? slaveORow.sCombineProcessIds.split(',')[0] : '' ; /* 找到第一条 */ // if(sFirstId === tableDataRow.sSrcSlaveId) { // addState.dAuxiliaryQty = tableDataRow.dAuxiliaryQty; // addState.dMaterialsQty = tableDataRow.dMaterialsQty; // } // } /* 更新数量(取同一部件,工序名称相同项数据的数量) */ if (slaveORow.sCombineProcessIds) { const sCombineProcessIdsArr = slaveORow.sCombineProcessIds.split(","); if (tableDataRow.sProcessName === slaveORow.sProcessName && sCombineProcessIdsArr.includes(tableDataRow.sSrcSlaveId)) { addState.dAuxiliaryQty = tableDataRow.dAuxiliaryQty; addState.dMaterialsQty = tableDataRow.dMaterialsQty; } } if (dMaterialsProductMoneyAll !== 0) { if (tableDataRow.dAuxiliaryQty !== 0) { dMaterialsProductPrice = commonUtils.convertFixNum(dMaterialsProductMoneyAll / slaveORow.dMaterialsQty, dNetPrice); } addState.dMaterialsMoney = dMaterialsProductMoneyAll; addState.dMaterialsPrice = dMaterialsProductPrice; } addState.handleType = commonUtils.isEmpty(slave0Data[iSlave0ProductIndex].handleType) ? "update" : slave0Data[iSlave0ProductIndex].handleType; slave0Data[iSlave0ProductIndex] = { ...slave0Data[iSlave0ProductIndex], ...addState }; slave0Data[iSlave0ProductIndex] = commonBusiness.getCalculateMoney(app, masterData, slave0Data[iSlave0ProductIndex], "Materials"); } this.props.onSaveState({ slave0Data, slaveData }); } else if ( sModelsType === "outside/outsideprocess1" && (sFieldName === "sSupplyName" || sFieldName === "sProcessName" || sFieldName === "dAuxiliaryQty") ) { /* 工序发外 */ tableDataRow = commonBusiness.getCalculateMoney(app, masterData, tableDataRow, "Materials"); } // 是否默认只能勾选一个 if (["bDefault"].includes(sFieldName)) { if (changeValue.bDefault) { tableData.forEach(i => { i && i.bDefault && (i.bDefault = false); }); } } if (isWait) { return tableDataRow; } else { tableData[iIndex] = tableDataRow; this.props.onSaveState({ [`${name}Data`]: tableData, enabled: true }); } } }; /** 删除表格数据 */ otherTableDel = (name, tableSelectedRowKeys) => { const tableData = this.props[`${name}Data`]; let tableDelData = this.props[`${name}DelData`]; tableDelData = commonUtils.isEmptyArr(tableDelData) ? [] : tableDelData; for (const sId of tableSelectedRowKeys) { /* 看看删除集合和从表中是否都存在该条数据 */ let tableDataIndex = tableData.findIndex(item => item.sControlId === sId); while (tableDataIndex > -1) { /* 删除从表中的数据并存入删除集合中 */ const slaveDataFilter = tableData[tableDataIndex]; tableData.splice(tableDataIndex, 1); slaveDataFilter.handleType = "del"; tableDelData.push(slaveDataFilter); tableDataIndex = tableData.findIndex(item => item.sControlId === sId); } } return { [`${name}Data`]: tableData, [`${name}DelData`]: tableDelData, [`${name}SelectedRowKeys`]: [] }; }; handleMaterialsChange = async (tableDataRow, sModelsId, masterData, changeValue, sFieldName, app, token, models) => { const { sComputeId, sConversionComputeId, sReConversionComputeId } = tableDataRow; const sFormulaIdType = tableDataRow.bInverse ? "sReComputeId" : "sComputeId"; /* 正算、反算类型 */ if ( sFieldName === "sMaterialsNo" || sFieldName === "sMaterialsName" || sFieldName === "dAuxiliaryQty" || sFieldName === "dReelAuxiliaryQty" || sFieldName === "dConversionQty" || sFieldName === "sMaterialsStyle" || sFieldName === "dProductQty" ) { if (sFieldName === "dReelAuxiliaryQty") { if (tableDataRow.sMaterialsUnit === "吨" && tableDataRow.bReel && tableDataRow.dGramWeight > 0) { tableDataRow = commonBusiness.getMaterialsQty( app, { ...tableDataRow, sMaterialsStyle: tableDataRow.sReelMaterialsStyle }, "dReelAuxiliaryQty", "dMaterialsQty" ); tableDataRow.dAuxiliaryQty = tableDataRow.dMaterialsQty; tableDataRow.sMaterialsStyle = tableDataRow.sMaterialsStyle !== undefined && tableDataRow.sMaterialsStyle.split("*").length > 1 ? tableDataRow.sMaterialsStyle.split("*")[0] : tableDataRow.sMaterialsStyle; tableDataRow.sAuxiliaryUnit = tableDataRow.sMaterialsUnit; } else if (tableDataRow.sMaterialsUnit.toUpper() === "M2" && tableDataRow.bReel) { tableDataRow = commonBusiness.getMaterialsQty(app, tableDataRow, "dReelAuxiliaryQty", "dMaterialsQty"); tableDataRow.dAuxiliaryQty = tableDataRow.dReelAuxiliaryQty; } else { tableDataRow.dAuxiliaryQty = tableDataRow.dReelAuxiliaryQty; } } if (commonUtils.isEmpty(sComputeId) && sFieldName !== "dConversionQty") { if (sFieldName === "dProductQty") { tableDataRow.dMaterialsQty = await commonBusiness.getFormulaValue({ token, sModelsId, masterData, tableDataRow, sComputeId, sFormulaIdType, }); // tableDataRow = commonBusiness.getMaterialsQty(app, tableDataRow, 'dProductQty', 'dMaterialsQty'); } else if (app.currentPane.sModelsType && app.currentPane.sModelsType.includes("outside/")) { tableDataRow = commonBusiness.getMaterialsQty(app, tableDataRow, "dAuxiliaryQty", "dMaterialsQty"); } else { tableDataRow.dMaterialsQty = await commonBusiness.getFormulaValue({ token, sModelsId, masterData, tableDataRow, sComputeId, sFormulaIdType, }); } } else if (!commonUtils.isEmpty(sComputeId)) { tableDataRow.dMaterialsQty = await commonBusiness.getFormulaValue({ token, sModelsId, masterData, tableDataRow, sComputeId, }); } if (sFieldName !== "dConversionQty" && !commonUtils.isEmpty(sConversionComputeId)) { tableDataRow.dConversionQty = await commonBusiness.getFormulaValue({ token, sModelsId, masterData, tableDataRow, sComputeId: sConversionComputeId, }); } } else if (sFieldName === "dMaterialsQty") { const { sReComputeId } = tableDataRow; if (commonUtils.isEmpty(sReComputeId) && tableDataRow.bInverse) { if (app.currentPane.sModelsType && app.currentPane.sModelsType.includes("outside/")) { tableDataRow = commonBusiness.getAuxiliaryQty(app, tableDataRow, sFieldName, "dAuxiliaryQty"); } else { tableDataRow.dAuxiliaryQty = await commonBusiness.getFormulaValue({ token, sModelsId, masterData, tableDataRow, sReComputeId, sFormulaIdType, }); } } else if (tableDataRow.bInverse) { tableDataRow.dAuxiliaryQty = await commonBusiness.getFormulaValue({ token, sModelsId, masterData, tableDataRow, sComputeId: sReComputeId, }); if (commonUtils.isNotEmptyArr(tableDataRow.dAuxiliaryQty) && tableDataRow.dAuxiliaryQty !== 0) { tableDataRow.dProductQty = tableDataRow.dAuxiliaryQty; } } if (!commonUtils.isEmpty(sReConversionComputeId)) { tableDataRow.dConversionQty = await commonBusiness.getFormulaValue({ token, sModelsId, masterData, tableDataRow, sComputeId: sReConversionComputeId, }); } } else if (sFieldName === "dAuxiliaryLossQty") { const tableDataRowNew = { ...tableDataRow, dAuxiliaryQty: tableDataRow.dAuxiliaryLossQty }; if (commonUtils.isEmpty(sComputeId)) { // tableDataRow = commonBusiness.getMaterialsQty(app, tableDataRow, sFieldName, 'dLossQty'); tableDataRow.dLossQty = await commonBusiness.getFormulaValue({ token, sModelsId, masterData, tableDataRow: tableDataRowNew, sComputeId, sFormulaIdType, }); } else { tableDataRow.dLossQty = await commonBusiness.getFormulaValue({ token, sModelsId, masterData, tableDataRow: tableDataRowNew, sComputeId, }); } if (!commonUtils.isEmpty(tableDataRow.dSrcSurplusAuxiliaryQty)) { tableDataRow.dAuxiliaryQty = tableDataRow.dSrcSurplusAuxiliaryQty - tableDataRow.dAuxiliaryLossQty; tableDataRow.dMaterialsQty = commonUtils.convertFixNum(tableDataRow.dSrcSurplusQty - tableDataRow.dLossQty, 6); } } else if (sFieldName === "dLossQty") { const { sReComputeId } = tableDataRow; const tableDataRowNew = { ...tableDataRow, dMaterialsQty: tableDataRow.dLossQty }; if (commonUtils.isEmpty(sReComputeId) && tableDataRow.bInverse) { // tableDataRow = commonBusiness.getAuxiliaryQty(app, tableDataRow, sFieldName, 'dAuxiliaryLossQty'); tableDataRow.dAuxiliaryLossQty = await commonBusiness.getFormulaValue({ token, sModelsId, masterData, tableDataRow: tableDataRowNew, sReComputeId, sFormulaIdType, }); } else { tableDataRow.dAuxiliaryLossQty = await commonBusiness.getFormulaValue({ token, sModelsId, masterData, tableDataRow: tableDataRowNew, sComputeId: sReComputeId, }); } if (!commonUtils.isEmpty(tableDataRow.dSrcSurplusAuxiliaryQty)) { tableDataRow.dAuxiliaryQty = tableDataRow.dSrcSurplusAuxiliaryQty - tableDataRow.dAuxiliaryLossQty; tableDataRow.dMaterialsQty = tableDataRow.dSrcSurplusQty - tableDataRow.dLossQty; } } else if (sFieldName === "sProcessId" || sFieldName === "sProcessNo" || sFieldName === "sProcessName") { const sProcessId = changeValue.sProcessId; const url = `${commonConfig.server_host}process/outsideprocess?sModelsId=${sModelsId}&sProcessId=${sProcessId}`; const dataReturn = (await commonServices.getService(token, url)).data; if (dataReturn.code === 1) { if (commonUtils.isNotEmptyArr(dataReturn.dataset.rows)) { tableDataRow.dMaterialsPrice = dataReturn.dataset.rows[0].dMaterialsPrice; } tableDataRow = commonBusiness.getCalculateAllMoney(app, models, "dMaterialsPrice", masterData, tableDataRow); } } return tableDataRow; }; handleMasterChange = async (name, sFieldName, changeValue, sId, dropDownData, isWait, masterDataNew) => { // if (sFieldName === 'sZczlx' && changeValue.sZczlx === '01') { // this.handleClearAllData(); // return; // } const { sModelsId, sModelsType, masterData: masterDataOld, app, masterConfig, slaveConfig, token } = this.props; let { slaveData, slave0Data = [] } = this.props; const addState = {}; const masterData = masterDataNew === undefined ? (masterDataOld === undefined ? {} : masterDataOld) : masterDataNew; let bNewSlaveData = false; if ( sModelsType && (sModelsType.includes("sales/") || sModelsType.includes("productStock/")) && (sFieldName === "sCustomerId" || sFieldName === "sCustomerNo" || sFieldName === "sCustomerName") ) { if (commonUtils.isNotEmptyArr(slaveData)) { // 从表有数据,请删除后修改客户!不能去掉 if (slaveData.length === 1 && commonUtils.isEmpty(slaveData[0].sProductId)) { bNewSlaveData = true; } else { message.warn(commonFunc.showMessage(app.commonConst, "slaveHasDataPleaseDel")); return; } } changeValue.tGetPayDate = commonBusiness.getGeyPayDate({ ...masterData, ...changeValue }); // commonUtils.setStoreDropDownData(sModelsId, 'slave', 'sProductId', []); // commonUtils.setStoreDropDownData(sModelsId, 'slave', 'sProductNo', []); // commonUtils.setStoreDropDownData(sModelsId, 'slave', 'sProductName', []); // // commonUtils.setStoreDropDownData(sModelsId, 'master', 'sProductId', []); // commonUtils.setStoreDropDownData(sModelsId, 'master', 'sProductNo', []); // commonUtils.setStoreDropDownData(sModelsId, 'master', 'sProductName', []); } if (sFieldName === "sSupplyId" || sFieldName === "sSupplyNo" || sFieldName === "sSupplyName") { changeValue.tGetPayDate = commonBusiness.getGeyPayDate({ ...masterData, ...changeValue }); } else if (sFieldName === "sWareHouseId" || sFieldName === "sWareHouseNo" || sFieldName === "sWareHouseName") { commonUtils.setStoreDropDownData(sModelsId, "slave", "sMaterialsId", []); commonUtils.setStoreDropDownData(sModelsId, "slave", "sMaterialsNo", []); commonUtils.setStoreDropDownData(sModelsId, "slave", "sMaterialsName", []); if (sModelsType === "materialsStock/materialsCheck" || sModelsType === "productStock/productCheck") { let value = {}; if (sModelsType === "materialsStock/materialsCheck") { value = { sProName: "Sp_System_AccountSquareCheck", paramsMap: { iType2: 1, sWareHouseGuid: commonUtils.isNotEmptyObject(changeValue.sWareHouseId) ? changeValue.sWareHouseId : "", }, }; } else if (sModelsType === "productStock/productCheck") { value = { sProName: "Sp_System_AccountSquareCheck", paramsMap: { iType2: 2, sWareHouseGuid: commonUtils.isNotEmptyObject(changeValue.sWareHouseId) ? changeValue.sWareHouseId : "", }, }; } const url = `${commonConfig.server_host}business/getProData?sModelsId=${sModelsId}`; const returnData = (await commonServices.postValueService(app.token, value, url)).data; if (returnData.code === 1) { const outData = returnData.dataset.rows[0].dataSet.outData[0]; if (outData.sCode === -1) { message.error(outData.sReturn); return; } } else { this.props.getServiceError(returnData); return; } } } else if (sModelsType.includes("cashier/") && sFieldName === "sBillType") { commonUtils.setStoreDropDownData(sModelsId, "master", "sCustomerId", []); commonUtils.setStoreDropDownData(sModelsId, "master", "sCustomerNo", []); commonUtils.setStoreDropDownData(sModelsId, "master", "sCustomerName", []); commonUtils.setStoreDropDownData(sModelsId, "master", "sSupplyId", []); commonUtils.setStoreDropDownData(sModelsId, "master", "sSupplyNo", []); commonUtils.setStoreDropDownData(sModelsId, "master", "sSupplyName", []); commonUtils.setStoreDropDownData(sModelsId, "master", "sFamilyId", []); commonUtils.setStoreDropDownData(sModelsId, "master", "sFamilyNo", []); commonUtils.setStoreDropDownData(sModelsId, "master", "sFamilyName", []); changeValue.sCustomerId = ""; const iIndex = masterConfig.gdsconfigformslave.findIndex(item => item.sName === "sCustomerId"); if (iIndex > -1) { masterConfig.gdsconfigformslave[iIndex].bReGetDropDown = true; } changeValue.sSupplyId = ""; const iSupplyIndex = masterConfig.gdsconfigformslave.findIndex(item => item.sName === "sSupplyId"); if (iSupplyIndex > -1) { masterConfig.gdsconfigformslave[iSupplyIndex].bReGetDropDown = true; } /* 财务调整中切换调整类型后,对象名称清空 */ const sBillTypeIndex = masterConfig.gdsconfigformslave.findIndex(item => item.sName === "sFamilyName"); if (sBillTypeIndex > -1) { masterData.sFamilyName = ""; } this.props.onSaveState({ masterConfig }); } else if (sFieldName === "sGetPayId") { changeValue.tGetPayDate = commonBusiness.getGeyPayDate({ ...masterData, ...changeValue }); } else if (sFieldName === "sSettlementId") { if (changeValue.sSettlementId === "cash") { const sBankAccountIndex = masterConfig.gdsconfigformslave.findIndex(item => item.sName === "sBankAccount"); if (sBankAccountIndex > -1) { masterConfig.gdsconfigformslave[sBankAccountIndex].iTag = 1; masterData.sBankAccount = ""; } const sInvoiceNoIndex = masterConfig.gdsconfigformslave.findIndex(item => item.sName === "sInvoiceNo"); if (sInvoiceNoIndex > -1) { masterConfig.gdsconfigformslave[sInvoiceNoIndex].iTag = 1; masterData.sInvoiceNo = ""; } const sBankIdIndex = masterConfig.gdsconfigformslave.findIndex(item => item.sName === "sBankId" || item.sName === "sBankName"); if (sBankIdIndex > -1) { masterConfig.gdsconfigformslave[sBankIdIndex].iTag = 1; masterData.sBankId = ""; masterData.sBankName = ""; } const tDueDateIndex = masterConfig.gdsconfigformslave.findIndex(item => item.sName === "tDueDate"); if (tDueDateIndex > -1) { masterConfig.gdsconfigformslave[tDueDateIndex].iTag = 1; delete masterData.tDueDate; } } if (changeValue.sSettlementId === "bank") { const sInvoiceNoIndex = masterConfig.gdsconfigformslave.findIndex(item => item.sName === "sInvoiceNo"); if (sInvoiceNoIndex > -1) { masterConfig.gdsconfigformslave[sInvoiceNoIndex].iTag = 1; masterData.sInvoiceNo = ""; } const sBankAccountIndex = masterConfig.gdsconfigformslave.findIndex(item => item.sName === "sBankAccount"); if (sBankAccountIndex > -1) { masterConfig.gdsconfigformslave[sBankAccountIndex].iTag = 0; } const sBankIdIndex = masterConfig.gdsconfigformslave.findIndex(item => item.sName === "sBankId" || item.sName === "sBankName"); if (sBankIdIndex > -1) { masterConfig.gdsconfigformslave[sBankIdIndex].iTag = 0; } const tDueDateIndex = masterConfig.gdsconfigformslave.findIndex(item => item.sName === "tDueDate"); if (tDueDateIndex > -1) { masterConfig.gdsconfigformslave[tDueDateIndex].iTag = 1; delete masterData.tDueDate; } } if (changeValue.sSettlementId === "bill") { const sBankAccountIndex = masterConfig.gdsconfigformslave.findIndex(item => item.sName === "sBankAccount"); if (sBankAccountIndex > -1) { masterConfig.gdsconfigformslave[sBankAccountIndex].iTag = 1; masterData.sBankAccount = ""; } const sInvoiceNoIndex = masterConfig.gdsconfigformslave.findIndex(item => item.sName === "sInvoiceNo"); if (sInvoiceNoIndex > -1) { masterConfig.gdsconfigformslave[sInvoiceNoIndex].iTag = 0; } const sBankIdIndex = masterConfig.gdsconfigformslave.findIndex(item => item.sName === "sBankId"); if (sBankIdIndex > -1) { masterConfig.gdsconfigformslave[sBankIdIndex].iTag = 0; } const tDueDateIndex = masterConfig.gdsconfigformslave.findIndex(item => item.sName === "tDueDate"); if (tDueDateIndex > -1) { masterConfig.gdsconfigformslave[tDueDateIndex].iTag = 0; } } } let returnData = this.props.onChange(name, sFieldName, changeValue, sId, dropDownData, true, masterData); const masterDataAfter = commonBusiness.getKeyUpEvent(name, sFieldName, masterConfig, returnData.masterData, {}, true); if (commonUtils.isNotEmptyObject(masterDataAfter)) { returnData.masterData = masterDataAfter; } if ( sFieldName === "sSupplyId" || sFieldName === "sSupplyNo" || sFieldName === "sSupplyName" || sFieldName === "sWareHouseId" || sFieldName === "sWareHouseNo" || sFieldName === "sWareHouseName" || sFieldName === "tDeliverDate" || sFieldName === "sCurrency" || sFieldName === "dCurrencyRate" || sFieldName === "sCurrencyName" ) { const slaveDataNew = []; const models = sModelsType.includes("sales/") || sModelsType.includes("manufacture/") || sModelsType.includes("productStock/") ? "Product" : "Materials"; for (const item of slaveData) { let tableDataRow = (sFieldName === "sWareHouseId" || sFieldName === "sWareHouseNo" || sFieldName === "sWareHouseName") && sModelsType.includes("materialsStock/productionmaterialsadjust") ? { ...item } : { ...item, [sFieldName]: changeValue[sFieldName] }; if (sFieldName === "sSupplyId" || sFieldName === "sSupplyNo" || sFieldName === "sSupplyName") { tableDataRow.sTaxId = changeValue.sTaxId; tableDataRow.sTaxNo = changeValue.sTaxNo; tableDataRow.sTaxName = changeValue.sTaxName; tableDataRow.dTaxRate = changeValue.dTaxRate; tableDataRow.handleType = commonUtils.isEmpty(tableDataRow.handleType) ? "update" : tableDataRow.handleType; let dMaterialsMoney = ""; if (sModelsType && sModelsType.includes("outside/")) { /* 工序发外 */ let sComputeId = ""; const sSupplyId = changeValue.sSupplyId; const sProcessId = tableDataRow.sProcessId; /* 根据客户id,工序id获取公式ID */ if (commonUtils.isNotEmptyObject(sSupplyId) && commonUtils.isNotEmptyObject(sProcessId)) { sComputeId = await commonBusiness.getOutSideProcessFormula({ token, sModelsId, sSupplyId, sProcessId, }); console.log("sComputeId", sComputeId); if (commonUtils.isNotEmptyObject(sComputeId)) { dMaterialsMoney = await commonBusiness.getFormulaValue({ token, sModelsId, masterData: returnData.masterData, tableDataRow, sComputeId, }); console.log("dMaterialsMoney", dMaterialsMoney); tableDataRow.dMaterialsMoney = dMaterialsMoney; tableDataRow = commonBusiness.getCalculateMoney(app, returnData.masterData, tableDataRow, "Materials"); } // else { // tableDataRow.dMaterialsPrice = 0; // tableDataRow.dMaterialsMoney = 0; // } } } else { tableDataRow = commonBusiness.getCalculateAllMoney(app, models, "sTaxId", returnData.masterData, tableDataRow); } } else if (sFieldName === "sCurrency" || sFieldName === "dCurrencyRate" || sFieldName === "sCurrencyName") { tableDataRow = commonBusiness.getCalculateAllMoney(app, models, `d${models}ForeignPrice`, returnData.masterData, tableDataRow); tableDataRow.handleType = commonUtils.isEmpty(tableDataRow.handleType) ? "update" : tableDataRow.handleType; } if ( (sFieldName === "sWareHouseId" || sFieldName === "sWareHouseNo" || sFieldName === "sWareHouseName") && !sModelsType.includes("materialsStock/productionmaterialsadjust") ) { tableDataRow.sWareHouseId = changeValue.sWareHouseId; tableDataRow.sWareHouseNo = changeValue.sWareHouseNo; tableDataRow.sWareHouseName = changeValue.sWareHouseName; tableDataRow.sLocationId = changeValue.sLocationId; tableDataRow.sLocationNo = changeValue.sLocationNo; tableDataRow.sLocationName = changeValue.sLocationName; tableDataRow.sWareHouseLocationId = changeValue.sWareHouseLocationId; tableDataRow.sWareHouseLocationNo = changeValue.sWareHouseLocationNo; tableDataRow.sWareHouseLocationName = changeValue.sWareHouseLocationName; tableDataRow.handleType = commonUtils.isEmpty(tableDataRow.handleType) ? "update" : tableDataRow.handleType; } slaveDataNew.push(tableDataRow); } addState.slaveData = slaveDataNew; // this.props.onSaveState({ slaveData: slaveDataNew }); if (sFieldName === "sSupplyId" || sFieldName === "sSupplyNo" || sFieldName === "sSupplyName") { const slave0DataNew = []; for (const item of slave0Data) { let tableDataRow = { ...item }; tableDataRow.sTaxId = changeValue.sTaxId; tableDataRow.sTaxNo = changeValue.sTaxNo; tableDataRow.sTaxName = changeValue.sTaxName; tableDataRow.dTaxRate = changeValue.dTaxRate; tableDataRow.handleType = commonUtils.isEmpty(tableDataRow.handleType) ? "update" : tableDataRow.handleType; tableDataRow = commonBusiness.getCalculateMoney(app, returnData.masterData, tableDataRow, "Materials"); slave0DataNew.push(tableDataRow); } addState.slave0Data = slave0DataNew; } } else if (sFieldName === "sCustomerId" || sFieldName === "sCustomerNo" || sFieldName === "sCustomerName") { if (commonUtils.isNotEmptyArr(slaveData)) { // 从表有数据,请删除后修改客户!不能去掉 if (slaveData.length === 1 && commonUtils.isEmpty(slaveData[0].sProductId)) { bNewSlaveData = true; } else { message.warn(commonFunc.showMessage(app.commonConst, "slaveHasDataPleaseDel")); return; } } if (bNewSlaveData && commonUtils.isEmptyArr(slaveData)) { const slaveDataNew = []; const allTableData = {}; allTableData.master = returnData.masterData; const newSid = commonUtils.createSid(); const tableDataRowAdd = commonFunc.getDefaultData(slaveConfig, allTableData, { newSid }); tableDataRowAdd.handleType = "add"; tableDataRowAdd.sId = newSid; tableDataRowAdd.sParentId = masterData && masterData.sId ? masterData.sId : null; tableDataRowAdd.key = tableDataRowAdd.sId; tableDataRowAdd.bDefault = false; tableDataRowAdd.iOrder = 0; slaveDataNew.push(tableDataRowAdd); addState.slaveData = slaveDataNew; // this.props.onSaveState({ slaveData: slaveDataNew }); } // else if (sModelsType.includes('sales/') || sModelsType.includes('cashier/') || sModelsType.includes('manufacture/')) { // 获取应收款 // if (commonUtils.isNotEmptyObject(masterData)) { // this.getCustomerReceipt({ masterData: returnData.masterData }); // } // } } else if (sFieldName === "sExpenseeName") { let { slaveDelData, slave0DelData } = this.props; const allTableData = {}; allTableData.master = returnData.masterData; const newCopyTo = {}; newCopyTo.master = masterData; const slaveDataNew = []; const slave0DataNew = []; if (commonUtils.isEmptyArr(slaveDelData)) { slaveDelData = []; } if (commonUtils.isEmptyArr(slave0DelData)) { slave0DelData = []; } //获取部门名称数据 let sDepartNameDropDown; const masterIndex = masterConfig.gdsconfigformslave.findIndex(item => item.sName === "sDepartName"); slaveData.forEach(item => { item.handleType = "del"; slaveDelData.push(item); }); if (masterIndex > -1) { const config = masterConfig.gdsconfigformslave[masterIndex]; const slaveAssignField = config.sAssignField || ""; const sqlDropDownData = await this.props.getSqlDropDownData( sModelsId, "master", masterConfig.gdsconfigformslave[masterIndex], returnData.masterData ); sDepartNameDropDown = sqlDropDownData.dropDownData; sDepartNameDropDown.forEach(item => { const newSid = commonUtils.createSid(); let tableDataRowAdd = commonFunc.getDefaultData(slaveConfig, allTableData, { newSid }); tableDataRowAdd = { ...tableDataRowAdd, ...commonFunc.getAssignFieldValue(slaveAssignField, item, newCopyTo) }; // 取赋值字段 tableDataRowAdd.handleType = "add"; tableDataRowAdd.sId = newSid; tableDataRowAdd.sParentId = masterData && masterData.sId ? masterData.sId : null; tableDataRowAdd.key = tableDataRowAdd.sId; tableDataRowAdd.bDefault = false; tableDataRowAdd.iOrder = 0; slaveDataNew.push(tableDataRowAdd); }); } // 获取工作中心数据 let sWorkCenterNameDropDown; const master1Index = masterConfig.gdsconfigformslave.findIndex(item => item.sName === "sWorkCenterName"); slave0Data.forEach(item => { item.handleType = "del"; slave0DelData.push(item); }); if (master1Index > -1) { const config = masterConfig.gdsconfigformslave[master1Index]; const slaveAssignField = config.sAssignField || ""; const sqlDropDownData = await this.props.getSqlDropDownData( sModelsId, "master", masterConfig.gdsconfigformslave[master1Index], returnData.masterData ); sWorkCenterNameDropDown = sqlDropDownData.dropDownData; sWorkCenterNameDropDown.forEach(item => { const newSid = commonUtils.createSid(); let tableDataRowAdd = commonFunc.getDefaultData(slaveConfig, allTableData, { newSid }); tableDataRowAdd = { ...tableDataRowAdd, ...commonFunc.getAssignFieldValue(slaveAssignField, item, newCopyTo) }; // 取赋值字段 tableDataRowAdd.handleType = "add"; tableDataRowAdd.sId = newSid; tableDataRowAdd.sParentId = masterData && masterData.sId ? masterData.sId : null; tableDataRowAdd.key = tableDataRowAdd.sId; tableDataRowAdd.bDefault = false; tableDataRowAdd.iOrder = 1; slave0DataNew.push(tableDataRowAdd); }); } addState.slaveData = slaveDataNew; addState.slaveDelData = slaveDelData; addState.slave0Data = slave0DataNew; addState.slave0DelData = slave0DelData; } const models = name === "materials" ? "Materials" : sModelsType.includes("sales/") || sModelsType.includes("manufacture/") || sModelsType.includes("quotation/") || sModelsType.includes("productStock/") || sModelsType.includes("semigoodsStock/") ? "Product" : "Materials"; if ( sModelsType.includes("purchase/") || sModelsType.includes("quotation/") || sModelsType.includes("manufacture/") || sModelsType.includes("materialsStock/") || sModelsType.includes("outside/") || sModelsType.includes("semigoodsStock/") ) { const masterData = await this.handleMaterialsChange( returnData.masterData, sModelsId, masterData, changeValue, sFieldName, app, token, models ); returnData = { ...returnData, masterData }; } /* 将改变数量、金额 汇总到slave0回厂信息表 */ if (commonUtils.isNotEmptyArr(addState.slaveData) && commonUtils.isNotEmptyArr(addState.slave0Data)) { const { dNetPrice } = app.decimals; for (const tableDataRow of addState.slaveData) { const iSlave0ProductIndex = addState.slave0Data.findIndex( item => commonUtils.isNotEmptyObject(item.sCombineProcessIds) && item.sCombineProcessIds.split(",").includes(tableDataRow.sSrcSlaveId) ); if (iSlave0ProductIndex > -1) { const addState1 = {}; let dMaterialsProductMoneyAll = 0; let dMaterialsProductPrice = 0; const slaveORow = slave0Data[iSlave0ProductIndex]; /* 合计该组金额 */ const slaveFilterData = addState.slaveData.filter( item => commonUtils.isNotEmptyObject(slaveORow.sCombineProcessIds) && slaveORow.sCombineProcessIds.split(",").includes(item.sSrcSlaveId) ); if (commonUtils.isNotEmptyArr(slaveFilterData)) { for (const one of slaveFilterData) { if (one.sId === tableDataRow.sId) { dMaterialsProductMoneyAll += commonUtils.isNull(tableDataRow.dMaterialsMoney, 0); } else { dMaterialsProductMoneyAll += commonUtils.isNull(one.dMaterialsMoney, 0); } } } /* 更新数量(取同一部件,工序名称相同项数据的数量) */ if (slaveORow.sCombineProcessIds) { const sCombineProcessIdsArr = slaveORow.sCombineProcessIds.split(","); if (tableDataRow.sProcessName === slaveORow.sProcessName && sCombineProcessIdsArr.includes(tableDataRow.sSrcSlaveId)) { addState1.dAuxiliaryQty = tableDataRow.dAuxiliaryQty; addState1.dMaterialsQty = tableDataRow.dMaterialsQty; } } if (dMaterialsProductMoneyAll !== 0) { if (tableDataRow.dAuxiliaryQty !== 0) { dMaterialsProductPrice = commonUtils.convertFixNum(dMaterialsProductMoneyAll / slaveORow.dMaterialsQty, dNetPrice); } addState1.dMaterialsMoney = dMaterialsProductMoneyAll; addState1.dMaterialsPrice = dMaterialsProductPrice; } addState1.handleType = commonUtils.isEmpty(addState.slave0Data[iSlave0ProductIndex].handleType) ? "update" : addState.slave0Data[iSlave0ProductIndex].handleType; addState.slave0Data[iSlave0ProductIndex] = { ...addState.slave0Data[iSlave0ProductIndex], ...addState1 }; addState.slave0Data[iSlave0ProductIndex] = commonBusiness.getCalculateMoney( app, masterData, addState.slave0Data[iSlave0ProductIndex], "Materials" ); } } } if (isWait) { return { ...returnData, ...addState }; } else { this.props.onSaveState({ ...returnData, ...addState }, () => { if (["17038380450009419160550182640000"].includes(sModelsId)) { if (["tYear"].includes(sFieldName)) { this.props.onSaveState({ pageLoading: true }); this.handleButtonClick("BtnCalc").finally(() => { this.props.onSaveState({ pageLoading: false }); }); } } }); return returnData; } }; // 清空所有数据 handleClearAllData = () => { const { masterConfig, masterData = {}, slaveData = [] } = this.props; const { handleType = "update", sId } = masterData; const copyTo = { master: masterData, slave: slaveData, }; const addState = {}; addState.masterData = { ...commonFunc.getDefaultData(masterConfig, copyTo), handleType, sId, }; for (let i = 0; i < 11; i++) { const num = i == 0 ? "" : i - 1; const slaveName = `slave${num}`; const onlySlaveName = `onlySlave${num}`; const onlySlaveValue = this.props[onlySlaveName]; if (onlySlaveValue) { addState[`${slaveName}Data`] = []; if (handleType === "update") { const slaveDataOld = this.props[`${slaveName}Data`] || []; addState[`${slaveName}DelData`] = slaveDataOld.filter(item => item.handleType !== "add1").map(item => ({ ...item, handleType: "del" })); } } } this.props.onSaveState(addState); }; handleBtnPrint = async (sActiveId, checked, eKey) => { const { app, sModelsId, masterConfig, masterData, slaveConfig, sModelsType, reportData, menuChildData, formRoute, controlConfig } = this.props; if (sModelsType === "manufacture/workOrder") { this.handleUpdateProduction(); } const { token } = app; const queryFilter = {}; queryFilter[masterConfig.sId] = { sId: masterData.sId }; if (commonUtils.isNotEmptyObject(slaveConfig)) { queryFilter[slaveConfig.sId] = { sSqlCondition: { sParentId: masterData.sId } }; } const queryFilterJson = JSON.stringify(queryFilter); // const masterDataJson = JSON.stringify(masterData); /* 拿到打印报表名称 */ let printReportName = "report"; let printCustomerReportName = "report"; if (commonUtils.isNotEmptyArr(reportData)) { const iIndex = reportData.findIndex(item => item.sId === sActiveId); if (iIndex > -1) { printReportName = reportData[iIndex].sReportName; } } if (commonUtils.isNotEmptyArr(menuChildData)) { const iIndex = menuChildData.findIndex(item => item.sId === sActiveId); if (iIndex > -1) { printCustomerReportName = menuChildData[iIndex].sReportName; } } let urlPrint = ""; if (formRoute === "/indexPage/printlabel") { if ( commonUtils.isNotEmptyObject(masterData) && masterData.dTrunkQty !== undefined && masterData.dFractionQty !== undefined && masterData.dPackQty !== undefined ) { // masterData中必填的三个字段 // const param = masterDataJson; /* 把masterData放在数组中 */ const ListData = []; ListData.push(masterData); const param = JSON.stringify(ListData); if (eKey.indexOf("BtnPrint.") > -1) { urlPrint = `${commonConfig.file_host}printReport/printPdf/${sActiveId}/${printReportName}.pdf?${ checked ? "fileType=.xlsx&" : "" }printType=noquery&sModelsId=${sModelsId}&token=${encodeURIComponent(token)}`; } else if (eKey.indexOf("BtnPrintCus.") > -1) { urlPrint = `${commonConfig.file_host}printReport/printPdf/${printCustomerReportName}?${ checked ? "fileType=.xlsx&" : "" }printType=noquery&sModelsId=${sModelsId}&token=${encodeURIComponent(token)}`; } /* Get提交地址栏参数过多,更改Get提交为Post提交 */ this.handleOpenPost(urlPrint, param); } else { const dTrunkQtyName = masterConfig.gdsconfigformslave.filter(item => item.sName === "dTrunkQty"); const dFractionQtyName = masterConfig.gdsconfigformslave.filter(item => item.sName === "dFractionQty"); const dPackQtyName = masterConfig.gdsconfigformslave.filter(item => item.sName === "dPackQty"); if (masterData.dTrunkQty === undefined && commonUtils.isNotEmptyObject(dTrunkQtyName)) { message.error(`${dTrunkQtyName[0].showName} 必填项!`); } else if (masterData.dFractionQty === undefined && commonUtils.isNotEmptyObject(dFractionQtyName)) { message.error(`${dFractionQtyName[0].showName} 必填项!`); } else if (masterData.dPackQty === undefined && commonUtils.isNotEmptyObject(dPackQtyName)) { message.error(`${dPackQtyName[0].showName} 必填项!`); } return; } } else if (eKey.indexOf("BtnPrint.") > -1) { let { controlSelectedRowKeys } = this.props; /* 不出现选择框,则打印全部;出现选择框,则打印勾选的 */ let bisMutiSelect = false; if (commonUtils.isNotEmptyObject(controlConfig) && commonUtils.isNotEmptyArr(controlConfig.gdsconfigformslave)) { const filterData = controlConfig.gdsconfigformslave.filter(item => item.sControlName === "bisMutiSelect"); if (commonUtils.isNotEmptyArr(filterData)) { bisMutiSelect = filterData[0].bVisible; } } if (bisMutiSelect === false || bisMutiSelect === undefined) { controlSelectedRowKeys = []; } urlPrint = `${commonConfig.file_host}printReport/printPdf/${sActiveId}/${printReportName}.pdf?${ checked ? "fileType=.xlsx&" : "" }sModelsId=${sModelsId}&sMaintableId=${masterConfig.sId}&sControlIds=${ commonUtils.isNotEmptyArr(controlSelectedRowKeys) ? controlSelectedRowKeys : [] }`; } else if (eKey.indexOf("BtnPrintCus.") > -1) { urlPrint = `${commonConfig.file_host}printReport/printPdf/${printCustomerReportName}?${ checked ? "fileType=.xlsx&" : "" }sModelsId=${sModelsId}&sMaintableId=${masterConfig.sId}`; } if (formRoute !== "/indexPage/printlabel") { window.open(`${encodeURI(`${urlPrint}&queryFilter=${queryFilterJson}`)}&token=${encodeURIComponent(token)}`); } }; handleOpenPost = (url, params) => { const newWin = window.open(); let formStr = ""; formStr = `
` + `` + "
"; newWin.document.body.innerHTML = formStr; newWin.document.forms[0].submit(); return newWin; }; handleUpdateProduction = async () => { const { sModelsId, masterData } = this.props; const { sBillNo, sId } = masterData || {}; const dataUrl = `${commonConfig.server_host}business/addUpdateDelBusinessData?sModelsId=${sModelsId}&sBillNo=${sBillNo}&sSysLogSrcId=${sId}`; const value = { data: [ { sTable: "mftworkordermaster", column: [{ handleType: "update", sId: masterData.sId, bProduction: 1 }], }, ], sClientType: "1", }; const dataReturn = (await commonServices.postValueService(this.props.app.token, value, dataUrl)).data; if (dataReturn.code === 1) { message.success(dataReturn.msg); } else { this.props.getServiceError(dataReturn); } }; handleTitleChange = (name, slavePagination) => { this.props.onSaveState({ [`${name}Pagination`]: slavePagination }); }; /* 工单、工艺卡、报价单控制表回带图片地址 */ handleFilfileManageOk = async (controlFilfileData, controlFilfileDelData, sSrcSlaveId) => { const { controlData: tableData, app, sModelsId, token, controlConfig } = this.props; if (commonUtils.isNotEmptyObject(sSrcSlaveId)) { if (commonUtils.isNotEmptyArr(controlFilfileDelData)) { const addState = {}; const iIndex = tableData.findIndex(item => item.sId === sSrcSlaveId); if (iIndex > -1) { const tableDataNewRow = tableData[iIndex]; const { sMaterialsPicturePath, sMachinePicturePath } = tableDataNewRow; const controlsMaterialsPictureDelData = controlFilfileDelData.filter(item => item.sType === "3"); /* 开料 */ if (commonUtils.isNotEmptyArr(controlsMaterialsPictureDelData)) { controlsMaterialsPictureDelData.forEach(slaveItem => { if (slaveItem.sPicturePath === sMaterialsPicturePath) { addState.sMaterialsPicturePath = ""; } }); } const sMachinePictureDelPath = controlFilfileDelData.filter(item => item.sType === "4"); /* 联版 */ if (commonUtils.isNotEmptyArr(sMachinePictureDelPath)) { sMachinePictureDelPath.forEach(slaveItem => { if (slaveItem.sPicturePath === sMachinePicturePath) { addState.sMachinePicturePath = ""; } }); } if (commonUtils.isNotEmptyObject(addState) && (addState.sMachinePicturePath === "" || addState.sMaterialsPicturePath === "")) { tableData[iIndex] = { ...tableDataNewRow, ...addState }; const data = []; const updataData = {}; const updateWhere = {}; const column = {}; if (addState.sMaterialsPicturePath === "") { column.sMaterialsPicturePath = addState.sMaterialsPicturePath; } if (addState.sMachinePicturePath === "") { column.sMachinePicturePath = addState.sMachinePicturePath; } if (commonUtils.isNotEmptyObject(tableDataNewRow.sId) && commonUtils.isNotEmptyObject(column)) { updateWhere.sId = tableDataNewRow.sId; updataData.sTable = controlConfig.sTbName; updataData.sWhere = updateWhere; updataData.column = column; data.push(updataData); /* 调用接口将图片地址存入控制表 */ const configUrl = `${commonConfig.server_host}business/updateBusinessData?sModelsId=${sModelsId}`; const value = { data, sClientType: "1", }; const dataReturn = (await commonServices.postValueService(token, value, configUrl)).data; if (dataReturn.code === 1) { /* 刷新 */ if (this.props.app.currentPane.refresh !== undefined) { this.props.app.currentPane.refresh(); } } else { this.getServiceError(dataReturn); } } } } } if (commonUtils.isNotEmptyArr(controlFilfileData)) { const addState = {}; const iIndex = tableData.findIndex(item => item.sId === sSrcSlaveId); if (iIndex > -1) { const tableDataNewRow = tableData[iIndex]; const { sMaterialsPicturePath, sMachinePicturePath } = tableDataNewRow; const controlsMaterialsPictureData = controlFilfileData.filter(item => item.sType === "3"); if (commonUtils.isNotEmptyArr(controlsMaterialsPictureData)) { addState.sMaterialsPicturePath = commonUtils.isNotEmptyObject(controlsMaterialsPictureData[0].sPicturePath) ? controlsMaterialsPictureData[0].sPicturePath : ""; /* 上机默认取上传图片的第一条 */ } const controlsMachinePictureData = controlFilfileData.filter(item => item.sType === "4"); if (commonUtils.isNotEmptyArr(controlsMachinePictureData)) { addState.sMachinePicturePath = commonUtils.isNotEmptyObject(controlsMachinePictureData[0].sPicturePath) ? controlsMachinePictureData[0].sPicturePath : ""; } if (commonUtils.isNotEmptyObject(addState)) { tableData[iIndex] = { ...tableDataNewRow, ...addState }; const data = []; const updataData = {}; const updateWhere = {}; const column = {}; if (commonUtils.isNotEmptyObject(addState.sMaterialsPicturePath) && addState.sMaterialsPicturePath !== sMaterialsPicturePath) { column.sMaterialsPicturePath = addState.sMaterialsPicturePath; } if (commonUtils.isNotEmptyObject(addState.sMachinePicturePath) && addState.sMachinePicturePath !== sMachinePicturePath) { column.sMachinePicturePath = addState.sMachinePicturePath; } if (commonUtils.isNotEmptyObject(tableDataNewRow.sId) && commonUtils.isNotEmptyObject(column)) { updateWhere.sId = tableDataNewRow.sId; updataData.sTable = controlConfig.sTbName; updataData.sWhere = updateWhere; updataData.column = column; data.push(updataData); /* 调用接口将图片地址存入控制表 */ const configUrl = `${commonConfig.server_host}business/updateBusinessData?sModelsId=${sModelsId}`; const value = { data, sClientType: "1", }; const dataReturn = (await commonServices.postValueService(token, value, configUrl)).data; if (dataReturn.code === 1) { this.props.onSaveState({ tableData }); /* 刷新 */ if (this.props.app.currentPane.refresh !== undefined) { this.props.app.currentPane.refresh(); } } else { this.getServiceError(dataReturn); } } } } } } else { return message.warning(commonFunc.showMessage(app.commonConst, "selectedRowKeysNo")); } }; // 收付款分摊 handleShare = () => { /* 分摊 */ const { masterData: masterDataOld, slaveData: slaveDataOld, app } = this.props; const { dNetMoney } = app.decimals; const masterData = { ...masterDataOld }; const slaveData = []; slaveDataOld.forEach(item => { slaveData.push({ ...item }); }); const dTotalMoney = masterData.dTotalMoney !== undefined ? masterData.dTotalMoney : 0; let minusSum = 0; /* 负数求和 */ let minusRoundingSum = 0; /* 负数舍入求和 */ const minusData = []; /* 负数集 */ let positiveSum = 0; /* 正数求和 */ let positiveRoundingSum = 0; /* 正数舍入求和 */ const positiveData = []; /* 正数集 */ slaveData.forEach(child => { child.dTotalMoney = 0; child.dRoundingMoney = commonUtils.isNum(child.dRoundingMoney) ? child.dRoundingMoney : 0; if (child.dBalanceMoney < 0) { minusSum -= Math.abs(child.dBalanceMoney); minusRoundingSum -= Math.abs(child.dRoundingMoney); minusData.push(child); } else { positiveSum += child.dBalanceMoney; positiveRoundingSum += child.dRoundingMoney; positiveData.push(child); } }); if (commonUtils.convertFixNum(minusSum - minusRoundingSum + (positiveSum - positiveRoundingSum) - dTotalMoney, dNetMoney) <= 0) { /* 够扣 */ positiveSum -= minusRoundingSum; positiveSum -= positiveRoundingSum; positiveSum -= dTotalMoney; /* 去除分摊金额 */ if (positiveSum >= 0) { for (let i = 0; i < minusData.length; i += 1) { /* 负数遍历 */ const dBalanceMoney = Math.abs(minusData[i].dBalanceMoney); /* 余额正数 */ const dRoundingMoney = minusData[i].dRoundingMoney !== undefined ? minusData[i].dRoundingMoney : 0; if (positiveSum <= dBalanceMoney) { minusData[i].dTotalMoney = commonUtils.convertFixNum(-positiveSum - dRoundingMoney * 1, dNetMoney); if (minusData[i].handleType === undefined) { minusData[i].handleType = commonUtils.isEmpty(minusData[i].handleType) ? "update" : minusData[i].handleType; } break; } else { minusData[i].dTotalMoney = commonUtils.convertFixNum(-(dBalanceMoney * 1) - dRoundingMoney * 1, dNetMoney); positiveSum -= dBalanceMoney - dRoundingMoney * 1; if (minusData[i].handleType === undefined) { minusData[i].handleType = commonUtils.isEmpty(minusData[i].handleType) ? "update" : minusData[i].handleType; } } } for (let i = 0; i < positiveData.length; i += 1) { /* 正数遍历 */ const { dBalanceMoney } = positiveData[i]; /* 余额正数 */ const dRoundingMoney = positiveData[i].dRoundingMoney !== undefined ? positiveData[i].dRoundingMoney : 0; positiveData[i].dTotalMoney = commonUtils.convertFixNum(dBalanceMoney * 1 - dRoundingMoney * 1, dNetMoney); if (positiveData[i].handleType === undefined) { positiveData[i].handleType = commonUtils.isEmpty(positiveData[i].handleType) ? "update" : positiveData[i].handleType; } } masterData.dAdvanceMoney = 0; masterData.bAdvance = false; } else { /* 有预收 */ for (let i = 0; i < positiveData.length; i += 1) { /* 正数遍历 */ const { dBalanceMoney } = positiveData[i]; /* 余额正数 */ const dRoundingMoney = positiveData[i].dRoundingMoney !== undefined ? positiveData[i].dRoundingMoney : 0; positiveData[i].dTotalMoney = commonUtils.convertFixNum(dBalanceMoney * 1 - dRoundingMoney * 1, dNetMoney); positiveData[i].handleType = commonUtils.isEmpty(positiveData[i].handleType) ? "update" : positiveData[i].handleType; } for (let i = 0; i < minusData.length; i += 1) { /* 负数遍历 */ minusData[i].dRoundingMoney = 0; minusData[i].handleType = commonUtils.isEmpty(minusData[i].handleType) ? "update" : minusData[i].handleType; } masterData.dAdvanceMoney = commonUtils.convertFixNum(Math.abs(positiveSum), dNetMoney); masterData.bAdvance = true; } masterData.handleType = commonUtils.isEmpty(masterData.handleType) ? "update" : masterData.handleType; this.props.onSaveState({ masterData, slaveData }); } else if (minusSum - minusRoundingSum + (positiveSum - positiveRoundingSum) - dTotalMoney > 0) { /* 不够扣情况 */ minusSum -= minusRoundingSum; minusSum -= positiveRoundingSum; minusSum -= dTotalMoney; /* 去除分摊金额 */ for (let i = 0; i < minusData.length; i += 1) { /* 负数遍历 */ const dBalanceMoney = Math.abs(minusData[i].dBalanceMoney); /* 余额正数 */ const dRoundingMoney = minusData[i].dRoundingMoney !== undefined ? minusData[i].dRoundingMoney : 0; minusData[i].dTotalMoney = commonUtils.convertFixNum(-(dBalanceMoney * 1) - dRoundingMoney * 1, dNetMoney); minusData[i].handleType = commonUtils.isEmpty(minusData[i].handleType) ? "update" : minusData[i].handleType; } for (let i = 0; i < positiveData.length; i += 1) { /* 正数遍历 */ const { dBalanceMoney } = positiveData[i]; /* 余额正数 */ const dRoundingMoney = positiveData[i].dRoundingMoney !== undefined ? positiveData[i].dRoundingMoney : 0; if (Math.abs(minusSum) <= dBalanceMoney) { positiveData[i].dTotalMoney = commonUtils.convertFixNum(Math.abs(minusSum) - dRoundingMoney * 1, dNetMoney); positiveData[i].handleType = commonUtils.isEmpty(positiveData[i].handleType) ? "update" : positiveData[i].handleType; break; } else { positiveData[i].dTotalMoney = commonUtils.convertFixNum(dBalanceMoney * 1 - dRoundingMoney * 1, dNetMoney); minusSum = -(Math.abs(minusSum) - dBalanceMoney * 1 - dRoundingMoney * 1); positiveData[i].handleType = commonUtils.isEmpty(positiveData[i].handleType) ? "update" : positiveData[i].handleType; } } masterData.dAdvanceMoney = 0; masterData.bAdvance = false; masterData.handleType = commonUtils.isEmpty(masterData.handleType) ? "update" : masterData.handleType; this.props.onSaveState({ masterData, slaveData }); } // let allTotalMoney = 0; // let allRoundingMoney = 0; // slaveData.forEach((child) => { // if (child.dTotalMoney !== undefined) { // allTotalMoney += child.dTotalMoney * 1; // } // if (child.dRoundingMoney !== undefined) { // allRoundingMoney += child.dRoundingMoney * 1; // } // }); // this.props.onSaveState({ allTotalMoney, allRoundingMoney }); return masterData; }; handleImport = async () => { const { sModelsId, sModelsType, masterConfig, masterData, slaveData, slaveDelData: slaveDelDataOld, app } = this.props; if (commonUtils.isEmpty(masterData.sWareHouseId)) { message.error(commonFunc.getConfigShowName(masterConfig, "sWareHouseId") + commonFunc.showMessage(app.commonConst, "isNotNull")); // 不能为空! return; } let url; if (sModelsType.includes("productStock/")) { url = `${commonConfig.server_host}eleProductStock/getEleProductStock?sModelsId=${sModelsId}&sWareHouseId=${masterData.sWareHouseId}`; } else { url = `${commonConfig.server_host}eleMaterialsStock/getEleMaterialsStock?sModelsId=${sModelsId}&sWareHouseId=${masterData.sWareHouseId}`; } const dataReturn = (await commonServices.getService(this.props.app.token, url)).data; if (dataReturn.code === 1) { const returnData = dataReturn.dataset.rows; const slaveDelData = commonUtils.isEmptyArr(slaveDelDataOld) ? [] : slaveDelDataOld; slaveData.forEach(item => { item.handleType = "del"; slaveDelData.push({ ...item }); }); returnData.forEach(item => { item.handleType = "add"; item.sParentId = masterData.sId; }); this.props.onSaveState({ slaveData: returnData, slaveDelData }); } else { this.props.getServiceError(dataReturn); } }; handleOutTemplate = async () => { const { token, formData } = this.props; const slaveConfig = formData.filter(item => item.sGrd === "importTemplate")[0]; window.location.href = `${commonConfig.server_host}import/exportTemplet?gdsconfigformmasterId=${slaveConfig.sId}&token=${token}`; }; handleDesignFunction = () => { this.props.onSaveState({ visibleStatement: true }); }; handleBatchPriceUpdate = () => { const { slaveData, slaveSelectedRowKeys, app } = this.props; if (slaveSelectedRowKeys === undefined || slaveSelectedRowKeys.length !== 1) { return message.warning(commonFunc.showMessage(app.commonConst, "selectedRowKeysNo")); /* 请选择一条数据进行操作 */ } else { const batchPriceUpdateData = slaveData.filter(item => item.sId === slaveSelectedRowKeys[0]); this.props.onSaveState({ batchPriceUpdateData, visibleBatchPriceUpdate: true }); } }; /* 解析消息 */ handleGetMsg = str => { const msgArr = commonUtils.isNotEmptyObject(str) ? str.split("xpm") : ""; const divStr = []; if (commonUtils.isNotEmptyArr(msgArr)) { for (let i = 0; i < msgArr.length; i++) { divStr.push(

{msgArr[i]}

); } } return divStr; }; /* 导出Excel */ handleOut = async () => { const { slaveConfig, formRoute, masterData } = this.props; /* 导出使用Post提交 */ const url = `${commonConfig.server_host}excel/export/${slaveConfig.sId}?sModelsId=${ slaveConfig.sParentId }&sName=${formRoute}&token=${encodeURIComponent(this.props.app.token)}`; const conditionValuesStr = JSON.stringify({ sId: masterData?.sId, sBillNo: masterData?.sBillNo }); this.handleOpenOut(url, "", "", undefined, conditionValuesStr); }; /* Get提交地址栏参数过多,更改Get提交为Post提交 */ handleOpenOut = (url, bFilter, slaveOrderBy, sGroupByList, conditionValues) => { const newWin = window.open(); let formStr = ""; // 设置样式为隐藏,打开新标签再跳转页面前,如果有可现实的表单选项,用户会看到表单内容数据 formStr = `
` + ``; if (commonUtils.isNotEmptyObject(conditionValues)) { formStr += ``; } formStr += "
"; newWin.document.body.innerHTML = formStr; newWin.document.forms[0].submit(); return newWin; }; /* 导出模版数据 */ handleOutTemplateData = async () => { const { slaveConfig, formRoute, masterData, sortedInfo } = this.props; const sort = commonUtils.isNotEmptyObject(sortedInfo) ? (sortedInfo.order === "ascend" ? "asc" : "desc") : ""; const slaveOrderBy = commonUtils.isNotEmptyObject(sortedInfo) && Object.keys(sortedInfo).length > 0 ? { [sortedInfo.columnKey]: sort } : ""; // const sId = commonUtils.isNotEmptyObject(masterData) ? masterData.sId : ""; if (commonUtils.isNotEmptyObject(sId)) { const sSqlCondition = { sParentId: sId }; let url = `${commonConfig.server_host}excel/export/${slaveConfig.sId}?sModelsId=${slaveConfig.sParentId}&token=${this.props.app.token}&sName=${formRoute}`; if (commonUtils.isNotEmptyObject(sSqlCondition)) { url = `${url}&sSqlCondition=${encodeURIComponent(JSON.stringify(sSqlCondition))}`; } if (slaveOrderBy !== undefined && slaveOrderBy !== "" && Object.keys(slaveOrderBy).length > 0) { url = `${url}&sFilterOrderBy=${encodeURIComponent(JSON.stringify(slaveOrderBy))}`; } window.open(url); } else { message.warn("没有主表数据!"); } }; /** 按钮操作事件 */ handleButtonClick = async (name, bBtncalcComfim) => { const FriendlyReminder = commonFunc.showLocalMessage(this.props, "FriendlyReminder", "温馨提示"); if (name === "BtnOut") { this.handleOut(); } else if (name === "BtnDesignFunction") { this.handleDesignFunction(); } else if (name === "BtnBatchPriceUpdate") { this.handleBatchPriceUpdate(); } else if (name && name.includes("BtnOutTemplateData")) { /* 导出模版数据 */ this.handleOutTemplateData(); } else if (name && name.includes("BtnOutTemplate")) { this.handleOutTemplate(); } const { sModelsType, masterConfig, slaveConfig, slave0Config, slave1Config, slave2Config, slave3Config, slave4Config } = this.props; if (name === "BtnRefresh") { if (this.props.app.currentPane.refresh !== undefined) { this.props.app.currentPane.refresh(); } this.handleGetData(masterConfig, slaveConfig, slave0Config, slave1Config, slave2Config, slave3Config, slave4Config); } else if ( (name === "BtnShare" || name === "BtnOutTemplate") && (sModelsType.includes("cashier/") || sModelsType.includes("sales/") || sModelsType.includes("purchase/")) ) { // 收付款分摊 if (name === "BtnShare") { this.handleShare(); } if (sModelsType.includes("sales/") && name === "BtnOutTemplate") { this.handleOutTemplate(); } } else if (name === "BtnImport" && (sModelsType.includes("materialsStock/") || sModelsType.includes("productStock/"))) { if (name === "BtnImport") { this.handleImport(); } } else if (name && name.includes("BtnTempSql")) { /* 通过BtnTempSql按钮 自定义调用Sql 并将数据回填到界面上 */ const { masterConfig, slaveConfig, sModelsId, token } = this.props; let { masterData, slaveData } = this.props; const slave0Data = []; const slave1Data = []; const slave2Data = []; const slave3Data = []; const slave4Data = []; const copyTo = {}; copyTo.name = name; copyTo.slaveData = slaveData; const buttonConfigArr = masterConfig && masterConfig.gdsconfigformslave.filter(item => item.sControlName && item.sControlName.includes("BtnTempSql")); const allConfig = { slaveConfig, masterConfig, }; if (commonUtils.isNotEmptyArr(buttonConfigArr)) { copyTo.config = buttonConfigArr; const sTmpInfoConfig = buttonConfigArr.filter(item => item.sControlName && item.sControlName.includes("BtnTempSql"))[0]; const sControlName = sTmpInfoConfig.sControlName; const dataUrl = `${commonConfig.server_host}salesorder/getTmpInfoBySql/?sModelsId=${sModelsId}`; const sConfigformId = commonUtils.isEmpty(sTmpInfoConfig) ? "" : sTmpInfoConfig.sParentId; if (commonUtils.isNotEmptyObject(sTmpInfoConfig)) { const newCopyTo = {}; newCopyTo.master = copyTo.masterData; newCopyTo.slave = commonUtils.isEmpty(copyTo.slaveData) ? [] : copyTo.slaveData[0]; // const sRowData = copyTo.slaveData; const sRowData = [masterData]; const condition = { sConfigformId, sControlName, sRowData }; const dataReturn = (await commonServices.postValueService(token, condition, dataUrl)).data; if (dataReturn.code === 1) { slaveData = []; const returnData = dataReturn.dataset.rows[0]; const copyToMasterDetailConfig = copyTo.config.filter( item => item.sControlName.toLowerCase() === `${copyTo.name}.masterdetail`.toLowerCase() ); const copyToSlaveConfig = copyTo.config.filter(item => item.sControlName.toLowerCase() === `${copyTo.name}.slave`.toLowerCase()); const copyToSlaveDetailConfig = copyTo.config.filter( item => item.sControlName.toLowerCase() === `${copyTo.name}.slavedetail`.toLowerCase() ); const copyToSlave1Config = copyTo.config.filter(item => item.sControlName.toLowerCase() === `${copyTo.name}.slave1`.toLowerCase()); const copyToSlave0Config = copyTo.config.filter(item => item.sControlName.toLowerCase() === `${copyTo.name}.slave0`.toLowerCase()); const copyToSlave2Config = copyTo.config.filter(item => item.sControlName.toLowerCase() === `${copyTo.name}.slave2`.toLowerCase()); const copyToSlava3Config = copyTo.config.filter(item => item.sControlName.toLowerCase() === `${copyTo.name}.slava3`.toLowerCase()); const copyToSlava4Config = copyTo.config.filter(item => item.sControlName.toLowerCase() === `${copyTo.name}.slava4`.toLowerCase()); const masterDetailAssignField = commonUtils.isNotEmptyArr(copyToMasterDetailConfig) ? copyToMasterDetailConfig[0].sAssignField : ""; const salveDetailAssignField = commonUtils.isNotEmptyArr(copyToSlaveDetailConfig) ? copyToSlaveDetailConfig[0].sAssignField : ""; const salveAssignField = commonUtils.isNotEmptyArr(copyToSlaveConfig) ? copyToSlaveConfig[0].sAssignField : ""; const slave1AssignField = commonUtils.isNotEmptyArr(copyToSlave1Config) ? copyToSlave1Config[0].sAssignField : ""; const slave0AssignField = commonUtils.isNotEmptyArr(copyToSlave0Config) ? copyToSlave0Config[0].sAssignField : ""; const slave2AssignField = commonUtils.isNotEmptyArr(copyToSlave2Config) ? copyToSlave2Config[0].sAssignField : ""; const slave3AssignField = commonUtils.isNotEmptyArr(copyToSlava3Config) ? copyToSlava3Config[0].sAssignField : ""; const slave4AssignField = commonUtils.isNotEmptyArr(copyToSlava4Config) ? copyToSlava4Config[0].sAssignField : ""; if (commonUtils.isNotEmptyArr(returnData.master) && masterDetailAssignField) { masterData = { ...masterData, ...commonFunc.getAssignFieldValue(masterDetailAssignField, returnData.master[0], newCopyTo) }; } if (commonUtils.isNotEmptyArr(returnData.slave)) { returnData.slave.forEach(slaveItem => { newCopyTo.slave = slaveItem; const newSid = commonUtils.createSid(); let slaveRow = commonFunc.getDefaultData(allConfig.slaveConfig, newCopyTo, { newSid }); // 取默认值 if (salveDetailAssignField) { slaveRow = { ...slaveRow, ...commonFunc.getAssignFieldValue(salveDetailAssignField, copyTo.masterData, newCopyTo) }; } else if (salveAssignField) { slaveRow = { ...slaveRow, ...commonFunc.getAssignFieldValue(salveAssignField, slaveItem, newCopyTo) }; // 取赋值字段 } slaveRow.handleType = "add"; slaveRow.sId = newSid; slaveRow.sParentId = masterData.sId; slaveData.push(slaveRow); }); } if (commonUtils.isNotEmptyArr(returnData.slave0)) { returnData.slave0.forEach(slave0Item => { newCopyTo.slave0 = slave0Item; const newSid = commonUtils.createSid(); let slave0Row = commonFunc.getDefaultData(allConfig.slave0Config, newCopyTo, { newSid }); // 取默认值 slave0Row = { ...slave0Row, ...commonFunc.getAssignFieldValue(slave0AssignField, slave0Item, newCopyTo) }; // 取赋值字段 slave0Row.handleType = "add"; slave0Row.sId = newSid; slave0Row.sParentId = masterData.sId; slave0Data.push(slave0Row); }); } if (commonUtils.isNotEmptyArr(returnData.slave1)) { returnData.slave1.forEach(slave1Item => { newCopyTo.slave1 = slave1Item; const newSid = commonUtils.createSid(); let slave1Row = commonFunc.getDefaultData(allConfig.slave1Config, newCopyTo, { newSid }); // 取默认值 slave1Row = { ...slave1Row, ...commonFunc.getAssignFieldValue(slave1AssignField, slave1Item, newCopyTo) }; // 取赋值字段 slave1Row.handleType = "add"; slave1Row.sId = newSid; slave1Row.sParentId = masterData.sId; slave1Data.push(slave1Row); }); } if (commonUtils.isNotEmptyArr(returnData.slave2)) { returnData.slave2.forEach(slave2Item => { newCopyTo.slave2 = slave2Item; const newSid = commonUtils.createSid(); let slave2Row = commonFunc.getDefaultData(allConfig.slave2Config, newCopyTo, { newSid }); // 取默认值 slave2Row = { ...slave2Row, ...commonFunc.getAssignFieldValue(slave2AssignField, slave2Item, newCopyTo) }; // 取赋值字段 slave2Row.handleType = "add"; slave2Row.sId = newSid; slave2Row.sParentId = masterData.sId; slave2Data.push(slave2Row); }); } if (commonUtils.isNotEmptyArr(returnData.slave3)) { returnData.slave3.forEach(slave3Item => { newCopyTo.slave3 = slave3Item; const newSid = commonUtils.createSid(); let slave3Row = commonFunc.getDefaultData(allConfig.slave3Config, newCopyTo, { newSid }); // 取默认值 slave3Row = { ...slave3Row, ...commonFunc.getAssignFieldValue(slave3AssignField, slave3Item, newCopyTo) }; // 取赋值字段 slave3Row.handleType = "add"; slave3Row.sId = newSid; slave3Row.sParentId = masterData.sId; slave3Data.push(slave3Row); }); } if (commonUtils.isNotEmptyArr(returnData.slave4)) { returnData.slave4.forEach(slave4Item => { newCopyTo.slave4 = slave4Item; const newSid = commonUtils.createSid(); let slave4Row = commonFunc.getDefaultData(allConfig.slave4Config, newCopyTo, { newSid }); // 取默认值 slave4Row = { ...slave4Row, ...commonFunc.getAssignFieldValue(slave4AssignField, slave4Item, newCopyTo) }; // 取赋值字段 slave4Row.handleType = "add"; slave4Row.sId = newSid; slave4Row.sParentId = masterData.sId; slave4Data.push(slave4Row); }); } this.props.onSaveState({ slaveData, slave1Data, slave2Data, slave3Data, slave4Data }); } else { this.props.getServiceError(dataReturn); } } } else { message.error("请正确配置自定义按钮!"); } } else if (name && name.includes("BtnCalc")) { /* 实现通用计算功能 */ const { masterConfig, masterData, sModelsId } = this.props; this.props.onSaveState({ pageLoading: true }); const btnConfig = commonUtils.isNotEmptyArr(masterConfig.gdsconfigformslave.filter(item => item.sControlName === name)) ? masterConfig.gdsconfigformslave.filter(item => item.sControlName === name)[0] : {}; // sButtonEnabled sButtonParam if (commonUtils.isNotEmptyObject(btnConfig)) { /* 组装allTableData */ const allTableMap = {}; const allReturnMap = {}; const slaveNameList = []; /* 从props找到 所有的Config */ if (commonUtils.isNotEmptyArr(this.props)) { for (const key of Object.keys(this.props)) { if (key.includes("Config") && !key.includes("onGet") && !key.includes("report")) { const tablename = key.replace("Config", "").trim(); slaveNameList.push(tablename); } } } if (commonUtils.isNotEmptyArr(slaveNameList)) { slaveNameList.forEach((name, index) => { const tableConfig = this.props[name + "Config"]; /* 动态配置 */ const tableData = this.props[name + "Data"]; /* 动态配置 */ if (commonUtils.isNotEmptyObject(tableConfig)) { allTableMap[name + "." + tableConfig.sTbName] = tableData; } }); const masterTbName = masterConfig.sTbName; allTableMap["master." + masterTbName] = masterData; } const sButtonParam = btnConfig.sButtonParam; const btn = commonUtils.isJSON(sButtonParam) ? JSON.parse(sButtonParam) : ""; const sProName = btn.sproName; const url = `${commonConfig.server_host}calcprocedure/calc?sModelsId=${sModelsId}`; const value = { sProName, sButtonParam, allTableMap, }; if (bBtncalcComfim) { value.iFlag = 1; } const dataReturn = (await commonServices.postValueService(this.props.app.token, value, url)).data; if (dataReturn.code === 1) { /* 数据操作 数据回传页面 */ message.success("操作成功!"); const returnData = dataReturn.dataset.rows[0]; if (commonUtils.isNotEmptyArr(slaveNameList) && commonUtils.isNotEmptyObject(returnData)) { slaveNameList.forEach((name, index) => { const tableConfig = this.props[name + "Config"]; /* 动态配置 */ let tableDelData = this.props[name + "DelData"]; if (commonUtils.isEmptyArr(tableDelData)) { tableDelData = []; } let tableDelDataNew = []; let tableData = []; if (commonUtils.isNotEmptyObject(tableConfig)) { tableData = returnData[name + "." + tableConfig.sTbName]; /* 动态配置 */ if (commonUtils.isNotEmptyArr(tableData) && Array.isArray(tableData)) { tableDelDataNew = tableData.filter(item => item.handleType === "del"); tableData = tableData.filter(item => item.handleType !== "del"); tableDelData = tableDelData.concat(tableDelDataNew); } } allReturnMap[name + "Data"] = tableData; allReturnMap[name + "DelData"] = tableDelData; }); const masterTbName = masterConfig.sTbName; allReturnMap.masterData = returnData["master." + masterTbName]; allReturnMap.masterData.enabled = true; } // this.handleValidateSave(); this.props.onSaveState({ ...allReturnMap, pageLoading: false }); } else if (dataReturn.code === -8 || dataReturn.code === 2) { Modal.info({ title: "温馨提示:", content:
{this.handleGetMsg(dataReturn.msg)}
, okText: "确认", onOk() {}, }); this.props.onSaveState({ pageLoading: false }); } else if (dataReturn.code === -7) { const _this = this; Modal.confirm({ title: FriendlyReminder, content:
{this.handleGetMsg(dataReturn.msg)}
, onOk() { _this.handleButtonClick(name, true); }, onCancel() {}, }); this.props.onSaveState({ pageLoading: false }); } else { /* 失败 */ this.props.getServiceError(dataReturn); this.props.onSaveState({ pageLoading: false }); } } } else if (name === "BtnTmpInfoBySql") { /* 自定义数据源 */ this.handleBtnTmpInfoBySql(name); } else if (name === "BtnExtract") { /* 提取上批数据功能 */ this.handleBtnExtract(name); } }; handleBtnTmpInfoBySql = async btnName => { const { masterConfig, masterData, slaveData, slaveSelectedRowKeys, token, sModelsId } = this.props; let slaveRow = {}; if (commonUtils.isNotEmptyArr(slaveSelectedRowKeys)) { const iIndex = slaveData.findIndex(item => slaveSelectedRowKeys.includes(item.sId)); if (iIndex > -1) { slaveRow = slaveData[iIndex]; } } else { slaveRow = slaveData[0]; } const tableConfig = commonUtils.isNotEmptyArr(masterConfig.gdsconfigformslave.filter(item => item.sControlName === btnName)) ? masterConfig.gdsconfigformslave.filter(item => item.sControlName === btnName)[0] : {}; const sTmpInfoConfig = tableConfig; const sButtonParam = tableConfig.sButtonParam; const btn = commonUtils.isNotEmptyObject(sButtonParam) ? JSON.parse(sButtonParam) : ""; if (commonUtils.isNotEmptyObject(btn)) { const sProName = commonUtils.isNotEmptyObject(btn) ? btn.sproName : ""; const sTmpInfoBySqlBtnName = btn.sControlName; const newCopyTo = {}; newCopyTo.master = masterData; /* 找到自定义TempInfo配置 */ const sTmpInfoBySqlBtnConfig = masterConfig.gdsconfigformslave.filter(item => item.sControlName.includes(sTmpInfoBySqlBtnName)); const dataUrl = `${commonConfig.server_host}salesorder/getTmpInfoBySql/?sModelsId=${sModelsId}`; const sConfigformId = commonUtils.isEmpty(sTmpInfoBySqlBtnConfig) ? "" : sTmpInfoBySqlBtnConfig[0].sParentId; const sControlName = commonUtils.isNotEmptyObject(sTmpInfoBySqlBtnName) ? sTmpInfoBySqlBtnName : "TmpInfoBySql"; const sAssignField = sTmpInfoBySqlBtnConfig[0].sAssignField; let sRowData = [slaveRow]; if (sTmpInfoBySqlBtnConfig[0].sSqlCondition && sTmpInfoBySqlBtnConfig[0].sSqlCondition.includes("master.")) { sRowData = [masterData]; } const values = { sConfigformId, sControlName, sRowData }; if (true) { const dataReturn = (await commonServices.postValueService(token, values, dataUrl)).data; const allReturnMap = {}; if (dataReturn.code === 1) { const returnData = dataReturn.dataset.rows[0]; if (commonUtils.isNotEmptyObject(returnData)) { for (const key of Object.keys(returnData)) { const sName = `${key}Data`; const sDelName = `${key}DelData`; // allReturnMap[sName] = returnData[key]; let { [`${key}Data`]: oldData, [`${key}Data`]: oldDelData } = this.props; if (commonUtils.isEmptyArr(oldDelData)) { oldDelData = []; } if (commonUtils.isEmptyArr(oldData)) { oldData = []; } if (sTmpInfoBySqlBtnName.includes("_edit")) { /* 替换 根据对应字段对比 相同的不管 不同的插入 */ /* 对应字段 */ const sActiveKey = sTmpInfoBySqlBtnConfig[0].sActiveKey; const keyData = returnData[key]; let newData = []; if (commonUtils.isNotEmptyArr(keyData)) { keyData.forEach(child => { const filterData = oldData.filter(item => item[sActiveKey] !== child[sActiveKey]); if (commonUtils.isNotEmptyArr(filterData) && filterData.length === oldData.length) { let tableRow = {}; tableRow = { ...tableRow, ...commonFunc.getAssignFieldValue(sAssignField, child) }; // 取赋值字段 tableRow.sId = commonUtils.createSid(); tableRow.sParentId = masterData.sId; tableRow.handleType = "add"; newData.push(tableRow); } }); newData = oldData.concat(newData); } allReturnMap[sName] = newData; } else if (sTmpInfoBySqlBtnName.includes("_del")) { /* 替换 根据对应字段对比 相同的不管 不同的插入 */ /* 对应字段 */ oldData.forEach(child => { child.handleType = "del"; oldDelData.push(child); }); allReturnMap[sDelName] = oldDelData; oldData = []; const keyData = returnData[key]; if (commonUtils.isNotEmptyArr(keyData)) { keyData.forEach(child => { let tableRow = {}; tableRow = { ...tableRow, ...commonFunc.getAssignFieldValue(sAssignField, child) }; // 取赋值字段 tableRow.sId = commonUtils.createSid(); tableRow.sParentId = masterData.sId; tableRow.handleType = "add"; tableRow.key = tableRow.sId; oldData.push(tableRow); }); } allReturnMap[sName] = oldData; } else { allReturnMap[sName] = returnData[key]; } } if (commonUtils.isNotEmptyArr(allReturnMap.masterData) && Array.isArray(allReturnMap.masterData)) { allReturnMap.masterData = allReturnMap.masterData[0]; } console.log("allReturnMap:", allReturnMap); this.props.onSaveState({ ...allReturnMap }); } } else { this.props.getServiceError(dataReturn); } } } else { message.error("配置错误,没有配置对应字段!"); } }; /* 提取功能 */ handleBtnExtract = btnName => { /* 上批数据 */ const { masterConfig, slaveChildInfoList, formData, slaveData = [], slaveSelectedRowKeys } = this.props; let slaveRow = {}; if (commonUtils.isNotEmptyArr(slaveData)) { if (commonUtils.isEmptyArr(slaveSelectedRowKeys)) { slaveRow = slaveData[0]; } else { slaveRow = slaveData.find(item => item.sId === slaveSelectedRowKeys[0]); } } slaveRow.sNoteMemo1Up = 10; slaveRow.sNoteMemo2Up = 20; slaveRow.sNoteMemo3Up = 30; slaveRow.sNoteMemo4Up = 40; slaveRow.sNoteMemo5Up = 50; slaveRow.sNoteMemo6Up = 50; slaveRow.sNoteMemo7Up = 50; slaveRow.sNoteMemo8Up = 50; slaveRow.sNoteMemo9Up = 50; slaveRow.sNoteMemo10Up = 50; slaveRow.sNoteMemo11Up = 110; console.log("slaveRow", slaveRow); const tableConfig = commonUtils.isNotEmptyArr(masterConfig.gdsconfigformslave.filter(item => item.sControlName === btnName)) ? masterConfig.gdsconfigformslave.filter(item => item.sControlName === btnName)[0] : {}; const sAssignField = commonUtils.isNotEmptyObject(tableConfig) ? tableConfig.sAssignField : ""; console.log("22sAssignField2", sAssignField); const addState = {}; console.log("slaveChildInfoList", slaveChildInfoList); /* 找到界面所有子表配置, 将子表数据中的Up给对应父级配置的没有up的字段 */ if (commonUtils.isNotEmptyArr(slaveChildInfoList) && commonUtils.isNotEmptyObject(slaveRow)) { slaveChildInfoList.forEach(slaveChildName => { const childName = slaveChildName.split("-")[0]; const childConfig = this.props[`${childName}Config`]; const childData = this.props[`${childName}Data`]; console.log("config:::", childName, childData); if (commonUtils.isNotEmptyObject(childConfig)) { /* 找到父级配置 */ const fatherConfig = formData.find( fatherConfig => fatherConfig.sChildTableName && fatherConfig.sChildTableName.split(",").includes(childConfig?.sGrd) ); const fatherName = fatherConfig.sGrd; let fatherData = this.props[`${fatherName}Data`]; if (commonUtils.isEmptyArr(fatherData)) { fatherData = []; } let tableRow = {}; tableRow = { ...tableRow, ...commonFunc.getAssignFieldValue(sAssignField, slaveRow) }; // 取赋值字段 console.log("tableRow", tableRow); if (commonUtils.isEmptyArr(fatherData)) { const newRow = { ...tableRow }; newRow.sId = commonUtils.createSid(); fatherData.push(newRow); } else { const handleType = commonUtils.isEmpty(fatherData[0].handleType) ? "update" : fatherData[0].handleType; fatherData[0] = { ...fatherData[0], ...tableRow, handleType }; } addState[fatherName] = fatherData; console.log("fatherName:", fatherName); console.log("fatherConfig", fatherConfig); console.log("fatherData", fatherData); } }); } console.log("addState", addState); this.props.onSaveState({ addState }); }; handleBtnChoose = async (name, sControlName, chooseConfig) => { const { token } = this.props; const url = `${commonConfig.server_host}/gdsmodule/getGdsmoduleById/${chooseConfig.sActiveId}?sModelsId=${chooseConfig.sActiveId}`; const dataReturn = (await commonServices.getService(token, url)).data; if (dataReturn.code === 1) { const [returnData] = dataReturn.dataset.rows; this.props.onSaveState({ [`${name}ChooseVisible`]: true, [`${name}ChooseData`]: returnData }); } else { this.props.getServiceError(dataReturn); } }; handleViewClick = (name, sName, record, index, myConfig) => { if (name === "process" && sName === "sProcessParamStr") { // process sProcessParam const { processConfig, enabled, sModelsType } = this.props; const slaveSelectOneData = record; let modalVisible = false; const sProcessParamsSelects = []; let paramType = ""; if (commonUtils.isNotEmptyObject(slaveSelectOneData)) { if (sModelsType.includes("manufacture/")) { paramType = slaveSelectOneData.sWorkOrderParam; } else if (sModelsType.includes("quotation/")) { paramType = slaveSelectOneData.sProcessParam; } } if (commonUtils.isNotEmptyObject(paramType) && enabled) { const sProcessParam = JSON.parse(paramType); modalVisible = true; // eslint-disable-next-line no-plusplus for (let i = 1; i < 7; i++) { const iIndex = processConfig.gdsconfigformslave.findIndex(item => item.sName === `sParamValue${i.toString()}`); if (iIndex > -1 && !commonUtils.isEmpty(sProcessParam[`sParam${i.toString()}`])) { processConfig.gdsconfigformslave[iIndex].showName = sProcessParam[`sParam${i.toString()}`]; processConfig.gdsconfigformslave[iIndex].bVisible = !sProcessParam[`sParam${i.toString()}`].includes("参数值"); record[`sParam${i.toString()}`] = sProcessParam[`sParam${i.toString()}`]; sProcessParamsSelects.push(processConfig.gdsconfigformslave[iIndex]); } else if (iIndex > -1) { // processConfig.gdsconfigformslave[iIndex].showName = `sParamValue${i.toString()}`; processConfig.gdsconfigformslave[iIndex].bVisible = true; } } /* Begin 找到除了工艺参数以外的额外参数 通过对应字段找到该字段配置 */ for (const key of Object.keys(slaveSelectOneData)) { if (key.includes("sParam")) { const iIndexOther = processConfig.gdsconfigformslave.findIndex(item => item.sName === key.replace("sParam", "").trim()); if (iIndexOther > -1 && !commonUtils.isEmpty(slaveSelectOneData[key])) { const fieldConfig = processConfig.gdsconfigformslave[iIndexOther]; if (fieldConfig) { const sFieldName = fieldConfig.sName; /* 字段名 */ const bSrcName = `bParamConfig${fieldConfig.sName}`; const bSrc = slaveSelectOneData[bSrcName]; /* 如果不原配置 则同参数配置雷同 */ if (!bSrc) { processConfig.gdsconfigformslave[iIndexOther].sFieldToContent = "1"; /* 从工序配置的DropDownData中拿数据 */ } else { /* 走原配置读取数据源 */ processConfig.gdsconfigformslave[iIndexOther].sFieldToContent = ""; /* 从工序配置的DropDownData中拿数据 */ } processConfig.gdsconfigformslave[iIndexOther].bParam = true; /* 增加参数字段标识 */ processConfig.gdsconfigformslave[iIndexOther].showName = sProcessParam[`sParam${sFieldName.toString()}`]; sProcessParamsSelects.push(processConfig.gdsconfigformslave[iIndexOther]); } } } } /* END */ } else { modalVisible = false; // eslint-disable-next-line no-plusplus for (let i = 1; i < 7; i++) { const iIndex = processConfig.gdsconfigformslave.findIndex(item => item.sName === `sParamValue${i.toString()}`); if (iIndex > -1) { processConfig.gdsconfigformslave[iIndex].bVisible = true; } } } this.props.onSaveState({ processRecord: record, sProcessParamsSelects, sProcessParamsModalVisible: modalVisible, }); } else if (name === "process" && sName === "sParams" && commonUtils.isNotEmptyObject(record.sParams)) { // process sProcessParam const { processConfig, enabled, sModelsType } = this.props; const slaveSelectOneData = record; let modalVisible = false; const sProcessParamsSelects = []; let sParamData = []; let paramType = ""; if (commonUtils.isNotEmptyObject(slaveSelectOneData)) { if (sModelsType.includes("manufacture/")) { paramType = slaveSelectOneData.sWorkOrderParam; } else if (sModelsType.includes("quotation/")) { paramType = slaveSelectOneData.sProcessParam; } } /* 工序参数以表格形式展示 列 */ const sParamConfig = { bisMutiSelect: true, bMutiSelect: false, }; const gdsconfigformslave = [ { sId: commonUtils.createSid(), sName: "sId", showName: "主键", bVisible: false, iFitWidth: 200, }, { sId: commonUtils.createSid(), sName: "bSelfCbx", showName: "选择", bVisible: true, iFitWidth: 45, }, { sId: commonUtils.createSid(), sName: "sParamKey", showName: "参数主键", bVisible: true, iFitWidth: 200, }, { sId: commonUtils.createSid(), sName: "sParamName", showName: "参数名", bVisible: true, iFitWidth: 400, }, { sId: commonUtils.createSid(), sName: "sParamValue", showName: "参数值", bVisible: true, }, ]; sParamConfig.gdsconfigformslave = gdsconfigformslave; const sParamColumn = commonFunc.getHeaderConfig(sParamConfig); if (commonUtils.isNotEmptyObject(paramType) && enabled) { /* 将sParam1中的数据 还原到sParamData数据中 */ sParamData = JSON.parse(record.sParams); } this.props.onSaveState({ processRecord: record, sProcessParamsSelects, sParamsModalVisible: true, sParamConfig, sParamColumn, sParamData, }); } else { if (sName === "myTableConfig") { this.handleQuickViewClick(name, sName, record, index, myConfig); } else { this.props.onViewClick(name, sName, record, index, myConfig); } } }; handleViewChoose = (name, sName, record) => { const { sId } = record; /* 控制表主键 */ const { enabled } = this.props; const sisColorSelectedRowKeys = []; let jsonData = []; if (name === "process" && sName === "sColorSerialMemo") { const { [`${name}Data`]: tableData } = this.props; const iIndex = tableData.findIndex(item => item.sId === sId); if (iIndex > -1) { const sColorSerialMemo = tableData[iIndex].sColorSerialMemo; if (commonUtils.isNotEmptyObject(sColorSerialMemo)) { try { jsonData = JSON.parse(sColorSerialMemo); jsonData.forEach(item => { sisColorSelectedRowKeys.push(item.sId); }); } catch (ex) { // console.log('ex', ex); } } } this.props.onSaveState({ sisColorChooseVisible: true, processSelectedRowId: sId /* 工序表选中行sId */, enabled, sisColorSelectedRowKeys, sisColorSelectedData: jsonData, }); } else if (sName === "sParams") { // process sProcessParam const { processConfig, enabled, sModelsType } = this.props; const slaveSelectOneData = record; let modalVisible = false; const sProcessParamsSelects = []; let sParamData = []; let paramType = ""; if (commonUtils.isNotEmptyObject(slaveSelectOneData)) { paramType = slaveSelectOneData.sWorkOrderParam; } if (commonUtils.isEmpty(paramType)) { message.warn("无工艺参数!"); return; } /* 工序参数以表格形式展示 列 */ const sParamConfig = { bisMutiSelect: false, bMutiSelect: false, }; const gdsconfigformslave = [ { sId: commonUtils.createSid(), sName: "sId", showName: "主键", bVisible: false, iFitWidth: 200, }, { sId: commonUtils.createSid(), sName: "bSelfCbx", showName: "选择", bVisible: true, iFitWidth: 37, }, { sId: commonUtils.createSid(), sName: "sParamKey", showName: "参数主键", bVisible: false, iFitWidth: 200, }, { sId: commonUtils.createSid(), sName: "sParamName", showName: "参数名", bVisible: true, iFitWidth: 230, }, { sId: commonUtils.createSid(), sName: "sParamValue", showName: "参数值", bVisible: true, }, ]; sParamConfig.gdsconfigformslave = gdsconfigformslave; const sParamColumn = commonFunc.getHeaderConfig(sParamConfig); if (commonUtils.isNotEmptyObject(paramType)) { /* 要把数据以表格的形式显示出来 */ const sParamJsonObj = JSON.parse(paramType); for (const key of Object.keys(sParamJsonObj)) { if (key.includes("sParam") && !key.includes("DropDown") && !key.includes("Default")) { const obj = {}; obj.sId = commonUtils.createSid(); obj.sParamKey = key; obj.sParamName = sParamJsonObj[key]; /* 找到数字 找到下拉数据源 */ const num = key.replace(/[^\d]/g, "").trim(); if (Number(num)) { const number = Number(num); const sParamDropDownKey = `sParamDropDown${number}`; obj.sDropDownData = sParamJsonObj[sParamDropDownKey]; /* 下拉 */ const sParamDefaultKey = `sParamDefault${number}`; obj.sParamValue = sParamJsonObj[sParamDefaultKey]; /* 默认值 */ } sParamData.push(obj); } } /* 将sParam1中的数据 还原到sParamData数据中 */ if (commonUtils.isNotEmptyObject(record.sParams)) { const selectedData = JSON.parse(record.sParams); if (commonUtils.isNotEmptyArr(selectedData)) { selectedData.forEach(itemS => { sParamData.forEach(j => { if (!Object.prototype.hasOwnProperty.call(itemS?.data || {}, j?.sParamKey)) return; const value = itemS?.data?.[j.sParamKey]; if (j) j.sParamValue = value; }); const iIndex = sParamData.findIndex(item => item.sParamName === itemS.sParamName); if (iIndex > -1) { const addState = {}; addState.sParamValue = itemS.sParamValue; addState.bSelfCbx = itemS.bSelfCbx; sParamData[iIndex] = { ...sParamData[iIndex], ...addState }; } }); } /* 如果数据集有一个是非选中的则非选中状态 否则全选 */ if (commonUtils.isNotEmptyArr(sParamColumn)) { const iIndex = sParamColumn.findIndex(item => item.dataIndex === "bSelfCbx"); if (iIndex > -1) { const filterData = sParamData.filter(item => !item.bSelfCbx); if (commonUtils.isNotEmptyArr(filterData)) { sParamColumn[iIndex] = { ...sParamColumn[iIndex], bCheckAll: false }; } else { sParamColumn[iIndex] = { ...sParamColumn[iIndex], bCheckAll: true }; } } } } } this.props.onSaveState({ processRecord: record, sProcessParamsSelects, sParamsModalVisible: true, sParamConfig, sParamColumn, sParamData, sParamModalType: "sWork", enabled, }); } else if (sName === "sParamsNew") { // 工艺参数NEW const { processConfig, enabled, sModelsType } = this.props; const slaveSelectOneData = record; let modalVisible = false; const sProcessParamsSelects = []; let sParamNewData = []; let paramType = ""; if (commonUtils.isNotEmptyObject(slaveSelectOneData)) { paramType = slaveSelectOneData.sWorkOrderParam; } if (commonUtils.isEmpty(paramType)) { message.warn("无工艺参数!"); return; } /* 工序参数以表格形式展示 列 */ const sParamNewConfig = { bisMutiSelect: false, bMutiSelect: false, }; const gdsconfigformslave = [ { sId: commonUtils.createSid(), sName: "sId", showName: "主键", bVisible: false, iFitWidth: 200, }, { sId: commonUtils.createSid(), sName: "bSelfCbx", showName: "选择", bVisible: true, iFitWidth: 37, }, { sId: commonUtils.createSid(), sName: "sParamKey", showName: "参数主键", bVisible: false, iFitWidth: 200, }, { sId: commonUtils.createSid(), sName: "sParamName", showName: "参数名", bVisible: true, iFitWidth: 230, }, { sId: commonUtils.createSid(), sName: "sParamValue", showName: "参数值", bVisible: true, }, ]; sParamNewConfig.gdsconfigformslave = gdsconfigformslave; const sParamNewColumn = commonFunc.getHeaderConfig(sParamNewConfig); if (commonUtils.isNotEmptyObject(paramType)) { /* 要把数据以表格的形式显示出来 */ const sParamJsonObj = JSON.parse(paramType); for (const key of Object.keys(sParamJsonObj)) { if (key.includes("sParam") && !key.includes("DropDown") && !key.includes("Default")) { const obj = {}; obj.sId = commonUtils.createSid(); obj.sParamKey = key; obj.sParamName = sParamJsonObj[key]; /* 找到数字 找到下拉数据源 */ const num = key.replace(/[^\d]/g, "").trim(); if (Number(num)) { const number = Number(num); const sParamDropDownKey = `sParamDropDown${number}`; obj.sDropDownData = sParamJsonObj[sParamDropDownKey]; /* 下拉 */ const sParamDefaultKey = `sParamDefault${number}`; obj.sParamValue = sParamJsonObj[sParamDefaultKey]; /* 默认值 */ } sParamNewData.push(obj); } } /* 将sParam1中的数据 还原到sParamData数据中 */ if (commonUtils.isNotEmptyObject(record.sParamsNew)) { const selectedData = JSON.parse(record.sParamsNew); if (commonUtils.isNotEmptyArr(selectedData)) { selectedData.forEach(itemS => { sParamNewData.forEach(j => { if (!Object.prototype.hasOwnProperty.call(itemS?.data || {}, j?.sParamKey)) return; const value = itemS?.data?.[j.sParamKey]; if (j) j.sParamValue = value; }); const iIndex = sParamNewData.findIndex(item => item.sParamName === itemS.sParamName); if (iIndex > -1) { const addState = {}; addState.sParamValue = itemS.sParamValue; addState.bSelfCbx = itemS.bSelfCbx; sParamNewData[iIndex] = { ...sParamNewData[iIndex], ...addState }; } }); } /* 如果数据集有一个是非选中的则非选中状态 否则全选 */ if (commonUtils.isNotEmptyArr(sParamNewColumn)) { const iIndex = sParamNewColumn.findIndex(item => item.dataIndex === "bSelfCbx"); if (iIndex > -1) { const filterData = sParamNewData.filter(item => !item.bSelfCbx); if (commonUtils.isNotEmptyArr(filterData)) { sParamNewColumn[iIndex] = { ...sParamNewColumn[iIndex], bCheckAll: false }; } else { sParamNewColumn[iIndex] = { ...sParamNewColumn[iIndex], bCheckAll: true }; } } } } } this.props.onSaveState({ tableRecord: record, tableRecordName: name, sProcessParamsSelects, sParamsNewModalVisible: true, sParamNewConfig, sParamNewColumn, sParamNewData, sParamModalType: "sWork", enabled, }); } else if (enabled && name === "control" && (sName === "sPositiveColor" || sName === "sOppositeColor")) { /* 控制表 选择正面颜色、反面颜色 */ const { [`${name}Data`]: tableData } = this.props; const iIndex = tableData.findIndex(item => item.sId === sId); if (iIndex > -1) { const sColorSerialMemo = tableData[iIndex][sName]; if (commonUtils.isNotEmptyObject(sColorSerialMemo)) { try { jsonData = JSON.parse(sColorSerialMemo); jsonData.forEach(item => { sisColorSelectedRowKeys.push(item.sId); }); } catch (ex) { // console.log('ex', ex); } } } this.props.onSaveState({ sisColorChooseVisible: true, controlSelectedRowId: sId /* 控制表选中行sId */, processSelectedRowId: "" /* 工序表选中行sId */, enabled, sisColorSelectedRowKeys, sisColorSelectedData: jsonData, sisColorField: sName /* 弹出字段 */, }); } }; /* 选择工艺参数点击确定 */ handleParamsOk = () => { // 工艺参数弹窗确定按钮 const { processData, processRecord, processConfig, sParamData, enabled, sParamModalType } = this.props; if (enabled) { if (commonUtils.isNotEmptyArr(processData) && commonUtils.isNotEmptyObject(processRecord)) { const processSelectDataIndex = processData.findIndex(item => item.sId === processRecord.sId); if (processSelectDataIndex > -1) { if (commonUtils.isNotEmptyArr(sParamData)) { let sParamJsonData = ""; const sParamSeletedData = sParamData.filter(item => item.bSelfCbx); if (commonUtils.isNotEmptyObject(sParamSeletedData)) { sParamJsonData = JSON.stringify(sParamSeletedData); } let { handleType } = processData[processSelectDataIndex]; handleType = commonUtils.isEmpty(handleType) ? "update" : handleType; if (sParamModalType === "sQuo") { /* 报价参数点击确定 */ processData[processSelectDataIndex].sQuoParams = sParamJsonData; } else { /* 工单参数点击确定 */ processData[processSelectDataIndex].sParams = sParamJsonData; } processData[processSelectDataIndex].handleType = handleType; } } } this.props.onSaveState({ processData, sParamsModalVisible: false, }); } else { this.props.onSaveState({ sParamsModalVisible: false, }); } }; handleParamsNewOk = () => { // 工艺参数弹窗确定按钮 const { tableRecordName, [`${tableRecordName}Data`]: processData, tableRecord: processRecord, processConfig, sParamNewData, enabled, sParamModalType, } = this.props; if (enabled) { if (commonUtils.isNotEmptyArr(processData) && commonUtils.isNotEmptyObject(processRecord)) { const processSelectDataIndex = processData.findIndex(item => item.sId === processRecord.sId); if (processSelectDataIndex > -1) { if (commonUtils.isNotEmptyArr(sParamNewData)) { let sParamJsonData = ""; let sParamSeletedData = sParamNewData.filter(item => item.bSelfCbx); if (commonUtils.isNotEmptyObject(sParamSeletedData)) { const originSParamsNew = JSON.parse(processData[processSelectDataIndex]?.sParamsNew || "[]"); if (!Array.isArray(originSParamsNew) || !originSParamsNew.length) return message.error("数据异常"); const replaceData = {}; sParamSeletedData.forEach(i => i && i.sParamKey && (replaceData[i.sParamKey] = i.sParamValue)); sParamSeletedData = originSParamsNew.map(i => ({ ...i, data: { ...(i.data || {}), ...(replaceData || {}), }, })); sParamJsonData = JSON.stringify(sParamSeletedData); } let { handleType } = processData[processSelectDataIndex]; handleType = commonUtils.isEmpty(handleType) ? "update" : handleType; if (sParamModalType === "sQuo") { /* 报价参数点击确定 */ processData[processSelectDataIndex].sQuoParams = sParamJsonData; } else { /* 工单参数点击确定 */ processData[processSelectDataIndex].sParamsNew = sParamJsonData; } processData[processSelectDataIndex].handleType = handleType; } } } this.props.onSaveState({ [`${tableRecordName}Data`]: processData, sParamsNewModalVisible: false, }); } else { this.props.onSaveState({ sParamsNewModalVisible: false, }); } }; /* 获取表格数据 */ handleGetTableConfig = async (name, sModelsId) => { if (commonUtils.isNotEmptyObject(sModelsId)) { const newConfig = await this.props.onGetTableConfig(name, sModelsId); if (commonUtils.isNotEmptyObject(newConfig)) { const newColumn = commonFunc.getHeaderConfig(newConfig); this.props.onSaveState({ [`${[name]}Config`]: newConfig, [`${[name]}Column`]: newColumn }); } } }; /* 快捷键跳转 */ handleQuickViewClick = async (name, sName, record, index, myConfigArr) => { const { slaveConfig, slaveData, dispatch, slaveFilterCondition, slavePagination, slaveOrderBy, sModelsType, formRoute, treeFilterCondition, app, iPageSize, sModelsId, // slaveSelectedData, // masterData, // employeeConfig, } = this.props; console.log("myConfigArr", myConfigArr); let picArr = []; if (commonUtils.isNotEmptyArr(myConfigArr)) { picArr = myConfigArr; } if (picArr.length > 0) { const getConfig = this.handleGetTableConfig; const tableDataRow = record; const iIndex = index; const [{ sActiveId }] = picArr; let [{ sActiveKey }] = picArr; const sFormId = sActiveId === "1" ? (commonUtils.isEmpty(tableDataRow.sFormId) ? tableDataRow.sSrcFormId : tableDataRow.sFormId) : sActiveId; if (commonUtils.isNotEmptyObject(sActiveKey) && sActiveKey.includes(".")) { /* 接口按钮跳转 如果有slave.对应字段 则需要取出对应字段 */ const index = sActiveKey.lastIndexOf("."); sActiveKey = sActiveKey.substring(index + 1, sActiveKey.length); } const sNameUrl = `${commonConfig.server_host}gdsmodule/getGdsmoduleById/${sFormId}?sModelsId=${sFormId}&sName=${formRoute}`; const filterCondition = []; const conditionValues = this.props.getSqlCondition(picArr[0], name, tableDataRow); if (!commonUtils.isEmpty(conditionValues)) { Object.keys(conditionValues).forEach(item => { if (item === "tStartDate_pro" || item.substring(0, 1) === "p") { if (!commonUtils.isEmpty(conditionValues[item]) && conditionValues[item].length >= 2) { const tStartDate = moment(conditionValues[item][0]).format(this.sDateFormat); const tEndDate = moment(conditionValues[item][1]).add(1, "days").format(this.sDateFormat); filterCondition.push({ bFilterName: item, bFilterCondition: "=", bFilterValue: `${tStartDate},${tEndDate}`, }); } } else if (item === "mStartDate_pro" || item.substring(0, 1) === "m") { if (!commonUtils.isEmpty(conditionValues[item])) { const tStartDate = moment(conditionValues[item]).startOf("month").format(this.sDateFormat); const tEndDate = moment(conditionValues[item]).endOf("month").add(1, "days").format(this.sDateFormat); filterCondition.push({ bFilterName: `t${item.substring(1, item.length)}`, bFilterCondition: "=", bFilterValue: `${tStartDate},${tEndDate}`, }); } } else if (item.substring(0, 1) === "t") { filterCondition.push({ bFilterName: item, bFilterCondition: "=", bFilterValue: moment(conditionValues[item]).format(this.sDateFormat), }); } else { filterCondition.push({ bFilterName: item, bFilterCondition: "=", bFilterValue: conditionValues[item], }); } }); } this.props.dispatch({ type: "content/onRouter", payload: { url: sNameUrl, refresh: getConfig.bind(this, name, sModelsId) /* 刷新方法 */, sTabId: commonUtils.createSid(), // sParentId: this.state.sTabId, urlDataType: "newPane", checkedId: myConfigArr[0].sId, sName: myConfigArr[0].sName, bFilter: slaveFilterCondition, pageSize: commonConfig.pageSize, pages: slavePagination, currentData: [tableDataRow], conditonValues: conditionValues, newKey: tableDataRow[sActiveKey], currentIndex: iIndex, filterCondition, }, }); } }; handleSelect = async (name, selectConfig, selectData) => { const { [`${name}Data`]: tableData, [`${name}Config`]: tableConfig, masterConfig, controlSelectedRowKeys, sModelsId, token, app, tableName, sModelsType, slaveConfig, slave0Config, slave1Config, slave2Config, slave3Config, slave4Config, } = this.props; let { masterData } = this.props; if (selectConfig?.sControlName && selectConfig?.sControlName.includes("TmpInfoBySql")) { const copyConfig = selectConfig; const sTmpInfoBySqlBtnConfig = copyConfig; const sConfigformId = commonUtils.isEmpty(copyConfig) ? "" : copyConfig.sParentId; const sControlName = commonUtils.isNotEmptyObject(copyConfig) && copyConfig.sControlName ? copyConfig.sControlName : "TmpInfoBySql"; const dataUrl = `${commonConfig.server_host}salesorder/getTmpInfoBySql/?sModelsId=${sModelsId}`; const sRowData = selectData; const condition = { sConfigformId, sControlName, sRowData }; const dataReturn = (await commonServices.postValueService(token, condition, dataUrl)).data; const allReturnMap = {}; if (dataReturn.code === 1) { const returnData = dataReturn.dataset.rows[0]; if (commonUtils.isNotEmptyObject(returnData)) { for (const key of Object.keys(returnData)) { let config = masterConfig.gdsconfigformslave.filter( item => item.sControlName.split(".").length === 3 && item.sControlName.includes(selectConfig.sControlName + "." + key) )[0]; const sAssignField = config ? config.sAssignField : copyConfig.sAssignField; const sTmpInfoBySqlBtnName = config?.sControlName; const sName = `${key}Data`; const sDelName = `${key}DelData`; // allReturnMap[sName] = returnData[key]; let { [`${key}Data`]: oldData, [`${key}Data`]: oldDelData } = this.props; if (commonUtils.isEmptyArr(oldDelData)) { oldDelData = []; } if (commonUtils.isEmptyArr(oldData)) { oldData = []; } if (key === "master" || key === "TmpInfoBySql") { const newRow = Array.isArray(returnData[key]) ? returnData[key][0] : returnData[key]; masterData = { ...masterData, ...commonFunc.getAssignFieldValue(sAssignField, newRow) }; // 取赋值字段 masterData.maxBillNo = "sBillNo"; masterData.handleType = commonUtils.isEmpty(masterData.handleType) ? "update" : masterData.handleType; allReturnMap.masterData = masterData; } else if (sTmpInfoBySqlBtnName.includes("_add")) { /* 原有数据集不动,新数据插入 */ /* 对应字段 */ const keyData = returnData[key]; if (commonUtils.isNotEmptyArr(keyData)) { keyData.forEach(child => { const tableRow = { ...child, ...commonFunc.getAssignFieldValue(sAssignField, child) }; // 取赋值字段 tableRow.sId = commonUtils.createSid(); tableRow.sParentId = masterData.sId; tableRow.handleType = "add"; oldData.push(tableRow); }); } allReturnMap[sName] = oldData; } else if (sTmpInfoBySqlBtnName.includes("_edit")) { /* 替换 根据对应字段对比 相同的不管 不同的插入 */ /* 对应字段 */ const sActiveKey = sTmpInfoBySqlBtnConfig[0].sActiveKey; const keyData = returnData[key]; let newData = []; if (commonUtils.isNotEmptyArr(keyData)) { keyData.forEach(child => { const filterData = oldData.filter(item => item[sActiveKey] !== child[sActiveKey]); if (commonUtils.isNotEmptyArr(filterData) && filterData.length === oldData.length) { let tableRow = {}; tableRow = { ...tableRow, ...commonFunc.getAssignFieldValue(sAssignField, child) }; // 取赋值字段 tableRow.sId = commonUtils.createSid(); tableRow.sParentId = masterData.sId; tableRow.handleType = "add"; newData.push(tableRow); } }); newData = oldData.concat(newData); } allReturnMap[sName] = newData; } else if (sTmpInfoBySqlBtnName.includes("_del") || !sTmpInfoBySqlBtnName.includes("_")) { /* 替换 根据对应字段对比 相同的不管 不同的插入 */ /* 对应字段 */ oldData.forEach(child => { child.handleType = "del"; oldDelData.push(child); }); allReturnMap[sDelName] = oldDelData; oldData = []; console.log("returnData", returnData[key]); const keyData = returnData[key]; if (commonUtils.isNotEmptyArr(keyData)) { keyData.forEach(child => { const tableRow = { ...child, ...commonFunc.getAssignFieldValue(sAssignField, child) }; // 取赋值字段 tableRow.sId = commonUtils.createSid(); tableRow.sParentId = masterData.sId; tableRow.handleType = "add"; oldData.push(tableRow); }); } allReturnMap[sName] = oldData; } else { allReturnMap[sName] = returnData[key]; } } console.log("allReturnMap:", allReturnMap); this.props.onSaveState({ ...allReturnMap }); } } else { this.props.getServiceError(dataReturn); } } else if (selectConfig?.sControlName === "BtnGetApiDialog") { /* 回刷单据 */ await this.handleGetData(masterConfig, slaveConfig, slave0Config, slave1Config, slave2Config, slave3Config, slave4Config); } }; handleSelect1 = async (name, selectConfig, selectData) => { const { masterData, masterConfig, token, sModelsId } = this.props; const _props = this.props; const _this = this; const copyConfig = masterConfig.gdsconfigformslave.filter( item => item.sControlName.split(".").length === 2 && item.sControlName.includes(this.copyName) )[0]; const sConfigformId = commonUtils.isEmpty(copyConfig) ? "" : copyConfig.sParentId; const sControlName = commonUtils.isNotEmptyObject(copyConfig) && copyConfig.sControlName ? copyConfig.sControlName : "TmpInfoBySql"; const dataUrl = `${commonConfig.server_host}salesorder/getTmpInfoBySql/?sModelsId=${sModelsId}`; const addState = {}; const sRowData = selectData; async function fetchData() { const condition = { sConfigformId, sControlName, sRowData }; const dataReturn = (await commonServices.postValueService(token, condition, dataUrl)).data; if (dataReturn.code === 1) { const returnData = dataReturn.dataset.rows[0]; for (const key in returnData) { let arr = JSON.parse(JSON.stringify(returnData[key])); arr.forEach((item, idx) => { const newCopyTo = {}; newCopyTo.master = masterData; let config = masterConfig.gdsconfigformslave.filter( item => item.sControlName.split(".").length === 3 && item.sControlName.includes(selectConfig.sControlName + "." + key) )[0]; const sAssignField = config ? config.sAssignField : copyConfig.sAssignField; const newSid = commonUtils.createSid(); let mixData = commonFunc.getDefaultData(_props[`${key}Config`] || {}, newCopyTo, { newSid }); // 取默认值 mixData = { ...mixData, ...commonFunc.getAssignFieldValue(sAssignField, item, newCopyTo) }; // 取赋值字段 mixData.handleType = "add"; mixData.sId = newSid; mixData.sParentId = key === "mater" || key === "TmpInfoBySql" ? mixData.sParentId : masterData.sId; if (key === "master" || key === "TmpInfoBySql") { mixData.sFormId = _this.props.masterData.sFormId; mixData.sId = _this.props.masterData.sId; mixData.maxBillNo = "sBillNo"; mixData.handleType = commonUtils.isEmpty(_this.props.masterData.handleType) ? "update" : _this.props.masterData.handleType; arr[idx] = mixData; } else { mixData.sParentId = _this.props.masterData.sId; arr[idx] = mixData; } }); const tableName = key === "mater" || key === "TmpInfoBySql" ? "master" : key; if (addState[`${tableName}Data`] === undefined) { addState[`${tableName}Data`] = []; } addState[`${tableName}Data`] = addState[`${tableName}Data`].concat(arr); console.log("结果集", addState); } } else { _this.props.getServiceError(dataReturn); } } await fetchData(); if (addState.masterData) { [addState.masterData] = addState.masterData; } if (Object.keys(addState).length) { this.props.onSaveState({ ...addState }); } }; handleSelectCancel = name => { this.props.onSaveState({ [`${name}ChooseVisible`]: false }); }; /* 双击弹出Memo */ // handleGetMemo = (name, sValue, sMemoFiled, sRecord) => { // const { sCurrMemoProps } = this.props; // let { [`${name}Data`]: tableData } = this.props; // const addStata = { [`${sMemoFiled}`]: sValue }; // if (name !== 'master') { // const iIndex = tableData.findIndex(item => item.sId === sRecord.sId); // let handleType = tableData[iIndex].handleType;/* 获取操作类型 */ // handleType = commonUtils.isEmpty(handleType) ? 'update' : handleType; // addStata.handleType = handleType; // tableData[iIndex] = { ...tableData[iIndex], ...addStata }; // } else { // let handleType = tableData.handleType;/* 获取操作类型 */ // handleType = commonUtils.isEmpty(handleType) ? 'update' : handleType; // addStata.handleType = handleType; // tableData = { ...tableData, ...addStata }; // } // sCurrMemoProps.bVisibleMemo = false; // this.props.onSaveState({ ...sCurrMemoProps, [`${name}Data`]: tableData }); // }; // handleGetMemoCancel = () => { // const { sCurrMemoProps } = this.props; // sCurrMemoProps.bVisibleMemo = false; // this.props.onSaveState({ ...sCurrMemoProps }); // }; // async await handleEleMaterialsStoreCurrQty = async slaveData => { const { sModelsId, app } = this.props; let flag = true; const InsufficientInventory = commonFunc.showMessage(app.commonConst, "InsufficientInventory"); /* 库存不足,不能领料 */ const MateriaTransferQuantityVerificationFailed = commonFunc.showMessage( app.commonConst, "MateriaTransferQuantityVerificationFailed" ); /* 材料调拨数量校验失败,请稍后操作 */ const url = `${commonConfig.server_host}eleMaterialsStock/getEleMaterialsStoreCurrQty?sModelsId=${sModelsId}`; for (const item of slaveData) { const body = { sMaterialsId: item.sMaterialsId /* 查询条件 */, sMaterialsStyle: item.sMaterialsStyle, sWareHouseId: item.sWareHouseId, }; if (commonUtils.isNotEmptyStr(item.sLocationId)) { body.sLocationId = item.sLocationId; } if (commonUtils.isNotEmptyStr(item.sWarehouseLocationId)) { body.sWarehouseLocationId = item.sWarehouseLocationId; } if (commonUtils.isNotEmptyStr(item.sDefineNo)) { body.sDefineNo = item.sDefineNo; } if (commonUtils.isNotEmptyStr(item.sDefineNo2)) { body.sDefineNo2 = item.sDefineNo2; } const dataReturn = (await commonServices.postValueService(this.props.app.token, body, url)).data; if (dataReturn.code === 1) { if (commonUtils.isNotEmptyArr(dataReturn.dataset.rows)) { const materials = dataReturn.dataset.rows[0]; if (materials.dAuxiliaryQty < item.dAuxiliaryQty) { message.error(`[${item.sMaterialsName}${item.sMaterialsStyle}], ${InsufficientInventory}`); flag = false; break; } } else { const sMaterialsName = commonUtils.isEmpty(item.sMaterialsName) ? item.sMaterialsName1 : item.sMaterialsName; message.error(`[${sMaterialsName}${item.sMaterialsStyle}], ${InsufficientInventory}`); flag = false; break; } } else { message.error(MateriaTransferQuantityVerificationFailed); flag = false; break; } } return flag; }; handleBtnExportSql = () => {}; componentDidUpdate() { if (this.state.initSId) { this.slaveTablePositon(); } } slaveTablePositon() { if (!this.state.initSId) return; const oSelectedTr = document.querySelector(`#dataBox tr[data-row-key='${this.state.initSId}']`); if (oSelectedTr) { const oTbody = oSelectedTr.parentNode.parentNode.parentNode; if (oSelectedTr && oTbody) { oTbody.scrollTop = oSelectedTr.offsetTop; this.setState({ initSId: "", }); } } } handleTableBlur = async (name, sFieldName, record, tableConfig) => { const { sModelsId, app, token, sModelsType, [`${name}Data`]: tableData, [`${name}Data`]: tableSelectedRowKeys, masterData } = this.props; const models = name === "materials" ? "Materials" : sModelsType.includes("sales/") || sModelsType.includes("manufacture/") || sModelsType.includes("print/") || sModelsType.includes("quotation/") || sModelsType.includes("productStock/") ? "Product" : "Materials"; let tableDataRow = {}; if ( sFieldName === "sMaterialsNo" || sFieldName === "sMaterialsName" || sFieldName === "dAuxiliaryQty" || sFieldName === "dReelAuxiliaryQty" || sFieldName === "dConversionQty" || sFieldName === "sMaterialsStyle" ) { let iIndex = -1; if (commonUtils.isEmptyArr(tableSelectedRowKeys)) { iIndex = 0; } else { tableData.findIndex(item => item.sId === tableSelectedRowKeys.toString()); } tableDataRow = await this.handleMaterialsChange(record, sModelsId, masterData, {}, sFieldName, app, token, models); if (iIndex > -1) { tableData[iIndex] = tableDataRow; } this.props.onSaveState({ [`${name}Data`]: tableData }); } else { this.props.onDropDownBlur(name, sFieldName, record, tableConfig); } }; /* 单击右键全部更新,弹出窗选择后,更新此列所有数据 (只更新非只读字段) */ onContextMenu = (e, record, showConfig, tbName) => { const contextMenuConfig = []; const showConfigNew = JSON.parse(JSON.stringify(showConfig)); /* 深拷贝配置 */ contextMenuConfig.push(showConfigNew); this.props.onSaveState({ contextMenuModalVisible: true /* 右击全部更新弹窗 */, contextMenuConfig /* 右击字段配置 数组形式 */, contextMenuRecord: record /* 右击数据 */, contextMenuName: showConfig.showName /* 右击字段 */, contextMenuTbName: tbName /* 右击字段 */, }); }; /* 单据字段单击右键全部更新,弹出窗选择后,更新此列所有数据。(只更新非只读字段) */ handleContextMenuOk = async (contextMenuValue, contextMenuData, contextMenuType) => { const { contextMenuConfig, contextMenuTbName, [`${contextMenuTbName}Data`]: tableData, [`${contextMenuTbName}SelectedRowKeys`]: selectedRowKeys, } = this.props; if (commonUtils.isNotEmptyObject(contextMenuTbName) && commonUtils.isNotEmptyArr(tableData)) { if (commonUtils.isNotEmptyArr(contextMenuConfig) && commonUtils.isNotEmptyObject(contextMenuConfig[0])) { const tableConfig = contextMenuConfig[0]; const tableFilterData = tableData.filter(item => selectedRowKeys.includes(item.sId)); if (commonUtils.isNotEmptyArr(tableFilterData)) { let changeData = []; const chooseType = commonUtils.isNotEmptyNumber(contextMenuType) ? contextMenuType : 1; if (chooseType === 1) { changeData = tableData; } else if (chooseType === 2) { const iIndex = tableData.findIndex(item => selectedRowKeys.includes(item.sId)); changeData = tableData.filter((_, index) => index >= iIndex); } // const tableDataRow = tableFilterData[0]; if (commonUtils.isNotEmptyArr(changeData) && commonUtils.isNotEmptyObject(tableConfig.sName) && !commonUtils.isEmpty(contextMenuValue)) { const sName = tableConfig.sName; for (let i = 0; i < changeData.length; i++) { const child = changeData[i]; const addState = {}; addState[sName] = contextMenuValue; const iIndex = tableData.findIndex(row => row.sId === child.sId); const bShowProcess = [ "sMaterialsNo", "sMaterialsName", "dAuxiliaryQty", "dReelAuxiliaryQty", "dConversionQty", "sMaterialsStyle", "sMaterialsStyle", "dMaterialsQty", "dAuxiliaryLossQty", "dLossQty", "sProcessId", "sProcessNo", "sProcessName", ].includes(sName); bShowProcess && message.loading({ content: , key: "xlyProcess", duration: 0, className: styles.xlyProcess }); if (iIndex > -1) { addState.handleType = commonUtils.isEmpty(tableData[iIndex].handleType) ? "update" : tableData[iIndex].handleType; tableData[iIndex] = { ...tableData[iIndex], ...addState, ...contextMenuData }; const changeValue = { ...contextMenuData }; changeValue[sName] = contextMenuValue; this.xlyProcessPercent = (((i + 1) / changeData.length) * 100).toFixed(2); const duration = i === changeData.length - 1 ? 1 : 0; bShowProcess && message.loading({ content: , key: "xlyProcess", duration, className: styles.xlyProcess, }); /* 手动触发改变事件 */ const result = await this.handleTableChange(contextMenuTbName, sName, changeValue, child.sId, [], true); tableData[iIndex] = { ...tableData[iIndex], ...result }; } } } } } } this.props.onSaveState({ [`${contextMenuTbName}Data`]: tableData, contextMenuModalVisible: false /* 右击全部更新弹窗 */, }); }; handleCancelModal = modelVisible => { this.props.onSaveState({ [modelVisible]: false, }); }; handleTableSelectRowChange = async (name, selectedRowKeys, changeValue, isWait) => { if (name === "sParamNew" && commonUtils.isNotEmptyArr(selectedRowKeys)) { /* 点击工艺参数列表 根据点击行动态加载配置 */ const { sParamNewData, sParamNewConfig } = this.props; /* 找到最后一个选中 */ const lastSelectedKeys = selectedRowKeys[selectedRowKeys.length - 1]; const iIndex = sParamNewData.findIndex(item => lastSelectedKeys === item.sId); /* 选中数据时 塞入选中行的配置 */ if (iIndex > -1) { const sParamObj = sParamNewData[iIndex]; const index = sParamNewConfig.gdsconfigformslave.findIndex(item => item.sName === "sParamValue"); if (index > -1) { if (commonUtils.isNotEmptyObject(sParamObj.sDropDownData)) { sParamNewConfig.gdsconfigformslave[index].sDropDownType = "const"; sParamNewConfig.gdsconfigformslave[index].showDropDown = JSON.stringify(sParamObj.sDropDownData); } else { sParamNewConfig.gdsconfigformslave[index].sDropDownType = ""; sParamNewConfig.gdsconfigformslave[index].showDropDown = undefined; } } /* 点击时 若没打钩 则选择框打钩 若已经打钩则取消打钩 */ if (sParamNewData[iIndex].bSelfCbx) { // sParamData[iIndex] = { ...sParamData[iIndex], bSelfCbx: false }; } else { sParamNewData[iIndex] = { ...sParamNewData[iIndex], bSelfCbx: true }; } this.props.onSaveState({ sParamNewData, }); } } if (isWait) { return await this.props.onTableSelectRowChange(name, selectedRowKeys, isWait); } else { this.props.onTableSelectRowChange(name, selectedRowKeys); } }; handleGetParamsValue = ({ sName, sValue, record = {} }) => { const jsonData = commonUtils.convertStrToObj(sValue, []); if (["sParams", "sParamsNew"].includes(sName)) { const { sWorkOrderParam: sWorkOrderParamStr } = record; const sWorkOrderParam = commonUtils.convertStrToObj(sWorkOrderParamStr, {}); const sWorkOrderData = jsonData.find(item => item.sParamType === "sWorkOrder") || {}; const { data = {} } = sWorkOrderData; const result = []; Object.keys(data).forEach(key => { if (sWorkOrderParam[key] !== undefined) { result.push(`${sWorkOrderParam[key]}: ${data[key]}`); } }); return result.join(";"); } return sValue; }; handleSelectCommonPopup = (currentPaneName, selectConfig, selectData, tbName) => { const { [`${tbName}SelectedRowKeys`]: tableSelectedRowKeys, masterData, processConfig } = this.props; let { [`${tbName}Data`]: tableData } = this.props; const addState = {}; if (selectConfig.sControlName && selectConfig.sControlName.includes("BtnPopupTray")) { const iIndex = commonUtils.isNotEmptyArr(tableSelectedRowKeys) && commonUtils.isNotEmptyObject(tableSelectedRowKeys[0]) ? tableData.findIndex(item => item.sId === tableSelectedRowKeys[0]) : -1; let dSumProductQty = 0; if (commonUtils.isNotEmptyArr(selectData)) { // eslint-disable-next-line no-unused-vars selectData.forEach(async (item, index) => { const newCopyTo = {}; newCopyTo.master = masterData; const sName = selectConfig.sKeyUpFilter; /* 将后台配置筛选字段作为 列字段 */ let sValue = ""; if (iIndex > -1) { newCopyTo.slave = tableData[iIndex]; sValue = tableData[iIndex][sName]; } /* 第一条数据若字段值为空或者只有一条数据时 则添加到该行 否则新增一行 */ if (selectData.length === 1 || (index === 0 && commonUtils.isEmptyObject(sValue))) { let tableDataRow = {}; // 取默认值 tableDataRow = { ...tableData[iIndex] }; if (tbName === "slave") { tableDataRow.sSqlConditionId = tableDataRow.sId; } tableDataRow = { ...tableDataRow, ...commonFunc.getAssignFieldValue(selectConfig.sAssignField, item, newCopyTo) }; // 取赋值字段 tableData[iIndex] = tableDataRow; tableData[iIndex].handleType = commonUtils.isEmpty(tableData[iIndex].handleType) ? "update" : tableData[iIndex].handleType; } else { let tableDataRowAdd = this.handleTableAdd(tbName, true); if (tbName === "slave") { tableDataRowAdd.sSqlConditionId = tableDataRowAdd.sId; } tableDataRowAdd = { ...tableDataRowAdd, ...commonFunc.getAssignFieldValue(selectConfig.sAssignField, item, newCopyTo) }; // 取赋值字段0 tableData.push(tableDataRowAdd); } }); tableData.forEach((item, index) => { dSumProductQty = commonUtils.convertFixNum( commonUtils.convertFixNum(commonUtils.isNull(dSumProductQty, 0), 6) + commonUtils.convertFixNum(commonUtils.isNull(item.dSampleQty), 6), 6 ); }); masterData.dInspectQty = commonUtils.convertFixNum(dSumProductQty * 10000, 6); masterData.handleType = commonUtils.isEmpty(masterData.handleType) ? "update" : masterData.handleType; addState[`${tbName}Data`] = tableData; addState.masterData = masterData; this.props.onSaveState({ ...addState }); } } else { this.props.onSelectCommonPopup(currentPaneName, selectConfig, selectData, tbName); } }; /** 键盘事件监听 */ onKeyDown = (e, record, sName, name) => { const { [`${name}Data`]: tableData, [`${name}Column`]: tableColumn, [`${name}Config`]: tableConfig } = this.props; let keyCode = e.keyCode; let firstName; let bEnter = false; if (keyCode === 13) { // 判断当前单元格是否是最后,不是则跳到下一格,是则跳到下一行第一格 bEnter = true; const uniqueTableId = `table_${this.props.sModelsId}_${tableConfig.sId}`; const currentTable = document.getElementById(uniqueTableId); const currentTr = currentTable.querySelector(`tr[data-row-key="${record.sId}"]`); const allInput = currentTr.querySelectorAll(`input[id*="${record.sId}"]`); const iIndex = Array.from(allInput).findIndex(item => item.getAttribute("id") === `${sName}${record.sId}`); if (iIndex < allInput.length - 1) { keyCode = 39; } else { const oFirstInput = allInput[0]; firstName = oFirstInput.getAttribute("id").replace(record.sId, ""); keyCode = 40; } } // 以下if条件为 为解决bug2031问题入口 需求:收款单里输入的收款金额,上下键操作把加减金额改为选择上下行(通过上下方向键切换行数) if ([38, 40].includes(keyCode)) { // 上键、下键 e.preventDefault(); if (tableData.length > 1) { // 当从表行数大于一行时才有上下移动的意义 const index = tableData.findIndex(item => item.sId === record.sId); // 获取当前编辑行的下标 if (index > -1) { if (keyCode === 38 && index > 0) { // 方向键上键 且 当前编辑行下标大于0时,为0时无法向上 const lastSid = tableData[index - 1].sId; // 获取上一个id this.props.onSaveState({ [`${name}SelectedRowKeys`]: [lastSid] }, () => commonUtils.focus(`${sName}${lastSid}`)); } if (keyCode === 40 && index < tableData.length - 1) { // 方向键下键 且 当前编辑行下标小于最大值时,为最大值时无法向下 const nextSid = tableData[index + 1].sId; // 获取下一个id this.props.onSaveState({ [`${name}SelectedRowKeys`]: [nextSid] }, () => commonUtils.focus(`${firstName || sName}${nextSid}`)); } } } } const move = (keyCode, cursortPosition, columnIndex, currentElement) => { const inputType = currentElement.getAttribute("type"); const value = currentElement.value; if (keyCode === 37 && columnIndex > 0 && cursortPosition < 1) { // 左移 则 列下标必须大于0, 且光标在最左侧 const lastId = `${tableColumn[columnIndex - 1].dataIndex}${record.sId}`; if (!commonUtils.focus(lastId, e)) move(keyCode, cursortPosition, columnIndex - 1, currentElement); // 递归 } if (keyCode === 39 && columnIndex < tableColumn.length - 1) { // 右移 则 列下标必须小于列数量-1 if (!record[sName] || cursortPosition >= value.length || inputType === "search" || bEnter) { // 当前列为空 或 光标位置不小于当前值的长度 const nextId = `${tableColumn[columnIndex + 1].dataIndex}${record.sId}`; if (!commonUtils.focus(nextId, e)) move(keyCode, cursortPosition, columnIndex + 1, currentElement); // 递归 } } }; if ([37, 39].includes(keyCode)) { // 左键、右键 const currentElement = document.getElementById(`${sName}${record.sId}`); // 当前编辑框对象 if (currentElement) { const cursortPosition = commonUtils.getCursortPosition(currentElement); // 光标位置 const columnIndex = tableColumn.findIndex(item => item.dataIndex === sName); // 当前列下标 move(keyCode, cursortPosition, columnIndex, currentElement); } } }; /* 拖拽表格树形节点 */ handleMoveRow = (dragIndex, hoverIndex, dragKey, hoverKey, props) => { const { slaveData: data } = this.props; // const dragRow = data[dragIndex]; const dragObject = commonUtils.isNotEmptyArr(data.filter(ele => ele.sId === dragKey)) ? data.filter(ele => ele.sId === dragKey)[0] : {}; const hoverObject = commonUtils.isNotEmptyArr(data.filter(ele => ele.sId === hoverKey)) ? data.filter(ele => ele.sId === hoverKey)[0] : {}; // 同级菜单的移动 let newData = data.filter(ele => ele.sId !== dragKey); let insertIndex = 0; if (commonUtils.isNotEmptyArr(newData)) { newData.forEach((ele, index) => { if (ele.sId === hoverKey) { if (dragIndex > hoverIndex) { // 上移:dragKey表示的元素 放到 hoverKey表示的元素之前 insertIndex = index; } else { // 下移 dragKey表示的元素 放到 hoverKey表示的元素之后 insertIndex = index + 1; } } }); newData.splice(insertIndex, 0, dragObject); if (commonUtils.isNotEmptyObject(dragObject)) { dragObject.handleType = dragObject.handleType ? dragObject.handleType : "update"; dragObject.iOrder = hoverObject.iOrder + 1 } // newData.forEach((item,index) =>{ // item.handleType = 'update' // item.iOrder = // }) this.props.onSaveState({ slaveData: newData }); } }; render() { const { masterData, sModelsType, app } = this.props; const imgSrc = commonBusiness.handleAddIcon(masterData, sModelsType, app); return ( ); } }; };