Commit fa48d7ed519b6530178af505b88dcc4c5e251172
1 parent
c6bcf6c4
报价后保存
Showing
2 changed files
with
472 additions
and
41 deletions
src/components/QuickQuote/index.jsx
| @@ -903,7 +903,6 @@ const QuickQuoteEvent = props => { | @@ -903,7 +903,6 @@ const QuickQuoteEvent = props => { | ||
| 903 | }; | 903 | }; |
| 904 | // 入口 | 904 | // 入口 |
| 905 | const QuickQuote = baseProps => { | 905 | const QuickQuote = baseProps => { |
| 906 | - console.log("🚀 ~ baseProps:", baseProps); | ||
| 907 | const props = QuickQuoteEvent(baseProps); | 906 | const props = QuickQuoteEvent(baseProps); |
| 908 | const [treeClassName, setTreeClassName] = useState(""); | 907 | const [treeClassName, setTreeClassName] = useState(""); |
| 909 | 908 | ||
| @@ -1644,7 +1643,6 @@ const BoxComponent = props => { | @@ -1644,7 +1643,6 @@ const BoxComponent = props => { | ||
| 1644 | }); | 1643 | }); |
| 1645 | }); | 1644 | }); |
| 1646 | } | 1645 | } |
| 1647 | - console.log(slaveRowData, "slaveRowData"); | ||
| 1648 | 1646 | ||
| 1649 | const svgProps = { | 1647 | const svgProps = { |
| 1650 | ...props, | 1648 | ...props, |
| @@ -2253,7 +2251,6 @@ const BoxModelSelectedModal = props => { | @@ -2253,7 +2251,6 @@ const BoxModelSelectedModal = props => { | ||
| 2253 | fixedHeight: "calc(100vh - 365px)", | 2251 | fixedHeight: "calc(100vh - 365px)", |
| 2254 | noVlistTable: true, | 2252 | noVlistTable: true, |
| 2255 | onCostomColums: columns => { | 2253 | onCostomColums: columns => { |
| 2256 | - console.log("🚀 ~ columns:", columns); | ||
| 2257 | columns | 2254 | columns |
| 2258 | .filter(item => item.dataIndex?.includes("Path")) | 2255 | .filter(item => item.dataIndex?.includes("Path")) |
| 2259 | .forEach(column => { | 2256 | .forEach(column => { |
src/mobile/quotation/detailNew.jsx
| @@ -13,6 +13,8 @@ import Typesetting from "@/components/Common/Typesetting/typesetting"; | @@ -13,6 +13,8 @@ import Typesetting from "@/components/Common/Typesetting/typesetting"; | ||
| 13 | import DynamicSVG from "@/components/Common/BoxDesignCompontent/svg"; | 13 | import DynamicSVG from "@/components/Common/BoxDesignCompontent/svg"; |
| 14 | import ShowImgM from "@/components/Common/BoxShowImgMaterial/indexNew"; | 14 | import ShowImgM from "@/components/Common/BoxShowImgMaterial/indexNew"; |
| 15 | import CommonBase from "@/components/Common/CommonBase"; | 15 | import CommonBase from "@/components/Common/CommonBase"; |
| 16 | +import { cloneDeep } from "lodash"; | ||
| 17 | +import moment from "moment"; | ||
| 16 | const QuickQuoteEvent = props => { | 18 | const QuickQuoteEvent = props => { |
| 17 | const { location } = props; | 19 | const { location } = props; |
| 18 | const selectedNode = JSON.parse(location.state).quotationData; | 20 | const selectedNode = JSON.parse(location.state).quotationData; |
| @@ -88,6 +90,50 @@ const QuickQuoteEvent = props => { | @@ -88,6 +90,50 @@ const QuickQuoteEvent = props => { | ||
| 88 | const [enabled, setEnabled] = useState(props.enabled); | 90 | const [enabled, setEnabled] = useState(props.enabled); |
| 89 | 91 | ||
| 90 | useEffect(() => { | 92 | useEffect(() => { |
| 93 | + const configUrl = `${commonConfig.server_host}business/getModelBysId/${sModelsId}?sModelsId=${sModelsId}`; | ||
| 94 | + commonServices | ||
| 95 | + .getService(props.token, configUrl) | ||
| 96 | + .then(({ data: masterReturn }) => { | ||
| 97 | + if (masterReturn.code === 1) { | ||
| 98 | + const formData = masterReturn.dataset.rows[0].formData; | ||
| 99 | + const masterConfig = formData.find(x => x.sTbName === "QuoQuotationmaster"); | ||
| 100 | + const processConfig = formData.find(x => x.sTbName === "QuoQuotationprocess"); | ||
| 101 | + const materialsConfig = formData.find(x => x.sTbName === "QuoQuotationmaterials"); | ||
| 102 | + const slaveConfig = formData.find(x => x.sTbName === "QuoQuotationslave"); | ||
| 103 | + const controlConfig = formData.find(x => x.sTbName === "QuoQuotationcontrol"); | ||
| 104 | + let colorConfigGrdVisible; | ||
| 105 | + const colorConfigTrue = formData.find(item => item.sTbName === "quoquotationparam"); | ||
| 106 | + if (commonUtils.isNotEmptyObject(colorConfigTrue)) { | ||
| 107 | + colorConfigGrdVisible = colorConfigTrue.bGrdVisible; | ||
| 108 | + if (colorConfigGrdVisible) { | ||
| 109 | + colorColumn = commonFunc.getHeaderConfig(colorConfigTrue, colorColumn); | ||
| 110 | + } | ||
| 111 | + } | ||
| 112 | + const colorConfig = colorConfigGrdVisible ? colorConfigTrue : ""; | ||
| 113 | + /* 合版信息表 */ | ||
| 114 | + const packConfig = formData.find(item => item.sTbName === "quoquotationcontrolcombine"); | ||
| 115 | + let checkConfig = {}; | ||
| 116 | + let checkColumn = {}; | ||
| 117 | + if (commonUtils.isNotEmptyArr(formData.filter(item => item.bGrd && item.sTbName === "sysbillcheckresult"))) { | ||
| 118 | + checkConfig = formData.find(item => item.bGrd && item.sTbName === "sysbillcheckresult"); | ||
| 119 | + checkColumn = commonFunc.getHeaderConfig(checkConfig); | ||
| 120 | + } | ||
| 121 | + props.onSaveState(pre => ({ | ||
| 122 | + ...pre, | ||
| 123 | + formData, | ||
| 124 | + masterConfig, | ||
| 125 | + processConfig, | ||
| 126 | + materialsConfig, | ||
| 127 | + slaveConfig, | ||
| 128 | + controlConfig, | ||
| 129 | + colorConfig, | ||
| 130 | + packConfig, | ||
| 131 | + checkConfig, | ||
| 132 | + })); | ||
| 133 | + //setState(pre => ({ ...pre, selectedNode ,formData, masterConfig, processConfig, materialsConfig, slaveConfig})); | ||
| 134 | + } | ||
| 135 | + }) | ||
| 136 | + .catch(error => {}); | ||
| 91 | setState(pre => ({ ...pre, selectedNode })); | 137 | setState(pre => ({ ...pre, selectedNode })); |
| 92 | }, []); | 138 | }, []); |
| 93 | 139 | ||
| @@ -98,7 +144,9 @@ const QuickQuoteEvent = props => { | @@ -98,7 +144,9 @@ const QuickQuoteEvent = props => { | ||
| 98 | useEffect(() => { | 144 | useEffect(() => { |
| 99 | // 获取 masterConfig | 145 | // 获取 masterConfig |
| 100 | 146 | ||
| 101 | - const sActiveId = "172129113112117428019179600"; | 147 | + const { masterConfig, token } = props; |
| 148 | + const quickQuoteConfig = masterConfig?.gdsconfigformslave.find(item => item.sControlName === "BtnQuickQuote") || {}; | ||
| 149 | + const { sActiveId = "172129113112117428019179600" } = quickQuoteConfig; | ||
| 102 | const configUrls = `${commonConfig.server_host}business/getModelBysId/${sActiveId}?sModelsId=${sActiveId}`; | 150 | const configUrls = `${commonConfig.server_host}business/getModelBysId/${sActiveId}?sModelsId=${sActiveId}`; |
| 103 | commonServices.getService(props.app.token, configUrls).then(async ({ data: configReturn }) => { | 151 | commonServices.getService(props.app.token, configUrls).then(async ({ data: configReturn }) => { |
| 104 | if (configReturn.code === 1) { | 152 | if (configReturn.code === 1) { |
| @@ -411,7 +459,7 @@ const QuickQuoteEvent = props => { | @@ -411,7 +459,7 @@ const QuickQuoteEvent = props => { | ||
| 411 | loading: true, | 459 | loading: true, |
| 412 | }, | 460 | }, |
| 413 | () => { | 461 | () => { |
| 414 | - props.onButtonClick("BtnDraft"); | 462 | + props.onButtonClick("BtnDraft", { ...props }); |
| 415 | } | 463 | } |
| 416 | ); | 464 | ); |
| 417 | }; | 465 | }; |
| @@ -421,7 +469,6 @@ const QuickQuoteEvent = props => { | @@ -421,7 +469,6 @@ const QuickQuoteEvent = props => { | ||
| 421 | // 核价按钮 | 469 | // 核价按钮 |
| 422 | addState.handleCalcPrice = async () => { | 470 | addState.handleCalcPrice = async () => { |
| 423 | const { masterData = {}, slaveData = [], selectedNode = {}, extraParts = {} } = state; | 471 | const { masterData = {}, slaveData = [], selectedNode = {}, extraParts = {} } = state; |
| 424 | - | ||
| 425 | if (commonUtils.isEmptyObject(selectedNode)) { | 472 | if (commonUtils.isEmptyObject(selectedNode)) { |
| 426 | // message.error("请先选择产品"); | 473 | // message.error("请先选择产品"); |
| 427 | Toast.show({ | 474 | Toast.show({ |
| @@ -538,6 +585,7 @@ const QuickQuoteEvent = props => { | @@ -538,6 +585,7 @@ const QuickQuoteEvent = props => { | ||
| 538 | if (dataReturn.code === 1) { | 585 | if (dataReturn.code === 1) { |
| 539 | // const { app, sModelsId } = props; | 586 | // const { app, sModelsId } = props; |
| 540 | // const { slaveConfig, masterData: masterData1, processConfig, materialsConfig } = state; | 587 | // const { slaveConfig, masterData: masterData1, processConfig, materialsConfig } = state; |
| 588 | + | ||
| 541 | const { slaveConfig, masterData: masterData1, materialsConfig, processConfig, sModelsId, app } = props; | 589 | const { slaveConfig, masterData: masterData1, materialsConfig, processConfig, sModelsId, app } = props; |
| 542 | const { productClassify, partsNewInfo = [], productProcessInfo, partsInfo: partsOldInfo } = dataReturn.dataset.rows[0]; | 590 | const { productClassify, partsNewInfo = [], productProcessInfo, partsInfo: partsOldInfo } = dataReturn.dataset.rows[0]; |
| 543 | 591 | ||
| @@ -863,7 +911,8 @@ const QuickQuoteEvent = props => { | @@ -863,7 +911,8 @@ const QuickQuoteEvent = props => { | ||
| 863 | const result = await props.handleCalculation( | 911 | const result = await props.handleCalculation( |
| 864 | false, | 912 | false, |
| 865 | { ...masterProps, ...newState, manyqtysConfig: state.manyConfig, manyqtysData: state.manyData }, | 913 | { ...masterProps, ...newState, manyqtysConfig: state.manyConfig, manyqtysData: state.manyData }, |
| 866 | - true | 914 | + true, |
| 915 | + props | ||
| 867 | ); | 916 | ); |
| 868 | 917 | ||
| 869 | if (commonUtils.isEmptyObject(result)) { | 918 | if (commonUtils.isEmptyObject(result)) { |
| @@ -1073,7 +1122,7 @@ const sortData = (tableData, processData) => { | @@ -1073,7 +1122,7 @@ const sortData = (tableData, processData) => { | ||
| 1073 | return processData; | 1122 | return processData; |
| 1074 | }; | 1123 | }; |
| 1075 | // 计算数量 | 1124 | // 计算数量 |
| 1076 | -const handleCalculation = async (bSave, nextProps, isWait) => { | 1125 | +const handleCalculation = async (bSave, nextProps, isWait, props) => { |
| 1077 | const dataUrl = `${commonConfig.server_host}business/addQuotationsheet?sModelsId=${nextProps.sModelsId}`; | 1126 | const dataUrl = `${commonConfig.server_host}business/addQuotationsheet?sModelsId=${nextProps.sModelsId}`; |
| 1078 | const { | 1127 | const { |
| 1079 | masterConfig, | 1128 | masterConfig, |
| @@ -1099,6 +1148,376 @@ const handleCalculation = async (bSave, nextProps, isWait) => { | @@ -1099,6 +1148,376 @@ const handleCalculation = async (bSave, nextProps, isWait) => { | ||
| 1099 | let { slaveData, controlData, materialsData, processData, masterData, manyqtysData, packData } = nextProps; | 1148 | let { slaveData, controlData, materialsData, processData, masterData, manyqtysData, packData } = nextProps; |
| 1100 | const sMakePerson = masterData.sMakePerson; | 1149 | const sMakePerson = masterData.sMakePerson; |
| 1101 | const data = []; | 1150 | const data = []; |
| 1151 | + data.push(commonBusiness.mergeData("master", `${masterConfig.sTbName.toLowerCase()}_Tmp`, [masterData], [], true)); | ||
| 1152 | + data.push(commonBusiness.mergeData("slave", `${slaveConfig.sTbName.toLowerCase()}_tmp`, slaveData, [], true)); | ||
| 1153 | + data.push(commonBusiness.mergeData("control", `${controlConfig.sTbName.toLowerCase()}_tmp`, controlData, [], true)); | ||
| 1154 | + data.push(commonBusiness.mergeData("materials", `${materialsConfig.sTbName.toLowerCase()}_tmp`, materialsData, [], true)); | ||
| 1155 | + data.push(commonBusiness.mergeData("process", `${processConfig.sTbName.toLowerCase()}_tmp`, processData, [], true)); | ||
| 1156 | + if (commonUtils.isNotEmptyObject(manyqtysConfig)) { | ||
| 1157 | + data.push( | ||
| 1158 | + commonBusiness.mergeData( | ||
| 1159 | + "manyqtys", | ||
| 1160 | + `${manyqtysConfig.sTbName.toLowerCase()}_tmp`, | ||
| 1161 | + manyqtysData?.map(item => { | ||
| 1162 | + delete item.manyData; | ||
| 1163 | + return item; | ||
| 1164 | + }), | ||
| 1165 | + [], | ||
| 1166 | + true | ||
| 1167 | + ) | ||
| 1168 | + ); | ||
| 1169 | + } | ||
| 1170 | + | ||
| 1171 | + data.push(commonBusiness.mergeData("pack", `${packConfig.sTbName.toLowerCase()}_tmp`, packData, [], true)); | ||
| 1172 | + const value = { data, sClientType: "1", sGuid: masterData.sId }; | ||
| 1173 | + | ||
| 1174 | + const cacheIndex = dQuickQuoteProductQty === undefined ? -1 : manyDataCache.findIndex(item => item.dManyQty === dQuickQuoteProductQty); | ||
| 1175 | + if (cacheIndex === -1) { | ||
| 1176 | + // message.warning("自动计算中,请稍后再试。"); | ||
| 1177 | + Toast.show({ | ||
| 1178 | + content: "自动计算中,请稍后再试。", | ||
| 1179 | + }); | ||
| 1180 | + } | ||
| 1181 | + const dataReturn = cacheIndex === -1 ? (await commonServices.postValueService(props.app.token, value, dataUrl)).data : manyDataCache[cacheIndex]; | ||
| 1182 | + if (dataReturn.code === 1) { | ||
| 1183 | + /* 成功 */ | ||
| 1184 | + const valueReturn = dataReturn.dataset.rows[0]; | ||
| 1185 | + const masterDataArr = valueReturn[`${masterConfig.sTbName.toLowerCase()}_tmp`]; | ||
| 1186 | + if (commonUtils.isNotEmptyArr(masterDataArr)) { | ||
| 1187 | + masterData = masterDataArr[0]; | ||
| 1188 | + } | ||
| 1189 | + if (cacheIndex !== -1) { | ||
| 1190 | + // masterData.handleType = nextProps.masterData.handleType || "update"; | ||
| 1191 | + masterData.sQuoConfig = nextProps.masterData.sQuoConfig; | ||
| 1192 | + masterData.sFormId = nextProps.masterData.sFormId; | ||
| 1193 | + masterData.sBillNo = nextProps.masterData.sBillNo; | ||
| 1194 | + } | ||
| 1195 | + masterData.handleType = masterData.sBillNo ? "update" : "add"; | ||
| 1196 | + if (masterData.handleType === "update" && !commonUtils.isEmpty(sMakePerson)) { | ||
| 1197 | + masterData.sMakePerson = sMakePerson; | ||
| 1198 | + } | ||
| 1199 | + slaveData = valueReturn[`${slaveConfig.sTbName.toLowerCase()}_tmp`].map(item => { | ||
| 1200 | + item.handleType = dQuickQuoteProductQty ? "add" : item.handleType; | ||
| 1201 | + return item; | ||
| 1202 | + }); | ||
| 1203 | + controlData = valueReturn[`${controlConfig.sTbName.toLowerCase()}_tmp`].map(item => { | ||
| 1204 | + item.handleType = dQuickQuoteProductQty ? "add" : item.handleType; | ||
| 1205 | + return item; | ||
| 1206 | + }); | ||
| 1207 | + materialsData = valueReturn[`${materialsConfig.sTbName.toLowerCase()}_tmp`].map(item => { | ||
| 1208 | + item.handleType = dQuickQuoteProductQty ? "add" : item.handleType; | ||
| 1209 | + return item; | ||
| 1210 | + }); | ||
| 1211 | + processData = valueReturn[`${processConfig.sTbName.toLowerCase()}_tmp`].map(item => { | ||
| 1212 | + item.handleType = dQuickQuoteProductQty ? "add" : item.handleType; | ||
| 1213 | + return item; | ||
| 1214 | + }); | ||
| 1215 | + processData = props.sortData(controlData, processData); | ||
| 1216 | + const addState = {}; | ||
| 1217 | + if (commonUtils.isNotEmptyObject(manyqtysConfig)) { | ||
| 1218 | + manyqtysData = valueReturn[`${manyqtysConfig.sTbName.toLowerCase()}_tmp`]?.map((item, index) => { | ||
| 1219 | + return { | ||
| 1220 | + ...item, | ||
| 1221 | + sId: manyqtysData[index] ? manyqtysData[index].sId : item.sId, | ||
| 1222 | + handleType: dQuickQuoteProductQty ? "add" : item.handleType, | ||
| 1223 | + }; | ||
| 1224 | + }); | ||
| 1225 | + if (cacheIndex === -1 && manyqtysData?.some(item => item.manyData)) { | ||
| 1226 | + addState.manyDataCache = manyqtysData.map((item, index) => { | ||
| 1227 | + let result = {}; | ||
| 1228 | + if (index === 0) { | ||
| 1229 | + result = Object.keys(valueReturn).reduce((pre, cur) => { | ||
| 1230 | + if (cur !== `${manyqtysConfig.sTbName.toLowerCase()}_tmp`) { | ||
| 1231 | + pre[cur] = valueReturn[cur]; | ||
| 1232 | + } | ||
| 1233 | + return pre; | ||
| 1234 | + }, {}); | ||
| 1235 | + } else { | ||
| 1236 | + result = commonUtils.convertStrToObj(item.manyData); | ||
| 1237 | + } | ||
| 1238 | + | ||
| 1239 | + result[`${manyqtysConfig.sTbName.toLowerCase()}_tmp`] = cloneDeep(manyqtysData).map(item => { | ||
| 1240 | + delete item.manyData; | ||
| 1241 | + return item; | ||
| 1242 | + }); | ||
| 1243 | + | ||
| 1244 | + const { sId, sBillNo, sFormId } = masterData; | ||
| 1245 | + const row = Object.keys(result).reduce((pre, cur) => { | ||
| 1246 | + if (cur === `${masterConfig.sTbName.toLowerCase()}_tmp`) { | ||
| 1247 | + pre[cur] = result[cur].map(item => ({ | ||
| 1248 | + ...item, | ||
| 1249 | + sId, | ||
| 1250 | + sBillNo: sBillNo || item.sBillNo, | ||
| 1251 | + sFormId, | ||
| 1252 | + })); | ||
| 1253 | + } else if (cur.includes("_tmp")) { | ||
| 1254 | + pre[cur] = result[cur].map(item => ({ | ||
| 1255 | + ...item, | ||
| 1256 | + sParentId: sId, | ||
| 1257 | + handleType: "add", | ||
| 1258 | + })); | ||
| 1259 | + } else { | ||
| 1260 | + pre[cur] = result[cur]; | ||
| 1261 | + } | ||
| 1262 | + return pre; | ||
| 1263 | + }, {}); | ||
| 1264 | + | ||
| 1265 | + return { | ||
| 1266 | + code: 1, | ||
| 1267 | + dManyQty: item.dManyQty, | ||
| 1268 | + dataset: { | ||
| 1269 | + rows: [row], | ||
| 1270 | + }, | ||
| 1271 | + }; | ||
| 1272 | + }); | ||
| 1273 | + } | ||
| 1274 | + } | ||
| 1275 | + | ||
| 1276 | + packData = valueReturn[`${packConfig.sTbName.toLowerCase()}_tmp`]; | ||
| 1277 | + /* 计算成功后自动调用保存 */ | ||
| 1278 | + if (bSave) { | ||
| 1279 | + const data = []; | ||
| 1280 | + data.push(commonBusiness.mergeData("master", masterConfig.sTbName, [masterData])); | ||
| 1281 | + data.push(commonBusiness.mergeData("slave", slaveConfig.sTbName, slaveData, slaveDelData)); | ||
| 1282 | + data.push(commonBusiness.mergeData("control", controlConfig.sTbName, controlData, controlDelData)); | ||
| 1283 | + data.push(commonBusiness.mergeData("materials", materialsConfig.sTbName, materialsData, materialsDelData)); | ||
| 1284 | + data.push(commonBusiness.mergeData("process", processConfig.sTbName, processData, processDelData)); | ||
| 1285 | + | ||
| 1286 | + if (commonUtils.isNotEmptyObject(manyqtysConfig)) { | ||
| 1287 | + data.push(commonBusiness.mergeData("manyqtys", manyqtysConfig.sTbName, manyqtysData, manyqtysDelData)); | ||
| 1288 | + } | ||
| 1289 | + | ||
| 1290 | + data.push(commonBusiness.mergeData("color", colorConfig.sTbName, colorData, colorDelData)); | ||
| 1291 | + data.push(commonBusiness.mergeData("pack", packConfig.sTbName, packData, packDelData)); | ||
| 1292 | + props.onSaveData({ | ||
| 1293 | + data, | ||
| 1294 | + sClientType: "1", | ||
| 1295 | + loading: false, | ||
| 1296 | + sSysLogSrcId: masterData.sId, | ||
| 1297 | + }); | ||
| 1298 | + props.onSaveState({ | ||
| 1299 | + slaveData, | ||
| 1300 | + packData, | ||
| 1301 | + controlData, | ||
| 1302 | + materialsData, | ||
| 1303 | + processData, | ||
| 1304 | + masterData, | ||
| 1305 | + manyqtysData, | ||
| 1306 | + ...addState, | ||
| 1307 | + }); | ||
| 1308 | + } else { | ||
| 1309 | + if (isWait) { | ||
| 1310 | + return { | ||
| 1311 | + slaveData, | ||
| 1312 | + controlData, | ||
| 1313 | + materialsData, | ||
| 1314 | + processData, | ||
| 1315 | + masterData, | ||
| 1316 | + manyqtysData, | ||
| 1317 | + loading: false, | ||
| 1318 | + packData, | ||
| 1319 | + ...addState, | ||
| 1320 | + }; | ||
| 1321 | + } else { | ||
| 1322 | + props.onSaveState({ | ||
| 1323 | + slaveData, | ||
| 1324 | + controlData, | ||
| 1325 | + materialsData, | ||
| 1326 | + processData, | ||
| 1327 | + masterData, | ||
| 1328 | + manyqtysData, | ||
| 1329 | + loading: false, | ||
| 1330 | + packData, | ||
| 1331 | + ...addState, | ||
| 1332 | + }); | ||
| 1333 | + } | ||
| 1334 | + // message.success(commonFunc.getConfigShowName(masterConfig, "BtnCalculation") + commonFunc.showMessage(app.commonConst, "handleSuccess")); | ||
| 1335 | + } | ||
| 1336 | + } else { | ||
| 1337 | + /* 失败 */ | ||
| 1338 | + props.onSaveState({ | ||
| 1339 | + loading: false, | ||
| 1340 | + }); | ||
| 1341 | + // this.props.getServiceError(dataReturn); | ||
| 1342 | + } | ||
| 1343 | +}; | ||
| 1344 | +/** 按钮操作事件 */ | ||
| 1345 | +const handleButtonClick = async (name, props) => { | ||
| 1346 | + if (name === "BtnDraft") { | ||
| 1347 | + const { | ||
| 1348 | + masterConfig, | ||
| 1349 | + masterData, | ||
| 1350 | + slaveConfig, | ||
| 1351 | + slaveData, | ||
| 1352 | + slaveDelData, | ||
| 1353 | + controlConfig, | ||
| 1354 | + controlData, | ||
| 1355 | + controlDelData, | ||
| 1356 | + materialsConfig, | ||
| 1357 | + materialsData, | ||
| 1358 | + materialsDelData, | ||
| 1359 | + processConfig, | ||
| 1360 | + processData, | ||
| 1361 | + processDelData, | ||
| 1362 | + colorConfig, | ||
| 1363 | + colorData, | ||
| 1364 | + colorDelData, | ||
| 1365 | + packConfig, | ||
| 1366 | + packData, | ||
| 1367 | + packDelData, | ||
| 1368 | + } = props; | ||
| 1369 | + const data = []; | ||
| 1370 | + slaveConfig.gdsconfigformslave.forEach(itemConfig => { | ||
| 1371 | + slaveData | ||
| 1372 | + .filter(itemData => itemData.handleType === "add" || itemData.handleType === "update") | ||
| 1373 | + .forEach(itemData => { | ||
| 1374 | + itemData.NoVerify = "NoVerify"; | ||
| 1375 | + const firstDataIndex = itemConfig.sName.substring(0, 1); | ||
| 1376 | + if (commonUtils.isEmpty(itemData[itemConfig.sName])) { | ||
| 1377 | + itemData[itemConfig.sName] = | ||
| 1378 | + firstDataIndex === "s" | ||
| 1379 | + ? "" | ||
| 1380 | + : firstDataIndex === "d" || firstDataIndex === "i" | ||
| 1381 | + ? 0 | ||
| 1382 | + : firstDataIndex === "b" | ||
| 1383 | + ? false | ||
| 1384 | + : firstDataIndex === "t" | ||
| 1385 | + ? moment(new Date()).format(props.app.dateFormat) | ||
| 1386 | + : undefined; | ||
| 1387 | + } | ||
| 1388 | + }); | ||
| 1389 | + }); | ||
| 1390 | + controlConfig.gdsconfigformslave.forEach(itemConfig => { | ||
| 1391 | + controlData | ||
| 1392 | + .filter(itemData => itemData.handleType === "add" || itemData.handleType === "update") | ||
| 1393 | + .forEach(itemData => { | ||
| 1394 | + itemData.NoVerify = "NoVerify"; | ||
| 1395 | + const firstDataIndex = itemConfig.sName.substring(0, 1); | ||
| 1396 | + if (commonUtils.isEmpty(itemData[itemConfig.sName])) { | ||
| 1397 | + itemData[itemConfig.sName] = | ||
| 1398 | + firstDataIndex === "s" | ||
| 1399 | + ? "" | ||
| 1400 | + : firstDataIndex === "d" || firstDataIndex === "i" | ||
| 1401 | + ? 0 | ||
| 1402 | + : firstDataIndex === "b" | ||
| 1403 | + ? false | ||
| 1404 | + : firstDataIndex === "t" | ||
| 1405 | + ? moment(new Date()).format(props.app.dateFormat) | ||
| 1406 | + : undefined; | ||
| 1407 | + } | ||
| 1408 | + }); | ||
| 1409 | + }); | ||
| 1410 | + | ||
| 1411 | + materialsConfig.gdsconfigformslave.forEach(itemConfig => { | ||
| 1412 | + materialsData | ||
| 1413 | + .filter(itemData => itemData.handleType === "add" || itemData.handleType === "update") | ||
| 1414 | + .forEach(itemData => { | ||
| 1415 | + itemData.NoVerify = "NoVerify"; | ||
| 1416 | + const firstDataIndex = itemConfig.sName.substring(0, 1); | ||
| 1417 | + if (commonUtils.isEmpty(itemData[itemConfig.sName])) { | ||
| 1418 | + itemData[itemConfig.sName] = | ||
| 1419 | + firstDataIndex === "s" | ||
| 1420 | + ? "" | ||
| 1421 | + : firstDataIndex === "d" || firstDataIndex === "i" | ||
| 1422 | + ? 0 | ||
| 1423 | + : firstDataIndex === "b" | ||
| 1424 | + ? false | ||
| 1425 | + : firstDataIndex === "t" | ||
| 1426 | + ? moment(new Date()).format(props.app.dateFormat) | ||
| 1427 | + : undefined; | ||
| 1428 | + } | ||
| 1429 | + }); | ||
| 1430 | + }); | ||
| 1431 | + | ||
| 1432 | + processConfig.gdsconfigformslave.forEach(itemConfig => { | ||
| 1433 | + processData | ||
| 1434 | + .filter(itemData => itemData.handleType === "add" || itemData.handleType === "update") | ||
| 1435 | + .forEach(itemData => { | ||
| 1436 | + itemData.NoVerify = "NoVerify"; | ||
| 1437 | + const firstDataIndex = itemConfig.sName.substring(0, 1); | ||
| 1438 | + if (commonUtils.isEmpty(itemData[itemConfig.sName])) { | ||
| 1439 | + itemData[itemConfig.sName] = | ||
| 1440 | + firstDataIndex === "s" | ||
| 1441 | + ? "" | ||
| 1442 | + : firstDataIndex === "d" || firstDataIndex === "i" | ||
| 1443 | + ? 0 | ||
| 1444 | + : firstDataIndex === "b" | ||
| 1445 | + ? false | ||
| 1446 | + : firstDataIndex === "t" | ||
| 1447 | + ? moment(new Date()).format(props.app.dateFormat) | ||
| 1448 | + : undefined; | ||
| 1449 | + } | ||
| 1450 | + }); | ||
| 1451 | + }); | ||
| 1452 | + | ||
| 1453 | + if (commonUtils.isNotEmptyObject(packConfig)) { | ||
| 1454 | + packConfig.gdsconfigformslave.forEach(itemConfig => { | ||
| 1455 | + packData | ||
| 1456 | + .filter(itemData => itemData.handleType === "add" || itemData.handleType === "update") | ||
| 1457 | + .forEach(itemData => { | ||
| 1458 | + itemData.NoVerify = "NoVerify"; | ||
| 1459 | + const firstDataIndex = itemConfig.sName.substring(0, 1); | ||
| 1460 | + if (commonUtils.isEmpty(itemData[itemConfig.sName])) { | ||
| 1461 | + itemData[itemConfig.sName] = | ||
| 1462 | + firstDataIndex === "s" | ||
| 1463 | + ? "" | ||
| 1464 | + : firstDataIndex === "d" || firstDataIndex === "i" | ||
| 1465 | + ? 0 | ||
| 1466 | + : firstDataIndex === "b" | ||
| 1467 | + ? false | ||
| 1468 | + : firstDataIndex === "t" | ||
| 1469 | + ? moment(new Date()).format(props.app.dateFormat) | ||
| 1470 | + : undefined; | ||
| 1471 | + } | ||
| 1472 | + }); | ||
| 1473 | + }); | ||
| 1474 | + } | ||
| 1475 | + | ||
| 1476 | + if (commonUtils.isNotEmptyObject(colorConfig)) { | ||
| 1477 | + colorConfig.gdsconfigformslave.forEach(itemConfig => { | ||
| 1478 | + colorData | ||
| 1479 | + .filter(itemData => itemData.handleType === "add" || itemData.handleType === "update") | ||
| 1480 | + .forEach(itemData => { | ||
| 1481 | + itemData.NoVerify = "NoVerify"; | ||
| 1482 | + const firstDataIndex = itemConfig.sName.substring(0, 1); | ||
| 1483 | + if (commonUtils.isEmpty(itemData[itemConfig.sName])) { | ||
| 1484 | + itemData[itemConfig.sName] = | ||
| 1485 | + firstDataIndex === "s" | ||
| 1486 | + ? "" | ||
| 1487 | + : firstDataIndex === "d" || firstDataIndex === "i" | ||
| 1488 | + ? 0 | ||
| 1489 | + : firstDataIndex === "b" | ||
| 1490 | + ? false | ||
| 1491 | + : firstDataIndex === "t" | ||
| 1492 | + ? moment(new Date()).format(props.app.dateFormat) | ||
| 1493 | + : undefined; | ||
| 1494 | + } | ||
| 1495 | + }); | ||
| 1496 | + }); | ||
| 1497 | + } | ||
| 1498 | + | ||
| 1499 | + data.push(commonBusiness.mergeData("master", masterConfig.sTbName, [masterData])); | ||
| 1500 | + data.push(commonBusiness.mergeData("slave", slaveConfig.sTbName, slaveData, slaveDelData)); | ||
| 1501 | + data.push(commonBusiness.mergeData("control", controlConfig.sTbName, controlData, controlDelData)); | ||
| 1502 | + data.push(commonBusiness.mergeData("materials", materialsConfig.sTbName, materialsData, materialsDelData)); | ||
| 1503 | + data.push(commonBusiness.mergeData("process", processConfig.sTbName, processData, processDelData)); | ||
| 1504 | + if (commonUtils.isNotEmptyObject(colorConfig)) { | ||
| 1505 | + data.push(commonBusiness.mergeData("color", colorConfig.sTbName, colorData, colorDelData)); | ||
| 1506 | + } | ||
| 1507 | + if (commonUtils.isNotEmptyObject(packConfig)) { | ||
| 1508 | + data.push(commonBusiness.mergeData("pack", packConfig.sTbName, packData, packDelData)); | ||
| 1509 | + } | ||
| 1510 | + props.onSaveData({ | ||
| 1511 | + data, | ||
| 1512 | + sClientType: "1", | ||
| 1513 | + loading: false, | ||
| 1514 | + sSysLogSrcId: masterData.sId, | ||
| 1515 | + bIsUnCcg: false, | ||
| 1516 | + }); | ||
| 1517 | + } | ||
| 1518 | +}; | ||
| 1519 | +const handleSaveData = async (params, props) => { | ||
| 1520 | + console.log("🚀 ~ handleSaveData ~ params:", params); | ||
| 1102 | }; | 1521 | }; |
| 1103 | const getProps = baseProps => { | 1522 | const getProps = baseProps => { |
| 1104 | const { location, quotationData, app, sModelsId } = baseProps; | 1523 | const { location, quotationData, app, sModelsId } = baseProps; |
| @@ -1114,7 +1533,7 @@ const getProps = baseProps => { | @@ -1114,7 +1533,7 @@ const getProps = baseProps => { | ||
| 1114 | pageNum: 1, | 1533 | pageNum: 1, |
| 1115 | pageSize: 20, | 1534 | pageSize: 20, |
| 1116 | }; | 1535 | }; |
| 1117 | - const retrunData = await commonServices.postValueService(props.token, body, url); | 1536 | + const retrunData = await commonServices.postValueService(token, body, url); |
| 1118 | if (retrunData.data.code === 1) { | 1537 | if (retrunData.data.code === 1) { |
| 1119 | /* 获取数据集 */ | 1538 | /* 获取数据集 */ |
| 1120 | const { rows, totalPageCount, currentPageNo, totalCount } = retrunData.data.dataset; | 1539 | const { rows, totalPageCount, currentPageNo, totalCount } = retrunData.data.dataset; |
| @@ -1126,47 +1545,54 @@ const getProps = baseProps => { | @@ -1126,47 +1545,54 @@ const getProps = baseProps => { | ||
| 1126 | }; | 1545 | }; |
| 1127 | } | 1546 | } |
| 1128 | }; | 1547 | }; |
| 1548 | + // 定义 onSaveState 函数 | ||
| 1549 | + const onSaveState = (updateFunction, callback) => { | ||
| 1550 | + setState(prevState => { | ||
| 1551 | + let newState = prevState; // 初始状态下不修改状态 | ||
| 1552 | + // 确保 updateFunction 是一个函数 | ||
| 1553 | + if (typeof updateFunction === "function") { | ||
| 1554 | + newState = updateFunction(prevState); | ||
| 1555 | + } | ||
| 1129 | 1556 | ||
| 1130 | - // 获取主表信息 | ||
| 1131 | - useEffect(() => { | ||
| 1132 | - const configUrl = `${commonConfig.server_host}business/getModelBysId/${sModelsId}?sModelsId=${sModelsId}`; | ||
| 1133 | - commonServices | ||
| 1134 | - .getService(token, configUrl) | ||
| 1135 | - .then(({ data: masterReturn }) => { | ||
| 1136 | - if (masterReturn.code === 1) { | ||
| 1137 | - const formData = masterReturn.dataset.rows[0].formData; | ||
| 1138 | - const processConfig = formData.find(x => x.sTbName === "QuoQuotationprocess"); | ||
| 1139 | - const materialsConfig = formData.find(x => x.sTbName === "QuoQuotationmaterials"); | ||
| 1140 | - const slaveConfig = formData.find(x => x.sTbName === "QuoQuotationslave"); | ||
| 1141 | - setState(pre => ({ ...pre, formData, processConfig, materialsConfig, slaveConfig })); | ||
| 1142 | - } | ||
| 1143 | - }) | ||
| 1144 | - .catch(error => {}); | ||
| 1145 | - }, [sModelsId]); | 1557 | + // 执行回调函数(如果存在) |
| 1558 | + if (typeof callback === "function") { | ||
| 1559 | + callback(); | ||
| 1560 | + } | ||
| 1146 | 1561 | ||
| 1147 | - // 处理 formData | ||
| 1148 | - let props = { | 1562 | + return newState; // 返回新的状态,可能未修改 |
| 1563 | + }); | ||
| 1564 | + }; | ||
| 1565 | + | ||
| 1566 | + const slaveData = []; | ||
| 1567 | + let slaveRow = {}; | ||
| 1568 | + slaveRow.handleType = "add"; | ||
| 1569 | + slaveRow.sId = commonUtils.createSid(); | ||
| 1570 | + slaveRow.key = commonUtils.createSid(); | ||
| 1571 | + slaveRow.sParentId = commonUtils.createSid(); | ||
| 1572 | + slaveRow.sNodeId = commonUtils.createSid(); | ||
| 1573 | + slaveRow.bDefault = false; | ||
| 1574 | + slaveRow.iOrder = 1; | ||
| 1575 | + slaveData.push(slaveRow); | ||
| 1576 | + | ||
| 1577 | + return { | ||
| 1149 | ...baseProps, | 1578 | ...baseProps, |
| 1150 | selectedNode: quotationData, | 1579 | selectedNode: quotationData, |
| 1151 | - state: {}, | ||
| 1152 | manyDataCache: [], | 1580 | manyDataCache: [], |
| 1153 | token: baseProps.app.token, | 1581 | token: baseProps.app.token, |
| 1154 | - onSaveState: setState, | 1582 | + slaveData, |
| 1155 | getSqlDropDownData, | 1583 | getSqlDropDownData, |
| 1156 | onMaterialsChange: handleMaterialsChange, | 1584 | onMaterialsChange: handleMaterialsChange, |
| 1157 | sortData, | 1585 | sortData, |
| 1158 | handleCalculation, | 1586 | handleCalculation, |
| 1159 | - }; | ||
| 1160 | - return { | ||
| 1161 | - ...props, | 1587 | + onSaveState, |
| 1588 | + onSaveData: handleSaveData, | ||
| 1589 | + onButtonClick: handleButtonClick, | ||
| 1162 | ...state, | 1590 | ...state, |
| 1163 | }; | 1591 | }; |
| 1164 | }; | 1592 | }; |
| 1165 | const QuotationAllprogressDetail = baseProps => { | 1593 | const QuotationAllprogressDetail = baseProps => { |
| 1166 | const masterProps = getProps(baseProps); | 1594 | const masterProps = getProps(baseProps); |
| 1167 | - console.log("🚀 ~ masterProps:", masterProps); | ||
| 1168 | const props = QuickQuoteEvent(masterProps); | 1595 | const props = QuickQuoteEvent(masterProps); |
| 1169 | - | ||
| 1170 | const { selectedNode, location, quotationData, app, sModelsId } = props; | 1596 | const { selectedNode, location, quotationData, app, sModelsId } = props; |
| 1171 | const { showName, sUnit } = quotationData; | 1597 | const { showName, sUnit } = quotationData; |
| 1172 | const timeRef = useRef(0); | 1598 | const timeRef = useRef(0); |
| @@ -1880,22 +2306,30 @@ const BoxComponent = props => { | @@ -1880,22 +2306,30 @@ const BoxComponent = props => { | ||
| 1880 | }; | 2306 | }; |
| 1881 | const { loading } = props; | 2307 | const { loading } = props; |
| 1882 | // 核价事件 | 2308 | // 核价事件 |
| 1883 | - const onCalcPrice = async () => { | 2309 | + const onCalcPrice = () => { |
| 1884 | const addState = { | 2310 | const addState = { |
| 1885 | ...props.onGetAllDelData(), | 2311 | ...props.onGetAllDelData(), |
| 1886 | manyDataCache: [], | 2312 | manyDataCache: [], |
| 1887 | }; | 2313 | }; |
| 1888 | - | 2314 | + const data = { |
| 2315 | + masterData: { ...props.masterData, handleType: props.masterData.handleType || "update" }, | ||
| 2316 | + ...addState, | ||
| 2317 | + }; | ||
| 1889 | props.onSaveState( | 2318 | props.onSaveState( |
| 1890 | - { | ||
| 1891 | - masterData: { ...props.masterData, handleType: props.masterData.handleType || "update" }, | ||
| 1892 | - ...addState, | ||
| 1893 | - }, | 2319 | + pre => ({ ...pre, ...data }), |
| 1894 | () => { | 2320 | () => { |
| 1895 | props.handleCalcPrice(); | 2321 | props.handleCalcPrice(); |
| 1896 | } | 2322 | } |
| 1897 | ); | 2323 | ); |
| 1898 | - await props.handleCalcPrice(); | 2324 | + // props.onSaveState( |
| 2325 | + // { | ||
| 2326 | + // masterData: { ...props.masterData, handleType: props.masterData.handleType || "update" }, | ||
| 2327 | + // ...addState, | ||
| 2328 | + // }, | ||
| 2329 | + // () => { | ||
| 2330 | + // props.handleCalcPrice(); | ||
| 2331 | + // } | ||
| 2332 | + // ); | ||
| 1899 | }; | 2333 | }; |
| 1900 | return ( | 2334 | return ( |
| 1901 | <div> | 2335 | <div> |