Commit 394ae7c012925ed594bef581e26f7572664a002e
Merge branch 'main' of http://git.xlyprint.cn/zhangz/xlyUmi into main
Showing
5 changed files
with
202 additions
and
31 deletions
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) => { |
| 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 => { |
| 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 => { |
| 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 => { |
| 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 => { |
| 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 => { |
| 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 => { |
| 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 => { |
| 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 => { |
| 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 => { |
| 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 => { |
| 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 => { |
| 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 | ... | ... |