From f898dd111ccd53244734f269d8f6056b41a10ae3 Mon Sep 17 00:00:00 2001 From: chenxt <10125295+chen-xintao97@user.noreply.gitee.com> Date: Wed, 24 Dec 2025 13:43:09 +0800 Subject: [PATCH] 自定义按钮 --- src/mes/common/commonModelComponent/index.js | 195 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++--------- src/mes/common/commonOperationBarComponent/MesToolbar.js | 711 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++----------- src/mes/common/commonOperationBarComponent/index.js | 22 ++++++++++++++++------ src/mes/costomPageFun/index.js | 1 + src/utils/config.js | 8 ++++---- 5 files changed, 907 insertions(+), 30 deletions(-) diff --git a/src/mes/common/commonModelComponent/index.js b/src/mes/common/commonModelComponent/index.js index a6b7a7f..ad79702 100644 --- a/src/mes/common/commonModelComponent/index.js +++ b/src/mes/common/commonModelComponent/index.js @@ -993,7 +993,7 @@ const useCommonModelEvent = props => { } }); } else { - const tableDataRow = this.handlePackDataAdd( + const tableDataRow = handlePackDataAdd( item, index, sId, @@ -1082,7 +1082,6 @@ const useCommonModelEvent = props => { // 审核 /** toolbar审核(消审) */ const handleAudit = async (flag) => { - console.log("🚀 ~ handleAudit ~ flag:", flag) /* 待用数据声明 */ let bResult = true; const { masterData, gdsformconst } = props; @@ -1090,7 +1089,7 @@ const useCommonModelEvent = props => { /* 作废订单不能审核 */ if (masterData.bInvalid) { message.warning(commonFunc.showMessage(app.commonConst, 'sToVoid')); - handleSaveState({ + props.onSaveState({ loading: false, }); return ''; @@ -1098,7 +1097,7 @@ const useCommonModelEvent = props => { /** 数据审核 */ bResult = await dataAudit(flag); } else { - handleSaveState({ + props.onSaveState({ loading: false, }); } @@ -1142,7 +1141,7 @@ const useCommonModelEvent = props => { } } } else { - handleSaveState({ + props.onSaveState({ loading: false, }); return; @@ -1158,7 +1157,7 @@ const useCommonModelEvent = props => { const check = commonFunc.showMessage(app.commonConst, 'BtnExamine');/* 审核 */ const BtnCancelExamine = commonFunc.showMessage(app.commonConst, 'BtnCancelExamine');/* 销审 */ if (returnData.code === 1) { /* 成功 */ - handleSaveState({ + props.onSaveState({ loading: false, }); if (flag === 1) { @@ -1245,13 +1244,13 @@ const useCommonModelEvent = props => { ), onOk() { }, }); - handleSaveState({ + props.onSaveState({ loading: false, }); return false; } else { /* 失败 */ props.getServiceError(returnData); - handleSaveState({ + props.onSaveState({ loading: false, }); return false; @@ -1259,6 +1258,172 @@ const useCommonModelEvent = props => { return true; } }; + /**自定义按钮事件 */ + const handleCostomChange = async (name, showConfig, other) => { + const { + app, + sModelsId, + [`${name}Data`]: tableData, + [`${name}SelectedRowKeys`]: tableSelectedRowKeys, + masterData, + slave1Child0Config, + slave2Child0Config, + slave2Child0InfoConfig, + slave6Child1Config, + slave6Child1InfoConfig, + } = props; + const confirmSetting = commonFunc.showLocalMessage(props, 'confirmSetting', '请配置按钮的存储过程'); + const confirmSettingParam = commonFunc.showLocalMessage(props, 'confirmSettingParam', '请先操作参数运算'); + const iIndex = + commonUtils.isNotEmptyObject(tableSelectedRowKeys) && + commonUtils.isNotEmptyArr(tableData) + ? tableData.findIndex(item => tableSelectedRowKeys.includes(item.sId)) + : -1; + let slaveRow = {}; + if (iIndex > -1) { + slaveRow = tableData[iIndex]; + } else if (commonUtils.isNotEmptyArr(tableData) && tableData.length > 0) { + slaveRow = tableData[0]; + } + if ( + commonUtils.isNotEmptyObject(showConfig) && + showConfig.sControlName && + showConfig.sControlName.includes("BtnCustom.dSplitworkQty") + ) { + if (masterData.bFirstCalc !== 1) { + message.error(confirmSettingParam); + return; + } + props.onSaveState({ pageLoading: true }); + /* 拆分工单单据 - 拆分工单 生成工单 */ + const sButtonParam = showConfig.sButtonParam; + if ( + commonUtils.isNotEmptyObject(sButtonParam) && + commonUtils.isJSON(sButtonParam) + ) { + const proObj = JSON.parse(sButtonParam); + const proName = proObj.sproName; + const sRowData = slaveRow; + const value = { + sProName: proName, + sProInParam: JSON.stringify({ params: sRowData }) + }; + if (other?.iFlag === 1) { + value.iFlag = 1; + } + const url = `${commonConfig.server_host + }procedureCall/doGenericProcedureCall?sModelsId=${sModelsId}`; + const returnData = (await commonServices.postValueService( + app.token, + value, + url + )).data; + if (returnData.code === 1) { + message.success(returnData.msg); + props.onSaveState({ pageLoading: false }); + const conditonValues = props.onGetSqlConditionValues(slave1Child0Config); + const addState1 = await props.handleGetDataSet({ + name: 'slave1Child0', configData: slave1Child0Config, condition: { sSqlCondition: { ...conditonValues, sParentId: masterData.sId } }, isWait: true, + }); + props.onSaveState({ + ...addState1 + }); + } else { + props.onSaveState({ pageLoading: false }); + props.getServiceError({ + ...returnData, + fn: () => handleCostomChange(name, showConfig, { iFlag: 1 }) + }); + } + } else { + message.error(confirmSetting); + } + } else if ( + commonUtils.isNotEmptyObject(showConfig) && + showConfig.sControlName && + (showConfig.sControlName.includes("BtnCustom.tEstimateCompletDate") || + showConfig.sControlName.includes("BtnCustom.tRecalculatedDate")) + ) { + /* 单生管评审单据 - 生管评审 - 交期推算 */ + const { + app, + sModelsId, + [`${name}Data`]: tableData, + slaveSelectedRowKeys: tableSelectedRowKeys + } = props; + const index = + commonUtils.isNotEmptyObject(tableSelectedRowKeys) && + commonUtils.isNotEmptyArr(tableData) + ? tableData.findIndex(item => tableSelectedRowKeys.includes(item.sId)) + : -1; + slaveRow = index > -1 ? tableData[index] : slaveRow; + const controlRow = handleGetSelectedData(props, 'slave0Child1'); /* 控制表当前选中行 */ + const sButtonParam = showConfig.sButtonParam; + if ( + commonUtils.isNotEmptyObject(sButtonParam) && + commonUtils.isJSON(sButtonParam) + ) { + const proObj = JSON.parse(sButtonParam); + const proName = proObj.sproName; + let sRowData = slaveRow; + //取第一条BOM的id + sRowData = { ...sRowData, sBomId: tableData[0].sBomId }; + const value = { + sProName: proName, + sProInParam: JSON.stringify({ params: sRowData, control: controlRow }) + }; + if (other?.iFlag === 1) { + value.iFlag = 1; + } + const url = `${commonConfig.server_host + }procedureCall/doGenericProcedureCall?sModelsId=${sModelsId}`; + const returnData = (await commonServices.postValueService( + app.token, + value, + url + )).data; + if (returnData.code === 1) { + message.success(returnData.msg); + if (showConfig.sControlName.includes("BtnCustom.tEstimateCompletDate")) { + const conditonValues1 = props.onGetSqlConditionValues(slave2Child0Config); + const addState1 = await props.handleGetDataSet({ + name: 'slave2Child0', configData: slave2Child0Config, condition: { sSqlCondition: { ...conditonValues1, sParentId: masterData.sId } }, isWait: true, + }); + const conditonValues2 = props.onGetSqlConditionValues(slave2Child0InfoConfig); + const addState2 = await props.handleGetDataSet({ + name: 'slave2Child0Info', configData: slave2Child0InfoConfig, condition: { sSqlCondition: { ...conditonValues2, sParentId: masterData.sId } }, isWait: true, + }); + tableData[index].handleType = commonUtils.isEmpty(tableData[index].handleType) ? "update" : tableData[index].handleType; + tableData[index].tEstimateCompletDate = returnData.dataset?.rows[0].dataSet?.proData[0].tEstimateCompletDate; + props.onSaveState({ + ...addState1, ...addState2, + }); + } else if (showConfig.sControlName.includes("BtnCustom.tRecalculatedDate")) { + const conditonValues1 = props.onGetSqlConditionValues(slave6Child1Config); + const addState1 = await props.handleGetDataSet({ + name: 'slave6Child1', configData: slave6Child1Config, condition: { sSqlCondition: { ...conditonValues1, sParentId: masterData.sId } }, isWait: true, + }); + const conditonValues2 = props.onGetSqlConditionValues(slave6Child1InfoConfig); + const addState2 = await props.handleGetDataSet({ + name: 'slave6Child1Info', configData: slave6Child1InfoConfig, condition: { sSqlCondition: { ...conditonValues2, sParentId: masterData.sId } }, isWait: true, + }); + tableData[index].handleType = commonUtils.isEmpty(tableData[index].handleType) ? "update" : tableData[index].handleType; + tableData[index].tRecalculatedDate = returnData.dataset?.rows[0].dataSet?.proData[0].tRecalculatedDate; + props.onSaveState({ + ...addState1, ...addState2, [`${name}Data`]: tableData + }); + } + } else { + props.getServiceError({ + ...returnData, + fn: () => handleCostomChange(name, showConfig, { iFlag: 1 }) + }); + } + } else { + message.error(confirmSetting); + } + } + }; return { ...props, onGetColumnData: handleGetColumnData, @@ -1268,9 +1433,21 @@ const useCommonModelEvent = props => { handleStartWork, onViewChoose: handleViewChoose, onBtnExamine: handleAudit, + onBtnCancelExamine: handleAudit, + onCostomChange: handleCostomChange }; }; - +/* 解析消息 */ +const 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; +} // 计算commonDiv高度 const useComputedCommonDivHeight = props => { let returnHeight = "calc(100% - 20px)"; diff --git a/src/mes/common/commonOperationBarComponent/MesToolbar.js b/src/mes/common/commonOperationBarComponent/MesToolbar.js index bbca07e..b0f6d7d 100644 --- a/src/mes/common/commonOperationBarComponent/MesToolbar.js +++ b/src/mes/common/commonOperationBarComponent/MesToolbar.js @@ -2,11 +2,14 @@ import { message } from "antd"; import * as commonUtils from "@/utils/utils"; import * as commonFunc from "@/components/Common/commonFunc"; +import commonConfig from "@/utils/config"; +import * as commonServices from "@/services/services"; +let xlyProcessTimer = null; const ToolbarFun = async (props) => { - const { btnConfig, bMesBill } = props; + const { btnConfig, bMesBill, name } = props; const currentMesPane = commonUtils.getAppData("currentMesPane"); const { sModelType = '' } = currentMesPane; - const { sControlName } = btnConfig; + const { sControlName, sButtonParam } = btnConfig; const btnName = sControlName.replace('BtnLeft.', '').replace('BtnRight.', '').toLowerCase(); if ((btnName.includes('btnscanface')) && !bMesBill) { handleScanFace(props); @@ -17,8 +20,9 @@ const ToolbarFun = async (props) => { // const { sControlName } = btnConfig; // const btnName = sControlName.replace('BtnLeft.', '').replace('BtnRight.', '').toLowerCase(); - console.log(btnName, 'btnName'); - + console.log(btnName, props, 'btnName'); + let flag = 0; + let interfaceArr = btnConfig.interface; if (btnName === 'btnadd') { handleAdd(props); } else if (btnName === 'btnsave') { @@ -32,8 +36,8 @@ const ToolbarFun = async (props) => { } else if (btnName === 'btndel') { props.onDel(props) } else if (btnName.includes('btnexamine')) { - let flag = 0; - let interfaceArr = btnConfig.interface; + // 审核 + if (commonUtils.isNotEmptyArr(interfaceArr)) { const beforeInterfaceArr = interfaceArr.filter(item => item.sInterfaceCallMethod === "1"); const afterInterfaceArr = interfaceArr.filter(item => item.sInterfaceCallMethod === "2"); @@ -42,7 +46,7 @@ const ToolbarFun = async (props) => { const asyncFunc = async () => { for (let i = 0; i < beforeInterfaceArr.length; i++) { - const data = await handleInterfaceCall(beforeInterfaceArr[i]); + const data = await handleInterfaceCall(props, beforeInterfaceArr[i]); if (!data) { flag += 1; return; @@ -53,7 +57,7 @@ const ToolbarFun = async (props) => { } let result; if (flag == 0) { - result = await props.onBtnExamine(); + result = await props.onBtnExamine(1); } else { props.onSaveState({ loading: false, @@ -62,12 +66,12 @@ const ToolbarFun = async (props) => { if (commonUtils.isNotEmptyArr(afterInterfaceArr)) { /* 之后调用 */ - // const result = await this.props.onBtnExamine(); + // const result = await props.onBtnExamine(); if (result) { /* 只有审核成功 才能调用接口 -5代表审核失败 */ const asyncFunc = async () => { for (let i = 0; i < afterInterfaceArr.length; i++) { - await handleInterfaceCall(afterInterfaceArr[i], true); + await handleInterfaceCall(props, afterInterfaceArr[i], true); } }; await asyncFunc(); @@ -76,14 +80,696 @@ const ToolbarFun = async (props) => { } } else { // console.log(props, 'masterData'); - props.onBtnExamine(); + props.onBtnExamine(1); + } + } else if (btnName.includes('btncancelexamine')) { + if (commonUtils.isNotEmptyArr(interfaceArr)) { + const beforeInterfaceArr = interfaceArr.filter(item => item.sInterfaceCallMethod === "1"); + const afterInterfaceArr = interfaceArr.filter(item => item.sInterfaceCallMethod === "2"); + if (commonUtils.isNotEmptyArr(beforeInterfaceArr)) { + /* 之前调用 */ + let flag = 0; + const asyncFunc = async () => { + for (let i = 0; i < beforeInterfaceArr.length; i++) { + const data = await handleInterfaceCall(props, beforeInterfaceArr[i]); + if (!data) { + flag += 1; + return; + } + } + }; + await asyncFunc(); + if (flag == 0) { + props.onBtnCancelExamine(0); + } else { + props.onSaveState({ + loading: false, + }); + } + } + if (commonUtils.isNotEmptyArr(afterInterfaceArr)) { + /* 之后调用 */ + const result = await props.onBtnCancelExamine(0); + if (result) { + /* 只有审核成功 才能调用接口 -5代表审核失败 */ + const asyncFunc = async () => { + for (let i = 0; i < afterInterfaceArr.length; i++) { + await handleInterfaceCall(props, afterInterfaceArr[i], true); + } + }; + await asyncFunc(); + } + } + } else { + props.onBtnCancelExamine(0); + } + } else if (['btnevent', 'btnsubmit', 'btnsubmitcancel'].includes(btnName) || sButtonParam) { + const { + slaveSelectedRowKeys, + slaveData, + formRoute, + slave0Child1Data: controlData, + materialsData: materialsData, + slave0Data: processData, + } = props; + let { slaveSelectedData } = props; + if (commonUtils.isEmptyArr(slaveSelectedData) && commonUtils.isNotEmptyArr(slaveData) && slaveSelectedRowKeys) { + slaveSelectedData = slaveData.filter(item => slaveSelectedRowKeys.includes(item.sId) || slaveSelectedRowKeys.includes(item.sSlaveId)); + } + props.onSaveState({ + loading: true, + }); + // const btnConfig = props.masterConfig.gdsconfigformslave.filter(item => item.sControlName === key)[0]; // sButtonEnabled sButtonParam + if (commonUtils.isNotEmptyObject(btnConfig) && commonUtils.isNotEmptyStr(btnConfig.sButtonParam)) { + /* 根据接口返回是之前调用还是之后调用 */ + if (commonUtils.isNotEmptyArr(interfaceArr)) { + const beforeInterfaceArr = interfaceArr.filter(item => item.sInterfaceCallMethod === "1"); + const afterInterfaceArr = interfaceArr.filter(item => item.sInterfaceCallMethod === "2"); + const bProgressBar = btnConfig.sRelation === "progressBar"; + + let bContinue = true; + if (commonUtils.isNotEmptyArr(beforeInterfaceArr)) { + /* 之前调用 */ + let flag = 0; + const asyncFunc = async () => { + for (let i = 0; i < beforeInterfaceArr.length; i++) { + if (bProgressBar) { + let xlyProcessPercent = 0; + clearInterval(xlyProcessTimer); + message.loading({ + content: , + key: "xlyProcess", + duration: 0, + className: styles.xlyProcess, + }); + for (let j = 0; j < slaveSelectedRowKeys.length; j++) { + const slaveSelectedRowOneKey = slaveSelectedRowKeys[j]; + const data = await handleInterfaceCall(beforeInterfaceArr[i], false, key, slaveSelectedRowOneKey, slaveSelectedRowOneKey); + if (!data) { + message.destroy("xlyProcess"); + flag += 1; + break; + } + xlyProcessPercent = ((((i + 1) * (j + 1)) / (beforeInterfaceArr.length * slaveSelectedRowKeys.length)) * 100).toFixed(2); + message.loading({ + content: , + key: "xlyProcess", + duration: xlyProcessPercent >= 100 ? 3 : 0, + className: styles.xlyProcess, + }); + } + } else { + const data = await handleInterfaceCall(beforeInterfaceArr[i], false, key, slaveSelectedRowKeys); + if (!data) { + flag += 1; + return; + } + } + } + }; + await asyncFunc(); + if (flag == 0) { + await handleBtnEent(props, btnConfig); + } else { + bContinue = false; + } + } + if (commonUtils.isNotEmptyArr(afterInterfaceArr) && bContinue) { + /* 之后调用 */ + const result = await handleBtnEent(props, btnConfig); + if (result === 1) { + /* 只有按钮成功 才能调用接口 -5代表审核失败 */ + const asyncFunc = async () => { + for (let i = 0; i < afterInterfaceArr.length; i++) { + if (bProgressBar) { + xlyProcessPercent = 0; + clearInterval(xlyProcessTimer); + message.loading({ + content: , + key: "xlyProcess", + duration: 0, + className: styles.xlyProcess, + }); + for (let j = 0; j < slaveSelectedRowKeys.length; j++) { + const slaveSelectedRowOneKey = slaveSelectedRowKeys[j]; + const data = await handleInterfaceCall(afterInterfaceArr[i], false, key, slaveSelectedRowOneKey, slaveSelectedRowOneKey); + if (!data) { + message.destroy("xlyProcess"); + break; + } + xlyProcessPercent = ((((i + 1) * (j + 1)) / (afterInterfaceArr.length * slaveSelectedRowKeys.length)) * 100).toFixed(2); + message.loading({ + content: , + key: "xlyProcess", + duration: xlyProcessPercent >= 100 ? 3 : 0, + className: styles.xlyProcess, + }); + } + } else { + await handleInterfaceCall(afterInterfaceArr[i], false, key, slaveSelectedRowKeys); + } + } + }; + await asyncFunc(); + } + } + + // for (const child of slaveSelectedDataNew) { + // + // } + } else if (btnConfig.sButtonParam?.includes("Sp_BtnEven_CalcJsHs") && btnConfig.showName?.includes("工资核算")) { + // 工资核算特殊处理 + const { slave3Data = [], slave3SelectedRowKeys = [] } = props; + const slave3SelectedData = slave3Data.filter(item => slave3SelectedRowKeys.includes(item.sId)); + if (slave3SelectedData.length) { + for (let i = 0; i < slave3SelectedData.length; i++) { + const slave3DataOne = slave3SelectedData[i]; + const { sCalcProName: sCalcProDetail, sId, sCalcDepart } = slave3DataOne; + const inParams = [ + { + key: "slave3", + value: [{ sId, sCalcProDetail }], + }, + ]; + const percent = ((i / slave3SelectedData.length) * 100).toFixed(2); + message.loading({ content: , key: "xlyProcess", duration: 0, className: styles.xlyProcess }); + await handleBtnEent(props, btnConfig, undefined, undefined, inParams); + // message.success(`【${sCalcDepart}】核算完成。`); + } + message.loading({ content: , key: "xlyProcess", duration: 0, className: styles.xlyProcess }); + message.success(`全部方案计算成功。`); + setTimeout(() => { + message.loading({ content: , key: "xlyProcess", duration: 0, className: styles.xlyProcess }); + }, 1000); + setTimeout(() => { + message.destroy("xlyProcess"); + }, 2000); + } else { + message.warning("请先选择计算方案!"); + } + } else { + handleBtnEent(props, btnConfig); + } + props.onSaveState({ + loading: false, + }); + } else { + message.error(confirmSetting); + props.onSaveState({ + loading: false, + }); } } return true; } +// 进行存储过程按钮存储过程参数解析拼接 根据存储过程按钮参数配置进行解析,配置是json格式 {"sproName":"cal_sss","inMap":"master.sSlaveId,slave.sId"} +const handleBtnEent = async (props, btnConfig, name, sValue, nextInParams) => { + let xlyProcessPercent = 0; + clearInterval(xlyProcessTimer); + if (props.app?.currentPane?.title === "工单损耗及无形损跟踪" && btnConfig?.sControlName === "BtnEventAllWork") { + message.loading({ content: , key: "xlyProcess", duration: 0, className: styles.xlyProcess }); + xlyProcessTimer = setInterval(() => { + if (xlyProcessPercent >= 50) { + xlyProcessPercent += 0.2; + } else if (xlyProcessPercent >= 90) { + return; + } else { + xlyProcessPercent += 0.5; + } + message.loading({ content: , key: "xlyProcess", duration: 0, className: styles.xlyProcess }); + }, 500); + } + props.onSaveState({ + pageLoading: true, + }); + const menuData = [] + // const { menuData } = state; + let iResult = 0; + let bFirst = false; + if ( + commonUtils.isNotEmptyObject(btnConfig) && + (btnConfig.sControlName === "BtnEventReceiveReturn" || btnConfig.sControlName === "BtnEventReceive") + ) { + // 刀模归还, 刀模领用判断是否选择数据 + const { slaveSelectedRowKeys, app } = props; + if (slaveSelectedRowKeys && commonUtils.isEmptyArr(slaveSelectedRowKeys)) { + message.warn(commonFunc.showMessage(app.commonConst, "pleaseChooseData")); // 请选择记录 + props.onSaveState({ + pageLoading: false, + }); + return; + } + } + + if (commonUtils.isNotEmptyObject(btnConfig) && btnConfig.sControlName.includes("BtnEventAutoOrder")) { + // 刀模归还, 刀模领用判断是否选择数据 + bFirst = true; /* 沒有选中行时 默认第一条 */ + } + const { masterData, sCurrMemoProps, masterConditionData } = props; + if (commonUtils.isNotEmptyObject(name) && name.indexOf("BtnRepair") > -1 && commonUtils.isNotEmptyObject(sCurrMemoProps)) { + sCurrMemoProps.bVisibleMemo = false; + props.onSaveState({ sCurrMemoProps }); + } + const sButtonParam = btnConfig.sButtonParam; + console.log("11", btnConfig); + const btn = commonUtils.convertStrToObj(sButtonParam); + const sProName = btn.sproName; + const inParams = []; + const inMap = btn.inMap; + const inlist = inMap ? inMap.split(",") : []; + const masterArr = []; + const masterConditionArr = []; + const slaveArr = []; + const slaveInfoArr = []; + const controlArr = []; + const materialsArr = []; + const processArr = []; + const sTableName = btn.sTableName; + if (!sTableName && !inMap) { + // 都为undefined时直接退出 + props.onSaveState({ + pageLoading: false, + }); + return; + } + + if (inlist.length > 0) { + inlist.forEach(item => { + const itemArr = item.split("."); + if (itemArr.length > 0) { + const sname = itemArr[0]; + const stype = itemArr[1]; + const stypeNew = itemArr.length > 2 ? itemArr[2] : stype; + if (commonUtils.isNotEmptyStr(sname) && sname === "master") { + masterArr.push([stype, stypeNew]); + } + if (commonUtils.isNotEmptyStr(sname) && sname === "masterCondition") { + /* 参数数据集 */ + masterConditionArr.push([stype, stypeNew]); + } + if (commonUtils.isNotEmptyStr(sname) && sname === "slave") { + slaveArr.push([stype, stypeNew]); + } + if (commonUtils.isNotEmptyStr(sname) && sname === "slaveInfo") { + slaveInfoArr.push([stype, stypeNew]); + } + if (commonUtils.isNotEmptyStr(sname) && sname === "control") { + controlArr.push([stype, stypeNew]); + } + if (commonUtils.isNotEmptyStr(sname) && sname === "materials") { + materialsArr.push([stype, stypeNew]); + } + if (commonUtils.isNotEmptyStr(sname) && sname === "process") { + processArr.push([stype, stypeNew]); + } + if ( + commonUtils.isNotEmptyStr(sname) && + !["master", "masterCondition", "slave", "slaveInfo", "control", "materials", "process"].includes(sname) + ) { + const addState = handleProParams(sname, [[stype, stypeNew]]); + if (commonUtils.isNotEmptyObject(addState)) { + inParams.push({ ...addState }); + } + } + } + }); + + if (commonUtils.isNotEmptyArr(masterArr) && commonUtils.isNotEmptyObject(masterData)) { + const addState = {}; + addState.key = "master"; + const val = []; + const currVal = {}; + masterArr.forEach(([stype, stypeNew]) => { + currVal[`${stypeNew}`] = masterData[`${stype}`]; + }); + val.push(currVal); + addState.value = val; + inParams.push({ ...addState }); + } + if (commonUtils.isNotEmptyArr(masterConditionArr) && commonUtils.isNotEmptyObject(masterConditionData)) { + const addState = {}; + addState.key = "masterCondition"; + const val = []; + const currVal = {}; + masterConditionArr.forEach(filed => { + currVal[`${filed}`] = masterConditionData[`${filed}`]; + }); + val.push(currVal); + addState.value = val; + inParams.push({ ...addState }); + } + if (commonUtils.isNotEmptyArr(slaveArr)) { + const addState = handleProParams("slave", slaveArr, bFirst); + if (commonUtils.isNotEmptyObject(addState)) { + inParams.push({ ...addState }); + } + } + if (commonUtils.isNotEmptyArr(slaveInfoArr)) { + const addState = handleProParams("slaveInfo", slaveInfoArr); + if (commonUtils.isNotEmptyObject(addState)) { + inParams.push({ ...addState }); + } + } + if (commonUtils.isNotEmptyArr(controlArr)) { + const addState = handleProParams("control", controlArr); + if (commonUtils.isNotEmptyObject(addState)) { + inParams.push({ ...addState }); + } + } + if (commonUtils.isNotEmptyArr(materialsArr)) { + const addState = handleProParams("materials", materialsArr); + if (commonUtils.isNotEmptyObject(addState)) { + inParams.push({ ...addState }); + } + } + if (commonUtils.isNotEmptyArr(processArr)) { + const addState = handleProParams("process", processArr); + if (commonUtils.isNotEmptyObject(addState)) { + inParams.push({ ...addState }); + } + } + } + + if (commonUtils.isNotEmptyStr(sTableName) && commonUtils.isNotEmptyArr(inParams)) { + inParams.forEach(item => { + if (commonUtils.isNotEmptyArr(item.value)) { + item.value.forEach(item1 => { + item1.sTableName = sTableName; + }); + } + }); + } + + /* 列表增加查询条件的传参 */ + if ( + location.pathname?.includes("indexPage/commonList") && + (btnConfig?.sControlName === "BtnEventOneWork" || btnConfig?.sControlName === "BtnEventAllWork") + ) { + const { slaveFilterCondition = [] } = props; + if (commonUtils.isNotEmptyArr(slaveFilterCondition) && commonUtils.isNotEmptyArr(inParams)) { + inParams.forEach(item => { + item.bFilter = slaveFilterCondition; + }); + } + console.log("inParams", inParams); + } + + const iIndex = commonUtils.isNotEmptyObject(btnConfig) ? menuData.findIndex(item => item.sControlName === btnConfig.sControlName) : -1; + let interfaceArr = []; + if (iIndex > -1) { + interfaceArr = menuData[iIndex].interface; + } + if (commonUtils.isNotEmptyArr(interfaceArr) && commonUtils.isNotEmptyObject(btnConfig) && btnConfig.sControlName.includes("BtnRepair")) { + if (true) { + const { slaveSelectedRowKeys, app, slaveData } = props; + if (inMap && inMap.includes("slave.") && slaveSelectedRowKeys && commonUtils.isEmptyArr(slaveSelectedRowKeys)) { + message.warn(commonFunc.showMessage(app.commonConst, "pleaseChooseData")); // 请选择记录 + props.onSaveState({ + pageLoading: false, + }); + return; + } + let slaveRow = {}; + const iSlaveDataIndex = slaveData.findIndex(item => slaveSelectedRowKeys.includes(item.sSlaveId)); + if (iSlaveDataIndex > -1) { + slaveRow = slaveData[iSlaveDataIndex]; + } + let ids = ""; + if (location.pathname.includes("commonList")) { + let { slaveSelectedData } = props; + if (commonUtils.isEmptyArr(slaveSelectedData) && commonUtils.isNotEmptyArr(slaveData)) { + slaveSelectedData = slaveData.filter(item => slaveSelectedRowKeys.includes(item.sId) || slaveSelectedRowKeys.includes(item.sSlaveId)); + } + const slaveSelectedDataNew = deteleObject(slaveSelectedData); // 删除sid重复的数据 + if (commonUtils.isNotEmptyArr(slaveSelectedDataNew)) { + slaveSelectedDataNew.forEach(item => { + if (commonUtils.isNotEmptyObject(item)) { + ids += `${item.sId},`; + } + }); + ids = commonUtils.isNotEmptyObject(ids) ? ids.substr(0, ids.length - 1) : ""; + } + } else { + ids = slaveRow.sId; + } + const beforeInterfaceArr = interfaceArr.filter(item => item.sInterfaceCallMethod === "1"); + const afterInterfaceArr = commonUtils.isNotEmptyArr(interfaceArr) ? interfaceArr.filter(item => item.sInterfaceCallMethod === "2") : []; + if (commonUtils.isNotEmptyArr(beforeInterfaceArr)) { + /* 之前调用 */ + let flag = 0; + const asyncFunc = async () => { + for (let i = 0; i < beforeInterfaceArr.length; i++) { + const data = await handleInterfaceCall(beforeInterfaceArr[i], true, btnConfig.sControlName, ids); + if (!data) { + flag += 1; + props.onSaveState({ + pageLoading: false, + }); + return; + } + } + }; + await asyncFunc(); + if (flag == 0) { + await handleProcedureCall(props, btnConfig, sProName, JSON.stringify({ params: inParams, changeValue: sValue, sButtonParam: btn })); + } + } + if (commonUtils.isNotEmptyArr(afterInterfaceArr)) { + /* 之后调用 */ + const result = await handleProcedureCall( + props, + btnConfig, + sProName, + JSON.stringify({ params: inParams, changeValue: sValue, sButtonParam: btn }) + ); + console.log("result", result); + if (result > 0) { + /* 只有成功 才能调用接口 -5代表失败 */ + const asyncFunc = async () => { + for (let i = 0; i < afterInterfaceArr.length; i++) { + await handleInterfaceCall(afterInterfaceArr[i], true, btnConfig.sControlName, ids); + } + }; + await asyncFunc(); + } + } + } + } else { + const inParamsNew = nextInParams || inParams; + iResult = await handleProcedureCall(props, btnConfig, sProName, JSON.stringify({ params: inParamsNew, changeValue: sValue, sButtonParam: btn })); + } + + if (props.app?.currentPane?.title === "工单损耗及无形损跟踪" && btnConfig?.sControlName === "BtnEventAllWork") { + clearInterval(xlyProcessTimer); + xlyProcessPercent = 91; + message.loading({ content: , key: "xlyProcess", duration: 0, className: styles.xlyProcess }); + xlyProcessTimer = setInterval(() => { + xlyProcessPercent += 1; + message.loading({ content: , key: "xlyProcess", duration: 0, className: styles.xlyProcess }); + if (xlyProcessPercent === 100) { + clearInterval(xlyProcessTimer); + setTimeout(() => { + message.destroy(); + }, 1000); + } + }, 100); + } + + props.onSaveState({ + pageLoading: false, + }); + return iResult; +}; + +// 存储过程按钮调用存储过程 +const handleProcedureCall = async (props, btnConfig, proName, proInParam, other) => { + const { app, sModelsId } = props; + let iResult = 0; + const sBtnName = btnConfig.sControlName; + const value = { sProName: proName, sProInParam: proInParam, sBtnName }; + if (other?.iFlag === 1) { + value.iFlag = 1; + } + const url = `${commonConfig.server_host}procedureCall/doGenericProcedureCall?sModelsId=${sModelsId}`; + // const url = ''; + const returnData = (await commonServices.postValueService(app.token, value, url)).data; + if (proName === "Sp_BtnEven_CalcJsHs") { + if (returnData.code === 1) { + message.success(returnData.msg); + } else { + message.warning(returnData.msg); + } + const proInParamJson = commonUtils.convertStrToObj(proInParam); + const sId = proInParamJson.params?.[0]?.value?.[0]?.sId; + const { slave3Data = [] } = props; + const iIndex = slave3Data.findIndex(item => item.sId === sId); + if (iIndex !== -1) { + slave3Data[iIndex].sCalcProDetail = returnData.msg; + props.onSaveState({ slave3Data }); + } + props.onExecInstructSet({ + btnConfig: { + showName: "刷新", + sInstruct: JSON.stringify([ + { + opr: "refresh", + }, + ]) + } + }); + } else if (returnData.code === 1) { + message.success(returnData.msg); + // props.onButtonClick("BtnRefresh"); + } else if (returnData.code === -8) { + Modal.info({ + title: "温馨提示:", + content:
{handleGetMsg(returnData.msg)}
, + okText: "确认", + onOk() { }, + }); + } else { + props.getServiceError({ ...returnData, fn: () => handleProcedureCall(props, btnConfig, proName, proInParam, { iFlag: 1 }) }); + } + iResult = returnData.code; + props.onSaveState({ loading: false }); + // 点击返回重排的时候刷新树 + if (btnConfig.sControlName === "BtnEventReturn") { + if (props.refreshTreeData) { + props.refreshTreeData(); + } + } + return iResult; +}; +/* 调用后台配置的接口 */ +const handleInterfaceCall = async (props, obj, showTip, key, ids, slaveSelectedRowKeysOld) => { + let bResult = false; + const { app, sModelsId, masterData, slaveData, masterConfig, slaveFilterCondition } = props; + const slaveSelectedRowKeys = slaveSelectedRowKeysOld || props.slaveSelectedRowKeys; + const sInterfaceName = obj.sInterfaceName; + /* 如果key是BtnSendList 传从表的主键集合 */ + let idArr = ""; + /* 如果有对应字段 则取对应字段 ,否则 取默认值 */ + const btnConfig = commonUtils.isNotEmptyArr(masterConfig.gdsconfigformslave.filter(item => item.sControlName === key)) + ? masterConfig.gdsconfigformslave.filter(item => item.sControlName === key)[0] + : {}; + + let sActiveKey = ""; + if (commonUtils.isNotEmptyObject(btnConfig)) { + sActiveKey = btnConfig.sActiveKey; + } + if (sActiveKey) { + if (sActiveKey.includes("master.sId")) { + idArr = masterData.sId; + } + } else if (key && (key.includes("BtnSendList") || key.includes("BtnBatchExamine"))) { + if (commonUtils.isNotEmptyArr(slaveSelectedRowKeys)) { + slaveSelectedRowKeys.forEach(item => { + if (commonUtils.isNotEmptyObject(item)) { + idArr += `${item},`; + } + }); + idArr = commonUtils.isNotEmptyObject(idArr) ? idArr.substr(0, idArr.length - 1) : ""; + } + } else if (location.pathname.includes("commonList")) { + const { slaveSelectedRowKeys, slaveData } = props; + let { slaveSelectedData } = props; + if (commonUtils.isEmptyArr(slaveSelectedData) && commonUtils.isNotEmptyArr(slaveData)) { + slaveSelectedData = slaveData.filter(item => slaveSelectedRowKeys.includes(item.sId) || slaveSelectedRowKeys.includes(item.sSlaveId)); + } + const slaveSelectedDataNew = deteleObject(slaveSelectedData); // 删除sid重复的数据 + + if (commonUtils.isNotEmptyArr(slaveSelectedDataNew)) { + slaveSelectedDataNew.forEach(item => { + if (commonUtils.isNotEmptyObject(item)) { + idArr += `${item.sId},`; + } + }); + idArr = commonUtils.isNotEmptyObject(idArr) ? idArr.substr(0, idArr.length - 1) : ""; + } + if (commonUtils.isNotEmptyObject(ids)) { + /* 如果是勾选多行 则sId为循环的每一条 */ + idArr = ids; + } + } else { + idArr = masterData.sId; + } + const value = { + sId: commonUtils.isNotEmptyObject(idArr) ? idArr : commonUtils.isNotEmptyObject(ids) ? ids : masterData.sId, + sSlaveId: slaveSelectedRowKeys?.toString(), + masterData, + userInfo: app.userinfo, + }; + if (location.pathname.includes("commonList") && commonUtils.isNotEmptyArr(slaveFilterCondition)) { + value.bFilter = JSON.stringify(slaveFilterCondition); + } + const url = `${commonConfig.interface_host}interfaceDefine/callthirdparty/${sInterfaceName}?sModelsId=${sModelsId}`; + const returnData = (await commonServices.postValueService(app.token, value, url, app)).data; + if (showTip) { + if (!returnData || returnData.code < 0) { + if (commonUtils.isNotEmptyObject(returnData) && returnData.code === -8) { + Modal.info({ + title: "温馨提示:", + content:
{handleGetMsg(returnData.msg)}
, + okText: "确认", + onOk() { }, + }); + } else { + Modal.info({ + title: "温馨提示:", + content:
{handleGetMsg(returnData.msg)}
, + okText: "确认", + onOk() { }, + }); + return; + } + // message.error('同步INFOR失败!'); + return; + } else { + // message.success('同步INFOR成功!'); + } + } + if (!returnData) { + message.error("接口调用失败!"); + return false; + } + if (returnData.code === 1) { + bResult = true; + // message.success(returnData.msg); + } else if (returnData.code === 2) { + // Modal.info({ + // title: '温馨提示:', + // content: ( + //
+ // {handleGetMsg(returnData.msg)} + //
+ // ), + // okText: '确认', + // onOk() {}, + // }); + bResult = true; + } else if (returnData.code === -8) { + Modal.info({ + title: "温馨提示:", + content:
{handleGetMsg(returnData.msg)}
, + okText: "确认", + onOk() { }, + }); + bResult = false; + } else { + bResult = false; + props.getServiceError(returnData); + } + /* 若配置的是按钮后调用第三方, 则调用成功后 需要重新回刷一次数据 */ + if (commonUtils.isNotEmptyObject(obj) && obj.sInterfaceCallMethod === "2") { + if (bResult) { + props.onButtonClick("BtnRefresh"); + } + } + return bResult; +}; // 新增 const handleAdd = (props) => { const { slaveConfig } = props; @@ -171,6 +857,9 @@ const handleScanFace = (props) => { opr: "faceauth", newDataset: "face" }, + { + opr: "refresh", + }, ]) }, inscallback: (result) => { diff --git a/src/mes/common/commonOperationBarComponent/index.js b/src/mes/common/commonOperationBarComponent/index.js index fa5d7a3..8228083 100644 --- a/src/mes/common/commonOperationBarComponent/index.js +++ b/src/mes/common/commonOperationBarComponent/index.js @@ -365,8 +365,8 @@ const useCommonOperationBarComponentEvent = props => { } else if (location.pathname.includes("commonList")) { const { slaveSelectedRowKeys, slaveData } = props; let { slaveSelectedData } = props; - if (commonUtils.isEmptyArr(slaveSelectedData) && commonUtils.isNotEmptyArr(slaveData)) { - slaveSelectedData = slaveData.filter(item => slaveSelectedRowKeys.includes(item.sId) || slaveSelectedRowKeys.includes(item.sSlaveId)); + if (commonUtils.isEmptyArr(slaveSelectedData) && commonUtils.isNotEmptyArr(slaveData) && slaveSelectedRowKeys) { + slaveSelectedData = slaveData.filter(item => slaveSelectedRowKeys?.includes(item.sId) || slaveSelectedRowKeys.includes(item.sSlaveId)); } const slaveSelectedDataNew = deteleObject(slaveSelectedData); // 删除sid重复的数据 @@ -621,11 +621,10 @@ const useCommonOperationBarComponentEvent = props => { }; const { sDefault, sControlName } = config; - const delayedOvertime = commonFunc.showLocalMessage(props, 'delayedOvertime', '延迟加班'); const cancelDelayedOvertime = commonFunc.showLocalMessage(props, 'cancelDelayedOvertime', '取消延迟加班'); - - + const { masterData = {} } = props + let { bCheck , bSubmit} = masterData // 根据sDefault配置控制按钮是否可以操作 if (sDefault && sDefault.includes("${")) { // 当前页面全部数据 @@ -740,13 +739,22 @@ const useCommonOperationBarComponentEvent = props => { } else if (props.bMesBill) { const btnName = sControlName.replace('BtnLeft.', '').replace('BtnRight.', '').toLowerCase(); if (props.enabled) { - if (["btnupd"].includes(btnName)) { + if (["btnupd", 'btnevent', 'btnsubmit', 'btnsubmitcancel'].includes(btnName)) { defaultProps.disabled = true; } } else { if (["btnsave", "btnscanface"].includes(btnName)) { defaultProps.disabled = true; } + if (!bSubmit) { + if (["btnsubmitcancel"].includes(btnName)) { + defaultProps.disabled = true; + } + } else { + if (['btnevent', 'btnsubmit'].includes(btnName)) { + defaultProps.disabled = true; + } + } } } @@ -814,6 +822,8 @@ const useCommonOperationBarComponentEvent = props => { style.color = "#000"; defaultProps.style = style; } + console.log(defaultProps, 'defaultProps'); + return defaultProps; }; diff --git a/src/mes/costomPageFun/index.js b/src/mes/costomPageFun/index.js index 2cad85f..39722c9 100644 --- a/src/mes/costomPageFun/index.js +++ b/src/mes/costomPageFun/index.js @@ -7,6 +7,7 @@ const costomPageFun = ({ props, tableName, sFieldName, actionName }) => { localStorage.xlybusinesscurrentMesPane ); + let result = false; switch ( `${sModelsId}-${tableName}${ diff --git a/src/utils/config.js b/src/utils/config.js index d0dfeb8..7f1fffa 100644 --- a/src/utils/config.js +++ b/src/utils/config.js @@ -4,10 +4,10 @@ const bHttps = location.protocol === 'https:'; export const webSite = { // ipAddress: '//t0.xlyprint.com:8000/xlyEntry/', /* 服务器地址 */ // faceAddress: isDev ? '//192.168.11.22:8080/xlyFace' : '//' + location.host + '/xlyFace', - fileAddress: isDev ? '//km5cjx.gnway.cc:43920/xlyReport/' : '//' + location.host + '/xlyReport/', // 接口地址 - faceAddress: isDev ? '//km5cjx.gnway.cc:43920/xlyFace' : '//' + location.host + '/xlyFace', - ipAddress: localStorage.ipAddress ? localStorage.ipAddress : isDev ? '//km5cjx.gnway.cc:43920/xlyEntry/' : '//' + location.host + '/xlyEntry/', - interfaceAddress: isDev ? '//km5cjx.gnway.cc:43920/xlyApi/' : '//' + location.host + '/xlyApi/', // 接口地址 + fileAddress: isDev ? '//km5cjx.gnway.cc:47400/xlyReport/' : '//' + location.host + '/xlyReport/', // 接口地址 + faceAddress: isDev ? '//km5cjx.gnway.cc:47400/xlyFace' : '//' + location.host + '/xlyFace', + ipAddress: localStorage.ipAddress ? localStorage.ipAddress : isDev ? '//km5cjx.gnway.cc:47400/xlyEntry/' : '//' + location.host + '/xlyEntry/', + interfaceAddress: isDev ? '//km5cjx.gnway.cc:47400/xlyApi/' : '//' + location.host + '/xlyApi/', // 接口地址 // ipAddress: isDev ? '//ebc.jinjia.com:8091/xlyEntry/' : '//' + location.host + '/xlyEntry/', // interfaceAddress: isDev ? '//ebc.jinjia.com:8091/xlyApi/' : '//' + location.host + '/xlyApi/', // 接口地址 // ipAddress: isDev ? '//192.168.11.26:8080/xlyEntry/' : '//' + location.host + '/xlyEntry/', -- libgit2 0.22.2