diff --git a/src/components/QuickQuote/index.jsx b/src/components/QuickQuote/index.jsx index d7e0d54..234cf54 100644 --- a/src/components/QuickQuote/index.jsx +++ b/src/components/QuickQuote/index.jsx @@ -17,7 +17,6 @@ import Typesetting from "@/components/Common/Typesetting/typesetting"; import DynamicSVG from "@/components/Common/BoxDesignCompontent/svg"; // 事件 const QuickQuoteEvent = props => { - console.log("🚀 ~ QuickQuoteEvent:", props) const addState = {}; addState.onGetFilterState = (state, bInit) => { @@ -613,7 +612,6 @@ const QuickQuoteEvent = props => { const iIndex = processConfig.gdsconfigformslave.findIndex(item => item.sName === "sProcessName"); if (iIndex > -1) { const sqlDropDownData = await props.getSqlDropDownData(sModelsId, "slave", processConfig.gdsconfigformslave[iIndex]); - console.log("🚀 ~ addState.handleCalcPrice= ~ sqlDropDownData:", sqlDropDownData) dropDownDataProcessName = sqlDropDownData.dropDownData; processAssignAssort = processConfig.gdsconfigformslave[iIndex].sAssignField; } @@ -845,7 +843,6 @@ const QuickQuoteEvent = props => { { ...props, ...newState, manyqtysConfig: state.manyConfig, manyqtysData: state.manyData }, true ); - if (commonUtils.isEmptyObject(result)) { setState(pre => ({ ...pre, calcPriceLoading: false })); return; @@ -1363,7 +1360,6 @@ const BoxComponent = props => { onDataChange: (name, sFieldName, changeValue, sId, dropDownData, isWait) => { const iIndex = slaveData.findIndex(item => item.sId === slaveRowData.sId); const iIndex1 = slaveData[iIndex].sBackProcessData.findIndex(item => item[child.sName]); - console.log("🚀 ~ child:", child) slaveData[iIndex].sBackProcessData[iIndex1][sFieldName] = changeValue[sFieldName]; const { dManualLength, dManualWidth } = slaveData[iIndex].sBackProcessData[iIndex1]; if (dManualLength !== undefined && dManualWidth !== undefined) { diff --git a/src/mobile/quotation/detailNew.jsx b/src/mobile/quotation/detailNew.jsx index 4d13ba1..ebda78b 100644 --- a/src/mobile/quotation/detailNew.jsx +++ b/src/mobile/quotation/detailNew.jsx @@ -1,20 +1,18 @@ import { useRef, useEffect, useState, useCallback, useMemo } from "react"; import { history } from "umi"; import { Toast, Input, Tabs, Selector, Grid, Image, Button, Checkbox, Switch, Dialog } from "antd-mobile"; -import { AddOutline, MinusOutline } from "antd-mobile-icons"; +import { AddOutline, MinusOutline, EditFill } from "antd-mobile-icons"; import commonConfig from "@/utils/config"; import * as commonServices from "@/services/services"; import * as commonFunc from "@/components/Common/commonFunc"; import * as commonBusiness from "@/components/Common/commonBusiness"; import styles from "./quotationDetail.less"; import SelectInput from "../components/SelectInput"; -import JsonData from "./index.json"; -import PropsJson from "./props.json"; -import ProcessData from "./process.json"; import * as commonUtils from "@/utils/utils"; import Typesetting from "@/components/Common/Typesetting/typesetting"; import DynamicSVG from "@/components/Common/BoxDesignCompontent/svg"; import ShowImgM from "@/components/Common/BoxShowImgMaterial/indexNew"; +import CommonBase from "@/components/Common/CommonBase"; const QuickQuoteEvent = props => { const { location } = props; const selectedNode = JSON.parse(location.state).quotationData; @@ -116,7 +114,8 @@ const QuickQuoteEvent = props => { commonServices.getService(props.app.token, configUrls).then(({ data: configReturn }) => { if (configReturn.code === 1) { const formData = configReturn.dataset.rows[0].formData; - setState(pre => ({ ...pre, formData, masterConfig: formData[0], processConfig: ProcessData })); + // 需要查询到processConfig和materialsConfig + setState(pre => ({ ...pre, formData, masterConfig: formData[0], processConfig: {} })); } }); }, []); @@ -167,7 +166,7 @@ const QuickQuoteEvent = props => { }; if (name === "master") { - const masterDataNew = { ...masterData, ...changeValue }; + let masterDataNew = { ...masterData, ...changeValue }; masterDataNew.handleType = masterDataNew.handleType || "update"; masterDataNew.sId = masterDataNew.sId || commonUtils.createSid(); if (sFieldName === "dProductQty") { @@ -176,6 +175,9 @@ const QuickQuoteEvent = props => { dProductQty: changeValue.dProductQty, })); } + if (sFieldName === "sCustomerName") { + masterDataNew = { ...masterDataNew, sCustomerId: changeValue.sId }; + } setState(pre => ({ ...pre, masterData: masterDataNew, ...extraState })); } else if (name.includes("slave")) { const boxModel = name.replace("slaveUp", "").replace("slaveDown", ""); @@ -297,8 +299,6 @@ const QuickQuoteEvent = props => { dMachineLength: slaveData[saveIndex].dWlcd, }; } - console.log("dropDownData", slaveData); - setState(pre => ({ ...pre, slaveData, ...extraState })); } else if (name === "finished") { const { productProcessInfo = [] } = masterData; @@ -448,7 +448,6 @@ const QuickQuoteEvent = props => { const checkResult = Object.keys(mustFieldsMap).find(item => masterData[item] === undefined); if (checkResult) { - // message.error(mustFieldsMap[checkResult]); Toast.show({ icon: "fail", content: mustFieldsMap[checkResult], @@ -523,6 +522,7 @@ const QuickQuoteEvent = props => { iPositiveColor: Number(item.sColor), sPartsName: item.sBoxModel, materialsInfo: item.materialsInfo?.filter(x => commonUtils.isNotEmptyObject(x)), + iPrintModePo: Number(item.value), processInfo: item.sBackProcessData?.map(item => ({ ...item, @@ -536,14 +536,13 @@ const QuickQuoteEvent = props => { delete paramMap.sPartsStyle; } // 先用好的数据模拟后面在调整 - const newParamMap = JsonData; + // const newParamMap = JsonData; const url = `${commonConfig.server_host}calculationStd/countMoney?sModelsId=${sModelsId}`; - const dataReturn = (await commonServices.postValueService(token, newParamMap, url)).data; + const dataReturn = (await commonServices.postValueService(token, paramMap, url)).data; if (dataReturn.code === 1) { - const { app, sModelsId } = props; - const { slaveConfig, masterData: masterData1, materialsConfig, processConfig } = state; - console.log("🚀 ~ addState.handleCalcPrice= ~ state:", materialsConfig,slaveConfig) + const { app, sModelsId, materialsConfig } = props; + const { slaveConfig, masterData: masterData1, processConfig } = state; const { productClassify, partsNewInfo = [], productProcessInfo, partsInfo: partsOldInfo } = dataReturn.dataset.rows[0]; const slaveData = []; @@ -593,7 +592,10 @@ const QuickQuoteEvent = props => { partsOldInfo.forEach(item => { if (commonUtils.isNotEmptyObject(item) && !commonUtils.isEmpty(item.errorFlag)) { errorFlag = true; - props.getServiceError({ msg: `${item.sPartsName} ${item.errorFlag}` }); + // props.getServiceError({ msg: `${item.sPartsName} ${item.errorFlag}` }); + Toast.show({ + content: `${item.sPartsName} ${item.errorFlag}`, + }); } }); } @@ -635,9 +637,7 @@ const QuickQuoteEvent = props => { const iIndex = processConfig.gdsconfigformslave.findIndex(item => item.sName === "sProcessName"); if (iIndex > -1) { const sqlDropDownData = await props.getSqlDropDownData(sModelsId, "slave", processConfig.gdsconfigformslave[iIndex]); - if (sqlDropDownData) { - dropDownDataProcessName = sqlDropDownData.dropDownData; - } + dropDownDataProcessName = sqlDropDownData.dropDownData; processAssignAssort = processConfig.gdsconfigformslave[iIndex].sAssignField; } } @@ -860,9 +860,7 @@ const QuickQuoteEvent = props => { Loading: false, // quickQuoteModel: false, }; - delete newState.masterData.sQuoConfig; - const result = await props.handleCalculation( false, { ...props, ...newState, manyqtysConfig: state.manyConfig, manyqtysData: state.manyData }, @@ -879,7 +877,6 @@ const QuickQuoteEvent = props => { ...item, sParentId: newState.masterData.sId, })); - setState(pre => { const preNew = { ...pre, manyData: result.manyqtysData, calcPriceLoading: false, calcPriceFinished: true }; const stateNew = { ...newState, ...result }; @@ -932,9 +929,174 @@ const QuickQuoteEvent = props => { masterConfig: masterConfig && masterConfig.length ? masterConfig[0] : {}, }; }; - +const handleMaterialsChange = async (tableDataRow, sModelsId, masterData, changeValue, sFieldName, app, token, models) => { + const { sComputeId, sConversionComputeId, sReConversionComputeId } = tableDataRow; + if ( + sFieldName === "sMaterialsNo" || + sFieldName === "sMaterialsName" || + sFieldName === "dAuxiliaryQty" || + sFieldName === "dReelAuxiliaryQty" || + sFieldName === "dConversionQty" || + sFieldName === "sMaterialsStyle" || + sFieldName === "dProductQty" + ) { + if (sFieldName === "dReelAuxiliaryQty") { + if (tableDataRow.sMaterialsUnit === "吨" && tableDataRow.bReel && tableDataRow.dGramWeight > 0) { + tableDataRow = commonBusiness.getMaterialsQty( + app, + { ...tableDataRow, sMaterialsStyle: tableDataRow.sReelMaterialsStyle }, + "dReelAuxiliaryQty", + "dMaterialsQty" + ); + tableDataRow.dAuxiliaryQty = tableDataRow.dMaterialsQty; + tableDataRow.sMaterialsStyle = + tableDataRow.sMaterialsStyle !== undefined && tableDataRow.sMaterialsStyle.split("*").length > 1 + ? tableDataRow.sMaterialsStyle.split("*")[0] + : tableDataRow.sMaterialsStyle; + tableDataRow.sAuxiliaryUnit = tableDataRow.sMaterialsUnit; + } else if (tableDataRow.sMaterialsUnit.toUpper() === "M2" && tableDataRow.bReel) { + tableDataRow = commonBusiness.getMaterialsQty(app, tableDataRow, "dReelAuxiliaryQty", "dMaterialsQty"); + tableDataRow.dAuxiliaryQty = tableDataRow.dReelAuxiliaryQty; + } else { + tableDataRow.dAuxiliaryQty = tableDataRow.dReelAuxiliaryQty; + } + } + if (commonUtils.isEmpty(sComputeId) && sFieldName !== "dConversionQty") { + if (sFieldName === "dProductQty") { + tableDataRow = commonBusiness.getMaterialsQty(app, tableDataRow, "dProductQty", "dMaterialsQty"); + } else { + tableDataRow = commonBusiness.getMaterialsQty(app, tableDataRow, "dAuxiliaryQty", "dMaterialsQty"); + } + } else if (!commonUtils.isEmpty(sComputeId)) { + tableDataRow.dMaterialsQty = await commonBusiness.getFormulaValue({ + token, + sModelsId, + masterData, + tableDataRow, + sComputeId, + }); + } + if (sFieldName !== "dConversionQty" && !commonUtils.isEmpty(sConversionComputeId)) { + tableDataRow.dConversionQty = await commonBusiness.getFormulaValue({ + token, + sModelsId, + masterData, + tableDataRow, + sComputeId: sConversionComputeId, + }); + } + } else if (sFieldName === "dMaterialsQty") { + const { sReComputeId } = tableDataRow; + if (commonUtils.isEmpty(sReComputeId) && tableDataRow.bInverse) { + tableDataRow = commonBusiness.getAuxiliaryQty(app, tableDataRow, sFieldName, "dAuxiliaryQty"); + } else if (tableDataRow.bInverse) { + tableDataRow.dAuxiliaryQty = await commonBusiness.getFormulaValue({ + token, + sModelsId, + masterData, + tableDataRow, + sComputeId: sReComputeId, + }); + if (commonUtils.isNotEmptyArr(tableDataRow.dAuxiliaryQty) && tableDataRow.dAuxiliaryQty !== 0) { + tableDataRow.dProductQty = tableDataRow.dAuxiliaryQty; + } + } + if (!commonUtils.isEmpty(sReConversionComputeId)) { + tableDataRow.dConversionQty = await commonBusiness.getFormulaValue({ + token, + sModelsId, + masterData, + tableDataRow, + sComputeId: sReConversionComputeId, + }); + } + } else if (sFieldName === "dAuxiliaryLossQty") { + if (commonUtils.isEmpty(sComputeId)) { + tableDataRow = commonBusiness.getMaterialsQty(app, tableDataRow, sFieldName, "dLossQty"); + } else { + tableDataRow.dLossQty = await commonBusiness.getFormulaValue({ + token, + sModelsId, + masterData, + tableDataRow, + sComputeId, + }); + } + if (!commonUtils.isEmpty(tableDataRow.dSrcSurplusAuxiliaryQty)) { + tableDataRow.dAuxiliaryQty = tableDataRow.dSrcSurplusAuxiliaryQty - tableDataRow.dAuxiliaryLossQty; + tableDataRow.dMaterialsQty = commonUtils.convertFixNum(tableDataRow.dSrcSurplusQty - tableDataRow.dLossQty, 6); + } + } else if (sFieldName === "dLossQty") { + const { sReComputeId } = tableDataRow; + if (commonUtils.isEmpty(sReComputeId)) { + tableDataRow = commonBusiness.getAuxiliaryQty(app, tableDataRow, sFieldName, "dAuxiliaryLossQty"); + } else { + tableDataRow.dAuxiliaryLossQty = await commonBusiness.getFormulaValue({ + token, + sModelsId, + masterData, + tableDataRow, + sComputeId: sReComputeId, + }); + } + if (!commonUtils.isEmpty(tableDataRow.dSrcSurplusAuxiliaryQty)) { + tableDataRow.dAuxiliaryQty = tableDataRow.dSrcSurplusAuxiliaryQty - tableDataRow.dAuxiliaryLossQty; + tableDataRow.dMaterialsQty = tableDataRow.dSrcSurplusQty - tableDataRow.dLossQty; + } + } else if (sFieldName === "sProcessId" || sFieldName === "sProcessNo" || sFieldName === "sProcessName") { + const sProcessId = changeValue.sProcessId; + const url = `${commonConfig.server_host}process/outsideprocess?sModelsId=${sModelsId}&sProcessId=${sProcessId}`; + const dataReturn = (await commonServices.getService(token, url)).data; + if (dataReturn.code === 1) { + if (commonUtils.isNotEmptyArr(dataReturn.dataset.rows)) { + tableDataRow.dMaterialsPrice = dataReturn.dataset.rows[0].dMaterialsPrice; + } + tableDataRow = commonBusiness.getCalculateAllMoney(app, models, "dMaterialsPrice", masterData, tableDataRow); + } + } + return tableDataRow; +}; +const sortData = (tableData, processData) => { + processData.sort((g1, g2) => { + const iIndex1 = tableData.findIndex(item => item.sId === g1.sControlId) === -1 ? 999 : tableData.findIndex(item => item.sId === g1.sControlId); + let sPartOrder1 = `0000${iIndex1}`; + sPartOrder1 = sPartOrder1.substring(sPartOrder1.length - 3); + let sOrder1 = `000${g1.iOrder}`; + sOrder1 = sOrder1.substring(sOrder1.length - 3); + + const iIndex2 = tableData.findIndex(item => item.sId === g2.sControlId) === -1 ? 999 : tableData.findIndex(item => item.sId === g2.sControlId); + let sPartOrder2 = `0000${iIndex2}`; + sPartOrder2 = sPartOrder2.substring(sPartOrder2.length - 3); + let sOrder2 = `000${g2.iOrder}`; + sOrder2 = sOrder2.substring(sOrder2.length - 3); + return parseInt(sPartOrder1 + g1.sType + sOrder1, 10) - parseInt(sPartOrder2 + g2.sType + sOrder2, 10); + }); + return processData; +}; const QuotationAllprogressDetail = baseProps => { - const { location, quotationData, app } = baseProps; + const { location, quotationData, app, sModelsId } = baseProps; + const getSqlDropDownDatas = async (formId, name, showConfig, record, sKeyUpFilterName, pageNum) => { + const url = `${commonConfig.server_host}business/getSelectLimit/${showConfig.sId}?sModelsId=${sModelsId}`; + const body = { + sSqlCondition: { + sSqlCondition: "", + }, + sKeyUpFilterName: "", + pageNum: 1, + pageSize: 20, + }; + const retrunData = await commonServices.postValueService(propss.token, body, url); + if (retrunData.data.code === 1) { + /* 获取数据集 */ + const { rows, totalPageCount, currentPageNo, totalCount } = retrunData.data.dataset; + return { + dropDownData: rows, + totalPageCount, + currentPageNo, + totalCount, + }; + } + }; // 处理 formData let propss = { ...baseProps, @@ -945,25 +1107,16 @@ const QuotationAllprogressDetail = baseProps => { onSaveState: newState => { propss = { ...propss, ...newState }; }, - getSqlDropDownData: async sId => { - const url = `${commonConfig.server_host}business/getSelectLimit/${sId}`; - const body = { - sSqlCondition: { - sSqlCondition: "", - }, - sKeyUpFilterName: "", - pageNum: 1, - pageSize: 20, - }; - const retrunData = await commonServices.postValueService(propss.token, body, url); - console.log("🚀 ~ retrunData:", retrunData); - }, + getSqlDropDownData: getSqlDropDownDatas, + onMaterialsChange: handleMaterialsChange, + sortData, }; const props = QuickQuoteEvent(propss); const { selectedNode } = props; const { showName, sUnit } = quotationData; const timeRef = useRef(0); + useEffect(() => { const getDropDownData = async props => { props.setState(pre => { @@ -1072,8 +1225,11 @@ const QuotationDetail = props => { tableName: "master", }; return ( -