From c77086ad2d7949ab36dd0c4e0b59907e672dd64f Mon Sep 17 00:00:00 2001
From: 云 <2163098428@qq.com>
Date: 星期五, 18 九月 2026 15:04:42 +0800
Subject: [PATCH] Merge remote-tracking branch 'refs/remotes/origin/dev_pro2.0' into dev_宁夏_九泓化工

---
 src/views/mes/md/item/type/index.vue |   54 ++++++++++++++++++++++++++++++++++++++++++++++++++++--
 1 files changed, 52 insertions(+), 2 deletions(-)

diff --git a/src/views/mes/md/item/type/index.vue b/src/views/mes/md/item/type/index.vue
index 062b7d9..859dcb2 100644
--- a/src/views/mes/md/item/type/index.vue
+++ b/src/views/mes/md/item/type/index.vue
@@ -5,18 +5,31 @@
 import { ref } from 'vue';
 
 import { Page, useVbenModal } from '@vben/common-ui';
+import { downloadFileFromBlobPart } from '@vben/utils';
 
 import { message } from 'ant-design-vue';
 
 import { ACTION_ICON, TableAction, useVbenVxeGrid } from '#/adapter/vxe-table';
-import { deleteItemType, getItemTypeList } from '#/api/mes/md/item/type';
+import {
+  deleteItemType,
+  exportItemType,
+  getItemTypeList,
+} from '#/api/mes/md/item/type';
+import { getItemPage as getMesItemPage } from '#/api/mes/md/item';
+import { getItemPage as getMdmItemPage } from '#/api/mdm/item';
 import { $t } from '#/locales';
 
 import { useGridColumns, useGridFormSchema } from './data';
 import Form from './modules/form.vue';
+import ImportForm from './modules/import-form.vue';
 
 const [FormModal, formModalApi] = useVbenModal({
   connectedComponent: Form,
+  destroyOnClose: true,
+});
+
+const [ImportModal, importModalApi] = useVbenModal({
+  connectedComponent: ImportForm,
   destroyOnClose: true,
 });
 
@@ -38,6 +51,17 @@
   formModalApi.setData(null).open();
 }
 
+/** 瀵煎叆鍒嗙被 */
+function handleImport() {
+  importModalApi.open();
+}
+
+/** 瀵煎嚭鍒嗙被锛堟寜褰撳墠鍒楄〃鏌ヨ鏉′欢瀵煎嚭鍏ㄩ儴鍛戒腑鏁版嵁锛� */
+async function handleExport() {
+  const data = await exportItemType(await gridApi.formApi.getValues());
+  downloadFileFromBlobPart({ fileName: '鐗╂枡鍒嗙被鏁版嵁.xls', source: data });
+}
+
 /** 娣诲姞涓嬬骇鍒嗙被 */
 function handleAppend(row: MesMdItemTypeApi.ItemType) {
   formModalApi.setData({ parentId: row.id }).open();
@@ -50,6 +74,18 @@
 
 /** 鍒犻櫎鍒嗙被 */
 async function handleDelete(row: MesMdItemTypeApi.ItemType) {
+  try {
+    const [mesResult, mdmResult] = await Promise.all([
+      getMesItemPage({ pageNo: 1, pageSize: 1, itemTypeId: row.id }),
+      getMdmItemPage({ pageNo: 1, pageSize: 1, categoryId: row.id } as any),
+    ]);
+    if (mesResult.total > 0 || mdmResult.total > 0) {
+      message.error('璇ュ垎绫讳笅瀛樺湪鐗╂枡锛屾棤娉曞垹闄�');
+      return;
+    }
+  } catch {
+    // 鏌ヨ寮傚父鏃剁户缁墽琛屽垹闄わ紝鐢卞悗绔厹搴曟牎楠�
+  }
   const hideLoading = message.loading({
     content: $t('ui.actionMessage.deleting', [row.name]),
     duration: 0,
@@ -101,7 +137,7 @@
 </script>
 
 <template>
-  <Page auto-content-height><FormModal @success="handleRefresh" />
+  <Page auto-content-height><FormModal @success="handleRefresh" /><ImportModal @success="handleRefresh" />
     <Grid table-title="鐗╂枡鍒嗙被鍒楄〃">
       <template #toolbar-tools>
         <TableAction
@@ -114,6 +150,20 @@
               onClick: handleCreate,
             },
             {
+              label: $t('ui.actionTitle.import', ['鐗╂枡鍒嗙被']),
+              type: 'primary',
+              icon: ACTION_ICON.UPLOAD,
+              auth: ['mes:md-item-type:import'],
+              onClick: handleImport,
+            },
+            {
+              label: $t('ui.actionTitle.export'),
+              type: 'primary',
+              icon: ACTION_ICON.DOWNLOAD,
+              auth: ['mes:md-item-type:export'],
+              onClick: handleExport,
+            },
+            {
               label: isExpanded ? '鏀剁缉' : '灞曞紑',
               type: 'primary',
               onClick: handleExpand,

--
Gitblit v1.9.3