From d171971461713d9d6d9ccb989fa2195d7d9ee1c6 Mon Sep 17 00:00:00 2001
From: zhangwencui <1064582902@qq.com>
Date: 星期二, 14 七月 2026 10:14:51 +0800
Subject: [PATCH] 物料同步到mes开关syncMes

---
 vite.config.ts                           |   30 --
 src/views/basicData/mdm/data.ts          |  405 ++++++++++++++++++++-------------------
 src/views/basicData/mdm/modules/form.vue |  128 ++++++------
 3 files changed, 279 insertions(+), 284 deletions(-)

diff --git a/src/views/basicData/mdm/data.ts b/src/views/basicData/mdm/data.ts
index 479f150..35507c1 100644
--- a/src/views/basicData/mdm/data.ts
+++ b/src/views/basicData/mdm/data.ts
@@ -1,283 +1,294 @@
-import type { VbenFormSchema } from '#/adapter/form';
-import type { VxeTableGridOptions } from '#/adapter/vxe-table';
+import type { VbenFormSchema } from "#/adapter/form";
+import type { VxeTableGridOptions } from "#/adapter/vxe-table";
 
-import { CommonStatusEnum, DICT_TYPE } from '#/packages/constants/src';
-import { getDictOptions } from '#/packages/effects/hooks/src';
+import { CommonStatusEnum, DICT_TYPE } from "#/packages/constants/src";
+import { getDictOptions } from "#/packages/effects/hooks/src";
 
