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/RuleManage.vue    |   12 +++++-------
 traffic-audit-web/src/views/UserManage.vue    |   11 ++++-------
 traffic-audit-web/src/views/ExplainReview.vue |    3 +--
 3 files changed, 10 insertions(+), 16 deletions(-)

diff --git a/traffic-audit-web/src/views/ExplainReview.vue b/traffic-audit-web/src/views/ExplainReview.vue
index c714ed7..8e7bcd9 100644
--- a/traffic-audit-web/src/views/ExplainReview.vue
+++ b/traffic-audit-web/src/views/ExplainReview.vue
@@ -129,9 +129,8 @@
   CITY_TAXI: 'city_taxi_monthly'
 }
 export default {
-  components: { AppHeader },
+  components: { AppHeader, AiChatDialog },
   name: 'ExplainReview',
-  components: { AiChatDialog },
   data() {
     return {
       reportType: 'H2032',
diff --git a/traffic-audit-web/src/views/RuleManage.vue b/traffic-audit-web/src/views/RuleManage.vue
index e39ff03..ed091d7 100644
--- a/traffic-audit-web/src/views/RuleManage.vue
+++ b/traffic-audit-web/src/views/RuleManage.vue
@@ -1,6 +1,6 @@
 <template>
-  <el-container>
-    <el-header>浜ら�氱粺璁℃姤琛ㄥ鏍哥郴缁� - 瑙勫垯绠$悊</el-header>
+  <el-container direction="vertical">
+    <app-header title="浜ら�氱粺璁℃姤琛ㄥ鏍哥郴缁� - 瑙勫垯绠$悊"></app-header>
     <el-container>
       <el-aside width="200px">
         <el-menu router default-active="/rules">
@@ -12,8 +12,7 @@
           <el-menu-item index="/report">鎶ヨ〃鐢熸垚</el-menu-item>
           <el-menu-item index="/rules">瑙勫垯绠$悊</el-menu-item>
           <el-menu-item index="/users">鐢ㄦ埛绠$悊</el-menu-item>
-          <el-menu-item index="/login" @click="logout">閫�鍑虹櫥褰�</el-menu-item>
-</el-menu>
+        </el-menu>
       </el-aside>
       <el-main>
         <h3>瀹℃牳瑙勫垯绠$悊</h3>
@@ -70,6 +69,7 @@
 </template>
 <script>
 import api from '@/api'
+import AppHeader from '@/components/AppHeader.vue'
 const TYPE_CN = {
   DIFF: '宸�煎姣�', RATIO: '姣斾緥瀵规瘮', MOM: '鐜瘮鏂板', NULL_CHECK: '蹇呭~/涓�鑷存��',
   OUT_RANGE: '鑼冨洿妫�鏌�', MOM_EQ_ZERO: '鐜瘮涓�0', MOM_PCT: '鐜瘮鐧惧垎姣�',
@@ -81,6 +81,7 @@
   AVG_DIST_VS_H2032: '骞冲潎杩愯窛瀵规瘮', LOADED_TON_RATIO: '杞借揣鍚ㄤ綅姣斿��'
 }
 export default {
+  components: { AppHeader },
   name: 'RuleManage',
   data() {
     return { reportType: 'H2032', rules: [], loading: false }
@@ -109,6 +110,3 @@
   mounted() { this.loadRules() }
 }
 </script>
-<style scoped>
-.el-header { background: #409EFF; color: white; line-height: 60px; font-size: 18px; }
-</style>
diff --git a/traffic-audit-web/src/views/UserManage.vue b/traffic-audit-web/src/views/UserManage.vue
index 6f9cc03..93694d5 100644
--- a/traffic-audit-web/src/views/UserManage.vue
+++ b/traffic-audit-web/src/views/UserManage.vue
@@ -1,6 +1,6 @@
 <template>
-  <el-container>
-    <el-header>浜ら�氱粺璁℃姤琛ㄥ鏍哥郴缁� - 鐢ㄦ埛绠$悊</el-header>
+  <el-container direction="vertical">
+    <app-header title="浜ら�氱粺璁℃姤琛ㄥ鏍哥郴缁� - 鐢ㄦ埛绠$悊"></app-header>
     <el-container>
       <el-aside width="200px">
         <el-menu router :default-active="activeMenu">
@@ -12,7 +12,6 @@
           <el-menu-item index="/report">鎶ヨ〃鐢熸垚</el-menu-item>
           <el-menu-item index="/rules">瑙勫垯绠$悊</el-menu-item>
           <el-menu-item index="/users">鐢ㄦ埛绠$悊</el-menu-item>
-          <el-menu-item index="/login" @click="logout">閫�鍑虹櫥褰�</el-menu-item>
         </el-menu>
       </el-aside>
       <el-main>
@@ -89,6 +88,7 @@
 </template>
 <script>
 import api from '@/api'
+import AppHeader from '@/components/AppHeader.vue'
 const MODULE_OPTIONS = [
   { key: 'freight', label: '璐ц繍鎶ヨ〃' },
   { key: 'passenger', label: '鍏矾鏃呭鎶ヨ〃' },
@@ -97,6 +97,7 @@
   { key: 'cityPassenger', label: '鍩庡競瀹㈣繍鎶ヨ〃' }
 ]
 export default {
+  components: { AppHeader },
   name: 'UserManage',
   data() {
     return {
@@ -116,10 +117,6 @@
   },
   mounted() { this.loadList() },
   methods: {
-    logout() {
-      localStorage.removeItem('token'); localStorage.removeItem('username'); localStorage.removeItem('realName'); localStorage.removeItem('modules')
-      this.$router.push('/login')
-    },
     loadList() {
       this.loading = true
       api.get('/user/list', { params: { keyword: this.keyword } })

--
Gitblit v1.9.1