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,7 +3173,7 @@ export default class CommonComponent extends Component {
3173 /* 页面输出 */ 3173 /* 页面输出 */
3174 return ( 3174 return (
3175 <div ref={this.myRef} className={iColValue === 24 ? 'input24' : iColValue === 18 ? 'input18' : iColValue === 12 ? 'input12' : 'changeClassName'} key={this.state.key}> 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 {commonAssembly} 3177 {commonAssembly}
3178 </div> 3178 </div>
3179 </div> 3179 </div>
src/components/Common/CommonNewBillEvent.js
@@ -414,8 +414,8 @@ export default (ChildComponent) =&gt; { @@ -414,8 +414,8 @@ export default (ChildComponent) =&gt; {
414 /** 获取主表、从表、审核表数据 */ 414 /** 获取主表、从表、审核表数据 */
415 handleGetData = async (masterConfig, slaveConfig, slave0Config, slave1Config, slave2Config, slave3Config, slave4Config, bEditClick, slave5Config, slave6Config, slave7Config, slave8Config, slave9Config, slave10Config) => { 415 handleGetData = async (masterConfig, slaveConfig, slave0Config, slave1Config, slave2Config, slave3Config, slave4Config, bEditClick, slave5Config, slave6Config, slave7Config, slave8Config, slave9Config, slave10Config) => {
416 const { currentId, app } = this.props; /* 当前页签数据 */ 416 const { currentId, app } = this.props; /* 当前页签数据 */
417 - const sId = currentId !== undefined ? currentId : '';  
418 const { sModelsId, masterData, sModelsType, slaveSelectedRowKeys } = this.props; 417 const { sModelsId, masterData, sModelsType, slaveSelectedRowKeys } = this.props;
  418 + const sId = currentId || masterData.sId || "";
419 await this.props.handleGetDataOne({ name: 'master', configData: masterConfig, condition: { sId, pageSize: '', pageNum: '' }, bEditClick }); 419 await this.props.handleGetDataOne({ name: 'master', configData: masterConfig, condition: { sId, pageSize: '', pageNum: '' }, bEditClick });
420 let addStateSlave = {}; 420 let addStateSlave = {};
421 if (!commonUtils.isEmptyObject(slaveConfig)) { 421 if (!commonUtils.isEmptyObject(slaveConfig)) {
src/components/Common/CommonViewTable/index.js
@@ -394,6 +394,7 @@ export default class CommonViewTable extends Component { @@ -394,6 +394,7 @@ export default class CommonViewTable extends Component {
394 sBtnSendDialogConfigList: this.props.sBtnSendDialogConfigList, // 校验并获取物料主数据按钮配置 394 sBtnSendDialogConfigList: this.props.sBtnSendDialogConfigList, // 校验并获取物料主数据按钮配置
395 onToolBarBtnClick: this.props.onToolBarBtnClick, // 工具栏按钮事件 395 onToolBarBtnClick: this.props.onToolBarBtnClick, // 工具栏按钮事件
396 onExecInstructSet: this.props.onExecInstructSet, // 调用指令集 396 onExecInstructSet: this.props.onExecInstructSet, // 调用指令集
  397 + onCostomClick: this.props.onCostomClick,
397 }; 398 };
398 return ( 399 return (
399 <Col key={child.sId} span={iColValue} order={iOrder} style={{ display: sFormulaMemo, position: 'relative' }}> 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,11 +212,34 @@ const QuickQuoteEvent = props =&gt; {
212 const iIndex = slaveData.findIndex(item => item.sTreeNodeName === sTreeNodeName && item.sBoxModel === boxModel); 212 const iIndex = slaveData.findIndex(item => item.sTreeNodeName === sTreeNodeName && item.sBoxModel === boxModel);
213 if (name.includes("slaveDown")) { 213 if (name.includes("slaveDown")) {
214 const dropDownDataSelected = dropDownData.find(item => item.sId === changeValue[sFieldName]); 214 const dropDownDataSelected = dropDownData.find(item => item.sId === changeValue[sFieldName]);
215 - dropDownDataSelected && (dropDownDataSelected[sFieldName] = dropDownDataSelected.sProcessName);  
216 const extraRowData = {}; 215 const extraRowData = {};
217 // if (dropDownDataSelected.sProcessName === "胶印") { 216 // if (dropDownDataSelected.sProcessName === "胶印") {
218 // extraRowData.sPrintProcessId = dropDownDataSelected.sId; 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 if (iIndex === -1) { 243 if (iIndex === -1) {
221 slaveData.push({ 244 slaveData.push({
222 sId: commonUtils.createSid(), 245 sId: commonUtils.createSid(),
@@ -501,7 +524,7 @@ const QuickQuoteEvent = props =&gt; { @@ -501,7 +524,7 @@ const QuickQuoteEvent = props =&gt; {
501 return pre; 524 return pre;
502 }, {}), 525 }, {}),
503 dPartsQty: masterData.dProductQty, 526 dPartsQty: masterData.dProductQty,
504 - iPositiveColor: Number(item.sColor), 527 + // iPositiveColor: Number(item.sColor),
505 sPartsName: item.sBoxModel, 528 sPartsName: item.sBoxModel,
506 materialsInfo: item.materialsInfo?.filter(x => commonUtils.isNotEmptyObject(x)), 529 materialsInfo: item.materialsInfo?.filter(x => commonUtils.isNotEmptyObject(x)),
507 processInfo: 530 processInfo:
@@ -1183,6 +1206,7 @@ const ContentComponent = props =&gt; { @@ -1183,6 +1206,7 @@ const ContentComponent = props =&gt; {
1183 }; 1206 };
1184 })} 1207 })}
1185 /> 1208 />
  1209 + <BackendParamsExtraComponent {...props} />
1186 <Divider {...dividerProps}>多数量报价</Divider> 1210 <Divider {...dividerProps}>多数量报价</Divider>
1187 <ManyComponent {...props} /> 1211 <ManyComponent {...props} />
1188 </> 1212 </>
@@ -1227,7 +1251,16 @@ const MasterComponent = props =&gt; { @@ -1227,7 +1251,16 @@ const MasterComponent = props =&gt; {
1227 // 盒型组件 1251 // 盒型组件
1228 const BoxComponent = props => { 1252 const BoxComponent = props => {
1229 const { dividerProps, state, boxModel } = props; 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 if (!slaveConfig) return ""; 1264 if (!slaveConfig) return "";
1232 1265
1233 const { bBox } = selectedNode; 1266 const { bBox } = selectedNode;
@@ -1287,15 +1320,21 @@ const BoxComponent = props =&gt; { @@ -1287,15 +1320,21 @@ const BoxComponent = props =&gt; {
1287 1320
1288 const { sBackProcessData = [] } = slaveRowData; 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 // 获取sType为2的 1329 // 获取sType为2的
1296 const downViewProps = { 1330 const downViewProps = {
1297 ...props, 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 tableConfig: { ...slaveConfig, gdsconfigformslave: downAbleConfigsNew }, 1338 tableConfig: { ...slaveConfig, gdsconfigformslave: downAbleConfigsNew },
1300 iColValueView: 24, 1339 iColValueView: 24,
1301 viewRow: slaveRowData, 1340 viewRow: slaveRowData,
@@ -1382,11 +1421,9 @@ const BoxComponent = props =&gt; { @@ -1382,11 +1421,9 @@ const BoxComponent = props =&gt; {
1382 {!child.sParentName ? ( 1421 {!child.sParentName ? (
1383 <Button 1422 <Button
1384 icon={<PlusOutlined />} 1423 icon={<PlusOutlined />}
1385 - type="link" 1424 + type="primary"
1386 onClick={() => { 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 const newSId = commonUtils.createSid(); 1427 const newSId = commonUtils.createSid();
1391 const newConfig = { 1428 const newConfig = {
1392 ...child, 1429 ...child,
@@ -1394,26 +1431,31 @@ const BoxComponent = props =&gt; { @@ -1394,26 +1431,31 @@ const BoxComponent = props =&gt; {
1394 sParentName: child.showName, 1431 sParentName: child.showName,
1395 sName: `${child.sName}_${newSId}`, 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 <Button 1442 <Button
1403 icon={<MinusOutlined />} 1443 icon={<MinusOutlined />}
1404 - type="link" 1444 + type="primary"
  1445 + danger
1405 onClick={() => { 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 props.setState(pre => { 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 const { sBackProcessData = [] } = slaveData[slaveRowIndex]; 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,6 +1463,20 @@ const BoxComponent = props =&gt; {
1421 </div> 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 // 获取sType为3的 1482 // 获取sType为3的
@@ -1724,7 +1780,7 @@ const BoxComponent = props =&gt; { @@ -1724,7 +1780,7 @@ const BoxComponent = props =&gt; {
1724 <DynamicSVG {...svgProps} /> 1780 <DynamicSVG {...svgProps} />
1725 </div> 1781 </div>
1726 ) : ( 1782 ) : (
1727 - "暂无图片" 1783 + <div className={styles.noImg}>暂无图片</div>
1728 )} 1784 )}
1729 {/* {svgProps.boxList.length ? ( 1785 {/* {svgProps.boxList.length ? (
1730 slaveRowData.sPackDetailPathUpLoad ? 1786 slaveRowData.sPackDetailPathUpLoad ?
@@ -1797,7 +1853,7 @@ const BoxComponent = props =&gt; { @@ -1797,7 +1853,7 @@ const BoxComponent = props =&gt; {
1797 <> 1853 <>
1798 {/* <Divider {...dividerProps}>成品工序</Divider> */} 1854 {/* <Divider {...dividerProps}>成品工序</Divider> */}
1799 <div className={styles.boxPart2}> 1855 <div className={styles.boxPart2}>
1800 - <div className={styles.viewTable}> 1856 + <div className={`${styles.viewTable} ${styles.viewTableDownView1}`}>
1801 <CommonViewTable {...finishedViewProps} /> 1857 <CommonViewTable {...finishedViewProps} />
1802 </div> 1858 </div>
1803 </div> 1859 </div>
@@ -2334,4 +2390,79 @@ const BoxModelSelectedModal = props =&gt; { @@ -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 export default QuickQuote; 2468 export default QuickQuote;
src/components/QuickQuote/index.less
@@ -101,6 +101,25 @@ @@ -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 .subViewTable { 123 .subViewTable {
105 width: 100%; 124 width: 100%;
106 height: auto; 125 height: auto;
@@ -144,10 +163,12 @@ @@ -144,10 +163,12 @@
144 } 163 }
145 } 164 }
146 165
147 - .viewTableDownView { 166 + .viewTableDownView1 {
148 :global { 167 :global {
149 .viewStyle { 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,8 +446,8 @@
425 446
426 .downOperations { 447 .downOperations {
427 position: absolute; 448 position: absolute;
428 - top: -4px;  
429 - right: -14px; 449 + top: 6px;
  450 + right: 6px;
430 display: flex; 451 display: flex;
431 flex-direction: column; 452 flex-direction: column;
432 z-index: 1; 453 z-index: 1;
@@ -442,4 +463,22 @@ @@ -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 \ No newline at end of file 485 \ No newline at end of file