Commit 86a05485500eba6e03535df30cab66d5520afc1e

Authored by 陈鑫涛
1 parent fe5d2f05

快速报价核价

src/components/QuickQuote/index.jsx
@@ -17,7 +17,6 @@ import Typesetting from "@/components/Common/Typesetting/typesetting"; @@ -17,7 +17,6 @@ import Typesetting from "@/components/Common/Typesetting/typesetting";
17 import DynamicSVG from "@/components/Common/BoxDesignCompontent/svg"; 17 import DynamicSVG from "@/components/Common/BoxDesignCompontent/svg";
18 // 事件 18 // 事件
19 const QuickQuoteEvent = props => { 19 const QuickQuoteEvent = props => {
20 - console.log("🚀 ~ QuickQuoteEvent:", props)  
21 const addState = {}; 20 const addState = {};
22 21
23 addState.onGetFilterState = (state, bInit) => { 22 addState.onGetFilterState = (state, bInit) => {
@@ -613,7 +612,6 @@ const QuickQuoteEvent = props => { @@ -613,7 +612,6 @@ const QuickQuoteEvent = props => {
613 const iIndex = processConfig.gdsconfigformslave.findIndex(item => item.sName === "sProcessName"); 612 const iIndex = processConfig.gdsconfigformslave.findIndex(item => item.sName === "sProcessName");
614 if (iIndex > -1) { 613 if (iIndex > -1) {
615 const sqlDropDownData = await props.getSqlDropDownData(sModelsId, "slave", processConfig.gdsconfigformslave[iIndex]); 614 const sqlDropDownData = await props.getSqlDropDownData(sModelsId, "slave", processConfig.gdsconfigformslave[iIndex]);
616 - console.log("🚀 ~ addState.handleCalcPrice= ~ sqlDropDownData:", sqlDropDownData)  
617 dropDownDataProcessName = sqlDropDownData.dropDownData; 615 dropDownDataProcessName = sqlDropDownData.dropDownData;
618 processAssignAssort = processConfig.gdsconfigformslave[iIndex].sAssignField; 616 processAssignAssort = processConfig.gdsconfigformslave[iIndex].sAssignField;
619 } 617 }
@@ -845,7 +843,6 @@ const QuickQuoteEvent = props => { @@ -845,7 +843,6 @@ const QuickQuoteEvent = props => {
845 { ...props, ...newState, manyqtysConfig: state.manyConfig, manyqtysData: state.manyData }, 843 { ...props, ...newState, manyqtysConfig: state.manyConfig, manyqtysData: state.manyData },
846 true 844 true
847 ); 845 );
848 -  
849 if (commonUtils.isEmptyObject(result)) { 846 if (commonUtils.isEmptyObject(result)) {
850 setState(pre => ({ ...pre, calcPriceLoading: false })); 847 setState(pre => ({ ...pre, calcPriceLoading: false }));
851 return; 848 return;
@@ -1363,7 +1360,6 @@ const BoxComponent = props => { @@ -1363,7 +1360,6 @@ const BoxComponent = props => {
1363 onDataChange: (name, sFieldName, changeValue, sId, dropDownData, isWait) => { 1360 onDataChange: (name, sFieldName, changeValue, sId, dropDownData, isWait) => {
1364 const iIndex = slaveData.findIndex(item => item.sId === slaveRowData.sId); 1361 const iIndex = slaveData.findIndex(item => item.sId === slaveRowData.sId);
1365 const iIndex1 = slaveData[iIndex].sBackProcessData.findIndex(item => item[child.sName]); 1362 const iIndex1 = slaveData[iIndex].sBackProcessData.findIndex(item => item[child.sName]);
1366 - console.log("🚀 ~ child:", child)  
1367 slaveData[iIndex].sBackProcessData[iIndex1][sFieldName] = changeValue[sFieldName]; 1363 slaveData[iIndex].sBackProcessData[iIndex1][sFieldName] = changeValue[sFieldName];
1368 const { dManualLength, dManualWidth } = slaveData[iIndex].sBackProcessData[iIndex1]; 1364 const { dManualLength, dManualWidth } = slaveData[iIndex].sBackProcessData[iIndex1];
1369 if (dManualLength !== undefined && dManualWidth !== undefined) { 1365 if (dManualLength !== undefined && dManualWidth !== undefined) {
src/mobile/quotation/detailNew.jsx
1 import { useRef, useEffect, useState, useCallback, useMemo } from "react"; 1 import { useRef, useEffect, useState, useCallback, useMemo } from "react";
2 import { history } from "umi"; 2 import { history } from "umi";
3 import { Toast, Input, Tabs, Selector, Grid, Image, Button, Checkbox, Switch, Dialog } from "antd-mobile"; 3 import { Toast, Input, Tabs, Selector, Grid, Image, Button, Checkbox, Switch, Dialog } from "antd-mobile";
4 -import { AddOutline, MinusOutline } from "antd-mobile-icons"; 4 +import { AddOutline, MinusOutline, EditFill } from "antd-mobile-icons";
5 import commonConfig from "@/utils/config"; 5 import commonConfig from "@/utils/config";
6 import * as commonServices from "@/services/services"; 6 import * as commonServices from "@/services/services";
7 import * as commonFunc from "@/components/Common/commonFunc"; 7 import * as commonFunc from "@/components/Common/commonFunc";
8 import * as commonBusiness from "@/components/Common/commonBusiness"; 8 import * as commonBusiness from "@/components/Common/commonBusiness";
9 import styles from "./quotationDetail.less"; 9 import styles from "./quotationDetail.less";
10 import SelectInput from "../components/SelectInput"; 10 import SelectInput from "../components/SelectInput";
11 -import JsonData from "./index.json";  
12 -import PropsJson from "./props.json";  
13 -import ProcessData from "./process.json";  
14 import * as commonUtils from "@/utils/utils"; 11 import * as commonUtils from "@/utils/utils";
15 import Typesetting from "@/components/Common/Typesetting/typesetting"; 12 import Typesetting from "@/components/Common/Typesetting/typesetting";
16 import DynamicSVG from "@/components/Common/BoxDesignCompontent/svg"; 13 import DynamicSVG from "@/components/Common/BoxDesignCompontent/svg";
17 import ShowImgM from "@/components/Common/BoxShowImgMaterial/indexNew"; 14 import ShowImgM from "@/components/Common/BoxShowImgMaterial/indexNew";
  15 +import CommonBase from "@/components/Common/CommonBase";
18 const QuickQuoteEvent = props => { 16 const QuickQuoteEvent = props => {
19 const { location } = props; 17 const { location } = props;
20 const selectedNode = JSON.parse(location.state).quotationData; 18 const selectedNode = JSON.parse(location.state).quotationData;
@@ -116,7 +114,8 @@ const QuickQuoteEvent = props => { @@ -116,7 +114,8 @@ const QuickQuoteEvent = props => {
116 commonServices.getService(props.app.token, configUrls).then(({ data: configReturn }) => { 114 commonServices.getService(props.app.token, configUrls).then(({ data: configReturn }) => {
117 if (configReturn.code === 1) { 115 if (configReturn.code === 1) {
118 const formData = configReturn.dataset.rows[0].formData; 116 const formData = configReturn.dataset.rows[0].formData;
119 - setState(pre => ({ ...pre, formData, masterConfig: formData[0], processConfig: ProcessData })); 117 + // 需要查询到processConfig和materialsConfig
  118 + setState(pre => ({ ...pre, formData, masterConfig: formData[0], processConfig: {} }));
120 } 119 }
121 }); 120 });
122 }, []); 121 }, []);
@@ -167,7 +166,7 @@ const QuickQuoteEvent = props => { @@ -167,7 +166,7 @@ const QuickQuoteEvent = props => {
167 }; 166 };
168 167
169 if (name === "master") { 168 if (name === "master") {
170 - const masterDataNew = { ...masterData, ...changeValue }; 169 + let masterDataNew = { ...masterData, ...changeValue };
171 masterDataNew.handleType = masterDataNew.handleType || "update"; 170 masterDataNew.handleType = masterDataNew.handleType || "update";
172 masterDataNew.sId = masterDataNew.sId || commonUtils.createSid(); 171 masterDataNew.sId = masterDataNew.sId || commonUtils.createSid();
173 if (sFieldName === "dProductQty") { 172 if (sFieldName === "dProductQty") {
@@ -176,6 +175,9 @@ const QuickQuoteEvent = props => { @@ -176,6 +175,9 @@ const QuickQuoteEvent = props => {
176 dProductQty: changeValue.dProductQty, 175 dProductQty: changeValue.dProductQty,
177 })); 176 }));
178 } 177 }
  178 + if (sFieldName === "sCustomerName") {
  179 + masterDataNew = { ...masterDataNew, sCustomerId: changeValue.sId };
  180 + }
179 setState(pre => ({ ...pre, masterData: masterDataNew, ...extraState })); 181 setState(pre => ({ ...pre, masterData: masterDataNew, ...extraState }));
180 } else if (name.includes("slave")) { 182 } else if (name.includes("slave")) {
181 const boxModel = name.replace("slaveUp", "").replace("slaveDown", ""); 183 const boxModel = name.replace("slaveUp", "").replace("slaveDown", "");
@@ -297,8 +299,6 @@ const QuickQuoteEvent = props => { @@ -297,8 +299,6 @@ const QuickQuoteEvent = props => {
297 dMachineLength: slaveData[saveIndex].dWlcd, 299 dMachineLength: slaveData[saveIndex].dWlcd,
298 }; 300 };
299 } 301 }
300 - console.log("dropDownData", slaveData);  
301 -  
302 setState(pre => ({ ...pre, slaveData, ...extraState })); 302 setState(pre => ({ ...pre, slaveData, ...extraState }));
303 } else if (name === "finished") { 303 } else if (name === "finished") {
304 const { productProcessInfo = [] } = masterData; 304 const { productProcessInfo = [] } = masterData;
@@ -448,7 +448,6 @@ const QuickQuoteEvent = props => { @@ -448,7 +448,6 @@ const QuickQuoteEvent = props => {
448 448
449 const checkResult = Object.keys(mustFieldsMap).find(item => masterData[item] === undefined); 449 const checkResult = Object.keys(mustFieldsMap).find(item => masterData[item] === undefined);
450 if (checkResult) { 450 if (checkResult) {
451 - // message.error(mustFieldsMap[checkResult]);  
452 Toast.show({ 451 Toast.show({
453 icon: "fail", 452 icon: "fail",
454 content: mustFieldsMap[checkResult], 453 content: mustFieldsMap[checkResult],
@@ -523,6 +522,7 @@ const QuickQuoteEvent = props => { @@ -523,6 +522,7 @@ const QuickQuoteEvent = props => {
523 iPositiveColor: Number(item.sColor), 522 iPositiveColor: Number(item.sColor),
524 sPartsName: item.sBoxModel, 523 sPartsName: item.sBoxModel,
525 materialsInfo: item.materialsInfo?.filter(x => commonUtils.isNotEmptyObject(x)), 524 materialsInfo: item.materialsInfo?.filter(x => commonUtils.isNotEmptyObject(x)),
  525 + iPrintModePo: Number(item.value),
526 processInfo: 526 processInfo:
527 item.sBackProcessData?.map(item => ({ 527 item.sBackProcessData?.map(item => ({
528 ...item, 528 ...item,
@@ -536,14 +536,13 @@ const QuickQuoteEvent = props => { @@ -536,14 +536,13 @@ const QuickQuoteEvent = props => {
536 delete paramMap.sPartsStyle; 536 delete paramMap.sPartsStyle;
537 } 537 }
538 // 先用好的数据模拟后面在调整 538 // 先用好的数据模拟后面在调整
539 - const newParamMap = JsonData; 539 + // const newParamMap = JsonData;
540 const url = `${commonConfig.server_host}calculationStd/countMoney?sModelsId=${sModelsId}`; 540 const url = `${commonConfig.server_host}calculationStd/countMoney?sModelsId=${sModelsId}`;
541 - const dataReturn = (await commonServices.postValueService(token, newParamMap, url)).data; 541 + const dataReturn = (await commonServices.postValueService(token, paramMap, url)).data;
542 542
543 if (dataReturn.code === 1) { 543 if (dataReturn.code === 1) {
544 - const { app, sModelsId } = props;  
545 - const { slaveConfig, masterData: masterData1, materialsConfig, processConfig } = state;  
546 - console.log("🚀 ~ addState.handleCalcPrice= ~ state:", materialsConfig,slaveConfig) 544 + const { app, sModelsId, materialsConfig } = props;
  545 + const { slaveConfig, masterData: masterData1, processConfig } = state;
547 const { productClassify, partsNewInfo = [], productProcessInfo, partsInfo: partsOldInfo } = dataReturn.dataset.rows[0]; 546 const { productClassify, partsNewInfo = [], productProcessInfo, partsInfo: partsOldInfo } = dataReturn.dataset.rows[0];
548 547
549 const slaveData = []; 548 const slaveData = [];
@@ -593,7 +592,10 @@ const QuickQuoteEvent = props => { @@ -593,7 +592,10 @@ const QuickQuoteEvent = props => {
593 partsOldInfo.forEach(item => { 592 partsOldInfo.forEach(item => {
594 if (commonUtils.isNotEmptyObject(item) && !commonUtils.isEmpty(item.errorFlag)) { 593 if (commonUtils.isNotEmptyObject(item) && !commonUtils.isEmpty(item.errorFlag)) {
595 errorFlag = true; 594 errorFlag = true;
596 - props.getServiceError({ msg: `${item.sPartsName} ${item.errorFlag}` }); 595 + // props.getServiceError({ msg: `${item.sPartsName} ${item.errorFlag}` });
  596 + Toast.show({
  597 + content: `${item.sPartsName} ${item.errorFlag}`,
  598 + });
597 } 599 }
598 }); 600 });
599 } 601 }
@@ -635,9 +637,7 @@ const QuickQuoteEvent = props => { @@ -635,9 +637,7 @@ const QuickQuoteEvent = props => {
635 const iIndex = processConfig.gdsconfigformslave.findIndex(item => item.sName === "sProcessName"); 637 const iIndex = processConfig.gdsconfigformslave.findIndex(item => item.sName === "sProcessName");
636 if (iIndex > -1) { 638 if (iIndex > -1) {
637 const sqlDropDownData = await props.getSqlDropDownData(sModelsId, "slave", processConfig.gdsconfigformslave[iIndex]); 639 const sqlDropDownData = await props.getSqlDropDownData(sModelsId, "slave", processConfig.gdsconfigformslave[iIndex]);
638 - if (sqlDropDownData) {  
639 - dropDownDataProcessName = sqlDropDownData.dropDownData;  
640 - } 640 + dropDownDataProcessName = sqlDropDownData.dropDownData;
641 processAssignAssort = processConfig.gdsconfigformslave[iIndex].sAssignField; 641 processAssignAssort = processConfig.gdsconfigformslave[iIndex].sAssignField;
642 } 642 }
643 } 643 }
@@ -860,9 +860,7 @@ const QuickQuoteEvent = props => { @@ -860,9 +860,7 @@ const QuickQuoteEvent = props => {
860 Loading: false, 860 Loading: false,
861 // quickQuoteModel: false, 861 // quickQuoteModel: false,
862 }; 862 };
863 -  
864 delete newState.masterData.sQuoConfig; 863 delete newState.masterData.sQuoConfig;
865 -  
866 const result = await props.handleCalculation( 864 const result = await props.handleCalculation(
867 false, 865 false,
868 { ...props, ...newState, manyqtysConfig: state.manyConfig, manyqtysData: state.manyData }, 866 { ...props, ...newState, manyqtysConfig: state.manyConfig, manyqtysData: state.manyData },
@@ -879,7 +877,6 @@ const QuickQuoteEvent = props => { @@ -879,7 +877,6 @@ const QuickQuoteEvent = props => {
879 ...item, 877 ...item,
880 sParentId: newState.masterData.sId, 878 sParentId: newState.masterData.sId,
881 })); 879 }));
882 -  
883 setState(pre => { 880 setState(pre => {
884 const preNew = { ...pre, manyData: result.manyqtysData, calcPriceLoading: false, calcPriceFinished: true }; 881 const preNew = { ...pre, manyData: result.manyqtysData, calcPriceLoading: false, calcPriceFinished: true };
885 const stateNew = { ...newState, ...result }; 882 const stateNew = { ...newState, ...result };
@@ -932,9 +929,174 @@ const QuickQuoteEvent = props => { @@ -932,9 +929,174 @@ const QuickQuoteEvent = props => {
932 masterConfig: masterConfig && masterConfig.length ? masterConfig[0] : {}, 929 masterConfig: masterConfig && masterConfig.length ? masterConfig[0] : {},
933 }; 930 };
934 }; 931 };
935 - 932 +const handleMaterialsChange = async (tableDataRow, sModelsId, masterData, changeValue, sFieldName, app, token, models) => {
  933 + const { sComputeId, sConversionComputeId, sReConversionComputeId } = tableDataRow;
  934 + if (
  935 + sFieldName === "sMaterialsNo" ||
  936 + sFieldName === "sMaterialsName" ||
  937 + sFieldName === "dAuxiliaryQty" ||
  938 + sFieldName === "dReelAuxiliaryQty" ||
  939 + sFieldName === "dConversionQty" ||
  940 + sFieldName === "sMaterialsStyle" ||
  941 + sFieldName === "dProductQty"
  942 + ) {
  943 + if (sFieldName === "dReelAuxiliaryQty") {
  944 + if (tableDataRow.sMaterialsUnit === "吨" && tableDataRow.bReel && tableDataRow.dGramWeight > 0) {
  945 + tableDataRow = commonBusiness.getMaterialsQty(
  946 + app,
  947 + { ...tableDataRow, sMaterialsStyle: tableDataRow.sReelMaterialsStyle },
  948 + "dReelAuxiliaryQty",
  949 + "dMaterialsQty"
  950 + );
  951 + tableDataRow.dAuxiliaryQty = tableDataRow.dMaterialsQty;
  952 + tableDataRow.sMaterialsStyle =
  953 + tableDataRow.sMaterialsStyle !== undefined && tableDataRow.sMaterialsStyle.split("*").length > 1
  954 + ? tableDataRow.sMaterialsStyle.split("*")[0]
  955 + : tableDataRow.sMaterialsStyle;
  956 + tableDataRow.sAuxiliaryUnit = tableDataRow.sMaterialsUnit;
  957 + } else if (tableDataRow.sMaterialsUnit.toUpper() === "M2" && tableDataRow.bReel) {
  958 + tableDataRow = commonBusiness.getMaterialsQty(app, tableDataRow, "dReelAuxiliaryQty", "dMaterialsQty");
  959 + tableDataRow.dAuxiliaryQty = tableDataRow.dReelAuxiliaryQty;
  960 + } else {
  961 + tableDataRow.dAuxiliaryQty = tableDataRow.dReelAuxiliaryQty;
  962 + }
  963 + }
  964 + if (commonUtils.isEmpty(sComputeId) && sFieldName !== "dConversionQty") {
  965 + if (sFieldName === "dProductQty") {
  966 + tableDataRow = commonBusiness.getMaterialsQty(app, tableDataRow, "dProductQty", "dMaterialsQty");
  967 + } else {
  968 + tableDataRow = commonBusiness.getMaterialsQty(app, tableDataRow, "dAuxiliaryQty", "dMaterialsQty");
  969 + }
  970 + } else if (!commonUtils.isEmpty(sComputeId)) {
  971 + tableDataRow.dMaterialsQty = await commonBusiness.getFormulaValue({
  972 + token,
  973 + sModelsId,
  974 + masterData,
  975 + tableDataRow,
  976 + sComputeId,
  977 + });
  978 + }
  979 + if (sFieldName !== "dConversionQty" && !commonUtils.isEmpty(sConversionComputeId)) {
  980 + tableDataRow.dConversionQty = await commonBusiness.getFormulaValue({
  981 + token,
  982 + sModelsId,
  983 + masterData,
  984 + tableDataRow,
  985 + sComputeId: sConversionComputeId,
  986 + });
  987 + }
  988 + } else if (sFieldName === "dMaterialsQty") {
  989 + const { sReComputeId } = tableDataRow;
  990 + if (commonUtils.isEmpty(sReComputeId) && tableDataRow.bInverse) {
  991 + tableDataRow = commonBusiness.getAuxiliaryQty(app, tableDataRow, sFieldName, "dAuxiliaryQty");
  992 + } else if (tableDataRow.bInverse) {
  993 + tableDataRow.dAuxiliaryQty = await commonBusiness.getFormulaValue({
  994 + token,
  995 + sModelsId,
  996 + masterData,
  997 + tableDataRow,
  998 + sComputeId: sReComputeId,
  999 + });
  1000 + if (commonUtils.isNotEmptyArr(tableDataRow.dAuxiliaryQty) && tableDataRow.dAuxiliaryQty !== 0) {
  1001 + tableDataRow.dProductQty = tableDataRow.dAuxiliaryQty;
  1002 + }
  1003 + }
  1004 + if (!commonUtils.isEmpty(sReConversionComputeId)) {
  1005 + tableDataRow.dConversionQty = await commonBusiness.getFormulaValue({
  1006 + token,
  1007 + sModelsId,
  1008 + masterData,
  1009 + tableDataRow,
  1010 + sComputeId: sReConversionComputeId,
  1011 + });
  1012 + }
  1013 + } else if (sFieldName === "dAuxiliaryLossQty") {
  1014 + if (commonUtils.isEmpty(sComputeId)) {
  1015 + tableDataRow = commonBusiness.getMaterialsQty(app, tableDataRow, sFieldName, "dLossQty");
  1016 + } else {
  1017 + tableDataRow.dLossQty = await commonBusiness.getFormulaValue({
  1018 + token,
  1019 + sModelsId,
  1020 + masterData,
  1021 + tableDataRow,
  1022 + sComputeId,
  1023 + });
  1024 + }
  1025 + if (!commonUtils.isEmpty(tableDataRow.dSrcSurplusAuxiliaryQty)) {
  1026 + tableDataRow.dAuxiliaryQty = tableDataRow.dSrcSurplusAuxiliaryQty - tableDataRow.dAuxiliaryLossQty;
  1027 + tableDataRow.dMaterialsQty = commonUtils.convertFixNum(tableDataRow.dSrcSurplusQty - tableDataRow.dLossQty, 6);
  1028 + }
  1029 + } else if (sFieldName === "dLossQty") {
  1030 + const { sReComputeId } = tableDataRow;
  1031 + if (commonUtils.isEmpty(sReComputeId)) {
  1032 + tableDataRow = commonBusiness.getAuxiliaryQty(app, tableDataRow, sFieldName, "dAuxiliaryLossQty");
  1033 + } else {
  1034 + tableDataRow.dAuxiliaryLossQty = await commonBusiness.getFormulaValue({
  1035 + token,
  1036 + sModelsId,
  1037 + masterData,
  1038 + tableDataRow,
  1039 + sComputeId: sReComputeId,
  1040 + });
  1041 + }
  1042 + if (!commonUtils.isEmpty(tableDataRow.dSrcSurplusAuxiliaryQty)) {
  1043 + tableDataRow.dAuxiliaryQty = tableDataRow.dSrcSurplusAuxiliaryQty - tableDataRow.dAuxiliaryLossQty;
  1044 + tableDataRow.dMaterialsQty = tableDataRow.dSrcSurplusQty - tableDataRow.dLossQty;
  1045 + }
  1046 + } else if (sFieldName === "sProcessId" || sFieldName === "sProcessNo" || sFieldName === "sProcessName") {
  1047 + const sProcessId = changeValue.sProcessId;
  1048 + const url = `${commonConfig.server_host}process/outsideprocess?sModelsId=${sModelsId}&sProcessId=${sProcessId}`;
  1049 + const dataReturn = (await commonServices.getService(token, url)).data;
  1050 + if (dataReturn.code === 1) {
  1051 + if (commonUtils.isNotEmptyArr(dataReturn.dataset.rows)) {
  1052 + tableDataRow.dMaterialsPrice = dataReturn.dataset.rows[0].dMaterialsPrice;
  1053 + }
  1054 + tableDataRow = commonBusiness.getCalculateAllMoney(app, models, "dMaterialsPrice", masterData, tableDataRow);
  1055 + }
  1056 + }
  1057 + return tableDataRow;
  1058 +};
  1059 +const sortData = (tableData, processData) => {
  1060 + processData.sort((g1, g2) => {
  1061 + const iIndex1 = tableData.findIndex(item => item.sId === g1.sControlId) === -1 ? 999 : tableData.findIndex(item => item.sId === g1.sControlId);
  1062 + let sPartOrder1 = `0000${iIndex1}`;
  1063 + sPartOrder1 = sPartOrder1.substring(sPartOrder1.length - 3);
  1064 + let sOrder1 = `000${g1.iOrder}`;
  1065 + sOrder1 = sOrder1.substring(sOrder1.length - 3);
  1066 +
  1067 + const iIndex2 = tableData.findIndex(item => item.sId === g2.sControlId) === -1 ? 999 : tableData.findIndex(item => item.sId === g2.sControlId);
  1068 + let sPartOrder2 = `0000${iIndex2}`;
  1069 + sPartOrder2 = sPartOrder2.substring(sPartOrder2.length - 3);
  1070 + let sOrder2 = `000${g2.iOrder}`;
  1071 + sOrder2 = sOrder2.substring(sOrder2.length - 3);
  1072 + return parseInt(sPartOrder1 + g1.sType + sOrder1, 10) - parseInt(sPartOrder2 + g2.sType + sOrder2, 10);
  1073 + });
  1074 + return processData;
  1075 +};
936 const QuotationAllprogressDetail = baseProps => { 1076 const QuotationAllprogressDetail = baseProps => {
937 - const { location, quotationData, app } = baseProps; 1077 + const { location, quotationData, app, sModelsId } = baseProps;
  1078 + const getSqlDropDownDatas = async (formId, name, showConfig, record, sKeyUpFilterName, pageNum) => {
  1079 + const url = `${commonConfig.server_host}business/getSelectLimit/${showConfig.sId}?sModelsId=${sModelsId}`;
  1080 + const body = {
  1081 + sSqlCondition: {
  1082 + sSqlCondition: "",
  1083 + },
  1084 + sKeyUpFilterName: "",
  1085 + pageNum: 1,
  1086 + pageSize: 20,
  1087 + };
  1088 + const retrunData = await commonServices.postValueService(propss.token, body, url);
  1089 + if (retrunData.data.code === 1) {
  1090 + /* 获取数据集 */
  1091 + const { rows, totalPageCount, currentPageNo, totalCount } = retrunData.data.dataset;
  1092 + return {
  1093 + dropDownData: rows,
  1094 + totalPageCount,
  1095 + currentPageNo,
  1096 + totalCount,
  1097 + };
  1098 + }
  1099 + };
938 // 处理 formData 1100 // 处理 formData
939 let propss = { 1101 let propss = {
940 ...baseProps, 1102 ...baseProps,
@@ -945,25 +1107,16 @@ const QuotationAllprogressDetail = baseProps => { @@ -945,25 +1107,16 @@ const QuotationAllprogressDetail = baseProps => {
945 onSaveState: newState => { 1107 onSaveState: newState => {
946 propss = { ...propss, ...newState }; 1108 propss = { ...propss, ...newState };
947 }, 1109 },
948 - getSqlDropDownData: async sId => {  
949 - const url = `${commonConfig.server_host}business/getSelectLimit/${sId}`;  
950 - const body = {  
951 - sSqlCondition: {  
952 - sSqlCondition: "",  
953 - },  
954 - sKeyUpFilterName: "",  
955 - pageNum: 1,  
956 - pageSize: 20,  
957 - };  
958 - const retrunData = await commonServices.postValueService(propss.token, body, url);  
959 - console.log("🚀 ~ retrunData:", retrunData);  
960 - }, 1110 + getSqlDropDownData: getSqlDropDownDatas,
  1111 + onMaterialsChange: handleMaterialsChange,
  1112 + sortData,
961 }; 1113 };
962 1114
963 const props = QuickQuoteEvent(propss); 1115 const props = QuickQuoteEvent(propss);
964 const { selectedNode } = props; 1116 const { selectedNode } = props;
965 const { showName, sUnit } = quotationData; 1117 const { showName, sUnit } = quotationData;
966 const timeRef = useRef(0); 1118 const timeRef = useRef(0);
  1119 +
967 useEffect(() => { 1120 useEffect(() => {
968 const getDropDownData = async props => { 1121 const getDropDownData = async props => {
969 props.setState(pre => { 1122 props.setState(pre => {
@@ -1072,8 +1225,11 @@ const QuotationDetail = props => { @@ -1072,8 +1225,11 @@ const QuotationDetail = props => {
1072 tableName: "master", 1225 tableName: "master",
1073 }; 1226 };
1074 return ( 1227 return (
1075 - <div>  
1076 - <div>{selectedNode?.showName || "Loading..."}</div> 1228 + <div className={styles.quotationBody}>
  1229 + <div className={styles.boxTitle}>
  1230 + {selectedNode?.showName || "Loading..."}
  1231 + <EditFill color="#BFBFBF" style={{ marginLeft: "1rem" }} />
  1232 + </div>
1077 <div> 1233 <div>
1078 <MasterComponent {...viewProps} /> 1234 <MasterComponent {...viewProps} />
1079 </div> 1235 </div>
@@ -1132,11 +1288,11 @@ const MasterComponent = props =&gt; { @@ -1132,11 +1288,11 @@ const MasterComponent = props =&gt; {
1132 return ( 1288 return (
1133 <div> 1289 <div>
1134 <div className={styles.customer}> 1290 <div className={styles.customer}>
1135 - <div>{customerProps.formData?.showName}</div> 1291 + <div>{customerProps.itemDetail?.showName}</div>
1136 <SelectInput {...customerProps} /> 1292 <SelectInput {...customerProps} />
1137 </div> 1293 </div>
1138 <div className={styles.customer}> 1294 <div className={styles.customer}>
1139 - <div>{productProps.formData?.showName}</div> 1295 + <div>{productProps.itemDetail?.showName}</div>
1140 <SelectInput {...productProps} /> 1296 <SelectInput {...productProps} />
1141 </div> 1297 </div>
1142 <div className={styles.customer}> 1298 <div className={styles.customer}>
@@ -1227,7 +1383,6 @@ const BoxComponent = props =&gt; { @@ -1227,7 +1383,6 @@ const BoxComponent = props =&gt; {
1227 const { state, boxModel } = props; 1383 const { state, boxModel } = props;
1228 const { activeKey, slaveConfig, masterData, selectedNode, boxConfig, downAbleConfigs = [], slaveData } = state || {}; 1384 const { activeKey, slaveConfig, masterData, selectedNode, boxConfig, downAbleConfigs = [], slaveData } = state || {};
1229 const slaveRowData = slaveData.find(item => item.sTreeNodeName === selectedNode.showName && item.sBoxModel === boxModel) || {}; 1385 const slaveRowData = slaveData.find(item => item.sTreeNodeName === selectedNode.showName && item.sBoxModel === boxModel) || {};
1230 -  
1231 const { sModelsId } = props; 1386 const { sModelsId } = props;
1232 const [selectList, setSelectList] = useState([]); 1387 const [selectList, setSelectList] = useState([]);
1233 const [boxTypeList, setBoxTypeList] = useState([]); 1388 const [boxTypeList, setBoxTypeList] = useState([]);
@@ -1577,7 +1732,6 @@ const BoxComponent = props =&gt; { @@ -1577,7 +1732,6 @@ const BoxComponent = props =&gt; {
1577 height: 150, 1732 height: 150,
1578 size: 9, 1733 size: 9,
1579 }; 1734 };
1580 - console.log(showImgMProps, "showImgMProps");  
1581 1735
1582 const handleChange = v => { 1736 const handleChange = v => {
1583 if (v.length) { 1737 if (v.length) {
@@ -1695,6 +1849,7 @@ const BoxComponent = props =&gt; { @@ -1695,6 +1849,7 @@ const BoxComponent = props =&gt; {
1695 value={selected ? [selected] : []} 1849 value={selected ? [selected] : []}
1696 onChange={v => handleChange(v)} 1850 onChange={v => handleChange(v)}
1697 /> 1851 />
  1852 + <div className={styles.line}></div>
1698 <div> 1853 <div>
1699 <Grid columns={4} gap={8}> 1854 <Grid columns={4} gap={8}>
1700 {upViewProps 1855 {upViewProps
@@ -1716,7 +1871,10 @@ const BoxComponent = props =&gt; { @@ -1716,7 +1871,10 @@ const BoxComponent = props =&gt; {
1716 {slaveRowData && slaveRowData.sPackPath ? <Image src={slaveRowData.sPackPath} width={125} height={125} fit="fill" /> : ""} 1871 {slaveRowData && slaveRowData.sPackPath ? <Image src={slaveRowData.sPackPath} width={125} height={125} fit="fill" /> : ""}
1717 </div> 1872 </div>
1718 <div> 1873 <div>
1719 - <div>印刷信息</div> 1874 + <div className={styles.boxTitle}>
  1875 + 印刷信息
  1876 + <EditFill color="#BFBFBF" style={{ marginLeft: "1rem" }} />
  1877 + </div>
1720 <Grid columns={3} gap={8}> 1878 <Grid columns={3} gap={8}>
1721 {upViewProps12 1879 {upViewProps12
1722 ? upViewProps12.viewConfigs.map(x => ( 1880 ? upViewProps12.viewConfigs.map(x => (
@@ -1731,7 +1889,11 @@ const BoxComponent = props =&gt; { @@ -1731,7 +1889,11 @@ const BoxComponent = props =&gt; {
1731 </Grid> 1889 </Grid>
1732 </div> 1890 </div>
1733 <div> 1891 <div>
1734 - <div>拼版信息</div> 1892 + <div className={styles.boxTitle}>
  1893 + 拼版信息
  1894 + <EditFill color="#BFBFBF" style={{ marginLeft: "1rem" }} />
  1895 + </div>
  1896 +
1735 <Grid columns={3} gap={8}> 1897 <Grid columns={3} gap={8}>
1736 {upViewProps20 1898 {upViewProps20
1737 ? upViewProps20.viewConfigs.map(x => ( 1899 ? upViewProps20.viewConfigs.map(x => (
@@ -1757,7 +1919,11 @@ const BoxComponent = props =&gt; { @@ -1757,7 +1919,11 @@ const BoxComponent = props =&gt; {
1757 <MaterialsComponent {...props} slaveRowData={slaveRowData} boxModel={boxModel} /> 1919 <MaterialsComponent {...props} slaveRowData={slaveRowData} boxModel={boxModel} />
1758 </div> 1920 </div>
1759 <div> 1921 <div>
1760 - <div>后道参数</div> 1922 + <div className={styles.boxTitle}>
  1923 + 后道参数
  1924 + <EditFill color="#BFBFBF" style={{ marginLeft: "1rem" }} />
  1925 + </div>
  1926 +
1761 {downViewProps.viewConfigs.map((x, i) => ( 1927 {downViewProps.viewConfigs.map((x, i) => (
1762 <div> 1928 <div>
1763 <div className={styles.backBox}> 1929 <div className={styles.backBox}>
@@ -1777,7 +1943,11 @@ const BoxComponent = props =&gt; { @@ -1777,7 +1943,11 @@ const BoxComponent = props =&gt; {
1777 </div> 1943 </div>
1778 <div> 1944 <div>
1779 <div className={styles.projectBtn}> 1945 <div className={styles.projectBtn}>
1780 - 多数量报价 1946 + <div className={styles.boxTitle} style={{ marginTop: "2rem" }}>
  1947 + 多数量报价
  1948 + <EditFill color="#BFBFBF" style={{ marginLeft: "1rem" }} />
  1949 + </div>
  1950 +
1781 {/* <Button color="primary" fill="solid" loading={loading} onClick={props.onAdd}> 1951 {/* <Button color="primary" fill="solid" loading={loading} onClick={props.onAdd}>
1782 新报价 1952 新报价
1783 </Button> 1953 </Button>
@@ -1899,18 +2069,31 @@ const MaterialsComponent = props =&gt; { @@ -1899,18 +2069,31 @@ const MaterialsComponent = props =&gt; {
1899 tableName: `slaveUp${boxModel}`, 2069 tableName: `slaveUp${boxModel}`,
1900 onDataChange: (name, sFieldName, changeValue, sId, dropDownData, isWait) => { 2070 onDataChange: (name, sFieldName, changeValue, sId, dropDownData, isWait) => {
1901 const iIndex = slaveData.findIndex(item => item.sId === slaveRowData.sId); 2071 const iIndex = slaveData.findIndex(item => item.sId === slaveRowData.sId);
  2072 + const { sMaterialsName, sMaterialsNo, sMaterialsId, sAuxiliaryUnit, sMaterialsUnit, dGramWeight, sMaterialsType, dWlkd, dWlcd } = changeValue;
  2073 + const masterials = {
  2074 + sMaterialsName,
  2075 + sMaterialsNo,
  2076 + sMaterialsId,
  2077 + sAuxiliaryUnit,
  2078 + sMaterialsUnit,
  2079 + dGramWeight,
  2080 + sMaterialsType,
  2081 + dWlkd,
  2082 + dWlcd,
  2083 + };
1902 if (iIndex !== -1) { 2084 if (iIndex !== -1) {
1903 - slaveData[iIndex].materialsInfo = materialsInfo.map((item, i) => (i === index ? { ...item, ...changeValue } : item)); 2085 + slaveData[iIndex].materialsInfo = materialsInfo.map((item, i) => (i === index ? { ...item, ...masterials } : item));
1904 slaveRowData = slaveData[iIndex]; 2086 slaveRowData = slaveData[iIndex];
1905 } else { 2087 } else {
1906 const { selectedNode = {} } = state; 2088 const { selectedNode = {} } = state;
1907 const { showName: sTreeNodeName } = selectedNode; 2089 const { showName: sTreeNodeName } = selectedNode;
  2090 +
1908 slaveData.push({ 2091 slaveData.push({
1909 sId: commonUtils.createSid(), 2092 sId: commonUtils.createSid(),
1910 handleType: "add", 2093 handleType: "add",
1911 sBoxModel: boxModel, 2094 sBoxModel: boxModel,
1912 sTreeNodeName, 2095 sTreeNodeName,
1913 - materialsInfo: materialsInfo.map((item, i) => (i === index ? { ...item, ...changeValue } : item)), 2096 + materialsInfo: materialsInfo.map((item, i) => (i === index ? { ...item, ...masterials } : item)),
1914 }); 2097 });
1915 } 2098 }
1916 props.setState(pre => ({ ...pre, slaveData, slaveRowData, ...extraState })); 2099 props.setState(pre => ({ ...pre, slaveData, slaveRowData, ...extraState }));
src/mobile/quotation/index.css
@@ -5,6 +5,7 @@ @@ -5,6 +5,7 @@
5 display: flex; 5 display: flex;
6 align-items: center; 6 align-items: center;
7 justify-content: center; 7 justify-content: center;
  8 + overflow: hidden;
8 } 9 }
9 .quotationBox .quotationNavigation { 10 .quotationBox .quotationNavigation {
10 width: 30%; 11 width: 30%;
@@ -16,6 +17,7 @@ @@ -16,6 +17,7 @@
16 .quotationBox .quotationContent { 17 .quotationBox .quotationContent {
17 width: 70%; 18 width: 70%;
18 height: 100%; 19 height: 100%;
  20 + overflow-y: auto;
19 } 21 }
20 .quotationBox .quotationContent .contentItem { 22 .quotationBox .quotationContent .contentItem {
21 width: 92%; 23 width: 92%;
src/mobile/quotation/index.jsx
@@ -118,7 +118,7 @@ const ContentComponent = props =&gt; { @@ -118,7 +118,7 @@ const ContentComponent = props =&gt; {
118 <div className={styles.content}> 118 <div className={styles.content}>
119 {contentList.map(item => ( 119 {contentList.map(item => (
120 <div key={item.key} className={styles.contentItem} onClick={handleGridClick(item)}> 120 <div key={item.key} className={styles.contentItem} onClick={handleGridClick(item)}>
121 - <img src={Icon5} alt="" className={styles.contentItemImg} /> 121 + <img src={'http://8.130.144.93:8088/xlyEntry/file/downloadLogo?sLogoName=logosPackPath%E9%A3%9E%E6%9C%BA%E7%9B%92&date=1747049329258'} alt="" className={styles.contentItemImg} />
122 <span className={styles.contentItemTitle}>{item.showName}</span> 122 <span className={styles.contentItemTitle}>{item.showName}</span>
123 </div> 123 </div>
124 ))} 124 ))}
src/mobile/quotation/index.less
@@ -6,6 +6,7 @@ @@ -6,6 +6,7 @@
6 display: flex; 6 display: flex;
7 align-items: center; 7 align-items: center;
8 justify-content: center; 8 justify-content: center;
  9 + overflow: hidden;
9 .quotationNavigation { 10 .quotationNavigation {
10 width: 30%; 11 width: 30%;
11 height: 100%; 12 height: 100%;
@@ -16,6 +17,7 @@ @@ -16,6 +17,7 @@
16 .quotationContent { 17 .quotationContent {
17 width: 70%; 18 width: 70%;
18 height: 100%; 19 height: 100%;
  20 + overflow-y: auto;
19 .contentItem { 21 .contentItem {
20 width: 92%; 22 width: 92%;
21 height: 7.5rem; 23 height: 7.5rem;
src/mobile/quotation/quotationDetail.css
@@ -111,3 +111,18 @@ @@ -111,3 +111,18 @@
111 align-items: center; 111 align-items: center;
112 justify-content: space-between; 112 justify-content: space-between;
113 } 113 }
  114 +.boxTitle {
  115 + font-size: 1.5rem;
  116 + font-weight: 700;
  117 + margin-bottom: 2rem;
  118 + margin-top: 1rem;
  119 +}
  120 +.quotationBody {
  121 + font-size: 1.25rem;
  122 +}
  123 +.quotationBody .line {
  124 + width: 100%;
  125 + height: 1px;
  126 + margin-top: 1rem;
  127 + background-color: #dededf;
  128 +}
src/mobile/quotation/quotationDetail.less
@@ -119,4 +119,19 @@ @@ -119,4 +119,19 @@
119 display: flex; 119 display: flex;
120 align-items: center; 120 align-items: center;
121 justify-content: space-between; 121 justify-content: space-between;
  122 +}
  123 +.boxTitle{
  124 + font-size: 1.5rem;
  125 + font-weight: 700;
  126 + margin-bottom: 2rem;
  127 + margin-top: 1rem;
  128 +}
  129 +.quotationBody{
  130 + font-size: 1.25rem;
  131 + .line{
  132 + width: 100%;
  133 + height: 1px;
  134 + margin-top: 1rem;
  135 + background-color: #dededf;
  136 + }
122 } 137 }
123 \ No newline at end of file 138 \ No newline at end of file