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,加载客户联系人列表