Commit fa48d7ed519b6530178af505b88dcc4c5e251172

Authored by 陈鑫涛
1 parent c6bcf6c4

报价后保存

src/components/QuickQuote/index.jsx
... ... @@ -903,7 +903,6 @@ const QuickQuoteEvent = props => {
903 903 };
904 904 // 入口
905 905 const QuickQuote = baseProps => {
906   - console.log("🚀 ~ baseProps:", baseProps);
907 906 const props = QuickQuoteEvent(baseProps);
908 907 const [treeClassName, setTreeClassName] = useState("");
909 908  
... ... @@ -1644,7 +1643,6 @@ const BoxComponent = props => {
1644 1643 });
1645 1644 });
1646 1645 }
1647   - console.log(slaveRowData, "slaveRowData");
1648 1646  
1649 1647 const svgProps = {
1650 1648 ...props,
... ... @@ -2253,7 +2251,6 @@ const BoxModelSelectedModal = props => {
2253 2251 fixedHeight: "calc(100vh - 365px)",
2254 2252 noVlistTable: true,
2255 2253 onCostomColums: columns => {
2256   - console.log("🚀 ~ columns:", columns);
2257 2254 columns
2258 2255 .filter(item => item.dataIndex?.includes("Path"))
2259 2256 .forEach(column => {
... ...
src/mobile/quotation/detailNew.jsx
... ... @@ -13,6 +13,8 @@ import Typesetting from "@/components/Common/Typesetting/typesetting";
13 13 import DynamicSVG from "@/components/Common/BoxDesignCompontent/svg";
14 14 import ShowImgM from "@/components/Common/BoxShowImgMaterial/indexNew";
15 15 import CommonBase from "@/components/Common/CommonBase";
  16 +import { cloneDeep } from "lodash";
  17 +import moment from "moment";
16 18 const QuickQuoteEvent = props => {
17 19 const { location } = props;
18 20 const selectedNode = JSON.parse(location.state).quotationData;
... ... @@ -88,6 +90,50 @@ const QuickQuoteEvent = props => {
88 90 const [enabled, setEnabled] = useState(props.enabled);
89 91  
90 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 137 setState(pre => ({ ...pre, selectedNode }));
92 138 }, []);
93 139  
... ... @@ -98,7 +144,9 @@ const QuickQuoteEvent = props => {
98 144 useEffect(() => {
99 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 150 const configUrls = `${commonConfig.server_host}business/getModelBysId/${sActiveId}?sModelsId=${sActiveId}`;
103 151 commonServices.getService(props.app.token, configUrls).then(async ({ data: configReturn }) => {
104 152 if (configReturn.code === 1) {
... ... @@ -411,7 +459,7 @@ const QuickQuoteEvent = props => {
411 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 469 // 核价按钮
422 470 addState.handleCalcPrice = async () => {
423 471 const { masterData = {}, slaveData = [], selectedNode = {}, extraParts = {} } = state;
424   -
425 472 if (commonUtils.isEmptyObject(selectedNode)) {
426 473 // message.error("请先选择产品");
427 474 Toast.show({
... ... @@ -538,6 +585,7 @@ const QuickQuoteEvent = props => {
538 585 if (dataReturn.code === 1) {
539 586 // const { app, sModelsId } = props;
540 587 // const { slaveConfig, masterData: masterData1, processConfig, materialsConfig } = state;
  588 +
541 589 const { slaveConfig, masterData: masterData1, materialsConfig, processConfig, sModelsId, app } = props;
542 590 const { productClassify, partsNewInfo = [], productProcessInfo, partsInfo: partsOldInfo } = dataReturn.dataset.rows[0];
543 591  
... ... @@ -863,7 +911,8 @@ const QuickQuoteEvent = props => {
863 911 const result = await props.handleCalculation(
864 912 false,
865 913 { ...masterProps, ...newState, manyqtysConfig: state.manyConfig, manyqtysData: state.manyData },
866   - true
  914 + true,
  915 + props
867 916 );
868 917  
869 918 if (commonUtils.isEmptyObject(result)) {
... ... @@ -1073,7 +1122,7 @@ const sortData = (tableData, processData) => {
1073 1122 return processData;
1074 1123 };
1075 1124 // 计算数量
1076   -const handleCalculation = async (bSave, nextProps, isWait) => {
  1125 +const handleCalculation = async (bSave, nextProps, isWait, props) => {
1077 1126 const dataUrl = `${commonConfig.server_host}business/addQuotationsheet?sModelsId=${nextProps.sModelsId}`;
1078 1127 const {
1079 1128 masterConfig,
... ... @@ -1099,6 +1148,376 @@ const handleCalculation = async (bSave, nextProps, isWait) => {
1099 1148 let { slaveData, controlData, materialsData, processData, masterData, manyqtysData, packData } = nextProps;
1100 1149 const sMakePerson = masterData.sMakePerson;
1101 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 1522 const getProps = baseProps => {
1104 1523 const { location, quotationData, app, sModelsId } = baseProps;
... ... @@ -1114,7 +1533,7 @@ const getProps = baseProps => {
1114 1533 pageNum: 1,
1115 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 1537 if (retrunData.data.code === 1) {
1119 1538 /* 获取数据集 */
1120 1539 const { rows, totalPageCount, currentPageNo, totalCount } = retrunData.data.dataset;
... ... @@ -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 1578 ...baseProps,
1150 1579 selectedNode: quotationData,
1151   - state: {},
1152 1580 manyDataCache: [],
1153 1581 token: baseProps.app.token,
1154   - onSaveState: setState,
  1582 + slaveData,
1155 1583 getSqlDropDownData,
1156 1584 onMaterialsChange: handleMaterialsChange,
1157 1585 sortData,
1158 1586 handleCalculation,
1159   - };
1160   - return {
1161   - ...props,
  1587 + onSaveState,
  1588 + onSaveData: handleSaveData,
  1589 + onButtonClick: handleButtonClick,
1162 1590 ...state,
1163 1591 };
1164 1592 };
1165 1593 const QuotationAllprogressDetail = baseProps => {
1166 1594 const masterProps = getProps(baseProps);
1167   - console.log("🚀 ~ masterProps:", masterProps);
1168 1595 const props = QuickQuoteEvent(masterProps);
1169   -
1170 1596 const { selectedNode, location, quotationData, app, sModelsId } = props;
1171 1597 const { showName, sUnit } = quotationData;
1172 1598 const timeRef = useRef(0);
... ... @@ -1880,22 +2306,30 @@ const BoxComponent = props => {
1880 2306 };
1881 2307 const { loading } = props;
1882 2308 // 核价事件
1883   - const onCalcPrice = async () => {
  2309 + const onCalcPrice = () => {
1884 2310 const addState = {
1885 2311 ...props.onGetAllDelData(),
1886 2312 manyDataCache: [],
1887 2313 };
1888   -
  2314 + const data = {
  2315 + masterData: { ...props.masterData, handleType: props.masterData.handleType || "update" },
  2316 + ...addState,
  2317 + };
1889 2318 props.onSaveState(
1890   - {
1891   - masterData: { ...props.masterData, handleType: props.masterData.handleType || "update" },
1892   - ...addState,
1893   - },
  2319 + pre => ({ ...pre, ...data }),
1894 2320 () => {
1895 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 2334 return (
1901 2335 <div>
... ...