From ac4341ea6b66ae02427d39d35f41d42d78b2eb2e Mon Sep 17 00:00:00 2001
From: Junjie <fallin.jie@qq.com>
Date: 星期五, 14 二月 2025 10:08:32 +0800
Subject: [PATCH] #

---
 zy-asrs-admin/src/views/system/menu/index.vue |   24 +++++++++++++++---------
 1 files changed, 15 insertions(+), 9 deletions(-)

diff --git a/zy-asrs-admin/src/views/system/menu/index.vue b/zy-asrs-admin/src/views/system/menu/index.vue
index 130104d..90318b1 100644
--- a/zy-asrs-admin/src/views/system/menu/index.vue
+++ b/zy-asrs-admin/src/views/system/menu/index.vue
@@ -1,6 +1,6 @@
 <script setup>
 import { getCurrentInstance, ref, computed, reactive, onMounted } from 'vue';
-import { get, post } from '@/utils/request.js'
+import { get, post, postBlob } from '@/utils/request.js'
 import * as Icons from "@ant-design/icons-vue";
 import EditView from './edit.vue'
 import { message, Modal } from 'ant-design-vue';
@@ -13,6 +13,11 @@
 
 const searchInput = ref("")
 const editChild = ref(null)
+
+const state = reactive({
+  selectedRowKeys: [],
+  loading: false,
+});
 
 let tableData = ref([]);
 getPage();
@@ -28,10 +33,6 @@
   },
 };
 
-const state = reactive({
-  selectedRowKeys: [],
-  loading: false,
-});
 const hasSelected = computed(() => state.selectedRowKeys.length > 0);
 const start = () => {
   state.loading = true;
@@ -47,6 +48,7 @@
 };
 
 function getPage() {
+  state.loading = true;
   post('/api/menu/tree', {}).then((result) => {
     if (result.data.code == 200) {
       let data = result.data.data;
@@ -57,6 +59,8 @@
         name: '鏍圭洰褰�',
         children: data
       }];
+
+      state.loading = false;
     } else if (result.code === 401) {
       message.error(result.msg);
       logout()
@@ -98,7 +102,7 @@
 }
 
 const handleExport = async (intl) => {
-  post('/api/menu/export', {}).then(result => {
+  postBlob('/api/menu/export', {}).then(result => {
     const blob = new Blob([result.data], { type: 'application/vnd.ms-excel' });
     window.location.href = window.URL.createObjectURL(blob);
     return true;
@@ -133,7 +137,7 @@
       </div>
     </div>
     <a-table :row-selection="{ selectedRowKeys: state.selectedRowKeys, onChange: onSelectChange }"
-      :data-source="tableData" :defaultExpandAllRows="false" key="menu" rowKey="id">
+      :data-source="tableData" :defaultExpandAllRows="false" key="menu" rowKey="id" :loading="state.loading" :scroll="{ y: 780 }">
       <a-table-column :title="formatMessage('db.sys_menu.name', '鑿滃崟鍚嶇О')" key="name" data-index="name" />
       <a-table-column :title="formatMessage('db.sys_menu.route', '璺敱鍦板潃')" key="route" data-index="route" />
       <a-table-column :title="formatMessage('db.sys_menu.type', '绫诲瀷')" key="type" data-index="type$">
@@ -149,10 +153,12 @@
           <component :is="components[ref(record.icon).value]" />
         </template>
       </a-table-column>
-      <a-table-column :title="formatMessage('db.sys_menu.language_id', '鍥介檯鍖朓D')" key="languageId" data-index="languageId" />
+      <a-table-column :title="formatMessage('db.sys_menu.language_id', '鍥介檯鍖朓D')" key="languageId"
+        data-index="languageId" />
       <a-table-column :title="formatMessage('db.sys_menu.sort', '鎺掑簭')" key="sort" data-index="sort" />
       <a-table-column :title="formatMessage('db.sys_menu.status', '鐘舵��')" key="status$" data-index="status$" />
-      <a-table-column :title="formatMessage('db.sys_menu.update_time', '淇敼鏃堕棿')" key="updateTime$" data-index="updateTime$" />
+      <a-table-column :title="formatMessage('db.sys_menu.update_time', '淇敼鏃堕棿')" key="updateTime$"
+        data-index="updateTime$" />
       <a-table-column :title="formatMessage('common.operation', '鎿嶄綔')" key="oper" data-index="oper">
         <template #default="{ record }">
           <div style="display: flex;justify-content: space-evenly;">

--
Gitblit v1.9.1