Commit 40283de5a67360a7d8b8392bacc32497523fed25
Merge branch '云南五彩' of http://git.xlyprint.cn/xlyErp/xlyUmi into 云南五彩
Showing
3 changed files
with
191 additions
and
33 deletions
src/components/Common/Flows/CommonFlow.js
| ... | ... | @@ -36,7 +36,7 @@ const OverviewFlow = (props) => { |
| 36 | 36 | if (commonutils.isNotEmptyArr(initialEdges)) { |
| 37 | 37 | initialEdges.forEach((item) => { |
| 38 | 38 | if (commonutils.isNotEmptyStr(item.markerEnd)) { |
| 39 | - const markerObj = { | |
| 39 | + const markerObj = { | |
| 40 | 40 | type: MarkerType.ArrowClosed, |
| 41 | 41 | } |
| 42 | 42 | item.markerEnd = markerObj |
| ... | ... | @@ -123,11 +123,11 @@ const OverviewFlow = (props) => { |
| 123 | 123 | <Button onClick={onAdd} id='AddSole'>单一部件</Button> |
| 124 | 124 | <Button onClick={onAdd} id='AddPortalBundle'>合版部件</Button> |
| 125 | 125 | <Button onClick={onAdd} id='AddClaim'>组装部件</Button> |
| 126 | - <Button onClick={onMadl}>选择工序</Button> | |
| 127 | - <Button onClick={onMadl}>选择材料</Button> | |
| 128 | - <Button onClick={onDel}>删除</Button> | |
| 129 | - <Button onClick={onSave}>保存</Button> | |
| 130 | - <Button id='Generate' onClick={onMadl}>反向生成工单</Button> | |
| 126 | + {/*<Button onClick={onMadl}>选择工序</Button>*/} | |
| 127 | + {/*<Button onClick={onMadl}>选择材料</Button>*/} | |
| 128 | + {/*<Button onClick={onDel}>删除</Button>*/} | |
| 129 | + {/*<Button onClick={onSave}>保存</Button>*/} | |
| 130 | + {/*<Button id='Generate' onClick={onMadl}>反向生成工单</Button>*/} | |
| 131 | 131 | <Button id='Err' onClick={onMadl}>开单逻辑错误</Button> |
| 132 | 132 | <Modal title="添加部件名称" visible={isModalVisible} onOk={handleOk} onCancel={handleCancel}><Input placeholder="Basic usage" onChange={e => handleChangeValue(e)} value={value} /></Modal> |
| 133 | 133 | </div> | ... | ... |
src/components/IndexCenter/IndexCenter.js
| ... | ... | @@ -204,12 +204,16 @@ class IndexCenter extends Component { |
| 204 | 204 | // this.tableTree.scrollTop = 0; |
| 205 | 205 | // } |
| 206 | 206 | const addState = {}; |
| 207 | - Object.keys(model).forEach((child, index) => { | |
| 207 | + Object.keys(model).sort((a, b) => { | |
| 208 | + const firstA = model[a][0]?.iJsOrder || 0; | |
| 209 | + const firstB = model[b][0]?.iJsOrder || 0; | |
| 210 | + return firstA - firstB; | |
| 211 | + }).forEach((child, index) => { | |
| 208 | 212 | const name = child.split('_')[0]; |
| 209 | 213 | // const num = child.split('_')[1]; |
| 210 | 214 | let num = 0; |
| 211 | 215 | // const key = name; |
| 212 | - const data = model[child]; | |
| 216 | + const data = model[child].sort((a, b) => a.iJsOrder - b.iJsOrder); | |
| 213 | 217 | data.forEach((item, index) => { |
| 214 | 218 | let { dToDayNum } = item; |
| 215 | 219 | dToDayNum = Number(dToDayNum); | ... | ... |
src/components/Manufacture/WorkOrderPackTableTreeNew/index.js
| ... | ... | @@ -19,6 +19,7 @@ import CommonViewDragable from "@/components/Common/CommonViewDragable"; |
| 19 | 19 | import AntdDraggableModal from "@/components/Common/AntdDraggableModal"; |
| 20 | 20 | import styles from "./index.less"; |
| 21 | 21 | import CommonExamInfo from "../../Common/CommonExamInfo"; |
| 22 | +import { Space } from "antd"; | |
| 22 | 23 | |
| 23 | 24 | const { Panel } = Collapse; |
| 24 | 25 | |
| ... | ... | @@ -302,7 +303,7 @@ const WorkOrderPackTableTreeNewEvent = props => { |
| 302 | 303 | sVerArray.push(sVerStr); |
| 303 | 304 | } |
| 304 | 305 | }); |
| 305 | - console.log('copyTo', copyTo, sVerArray); | |
| 306 | + | |
| 306 | 307 | const sProductIds = sProductIdArray.toString(); |
| 307 | 308 | const sProductTechnologyVer =sVerArray.toString(); |
| 308 | 309 | const sRowData = copyTo?.slaveData || []; |
| ... | ... | @@ -4457,6 +4458,146 @@ const OtherComponent = props => { |
| 4457 | 4458 | }; |
| 4458 | 4459 | |
| 4459 | 4460 | const [activeKey, setActiveKey] = useState(["process", "material", "color", "vision", ...materialsChildInfoList]); |
| 4461 | + | |
| 4462 | + // 删除材料方法 | |
| 4463 | + const handleDelAllMaterials = (filterData, bPartDel) => { | |
| 4464 | + console.log("handleDelAllMaterials", filterData, bPartDel); | |
| 4465 | + console.log('sss', props); | |
| 4466 | + const { materials0SelectedRowKeys = [], materials0Data = [] } = props; | |
| 4467 | + | |
| 4468 | + // 如果是撤销操作 (bPartDel === 7) | |
| 4469 | + if (bPartDel === 7) { | |
| 4470 | + const undo = async () => { | |
| 4471 | + try { | |
| 4472 | + const { masterData, sModelsId, token, slaveData, controlData = [], controlSelectedRowKeys = [], | |
| 4473 | + slaveSelectedRowKeys = [], | |
| 4474 | + processData = [], | |
| 4475 | + materialsConfig | |
| 4476 | + } = props; | |
| 4477 | + const controlRow = commonUtils.isNotEmptyArr(controlSelectedRowKeys) ? | |
| 4478 | + controlData.find(item => controlSelectedRowKeys.includes(item.sId)) : controlData[0]; | |
| 4479 | + const sCombineMemoObj = commonUtils.isNotEmptyObject(controlRow?.sCombinedMemo) && commonUtils.isJSON(controlRow.sCombinedMemo) ? | |
| 4480 | + JSON.parse(controlRow.sCombinedMemo) : [] ; | |
| 4481 | + console.log(sCombineMemoObj, controlRow, 's'); | |
| 4482 | + let slaveObj = slaveData.find(item => | |
| 4483 | + sCombineMemoObj?.some(obj => obj.sProductNo === item.sProductNo) | |
| 4484 | + ); | |
| 4485 | + if(commonUtils.isNotEmptyObject(slaveObj)){ | |
| 4486 | + if(commonUtils.isNotEmptyArr(slaveSelectedRowKeys)){ | |
| 4487 | + slaveObj = slaveData.find(item => slaveSelectedRowKeys.includes(item.sId)) | |
| 4488 | + } else{ | |
| 4489 | + slaveObj = slaveData[0]; | |
| 4490 | + } | |
| 4491 | + } | |
| 4492 | + | |
| 4493 | + const btnRoveObj = materialsConfig?.gdsconfigformslave.find(item => item.sControlName?.includes('BtnRevoke')); | |
| 4494 | + const materialsAssignField = btnRoveObj?.materialsAssignField; | |
| 4495 | + const dataUrl = `${commonConfig.server_host}salesorder/getMaterialsCardDataByCustomIdProductId/?sModelsId=${sModelsId}`; | |
| 4496 | + const sRowData = commonUtils.isNotEmptyObject(slaveObj) ? [slaveObj] : []; | |
| 4497 | + const condition = { sRowData }; | |
| 4498 | + const dataReturn = (await commonServices.postValueService(token, condition, dataUrl)).data; | |
| 4499 | + if (dataReturn.code === 1) { | |
| 4500 | + message.success("撤销成功!"); | |
| 4501 | + const returnData = dataReturn.dataset.rows[0]; | |
| 4502 | + const materialsReturnData = returnData?.materialsData || []; | |
| 4503 | + const newCopyTo = { control: controlRow } | |
| 4504 | + if (commonUtils.isNotEmptyArr(materialsReturnData)) { | |
| 4505 | + materialsReturnData.filter(item => item.sType !== '2').forEach((materialsItem) => { | |
| 4506 | + const newSid = commonUtils.createSid(); | |
| 4507 | + let materialsRow = commonFunc.getDefaultData(materialsConfig, newCopyTo, { newSid }); // 取默认值 | |
| 4508 | + if(materialsAssignField) { | |
| 4509 | + materialsRow = { ...materialsRow, ...commonFunc.getAssignFieldValue(materialsAssignField, materialsItem, newCopyTo) }; | |
| 4510 | + } | |
| 4511 | + // materialsRow = {...materialsItem}; | |
| 4512 | + materialsRow.handleType = 'add'; | |
| 4513 | + materialsRow.sId = newSid; | |
| 4514 | + materialsRow.sParentId = masterData.sId; | |
| 4515 | + materialsRow.sControlId = controlRow.sId; | |
| 4516 | + materialsRow.sPartsName = controlRow.sPartsName; | |
| 4517 | + materialsRow.sSlaveId = slaveObj?.sId; | |
| 4518 | + materialsRow.sOriginalId = materialsItem.sId; | |
| 4519 | + materialsRow.sZmldlt = materialsItem.sZmldlt; | |
| 4520 | + materialsRow.sProcessId = materialsItem.sProcessId; | |
| 4521 | + materialsRow.sInkFatherMaterialsTbId = materialsItem.sInkFatherMaterialsTbId; | |
| 4522 | + // 材料对应工序的ID要变化 | |
| 4523 | + if (commonUtils.isNotEmptyArr(processData)) { | |
| 4524 | + const iProcessIndex = processData.findIndex(prow => prow.sControlId === controlRow.sId | |
| 4525 | + && materialsRow.sProcessId === prow.sProcessId | |
| 4526 | + ); | |
| 4527 | + if (iProcessIndex > -1) { | |
| 4528 | + materialsRow.sProcessTbId = processData[iProcessIndex].sId; | |
| 4529 | + } | |
| 4530 | + } | |
| 4531 | + materials0Data.push(materialsRow); | |
| 4532 | + }); | |
| 4533 | + } | |
| 4534 | + | |
| 4535 | + // 这里可以根据返回的数据更新界面 | |
| 4536 | + console.log("撤销返回数据:", materialsReturnData); | |
| 4537 | + console.log("汇总:", materials0Data); | |
| 4538 | + props.onSaveState({materials0Data}) | |
| 4539 | + } else { | |
| 4540 | + message.error(dataReturn.msg || "撤销失败!"); | |
| 4541 | + } | |
| 4542 | + } catch (error) { | |
| 4543 | + message.error(error + "撤销操作失败!"); | |
| 4544 | + } | |
| 4545 | + }; | |
| 4546 | + | |
| 4547 | + Modal.confirm({ | |
| 4548 | + title: "确认要撤销操作吗?", | |
| 4549 | + onOk() { | |
| 4550 | + undo(); | |
| 4551 | + }, | |
| 4552 | + okText: '确定', | |
| 4553 | + cancelText: '取消' | |
| 4554 | + }); | |
| 4555 | + return; | |
| 4556 | + } | |
| 4557 | + | |
| 4558 | + // 原有的删除逻辑 | |
| 4559 | + const partFilterData = filterData.filter(item => item.bMark); | |
| 4560 | + console.log('ffff', partFilterData); | |
| 4561 | + if (bPartDel) { | |
| 4562 | + if (!partFilterData.length) { | |
| 4563 | + message.info("请先选择要删除的数据!"); | |
| 4564 | + return; | |
| 4565 | + } | |
| 4566 | + } | |
| 4567 | + | |
| 4568 | + const delAll = () => { | |
| 4569 | + const sIds = filterData.map(item => item.sId); | |
| 4570 | + // 尝试调用删除方法 - 参数需要匹配 CommonBase 的 handleTableDel 方法签名 | |
| 4571 | + if (props.onDataRowDel && typeof props.onDataRowDel === 'function') { | |
| 4572 | + console.log('删除全部材料sId集合', sIds); | |
| 4573 | + props.onDataRowDel("materials0", false, sIds, undefined); | |
| 4574 | + } else { | |
| 4575 | + console.error("onDataRowDel 方法不存在或不是函数"); | |
| 4576 | + message.error("删除错误"); | |
| 4577 | + } | |
| 4578 | + } | |
| 4579 | + | |
| 4580 | + const delPart = () => { | |
| 4581 | + const sIds = partFilterData.map(item => item.sId); | |
| 4582 | + // 尝试调用删除方法 - 参数需要匹配 CommonBase 的 handleTableDel 方法签名 | |
| 4583 | + if (props.onDataRowDel && typeof props.onDataRowDel === 'function') { | |
| 4584 | + props.onDataRowDel("materials0", false, sIds, undefined); | |
| 4585 | + } else { | |
| 4586 | + console.error("onDataRowDel 方法不存在或不是函数"); | |
| 4587 | + message.error("删除功能不可用"); | |
| 4588 | + } | |
| 4589 | + } | |
| 4590 | + | |
| 4591 | + Modal.confirm({ | |
| 4592 | + title: `确认要删除${bPartDel ? "选中" : "全部"}吗?`, | |
| 4593 | + onOk() { | |
| 4594 | + bPartDel ? delPart() : delAll(); | |
| 4595 | + }, | |
| 4596 | + okText: '确定', | |
| 4597 | + cancelText: '取消' | |
| 4598 | + }); | |
| 4599 | + }; | |
| 4600 | + | |
| 4460 | 4601 | const getHeaderIcon = tablename => ( |
| 4461 | 4602 | <RightOutlined |
| 4462 | 4603 | style={{ |
| ... | ... | @@ -4478,7 +4619,7 @@ const OtherComponent = props => { |
| 4478 | 4619 | </Panel> |
| 4479 | 4620 | |
| 4480 | 4621 | <Panel collapsible="header" header={getHeaderIcon("material")} showArrow={false} extra={panelExtra("material")} key="material"> |
| 4481 | - <MaterialsComponent {...props} materialsTabValue={materialsTabValue} /> | |
| 4622 | + <MaterialsComponent {...props} materialsTabValue={materialsTabValue} onDelAllMaterials={handleDelAllMaterials} /> | |
| 4482 | 4623 | { materialsTabValue === 22 && <ProductMaterialsComponent {...props} /> } |
| 4483 | 4624 | </Panel> |
| 4484 | 4625 | {materialsChildInfoListFilter.map(tablename => { |
| ... | ... | @@ -4750,37 +4891,50 @@ const MaterialsComponent = props => { |
| 4750 | 4891 | } |
| 4751 | 4892 | |
| 4752 | 4893 | // 限制编辑-劲嘉定制 |
| 4753 | - if (index === 0 || index === 3) { | |
| 4754 | - materialsOtherPropsType.otherlimitDisabled = params => { | |
| 4755 | - const { record, sName } = params; | |
| 4756 | - let { enabledNew } = params; | |
| 4757 | - if (!["101251240115016082594412050"].includes(props.sModelsId)) return enabledNew; | |
| 4758 | - if (enabledNew && ["dAuxiThousheetQty"].includes(sName) && record.dPackageQty > 0) { | |
| 4759 | - enabledNew = false; | |
| 4760 | - } | |
| 4761 | - return enabledNew; | |
| 4762 | - }; | |
| 4763 | - } | |
| 4894 | + // if (index === 0 || index === 3) { | |
| 4895 | + // materialsOtherPropsType.otherlimitDisabled = params => { | |
| 4896 | + // const { record, sName } = params; | |
| 4897 | + // let { enabledNew } = params; | |
| 4898 | + // if (!["101251240115016082594412050"].includes(props.sModelsId)) return enabledNew; | |
| 4899 | + // if (enabledNew && ["dAuxiThousheetQty"].includes(sName) && record.dPackageQty > 0) { | |
| 4900 | + // enabledNew = false; | |
| 4901 | + // } | |
| 4902 | + // return enabledNew; | |
| 4903 | + // }; | |
| 4904 | + // } | |
| 4764 | 4905 | |
| 4765 | 4906 | return ( |
| 4766 | 4907 | materialsTabValue === num && ( |
| 4767 | 4908 | <div className="dlhStyle"> |
| 4768 | 4909 | <div style={{ position: "relative", width: sWidth }}> |
| 4769 | 4910 | <StaticEditTable {...materialsOtherPropsType} /> |
| 4770 | - {/* {index === 0 && ( | |
| 4911 | + {true && ( | |
| 4771 | 4912 | <div className={styles.delAll}> |
| 4772 | - <Button | |
| 4773 | - type="primary" | |
| 4774 | - disabled={!props.enabled} | |
| 4775 | - // onClick={props.onDeleteAllMaterials.bind( | |
| 4776 | - // this, | |
| 4777 | - // materialsOtherPropsType.data | |
| 4778 | - // )} | |
| 4779 | - > | |
| 4780 | - 删除全部 | |
| 4781 | - </Button> | |
| 4913 | + <Space> | |
| 4914 | + <Button | |
| 4915 | + type="primary" | |
| 4916 | + disabled={!props.enabled || commonUtils.isEmptyArr(materialsOtherPropsType.data)} | |
| 4917 | + onClick={() => props.onDelAllMaterials?.(materialsOtherPropsType.data, false)} | |
| 4918 | + > | |
| 4919 | + 删除全部 | |
| 4920 | + </Button> | |
| 4921 | + <Button | |
| 4922 | + type="primary" | |
| 4923 | + disabled={!props.enabled || commonUtils.isNotEmptyArr(materialsOtherPropsType.data)} | |
| 4924 | + onClick={() => props.onDelAllMaterials?.(materialsOtherPropsType.data, 7)} | |
| 4925 | + > | |
| 4926 | + 撤销 | |
| 4927 | + </Button> | |
| 4928 | + <Button | |
| 4929 | + type="primary" | |
| 4930 | + disabled={!props.enabled || commonUtils.isEmptyArr(materialsOtherPropsType.data)} | |
| 4931 | + onClick={() => props.onDelAllMaterials?.(materialsOtherPropsType.data, true)} | |
| 4932 | + > | |
| 4933 | + 删除选中 | |
| 4934 | + </Button> | |
| 4935 | + </Space> | |
| 4782 | 4936 | </div> |
| 4783 | - )} */} | |
| 4937 | + )} | |
| 4784 | 4938 | </div> |
| 4785 | 4939 | {materialsChildTableProps ? ( |
| 4786 | 4940 | <div style={{ width: sRightWidth, position: "relative" }}> | ... | ... |