From 6a5a92eb2cf47f33102f730e91737d684bb24822 Mon Sep 17 00:00:00 2001 From: "zangch@mesnac.com" Date: Tue, 10 Mar 2026 16:23:40 +0800 Subject: [PATCH] =?UTF-8?q?feat(wmsShippingBill):=20=E4=BC=98=E5=8C=96?= =?UTF-8?q?=E5=8F=91=E8=B4=A7=E5=8D=95=E7=89=A9=E6=96=99=E6=9D=A5=E6=BA=90?= =?UTF-8?q?=E5=A4=84=E7=90=86=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 移除发货类型选项的硬编码注释,改用字典动态渲染 - 激活ERP物料单选按钮并修复物料来源切换功能 - 更新物料来源类型注释说明,默认值适用于新建空白单据 - 新增syncMaterialSourceTypeByDetails函数实现物料来源类型自动同步 - 修复saleMaterialSelectRef调用方法名从openDialog改为open - 添加materielId字段确保ERP物料数据完整性 - 在物料添加和详情加载完成后调用同步函数确保状态一致 --- src/views/wms/wmsShippingBill/edit.vue | 31 +++++++++++++++++++++----- 1 file changed, 25 insertions(+), 6 deletions(-) diff --git a/src/views/wms/wmsShippingBill/edit.vue b/src/views/wms/wmsShippingBill/edit.vue index facd44a..d463c0e 100644 --- a/src/views/wms/wmsShippingBill/edit.vue +++ b/src/views/wms/wmsShippingBill/edit.vue @@ -60,9 +60,6 @@ - @@ -255,7 +252,7 @@ - + ERP物料 WMS物料 @@ -580,7 +577,7 @@ const approvalRecordRef = ref>(); // 任务变量 const taskVariables = ref>({}); -// 物料来源类型(1-ERP物料,2-WMS物料),默认使用WMS物料 +// 物料来源类型(1-ERP物料,2-WMS物料),新建空白单据时默认使用WMS物料 const materialSourceType = ref('2'); // 下拉数据源 @@ -692,6 +689,23 @@ const data = reactive<{ form: WmsShippingBillForm; rules: any }>({ const { form, rules } = toRefs(data); +const syncMaterialSourceTypeByDetails = () => { + if (!detailsList.value.length) { + return; + } + const hasErpMaterial = detailsList.value.some((item) => item.materialSourceType === '1'); + const hasWmsMaterial = detailsList.value.some((item) => item.materialSourceType === '2'); + // Why:项目自动生成的发货草稿物料属于 ERP 物料,页面回显后默认切到 ERP, + // 用户继续点“新增物料”时才能沿用当前草稿的物料语义,而不是误切回 WMS 选料 + if (hasErpMaterial && !hasWmsMaterial) { + materialSourceType.value = '1'; + return; + } + if (!hasErpMaterial && hasWmsMaterial) { + materialSourceType.value = '2'; + } +}; + const normalizeWorkflowUserIds = (value: unknown): string | undefined => { if (Array.isArray(value)) { const ids = value.map((item) => String(item ?? '').trim()).filter((item) => item.length > 0); @@ -930,7 +944,7 @@ const handleAddDetail = () => { } if (materialSourceType.value === '1') { // ERP物料选择 - saleMaterialSelectRef.value?.openDialog(); + saleMaterialSelectRef.value?.open(); } else { // WMS物料选择 wmsMaterialDialog.visible = true; @@ -950,6 +964,9 @@ const erpMaterialSelectCallBack = (materials: any[]) => { shippingBillId: form.value.shippingBillId, materialSourceType: '1', // ERP物料 erpMaterialId: material.materialId, + // Why:项目自动生成的 ERP 草稿明细同时带有 erpMaterialId 与 materielId, + // 手动新增 ERP 物料时保持同一口径,后续保存、回显和扩展处理才不会出现字段缺失 + materielId: material.materialId, wmsMaterialId: undefined, materialCode: material.materialCode, materialName: material.materialName, @@ -964,6 +981,7 @@ const erpMaterialSelectCallBack = (materials: any[]) => { }); } }); + syncMaterialSourceTypeByDetails(); } }; @@ -1140,6 +1158,7 @@ const loadFormData = async (id: string | number) => { totalPrice: item.totalPrice, remark: item.remark })); + syncMaterialSourceTypeByDetails(); } // 编辑模式下:如果有客户ID,加载客户联系人列表