From 570173547a94d3f081b4182ca93192bb937bdcd9 Mon Sep 17 00:00:00 2001 From: 陈鑫涛 <10125295+chen-xintao97@user.noreply.gitee.com> Date: Tue, 1 Jul 2025 10:28:59 +0800 Subject: [PATCH] 排版 --- src/components/Common/Typesetting/typesetting.js | 7 ++++--- src/mobile/components/SelectInput.jsx | 2 +- src/mobile/quotation/detailNew.jsx | 204 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++--------------------------------------------------------------------------------------------- 3 files changed, 116 insertions(+), 97 deletions(-) diff --git a/src/components/Common/Typesetting/typesetting.js b/src/components/Common/Typesetting/typesetting.js index 46b6a35..37737ba 100644 --- a/src/components/Common/Typesetting/typesetting.js +++ b/src/components/Common/Typesetting/typesetting.js @@ -222,8 +222,8 @@ const Typesetting = props => { const reference = sSGroupOffset === "首盒"; // 第三列参考 // 计算内层盒子尺寸 加上间距 - let jInnerHeight = innerHeight + dXBJJ + dXBJJ; - let jInnerWidth = innerWidth + dYBJJ + dYBJJ; + let jInnerHeight = innerHeight; + let jInnerWidth = innerWidth; let dSvgBoxWidth = innerWidth; let dSvgBoxHeight = innerHeight; if (iFAngle === 90 || iFAngle === 270 || iSAngle === 90 || iSAngle === 270) { @@ -386,7 +386,7 @@ const Typesetting = props => { justifyContent: "center", alignItems: "center", position: "absolute", - left: `${isVertical ? dSLengthOffset : innerWidth + dFLengthOffset + dSLengthOffset + dYBJJ}px`, + left: `${isVertical ? dSLengthOffset :iSAngle === 90 || iSAngle === 270 ? innerHeight + dFLengthOffset + dSLengthOffset + dYBJJ * 2: innerWidth + dFLengthOffset + dSLengthOffset + dYBJJ * 2}px`, top: `${ isVertical ? jInnerHeight + dXBJJ + dFWidthOffset + dSWidthOffset : iSAngle === 90 || iSAngle === 270 ? dSWidthOffset : dSWidthOffset + dXBJJ }px`, @@ -487,6 +487,7 @@ const Typesetting = props => { // 生成里层 div 的数组 const innerDivs = []; + console.log(cols,rows,'cols'); for (let col = 0; col < cols; col++) { for (let row = 0; row < rows; row++) { diff --git a/src/mobile/components/SelectInput.jsx b/src/mobile/components/SelectInput.jsx index 5ad8132..9297f74 100644 --- a/src/mobile/components/SelectInput.jsx +++ b/src/mobile/components/SelectInput.jsx @@ -73,7 +73,6 @@ const SelectInput = props => { const data = coplyColumns[index]; data[itemDetail.sName] = data[itemDetail.sName] ? data[itemDetail.sName] : data.label || data.sName || data.sProcessName || data.sColorName; setValue(columns[index]?.label || ""); - props.onDataChange(tableName, itemDetail.sName, data, data.sId, coplyColumns); setVisible(false); }; @@ -104,6 +103,7 @@ const SelectInput = props => { useEffect(() => { if (!visible) return; let { sDropDownType, sVisColumnName } = itemDetail; + console.log("🚀 ~ useEffect ~ itemDetail:", itemDetail) if (sVisColumnName && sVisColumnName === "sProcessName") { if (sDropDownType === "sql") { if (itemDetail.sParamDropDown) { diff --git a/src/mobile/quotation/detailNew.jsx b/src/mobile/quotation/detailNew.jsx index 1fdd2e0..f51e51a 100644 --- a/src/mobile/quotation/detailNew.jsx +++ b/src/mobile/quotation/detailNew.jsx @@ -150,6 +150,10 @@ const QuickQuoteEvent = props => { }; if (name === "master") { + const { showName: sTreeNodeName } = selectedNode; + const boxModel = name.replace("slaveUp", "").replace("slaveDown", ""); + const iIndex = slaveData.findIndex(item => item.sTreeNodeName === sTreeNodeName && item.sBoxModel === boxModel); + console.log("🚀 ~ iIndex:", iIndex,boxModel,props) let masterDataNew = { ...masterData, ...changeValue }; masterDataNew.handleType = masterDataNew.handleType || "update"; masterDataNew.sId = commonUtils.createSid(); @@ -162,6 +166,16 @@ const QuickQuoteEvent = props => { if (sFieldName === "sCustomerName") { masterDataNew = { ...masterDataNew, sCustomerId: changeValue.sId }; } + // if ((sFieldName === "dLength" || sFieldName === "dWidth" || sFieldName === "dHeight")) { + // const sColumnNameConfig = commonUtils.convertStrToObj(slaveData[iIndex].sColumnNameConfig, []).map(item => ({ + // ...item, + // iColValue: item.iColValue || 6, + // })); + // slaveData[iIndex] = { + // ...slaveData[iIndex], + // upAbleConfigsExtra: sColumnNameConfig, + // }; + // } setState(pre => ({ ...pre, masterData: masterDataNew, ...extraState })); } else if (name.includes("slave")) { const boxModel = name.replace("slaveUp", "").replace("slaveDown", ""); @@ -451,12 +465,12 @@ const QuickQuoteEvent = props => { // 核价按钮 addState.handleCalcPrice = async () => { const { masterData = {}, slaveData = [], selectedNode = {}, extraParts = {} } = state; - const selectProduct = commonFunc.showLocalMessage(props, 'selectProduct', '请先选择产品'); - const selectCustomer = commonFunc.showLocalMessage(props, 'selectCustomer', '请先选择客户名称'); - const selectProductUnit = commonFunc.showLocalMessage(props, 'selectProductUnit', '请先输入产品单位'); - const inputLength = commonFunc.showLocalMessage(props, 'inputLength', '请先输入长度'); - const inputWidth = commonFunc.showLocalMessage(props, 'inputWidth', '请先输入宽度'); - const inputQty = commonFunc.showLocalMessage(props, 'inputQty', '请先输入数量'); + const selectProduct = commonFunc.showLocalMessage(props, "selectProduct", "请先选择产品"); + const selectCustomer = commonFunc.showLocalMessage(props, "selectCustomer", "请先选择客户名称"); + const selectProductUnit = commonFunc.showLocalMessage(props, "selectProductUnit", "请先输入产品单位"); + const inputLength = commonFunc.showLocalMessage(props, "inputLength", "请先输入长度"); + const inputWidth = commonFunc.showLocalMessage(props, "inputWidth", "请先输入宽度"); + const inputQty = commonFunc.showLocalMessage(props, "inputQty", "请先输入数量"); if (commonUtils.isEmptyObject(selectedNode)) { // message.error("请先选择产品"); Toast.show({ @@ -915,9 +929,9 @@ const QuickQuoteEvent = props => { const result = await props.handleCalculation( false, - { ...masterProps, ...newState, manyqtysConfig: state.manyConfig, manyqtysData: state.manyData ,state}, + { ...masterProps, ...newState, manyqtysConfig: state.manyConfig, manyqtysData: state.manyData, state }, true, - {...props, state} + { ...props, state } ); if (commonUtils.isEmptyObject(result)) { @@ -1100,7 +1114,7 @@ const QuotationDetail = props => { lengthData.showName = "高(D)"; lengthData.sChinese = "高(D)"; lengthData.sEnglish = "Height (D)"; - if(app.userinfo?.sLanguage === 'sEnglish') { + if (app.userinfo?.sLanguage === "sEnglish") { lengthData.showName = lengthData.sEnglish; } } @@ -1109,7 +1123,7 @@ const QuotationDetail = props => { lengthData.showName = "长(L)"; lengthData.sChinese = "长(L)"; lengthData.sEnglish = "Length (L)"; - if(app.userinfo?.sLanguage === 'sEnglish') { + if (app.userinfo?.sLanguage === "sEnglish") { lengthData.showName = lengthData.sEnglish; } } @@ -1443,9 +1457,9 @@ const BoxComponent = props => { if ( (slaveRowData && slaveRowData.sColumnNameConfig && masterData?.dLength && masterData?.dWidth && masterData?.dHeight) || (selectedNode.sTypeKey === "kapai" && slaveRowData.sColumnNameConfig && masterData.dLength && masterData.dWidth) || - (selectedNode.sProductType === "不干胶" && slaveRowData.sColumnNameConfig && masterData.dLength && masterData.dWidth)) - { - const slaveNewData = JSON.parse(slaveRowData.sColumnNameConfig); + (selectedNode.sProductType === "不干胶" && slaveRowData.sColumnNameConfig && masterData.dLength && masterData.dWidth) + ) { + const slaveNewData = slaveRowData.upAbleConfigsExtra; const tables = [ { name: "盒型类别", value: slaveRowData.sBoxType, type: null }, { name: "盒身", value: slaveRowData.sBoxBody, type: slaveRowData.sTypes }, @@ -1498,6 +1512,7 @@ const BoxComponent = props => { let key = 0; if (x.sAssignFormula) { key = evaluateFormula(x.sAssignFormula, variables); + slaveRowData[x.sName] = key; } else { key = slaveRowData[x.sName]; } @@ -1558,7 +1573,7 @@ const BoxComponent = props => { ) { return false; } - const rateList = [ + const rateList = [ { id: 0, name: "不显示倍率" }, { id: 1, name: "每本张数" }, { id: 2, name: "片数" }, @@ -1589,9 +1604,9 @@ const BoxComponent = props => { if (selectedNode.sProductType === "不干胶") { showNameKeyList = ["dZBLB", "dZBJJ", "dYBJJ", "dSBJJ", "dXBJJ"]; } - const UlToolPosition = commonFunc.showLocalMessage(props, 'UlToolPosition', '上下刀位'); - const RLToolPosition = commonFunc.showLocalMessage(props, 'RLToolPosition', '左右刀位'); - const LeftMargin = commonFunc.showLocalMessage(props, 'LeftMargin', '左右刀位'); + const UlToolPosition = commonFunc.showLocalMessage(props, "UlToolPosition", "上下刀位"); + const RLToolPosition = commonFunc.showLocalMessage(props, "RLToolPosition", "左右刀位"); + const LeftMargin = commonFunc.showLocalMessage(props, "LeftMargin", "左右刀位"); boxConfigList = boxConfig?.gdsconfigformslave?.filter(item => item.bVisible && showNameKeyList.includes(item.sName)) || []; if (selectedNode.sProductType === "不干胶") { @@ -1634,7 +1649,7 @@ const BoxComponent = props => { // 印刷参数表单 let upViewProps12 = getUpViewPropsByITag(12); -const filterConditions = { + const filterConditions = { juantong: x => x.sName === "sMagnification" || x.sName === "dPartsLength" || @@ -1642,7 +1657,8 @@ const filterConditions = { x.sName === "dRowGap" || x.sName === "dColGap" || x.sName === "sPaperDirection", - default: x => x.sName === "dBleed" || x.sName === "sMagnification" || x.sName === "dPartsLength" || x.sName === "dPartsWidth" || x.sName === "dSumPQty", + default: x => + x.sName === "dBleed" || x.sName === "sMagnification" || x.sName === "dPartsLength" || x.sName === "dPartsWidth" || x.sName === "dSumPQty", }; if (upViewProps12 && selectedNode.sProductType === "不干胶") { upViewProps12.viewConfigs = upViewProps12?.viewConfigs.filter(filterConditions.juantong); @@ -1736,69 +1752,68 @@ const filterConditions = { const [materialLength, setMaterialLength] = useState(0); const [materialWidth, setMaterialWidth] = useState(0); // 使用 useCallback 确保回调函数的稳定性 - const handleSaveState = - ( - length, - width, - slaveData, - masterData, - dSinglePQty, - dMaterialsKQty, - dProductQty, - scale, - dWlcd, - dWlkd, - innerWidth, - innerHeight, - dHorizontal, - dPortrait, - dHorizontalType, - dPortraitType - ) => { - // 查找符合条件的索引 - const { selectedNode } = props.state; - - const index = slaveData?.findIndex(x => x.sTreeNodeName === selectedNode.showName && x.sBoxModel === props.boxModel); - // 判断展长展宽是否可以放下原纸 - const isDPartsLength = - slaveData[index]?.dPartsLength < slaveData[index]?.dMaxLength && slaveData[index]?.dPartsWidth < slaveData[index]?.dMaxWidth; - - if (index !== undefined && index !== -1) { - // 计算开数 - - // 获取原始对象并创建一个新的对象进行更新 - const updatedProduct = { - ...slaveData[index], - materialLength: length, - materialWidth: width, - dMachineLength: length, // 上机长 - dMachineWidth: width, // 上机宽 - sMaterialsStyle: `${slaveData[index]?.dWlcd || 0}*${slaveData[index]?.dWlkd || 0}`, // 原纸尺寸 - sMachineStyle: `${length || slaveData[index].materialLength}*${width || slaveData[index].materialWidth}`, // 开料尺寸为计算的排版尺寸 - sMaterialRate: (((length * width) / (dWlcd * dWlkd)) * 100).toFixed(2), - newMaterialLength: length, - newMaterialWidth: width, - sLayoutRate: Number( - ( - (((length || slaveData[index].materialLength) * (width || slaveData[index].materialWidth)) / - (slaveData[index].dMaxLength * slaveData[index].dMaxWidth)) * - 100 - ).toFixed(2) - ), - dWlcd: dWlcd, - dWlkd: dWlkd, - dMachineQty: Math.floor(dProductQty / dSinglePQty), - dSinglePQty: dSinglePQty, - dMaterialsKQty: dMaterialsKQty, - scale: scale, - dPartsLength: innerWidth, - dPartsWidth: innerHeight, - dHorizontal: dHorizontalType, - dPortrait: dPortraitType, - dHorizontalType: dHorizontalType, // 判断 - dPortraitType: dPortraitType, - }; - let juantongConfig = {}; + const handleSaveState = ( + length, + width, + slaveData, + masterData, + dSinglePQty, + dMaterialsKQty, + dProductQty, + scale, + dWlcd, + dWlkd, + innerWidth, + innerHeight, + dHorizontal, + dPortrait, + dHorizontalType, + dPortraitType + ) => { + // 查找符合条件的索引 + const { selectedNode } = props.state; + + const index = slaveData?.findIndex(x => x.sTreeNodeName === selectedNode.showName && x.sBoxModel === props.boxModel); + // 判断展长展宽是否可以放下原纸 + const isDPartsLength = + slaveData[index]?.dPartsLength < slaveData[index]?.dMaxLength && slaveData[index]?.dPartsWidth < slaveData[index]?.dMaxWidth; + + if (index !== undefined && index !== -1) { + // 计算开数 + + // 获取原始对象并创建一个新的对象进行更新 + const updatedProduct = { + ...slaveData[index], + materialLength: length, + materialWidth: width, + dMachineLength: length, // 上机长 + dMachineWidth: width, // 上机宽 + sMaterialsStyle: `${slaveData[index]?.dWlcd || 0}*${slaveData[index]?.dWlkd || 0}`, // 原纸尺寸 + sMachineStyle: `${length || slaveData[index].materialLength}*${width || slaveData[index].materialWidth}`, // 开料尺寸为计算的排版尺寸 + sMaterialRate: (((length * width) / (dWlcd * dWlkd)) * 100).toFixed(2), + newMaterialLength: length, + newMaterialWidth: width, + sLayoutRate: Number( + ( + (((length || slaveData[index].materialLength) * (width || slaveData[index].materialWidth)) / + (slaveData[index].dMaxLength * slaveData[index].dMaxWidth)) * + 100 + ).toFixed(2) + ), + dWlcd: dWlcd, + dWlkd: dWlkd, + dMachineQty: Math.floor(dProductQty / dSinglePQty), + dSinglePQty: dSinglePQty, + dMaterialsKQty: dMaterialsKQty, + scale: scale, + dPartsLength: innerWidth, + dPartsWidth: innerHeight, + dHorizontal: dHorizontalType, + dPortrait: dPortraitType, + dHorizontalType: dHorizontalType, // 判断 + dPortraitType: dPortraitType, + }; + let juantongConfig = {}; if (selectedNode.sProductType === "不干胶") { const { dYBJJ, dXBJJ, dZBLB } = slaveData[index]; @@ -1814,17 +1829,16 @@ const filterConditions = { ...updatedProduct, ...juantongConfig, }; - // 更新状态 - props.setState(prevState => ({ - ...prevState, - slaveData: slaveData.map((item, i) => (i === index ? newSlaveData : item)), - })); - } - - setMaterialLength(length); - setMaterialWidth(width); + // 更新状态 + props.setState(prevState => ({ + ...prevState, + slaveData: slaveData.map((item, i) => (i === index ? newSlaveData : item)), + })); } - ; + + setMaterialLength(length); + setMaterialWidth(width); + }; const onSaveDPartsLength = useCallback((innerWidth, innerHeight, slaveData) => { const { selectedNode } = props.state; const index = slaveData?.findIndex(x => x.sTreeNodeName === selectedNode.showName && x.sBoxModel === props.boxModel); @@ -2302,7 +2316,11 @@ const PrintParamsComponent = props => { const result = []; for (let i = 0; i < printParams.length + 1; i++) { const printParamsItem = printParams[i - 1]; - const viewRow = { ...(i === 0 ? slaveRowData : printParamsItem), sProductClassifyId: selectedNode.sId,sProcessId:i === 0 ? slaveRowData.sId : printParamsItem.sId}; + const viewRow = { + ...(i === 0 ? slaveRowData : printParamsItem), + sProductClassifyId: selectedNode.sId, + sProcessId: i === 0 ? slaveRowData.sId : printParamsItem.sId, + }; const viewProps = { ...props, -- libgit2 0.22.2