Commit 6aad692714b207c79a9913be48065bdf9fa6aa9c
1 parent
a9e11287
增加四舍五入计算
Showing
4 changed files
with
172 additions
and
99 deletions
src/components/Common/CommonComponent/index.js
| @@ -2880,6 +2880,7 @@ export default class CommonComponent extends Component { | @@ -2880,6 +2880,7 @@ export default class CommonComponent extends Component { | ||
| 2880 | /* 如果是选择空值,则将特殊字符过滤为空值 */ | 2880 | /* 如果是选择空值,则将特殊字符过滤为空值 */ |
| 2881 | value = ""; | 2881 | value = ""; |
| 2882 | } | 2882 | } |
| 2883 | + console.log("🚀 ~ sAssignFieldObj:", 66666) | ||
| 2883 | 2884 | ||
| 2884 | /* 回带值声明 */ | 2885 | /* 回带值声明 */ |
| 2885 | const returnValue = {}; | 2886 | const returnValue = {}; |
| @@ -2923,6 +2924,7 @@ export default class CommonComponent extends Component { | @@ -2923,6 +2924,7 @@ export default class CommonComponent extends Component { | ||
| 2923 | const [changeData] = dropDownDataNew.filter(item => (!commonUtils.isEmpty(res) ? item[res] : item.sId) === value.toString()); | 2924 | const [changeData] = dropDownDataNew.filter(item => (!commonUtils.isEmpty(res) ? item[res] : item.sId) === value.toString()); |
| 2924 | if (!commonUtils.isEmpty(sAssignField)) { | 2925 | if (!commonUtils.isEmpty(sAssignField)) { |
| 2925 | /* 赋值数组 */ | 2926 | /* 赋值数组 */ |
| 2927 | + | ||
| 2926 | const sAssignFieldObj = sAssignField.split(","); | 2928 | const sAssignFieldObj = sAssignField.split(","); |
| 2927 | if (commonUtils.isNotEmptyObject(changeData)) { | 2929 | if (commonUtils.isNotEmptyObject(changeData)) { |
| 2928 | for (const child of sAssignFieldObj) { | 2930 | for (const child of sAssignFieldObj) { |
src/components/Common/Typesetting/typesetting.js
| @@ -59,7 +59,7 @@ const Typesetting = props => { | @@ -59,7 +59,7 @@ const Typesetting = props => { | ||
| 59 | const [materialWidth, setMaterialWidth] = useState(0); | 59 | const [materialWidth, setMaterialWidth] = useState(0); |
| 60 | const [dProductQty, setDProductQty] = useState(0); | 60 | const [dProductQty, setDProductQty] = useState(0); |
| 61 | const [materialName, setMaterialName] = useState(""); | 61 | const [materialName, setMaterialName] = useState(""); |
| 62 | - const [dMaterialsKQty, setDMaterialsKQty] = useState(0); | 62 | + // const [dMaterialsKQty, setDMaterialsKQty] = useState(0); |
| 63 | const [dPartsLength, setDPartsLength] = useState(0); | 63 | const [dPartsLength, setDPartsLength] = useState(0); |
| 64 | const [newDHorizontalType, setNewDHorizontalType] = useState(0); | 64 | const [newDHorizontalType, setNewDHorizontalType] = useState(0); |
| 65 | const [newDPortraitType, setNewDPortraitType] = useState(0); | 65 | const [newDPortraitType, setNewDPortraitType] = useState(0); |
| @@ -70,6 +70,8 @@ const Typesetting = props => { | @@ -70,6 +70,8 @@ const Typesetting = props => { | ||
| 70 | const boxsRef = useRef(null); | 70 | const boxsRef = useRef(null); |
| 71 | const typesettingBox = useRef(null); | 71 | const typesettingBox = useRef(null); |
| 72 | const typesettingBoxs = useRef(null); | 72 | const typesettingBoxs = useRef(null); |
| 73 | + const svgBox = useRef(null); | ||
| 74 | + const svgBoxs = useRef(null); | ||
| 73 | // 获取外层盒子尺寸 | 75 | // 获取外层盒子尺寸 |
| 74 | const clientWidth = boxWidth || 400; | 76 | const clientWidth = boxWidth || 400; |
| 75 | const clientHeight = boxHeight || 300; | 77 | const clientHeight = boxHeight || 300; |
| @@ -92,23 +94,24 @@ const Typesetting = props => { | @@ -92,23 +94,24 @@ const Typesetting = props => { | ||
| 92 | const H = masterData?.dWidth || 0; | 94 | const H = masterData?.dWidth || 0; |
| 93 | const D = masterData?.dHeight || 0; | 95 | const D = masterData?.dHeight || 0; |
| 94 | // 动态计算公式值 | 96 | // 动态计算公式值 |
| 95 | - const evaluateFormula = (formula, variables) => { | ||
| 96 | - if (!formula) return 0; // 如果公式为空,返回0 | ||
| 97 | - try { | ||
| 98 | - // 提取公式中的变量名 | ||
| 99 | - const variableNames = formula.match(/\b[a-zA-Z_][a-zA-Z0-9_]*\b/g) || []; | ||
| 100 | - // 构建函数参数 | ||
| 101 | - const params = variableNames.join(","); | ||
| 102 | - // 替换公式中的变量为实际值 | ||
| 103 | - const func = new Function(params, `return ${formula}`); | ||
| 104 | - // 提取变量值 | ||
| 105 | - const args = variableNames.map(name => Number(variables[name]) || 0); | ||
| 106 | - // 执行函数并返回结果 | ||
| 107 | - return func(...args); | ||
| 108 | - } catch (error) { | ||
| 109 | - return 0; | ||
| 110 | - } | ||
| 111 | - }; | 97 | + const evaluateFormula = (formula, variables) => { |
| 98 | + if (!formula) return 0; // 如果公式为空,返回0 | ||
| 99 | + try { | ||
| 100 | + // 提取公式中的变量名 | ||
| 101 | + const variableNames = formula.match(/\b[a-zA-Z_][a-zA-Z0-9_]*\b/g) || []; | ||
| 102 | + // 构建函数参数 | ||
| 103 | + const params = variableNames.join(","); | ||
| 104 | + // 替换公式中的变量为实际值 | ||
| 105 | + const func = new Function(params, `return ${formula}`); | ||
| 106 | + // 提取变量值 | ||
| 107 | + const args = variableNames.map(name => Number(variables[name]) || 0); | ||
| 108 | + // 执行函数并返回结果 | ||
| 109 | + return func(...args); | ||
| 110 | + } catch (error) { | ||
| 111 | + console.error("公式执行错误:", error); | ||
| 112 | + return 0; | ||
| 113 | + } | ||
| 114 | +}; | ||
| 112 | // 计算公式值 | 115 | // 计算公式值 |
| 113 | const variables = { | 116 | const variables = { |
| 114 | L, | 117 | L, |
| @@ -119,7 +122,7 @@ const Typesetting = props => { | @@ -119,7 +122,7 @@ const Typesetting = props => { | ||
| 119 | }; | 122 | }; |
| 120 | const { sStripType = 0 } = props.state.selectedNode; | 123 | const { sStripType = 0 } = props.state.selectedNode; |
| 121 | let boxList = []; | 124 | let boxList = []; |
| 122 | - if (sColumnNameConfig ) { | 125 | + if (sColumnNameConfig) { |
| 123 | const slaveNewData = JSON.parse(sColumnNameConfig); | 126 | const slaveNewData = JSON.parse(sColumnNameConfig); |
| 124 | const tables = [ | 127 | const tables = [ |
| 125 | { name: "盒型类别", value: slaveRowData.sBoxType, type: null }, | 128 | { name: "盒型类别", value: slaveRowData.sBoxType, type: null }, |
| @@ -200,13 +203,14 @@ const Typesetting = props => { | @@ -200,13 +203,14 @@ const Typesetting = props => { | ||
| 200 | const boxWidthOffset = evaluateFormula(sSecondLongitudinalOffset, variabless); // 第二列纵向偏移 | 203 | const boxWidthOffset = evaluateFormula(sSecondLongitudinalOffset, variabless); // 第二列纵向偏移 |
| 201 | const isVertical = sSettingMethod === "从上到下"; // true 表示竖向排列,false 表示横向排列 sSettingMethod === '从上到下' | 204 | const isVertical = sSettingMethod === "从上到下"; // true 表示竖向排列,false 表示横向排列 sSettingMethod === '从上到下' |
| 202 | const reference = sSGroupOffset === "首盒"; // 第三列参考 | 205 | const reference = sSGroupOffset === "首盒"; // 第三列参考 |
| 203 | - console.log(innerWidth,innerHeight,dFWidthOffset,dFLengthOffset,dSWidthOffset,dSLengthOffset,boxLengthOffset,boxWidthOffset,'typeSetting'); | ||
| 204 | - | 206 | + console.log(innerWidth, innerHeight, dFWidthOffset, dFLengthOffset, dSWidthOffset, dSLengthOffset, boxLengthOffset, boxWidthOffset, "typeSetting"); |
| 207 | + | ||
| 205 | // 计算内层盒子尺寸 加上间距 | 208 | // 计算内层盒子尺寸 加上间距 |
| 206 | let jInnerHeight = innerHeight; | 209 | let jInnerHeight = innerHeight; |
| 207 | let jInnerWidth = innerWidth; | 210 | let jInnerWidth = innerWidth; |
| 208 | let dSvgBoxWidth = innerWidth; | 211 | let dSvgBoxWidth = innerWidth; |
| 209 | let dSvgBoxHeight = innerHeight; | 212 | let dSvgBoxHeight = innerHeight; |
| 213 | + const isRrotate = iFAngle === 90 || iFAngle === 270 || iSAngle === 90 || iSAngle === 270; | ||
| 210 | if (iFAngle === 90 || iFAngle === 270 || iSAngle === 90 || iSAngle === 270) { | 214 | if (iFAngle === 90 || iFAngle === 270 || iSAngle === 90 || iSAngle === 270) { |
| 211 | jInnerHeight = innerWidth; | 215 | jInnerHeight = innerWidth; |
| 212 | jInnerWidth = innerHeight; | 216 | jInnerWidth = innerHeight; |
| @@ -229,8 +233,8 @@ const Typesetting = props => { | @@ -229,8 +233,8 @@ const Typesetting = props => { | ||
| 229 | }; | 233 | }; |
| 230 | // 加上间距后的最大盒子长宽 计算每列可以放多少个组合 需要计算间距 | 234 | // 加上间距后的最大盒子长宽 计算每列可以放多少个组合 需要计算间距 |
| 231 | // 每个盒子加上边距 和第二组偏移量 如果根据次盒再加上次盒偏移量 | 235 | // 每个盒子加上边距 和第二组偏移量 如果根据次盒再加上次盒偏移量 |
| 232 | - const dSWidthOffsetCombined = (innerWidthCombined + boxLengthOffset + (reference ? 0 : dSLengthOffset)) | ||
| 233 | - let cols = dSWidthOffsetCombined === 0 ? 0 : Math.floor(outerWidth / dSWidthOffsetCombined); | 236 | + const dSWidthOffsetCombined = innerWidthCombined + boxLengthOffset + (reference ? 0 : dSLengthOffset); |
| 237 | + let cols = dSWidthOffsetCombined === 0 ? 0 : Math.floor(outerWidth / dSWidthOffsetCombined); | ||
| 234 | let rows = Math.floor(outerHeight / (innerHeightCombined + boxWidthOffset + (reference ? 0 : dSWidthOffset))); | 238 | let rows = Math.floor(outerHeight / (innerHeightCombined + boxWidthOffset + (reference ? 0 : dSWidthOffset))); |
| 235 | let colsMaxLength = (cols - 1) * (innerWidthCombined + boxLengthOffset + (reference ? 0 : dSLengthOffset)) + innerWidthCombined; | 239 | let colsMaxLength = (cols - 1) * (innerWidthCombined + boxLengthOffset + (reference ? 0 : dSLengthOffset)) + innerWidthCombined; |
| 236 | while (colsMaxLength >= outerWidth && cols > 0) { | 240 | while (colsMaxLength >= outerWidth && cols > 0) { |
| @@ -373,11 +377,15 @@ const Typesetting = props => { | @@ -373,11 +377,15 @@ const Typesetting = props => { | ||
| 373 | alignItems: "center", | 377 | alignItems: "center", |
| 374 | position: "absolute", | 378 | position: "absolute", |
| 375 | left: `${ | 379 | left: `${ |
| 376 | - isVertical ? dSLengthOffset : iSAngle === 90 || iSAngle === 270 | 380 | + isVertical |
| 381 | + ? dSLengthOffset | ||
| 382 | + : iSAngle === 90 || iSAngle === 270 | ||
| 377 | ? innerHeight + dFLengthOffset + dSLengthOffset + dYBJJ | 383 | ? innerHeight + dFLengthOffset + dSLengthOffset + dYBJJ |
| 378 | : innerWidth + dFLengthOffset + dSLengthOffset + dYBJJ | 384 | : innerWidth + dFLengthOffset + dSLengthOffset + dYBJJ |
| 379 | }px`, | 385 | }px`, |
| 380 | - top: `${isVertical ? jInnerHeight + dFWidthOffset + dSWidthOffset + dXBJJ: iSAngle === 90 || iSAngle === 270 ? dSWidthOffset : dSWidthOffset}px`, | 386 | + top: `${ |
| 387 | + isVertical ? jInnerHeight + dFWidthOffset + dSWidthOffset + dXBJJ : iSAngle === 90 || iSAngle === 270 ? dSWidthOffset : dSWidthOffset | ||
| 388 | + }px`, | ||
| 381 | }} | 389 | }} |
| 382 | > | 390 | > |
| 383 | <div style={{ transform: `rotateZ(${iSAngle}deg)` }}> | 391 | <div style={{ transform: `rotateZ(${iSAngle}deg)` }}> |
| @@ -416,8 +424,8 @@ const Typesetting = props => { | @@ -416,8 +424,8 @@ const Typesetting = props => { | ||
| 416 | <div | 424 | <div |
| 417 | key={`${col}-${row}-${index}`} | 425 | key={`${col}-${row}-${index}`} |
| 418 | style={{ | 426 | style={{ |
| 419 | - width: `${innerWidth}px`, | ||
| 420 | - height: `${innerHeight}px`, | 427 | + width: `${jInnerWidth}px`, |
| 428 | + height: `${jInnerHeight}px`, | ||
| 421 | display: "flex", | 429 | display: "flex", |
| 422 | justifyContent: "center", | 430 | justifyContent: "center", |
| 423 | alignItems: "center", | 431 | alignItems: "center", |
| @@ -469,7 +477,7 @@ const Typesetting = props => { | @@ -469,7 +477,7 @@ const Typesetting = props => { | ||
| 469 | useEffect(() => { | 477 | useEffect(() => { |
| 470 | // 计算缩放比例 | 478 | // 计算缩放比例 |
| 471 | // setBoxKey(new Date().getTime()); | 479 | // setBoxKey(new Date().getTime()); |
| 472 | - // setTimeout(() => { | 480 | + setTimeout(() => { |
| 473 | const scaleX = (clientWidth - 50) / (outerWidth + 110); | 481 | const scaleX = (clientWidth - 50) / (outerWidth + 110); |
| 474 | const scaleY = (clientHeight - 5) / (outerHeight + 90); | 482 | const scaleY = (clientHeight - 5) / (outerHeight + 90); |
| 475 | const newScale = Math.min(scaleX, scaleY); | 483 | const newScale = Math.min(scaleX, scaleY); |
| @@ -478,68 +486,91 @@ const Typesetting = props => { | @@ -478,68 +486,91 @@ const Typesetting = props => { | ||
| 478 | boxRef.current.style.transform = `scale(${scaleX}, ${scaleY})`; | 486 | boxRef.current.style.transform = `scale(${scaleX}, ${scaleY})`; |
| 479 | boxRef.current.style.transformOrigin = "top left"; | 487 | boxRef.current.style.transformOrigin = "top left"; |
| 480 | } | 488 | } |
| 481 | - // }, 0); | 489 | + }, 0); |
| 482 | }, [radioValue, slaveRowData, masterData, selectedNode, slaveData]); | 490 | }, [radioValue, slaveRowData, masterData, selectedNode, slaveData]); |
| 483 | // 生成里层 div 的数组 | 491 | // 生成里层 div 的数组 |
| 484 | const innerDivs = []; | 492 | const innerDivs = []; |
| 485 | - | ||
| 486 | - for (let col = 0; col < cols; col++) { | ||
| 487 | - for (let row = 0; row < rows; row++) { | ||
| 488 | - const leftPosition = col * (innerWidthCombined + dYBJJ); | ||
| 489 | - const topPosition = row * (innerHeightCombined + dXBJJ); | ||
| 490 | - innerDivs.push(createBox(col, row, 1, leftPosition, topPosition, iFAngle, DisableMateriallIcon)); | 493 | + // 生成盒子 |
| 494 | + if (cols === 0 || rows === 0) { | ||
| 495 | + if (cols > 0) { | ||
| 496 | + for (let col = 0; col < cols; col++) { | ||
| 497 | + const leftPosition = col * (innerWidthCombined + dYBJJ); | ||
| 498 | + const topPosition = 0 * (innerHeightCombined + dXBJJ); | ||
| 499 | + innerDivs.push(createBoxOne(col, 0, 3, leftPosition, topPosition, iFAngle, DisableMateriallIcon)); | ||
| 500 | + } | ||
| 491 | } | 501 | } |
| 492 | - // 如果可以放下首盒 | ||
| 493 | - if (remaining) { | ||
| 494 | - if (isVertical) { | ||
| 495 | - let leftPosition = 0; | ||
| 496 | - let topPosition = 0; | ||
| 497 | - if (reference) { | ||
| 498 | - // 是否首盒 | ||
| 499 | - // 首盒的上边距下边距 末尾盒子的上下边距 添加那一行的上边距 | ||
| 500 | - leftPosition = col * innerWidthCombined; | ||
| 501 | - topPosition = rows * innerHeightCombined; | ||
| 502 | - } else { | ||
| 503 | - leftPosition = col * (innerWidthCombined + dYBJJ); ; | ||
| 504 | - topPosition = rows *( innerHeightCombined + dXBJJ); | ||
| 505 | - } | ||
| 506 | - innerDivs.push(createBoxOne(col, rows, 3, leftPosition, topPosition, iFAngle, DisableMateriallIcon)); | ||
| 507 | - } else { | ||
| 508 | - for (let index = 0; index < rows; index++) { | ||
| 509 | - // 先默认为首盒参考 | ||
| 510 | - let topPosition = 0; | 502 | + if (rows > 0) { |
| 503 | + for (let row = 0; row < rows; row++) { | ||
| 504 | + const leftPosition = 0 * (innerWidthCombined + dYBJJ); | ||
| 505 | + const topPosition = row * (innerHeightCombined + dXBJJ); | ||
| 506 | + innerDivs.push(createBoxOne(0, row, 3, leftPosition, topPosition, iFAngle, DisableMateriallIcon)); | ||
| 507 | + } | ||
| 508 | + } | ||
| 509 | + } else { | ||
| 510 | + for (let col = 0; col < cols; col++) { | ||
| 511 | + for (let row = 0; row < rows; row++) { | ||
| 512 | + const leftPosition = col * (innerWidthCombined + dYBJJ); | ||
| 513 | + const topPosition = row * (innerHeightCombined + dXBJJ); | ||
| 514 | + innerDivs.push(createBox(col, row, 1, leftPosition, topPosition, iFAngle, DisableMateriallIcon)); | ||
| 515 | + } | ||
| 516 | + // 如果可以放下首盒 | ||
| 517 | + if (remaining) { | ||
| 518 | + if (isVertical) { | ||
| 511 | let leftPosition = 0; | 519 | let leftPosition = 0; |
| 520 | + let topPosition = 0; | ||
| 512 | if (reference) { | 521 | if (reference) { |
| 513 | - topPosition = index * (innerHeightCombined + boxWidthOffset); | ||
| 514 | - leftPosition = cols * (innerWidthCombined + boxLengthOffset); | 522 | + // 是否首盒 |
| 523 | + // 首盒的上边距下边距 末尾盒子的上下边距 添加那一行的上边距 | ||
| 524 | + leftPosition = col * innerWidthCombined; | ||
| 525 | + topPosition = rows * innerHeightCombined; | ||
| 515 | } else { | 526 | } else { |
| 516 | - topPosition = index * (innerHeightCombined + boxWidthOffset + dSWidthOffset); | ||
| 517 | - leftPosition = cols * (innerWidthCombined + boxLengthOffset + dSLengthOffset); | 527 | + leftPosition = col * (innerWidthCombined + dYBJJ); |
| 528 | + topPosition = rows * (innerHeightCombined + dXBJJ); | ||
| 529 | + } | ||
| 530 | + innerDivs.push(createBoxOne(col, rows, 3, leftPosition, topPosition, iFAngle, DisableMateriallIcon)); | ||
| 531 | + } else { | ||
| 532 | + for (let index = 0; index < rows; index++) { | ||
| 533 | + // 先默认为首盒参考 | ||
| 534 | + let topPosition = 0; | ||
| 535 | + let leftPosition = 0; | ||
| 536 | + if (reference) { | ||
| 537 | + topPosition = index * (innerHeightCombined + boxWidthOffset); | ||
| 538 | + leftPosition = cols * (innerWidthCombined + boxLengthOffset); | ||
| 539 | + } else { | ||
| 540 | + topPosition = index * (innerHeightCombined + boxWidthOffset + dSWidthOffset); | ||
| 541 | + leftPosition = cols * (innerWidthCombined + boxLengthOffset + dSLengthOffset); | ||
| 542 | + } | ||
| 543 | + innerDivs.push(createDiv(col, index, 3, leftPosition + col * dYBJJ, topPosition + index * dXBJJ, iFAngle, DisableMateriallIcon)); | ||
| 518 | } | 544 | } |
| 519 | - innerDivs.push(createDiv(col, index, 3, leftPosition + (col * dYBJJ), topPosition + (index * dXBJJ), iFAngle, DisableMateriallIcon)); | ||
| 520 | } | 545 | } |
| 521 | } | 546 | } |
| 522 | } | 547 | } |
| 523 | } | 548 | } |
| 524 | - // 如果第一行只能放下一个 | ||
| 525 | - if (cols === 0 && !isVertical) { | ||
| 526 | - const maxLength = Number(slaveDataDetail?.dMaxLength); | ||
| 527 | - if (maxLength > innerWidth) { | ||
| 528 | - let leftPosition = 0; | ||
| 529 | - let topPosition = 0; | ||
| 530 | - innerDivs.push(createBoxOne(0, rows, 3, leftPosition , topPosition , iFAngle, DisableMateriallIcon)); | ||
| 531 | - } | ||
| 532 | - } | ||
| 533 | - // 如果第一列 | ||
| 534 | - if (rows === 0) { | ||
| 535 | - const maxWidth = Number(slaveDataDetail?.dMaxWidth); | ||
| 536 | - if (maxWidth > innerHeight) { | ||
| 537 | - let leftPosition = 0; | ||
| 538 | - let topPosition = 0; | ||
| 539 | - innerDivs.push(createBoxOne(cols, 0, 3, leftPosition , topPosition, iFAngle, DisableMateriallIcon)); | ||
| 540 | - } | ||
| 541 | - } | ||
| 542 | - | 549 | + |
| 550 | + // // 如果第一行只能放下一个 | ||
| 551 | + // if (cols === 0 && !isVertical) { | ||
| 552 | + // const maxLength = Number(slaveDataDetail?.dMaxLength); | ||
| 553 | + // if (maxLength > innerWidth) { | ||
| 554 | + // let leftPosition = 0; | ||
| 555 | + // let topPosition = 0; | ||
| 556 | + // innerDivs.push(createBoxOne(0, rows, 3, leftPosition, topPosition, iFAngle, DisableMateriallIcon)); | ||
| 557 | + // } | ||
| 558 | + // } | ||
| 559 | + | ||
| 560 | + // // 如果第一列 | ||
| 561 | + // if (rows === 0 && isVertical) { | ||
| 562 | + // const maxWidth = Number(slaveDataDetail?.dMaxWidth); | ||
| 563 | + // if (maxWidth > innerHeight) { | ||
| 564 | + // for (let index = 0; index < cols; index++) { | ||
| 565 | + // let leftPosition = index * (innerWidthCombined + dYBJJ); | ||
| 566 | + // let topPosition = 0; | ||
| 567 | + // innerDivs.push(createBoxOne(cols, 0, 3, leftPosition, topPosition, iFAngle, DisableMateriallIcon)); | ||
| 568 | + // } | ||
| 569 | + // } | ||
| 570 | + // } | ||
| 571 | + | ||
| 572 | + console.log(cols, rows, innerDivs.length, "innerDivs"); | ||
| 573 | + | ||
| 543 | // 判断展开长展开宽是否变化 | 574 | // 判断展开长展开宽是否变化 |
| 544 | if (dPartsLength !== innerWidth && !innerDivs.length) { | 575 | if (dPartsLength !== innerWidth && !innerDivs.length) { |
| 545 | setDPartsLength(innerWidth); | 576 | setDPartsLength(innerWidth); |
| @@ -566,14 +597,23 @@ const Typesetting = props => { | @@ -566,14 +597,23 @@ const Typesetting = props => { | ||
| 566 | : remaining | 597 | : remaining |
| 567 | ? rows + rows * (cols * 2) | 598 | ? rows + rows * (cols * 2) |
| 568 | : rows * (cols * 2); | 599 | : rows * (cols * 2); |
| 569 | - // 计算竖版数量 | ||
| 570 | - if ((cols === 1 && rows === 0 )|| (cols === 0 && rows === 1 )) { | ||
| 571 | - dSinglePQty = 1 | ||
| 572 | - } | ||
| 573 | 600 | ||
| 574 | - const dHorizontalType = isVertical ? cols : remaining ? cols * 2 + 1 : cols * 2; | ||
| 575 | - const dPortraitType = isVertical ? (remaining ? rows * 2 + 1 : rows * 2) : remaining ? rows : rows; | ||
| 576 | 601 | ||
| 602 | + let dHorizontalType = isVertical ? cols : remaining ? cols * 2 + 1 : cols * 2; | ||
| 603 | + let dPortraitType = isVertical ? (remaining ? rows * 2 + 1 : rows * 2) : remaining ? rows : rows; | ||
| 604 | + if (cols === 0 || rows === 0) { | ||
| 605 | + if (innerDivs.length > 0) { | ||
| 606 | + if (cols === 0 && rows > 0) { | ||
| 607 | + dSinglePQty = rows; | ||
| 608 | + dPortraitType = rows; | ||
| 609 | + dHorizontalType = 1; | ||
| 610 | + } else if (rows === 0 && cols > 0) { | ||
| 611 | + dSinglePQty = cols; | ||
| 612 | + dHorizontalType = cols; | ||
| 613 | + dPortraitType = 1; | ||
| 614 | + } | ||
| 615 | + } | ||
| 616 | + } | ||
| 577 | const newDProductQty = masterData.dProductQty; | 617 | const newDProductQty = masterData.dProductQty; |
| 578 | const dMaterialsKQty = slaveDataDetail.dMaterialsKQty || 1; | 618 | const dMaterialsKQty = slaveDataDetail.dMaterialsKQty || 1; |
| 579 | if ( | 619 | if ( |
| @@ -646,6 +686,14 @@ const Typesetting = props => { | @@ -646,6 +686,14 @@ const Typesetting = props => { | ||
| 646 | // typesettingBox.current.style.top = dSBLB + "px"; | 686 | // typesettingBox.current.style.top = dSBLB + "px"; |
| 647 | // typesettingBox.current.style.left = dZBLB + "px"; | 687 | // typesettingBox.current.style.left = dZBLB + "px"; |
| 648 | } | 688 | } |
| 689 | + if (svgBox.current) { | ||
| 690 | + svgBox.current.style.width = newMaterialLength + dYBLB + "px"; | ||
| 691 | + svgBox.current.style.height = newMaterialWidth + dXBLB + "px"; | ||
| 692 | + } | ||
| 693 | + if (svgBoxs.current) { | ||
| 694 | + svgBoxs.current.style.width = newMaterialLength + dYBLB + "px"; | ||
| 695 | + svgBoxs.current.style.height = newMaterialWidth + dXBLB + "px"; | ||
| 696 | + } | ||
| 649 | if (typesettingBoxs.current) { | 697 | if (typesettingBoxs.current) { |
| 650 | typesettingBoxs.current.style.backgroundColor = "#b7e0ff"; | 698 | typesettingBoxs.current.style.backgroundColor = "#b7e0ff"; |
| 651 | // typesettingBox.current.style.margin = [dSBLB, dYBLB, dXBLB, dZBLB].map(item => item + "px").join(" "); | 699 | // typesettingBox.current.style.margin = [dSBLB, dYBLB, dXBLB, dZBLB].map(item => item + "px").join(" "); |
| @@ -659,7 +707,7 @@ const Typesetting = props => { | @@ -659,7 +707,7 @@ const Typesetting = props => { | ||
| 659 | Number(slaveDataDetail?.dMaxLength) >= Number(slaveRowData?.dMachineLength) && | 707 | Number(slaveDataDetail?.dMaxLength) >= Number(slaveRowData?.dMachineLength) && |
| 660 | Number(slaveDataDetail?.dMaxWidth) >= Number(slaveRowData?.dMachineWidth); | 708 | Number(slaveDataDetail?.dMaxWidth) >= Number(slaveRowData?.dMachineWidth); |
| 661 | 709 | ||
| 662 | - const isShow = slaveRowData && slaveRowData.dMachineLength && slaveRowData.dMaxWidth && slaveRowData.dMaxLength && isMax && innerDivs.length > 0; | 710 | + const isShow = (slaveRowData && slaveRowData.dMachineLength && slaveRowData.dMaxWidth && slaveRowData.dMaxLength && isMax && innerDivs.length > 0); |
| 663 | console.log( | 711 | console.log( |
| 664 | slaveDataDetail?.dMaxLength, | 712 | slaveDataDetail?.dMaxLength, |
| 665 | slaveDataDetail?.dMaxWidth, | 713 | slaveDataDetail?.dMaxWidth, |
| @@ -717,7 +765,18 @@ const Typesetting = props => { | @@ -717,7 +765,18 @@ const Typesetting = props => { | ||
| 717 | }} | 765 | }} |
| 718 | > | 766 | > |
| 719 | <div style={style} ref={boxRef}> | 767 | <div style={style} ref={boxRef}> |
| 720 | - <div style={{ position: "absolute", width: `${materialLength}px`, height: `${materialWidth}px`, marginLeft:`${dZBLB}px`, marginTop:`${dSBLB}px`,marginRight:`${dYBLB}px`, marginBottom:`${dXBLB}px` }}> | 768 | + <div |
| 769 | + ref={svgBox} | ||
| 770 | + style={{ | ||
| 771 | + position: "absolute", | ||
| 772 | + // width: `${isRrotate ?materialWidth: materialLength}px`, | ||
| 773 | + // height: `${isRrotate ?materialLength : materialWidth}px`, | ||
| 774 | + marginLeft: `${dZBLB}px`, | ||
| 775 | + marginTop: `${dSBLB}px`, | ||
| 776 | + marginRight: `${dYBLB}px`, | ||
| 777 | + marginBottom: `${dXBLB}px`, | ||
| 778 | + }} | ||
| 779 | + > | ||
| 721 | {boxList.length ? innerDivs : []} | 780 | {boxList.length ? innerDivs : []} |
| 722 | </div> | 781 | </div> |
| 723 | <div | 782 | <div |
| @@ -1036,7 +1095,18 @@ const Typesetting = props => { | @@ -1036,7 +1095,18 @@ const Typesetting = props => { | ||
| 1036 | }} | 1095 | }} |
| 1037 | > | 1096 | > |
| 1038 | <div style={{ ...style, position: "absolute", left: "50%" }} ref={boxsRef}> | 1097 | <div style={{ ...style, position: "absolute", left: "50%" }} ref={boxsRef}> |
| 1039 | - <div style={{ position: "absolute", width: `${materialLength}px`, height: `${materialWidth}px`, marginLeft:`${dZBLB}px`, marginTop:`${dSBLB}px`,marginRight:`${dYBLB}px`, marginBottom:`${dXBLB}px`}}> | 1098 | + <div |
| 1099 | + ref={svgBoxs} | ||
| 1100 | + style={{ | ||
| 1101 | + position: "absolute", | ||
| 1102 | + // width: `${isRrotate ?materialWidth: materialLength}px`, | ||
| 1103 | + // height: `${isRrotate ?materialLength : materialWidth}px`, | ||
| 1104 | + marginLeft: `${dZBLB}px`, | ||
| 1105 | + marginTop: `${dSBLB}px`, | ||
| 1106 | + marginRight: `${dYBLB}px`, | ||
| 1107 | + marginBottom: `${dXBLB}px`, | ||
| 1108 | + }} | ||
| 1109 | + > | ||
| 1040 | {boxList.length ? innerDivs : []} | 1110 | {boxList.length ? innerDivs : []} |
| 1041 | </div> | 1111 | </div> |
| 1042 | <div | 1112 | <div |
| @@ -1125,7 +1195,7 @@ const Typesetting = props => { | @@ -1125,7 +1195,7 @@ const Typesetting = props => { | ||
| 1125 | <div | 1195 | <div |
| 1126 | style={{ | 1196 | style={{ |
| 1127 | position: "absolute", | 1197 | position: "absolute", |
| 1128 | - top: `-${materialWidth / 2 }px`, | 1198 | + top: `-${materialWidth / 2}px`, |
| 1129 | left: "14px", | 1199 | left: "14px", |
| 1130 | width: "20px", | 1200 | width: "20px", |
| 1131 | }} | 1201 | }} |
| @@ -1136,7 +1206,7 @@ const Typesetting = props => { | @@ -1136,7 +1206,7 @@ const Typesetting = props => { | ||
| 1136 | height: `${materialWidth * 0.3}px`, | 1206 | height: `${materialWidth * 0.3}px`, |
| 1137 | position: "absolute", | 1207 | position: "absolute", |
| 1138 | right: "10px", | 1208 | right: "10px", |
| 1139 | - top: `${materialWidth / 2 + 8}px`, | 1209 | + top: `${materialWidth / 2 + 8}px`, |
| 1140 | width: "2px", | 1210 | width: "2px", |
| 1141 | backgroundColor: "#333", | 1211 | backgroundColor: "#333", |
| 1142 | }} | 1212 | }} |
| @@ -1147,7 +1217,7 @@ const Typesetting = props => { | @@ -1147,7 +1217,7 @@ const Typesetting = props => { | ||
| 1147 | width: "30px", | 1217 | width: "30px", |
| 1148 | backgroundColor: "#333", | 1218 | backgroundColor: "#333", |
| 1149 | position: "absolute", | 1219 | position: "absolute", |
| 1150 | - top: `${materialWidth / 2 }px`, | 1220 | + top: `${materialWidth / 2}px`, |
| 1151 | right: "-4.5px", | 1221 | right: "-4.5px", |
| 1152 | }} | 1222 | }} |
| 1153 | /> | 1223 | /> |
src/components/QuickQuote/index.jsx
| @@ -268,7 +268,7 @@ const QuickQuoteEvent = props => { | @@ -268,7 +268,7 @@ const QuickQuoteEvent = props => { | ||
| 268 | extraState.backendParamsConfig = sParamConfig; | 268 | extraState.backendParamsConfig = sParamConfig; |
| 269 | extraState.backendConfig = { sParentFieldsName: sFieldName, sBoxModel: boxModel }; | 269 | extraState.backendConfig = { sParentFieldsName: sFieldName, sBoxModel: boxModel }; |
| 270 | const sBackendParams = sParamConfig | 270 | const sBackendParams = sParamConfig |
| 271 | - .map((item) => { | 271 | + .map(item => { |
| 272 | const { sParamDefault, sParam, sFieldName, iOrder } = item; | 272 | const { sParamDefault, sParam, sFieldName, iOrder } = item; |
| 273 | return !sParamDefault | 273 | return !sParamDefault |
| 274 | ? "" | 274 | ? "" |
| @@ -772,10 +772,10 @@ const QuickQuoteEvent = props => { | @@ -772,10 +772,10 @@ const QuickQuoteEvent = props => { | ||
| 772 | delete partsDataRow.dMaterialsKQty; | 772 | delete partsDataRow.dMaterialsKQty; |
| 773 | delete partsDataRow.dMaterialsLength; | 773 | delete partsDataRow.dMaterialsLength; |
| 774 | delete partsDataRow.dMaterialsWidth; | 774 | delete partsDataRow.dMaterialsWidth; |
| 775 | - if (productClassify.bSpecialRules) { | ||
| 776 | - partsDataRow.dMachineLength = partsDataRow.dMaxMachineLength; | ||
| 777 | - partsDataRow.dMachineWidth = partsDataRow.dMaxMachineWidth; | ||
| 778 | - } | 775 | + // if (productClassify.bSpecialRules) { |
| 776 | + // partsDataRow.dMachineLength = partsDataRow.dMaxMachineLength; | ||
| 777 | + // partsDataRow.dMachineWidth = partsDataRow.dMaxMachineWidth; | ||
| 778 | + // } | ||
| 779 | controlData.push(partsDataRow); | 779 | controlData.push(partsDataRow); |
| 780 | // 材料信息 | 780 | // 材料信息 |
| 781 | for (let i = 0; i < partInfo.materialsInfo.length; i++) { | 781 | for (let i = 0; i < partInfo.materialsInfo.length; i++) { |
| @@ -1978,14 +1978,15 @@ const BoxComponent = props => { | @@ -1978,14 +1978,15 @@ const BoxComponent = props => { | ||
| 1978 | // 提取公式中的变量名 | 1978 | // 提取公式中的变量名 |
| 1979 | const variableNames = formula.match(/\b[a-zA-Z_][a-zA-Z0-9_]*\b/g) || []; | 1979 | const variableNames = formula.match(/\b[a-zA-Z_][a-zA-Z0-9_]*\b/g) || []; |
| 1980 | // 构建函数参数 | 1980 | // 构建函数参数 |
| 1981 | - const params = variableNames.join(","); | 1981 | + const params = variableNames.join(",") + ",Math"; |
| 1982 | // 替换公式中的变量为实际值 | 1982 | // 替换公式中的变量为实际值 |
| 1983 | const func = new Function(params, `return ${formula}`); | 1983 | const func = new Function(params, `return ${formula}`); |
| 1984 | // 提取变量值 | 1984 | // 提取变量值 |
| 1985 | const args = variableNames.map(name => Number(variables[name]) || 0); | 1985 | const args = variableNames.map(name => Number(variables[name]) || 0); |
| 1986 | // 执行函数并返回结果 | 1986 | // 执行函数并返回结果 |
| 1987 | - return func(...args); | 1987 | + return func(...args, Math); |
| 1988 | } catch (error) { | 1988 | } catch (error) { |
| 1989 | + console.error("公式执行错误:", error); | ||
| 1989 | return 0; | 1990 | return 0; |
| 1990 | } | 1991 | } |
| 1991 | }; | 1992 | }; |
| @@ -2006,7 +2007,7 @@ const BoxComponent = props => { | @@ -2006,7 +2007,7 @@ const BoxComponent = props => { | ||
| 2006 | slaveNewData.forEach(x => { | 2007 | slaveNewData.forEach(x => { |
| 2007 | let key = 0; | 2008 | let key = 0; |
| 2008 | if (x.sAssignFormula) { | 2009 | if (x.sAssignFormula) { |
| 2009 | - key = parseFloat(evaluateFormula(x.sAssignFormula, variables)).toFixed(2); | 2010 | + key = evaluateFormula(x.sAssignFormula, variables); |
| 2010 | slaveRowData[x.sName] = key; | 2011 | slaveRowData[x.sName] = key; |
| 2011 | } else { | 2012 | } else { |
| 2012 | key = slaveRowData[x.sName]; | 2013 | key = slaveRowData[x.sName]; |
| @@ -2958,7 +2959,6 @@ const BackendParamsExtraComponent = props => { | @@ -2958,7 +2959,6 @@ const BackendParamsExtraComponent = props => { | ||
| 2958 | return props.getSqlDropDownData(...args); | 2959 | return props.getSqlDropDownData(...args); |
| 2959 | }, | 2960 | }, |
| 2960 | onDataChange: (name, sFieldName, changeValue, sId, dropDownData, isWait) => { | 2961 | onDataChange: (name, sFieldName, changeValue, sId, dropDownData, isWait) => { |
| 2961 | - | ||
| 2962 | const iIndex = slaveData.findIndex(item => item.sId === slaveRowData.sId); | 2962 | const iIndex = slaveData.findIndex(item => item.sId === slaveRowData.sId); |
| 2963 | const iIndex1 = slaveData[iIndex].sBackProcessData.findIndex(item => item[sParentFieldsName]); | 2963 | const iIndex1 = slaveData[iIndex].sBackProcessData.findIndex(item => item[sParentFieldsName]); |
| 2964 | const showConfig = viewConfigs.find(item => item.sName === sFieldName); | 2964 | const showConfig = viewConfigs.find(item => item.sName === sFieldName); |
src/mobile/quotation/detailNew.jsx
| @@ -2312,6 +2312,7 @@ const PrintParamsComponent = props => { | @@ -2312,6 +2312,7 @@ const PrintParamsComponent = props => { | ||
| 2312 | iColValue: 8, | 2312 | iColValue: 8, |
| 2313 | }; | 2313 | }; |
| 2314 | }); | 2314 | }); |
| 2315 | + console.log("🚀 ~ printParamsConfig:", printParamsConfig) | ||
| 2315 | 2316 | ||
| 2316 | const result = []; | 2317 | const result = []; |
| 2317 | for (let i = 0; i < printParams.length + 1; i++) { | 2318 | for (let i = 0; i < printParams.length + 1; i++) { |