From 8b1b73b297451d87e2ebf8c1bcb05c64f108127c Mon Sep 17 00:00:00 2001
From: gaoluyang <2820782392@qq.com>
Date: 星期四, 30 七月 2026 13:36:35 +0800
Subject: [PATCH] 银川 1.销售退货选择销售订单逻辑修改

---
 src/views/wls/returnsales/data.ts |   54 ++++++++++++++++++++++++++++++++++++++++++++++++++----
 1 files changed, 50 insertions(+), 4 deletions(-)

diff --git a/src/views/wls/returnsales/data.ts b/src/views/wls/returnsales/data.ts
index fadbd4a..9b61d3c 100644
--- a/src/views/wls/returnsales/data.ts
+++ b/src/views/wls/returnsales/data.ts
@@ -1,3 +1,4 @@
+import type { ErpSaleOrderApi } from '#/api/erp/sale/order';
 import type { VbenFormApi, VbenFormSchema } from '#/adapter/form';
 import type { VxeTableGridOptions } from '#/adapter/vxe-table';
 import type { MesWmReturnSalesApi } from '#/api/mes/wm/returnsales';
@@ -35,6 +36,7 @@
 export function useFormSchema(
   formType: FormType,
   formApi?: VbenFormApi,
+  onOrderChange?: (item: Record<string, unknown> | undefined) => void,
 ): VbenFormSchema[] {
   return [
     {
@@ -100,6 +102,7 @@
       label: '閿�鍞鍗曞彿',
       component: markRaw(ErpSaleOrderSelect),
       componentProps: {
+        outStatus: 3,
         placeholder: '璇烽�夋嫨閿�鍞鍗�',
         onChange: (item: any) => {
           if (formApi) {
@@ -108,6 +111,7 @@
               formApi.setFieldValue('clientId', item.customerId);
             }
           }
+          onOrderChange?.(item);
         },
       },
       rules: 'selectRequired',
@@ -342,15 +346,31 @@
 export function useLineFormSchema(
   clientId?: number,
   salesOrderCode?: string,
+  items?: ErpSaleOrderApi.SaleOrderItem[],
+  onItemChange?: (item: ErpSaleOrderApi.SaleOrderItem | undefined) => void,
 ): VbenFormSchema[] {
+  const hasItems = items && items.length > 0;
   return [
     {
       fieldName: 'itemId',
       label: '鐗╂枡',
-      component: markRaw(MdItemSelect),
-      componentProps: {
-        placeholder: '璇烽�夋嫨鐗╂枡',
-      },
+      component: hasItems ? 'Select' : markRaw(MdItemSelect),
+      componentProps: hasItems
+        ? {
+            placeholder: '璇烽�夋嫨鐗╂枡',
+            options: items.map((item) => ({
+              label: `${item.productName || ''}锛�${item.productBarCode || ''}锛塦,
+              value: item.productId,
+            })),
+            onChange: (value: number | undefined) => {
+              const selected = items.find((i) => i.productId === value);
+              onItemChange?.(selected);
+            },
+          }
+        : {
+            placeholder: '璇烽�夋嫨鐗╂枡',
+            productIds: [],
+          },
       rules: 'selectRequired',
     },
     {
@@ -363,6 +383,30 @@
         placeholder: '璇疯緭鍏ラ��璐ф暟閲�',
         precision: 2,
       },
+      dependencies: {
+        triggerFields: ['itemId'],
+        componentProps: (values) => {
+          const selected = items?.find((i) => i.productId === values.itemId);
+          return {
+            class: '!w-full',
+            max: selected?.count ?? undefined,
+            min: 0,
+            placeholder: '璇疯緭鍏ラ��璐ф暟閲�',
+            precision: 2,
+          };
+        },
+        rules: (values) => {
+          const selected = items?.find((i) => i.productId === values.itemId);
+          const max = selected?.count;
+          if (max !== undefined && max !== null) {
+            return z
+              .number({ message: '璇疯緭鍏ラ��璐ф暟閲�' })
+              .min(0)
+              .max(max, `鍙��璐ф暟閲忎笉鑳借秴杩� ${max}`);
+          }
+          return z.number({ message: '璇疯緭鍏ラ��璐ф暟閲�' }).min(0);
+        },
+      },
       rules: 'required',
     },
     {
@@ -371,6 +415,7 @@
       component: markRaw(WmBatchSelect),
       componentProps: {
         clientId,
+        disabled: true,
         placeholder: '璇烽�夋嫨鎵规',
         salesOrderCode,
       },
@@ -378,6 +423,7 @@
         triggerFields: ['itemId'],
         componentProps: (values) => ({
           clientId,
+          disabled: true,
           itemId: values.itemId,
           placeholder: '璇烽�夋嫨鎵规',
           salesOrderCode,

--
Gitblit v1.9.3