-import { z } from '#/adapter/form';
-import { getUnitPage } from '#/api/mdm/unit';
-import { getWarehouseSimpleList } from '#/api/erp/stock/warehouse';
+import { z } from "#/adapter/form";
+import { getUnitPage } from "#/api/mdm/unit";
+import { getWarehouseSimpleList } from "#/api/erp/stock/warehouse";
 
 /** 鐗╂枡绫诲瀷閫夐」 */
 export const ITEM_TYPE_OPTIONS = [
-  { label: '鍘熸枡', value: 1 },
-  { label: '鍗婃垚鍝�', value: 2 },
-  { label: '鎴愬搧', value: 3 },
-  { label: '杈呮枡', value: 4 },
+  { label: "鍘熸枡", value: 1 },
+  { label: "鍗婃垚鍝�", value: 2 },
+  { label: "鎴愬搧", value: 3 },
+  { label: "杈呮枡", value: 4 },
 ];
 
 /** 鐗╂枡绫诲瀷鏄犲皠 */
 export const ITEM_TYPE_MAP: Record<number, string> = {
-  1: '鍘熸枡',
-  2: '鍗婃垚鍝�',
-  3: '鎴愬搧',
-  4: '杈呮枡',
+  1: "鍘熸枡",
+  2: "鍗婃垚鍝�",
+  3: "鎴愬搧",
+  4: "杈呮枡",
 };
 
 /** 鐗╂枡绫诲瀷棰滆壊鏄犲皠 */
 export const ITEM_TYPE_COLOR_MAP: Record<number, string> = {
-  1: 'green',
-  2: 'orange',
-  3: 'blue',
-  4: 'purple',
+  1: "green",
+  2: "orange",
+  3: "blue",
+  4: "purple",
 };
 
 /** 鏂板/淇敼鐨勮〃鍗� */
 export function useFormSchema(): VbenFormSchema[] {
   return [
     {
-      component: 'Input',
-      fieldName: 'id',
+      component: "Input",
+      fieldName: "id",
       dependencies: {
-        triggerFields: [''],
+        triggerFields: [""],
         show: () => false,
       },
     },
     {
-      component: 'Input',
-      fieldName: 'code',
-      label: '鐗╂枡缂栫爜',
+      component: "Input",
+      fieldName: "code",
+      label: "鐗╂枡缂栫爜",
       componentProps: {
-        placeholder: '璇疯緭鍏ョ墿鏂欑紪鐮�',
+        placeholder: "璇疯緭鍏ョ墿鏂欑紪鐮�",
       },
-      rules: 'required',
+      rules: "required",
     },
     {
-      component: 'Input',
-      fieldName: 'name',
-      label: '鐗╂枡鍚嶇О',
+      component: "Input",
+      fieldName: "name",
+      label: "鐗╂枡鍚嶇О",
       componentProps: {
-        placeholder: '璇疯緭鍏ョ墿鏂欏悕绉�',
+        placeholder: "璇疯緭鍏ョ墿鏂欏悕绉�",
       },
-      rules: 'required',
+      rules: "required",
     },
     {
-      component: 'RadioGroup',
-      fieldName: 'itemType',
-      label: '鐗╂枡绫诲瀷',
+      component: "RadioGroup",
+      fieldName: "itemType",
+      label: "鐗╂枡绫诲瀷",
       componentProps: {
         options: ITEM_TYPE_OPTIONS,
-        buttonStyle: 'solid',
-        optionType: 'button',
+        buttonStyle: "solid",
+        optionType: "button",
       },
-      rules: 'required',
+      rules: "required",
     },
     {
-      component: 'Input',
-      fieldName: 'specification',
-      label: '瑙勬牸鍨嬪彿',
+      component: "Input",
+      fieldName: "specification",
+      label: "瑙勬牸鍨嬪彿",
       componentProps: {
-        placeholder: '璇疯緭鍏ヨ鏍煎瀷鍙�',
+        placeholder: "璇疯緭鍏ヨ鏍煎瀷鍙�",
       },
     },
     {
-      component: 'ApiSelect',
-      fieldName: 'unitMeasureId',
-      label: '璁¢噺鍗曚綅',
-      rules: 'required',
-      formItemClass: 'col-span-1',
+      component: "ApiSelect",
+      fieldName: "unitMeasureId",
+      label: "璁¢噺鍗曚綅",
+      rules: "required",
+      formItemClass: "col-span-1",
       componentProps: {
-        placeholder: '璇烽�夋嫨璁¢噺鍗曚綅',
+        placeholder: "璇烽�夋嫨璁¢噺鍗曚綅",
         allowClear: true,
         api: async () => {
           const res = await getUnitPage({ pageNo: 1, pageSize: 100, status: 0 });
           return res.list || [];
         },
-        labelField: 'name',
-        valueField: 'id',
+        labelField: "name",
+        valueField: "id",
       },
     },
     {
-      component: 'ApiSelect',
-      fieldName: 'unitMeasureId2',
-      label: '杈呭崟浣�1',
-      formItemClass: 'col-span-1',
+      component: "ApiSelect",
+      fieldName: "unitMeasureId2",
+      label: "杈呭崟浣�1",
+      formItemClass: "col-span-1",
       componentProps: {
-        placeholder: '璇烽�夋嫨杈呭崟浣�1',
+        placeholder: "璇烽�夋嫨杈呭崟浣�1",
         allowClear: true,
         api: async () => {
           const res = await getUnitPage({ pageNo: 1, pageSize: 100, status: 0 });
           return res.list || [];
         },
-        labelField: 'name',
-        valueField: 'id',
+        labelField: "name",
+        valueField: "id",
       },
     },
     {
-      component: 'InputNumber',
-      fieldName: 'unitMeasureRate1',
-      label: '杈呭崟浣�1鎹㈢畻姣旂巼',
-      formItemClass: 'col-span-1',
+      component: "InputNumber",
+      fieldName: "unitMeasureRate1",
+      label: "杈呭崟浣�1鎹㈢畻姣旂巼",
+      formItemClass: "col-span-1",
       componentProps: {
-        class: '!w-full',
+        class: "!w-full",
         min: 0,
         precision: 6,
-        placeholder: '璇疯緭鍏ユ崲绠楁瘮鐜�',
+        placeholder: "璇疯緭鍏ユ崲绠楁瘮鐜�",
       },
     },
     {
-      component: 'ApiSelect',
-      fieldName: 'unitMeasureId3',
-      label: '杈呭崟浣�2',
-      formItemClass: 'col-span-1',
+      component: "ApiSelect",
+      fieldName: "unitMeasureId3",
+      label: "杈呭崟浣�2",
+      formItemClass: "col-span-1",
       componentProps: {
-        placeholder: '璇烽�夋嫨杈呭崟浣�2',
+        placeholder: "璇烽�夋嫨杈呭崟浣�2",
         allowClear: true,
         api: async () => {
           const res = await getUnitPage({ pageNo: 1, pageSize: 100, status: 0 });
           return res.list || [];
         },
-        labelField: 'name',
-        valueField: 'id',
+        labelField: "name",
+        valueField: "id",
       },
     },
     {
-      component: 'InputNumber',
-      fieldName: 'unitMeasureRate2',
-      label: '杈呭崟浣�2鎹㈢畻姣旂巼',
-      formItemClass: 'col-span-1',
+      component: "InputNumber",
+      fieldName: "unitMeasureRate2",
+      label: "杈呭崟浣�2鎹㈢畻姣旂巼",
+      formItemClass: "col-span-1",
       componentProps: {
-        class: '!w-full',
+        class: "!w-full",
         min: 0,
         precision: 6,
-        placeholder: '璇疯緭鍏ユ崲绠楁瘮鐜�',
+        placeholder: "璇疯緭鍏ユ崲绠楁瘮鐜�",
       },
     },
     {
-      component: 'ApiSelect',
-      fieldName: 'warehouseId',
-      label: '榛樿浠撳簱',
+      component: "ApiSelect",
+      fieldName: "warehouseId",
+      label: "榛樿浠撳簱",
       componentProps: {
-        placeholder: '璇烽�夋嫨榛樿浠撳簱',
+        placeholder: "璇烽�夋嫨榛樿浠撳簱",
         allowClear: true,
         api: getWarehouseSimpleList,
-        labelField: 'name',
-        valueField: 'id',
+        labelField: "name",
+        valueField: "id",
       },
     },
     {
-      component: 'Input',
-      fieldName: 'barCode',
-      label: '鏉$爜',
+      component: "Input",
+      fieldName: "barCode",
+      label: "鏉$爜",
       componentProps: {
-        placeholder: '璇疯緭鍏ユ潯鐮�',
+        placeholder: "璇疯緭鍏ユ潯鐮�",
       },
     },
     {
-      component: 'InputNumber',
-      fieldName: 'purchasePrice',
-      label: '閲囪喘浠�',
+      component: "InputNumber",
+      fieldName: "purchasePrice",
+      label: "閲囪喘浠�",
       componentProps: {
-        class: '!w-full',
+        class: "!w-full",
         min: 0,
         precision: 2,
-        placeholder: '璇疯緭鍏ラ噰璐环',
+        placeholder: "璇疯緭鍏ラ噰璐环",
       },
     },
     {
-      component: 'InputNumber',
-      fieldName: 'salesPrice',
-      label: '閿�鍞环',
+      component: "InputNumber",
+      fieldName: "salesPrice",
+      label: "閿�鍞环",
       componentProps: {
-        class: '!w-full',
+        class: "!w-full",
         min: 0,
         precision: 2,
-        placeholder: '璇疯緭鍏ラ攢鍞环',
+        placeholder: "璇疯緭鍏ラ攢鍞环",
       },
     },
     {
-      component: 'InputNumber',
-      fieldName: 'costPrice',
-      label: '鎴愭湰浠�',
+      component: "InputNumber",
+      fieldName: "costPrice",
+      label: "鎴愭湰浠�",
       componentProps: {
-        class: '!w-full',
+        class: "!w-full",
         min: 0,
         precision: 2,
-        placeholder: '璇疯緭鍏ユ垚鏈环',
+        placeholder: "璇疯緭鍏ユ垚鏈环",
       },
     },
     {
-      component: 'InputNumber',
-      fieldName: 'safetyStock',
-      label: '瀹夊叏搴撳瓨',
+      component: "InputNumber",
+      fieldName: "safetyStock",
+      label: "瀹夊叏搴撳瓨",
       componentProps: {
-        class: '!w-full',
+        class: "!w-full",
         min: 0,
         precision: 2,
-        placeholder: '璇疯緭鍏ュ畨鍏ㄥ簱瀛�',
+        placeholder: "璇疯緭鍏ュ畨鍏ㄥ簱瀛�",
       },
     },
     {
-      component: 'InputNumber',
-      fieldName: 'minStock',
-      label: '鏈�浣庡簱瀛�',
+      component: "InputNumber",
+      fieldName: "minStock",
+      label: "鏈�浣庡簱瀛�",
       componentProps: {
-        class: '!w-full',
+        class: "!w-full",
         min: 0,
         precision: 2,
-        placeholder: '璇疯緭鍏ユ渶浣庡簱瀛�',
+        placeholder: "璇疯緭鍏ユ渶浣庡簱瀛�",
       },
     },
     {
-      component: 'InputNumber',
-      fieldName: 'maxStock',
-      label: '鏈�楂樺簱瀛�',
+      component: "InputNumber",
+      fieldName: "maxStock",
+      label: "鏈�楂樺簱瀛�",
       componentProps: {
-        class: '!w-full',
+        class: "!w-full",
         min: 0,
         precision: 2,
-        placeholder: '璇疯緭鍏ユ渶楂樺簱瀛�',
+        placeholder: "璇疯緭鍏ユ渶楂樺簱瀛�",
       },
     },
     {
-      component: 'Switch',
-      fieldName: 'isBatchManaged',
-      label: '鎵规绠$悊',
+      component: "Switch",
+      fieldName: "isBatchManaged",
+      label: "鎵规绠$悊",
       componentProps: {
-        class: 'w-auto',
-        checkedChildren: '鏄�',
-        unCheckedChildren: '鍚�',
+        class: "w-auto",
+        checkedChildren: "鏄�",
+        unCheckedChildren: "鍚�",
       },
       rules: z.boolean().default(true),
     },
     {
-      component: 'InputNumber',
-      fieldName: 'expiryDay',
-      label: '鏈夋晥鏈�(澶�)',
+      component: "Switch",
+      fieldName: "syncMes",
+      label: "鍚屾鍒� MES",
       componentProps: {
-        class: '!w-full',
+        class: "w-auto",
+        checkedChildren: "鏄�",
+        unCheckedChildren: "鍚�",
+      },
+      rules: z.boolean().default(false),
+    },
+    {
+      component: "InputNumber",
+      fieldName: "expiryDay",
+      label: "鏈夋晥鏈�(澶�)",
+      componentProps: {
+        class: "!w-full",
         min: 0,
-        placeholder: '璇疯緭鍏ユ湁鏁堟湡',
+        placeholder: "璇疯緭鍏ユ湁鏁堟湡",
       },
     },
     {
-      component: 'RadioGroup',
-      fieldName: 'status',
-      label: '鐘舵��',
+      component: "RadioGroup",
+      fieldName: "status",
+      label: "鐘舵��",
       componentProps: {
-        options: getDictOptions(DICT_TYPE.COMMON_STATUS, 'number'),
-        buttonStyle: 'solid',
-        optionType: 'button',
+        options: getDictOptions(DICT_TYPE.COMMON_STATUS, "number"),
+        buttonStyle: "solid",
+        optionType: "button",
       },
       rules: z.number().default(CommonStatusEnum.ENABLE),
     },
     {
-      component: 'Textarea',
-      fieldName: 'remark',
-      label: '澶囨敞',
-      formItemClass: 'col-span-2',
+      component: "Textarea",
+      fieldName: "remark",
+      label: "澶囨敞",
+      formItemClass: "col-span-2",
       componentProps: {
-        placeholder: '璇疯緭鍏ュ娉�',
+        placeholder: "璇疯緭鍏ュ娉�",
         rows: 3,
       },
     },
@@ -288,143 +299,143 @@
 export function useGridFormSchema(): VbenFormSchema[] {
   return [
     {
-      fieldName: 'code',
-      label: '鐗╂枡缂栫爜',
-      component: 'Input',
+      fieldName: "code",
+      label: "鐗╂枡缂栫爜",
+      component: "Input",
       componentProps: {
-        placeholder: '璇疯緭鍏ョ墿鏂欑紪鐮�',
+        placeholder: "璇疯緭鍏ョ墿鏂欑紪鐮�",
         allowClear: true,
       },
     },
     {
-      fieldName: 'name',
-      label: '鐗╂枡鍚嶇О',
-      component: 'Input',
+      fieldName: "name",
+      label: "鐗╂枡鍚嶇О",
+      component: "Input",
       componentProps: {
-        placeholder: '璇疯緭鍏ョ墿鏂欏悕绉�',
+        placeholder: "璇疯緭鍏ョ墿鏂欏悕绉�",
         allowClear: true,
       },
     },
     {
-      fieldName: 'itemType',
-      label: '鐗╂枡绫诲瀷',
-      component: 'Select',
+      fieldName: "itemType",
+      label: "鐗╂枡绫诲瀷",
+      component: "Select",
       componentProps: {
-        placeholder: '璇烽�夋嫨鐗╂枡绫诲瀷',
+        placeholder: "璇烽�夋嫨鐗╂枡绫诲瀷",
         allowClear: true,
         options: ITEM_TYPE_OPTIONS,
       },
     },
     {
-      fieldName: 'status',
-      label: '鐘舵��',
-      component: 'Select',
+      fieldName: "status",
+      label: "鐘舵��",
+      component: "Select",
       componentProps: {
-        placeholder: '璇烽�夋嫨鐘舵��',
+        placeholder: "璇烽�夋嫨鐘舵��",
         allowClear: true,
-        options: getDictOptions(DICT_TYPE.COMMON_STATUS, 'number'),
+        options: getDictOptions(DICT_TYPE.COMMON_STATUS, "number"),
       },
     },
   ];
 }
 
 /** 鍒楄〃鐨勫瓧娈� */
-export function useGridColumns(): VxeTableGridOptions['columns'] {
+export function useGridColumns(): VxeTableGridOptions["columns"] {
   return [
-    { type: 'checkbox', width: 40 },
+    { type: "checkbox", width: 40 },
     {
-      field: 'code',
-      title: '鐗╂枡缂栫爜',
+      field: "code",
+      title: "鐗╂枡缂栫爜",
       minWidth: 120,
     },
     {
-      field: 'name',
-      title: '鐗╂枡鍚嶇О',
+      field: "name",
+      title: "鐗╂枡鍚嶇О",
       minWidth: 180,
     },
     {
-      field: 'specification',
-      title: '瑙勬牸鍨嬪彿',
+      field: "specification",
+      title: "瑙勬牸鍨嬪彿",
       minWidth: 150,
     },
     {
-      field: 'unitMeasureName',
-      title: '鍗曚綅',
+      field: "unitMeasureName",
+      title: "鍗曚綅",
       minWidth: 80,
     },
     {
-      field: 'unitMeasureName2',
-      title: '杈呭崟浣�1',
+      field: "unitMeasureName2",
+      title: "杈呭崟浣�1",
       minWidth: 80,
     },
     {
-      field: 'unitMeasureRate1',
-      title: '杈呭崟浣�1鎹㈢畻姣旂巼',
+      field: "unitMeasureRate1",
+      title: "杈呭崟浣�1鎹㈢畻姣旂巼",
       minWidth: 130,
     },
     {
-      field: 'unitMeasureName3',
-      title: '杈呭崟浣�2',
+      field: "unitMeasureName3",
+      title: "杈呭崟浣�2",
       minWidth: 80,
     },
     {
-      field: 'unitMeasureRate2',
-      title: '杈呭崟浣�2鎹㈢畻姣旂巼',
+      field: "unitMeasureRate2",
+      title: "杈呭崟浣�2鎹㈢畻姣旂巼",
       minWidth: 130,
     },
     {
-      field: 'warehouseName',
-      title: '榛樿浠撳簱',
+      field: "warehouseName",
+      title: "榛樿浠撳簱",
       minWidth: 100,
     },
     {
-      field: 'itemType',
-      title: '鐗╂枡绫诲瀷',
+      field: "itemType",
+      title: "鐗╂枡绫诲瀷",
       minWidth: 100,
-      slots: { default: 'itemType' },
+      slots: { default: "itemType" },
     },
     {
-      field: 'purchasePrice',
-      title: '閲囪喘浠�',
+      field: "purchasePrice",
+      title: "閲囪喘浠�",
       minWidth: 100,
       formatter: ({ cellValue }) => {
-        return cellValue != null ? `楼${Number(cellValue).toFixed(2)}` : '';
+        return cellValue != null ? `楼${Number(cellValue).toFixed(2)}` : "";
       },
     },
     {
-      field: 'salesPrice',
-      title: '閿�鍞环',
+      field: "salesPrice",
+      title: "閿�鍞环",
       minWidth: 100,
       formatter: ({ cellValue }) => {
-        return cellValue != null ? `楼${Number(cellValue).toFixed(2)}` : '';
+        return cellValue != null ? `楼${Number(cellValue).toFixed(2)}` : "";
       },
     },
     {
-      field: 'isBatchManaged',
-      title: '鎵规绠$悊',
+      field: "isBatchManaged",
+      title: "鎵规绠$悊",
       minWidth: 80,
-      slots: { default: 'isBatchManaged' },
+      slots: { default: "isBatchManaged" },
     },
     {
-      field: 'status',
-      title: '鐘舵��',
+      field: "status",
+      title: "鐘舵��",
       minWidth: 80,
       cellRender: {
-        name: 'CellDict',
+        name: "CellDict",
         props: { type: DICT_TYPE.COMMON_STATUS },
       },
     },
     {
-      field: 'createTime',
-      title: '鍒涘缓鏃堕棿',
+      field: "createTime",
+      title: "鍒涘缓鏃堕棿",
       minWidth: 180,
-      formatter: 'formatDateTime',
+      formatter: "formatDateTime",
     },
     {
-      title: '鎿嶄綔',
+      title: "鎿嶄綔",
       width: 180,
-      fixed: 'right',
-      slots: { default: 'actions' },
+      fixed: "right",
+      slots: { default: "actions" },
     },
   ];
-}
\ No newline at end of file
+}
diff --git a/src/views/basicData/mdm/modules/form.vue b/src/views/basicData/mdm/modules/form.vue
index 27b8097..fd08771 100644
--- a/src/views/basicData/mdm/modules/form.vue
+++ b/src/views/basicData/mdm/modules/form.vue
@@ -1,80 +1,82 @@
 <script lang="ts" setup>
-import type { MdmItemApi } from '#/api/mdm/item';
+  import type { MdmItemApi } from "#/api/mdm/item";
 
-import { computed, ref } from 'vue';
+  import { computed, ref } from "vue";
 
-import { useVbenModal } from '#/packages/effects/common-ui/src';
+  import { useVbenModal } from "#/packages/effects/common-ui/src";
 
-import { message } from 'ant-design-vue';
+  import { message } from "ant-design-vue";
 
-import { useVbenForm } from '#/adapter/form';
-import { createItem, getItem, updateItem } from '#/api/mdm/item';
-import { $t } from '#/locales';
+  import { useVbenForm } from "#/adapter/form";
+  import { createItem, getItem, updateItem } from "#/api/mdm/item";
+  import { $t } from "#/locales";
 
-import { useFormSchema } from '../data';
+  import { useFormSchema } from "../data";
 
-defineOptions({ name: 'ItemForm' });
+  defineOptions({ name: "ItemForm" });
 
-const emit = defineEmits(['success']);
-const formData = ref<MdmItemApi.Item>();
-const getTitle = computed(() => {
-  return formData.value?.id
-    ? $t('ui.actionTitle.edit', ['鐗╂枡'])
-    : $t('ui.actionTitle.create', ['鐗╂枡']);
-});
+  const emit = defineEmits(["success"]);
+  const formData = ref<MdmItemApi.Item>();
+  const getTitle = computed(() => {
+    return formData.value?.id
+      ? $t("ui.actionTitle.edit", ["鐗╂枡"])
+      : $t("ui.actionTitle.create", ["鐗╂枡"]);
+  });
 
-const [Form, formApi] = useVbenForm({
-  commonConfig: {
-    componentProps: {
-      class: 'w-full',
+  const [Form, formApi] = useVbenForm({
+    commonConfig: {
+      componentProps: {
+        class: "w-full",
+      },
+      labelWidth: 110,
     },
-    labelWidth: 110,
-  },
-  layout: 'horizontal',
-  schema: useFormSchema(),
-  showDefaultActions: false,
-  wrapperClass: 'grid-cols-2',
-});
+    layout: "horizontal",
+    schema: useFormSchema(),
+    showDefaultActions: false,
+    wrapperClass: "grid-cols-2",
+  });
 
-const [Modal, modalApi] = useVbenModal({
-  async onConfirm() {
-    const { valid } = await formApi.validate();
-    if (!valid) {
-      return;
-    }
-    modalApi.lock();
-    const data = (await formApi.getValues()) as MdmItemApi.Item;
-    try {
-      await (formData.value?.id ? updateItem(data) : createItem(data));
-      await modalApi.close();
-      emit('success');
-      message.success($t('ui.actionMessage.operationSuccess'));
-    } finally {
-      modalApi.unlock();
-    }
-  },
-  async onOpenChange(isOpen: boolean) {
-    if (!isOpen) {
-      formData.value = undefined;
-      return;
-    }
-    const data = modalApi.getData<MdmItemApi.Item>();
-    if (!data || !data.id) {
-      return;
-    }
-    modalApi.lock();
-    try {
-      formData.value = await getItem(data.id);
-      await formApi.setValues(formData.value);
-    } finally {
-      modalApi.unlock();
-    }
-  },
-});
+  const [Modal, modalApi] = useVbenModal({
+    async onConfirm() {
+      const { valid } = await formApi.validate();
+      if (!valid) {
+        return;
+      }
+      modalApi.lock();
+      const data = (await formApi.getValues()) as MdmItemApi.Item;
+      try {
+        await (formData.value?.id ? updateItem(data) : createItem(data));
+        await modalApi.close();
+        emit("success");
+        message.success($t("ui.actionMessage.operationSuccess"));
+      } finally {
+        modalApi.unlock();
+      }
+    },
+    async onOpenChange(isOpen: boolean) {
+      if (!isOpen) {
+        formData.value = undefined;
+        return;
+      }
+      const data = modalApi.getData<MdmItemApi.Item>();
+      if (!data || !data.id) {
+        return;
+      }
+      modalApi.lock();
+      try {
+        formData.value = await getItem(data.id);
+        // 缂栬緫鍥炴樉鏃讹紝syncMes 榛樿涓� false
+        await formApi.setValues({ ...formData.value, syncMes: false });
+      } finally {
+        modalApi.unlock();
+      }
+    },
+  });
 </script>
 
 <template>
-  <Modal class="w-[1000px]" :title="getTitle">
+  <Modal class="w-[1000px]"
+         :title="getTitle">
     <Form class="mx-4" />
   </Modal>
 </template>
\ No newline at end of file
diff --git a/vite.config.ts b/vite.config.ts
index a38ba42..7d96511 100644
--- a/vite.config.ts
+++ b/vite.config.ts
@@ -8,22 +8,8 @@
         enable: false,
       },
       optimizeDeps: {
-        include: [
-          "vue",
-          "vue-router",
-          "pinia",
-          "ant-design-vue",
-          "dayjs",
-          "@vueuse/core",
-          "axios",
-        ],
-        exclude: [
-          "dhtmlx-gantt",
-          "tinymce",
-          "bpmn-js",
-          "bpmn-js-properties-panel",
-          "video.js",
-        ],
+        include: ["vue", "vue-router", "pinia", "ant-design-vue", "dayjs", "@vueuse/core", "axios"],
+        exclude: ["dhtmlx-gantt", "tinymce", "bpmn-js", "bpmn-js-properties-panel", "video.js"],
       },
       build: {
         rollupOptions: {
@@ -32,11 +18,7 @@
               "vendor-vue": ["vue", "vue-router", "pinia"],
               "vendor-ui": ["ant-design-vue", "@vueuse/core"],
               "vendor-utils": ["dayjs", "axios", "@vee-validate/zod", "zod"],
-              "vendor-editor": [
-                "tinymce",
-                "@tinymce/tinymce-vue",
-                "@form-create/ant-design-vue",
-              ],
+              "vendor-editor": ["tinymce", "@tinymce/tinymce-vue", "@form-create/ant-design-vue"],
             },
           },
         },
@@ -44,13 +26,13 @@
       server: {
         allowedHosts: true,
         watch: {
-          ignored: ['**/node_modules/**', '**/dist/**', '**/.git/**'],
+          ignored: ["**/node_modules/**", "**/dist/**", "**/.git/**"],
         },
         proxy: {
           "/admin-api": {
             changeOrigin: true,
-            rewrite: (path) => path.replace(/^\/admin-api/, ""),
-            target: "http://192.168.0.226:48080/admin-api",
+            rewrite: path => path.replace(/^\/admin-api/, ""),
+            target: "http://192.168.0.244:48080/admin-api",
             ws: true,
           },
         },

--
Gitblit v1.9.3