From b8de520fa696d8a95393aa3ff544c5a6f5c36001 Mon Sep 17 00:00:00 2001
From: 吴羡 <16976746+Xian-TT3@user.noreply.gitee.com>
Date: 星期三, 30 九月 2026 15:33:41 +0800
Subject: [PATCH] 宁夏万通需求:出库单行支持主/辅单位录入;物料型号维护;考勤节假日配置时间段;设备批量删除;质检导出按筛选条件

---
 src/views/basicData/mdm/modules/form.vue |   32 +++++++++++++++++++++++++++++---
 1 files changed, 29 insertions(+), 3 deletions(-)

diff --git a/src/views/basicData/mdm/modules/form.vue b/src/views/basicData/mdm/modules/form.vue
index 7cf30a7..7aa7c27 100644
--- a/src/views/basicData/mdm/modules/form.vue
+++ b/src/views/basicData/mdm/modules/form.vue
@@ -11,12 +11,15 @@
 import { createItem, getItem, updateItem } from '#/api/mdm/item';
 import { $t } from '#/locales';
 
-import { useFormSchema } from '../data';
+import { useFormSchema, clearUnitListCache, buildCategoryTree } from '../data';
+import { getItemTypeSimpleList } from '#/api/mes/md/item/type';
+import ItemModelConfig from '../components/item-model-config.vue';
 
 defineOptions({ name: "ItemForm" });
 
 const emit = defineEmits(['success']);
 const formData = ref<MdmItemApi.Item>();
+const itemModelRef = ref<InstanceType<typeof ItemModelConfig>>();
 
 const [Form, formApi] = useVbenForm({
   commonConfig: {
@@ -26,7 +29,7 @@
     labelWidth: 110,
   },
   layout: 'horizontal',
-  schema: useFormSchema(),
+  schema: [],
   showDefaultActions: false,
   wrapperClass: 'grid-cols-2',
 });
@@ -37,10 +40,20 @@
     if (!valid) {
       return;
     }
+    // 鍨嬪彿鍏堟牎楠岋紝閬垮厤鐗╂枡宸蹭繚瀛樿�屽瀷鍙锋湭淇濆瓨
+    const modelError = itemModelRef.value?.validate();
+    if (modelError) {
+      message.error(modelError);
+      return;
+    }
     modalApi.lock();
     const data = (await formApi.getValues()) as MdmItemApi.Item;
     try {
-      await (formData.value?.id ? updateItem(data) : createItem(data));
+      const itemId = formData.value?.id ?? (await createItem(data));
+      if (formData.value?.id) {
+        await updateItem(data);
+      }
+      await itemModelRef.value?.save(itemId);
       await modalApi.close();
       emit('success');
       message.success($t('ui.actionMessage.operationSuccess'));
@@ -51,15 +64,26 @@
   async onOpenChange(isOpen: boolean) {
     if (!isOpen) {
       formData.value = undefined;
+      itemModelRef.value?.reset();
       return;
     }
     const data = modalApi.getData<MdmItemApi.Item>();
+    // 娓呴櫎鍗曚綅缂撳瓨锛岀‘淇濊幏鍙栨渶鏂版暟鎹�
+    clearUnitListCache();
+    // 鍔犺浇鏈�鏂板垎绫绘暟鎹�
+    const categoryRes = await getItemTypeSimpleList();
+    const categoryTreeData = buildCategoryTree(categoryRes || []);
+    // 璁剧疆 schema锛坒ormApi 宸插垵濮嬪寲锛�
+    formApi.setState({ schema: useFormSchema(formApi, categoryTreeData) });
     if (data?.id) {
       // 缂栬緫妯″紡
       modalApi.lock();
       try {
         formData.value = await getItem(data.id);
+        // 鍚屾鐘舵�佹槧灏勶細璇︽儏鎺ュ彛杩斿洖 syncedMes锛岃〃鍗曞瓧娈典负 syncMes
+        formData.value.syncMes = formData.value.syncedMes ?? true;
         await formApi.setValues(formData.value);
+        await itemModelRef.value?.load(data.id);
       } finally {
         modalApi.unlock();
       }
@@ -67,6 +91,7 @@
       // 鏂板妯″紡
       formData.value = undefined;
       await formApi.resetForm();
+      itemModelRef.value?.reset();
     }
   },
 });
@@ -75,5 +100,6 @@
 <template>
   <Modal class="w-[1000px]" :title="formData?.id ? $t('ui.actionTitle.edit', ['鐗╂枡']) : $t('ui.actionTitle.create', ['鐗╂枡'])">
     <Form class="mx-4" />
+    <ItemModelConfig ref="itemModelRef" />
   </Modal>
 </template>

--
Gitblit v1.9.3