Commit 86a05485500eba6e03535df30cab66d5520afc1e

Authored by 陈鑫涛
1 parent fe5d2f05

快速报价核价

src/components/QuickQuote/index.jsx
... ... @@ -17,7 +17,6 @@ import Typesetting from "@/components/Common/Typesetting/typesetting";
17 17 import DynamicSVG from "@/components/Common/BoxDesignCompontent/svg";
18 18 // 事件
19 19 const QuickQuoteEvent = props => {
20   - console.log("🚀 ~ QuickQuoteEvent:", props)
21 20 const addState = {};
22 21  
23 22 addState.onGetFilterState = (state, bInit) => {
... ... @@ -613,7 +612,6 @@ const QuickQuoteEvent = props => {
613 612 const iIndex = processConfig.gdsconfigformslave.findIndex(item => item.sName === "sProcessName");
614 613 if (iIndex > -1) {
615 614 const sqlDropDownData = await props.getSqlDropDownData(sModelsId, "slave", processConfig.gdsconfigformslave[iIndex]);
616   - console.log("🚀 ~ addState.handleCalcPrice= ~ sqlDropDownData:", sqlDropDownData)
617 615 dropDownDataProcessName = sqlDropDownData.dropDownData;
618 616 processAssignAssort = processConfig.gdsconfigformslave[iIndex].sAssignField;
619 617 }
... ... @@ -845,7 +843,6 @@ const QuickQuoteEvent = props => {
845 843 { ...props, ...newState, manyqtysConfig: state.manyConfig, manyqtysData: state.manyData },
846 844 true
847 845 );
848   -
849 846 if (commonUtils.isEmptyObject(result)) {
850 847 setState(pre => ({ ...pre, calcPriceLoading: false }));
851 848 return;
... ... @@ -1363,7 +1360,6 @@ const BoxComponent = props => {
1363 1360 onDataChange: (name, sFieldName, changeValue, sId, dropDownData, isWait) => {
1364 1361 const iIndex = slaveData.findIndex(item => item.sId === slaveRowData.sId);
1365 1362 const iIndex1 = slaveData[iIndex].sBackProcessData.findIndex(item => item[child.sName]);
1366   - console.log("🚀 ~ child:", child)
1367 1363 slaveData[iIndex].sBackProcessData[iIndex1][sFieldName] = changeValue[sFieldName];
1368 1364 const { dManualLength, dManualWidth } = slaveData[iIndex].sBackProcessData[iIndex1];
1369 1365 if (dManualLength !== undefined && dManualWidth !== undefined) {
... ...
src/mobile/quotation/detailNew.jsx
1 1 import { useRef, useEffect, useState, useCallback, useMemo } from "react";
2 2 import { history } from "umi";
3 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 5 import commonConfig from "@/utils/config";
6 6 import * as commonServices from "@/services/services";
7 7 import * as commonFunc from "@/components/Common/commonFunc";
8 8 import * as commonBusiness from "@/components/Common/commonBusiness";
9 9 import styles from "./quotationDetail.less";
10 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 11 import * as commonUtils from "@/utils/utils";
15 12 import Typesetting from "@/components/Common/Typesetting/typesetting";
16 13 import DynamicSVG from "@/components/Common/BoxDesignCompontent/svg";
17 14 import ShowImgM from "@/components/Common/BoxShowImgMaterial/indexNew";
  15 +import CommonBase from "@/components/Common/CommonBase";
18 16 const QuickQuoteEvent = props => {
19 17 const { location } = props;
20 18 const selectedNode = JSON.parse(location.state).quotationData;
... ... @@ -116,7 +114,8 @@ const QuickQuoteEvent = props => {
116 114 commonServices.getService(props.app.token, configUrls).then(({ data: configReturn }) => {
117 115 if (configReturn.code === 1) {
118 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 166 };
168 167  
169 168 if (name === "master") {
170   - const masterDataNew = { ...masterData, ...changeValue };
  169 + let masterDataNew = { ...masterData, ...changeValue };
171 170 masterDataNew.handleType = masterDataNew.handleType || "update";
172 171 masterDataNew.sId = masterDataNew.sId || commonUtils.createSid();
173 172 if (sFieldName === "dProductQty") {
... ... @@ -176,6 +175,9 @@ const QuickQuoteEvent = props => {
176 175 dProductQty: changeValue.dProductQty,
177 176 }));
178 177 }
  178 + if (sFieldName === "sCustomerName") {
  179 + masterDataNew = { ...masterDataNew, sCustomerId: changeValue.sId };
  180 + }
179 181 setState(pre => ({ ...pre, masterData: masterDataNew, ...extraState }));
180 182 } else if (name.includes("slave")) {
181 183 const boxModel = name.replace("slaveUp", "").replace("slaveDown", "");
... ... @@ -297,8 +299,6 @@ const QuickQuoteEvent = props => {
297 299 dMachineLength: slaveData[saveIndex].dWlcd,
298 300 };
299 301 }
300   - console.log("dropDownData", slaveData);
301   -
302 302 setState(pre => ({ ...pre, slaveData, ...extraState }));
303 303 } else if (name === "finished") {
304 304 const { productProcessInfo = [] } = masterData;
... ... @@ -448,7 +448,6 @@ const QuickQuoteEvent = props => {
448 448  
449 449 const checkResult = Object.keys(mustFieldsMap).find(item => masterData[item] === undefined);
450 450 if (checkResult) {
451   - // message.error(mustFieldsMap[checkResult]);
452 451 Toast.show({
453 452 icon: "fail",
454 453 content: mustFieldsMap[checkResult],
... ... @@ -523,6 +522,7 @@ const QuickQuoteEvent = props => {
523 522 iPositiveColor: Number(item.sColor),
524 523 sPartsName: item.sBoxModel,
525 524 materialsInfo: item.materialsInfo?.filter(x => commonUtils.isNotEmptyObject(x)),
  525 + iPrintModePo: Number(item.value),
526 526 processInfo:
527 527 item.sBackProcessData?.map(item => ({
528 528 ...item,
... ... @@ -536,14 +536,13 @@ const QuickQuoteEvent = props => {
536 536 delete paramMap.sPartsStyle;
537 537 }
538 538 // 先用好的数据模拟后面在调整
539   - const newParamMap = JsonData;
  539 + // const newParamMap = JsonData;
540 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 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 546 const { productClassify, partsNewInfo = [], productProcessInfo, partsInfo: partsOldInfo } = dataReturn.dataset.rows[0];
548 547  
549 548 const slaveData = [];
... ... @@ -593,7 +592,10 @@ const QuickQuoteEvent = props => {
593 592 partsOldInfo.forEach(item => {
594 593 if (commonUtils.isNotEmptyObject(item) && !commonUtils.isEmpty(item.errorFlag)) {
595 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 637 const iIndex = processConfig.gdsconfigformslave.findIndex(item => item.sName === "sProcessName");
636 638 if (iIndex > -1) {
637 639 const sqlDropDownData = await props.getSqlDropDownData(sModelsId, "slave", processConfig.gdsconfigformslave[iIndex]);
638   - if (sqlDropDownData) {
639   - dropDownDataProcessName = sqlDropDownData.dropDownData;
640   - }
  640 + dropDownDataProcessName = sqlDropDownData.dropDownData;
641 641 processAssignAssort = processConfig.gdsconfigformslave[iIndex].sAssignField;
642 642 }
643 643 }
... ... @@ -860,9 +860,7 @@ const QuickQuoteEvent = props => {
860 860 Loading: false,
861 861 // quickQuoteModel: false,
862 862 };
863   -
864 863 delete newState.masterData.sQuoConfig;
865   -
866 864 const result = await props.handleCalculation(
867 865 false,
868 866 { ...props, ...newState, manyqtysConfig: state.manyConfig, manyqtysData: state.manyData },
... ... @@ -879,7 +877,6 @@ const QuickQuoteEvent = props => {
879 877 ...item,
880 878 sParentId: newState.masterData.sId,
881 879 }));
882   -
883 880 setState(pre => {
884 881 const preNew = { ...pre, manyData: result.manyqtysData, calcPriceLoading: false, calcPriceFinished: true };
885 882 const stateNew = { ...newState, ...result };
... ... @@ -932,9 +929,174 @@ const QuickQuoteEvent = props => {
932 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 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 1100 // 处理 formData
939 1101 let propss = {
940 1102 ...baseProps,
... ... @@ -945,25 +1107,16 @@ const QuotationAllprogressDetail = baseProps => {
945 1107 onSaveState: newState => {
946 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 1115 const props = QuickQuoteEvent(propss);
964 1116 const { selectedNode } = props;
965 1117 const { showName, sUnit } = quotationData;
966 1118 const timeRef = useRef(0);
  1119 +
967 1120 useEffect(() => {
968 1121 const getDropDownData = async props => {
969 1122 props.setState(pre => {
... ... @@ -1072,8 +1225,11 @@ const QuotationDetail = props => {
1072 1225 tableName: "master",
1073 1226 };
1074 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 1233 <div>
1078 1234 <MasterComponent {...viewProps} />
1079 1235 </div>
... ... @@ -1132,11 +1288,11 @@ const MasterComponent = props =&gt; {
1132 1288 return (
1133 1289 <div>
1134 1290 <div className={styles.customer}>
1135   - <div>{customerProps.formData?.showName}</div>
  1291 + <div>{customerProps.itemDetail?.showName}</div>
1136 1292 <SelectInput {...customerProps} />
1137 1293 </div>
1138 1294 <div className={styles.customer}>
1139   - <div>{productProps.formData?.showName}</div>
  1295 + <div>{productProps.itemDetail?.showName}</div>
1140 1296 <SelectInput {...productProps} />
1141 1297 </div>
1142 1298 <div className={styles.customer}>
... ... @@ -1227,7 +1383,6 @@ const BoxComponent = props =&gt; {
1227 1383 const { state, boxModel } = props;
1228 1384 const { activeKey, slaveConfig, masterData, selectedNode, boxConfig, downAbleConfigs = [], slaveData } = state || {};
1229 1385 const slaveRowData = slaveData.find(item => item.sTreeNodeName === selectedNode.showName && item.sBoxModel === boxModel) || {};
1230   -
1231 1386 const { sModelsId } = props;
1232 1387 const [selectList, setSelectList] = useState([]);
1233 1388 const [boxTypeList, setBoxTypeList] = useState([]);
... ... @@ -1577,7 +1732,6 @@ const BoxComponent = props =&gt; {
1577 1732 height: 150,
1578 1733 size: 9,
1579 1734 };
1580   - console.log(showImgMProps, "showImgMProps");
1581 1735  
1582 1736 const handleChange = v => {
1583 1737 if (v.length) {
... ... @@ -1695,6 +1849,7 @@ const BoxComponent = props =&gt; {
1695 1849 value={selected ? [selected] : []}
1696 1850 onChange={v => handleChange(v)}
1697 1851 />
  1852 + <div className={styles.line}></div>
1698 1853 <div>
1699 1854 <Grid columns={4} gap={8}>
1700 1855 {upViewProps
... ... @@ -1716,7 +1871,10 @@ const BoxComponent = props =&gt; {
1716 1871 {slaveRowData && slaveRowData.sPackPath ? <Image src={slaveRowData.sPackPath} width={125} height={125} fit="fill" /> : ""}
1717 1872 </div>
1718 1873 <div>
1719   - <div>印刷信息</div>
  1874 + <div className={styles.boxTitle}>
  1875 + 印刷信息
  1876 + <EditFill color="#BFBFBF" style={{ marginLeft: "1rem" }} />
  1877 + </div>
1720 1878 <Grid columns={3} gap={8}>
1721 1879 {upViewProps12
1722 1880 ? upViewProps12.viewConfigs.map(x => (
... ... @@ -1731,7 +1889,11 @@ const BoxComponent = props =&gt; {
1731 1889 </Grid>
1732 1890 </div>
1733 1891 <div>
1734   - <div>拼版信息</div>
  1892 + <div className={styles.boxTitle}>
  1893 + 拼版信息
  1894 + <EditFill color="#BFBFBF" style={{ marginLeft: "1rem" }} />
  1895 + </div>
  1896 +
1735 1897 <Grid columns={3} gap={8}>
1736 1898 {upViewProps20
1737 1899 ? upViewProps20.viewConfigs.map(x => (
... ... @@ -1757,7 +1919,11 @@ const BoxComponent = props =&gt; {
1757 1919 <MaterialsComponent {...props} slaveRowData={slaveRowData} boxModel={boxModel} />
1758 1920 </div>
1759 1921 <div>
1760   - <div>后道参数</div>
  1922 + <div className={styles.boxTitle}>
  1923 + 后道参数
  1924 + <EditFill color="#BFBFBF" style={{ marginLeft: "1rem" }} />
  1925 + </div>
  1926 +
1761 1927 {downViewProps.viewConfigs.map((x, i) => (
1762 1928 <div>
1763 1929 <div className={styles.backBox}>
... ... @@ -1777,7 +1943,11 @@ const BoxComponent = props =&gt; {
1777 1943 </div>
1778 1944 <div>
1779 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 1951 {/* <Button color="primary" fill="solid" loading={loading} onClick={props.onAdd}>
1782 1952 新报价
1783 1953 </Button>
... ... @@ -1899,18 +2069,31 @@ const MaterialsComponent = props =&gt; {
1899 2069 tableName: `slaveUp${boxModel}`,
1900 2070 onDataChange: (name, sFieldName, changeValue, sId, dropDownData, isWait) => {
1901 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 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 2086 slaveRowData = slaveData[iIndex];
1905 2087 } else {
1906 2088 const { selectedNode = {} } = state;
1907 2089 const { showName: sTreeNodeName } = selectedNode;
  2090 +
1908 2091 slaveData.push({
1909 2092 sId: commonUtils.createSid(),
1910 2093 handleType: "add",
1911 2094 sBoxModel: boxModel,
1912 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 2099 props.setState(pre => ({ ...pre, slaveData, slaveRowData, ...extraState }));
... ...
src/mobile/quotation/index.css
... ... @@ -5,6 +5,7 @@
5 5 display: flex;
6 6 align-items: center;
7 7 justify-content: center;
  8 + overflow: hidden;
8 9 }
9 10 .quotationBox .quotationNavigation {
10 11 width: 30%;
... ... @@ -16,6 +17,7 @@
16 17 .quotationBox .quotationContent {
17 18 width: 70%;
18 19 height: 100%;
  20 + overflow-y: auto;
19 21 }
20 22 .quotationBox .quotationContent .contentItem {
21 23 width: 92%;
... ...
src/mobile/quotation/index.jsx
... ... @@ -118,7 +118,7 @@ const ContentComponent = props =&gt; {
118 118 <div className={styles.content}>
119 119 {contentList.map(item => (
120 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 122 <span className={styles.contentItemTitle}>{item.showName}</span>
123 123 </div>
124 124 ))}
... ...
src/mobile/quotation/index.less
... ... @@ -6,6 +6,7 @@
6 6 display: flex;
7 7 align-items: center;
8 8 justify-content: center;
  9 + overflow: hidden;
9 10 .quotationNavigation {
10 11 width: 30%;
11 12 height: 100%;
... ... @@ -16,6 +17,7 @@
16 17 .quotationContent {
17 18 width: 70%;
18 19 height: 100%;
  20 + overflow-y: auto;
19 21 .contentItem {
20 22 width: 92%;
21 23 height: 7.5rem;
... ...
src/mobile/quotation/quotationDetail.css
... ... @@ -111,3 +111,18 @@
111 111 align-items: center;
112 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 119 display: flex;
120 120 align-items: center;
121 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 138 \ No newline at end of file
... ...