Commit bc63ea766f5b6cc1ede0815a9fad27dbb53afec7

Authored by Min
1 parent b9cbf143

1.生产工单物料信息,需要新增、新增全部按钮、删除、删除全部按钮,新增按钮跳转BOM物料信息可以选择物料,新增全部按钮,自动带出BOM物料信息所有物料,删除按钮…

…删除物料,删除全部按钮删除工单物料表全部物料信息。

2.材料批量勾选删除
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 =&gt; {
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 =&gt; {
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" }}>
... ...