From 7c13492d9cba9310fa82b2e89295568fd78d63e8 Mon Sep 17 00:00:00 2001 From: pengm <674192343@qq.com> Date: Sat, 28 Feb 2026 13:39:15 +0800 Subject: [PATCH] 1.这边对账的时候 会走未清的勾选过来 先保存 后面如发现遗漏 需要直接在保存的单据上再把未对账数据源选上去(即不愿意删除整个单据 再重新未清勾选) 采购 销售目前配置都没问题 但是运费对账是三张表 第三张表没法 赋值过来 麻烦处理下 --- src/components/Common/CommonSubBillEvent.js | 181 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++----- 1 file changed, 176 insertions(+), 5 deletions(-) diff --git a/src/components/Common/CommonSubBillEvent.js b/src/components/Common/CommonSubBillEvent.js index 023c037..241725e 100644 --- a/src/components/Common/CommonSubBillEvent.js +++ b/src/components/Common/CommonSubBillEvent.js @@ -6711,15 +6711,186 @@ export default (ChildComponent) => { return tableData; }; + handleGetTmpInfoData = async (currentPaneName, tableConfig, selectData, name) => { + const { sModelsId, app } = this.props; + const { slaveConfig, [`${name}Data`]: tableData, [`${name}Config`]: tempConfig = {} } = this.props; + let { slaveData: slaveDataOld, masterData, slaveDelData } = this.props; + if (commonUtils.isNotEmptyObject(tableConfig) && commonUtils.isNotEmptyObject(tableConfig.sButtonParam)) { + const sTmpInfoConfig = tableConfig; + const sButtonParam = tableConfig.sButtonParam; + const btn = commonUtils.isNotEmptyObject(sButtonParam) && commonUtils.isJSON(sButtonParam) ? JSON.parse(sButtonParam) : {}; + const sProName = commonUtils.isNotEmptyObject(btn) ? btn.sproName : ""; + console.log('btn', tableConfig, btn, name); + + const sTmpInfoBySqlBtnName = commonUtils.isNotEmptyObject(btn) ? btn.sControlName : ""; + console.log('sTmpInfoBySqlBtnName', sTmpInfoBySqlBtnName); + const sActiveKey = sTmpInfoConfig.sActiveKey; + if (commonUtils.isNotEmptyObject(sTmpInfoConfig)) { + if (sTmpInfoBySqlBtnName?.includes("sTmpInfoBySql")) { + /* 走TmpInfo逻辑 */ + const newCopyTo = {}; + newCopyTo.master = masterData; + /* 找到自定义TempInfo配置 */ + const btnConfig = tempConfig?.gdsconfigformslave.filter(item => item.sControlName.includes(sTmpInfoBySqlBtnName)); + const btnControlName = btnConfig[0].sControlName; + const dataUrl = `${commonConfig.server_host}salesorder/getTmpInfoBySql/?sModelsId=${sModelsId}`; + const sConfigformId = commonUtils.isEmpty(btnConfig) ? "" : btnConfig[0].sParentId; + const sControlName = commonUtils.isNotEmptyObject(sTmpInfoBySqlBtnName) ? sTmpInfoBySqlBtnName : "TmpInfoBySql"; + const sAssignField = btnConfig[0].sAssignField; + const sActiveKeyNew = btnConfig[0].sActiveKey; + let sRowData = selectData; + if (name === "master" && sTmpInfoBySqlBtnName.includes("_update")) { + const { slaveData } = this.state; + if (commonUtils.isNotEmptyArr(slaveData)) { + sRowData = [...sRowData, ...slaveData]; + } + } + const values = { sConfigformId, sControlName, sRowData }; + if (true) { + const dataReturn = (await commonServices.postValueService(app.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}DelData`]: oldDelData } = this.props; + if (commonUtils.isEmptyArr(oldDelData)) { + oldDelData = []; + } + if (commonUtils.isEmptyArr(oldData)) { + oldData = []; + } + if (sTmpInfoBySqlBtnName.includes("_edit")) { + /* 替换 根据对应字段对比 相同的不管 不同的插入 */ + /* 对应字段 */ + const sActiveKey = sTmpInfoConfig.sActiveKey; + const keyData = returnData[key]; + let newData = []; + if (commonUtils.isNotEmptyArr(keyData)) { + keyData.forEach(child => { + const filterData = oldData.filter(item => item[sActiveKeyNew] !== child[sActiveKeyNew]); + if (commonUtils.isNotEmptyArr(filterData) && filterData.length === oldData.length) { + const tableRow = { ...child, ...commonFunc.getAssignFieldValue(sAssignField, child) }; // 取赋值字段111 + tableRow.sId = commonUtils.createSid(); + tableRow.sParentId = masterData.sId; + tableRow.handleType = "add"; + newData.push(tableRow); + } else { + /* 相同的根据赋值字段覆盖 */ + const iIndex = oldData.findIndex(item => item[sActiveKeyNew] === child[sActiveKeyNew]); + if (iIndex > -1) { + if (sAssignField) { + oldData[iIndex] = { ...oldData[iIndex], ...commonFunc.getAssignFieldValue(sAssignField, child) }; + } else { + oldData[iIndex] = { ...oldData[iIndex], ...child }; + } + oldData[iIndex].handleType = commonUtils.isEmpty(oldData[iIndex].handleType) ? "update" : oldData[iIndex].handleType; + } + } + }); + newData = oldData.concat(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 => { + const tableRow = { ...child, ...commonFunc.getAssignFieldValue(sAssignField, child) }; // 取赋值字段111 + tableRow.sId = commonUtils.createSid(); + if (sName === "slaveData" && !tableRow.sSqlConditionId) { + tableRow.sSqlConditionId = tableRow.sId; + } + tableRow.sParentId = masterData.sId; + tableRow.handleType = "add"; + oldData.push(tableRow); + }); + } + allReturnMap[sName] = oldData; + } else if (btnControlName?.includes("add")) { + const keyData = returnData[key]; + if (commonUtils.isNotEmptyArr(keyData)) { + keyData.forEach(child => { + const tableRow = { ...child, ...commonFunc.getAssignFieldValue(sAssignField, child) }; // 取赋值字段111 + tableRow.sId = commonUtils.createSid(); + tableRow.sParentId = masterData.sId; + tableRow.handleType = "add"; + oldData.push(tableRow); + }); + } + console.log('keyde2', sName, oldData); + allReturnMap[sName] = oldData; + } else if (sTmpInfoBySqlBtnName.includes("_update")) { + /* 更新字段 */ + const keyData = returnData[key]; + if (commonUtils.isNotEmptyArr(keyData) && sActiveKeyNew) { + const [linkField, onchangeField] = sActiveKeyNew.split(","); + const tableName = key.split("_update")[0]; + const { [`${tableName}Data`]: tableData = [] } = this.state; + + for (let i = 0; i < keyData.length; i++) { + const child = keyData[i]; + const tableDataFilter = tableData.filter(item => item[linkField] === child[linkField]); + for (let j = 0; j < tableDataFilter.length; j++) { + const item = tableDataFilter[j]; + const iIndex = tableData.findIndex(row => row.sId === item.sId); + tableData[iIndex] = { ...item, ...child }; + if (onchangeField && this.state.onEventDataChange) { + const { sId, [onchangeField]: fieldsValue } = tableData[iIndex]; + window.tmpSlaveData = tableData; + tableData[iIndex] = await this.state.onEventDataChange( + "slave", + onchangeField, + { [onchangeField]: fieldsValue }, + sId, + [], + true + ); + window.tmpSlaveData = null; + } + } + } + allReturnMap[`${tableName}Data`] = tableData; + } + } else { + allReturnMap[sName] = returnData[key]; + } + } + if (commonUtils.isNotEmptyArr(allReturnMap.masterData) && Array.isArray(allReturnMap.masterData)) { + allReturnMap.masterData = allReturnMap.masterData[0]; + } + console.log('1212', allReturnMap); + this.props.onSaveState({ ...allReturnMap }); + } + } else { + this.getServiceError(dataReturn); + } + } + } + } else { + message.error("请正确配置自定义按钮!"); + } + } + }; /* 送货单个性化弹窗 选择数据带到从表字表 */ handleSelectCommonPopup = async (currentPaneName, selectConfig, selectData, tbName) => { - const { - [`${tbName}SelectedRowKeys`]: tableSelectedRowKeys, masterData, sModelsId, sModelsType, slaveSelectedRowKeys, slaveData, - } = this.props; - let { slaveChildData, [`${tbName}Data`]: tableData, app, token } = this.props; + const { [`${tbName}SelectedRowKeys`]: tableSelectedRowKeys, masterData, sModelsId, sModelsType, slaveSelectedRowKeys, slaveData } = this.props; + let { slaveChildData, [`${tbName}Data`]: tableData, app, token } = this.props; const iIndex = commonUtils.isNotEmptyArr(tableSelectedRowKeys) ? tableData.findIndex(item => item.sId === tableSelectedRowKeys[0]) : -1; let dProductQty = 0; - if (selectConfig && (selectConfig.sControlName.includes('BtnPopup1Deliver') || selectConfig?.sControlName.includes('Sub'))) { + /* 点击确定后调用getTmpInfo数据获取数据源塞入不同的数据集中 */ + if (commonUtils.isNotEmptyObject(selectConfig) && commonUtils.isNotEmptyObject(selectConfig.sButtonParam)) { + await this.handleGetTmpInfoData(currentPaneName, selectConfig, selectData, tbName); + } else if (selectConfig && (selectConfig.sControlName.includes('BtnPopup1Deliver') || selectConfig?.sControlName.includes('Sub'))) { if (commonUtils.isNotEmptyArr(selectData)) { // eslint-disable-next-line no-unused-vars selectData.forEach(async (item, index) => { -- libgit2 0.22.2