Commit 394ae7c012925ed594bef581e26f7572664a002e

Authored by 陈鑫涛
2 parents 14d9a6bc 2c4e2de6

Merge branch 'main' of http://git.xlyprint.cn/zhangz/xlyUmi into main

src/components/Common/CommonComponent/index.js
... ... @@ -3173,7 +3173,7 @@ export default class CommonComponent extends Component {
3173 3173 /* 页面输出 */
3174 3174 return (
3175 3175 <div ref={this.myRef} className={iColValue === 24 ? 'input24' : iColValue === 18 ? 'input18' : iColValue === 12 ? 'input12' : 'changeClassName'} key={this.state.key}>
3176   - <div className={`${this.props.className} ${readonlyStyle} ${costomStyle}`}>
  3176 + <div className={`${this.props.className} ${readonlyStyle} ${costomStyle}`} onClick={this.props.onCostomClick?.bind(this, showConfig)}>
3177 3177 {commonAssembly}
3178 3178 </div>
3179 3179 </div>
... ...
src/components/Common/CommonNewBillEvent.js
... ... @@ -414,8 +414,8 @@ export default (ChildComponent) =&gt; {
414 414 /** 获取主表、从表、审核表数据 */
415 415 handleGetData = async (masterConfig, slaveConfig, slave0Config, slave1Config, slave2Config, slave3Config, slave4Config, bEditClick, slave5Config, slave6Config, slave7Config, slave8Config, slave9Config, slave10Config) => {
416 416 const { currentId, app } = this.props; /* 当前页签数据 */
417   - const sId = currentId !== undefined ? currentId : '';
418 417 const { sModelsId, masterData, sModelsType, slaveSelectedRowKeys } = this.props;
  418 + const sId = currentId || masterData.sId || "";
419 419 await this.props.handleGetDataOne({ name: 'master', configData: masterConfig, condition: { sId, pageSize: '', pageNum: '' }, bEditClick });
420 420 let addStateSlave = {};
421 421 if (!commonUtils.isEmptyObject(slaveConfig)) {
... ...
src/components/Common/CommonViewTable/index.js
... ... @@ -394,6 +394,7 @@ export default class CommonViewTable extends Component {
394 394 sBtnSendDialogConfigList: this.props.sBtnSendDialogConfigList, // 校验并获取物料主数据按钮配置
395 395 onToolBarBtnClick: this.props.onToolBarBtnClick, // 工具栏按钮事件
396 396 onExecInstructSet: this.props.onExecInstructSet, // 调用指令集
  397 + onCostomClick: this.props.onCostomClick,
397 398 };
398 399 return (
399 400 <Col key={child.sId} span={iColValue} order={iOrder} style={{ display: sFormulaMemo, position: 'relative' }}>
... ...
src/components/QuickQuote/index.jsx
... ... @@ -212,11 +212,34 @@ const QuickQuoteEvent = props =&gt; {
212 212 const iIndex = slaveData.findIndex(item => item.sTreeNodeName === sTreeNodeName && item.sBoxModel === boxModel);
213 213 if (name.includes("slaveDown")) {
214 214 const dropDownDataSelected = dropDownData.find(item => item.sId === changeValue[sFieldName]);
215   - dropDownDataSelected && (dropDownDataSelected[sFieldName] = dropDownDataSelected.sProcessName);
216 215 const extraRowData = {};
217 216 // if (dropDownDataSelected.sProcessName === "胶印") {
218 217 // extraRowData.sPrintProcessId = dropDownDataSelected.sId;
219 218 // }
  219 +
  220 + if (dropDownDataSelected !== undefined) {
  221 + dropDownDataSelected[sFieldName] = dropDownDataSelected.sProcessName;
  222 + // 后道参数额外配置
  223 + const { sParamConfig: sParamConfigStr } = dropDownDataSelected || {};
  224 + const sParamConfig = commonUtils.convertStrToObj(sParamConfigStr, []);
  225 + extraState.backendParamsConfig = sParamConfig;
  226 + extraState.backendConfig = { sParentFieldsName: sFieldName, sBoxModel: boxModel };
  227 + const sBackendParams = sParamConfig
  228 + .map((item, index) => {
  229 + const { sParamDefault, sParam } = item;
  230 + return !sParamDefault
  231 + ? ""
  232 + : {
  233 + sId: commonUtils.createSid(),
  234 + value: sParamDefault,
  235 + sParam: sParam,
  236 + [`sParams${index}`]: sParamDefault,
  237 + };
  238 + })
  239 + .filter(item => item !== "");
  240 + dropDownDataSelected.sBackendParams = sBackendParams;
  241 + }
  242 +
220 243 if (iIndex === -1) {
221 244 slaveData.push({
222 245 sId: commonUtils.createSid(),
... ... @@ -501,7 +524,7 @@ const QuickQuoteEvent = props =&gt; {
501 524 return pre;
502 525 }, {}),
503 526 dPartsQty: masterData.dProductQty,
504   - iPositiveColor: Number(item.sColor),
  527 + // iPositiveColor: Number(item.sColor),
505 528 sPartsName: item.sBoxModel,
506 529 materialsInfo: item.materialsInfo?.filter(x => commonUtils.isNotEmptyObject(x)),
507 530 processInfo:
... ... @@ -1183,6 +1206,7 @@ const ContentComponent = props =&gt; {
1183 1206 };
1184 1207 })}
1185 1208 />
  1209 + <BackendParamsExtraComponent {...props} />
1186 1210 <Divider {...dividerProps}>多数量报价</Divider>
1187 1211 <ManyComponent {...props} />
1188 1212 </>
... ... @@ -1227,7 +1251,16 @@ const MasterComponent = props =&gt; {
1227 1251 // 盒型组件
1228 1252 const BoxComponent = props => {
1229 1253 const { dividerProps, state, boxModel } = props;
1230   - const { masterData = {}, slaveConfig, slaveData = [], selectedNode = {}, downAbleConfigs = [], finishedConfigs = [], boxConfig = {} } = state;
  1254 + const {
  1255 + masterData = {},
  1256 + slaveConfig,
  1257 + slaveData = [],
  1258 + selectedNode = {},
  1259 + downAbleConfigs = [],
  1260 + downAbleExtraConfigs = [],
  1261 + finishedConfigs = [],
  1262 + boxConfig = {},
  1263 + } = state;
1231 1264 if (!slaveConfig) return "";
1232 1265  
1233 1266 const { bBox } = selectedNode;
... ... @@ -1287,15 +1320,21 @@ const BoxComponent = props =&gt; {
1287 1320  
1288 1321 const { sBackProcessData = [] } = slaveRowData;
1289 1322  
1290   - const [downAbleConfigsNew, setDownAbleConfigsNew] = useState([]);
1291   - useEffect(() => {
1292   - setDownAbleConfigsNew(downAbleConfigs);
1293   - }, [selectedNode.showName, boxModel, downAbleConfigs.length]);
  1323 + const downAbleConfigsNew = downAbleConfigs.reduce((pre, cur) => {
  1324 + const childConfigs = downAbleExtraConfigs.filter(item => item.sParentName === cur.showName);
  1325 + pre.push(cur, ...childConfigs);
  1326 + return pre;
  1327 + }, []);
1294 1328  
1295 1329 // 获取sType为2的
1296 1330 const downViewProps = {
1297 1331 ...props,
1298   - viewConfigs: downAbleConfigsNew.filter(item => item.sPartsName === boxModel || !item.sPartsName),
  1332 + viewConfigs: downAbleConfigsNew
  1333 + .filter(item => item.sPartsName === boxModel || !item.sPartsName)
  1334 + .map(config => ({
  1335 + ...config,
  1336 + costomStyle: sBackProcessData.find(item => item[config.sName0 || config.sName])?.sParamConfig ? styles.sParamConfig : "",
  1337 + })),
1299 1338 tableConfig: { ...slaveConfig, gdsconfigformslave: downAbleConfigsNew },
1300 1339 iColValueView: 24,
1301 1340 viewRow: slaveRowData,
... ... @@ -1382,11 +1421,9 @@ const BoxComponent = props =&gt; {
1382 1421 {!child.sParentName ? (
1383 1422 <Button
1384 1423 icon={<PlusOutlined />}
1385   - type="link"
  1424 + type="primary"
1386 1425 onClick={() => {
1387   - setDownAbleConfigsNew(pre => {
1388   - const iIndex = pre.findIndex(item => item.sId === child.sId);
1389   - const childLen = pre.filter(item => item.sParentName === child.showName).length;
  1426 + props.setState(pre => {
1390 1427 const newSId = commonUtils.createSid();
1391 1428 const newConfig = {
1392 1429 ...child,
... ... @@ -1394,26 +1431,31 @@ const BoxComponent = props =&gt; {
1394 1431 sParentName: child.showName,
1395 1432 sName: `${child.sName}_${newSId}`,
1396 1433 };
1397   - return [...pre.slice(0, iIndex + childLen + 1), newConfig, ...pre.slice(iIndex + childLen + 1)];
  1434 + return {
  1435 + ...pre,
  1436 + downAbleExtraConfigs: [...downAbleExtraConfigs, newConfig],
  1437 + };
1398 1438 });
1399 1439 }}
1400 1440 />
1401 1441 ) : (
1402 1442 <Button
1403 1443 icon={<MinusOutlined />}
1404   - type="link"
  1444 + type="primary"
  1445 + danger
1405 1446 onClick={() => {
1406   - setDownAbleConfigsNew(pre => {
1407   - const iIndex = pre.findIndex(item => item.sId === child.sId);
1408   - return [...pre.slice(0, iIndex), ...pre.slice(iIndex + 1)];
1409   - });
1410   -
1411   - const slaveRowIndex = slaveData.findIndex(item => item.sId === slaveRowData.sId);
1412 1447 props.setState(pre => {
  1448 + const iIndex = downAbleExtraConfigs.findIndex(item => item.sId === child.sId);
  1449 +
  1450 + const slaveRowIndex = slaveData.findIndex(item => item.sId === slaveRowData.sId);
1413 1451 const { sBackProcessData = [] } = slaveData[slaveRowIndex];
1414   - const iIndex = sBackProcessData.findIndex(item => item[child.sName]);
1415   - slaveData[slaveRowIndex].sBackProcessData?.splice(iIndex, 1);
1416   - return { ...pre, slaveData };
  1452 + const iIndex1 = sBackProcessData.findIndex(item => item[child.sName]);
  1453 + slaveData[slaveRowIndex].sBackProcessData?.splice(iIndex1, 1);
  1454 + return {
  1455 + ...pre,
  1456 + downAbleExtraConfigs: [...downAbleExtraConfigs.slice(0, iIndex), ...downAbleExtraConfigs.slice(iIndex + 1)],
  1457 + slaveData,
  1458 + };
1417 1459 });
1418 1460 }}
1419 1461 />
... ... @@ -1421,6 +1463,20 @@ const BoxComponent = props =&gt; {
1421 1463 </div>
1422 1464 );
1423 1465 },
  1466 + onCostomClick: (showConfig, { target }) => {
  1467 + const className = target.getAttribute("class");
  1468 + const nodeName = target.nodeName;
  1469 + if (className?.includes("select") && nodeName === "DIV") return;
  1470 +
  1471 + props.setState(pre => ({
  1472 + ...pre,
  1473 + backendParamsConfig: commonUtils.convertStrToObj(
  1474 + sBackProcessData.find(item => item[showConfig.sName0 || showConfig.sName])?.sParamConfig,
  1475 + []
  1476 + ),
  1477 + backendConfig: { sParentFieldsName: showConfig.sName, sBoxModel: boxModel },
  1478 + }));
  1479 + },
1424 1480 };
1425 1481  
1426 1482 // 获取sType为3的
... ... @@ -1724,7 +1780,7 @@ const BoxComponent = props =&gt; {
1724 1780 <DynamicSVG {...svgProps} />
1725 1781 </div>
1726 1782 ) : (
1727   - "暂无图片"
  1783 + <div className={styles.noImg}>暂无图片</div>
1728 1784 )}
1729 1785 {/* {svgProps.boxList.length ? (
1730 1786 slaveRowData.sPackDetailPathUpLoad ?
... ... @@ -1797,7 +1853,7 @@ const BoxComponent = props =&gt; {
1797 1853 <>
1798 1854 {/* <Divider {...dividerProps}>成品工序</Divider> */}
1799 1855 <div className={styles.boxPart2}>
1800   - <div className={styles.viewTable}>
  1856 + <div className={`${styles.viewTable} ${styles.viewTableDownView1}`}>
1801 1857 <CommonViewTable {...finishedViewProps} />
1802 1858 </div>
1803 1859 </div>
... ... @@ -2334,4 +2390,79 @@ const BoxModelSelectedModal = props =&gt; {
2334 2390 );
2335 2391 };
2336 2392  
  2393 +// 后道参数额外配置
  2394 +const BackendParamsExtraComponent = props => {
  2395 + const { state, slaveConfig, boxModel } = props;
  2396 + const { backendParamsConfig = [], backendConfig = {}, slaveData, selectedNode } = state;
  2397 + if (!backendParamsConfig.length) return "";
  2398 +
  2399 + const { sParentFieldsName, sBoxModel } = backendConfig;
  2400 +
  2401 + const slaveRowData = slaveData.find(item => item.sTreeNodeName === selectedNode.showName && item.sBoxModel === sBoxModel) || {};
  2402 + const { sBackProcessData = [] } = slaveRowData;
  2403 +
  2404 + const viewConfigs = backendParamsConfig.map((item, index) => ({
  2405 + ...item,
  2406 + sName: `sParams${index}`,
  2407 + showName: item.sParam,
  2408 + sDropDownType: "sql",
  2409 + iColValue: 4,
  2410 + }));
  2411 +
  2412 + const viewProps = {
  2413 + ...props,
  2414 + viewConfigs: viewConfigs,
  2415 + tableConfig: { ...slaveConfig, gdsconfigformslave: viewConfigs },
  2416 + iColValueView: 24,
  2417 + getViewRow: config => {
  2418 + return sBackProcessData.find(item => item[sParentFieldsName])?.sBackendParams?.find(item => item.sParam === config.showName) || {};
  2419 + },
  2420 + tableName: `sBackendParams${boxModel}`,
  2421 + getSqlDropDownData: (...args) => {
  2422 + const showConfig = args[2];
  2423 + const { sParamDropDown = "", sName } = showConfig;
  2424 + const dropDownData = sParamDropDown.split(",");
  2425 + if (dropDownData?.length) {
  2426 + return {
  2427 + dropDownData: dropDownData.map(item => ({
  2428 + sId: commonUtils.createSid(),
  2429 + value: item,
  2430 + sParam: showConfig.sParam,
  2431 + [sName]: item,
  2432 + })),
  2433 + totalPageCount: 1,
  2434 + currentPageNo: 1,
  2435 + conditonValues: {},
  2436 + };
  2437 + }
  2438 +
  2439 + return props.getSqlDropDownData(...args);
  2440 + },
  2441 + onDataChange: (name, sFieldName, changeValue, sId, dropDownData, isWait) => {
  2442 + const iIndex = slaveData.findIndex(item => item.sId === slaveRowData.sId);
  2443 + const iIndex1 = slaveData[iIndex].sBackProcessData.findIndex(item => item[sParentFieldsName]);
  2444 + const dropDownDataSelected = dropDownData.find(item => item.sId === changeValue[sFieldName]);
  2445 + const { sParam } = dropDownDataSelected;
  2446 + const { sBackendParams = [] } = slaveData[iIndex].sBackProcessData[iIndex1];
  2447 + const iIndex2 = sBackendParams.findIndex(item => item.sParam === sParam);
  2448 + if (iIndex2 !== -1) {
  2449 + sBackendParams[iIndex2] = dropDownDataSelected;
  2450 + } else {
  2451 + sBackendParams.push(dropDownDataSelected);
  2452 + }
  2453 + slaveData[iIndex].sBackProcessData[iIndex1].sBackendParams = sBackendParams;
  2454 + props.setState(pre => ({ ...pre, slaveData }));
  2455 + },
  2456 + };
  2457 +
  2458 + return (
  2459 + <>
  2460 + <Divider style={{ margin: "5px 0" }} />
  2461 + <div className={`${styles.viewTable} ${styles.viewTableDownView1}`}>
  2462 + <CommonViewTable {...viewProps} />
  2463 + </div>
  2464 + </>
  2465 + );
  2466 +};
  2467 +
2337 2468 export default QuickQuote;
... ...
src/components/QuickQuote/index.less
... ... @@ -101,6 +101,25 @@
101 101 }
102 102 }
103 103  
  104 + }
  105 +
  106 + .viewTableDownView,
  107 + .viewTableDownView1 {
  108 + :global {
  109 + .viewStyle {
  110 + padding-right: 14px;
  111 +
  112 + .ant-form-item-label {
  113 + flex: 0 0 70px !important;
  114 + max-width: 70px !important;
  115 + }
  116 +
  117 + .ant-form-item-control {
  118 + max-width: calc(100% - 95px);
  119 + }
  120 + }
  121 + }
  122 +
104 123 .subViewTable {
105 124 width: 100%;
106 125 height: auto;
... ... @@ -144,10 +163,12 @@
144 163 }
145 164 }
146 165  
147   - .viewTableDownView {
  166 + .viewTableDownView1 {
148 167 :global {
149 168 .viewStyle {
150   - padding-right: 14px;
  169 + .ant-form-item-control {
  170 + max-width: calc(100% - 60px);
  171 + }
151 172 }
152 173 }
153 174 }
... ... @@ -425,8 +446,8 @@
425 446  
426 447 .downOperations {
427 448 position: absolute;
428   - top: -4px;
429   - right: -14px;
  449 + top: 6px;
  450 + right: 6px;
430 451 display: flex;
431 452 flex-direction: column;
432 453 z-index: 1;
... ... @@ -442,4 +463,22 @@
442 463 }
443 464 }
444 465 }
  466 +}
  467 +
  468 +.sParamConfig {
  469 + :global {
  470 + .ant-form-item-label {
  471 + label {
  472 + &::before {
  473 + content: '';
  474 + display: block;
  475 + width: 5px;
  476 + height: 5px;
  477 + border-radius: 50%;
  478 + background-color: #ff4d4f;
  479 + margin-right: 2px;
  480 + }
  481 + }
  482 + }
  483 + }
445 484 }
446 485 \ No newline at end of file
... ...