From 27f904344349c51e720be96e4afd9ca033a33676 Mon Sep 17 00:00:00 2001
From: 云 <2163098428@qq.com>
Date: 星期五, 16 十月 2026 20:15:51 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/dev_新疆_塔河种业' into dev_新疆_塔河种业

---
 src/views/mes/pro/batch/modules/form.vue |   31 +++++++++++++++++++++++++++++--
 1 files changed, 29 insertions(+), 2 deletions(-)

diff --git a/src/views/mes/pro/batch/modules/form.vue b/src/views/mes/pro/batch/modules/form.vue
index 6242291..b909f02 100644
--- a/src/views/mes/pro/batch/modules/form.vue
+++ b/src/views/mes/pro/batch/modules/form.vue
@@ -1,5 +1,5 @@
 <script lang="ts" setup>
-  import type { FormType } from "../data";
+  import type { FormType, PalletOption } from "../data";
 
   import type { VxeTableGridOptions } from "#/adapter/vxe-table";
   import type { MesProBatchApi } from "#/api/mes/pro/batch";
@@ -21,6 +21,7 @@
     getBatch,
     updateBatch,
   } from "#/api/mes/pro/batch";
+  import { getUnboundPalletList } from "#/api/mes/pro/pallet";
   import { $t } from "#/locales";
   import { UserSelect } from "#/views/system/user/components";
 
@@ -36,6 +37,18 @@
 
   const formType = ref<FormType>("create");
   const formData = ref<MesProBatchApi.Batch>();
+  let palletOptions: PalletOption[] = [];
+  async function handlePalletChange(ids: number[] = []) {
+    const selected = palletOptions.filter(option => ids.includes(option.value));
+    const source = formData.value?.itemId ? formData.value : selected[0];
+    if (selected.some(option => !option.itemId || (source?.itemId && option.itemId !== source.itemId))) {
+      message.warning('鐢熶骇鎵规鍙兘缁戝畾鐩稿悓鍝佺鐨勬墭鐩�');
+      await formApi.setFieldValue('palletIds', selected.filter(option => option.itemId === source?.itemId).map(option => option.value));
+    }
+    await formApi.setFieldValue('itemId', source?.itemId);
+    await formApi.setFieldValue('itemName', source?.itemName);
+    await formApi.setFieldValue('itemCode', source?.itemCode);
+  }
 
   const isEditable = computed(() =>
     ["create", "update", "fill"].includes(formType.value)
@@ -206,7 +219,21 @@
       }
       const data = modalApi.getData<{ formType: FormType; id?: number }>();
       formType.value = data.formType;
-      formApi.setState({ schema: useFormSchema(formType.value) });
+      // 鏂板/琛ュ綍/缂栬緫鎬佸姞杞芥湭缁戝畾鎵规鐨勬墭鐩橈紝渚涖�岀粦瀹氭墭鐩樸�嶅閫変笅鎷変娇鐢�
+      palletOptions = [];
+      if (formType.value !== "detail") {
+        const pallets = await getUnboundPalletList();
+        palletOptions = pallets.map((pallet) => ({
+          label: `${pallet.tempCode ?? `鎵樼洏${pallet.id}`} 路 ${pallet.itemName || "寰呭畬鍠勫搧绉�"}锛堝凡瑁� ${pallet.bagCount ?? 0} 琚嬶級`,
+          value: pallet.id as number,
+          itemId: pallet.itemId, itemName: pallet.itemName, itemCode: pallet.itemCode,
+        }));
+      }
+      formApi.setState({ schema: useFormSchema(formType.value, palletOptions, handlePalletChange) });
+      if (formType.value !== "detail") {
+        // 娓呯┖涓婃鎵撳紑鏃跺嬀閫夌殑鎵樼洏锛岄伩鍏嶆畫鐣欏�艰瑙﹀彂銆屾壒娆¤繘鍏ョ敓浜т腑銆�
+        await formApi.setFieldValue("palletIds", undefined);
+      }
       // 鏍规嵁琛ㄥ崟鎬佸垏鎹汉鍛樺瓙琛ㄥ垪
       workerGridApi.setGridOptions({
         columns: isEditable.value

--
Gitblit v1.9.3