From 2f8b8b76d41d81f4f40c4d10863d93e609374036 Mon Sep 17 00:00:00 2001
From: 云 <2163098428@qq.com>
Date: 星期四, 29 十月 2026 12:20:39 +0800
Subject: [PATCH] fix(mes): 解决产品收货批次信息传递和销售订单校验问题
---
src/views/wls/productsales/modules/line-form.vue | 6 +++++-
src/views/wls/returnsales/modules/line-form.vue | 2 +-
src/views/wls/productsales/data.ts | 23 +++++++++++++++++++++--
src/views/wls/returnsales/data.ts | 2 +-
4 files changed, 28 insertions(+), 5 deletions(-)
diff --git a/src/views/wls/productsales/data.ts b/src/views/wls/productsales/data.ts
index e0fc891..7fc47d7 100644
--- a/src/views/wls/productsales/data.ts
+++ b/src/views/wls/productsales/data.ts
@@ -473,8 +473,27 @@
export function useLineFormSchema(
hasNotice: boolean,
formApi?: VbenFormApi,
+ orderItems: import('#/api/erp/sale/order').ErpSaleOrderApi.SaleOrderItem[] = [],
): VbenFormSchema[] {
return [
+ {
+ fieldName: 'saleOrderItemId',
+ label: '閿�鍞鍗曟槑缁�',
+ component: 'Select',
+ componentProps: {
+ placeholder: '璇烽�夋嫨閿�鍞鍗曟槑缁嗗強鐩樺彿',
+ options: orderItems.map((item) => ({
+ label: `${item.productName || ''}锛堢洏鍙凤細${item.reelNo || '鏈~鍐�'}锛塦,
+ value: item.id,
+ })),
+ onChange: async (id?: number) => {
+ const item = orderItems.find((entry) => entry.id === id);
+ await formApi?.setFieldValue('itemId', item?.productId);
+ },
+ },
+ dependencies: { triggerFields: ['noticeId'], if: () => !hasNotice },
+ rules: 'selectRequired',
+ },
{
fieldName: 'noticeId',
component: 'Input',
@@ -515,9 +534,9 @@
},
rules: 'selectRequired',
dependencies: {
- triggerFields: ['noticeLineId'],
+ triggerFields: ['noticeLineId', 'saleOrderItemId'],
componentProps: (values) => ({
- disabled: !!values.noticeLineId,
+ disabled: !!values.noticeLineId || !!values.saleOrderItemId,
placeholder: '璇烽�夋嫨浜у搧',
}),
},
diff --git a/src/views/wls/productsales/modules/line-form.vue b/src/views/wls/productsales/modules/line-form.vue
index d8470da..a608070 100644
--- a/src/views/wls/productsales/modules/line-form.vue
+++ b/src/views/wls/productsales/modules/line-form.vue
@@ -8,6 +8,8 @@
import { message } from 'ant-design-vue';
import { useVbenForm } from '#/adapter/form';
+import { getProductSales } from '#/api/mes/wm/productsales';
+import { getSaleOrder } from '#/api/erp/sale/order';
import {
createProductSalesLine,
getProductSalesLine,
@@ -78,7 +80,9 @@
}>();
salesId.value = data.salesId;
noticeId.value = data.noticeId;
- formApi.setState({ schema: useLineFormSchema(!!data.noticeId, formApi) });
+ const sales = await getProductSales(data.salesId);
+ const order = sales.saleOrderId ? await getSaleOrder(sales.saleOrderId) : undefined;
+ formApi.setState({ schema: useLineFormSchema(!!data.noticeId, formApi, order?.items || []) });
if (data.noticeId) {
await formApi.setFieldValue('noticeId', data.noticeId);
}
diff --git a/src/views/wls/returnsales/data.ts b/src/views/wls/returnsales/data.ts
index de9180c..f39ec57 100644
--- a/src/views/wls/returnsales/data.ts
+++ b/src/views/wls/returnsales/data.ts
@@ -404,7 +404,7 @@
return z
.number({ message: '璇疯緭鍏ラ��璐ф暟閲�' })
.min(0)
- .max(max, `鍙��璐ф暟閲忎笉鑳借秴杩� ${max}`);
+ .max(max, `閫�璐ф暟閲忎笉鑳借秴杩囪鍗曟暟閲� ${max}`);
}
return z.number({ message: '璇疯緭鍏ラ��璐ф暟閲�' }).min(0);
},
diff --git a/src/views/wls/returnsales/modules/line-form.vue b/src/views/wls/returnsales/modules/line-form.vue
index 98ec33d..c18038e 100644
--- a/src/views/wls/returnsales/modules/line-form.vue
+++ b/src/views/wls/returnsales/modules/line-form.vue
@@ -115,7 +115,7 @@
v-if="maxQuantity !== undefined"
class="mx-4 mt-2 text-sm text-blue-600"
>
- 褰撳墠鐗╂枡鍙��璐ф暟閲忥細<span class="font-bold">{{ maxQuantity }}</span>
+ 褰撳墠鐗╂枡璁㈠崟鏁伴噺锛�<span class="font-bold">{{ maxQuantity }}</span>
</div>
</Modal>
</template>
--
Gitblit v1.9.3