Commit e26288e48e980d98162825e0e930f81f89872c1c

Authored by 陈鑫涛
1 parent 8daf27c8

双部件

src/components/Common/BoxDesignCompontent/index.css
... ... @@ -22,7 +22,7 @@
22 22 }
23 23 .boxBody .boxLeft {
24 24 width: 180px;
25   - height: 320px;
  25 + min-height: 320px;
26 26 display: flex;
27 27 flex-wrap: wrap;
28 28 flex-direction: column;
... ... @@ -34,7 +34,7 @@
34 34 }
35 35 .boxBody .boxRight {
36 36 width: 180px;
37   - height: 320px;
  37 + min-height: 320px;
38 38 display: flex;
39 39 flex-wrap: wrap;
40 40 justify-content: space-between;
... ... @@ -54,8 +54,8 @@
54 54 }
55 55 .boxBody .boxBottom .svgBox {
56 56 width: 100%;
57   - height: 250px;
58   - background-color: #9AFF9A;
  57 + min-height: 250px;
  58 + background-color: #9aff9a;
59 59 }
60 60 .boxBody .boxBottom .content {
61 61 width: 100%;
... ... @@ -78,8 +78,9 @@
78 78 line-height: 20px;
79 79 text-align: center;
80 80 }
81   -.boxBody :global .mySelects .ant-select-selector {
82   - background-color: #99CCFF !important;
  81 +.boxBody :global .mySelects .ant-select-selector,
  82 +.boxBody :global .mySelectsDouble .ant-select-selector {
  83 + background-color: #99ccff !important;
83 84 /* 选择框背景色 */
84 85 height: 40px !important;
85 86 /* 选择框高度 */
... ... @@ -88,6 +89,11 @@
88 89 color: transparent !important;
89 90 /* 选择框文字颜色 */
90 91 }
  92 +.boxBody :global .mySelectsDouble .ant-select-selection-item {
  93 + color: #333 !important;
  94 + /* 选择框文字颜色 */
  95 + line-height: 40px !important;
  96 +}
91 97 .boxBody .mySelects {
92 98 position: relative;
93 99 }
... ... @@ -96,17 +102,20 @@
96 102 align-items: center;
97 103 justify-content: space-between;
98 104 width: 180px;
99   - height: 40px;
  105 + min-height: 40px;
100 106 position: relative;
101 107 }
102 108 .boxBody .boxInput :global .ant-input {
103   - background-color: #99CCFF !important;
  109 + background-color: #99ccff !important;
104 110 /* 输入框背景色 */
105 111 border: 1px solid #d9d9d9;
106 112 height: 40px;
107 113 }
  114 +.boxBody .boxInput :global .ant-input::placeholder {
  115 + color: #fff !important;
  116 +}
108 117 .boxBody .text {
109   - background-color: #99CCFF;
  118 + background-color: #99ccff;
110 119 width: 100%;
111 120 height: 40px;
112 121 line-height: 40px;
... ... @@ -115,18 +124,18 @@
115 124 margin-right: 1px;
116 125 }
117 126 .boxBody .content :global .ant-input {
118   - background-color: #EEEEEE !important;
  127 + background-color: #eeeeee !important;
119 128 /* 输入框背景色 */
120 129 height: 40px;
121 130 }
122 131 .boxBody .content :global .ant-select-selector {
123   - background-color: #EEEEEE !important;
  132 + background-color: #eeeeee !important;
124 133 /* 选择框背景色 */
125 134 height: 40px !important;
126 135 /* 选择框高度 */
127 136 }
128 137 .boxBody .content .text {
129   - background-color: #EEEEEE;
  138 + background-color: #eeeeee;
130 139 margin: 0;
131 140 }
132 141 .boxBody .content .boxFlex {
... ... @@ -148,7 +157,7 @@
148 157 flex: 1;
149 158 }
150 159 .boxBody .content .boxFlexs .boxInputs :global .ant-input {
151   - background-color: #EEEEEE !important;
  160 + background-color: #eeeeee !important;
152 161 /* 输入框背景色 */
153 162 height: 40px;
154 163 }
... ... @@ -162,7 +171,7 @@
162 171 top: 3px;
163 172 width: 60px;
164 173 height: 30px;
165   - background-color: #EEE;
  174 + background-color: #eee;
166 175 color: #333;
167 176 line-height: 40px;
168 177 z-index: 2;
... ...
src/components/Common/BoxDesignCompontent/index.js
... ... @@ -23,6 +23,26 @@ const BoxDesignEvent = props => {
23 23  
24 24 addState.getSqlOptions = async type => {
25 25 setLoading(true);
  26 + if (!type) {
  27 + setLoading(false);
  28 + setOptions([
  29 + {
  30 + sId: "0",
  31 + sCode: "0",
  32 + sName: "矩形",
  33 + sMakeUpPath: "",
  34 + sTypes: "0",
  35 + },
  36 + {
  37 + sId: "1",
  38 + sCode: "1",
  39 + sName: "梯形",
  40 + sMakeUpPath: "",
  41 + sTypes: "1",
  42 + },
  43 + ]);
  44 + return;
  45 + }
26 46 const { app, token, makeConfig } = props;
27 47 // const quickQuoteConfig = config.gdsconfigformslave.find(item => item.sControlName === "BtnQuickQuote") || {};
28 48 const { sId } = makeConfig;
... ... @@ -48,6 +68,8 @@ const BoxDesignEvent = props => {
48 68 }
49 69 return 0; // 其他元素保持原顺序
50 70 });
  71 + console.log(data.data.dataset.rows, "data.data.dataset.rows");
  72 +
