From 2bd663b4488808814ea07685f527fc2eb51e5bfe Mon Sep 17 00:00:00 2001
From: xyc <jc_xiong@hotmail.com>
Date: 星期五, 28 八月 2026 17:36:13 +0800
Subject: [PATCH] fix: 菜单/布局统一——企业解释重复 components 键导致 app-header 未注册;规则管理/用户管理改为统一上下布局(顶部系统栏+登出),移除菜单内失效的退出登录项

---
 traffic-audit-web/src/views/ReportExport.vue |   11 ++++++-----
 1 files changed, 6 insertions(+), 5 deletions(-)

diff --git a/traffic-audit-web/src/views/ReportExport.vue b/traffic-audit-web/src/views/ReportExport.vue
index ca276fb..c7935b4 100644
--- a/traffic-audit-web/src/views/ReportExport.vue
+++ b/traffic-audit-web/src/views/ReportExport.vue
@@ -304,7 +304,7 @@
       const m = this.curModule
       if (!m || !this.period) return
       const params = Object.assign(this.buildParams(), { types: m.items.map(i => i.key).join(',') })
-      api.get('/report/ready', { params })
+      api.get('/report/ready', { params, timeout: 60000 })
         .then(res => {
           const list = (res && res.data && res.data.items) || []
           list.forEach(r => {
@@ -349,7 +349,7 @@
       if (!items.length) { this.$message.warning('璇烽�夋嫨瑕侀瑙堢殑鎶ヨ〃'); return }
       this.loading = 'preview-' + m.key
       const params = Object.assign(this.buildParams(), { types: items.map(i => i.key).join(',') })
-      api.get('/report/preview', { params })
+      api.get('/report/preview', { params, timeout: 60000 })
         .then(res => {
           const list = (res && res.data && res.data.items) || []
           this.previewItems = list.map(it => {
@@ -387,18 +387,18 @@
       const params = this.buildParams()
       const doExport = () => {
         if (items.length === 1) {
-          api.get('/report/export/' + items[0].key, { params, responseType: 'blob' })
+          api.get('/report/export/' + items[0].key, { params, responseType: 'blob', timeout: 120000 })
             .then(res => { this.downloadBlob(res, items[0].fileName); this.$message.success('鎶ヨ〃瀵煎嚭鎴愬姛'); this.loading = '' })
             .catch(err => this.failWith(err))
           return
         }
         const zipParams = Object.assign({}, params, { types: items.map(i => i.key).join(',') })
-        api.get('/report/export/selected', { params: zipParams, responseType: 'blob' })
+        api.get('/report/export/selected', { params: zipParams, responseType: 'blob', timeout: 120000 })
           .then(res => { this.downloadBlob(res, '鐢熸垚_鎵�閫夋姤琛╛' + this.period + '.zip'); this.$message.success('宸插鍑� ' + items.length + ' 寮犳姤琛紙zip锛�'); this.loading = '' })
           .catch(err => this.failWith(err))
       }
       const readyParams = Object.assign({}, params, { types: items.map(i => i.key).join(',') })
-      api.get('/report/ready', { params: readyParams })
+      api.get('/report/ready', { params: readyParams, timeout: 60000 })
         .then(rd => {
           const list = (rd && rd.data && rd.data.items) || []
           const missing = list.filter(i => !i.ready)
@@ -420,6 +420,7 @@
         .catch(() => doExport())
     },
     failWith(err) {
+      if (err && err._toast) { this.loading = ''; return }
       let msg = ''
       const d = err && err.response && err.response.data
       if (d && typeof d === 'object' && d.message) msg = d.message

--
Gitblit v1.9.1