From 346a988f537228ae44731cd31007f1412b482e83 Mon Sep 17 00:00:00 2001
From: 云 <2163098428@qq.com>
Date: 星期一, 19 十月 2026 16:32:10 +0800
Subject: [PATCH] refactor(mdm): 移除物料主数据中废弃的字段配置

---
 src/views/mes/pro/batch/modules/form.vue |   45 ++++++++++++++++++++++++++++++++++++++++++---
 1 files changed, 42 insertions(+), 3 deletions(-)

diff --git a/src/views/mes/pro/batch/modules/form.vue b/src/views/mes/pro/batch/modules/form.vue
index b909f02..f27d9bb 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, PalletOption } from "../data";
+  import type { FormType, PalletOption, TonBagOption } from "../data";
 
   import type { VxeTableGridOptions } from "#/adapter/vxe-table";
   import type { MesProBatchApi } from "#/api/mes/pro/batch";
@@ -22,6 +22,7 @@
     updateBatch,
   } from "#/api/mes/pro/batch";
   import { getUnboundPalletList } from "#/api/mes/pro/pallet";
+  import { getUnboundTonBags } from "#/api/mes/pro/bagCode";
   import { $t } from "#/locales";
   import { UserSelect } from "#/views/system/user/components";
 
@@ -38,12 +39,37 @@
   const formType = ref<FormType>("create");
   const formData = ref<MesProBatchApi.Batch>();
   let palletOptions: PalletOption[] = [];
+  let tonBagOptions: TonBagOption[] = [];
   async function handlePalletChange(ids: number[] = []) {
+    const values = await formApi.getValues();
+    if (ids.length && (values.tonBagIds?.length || formData.value?.bindingMode === 'tonBag')) {
+      message.warning('缁戝畾鎵樼洏鍜岀粦瀹氬惃琚嬪彧鑳介�夋嫨涓�绉�');
+      await formApi.setFieldValue('palletIds', []);
+      return;
+    }
     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);
+  }
+
+  async function handleTonBagChange(ids: number[] = []) {
+    const values = await formApi.getValues();
+    if (ids.length && (values.palletIds?.length || formData.value?.bindingMode === 'pallet')) {
+      message.warning('缁戝畾鎵樼洏鍜岀粦瀹氬惃琚嬪彧鑳介�夋嫨涓�绉�');
+      await formApi.setFieldValue('tonBagIds', []);
+      return;
+    }
+    const selected = tonBagOptions.filter(option => ids.includes(option.value));
+    const source = formData.value?.itemId ? formData.value : selected[0];
+    if (selected.some(option => option.itemId !== source?.itemId)) {
+      message.warning('鐢熶骇鎵规鍙兘缁戝畾鐩稿悓鍝佺鐨勫惃琚�');
+      await formApi.setFieldValue('tonBagIds', selected.filter(option => option.itemId === source?.itemId).map(option => option.value));
     }
     await formApi.setFieldValue('itemId', source?.itemId);
     await formApi.setFieldValue('itemName', source?.itemName);
@@ -198,6 +224,10 @@
       modalApi.lock();
       try {
         const data = (await formApi.getValues()) as MesProBatchApi.Batch;
+        if (data.palletIds?.length && data.tonBagIds?.length) {
+          message.warning('缁戝畾鎵樼洏鍜岀粦瀹氬惃琚嬪彧鑳介�夋嫨涓�绉�');
+          return;
+        }
         if (formType.value === "fill") {
           await fillBatchInfo({ ...data, id: formData.value!.id, workers });
         } else if (formData.value?.id) {
@@ -221,18 +251,25 @@
       formType.value = data.formType;
       // 鏂板/琛ュ綍/缂栬緫鎬佸姞杞芥湭缁戝畾鎵规鐨勬墭鐩橈紝渚涖�岀粦瀹氭墭鐩樸�嶅閫変笅鎷変娇鐢�
       palletOptions = [];
+      tonBagOptions = [];
       if (formType.value !== "detail") {
-        const pallets = await getUnboundPalletList();
+        const [pallets, tonBags] = await Promise.all([getUnboundPalletList(), getUnboundTonBags()]);
         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,
         }));
+        tonBagOptions = tonBags.map((bag) => ({
+          label: `${bag.code ?? `鍚ㄨ${bag.id}`} 路 ${bag.itemName || '寰呭畬鍠勫搧绉�'}`,
+          value: bag.id as number,
+          itemId: bag.itemId, itemName: bag.itemName, itemCode: bag.itemCode,
+        }));
       }
-      formApi.setState({ schema: useFormSchema(formType.value, palletOptions, handlePalletChange) });
+      formApi.setState({ schema: useFormSchema(formType.value, palletOptions, handlePalletChange, tonBagOptions, handleTonBagChange) });
       if (formType.value !== "detail") {
         // 娓呯┖涓婃鎵撳紑鏃跺嬀閫夌殑鎵樼洏锛岄伩鍏嶆畫鐣欏�艰瑙﹀彂銆屾壒娆¤繘鍏ョ敓浜т腑銆�
         await formApi.setFieldValue("palletIds", undefined);
+        await formApi.setFieldValue("tonBagIds", undefined);
       }
       // 鏍规嵁琛ㄥ崟鎬佸垏鎹汉鍛樺瓙琛ㄥ垪
       workerGridApi.setGridOptions({
@@ -244,6 +281,8 @@
         modalApi.lock();
         try {
           formData.value = await getBatch(data.id);
+          const existingBinding = formData.value.bindingMode;
+          formApi.setState({ schema: useFormSchema(formType.value, palletOptions, handlePalletChange, tonBagOptions, handleTonBagChange, existingBinding) });
           await formApi.setValues(formData.value);
           const workers = (formData.value.workers ?? []).map(
             (worker, index) => ({ ...worker, _rowKey: worker.id ?? index })

--
Gitblit v1.9.3