From d42a044f6f7ca289a7b37affa00b6c385cd13b62 Mon Sep 17 00:00:00 2001
From: xyc <jc_xiong@hotmail.com>
Date: 星期一, 31 八月 2026 09:46:26 +0800
Subject: [PATCH] fix: 报表生成页 el-tabs 同样触发布局无限循环风险,改为 el-radio-group 切换(与 /import 修复一致),并清理 DataImport 残留 el-tabs 样式

---
 traffic-audit-web/src/views/DataImport.vue |   20 +++++++++++++-------
 1 files changed, 13 insertions(+), 7 deletions(-)

diff --git a/traffic-audit-web/src/views/DataImport.vue b/traffic-audit-web/src/views/DataImport.vue
index 7216ff3..40a4c6f 100644
--- a/traffic-audit-web/src/views/DataImport.vue
+++ b/traffic-audit-web/src/views/DataImport.vue
@@ -43,8 +43,12 @@
             <div class="card-head">閫夋嫨绫诲瀷骞舵寕杞芥枃浠�
               <span class="tip" style="float:right;line-height:24px">鍚勬ā鍧椾簰涓嶅奖鍝嶏細鍏堥�夌被鍨嬨�佹寕杞芥枃浠讹紝鍙�岀珛鍗冲鍏ャ�嶆垨銆屽姞鍏ラ槦鍒椼�嶇粺涓�鎵ц锛涗篃鍙湪涓嬫柟绮樿创鐩綍璺緞鐐广�屽鍏ヨ鐩綍銆嶏紝鏂囦欢澶归噷澶氫釜鏈堢殑 Excel 浼氭寜鏂囦欢鍚嶈嚜鍔ㄨ瘑鍒湀浠姐�佸垎鍒鍏ュ搴旀姤琛ㄦ湡</span>
             </div>
-            <el-tabs v-model="activeModule" class="module-tabs">
-              <el-tab-pane v-for="g in groups" :key="g.key" :label="g.name" :name="g.key">
+            <div class="module-tabs-head">
+                <el-radio-group v-model="activeModule" size="small">
+                  <el-radio-button v-for="g in groups" :key="g.key" :label="g.key">{{ g.name }}</el-radio-button>
+                </el-radio-group>
+              </div>
+              <div v-for="g in groups" :key="g.key" v-show="activeModule === g.key" class="module-tab-pane">
                 <div class="module-sel">
                   <el-select v-model="moduleSel[g.key]" placeholder="閫夋嫨瀵煎叆绫诲瀷" style="width:260px"
                              @change="onModuleChange(g.key)" clearable>
@@ -88,8 +92,7 @@
                     </div>
                   </div>
                 </div>
-              </el-tab-pane>
-            </el-tabs>
+              </div>
             <div v-if="importType" class="type-info">
               <div>妯℃澘锛歿{ templateName }}
                 <el-link v-if="templateUrl" type="primary" icon="el-icon-download" :underline="false"
@@ -437,7 +440,7 @@
           this.dirFiles = d.files || []
           this.dirFilesTruncated = !!d.filesTruncated
         })
-        .catch(e => { this.$message.error((e.response && e.response.data && e.response.data.message) || '鐩綍鍔犺浇澶辫触') })
+        .catch(e => { if (e && e._toast) return; this.$message.error((e.response && e.response.data && e.response.data.message) || '鐩綍鍔犺浇澶辫触') })
         .finally(() => { this.dirLoading = false })
     },
     goDirParent() { if (this.dirParent) this.loadDirs(this.dirParent) },
@@ -505,6 +508,7 @@
         })
         .catch(e => {
           this.dirImporting = false
+          if (e && e._toast) return
           this.$message.error((e.response && e.response.data && e.response.data.message) || '鐩綍涓嶅瓨鍦ㄦ垨鏃犳硶璁块棶锛�' + dir)
         })
     },
@@ -585,6 +589,7 @@
           this.afterImport()
         })
         .catch(e => {
+          if (e && e._toast) return
           this.$message.error((e.response && e.response.data && e.response.data.message) || '鎵归噺瀵煎叆澶辫触')
         })
         .finally(() => { this.cityDirLoading = false })
@@ -676,7 +681,7 @@
           })
           this.overview = map
         })
-        .catch(() => {})
+        .catch(e => { if (!e || !e._toast) this.$message.error('瀵煎叆璁板綍鍔犺浇澶辫触锛岃鍒锋柊閲嶈瘯') })
         .finally(() => { this.batchLoading = false })
     },
     batchKeyToType(k) {
@@ -737,7 +742,6 @@
 .el-header { background: #409EFF; color: white; line-height: 60px; font-size: 18px; }
 .import-card { margin-bottom: 0; }
 .card-head { font-weight: 600; margin-bottom: 6px; }
-.module-tabs >>> .el-tabs__header { margin-bottom: 12px; }
 .module-sel { max-width: 480px; }
 .group-label { font-size: 13px; color: #606266; font-weight: 600; margin-bottom: 6px; padding-left: 6px; border-left: 3px solid #409EFF; }
 .module-file { margin-top: 8px; }
@@ -773,4 +777,6 @@
 .dir-empty { padding: 14px; font-size: 12px; color: #909399; text-align: center; }
 .dir-files { margin-top: 8px; }
 
+.module-tabs-head { margin-bottom: 10px; }
+.module-tab-pane { min-height: 120px; }
 </style>

--
Gitblit v1.9.1