51 73 setOptions(data.data.dataset.rows);
52 74 }
53 75 setLoading(false);
... ... @@ -89,6 +111,8 @@ const BoxDesignCompontent = baseProps => {
89 111 const [boxKey, setBoxKey] = useState(new Date().getTime());
90 112 const [doubleLayerList, setDoubleLayerList] = useState([]);
91 113 if (!boxVisible) return "";
  114 + console.log(baseProps, "baseProps");
  115 +
92 116 // 1️⃣ 只负责 tableColum
93 117 useEffect(() => {
94 118 if (!tableData?.length) return;
... ... @@ -230,6 +254,18 @@ const BoxDesignCompontent = baseProps => {
230 254 show: true,
231 255 showName: item, // 参数名称
232 256 sAssignFormula: null,
  257 + sLength: null,
  258 + sWidth: null,
  259 + sType: null, // 盒型类别
  260 + sTypeName: null, // 盒型名称
  261 + sOffset: null, // 偏移
  262 + sQuantity: null, // 数量
  263 + cLength: null,
  264 + cWidth: null,
  265 + cType: null, // 盒型类别
  266 + cTypeName: null, // 盒型名称
  267 + cOffset: null, // 偏移
  268 + cQuantity: null, // 数量
233 269 });
234 270 });
235 271 // 部件信息
... ... @@ -243,13 +279,27 @@ const BoxDesignCompontent = baseProps => {
243 279 });
244 280 if (i !== -1) {
245 281 const x = newBoxList.findIndex(z => z.sName === titleList1[i].name);
246   - newBoxList[x].value = item.iValue;
247   - newBoxList[x].type = item.sTypes;
248   - newBoxList[x].showName = item.sName;
249   - newBoxList[x].selectImage = item.sMakeUpPath;
250   - newBoxList[x].sName = titleList1[i].name;
251   - newBoxList[x].sAssignFormula = item.sAssignFormula;
252   - newBoxList[x].bVisible = item.bVisible;
  282 + Object.assign(newBoxList[x], {
  283 + value: item.iValue,
  284 + type: item.sTypes,
  285 + showName: item.sName,
  286 + selectImage: item.sMakeUpPath,
  287 + sName: titleList1[i].name,
  288 + sAssignFormula: item.sAssignFormula,
  289 + bVisible: item.bVisible,
  290 + sLength: item.sLength,
  291 + sWidth: item.sWidth,
  292 + sType: item.sType,
  293 + sTypeName: item.sTypeName,
  294 + sOffset: item.sOffset,
  295 + sQuantity: item.sQuantity,
  296 + cLength: item.cLength,
  297 + cWidth: item.cWidth,
  298 + cType: item.cType,
  299 + cTypeName: item.cTypeName,
  300 + cOffset: item.cOffset,
  301 + cQuantity: item.cQuantity,
  302 + });
253 303 }
254 304 });
255 305 } else {
... ... @@ -273,10 +323,10 @@ const BoxDesignCompontent = baseProps => {
273 323 }
274 324 // 盒身信息
275 325 if (masterData) {
276   - const headLength = slaveData.find(item => item.sCode === "dSHC")?.iValue
277   - const headWidth = slaveData.find(item => item.sCode === "dSHK")?.iValue
278   - const orderLength = slaveData.find(item => item.sCode === "dCHC")?.iValue
279   - const orderWidth = slaveData.find(item => item.sCode === "dCHK")?.iValue
  326 + const headLength = slaveData.find(item => item.sCode === "dSHC")?.iValue;
  327 + const headWidth = slaveData.find(item => item.sCode === "dSHK")?.iValue;
  328 + const orderLength = slaveData.find(item => item.sCode === "dCHC")?.iValue;
  329 + const orderWidth = slaveData.find(item => item.sCode === "dCHK")?.iValue;
280 330 newBoxList.forEach((item, index) => {
281 331 if (item.sName === "盒身") {
282 332 newBoxList[index].value = masterData.sBoxBody;
... ... @@ -298,7 +348,7 @@ const BoxDesignCompontent = baseProps => {
298 348 newBoxList[index].value = orderLength;
299 349 } else if (item.sName === "次盒宽") {
300 350 newBoxList[index].value = orderWidth;
301   - }
  351 + }
302 352 });
303 353 }
304 354 // 有数据的时候 盒型设计需要赋值
... ... @@ -422,9 +472,13 @@ const BoxDesignCompontent = baseProps => {
422 472 }
423 473 };
424 474  
425   - const handleChange = (e, index) => {
  475 + const handleChange = (e, index, field) => {
426 476 const updatedBoxList = [...boxList];
427   - updatedBoxList[index].value = e.target.value;
  477 + if (field) {
  478 + updatedBoxList[index][field] = e.target.value;
  479 + } else {
  480 + updatedBoxList[index].value = e.target.value;
  481 + }
428 482 setBoxList(updatedBoxList);
429 483 };
430 484  
... ... @@ -434,7 +488,7 @@ const BoxDesignCompontent = baseProps => {
434 488 setBoxList(updatedBoxList);
435 489 };
436 490  
437   - const handleSelect = (name, selectConfig, index, type) => {
  491 + const handleSelect = (name, selectConfig, index, type, doubleType) => {
438 492 let updatedBoxList = [...boxList];
439 493 updatedBoxList[index].type = name;
440 494 updatedBoxList[index].selectImage = selectConfig.image;
... ... @@ -460,6 +514,17 @@ const BoxDesignCompontent = baseProps => {
460 514 }
461 515 setBoxList(updatedBoxList);
462 516 };
  517 + const handleSelects = (name, selectConfig, index, type, doubleType) => {
  518 + let updatedBoxList = [...boxList];
  519 + if (doubleType === 0) {
  520 + updatedBoxList[index].sTypeName = Number(name) === 0 ? "矩形" : "梯形";
  521 + updatedBoxList[index].sType = Number(name)
  522 + } else {
  523 + updatedBoxList[index].cTypeName = Number(name) === 0 ? "矩形" : "梯形";
  524 + updatedBoxList[index].cType = Number(name)
  525 + }
  526 + setBoxList(updatedBoxList);
  527 + };
463 528 const getImage = fileName => {
464 529 // const imageUrl = `${commonConfig.file_host}file/download?savePathStr=${fileName}&sModelsId=100&token=${props.token}`;
465 530 const imageUrl = `${commonConfig.file_host}file/download?savePathStr=${fileName}&scale=0.1&sModelsId=100&token=${props.token}`;
... ... @@ -477,10 +542,22 @@ const BoxDesignCompontent = baseProps => {
477 542 </Select.Option>
478 543 );
479 544 };
480   - const svgBoxProps = {
  545 + const renderOptionWithText = option => {
  546 + return (
  547 + <Select.Option key={option.sId} value={option.sCode} label={option.sName}>
  548 + <div style={{ display: "flex", alignItems: "center" }}>
  549 + <span>{option.sName}</span>
  550 + </div>
  551 + </Select.Option>
  552 + );
  553 + };
  554 + // const [svgBoxProps, setSvgBoxProps] = useState({ ...props, boxList, showNew: 0, dSvgBoxWidth: 500, dSvgBoxHeight: 250 });
  555 + let svgBoxProps = {
481 556 ...props,
482 557 boxList,
483 558 showNew: 0,
  559 + // dSvgBoxWidth: 500,
  560 + // dSvgBoxHeight: 250,
484 561 };
485 562 const dobuleProps = {
486 563 ...props,
... ... @@ -513,6 +590,18 @@ const BoxDesignCompontent = baseProps =&gt; {
513 590 bVisible: item.value ? true : false,
514 591 sParentId: masterData.sId,
515 592 sAssignFormula: item.sAssignFormula,
  593 + sLength: item.sLength,
  594 + sWidth: item.sWidth,
  595 + sType: item.sType,
  596 + sTypeName: item.sTypeName,
  597 + sOffset: item.sOffset,
  598 + sQuantity: item.sQuantity,
  599 + cLength: item.cLength,
  600 + cWidth: item.cWidth,
  601 + cType: item.cType,
  602 + cTypeName: item.cTypeName,
  603 + cOffset: item.cOffset,
  604 + cQuantity: item.cQuantity,
516 605 };
517 606 // if (item.value !== "") {
518 607 newSlaveData.push(data);
... ... @@ -534,7 +623,6 @@ const BoxDesignCompontent = baseProps =&gt; {
534 623 let sWidthFormula = "";
535 624 const boxType = boxList.find(item => item.sName === "盒身")?.type;
536 625 if (boxType === "8") {
537   -
538 626 } else {
539 627 const boxLength = Number(boxList.find(item => item.sName === "盒长")?.value);
540 628 const boxWidth = Number(boxList.find(item => item.sName === "盒宽")?.value);
... ... @@ -878,7 +966,27 @@ const BoxDesignCompontent = baseProps =&gt; {
878 966 const i = boxList.findIndex(x => x.sName === name);
879 967 return i || 0;
880 968 };
881   -
  969 + const types = (leftBoxList || []).find(item => {
  970 + if (!item.type) return false;
  971 + return item.type.includes("09");
  972 + });
  973 + const typesRight = (rightBoxList || []).find(item => {
  974 + if (!item.type) return false;
  975 + return item.type.includes("09");
  976 + });
  977 + const typesTop = (topBoxList || []).find(item => {
  978 + if (!item.type) return false;
  979 + return item.type.includes("09");
  980 + });
  981 + if (types || typesRight) {
  982 + svgBoxProps = {
  983 + ...props,
  984 + boxList,
  985 + showNew: 0,
  986 + // dSvgBoxWidth: 500,
  987 + // dSvgBoxHeight: 400,
  988 + };
  989 + }
882 990 return (
883 991 <AntdDraggableModal
884 992 width="1000px"
... ... @@ -901,7 +1009,7 @@ const BoxDesignCompontent = baseProps =&gt; {
901 1009 {/* 盒身信息 */}
902 1010  
903 1011 <div className={styles.boxBody} key={boxKey}>
904   - <div className={styles.boxTop}>
  1012 + <div className={styles.boxTop} style={{ height: `${typesTop ? "200px" : "100px"}` }}>
905 1013 {boxType !== "8" &&
906 1014 topBoxList.map((topItem, index) => (
907 1015 <div key={index} className={styles.boxFlex} style={{ display: topItem.show ? "block" : "none" }}>
... ... @@ -930,25 +1038,146 @@ const BoxDesignCompontent = baseProps =&gt; {
930 1038 >
931 1039 {!loading ? options.map(option => renderOptionWithImage(option)) : ""}
932 1040 </Select>
933   - <div className={styles.boxInput}>
934   - {/* <div className={styles.text}>参数:</div> */}
935   - <Input
936   - value={topItem?.showName}
937   - onChange={e => handleChangeName(e, index)}
938   - onFocus={e => handleFocus(e, index)}
939   - onBlur={e => handleBlur(e, index)}
940   - readOnly={!topItem?.isEditable}
941   - className={styles.text}
942   - />
943   - <Input
944   - value={topItem?.value}
945   - onChange={e => handleChange(e, index)}
946   - onFocus={e => handleFocus(e, index)}
947   - onBlur={e => handleBlur(e, index)}
948   - readOnly={!topItem?.isEditable}
949   - style={{ width: " 80%" }}
950   - />
951   - </div>
  1041 + {topItem.type && topItem.type.includes("09") ? (
  1042 + <div>
  1043 + <div className={styles.boxInput}>
  1044 + <div className={styles.text} style={{ width: " 100%" }}>
  1045 + 层1{" "}
  1046 + </div>
  1047 + <Input
  1048 + value={topItem?.sLength}
  1049 + onChange={e => handleChange(e, findIndexBySname(topItem.sName), "sLength")}
  1050 + onFocus={e => handleFocus(e, findIndexBySname(topItem.sName))}
  1051 + onBlur={e => handleBlur(e, findIndexBySname(topItem.sName))}
  1052 + readOnly={!topItem?.isEditable}
  1053 + style={{ width: " 80%" }}
  1054 + placeholder="长"
  1055 + />
  1056 + <Input
  1057 + value={topItem?.sWidth}
  1058 + onChange={e => handleChange(e, findIndexBySname(topItem.sName), "sWidth")}
  1059 + onFocus={e => handleFocus(e, findIndexBySname(topItem.sName))}
  1060 + onBlur={e => handleBlur(e, findIndexBySname(topItem.sName))}
  1061 + readOnly={!topItem?.isEditable}
  1062 + style={{ width: " 80%" }}
  1063 + placeholder="宽"
  1064 + />
  1065 + </div>
  1066 + <div className={styles.boxInput}>
  1067 + <Select
  1068 + optionLabelProp="label"
  1069 + className="mySelectsDouble"
  1070 + style={{ width: 180, color: "#000" }}
  1071 + defaultValue={options.length ? options[0].value : ""}
  1072 + value={topItem?.sTypeName || ""}
  1073 + onSelect={(value, option) => handleSelects(value, option, findIndexBySname(topItem.sName), 0, 0)}
  1074 + onDropdownVisibleChange={async open => {
  1075 + if (open) {
  1076 + props.getSqlOptions(null); // 在下拉菜单打开时调用 getSqlOptions
  1077 + }
  1078 + }}
  1079 + >
  1080 + {!loading ? options.map(option => renderOptionWithText(option)) : ""}
  1081 + </Select>
  1082 + <Input
  1083 + value={topItem?.sQuantity}
  1084 + onChange={e => handleChange(e, findIndexBySname(topItem.sName), "sQuantity")}
  1085 + onFocus={e => handleFocus(e, findIndexBySname(topItem.sName))}
  1086 + onBlur={e => handleBlur(e, findIndexBySname(topItem.sName))}
  1087 + readOnly={!topItem?.isEditable}
  1088 + style={{ width: " 80%" }}
  1089 + placeholder="个数"
  1090 + />
  1091 + <Input
  1092 + value={topItem?.sOffset}
  1093 + onChange={e => handleChange(e, findIndexBySname(topItem.sName), "sOffset")}
  1094 + onFocus={e => handleFocus(e, findIndexBySname(topItem.sName))}
  1095 + onBlur={e => handleBlur(e, findIndexBySname(topItem.sName))}
  1096 + readOnly={!topItem?.isEditable}
  1097 + style={{ width: " 80%" }}
  1098 + placeholder="偏移"
  1099 + />
  1100 + </div>
  1101 + <div className={styles.boxInput}>
  1102 + <div className={styles.text} style={{ width: " 100%" }}>
  1103 + 层2{" "}
  1104 + </div>
  1105 + <Input
  1106 + value={topItem?.cLength}
  1107 + onChange={e => handleChange(e, findIndexBySname(topItem.sName), "cLength")}
  1108 + onFocus={e => handleFocus(e, findIndexBySname(topItem.sName))}
  1109 + onBlur={e => handleBlur(e, findIndexBySname(topItem.sName))}
  1110 + readOnly={!topItem?.isEditable}
  1111 + style={{ width: " 80%" }}
  1112 + placeholder="长"
  1113 + />
  1114 + <Input
  1115 + value={topItem?.cWidth}
  1116 + onChange={e => handleChange(e, findIndexBySname(topItem.sName), "cWidth")}
  1117 + onFocus={e => handleFocus(e, findIndexBySname(topItem.sName))}
  1118 + onBlur={e => handleBlur(e, findIndexBySname(topItem.sName))}
  1119 + readOnly={!topItem?.isEditable}
  1120 + style={{ width: " 80%" }}
  1121 + placeholder="宽"
  1122 + />
  1123 + </div>
  1124 + <div className={styles.boxInput}>
  1125 + <Select
  1126 + optionLabelProp="label"
  1127 + className="mySelectsDouble"
  1128 + style={{ width: 180, color: "#000" }}
  1129 + defaultValue={options.length ? options[0].value : ""}
  1130 + value={topItem?.cTypeName || ""}
  1131 + onSelect={(value, option) => handleSelects(value, option, findIndexBySname(topItem.sName), 0, 1)}
  1132 + onDropdownVisibleChange={async open => {
  1133 + if (open) {
  1134 + props.getSqlOptions(null); // 在下拉菜单打开时调用 getSqlOptions
  1135 + }
  1136 + }}
  1137 + >
  1138 + {!loading ? options.map(option => renderOptionWithText(option)) : ""}
  1139 + </Select>
  1140 + <Input
  1141 + value={topItem?.cQuantity}
  1142 + onChange={e => handleChange(e, findIndexBySname(topItem.sName), "cQuantity")}
  1143 + onFocus={e => handleFocus(e, findIndexBySname(topItem.sName))}
  1144 + onBlur={e => handleBlur(e, findIndexBySname(topItem.sName))}
  1145 + readOnly={!topItem?.isEditable}
  1146 + style={{ width: " 80%" }}
  1147 + placeholder="个数"
  1148 + />
  1149 + <Input
  1150 + value={topItem?.cOffset}
  1151 + onChange={e => handleChange(e, findIndexBySname(topItem.sName), "cOffset")}
  1152 + onFocus={e => handleFocus(e, findIndexBySname(topItem.sName))}
  1153 + onBlur={e => handleBlur(e, findIndexBySname(topItem.sName))}
  1154 + readOnly={!topItem?.isEditable}
  1155 + style={{ width: " 80%" }}
  1156 + placeholder="偏移"
  1157 + />
  1158 + </div>
  1159 + </div>
  1160 + ) : (
  1161 + <div className={styles.boxInput}>
  1162 + {/* <div className={styles.text}>参数:</div> */}
  1163 + <Input
  1164 + value={topItem?.showName}
  1165 + onChange={e => handleChangeName(e, index)}
  1166 + onFocus={e => handleFocus(e, index)}
  1167 + onBlur={e => handleBlur(e, index)}
  1168 + readOnly={!topItem?.isEditable}
  1169 + className={styles.text}
  1170 + />
  1171 + <Input
  1172 + value={topItem?.value}
  1173 + onChange={e => handleChange(e, index)}
  1174 + onFocus={e => handleFocus(e, index)}
  1175 + onBlur={e => handleBlur(e, index)}
  1176 + readOnly={!topItem?.isEditable}
  1177 + style={{ width: " 80%" }}
  1178 + />
  1179 + </div>
  1180 + )}
952 1181 </div>
953 1182 ))}
954 1183 {boxType === "8" &&
... ... @@ -1000,7 +1229,7 @@ const BoxDesignCompontent = baseProps =&gt; {
1000 1229 </div>
1001 1230 ))}
1002 1231 </div>
1003   - <div className={styles.boxLeft}>
  1232 + <div className={styles.boxLeft} style={{ top: `${typesTop ? "240px" : "130px"}` }}>
1004 1233 {boxType !== "8" &&
1005 1234 leftBoxList.map((item, index) => (
1006 1235 <div key={index + 3} className={styles.boxFlex} style={{ display: item?.show ? "block" : "none" }}>
... ... @@ -1038,22 +1267,145 @@ const BoxDesignCompontent = baseProps =&gt; {
1038 1267 ) : (
1039 1268 ""
1040 1269 )}
1041   - <Input
1042   - value={item?.showName}
1043   - onChange={e => handleChangeName(e, findIndexBySname(item.sName))}
1044   - onFocus={e => handleFocus(e, findIndexBySname(item.sName))}
1045   - onBlur={e => handleBlur(e, findIndexBySname(item.sName))}
1046   - readOnly={!item?.isEditable}
1047   - className={styles.text}
1048   - />
1049   - <Input
1050   - value={item?.value}
1051   - onChange={e => handleChange(e, findIndexBySname(item.sName))}
1052   - onFocus={e => handleFocus(e, findIndexBySname(item.sName))}
1053   - onBlur={e => handleBlur(e, findIndexBySname(item.sName))}
1054   - readOnly={!item?.isEditable}
1055   - style={{ width: " 80%" }}
1056   - />
  1270 + {item.type && item.type.includes("09") ? (
  1271 + <div>
  1272 + <div className={styles.boxInput}>
  1273 + <div className={styles.text} style={{ width: " 100%" }}>
  1274 + 层1{" "}
  1275 + </div>
  1276 + <Input
  1277 + value={item?.sLength}
  1278 + onChange={e => handleChange(e, findIndexBySname(item.sName), "sLength")}
  1279 + onFocus={e => handleFocus(e, findIndexBySname(item.sName))}
  1280 + onBlur={e => handleBlur(e, findIndexBySname(item.sName))}
  1281 + readOnly={!item?.isEditable}
  1282 + style={{ width: " 80%" }}
  1283 + placeholder="长"
  1284 + />
  1285 + <Input
  1286 + value={item?.sWidth}
  1287 + onChange={e => handleChange(e, findIndexBySname(item.sName), "sWidth")}
  1288 + onFocus={e => handleFocus(e, findIndexBySname(item.sName))}
  1289 + onBlur={e => handleBlur(e, findIndexBySname(item.sName))}
  1290 + readOnly={!item?.isEditable}
  1291 + style={{ width: " 80%" }}
  1292 + placeholder="宽"
  1293 + />
  1294 + </div>
  1295 + <div className={styles.boxInput}>
  1296 + <Select
  1297 + optionLabelProp="label"
  1298 + className="mySelectsDouble"
  1299 + style={{ width: 180, color: "#000" }}
  1300 + defaultValue={options.length ? options[0].value : ""}
  1301 + value={item?.sTypeName || ""}
  1302 + onSelect={(value, option) => handleSelects(value, option, findIndexBySname(item.sName), 0, 0)}
  1303 + onDropdownVisibleChange={async open => {
  1304 + if (open) {
  1305 + props.getSqlOptions(null); // 在下拉菜单打开时调用 getSqlOptions
  1306 + }
  1307 + }}
  1308 + >
  1309 + {!loading ? options.map(option => renderOptionWithText(option)) : ""}
  1310 + </Select>
  1311 + <Input
  1312 + value={item?.sQuantity}
  1313 + onChange={e => handleChange(e, findIndexBySname(item.sName), "sQuantity")}
  1314 + onFocus={e => handleFocus(e, findIndexBySname(item.sName))}
  1315 + onBlur={e => handleBlur(e, findIndexBySname(item.sName))}
  1316 + readOnly={!item?.isEditable}
  1317 + style={{ width: " 80%" }}
  1318 + placeholder="个数"
  1319 + />
  1320 + <Input
  1321 + value={item?.sOffset}
  1322 + onChange={e => handleChange(e, findIndexBySname(item.sName), "sOffset")}
  1323 + onFocus={e => handleFocus(e, findIndexBySname(item.sName))}
  1324 + onBlur={e => handleBlur(e, findIndexBySname(item.sName))}
  1325 + readOnly={!item?.isEditable}
  1326 + style={{ width: " 80%" }}
  1327 + placeholder="偏移"
  1328 + />
  1329 + </div>
  1330 + <div className={styles.boxInput}>
  1331 + <div className={styles.text} style={{ width: " 100%" }}>
  1332 + 层2{" "}
  1333 + </div>
  1334 + <Input
  1335 + value={item?.cLength}
  1336 + onChange={e => handleChange(e, findIndexBySname(item.sName), "cLength")}
  1337 + onFocus={e => handleFocus(e, findIndexBySname(item.sName))}
  1338 + onBlur={e => handleBlur(e, findIndexBySname(item.sName))}
  1339 + readOnly={!item?.isEditable}
  1340 + style={{ width: " 80%" }}
  1341 + placeholder="长"
  1342 + />
  1343 + <Input
  1344 + value={item?.cWidth}
  1345 + onChange={e => handleChange(e, findIndexBySname(item.sName), "cWidth")}
  1346 + onFocus={e => handleFocus(e, findIndexBySname(item.sName))}
  1347 + onBlur={e => handleBlur(e, findIndexBySname(item.sName))}
  1348 + readOnly={!item?.isEditable}
  1349 + style={{ width: " 80%" }}
  1350 + placeholder="宽"
  1351 + />
  1352 + </div>
  1353 + <div className={styles.boxInput}>
  1354 + <Select
  1355 + optionLabelProp="label"
  1356 + className="mySelectsDouble"
  1357 + style={{ width: 180, color: "#000" }}
  1358 + defaultValue={options.length ? options[0].value : ""}
  1359 + value={item?.cTypeName || ""}
  1360 + onSelect={(value, option) => handleSelects(value, option, findIndexBySname(item.sName), 0, 1)}
  1361 + onDropdownVisibleChange={async open => {
  1362 + if (open) {
  1363 + props.getSqlOptions(null); // 在下拉菜单打开时调用 getSqlOptions
  1364 + }
  1365 + }}
  1366 + >
  1367 + {!loading ? options.map(option => renderOptionWithText(option)) : ""}
  1368 + </Select>
  1369 + <Input
  1370 + value={item?.cQuantity}
  1371 + onChange={e => handleChange(e, findIndexBySname(item.sName), "cQuantity")}
  1372 + onFocus={e => handleFocus(e, findIndexBySname(item.sName))}
  1373 + onBlur={e => handleBlur(e, findIndexBySname(item.sName))}
  1374 + readOnly={!item?.isEditable}
  1375 + style={{ width: " 80%" }}
  1376 + placeholder="个数"
  1377 + />
  1378 + <Input
  1379 + value={item?.cOffset}
  1380 + onChange={e => handleChange(e, findIndexBySname(item.sName), "cOffset")}
  1381 + onFocus={e => handleFocus(e, findIndexBySname(item.sName))}
  1382 + onBlur={e => handleBlur(e, findIndexBySname(item.sName))}
  1383 + readOnly={!item?.isEditable}
  1384 + style={{ width: " 80%" }}
  1385 + placeholder="偏移"
  1386 + />
  1387 + </div>
  1388 + </div>
  1389 + ) : (
  1390 + <div className={styles.boxInput}>
  1391 + <Input
  1392 + value={item?.showName}
  1393 + onChange={e => handleChangeName(e, findIndexBySname(item.sName))}
  1394 + onFocus={e => handleFocus(e, findIndexBySname(item.sName))}
  1395 + onBlur={e => handleBlur(e, findIndexBySname(item.sName))}
  1396 + readOnly={!item?.isEditable}
  1397 + className={styles.text}
  1398 + />
  1399 + <Input
  1400 + value={item?.value}
  1401 + onChange={e => handleChange(e, findIndexBySname(item.sName))}
  1402 + onFocus={e => handleFocus(e, findIndexBySname(item.sName))}
  1403 + onBlur={e => handleBlur(e, findIndexBySname(item.sName))}
  1404 + readOnly={!item?.isEditable}
  1405 + style={{ width: " 80%" }}
  1406 + />
  1407 + </div>
  1408 + )}
1057 1409 </div>
1058 1410 </div>
1059 1411 ))}
... ... @@ -1118,7 +1470,7 @@ const BoxDesignCompontent = baseProps =&gt; {
1118 1470 </div>
1119 1471 ))}
1120 1472 </div>
1121   - <div className={styles.boxRight}>
  1473 + <div className={styles.boxRight} style={{ top: `${typesTop ? "240px" : "130px"}` }}>
1122 1474 {boxType !== "8" &&
1123 1475 rightBoxList.map((item, index) => (
1124 1476 <div key={findIndexBySname(item.sName)} className={styles.boxFlex} style={{ display: item?.show ? "block" : "none" }}>
... ... @@ -1138,42 +1490,163 @@ const BoxDesignCompontent = baseProps =&gt; {
1138 1490 >
1139 1491 {!loading ? options.map(option => renderOptionWithImage(option)) : ""}
1140 1492 </Select>
1141   - <div className={styles.boxInput}>
1142   - {item?.selectImage ? (
1143   - <img
1144   - src={item?.selectImage}
1145   - alt={item.value}
1146   - style={{
1147   - width: 40,
1148   - height: 30,
1149   - marginRight: 8,
1150   - position: "absolute",
1151   - left: 20,
1152   - top: -35,
1153   - zIndex: 10,
1154   - }}
1155   - />
1156   - ) : (
1157   - ""
1158   - )}
  1493 + {item?.type && item?.type.includes("09") ? (
  1494 + <div>
  1495 + <div className={styles.boxInput}>
  1496 + <div className={styles.text} style={{ width: " 100%" }}>
  1497 + 层1{" "}
  1498 + </div>
  1499 + <Input
  1500 + value={item?.sLength}
  1501 + onChange={e => handleChange(e, findIndexBySname(item.sName), "sLength")}
  1502 + onFocus={e => handleFocus(e, findIndexBySname(item.sName))}
  1503 + onBlur={e => handleBlur(e, findIndexBySname(item.sName))}
  1504 + readOnly={!item?.isEditable}
  1505 + style={{ width: " 80%" }}
  1506 + placeholder="长"
  1507 + />
  1508 + <Input
  1509 + value={item?.sWidth}
  1510 + onChange={e => handleChange(e, findIndexBySname(item.sName), "sWidth")}
  1511 + onFocus={e => handleFocus(e, findIndexBySname(item.sName))}
  1512 + onBlur={e => handleBlur(e, findIndexBySname(item.sName))}
  1513 + readOnly={!item?.isEditable}
  1514 + style={{ width: " 80%" }}
  1515 + placeholder="宽"
  1516 + />
  1517 + </div>
  1518 + <div className={styles.boxInput}>
  1519 + <Select
  1520 + optionLabelProp="label"
  1521 + className="mySelectsDouble"
  1522 + style={{ width: 180, color: "#000" }}
  1523 + defaultValue={options.length ? options[0].value : ""}
  1524 + value={item?.sTypeName || ""}
  1525 + onSelect={(value, option) => handleSelects(value, option, findIndexBySname(item.sName), 0, 0)}
  1526 + onDropdownVisibleChange={async open => {
  1527 + if (open) {
  1528 + props.getSqlOptions(null); // 在下拉菜单打开时调用 getSqlOptions
  1529 + }
  1530 + }}
  1531 + >
  1532 + {!loading ? options.map(option => renderOptionWithText(option)) : ""}
  1533 + </Select>
  1534 + <Input
  1535 + value={item?.sQuantity}
  1536 + onChange={e => handleChange(e, findIndexBySname(item.sName), "sQuantity")}
  1537 + onFocus={e => handleFocus(e, findIndexBySname(item.sName))}
  1538 + onBlur={e => handleBlur(e, findIndexBySname(item.sName))}
  1539 + readOnly={!item?.isEditable}
  1540 + style={{ width: " 80%" }}
  1541 + placeholder="个数"
  1542 + />
  1543 + <Input
  1544 + value={item?.sOffset}
  1545 + onChange={e => handleChange(e, findIndexBySname(item.sName), "sOffset")}
  1546 + onFocus={e => handleFocus(e, findIndexBySname(item.sName))}
  1547 + onBlur={e => handleBlur(e, findIndexBySname(item.sName))}
  1548 + readOnly={!item?.isEditable}
  1549 + style={{ width: " 80%" }}
  1550 + placeholder="偏移"
  1551 + />
  1552 + </div>
  1553 + <div className={styles.boxInput}>
  1554 + <div className={styles.text} style={{ width: " 100%" }}>
  1555 + 层2{" "}
  1556 + </div>
  1557 + <Input
  1558 + value={item?.cLength}
  1559 + onChange={e => handleChange(e, findIndexBySname(item.sName), "cLength")}
  1560 + onFocus={e => handleFocus(e, findIndexBySname(item.sName))}
  1561 + onBlur={e => handleBlur(e, findIndexBySname(item.sName))}
  1562 + readOnly={!item?.isEditable}
  1563 + style={{ width: " 80%" }}
  1564 + placeholder="长"
  1565 + />
  1566 + <Input
  1567 + value={item?.cWidth}
  1568 + onChange={e => handleChange(e, findIndexBySname(item.sName), "cWidth")}
  1569 + onFocus={e => handleFocus(e, findIndexBySname(item.sName))}
  1570 + onBlur={e => handleBlur(e, findIndexBySname(item.sName))}
  1571 + readOnly={!item?.isEditable}
  1572 + style={{ width: " 80%" }}
  1573 + placeholder="宽"
  1574 + />
  1575 + </div>
  1576 + <div className={styles.boxInput}>
  1577 + <Select
  1578 + optionLabelProp="label"
  1579 + className="mySelectsDouble"
  1580 + style={{ width: 180, color: "#000" }}
  1581 + defaultValue={options.length ? options[0].value : ""}
  1582 + value={item?.cTypeName || ""}
  1583 + onSelect={(value, option) => handleSelects(value, option, findIndexBySname(item.sName), 0, 1)}
  1584 + onDropdownVisibleChange={async open => {
  1585 + if (open) {
  1586 + props.getSqlOptions(null); // 在下拉菜单打开时调用 getSqlOptions
  1587 + }
  1588 + }}
  1589 + >
  1590 + {!loading ? options.map(option => renderOptionWithText(option)) : ""}
  1591 + </Select>
  1592 + <Input
  1593 + value={item?.cQuantity}
  1594 + onChange={e => handleChange(e, findIndexBySname(item.sName), "cQuantity")}
  1595 + onFocus={e => handleFocus(e, findIndexBySname(item.sName))}
  1596 + onBlur={e => handleBlur(e, findIndexBySname(item.sName))}
  1597 + readOnly={!item?.isEditable}
  1598 + style={{ width: " 80%" }}
  1599 + placeholder="个数"
  1600 + />
  1601 + <Input
  1602 + value={item?.cOffset}
  1603 + onChange={e => handleChange(e, findIndexBySname(item.sName), "cOffset")}
  1604 + onFocus={e => handleFocus(e, findIndexBySname(item.sName))}
  1605 + onBlur={e => handleBlur(e, findIndexBySname(item.sName))}
  1606 + readOnly={!item?.isEditable}
  1607 + style={{ width: " 80%" }}
  1608 + placeholder="偏移"
  1609 + />
  1610 + </div>
  1611 + </div>
  1612 + ) : (
  1613 + <div className={styles.boxInput}>
  1614 + {item?.selectImage ? (
  1615 + <img
  1616 + src={item?.selectImage}
  1617 + alt={item.value}
  1618 + style={{
  1619 + width: 40,
  1620 + height: 30,
  1621 + marginRight: 8,
  1622 + position: "absolute",
  1623 + left: 20,
  1624 + top: -35,
  1625 + zIndex: 10,
  1626 + }}
  1627 + />
  1628 + ) : (
  1629 + ""
  1630 + )}
1159 1631  
1160   - <Input
1161   - value={item?.showName}
1162   - onChange={e => handleChangeName(e, findIndexBySname(item.sName))}
1163   - onFocus={e => handleFocus(e, findIndexBySname(item.sName))}
1164   - onBlur={e => handleBlur(e, findIndexBySname(item.sName))}
1165   - readOnly={!item?.isEditable}
1166   - className={styles.text}
1167   - />
1168   - <Input
1169   - value={item?.value}
1170   - onChange={e => handleChange(e, findIndexBySname(item.sName))}
1171   - onFocus={e => handleFocus(e, findIndexBySname(item.sName))}
1172   - onBlur={e => handleBlur(e, findIndexBySname(item.sName))}
1173   - readOnly={!item?.isEditable}
1174   - style={{ width: " 80%" }}
1175   - />
1176   - </div>
  1632 + <Input
  1633 + value={item?.showName}
  1634 + onChange={e => handleChangeName(e, findIndexBySname(item.sName))}
  1635 + onFocus={e => handleFocus(e, findIndexBySname(item.sName))}
  1636 + onBlur={e => handleBlur(e, findIndexBySname(item.sName))}
  1637 + readOnly={!item?.isEditable}
  1638 + className={styles.text}
  1639 + />
  1640 + <Input
  1641 + value={item?.value}
  1642 + onChange={e => handleChange(e, findIndexBySname(item.sName))}
  1643 + onFocus={e => handleFocus(e, findIndexBySname(item.sName))}
  1644 + onBlur={e => handleBlur(e, findIndexBySname(item.sName))}
  1645 + readOnly={!item?.isEditable}
  1646 + style={{ width: " 80%" }}
  1647 + />
  1648 + </div>
  1649 + )}
1177 1650 </div>
1178 1651 ))}
1179 1652 {boxType === "8" &&
... ... @@ -1238,7 +1711,7 @@ const BoxDesignCompontent = baseProps =&gt; {
1238 1711 </div>
1239 1712 ))}
1240 1713 </div>
1241   - <div className={styles.boxBottom}>
  1714 + <div className={styles.boxBottom} style={{ top: `${typesTop ? "240px" : "130px"}` }}>
1242 1715 <div className={styles.svgBox}>
1243 1716 <SvgBox {...svgBoxProps} />
1244 1717 </div>
... ...
src/components/Common/BoxDesignCompontent/index.less
... ... @@ -21,7 +21,7 @@
21 21 }
22 22 .boxLeft {
23 23 width: 180px;
24   - height: 320px;
  24 + min-height: 320px;
25 25 display: flex;
26 26 flex-wrap: wrap;
27 27 flex-direction: column;
... ... @@ -33,7 +33,7 @@
33 33 }
34 34 .boxRight {
35 35 width: 180px;
36   - height: 320px;
  36 + min-height: 320px;
37 37 display: flex;
38 38 flex-wrap: wrap;
39 39 justify-content: space-between;
... ... @@ -43,23 +43,23 @@
43 43 top: 130px;
44 44 text-align: center;
45 45 }
46   - .boxBottom{
  46 + .boxBottom {
47 47 width: 500px;
48 48 height: 380px;
49 49 position: absolute;
50 50 top: 130px;
51 51 left: 50%;
52 52 transform: translateX(-50%);
53   - .svgBox{
  53 + .svgBox {
54 54 width: 100%;
55   - height: 250px;
56   - background-color: #9AFF9A;
  55 + min-height: 250px;
  56 + background-color: #9aff9a;
57 57 }
58   - .content{
  58 + .content {
59 59 width: 100%;
60 60 height: 130px;
61   - :global{
62   - .ant-select-selector{
  61 + :global {
  62 + .ant-select-selector {
63 63 // width: 380px !important; /* 选择框宽度 */
64 64 color: #333;
65 65 }
... ... @@ -68,11 +68,10 @@
68 68 padding-left: 50px;
69 69 line-height: 40px;
70 70 }
71   -
72 71 }
73 72 }
74 73 }
75   - .boxTitle{
  74 + .boxTitle {
76 75 background-color: #3399ff;
77 76 color: #fff;
78 77 width: 180px;
... ... @@ -80,37 +79,45 @@
80 79 line-height: 20px;
81 80 text-align: center;
82 81 }
83   - :global{
84   - .mySelects .ant-select-selector {
85   - background-color: #99CCFF !important; /* 选择框背景色 */
  82 + :global {
  83 + .mySelects .ant-select-selector,
  84 + .mySelectsDouble .ant-select-selector {
  85 + background-color: #99ccff !important; /* 选择框背景色 */
86 86 height: 40px !important; /* 选择框高度 */
87 87 }
88 88 .mySelects .ant-select-selection-item {
89 89 color: transparent !important; /* 选择框文字颜色 */
90 90 }
91   -
  91 + .mySelectsDouble .ant-select-selection-item {
  92 + color: #333 !important; /* 选择框文字颜色 */
  93 + line-height: 40px !important;
  94 +
  95 + }
92 96 }
93 97 .mySelects {
94 98 position: relative;
95 99 }
96   - .boxInput{
  100 + .boxInput {
97 101 display: flex;
98 102 align-items: center;
99 103 justify-content: space-between;
100 104 width: 180px;
101   - height: 40px;
  105 + // height: 40px;
  106 + min-height: 40px;
102 107 position: relative;
103 108 :global {
104 109 .ant-input {
105   - background-color: #99CCFF !important; /* 输入框背景色 */
  110 + background-color: #99ccff !important; /* 输入框背景色 */
106 111 border: 1px solid #d9d9d9;
107 112 height: 40px;
108 113 }
109   -
  114 + .ant-input::placeholder {
  115 + color: #fff !important; // 修改为你想要的颜色
  116 + }
110 117 }
111 118 }
112   - .text{
113   - background-color: #99CCFF;
  119 + .text {
  120 + background-color: #99ccff;
114 121 width: 100%;
115 122 height: 40px;
116 123 line-height: 40px;
... ... @@ -119,19 +126,18 @@
119 126 margin-right: 1px;
120 127 }
121 128 .content {
122   - :global{
  129 + :global {
123 130 .ant-input {
124   - background-color: #EEEEEE !important; /* 输入框背景色 */
  131 + background-color: #eeeeee !important; /* 输入框背景色 */
125 132 height: 40px;
126 133 }
127 134 .ant-select-selector {
128   - background-color: #EEEEEE !important; /* 选择框背景色 */
  135 + background-color: #eeeeee !important; /* 选择框背景色 */
129 136 height: 40px !important; /* 选择框高度 */
130 137 }
131   -
132 138 }
133   - .text{
134   - background-color: #EEEEEE ;
  139 + .text {
  140 + background-color: #eeeeee;
135 141 margin: 0;
136 142 }
137 143 .boxFlex {
... ... @@ -141,33 +147,33 @@
141 147 flex-direction: column;
142 148 width: 500px;
143 149 }
144   - .boxFlexs{
  150 + .boxFlexs {
145 151 display: flex;
146 152 align-items: center;
147 153 width: 500px;
148 154 justify-content: space-between;
149   - .boxInputs{
  155 + .boxInputs {
150 156 display: flex;
151 157 align-items: center;
152 158 flex: 1;
153   - :global{
  159 + :global {
154 160 .ant-input {
155   - background-color: #EEEEEE !important; /* 输入框背景色 */
  161 + background-color: #eeeeee !important; /* 输入框背景色 */
156 162 height: 40px;
157 163 }
158 164 }
159 165 }
160 166 }
161   - .boxInput{
  167 + .boxInput {
162 168 width: 100%;
163 169 position: relative;
164   - .defaultValue{
  170 + .defaultValue {
165 171 position: absolute;
166 172 left: 32%;
167 173 top: 3px;
168 174 width: 60px;
169 175 height: 30px;
170   - background-color: #EEE;
  176 + background-color: #eee;
171 177 color: #333;
172 178 line-height: 40px;
173 179 z-index: 2;
... ...
src/components/Common/BoxDesignCompontent/svg.js
... ... @@ -606,30 +606,44 @@ const SvgBox = props =&gt; {
606 606 pathList.push(createText(scaledWidth * 2 + scaledHeight * 2 + dYTBW * 0.4, scaledDeep / 2, 10 * scales, dYTBW));
607 607 }
608 608 // 左上部件
609   - pathList.push(createDynamicTopLeft(zsbj?.type, scaledWidth, -scaledHeight, -dZSCW * scale, 0, 0));
610   - if ((zsbj?.type === "3001" && zsbj?.value) || (zsbj?.type === "3006" && zsbj?.value) || (zsbj?.type === "3007" && zsbj?.value)) {
611   - pathList.push(createDoubleArrow(scaledHeight, scaledWidth * 0.2, -scaledHeight / 2, scales));
612   - pathList.push(createText(scaledWidth * 0.2 + 10 * scales, -scaledHeight / 2, 10 * scales, "W"));
613   - // 插位值
614   - pathList.push(createText(scaledWidth / 2, -scaledHeight - dZSCW / 2 + 4, 10 * scales, dZSCW));
615   - } else if (zsbj?.type === "3002" && dZSCW) {
616   - pathList.push(createText(scaledWidth / 2, -dZSCW / 2 + 4, 10 * scales, dZSCW));
617   - } else if (zsbj?.type === "3003" && dZSCW) {
618   - pathList.push(createText(scaledWidth / 2, -dZSCW / 2 + 4, 10 * scales, dZSCW));
619   - } else if (zsbj?.type === "3004" && zsbj?.value) {
620   - pathList.push(createDoubleArrow(scaledHeight, scaledWidth * 0.2, -scaledHeight / 2, scales));
621   - pathList.push(createText(scaledWidth * 0.2 + 10 * scales, -scaledHeight / 2, 10 * scales, "W"));
622   - pathList.push(createDoubleArrow(scaledHeight, scaledWidth * 0.85, -(scaledHeight + scaledHeight / 2), scales));
623   - pathList.push(createText(scaledWidth * 0.85 + 10 * scales, -(scaledHeight + scaledHeight / 2), 10 * scales, "W"));
624   - pathList.push(createText(scaledWidth * 0.3, -(scaledHeight * 2) - dZSCW / 2 + 4, 10 * scales, dZSCW));
625   - } else if (zsbj?.type === "3005" && zsbj?.value) {
626   - pathList.push(createDoubleArrow(scaledHeight, scaledWidth * 0.1, -scaledHeight / 2, scales));
627   - pathList.push(createText(scaledWidth * 0.1 + 10 * scales, -scaledHeight / 2, 10 * scales, "W"));
628   - pathList.push(createDoubleArrow(scaledHeight, scaledWidth * 0.8, -(scaledHeight + scaledHeight / 2), scales));
629   - pathList.push(createText(scaledWidth * 0.8 + 10 * scales, -(scaledHeight + scaledHeight / 2), 10 * scales, "W"));
630   - } else if (zsbj?.type && dZSCW) {
631   - pathList.push(createText(scaledWidth / 2, -dZSCW / 2 + 4, 10 * scales, dZSCW));
  609 + if (zsbj?.type && zsbj?.type === "3009") {
  610 + console.log(zsbj, boxList, "zsbj");
  611 + // 先放层1的盒型
  612 + const { sType, sLength, sWidth, sOffset, sQuantity, cType, cLength, cWidth, cOffset, cQuantity } = zsbj;
  613 + if (Number(sType) === 0) {
  614 + const rectangles = [{ x: -sLength * scale, y: ((scaledDeep - (Number(sWidth) * scale)) / 2) + Number(sOffset), width: sLength * scale, height: sWidth * scale }];
  615 + rectangles.forEach(rect => {
  616 + g.appendChild(createPathElements(rect.x, rect.y, rect.width, rect.height));
  617 + });
  618 + svg.appendChild(g);
  619 + }
  620 + } else {
  621 + pathList.push(createDynamicTopLeft(zsbj?.type, scaledWidth, -scaledHeight, -dZSCW * scale, 0, 0));
  622 + if ((zsbj?.type === "3001" && zsbj?.value) || (zsbj?.type === "3006" && zsbj?.value) || (zsbj?.type === "3007" && zsbj?.value)) {
  623 + pathList.push(createDoubleArrow(scaledHeight, scaledWidth * 0.2, -scaledHeight / 2, scales));
  624 + pathList.push(createText(scaledWidth * 0.2 + 10 * scales, -scaledHeight / 2, 10 * scales, "W"));
  625 + // 插位值
  626 + pathList.push(createText(scaledWidth / 2, -scaledHeight - dZSCW / 2 + 4, 10 * scales, dZSCW));
  627 + } else if (zsbj?.type === "3002" && dZSCW) {
  628 + pathList.push(createText(scaledWidth / 2, -dZSCW / 2 + 4, 10 * scales, dZSCW));
  629 + } else if (zsbj?.type === "3003" && dZSCW) {
  630 + pathList.push(createText(scaledWidth / 2, -dZSCW / 2 + 4, 10 * scales, dZSCW));
  631 + } else if (zsbj?.type === "3004" && zsbj?.value) {
  632 + pathList.push(createDoubleArrow(scaledHeight, scaledWidth * 0.2, -scaledHeight / 2, scales));
  633 + pathList.push(createText(scaledWidth * 0.2 + 10 * scales, -scaledHeight / 2, 10 * scales, "W"));
  634 + pathList.push(createDoubleArrow(scaledHeight, scaledWidth * 0.85, -(scaledHeight + scaledHeight / 2), scales));
  635 + pathList.push(createText(scaledWidth * 0.85 + 10 * scales, -(scaledHeight + scaledHeight / 2), 10 * scales, "W"));
  636 + pathList.push(createText(scaledWidth * 0.3, -(scaledHeight * 2) - dZSCW / 2 + 4, 10 * scales, dZSCW));
  637 + } else if (zsbj?.type === "3005" && zsbj?.value) {
  638 + pathList.push(createDoubleArrow(scaledHeight, scaledWidth * 0.1, -scaledHeight / 2, scales));
  639 + pathList.push(createText(scaledWidth * 0.1 + 10 * scales, -scaledHeight / 2, 10 * scales, "W"));
  640 + pathList.push(createDoubleArrow(scaledHeight, scaledWidth * 0.8, -(scaledHeight + scaledHeight / 2), scales));
  641 + pathList.push(createText(scaledWidth * 0.8 + 10 * scales, -(scaledHeight + scaledHeight / 2), 10 * scales, "W"));
  642 + } else if (zsbj?.type && dZSCW) {
  643 + pathList.push(createText(scaledWidth / 2, -dZSCW / 2 + 4, 10 * scales, dZSCW));
  644 + }
632 645 }
  646 +
633 647 // 右上部件
634 648 pathList.push(createDynamicTopLeft(ysbj?.type, scaledWidth, -scaledHeight, -dYSCW * scale, scaledWidth + scaledHeight, 0));
635 649 if ((ysbj?.type === "6001" && ysbj?.value) || (ysbj?.type === "6006" && ysbj?.value) || (ysbj?.type === "6007" && ysbj?.value)) {
... ... @@ -1425,10 +1439,12 @@ const SvgBox = props =&gt; {
1425 1439 pathList.push(createText(scaleHeadWidth / 2, scaleHeadLength * 0.3 + 10 * scales, 10 * scales, "dSHC"));
1426 1440 }
1427 1441 if (scaleOrderLength && scaleOrderWidth) {
1428   - pathList.push(createDoubleArrow(scaleOrderWidth, scaleOrderLength * 0.6 - (leftOffect ), scaleHeadWidth + scaleOrderWidth / 2, scales));
1429   - pathList.push(createText(scaleOrderLength * 0.8 - 10 * scales - (leftOffect ), scaleHeadWidth + scaleOrderWidth / 2, 10 * scales, "dCHK"));
1430   - pathList.push(createHorizontalDoubleArrow(scaleOrderLength, scaleOrderLength / 2 - (leftOffect ), scaleHeadWidth + scaleOrderWidth * 0.7, scales));
1431   - pathList.push(createText(scaleOrderWidth / 2 - (leftOffect ), scaleHeadWidth + scaleOrderLength * 0.8 * scales, 10 * scales, "dCHC"));
  1442 + pathList.push(createDoubleArrow(scaleOrderWidth, scaleOrderLength * 0.6 - leftOffect, scaleHeadWidth + scaleOrderWidth / 2, scales));
  1443 + pathList.push(createText(scaleOrderLength * 0.8 - 10 * scales - leftOffect, scaleHeadWidth + scaleOrderWidth / 2, 10 * scales, "dCHK"));
  1444 + pathList.push(
  1445 + createHorizontalDoubleArrow(scaleOrderLength, scaleOrderLength / 2 - leftOffect, scaleHeadWidth + scaleOrderWidth * 0.7, scales)
  1446 + );
  1447 + pathList.push(createText(scaleOrderWidth / 2 - leftOffect, scaleHeadWidth + scaleOrderLength * 0.8 * scales, 10 * scales, "dCHC"));
1432 1448 }
1433 1449  
1434 1450 pathList.forEach(x => {
... ...