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