From 4ffb0acc35d85a78959edb97ef80e23a92cefc89 Mon Sep 17 00:00:00 2001
From: 疯狂的狮子Li <15040126243@163.com>
Date: 星期六, 11 三月 2023 23:59:05 +0800
Subject: [PATCH] fix 修复 超管切换租户后 点击个人中心报错

---
 ruoyi-ui/src/layout/components/Navbar.vue |   91 +++++++++++++++++++++++++++++++++++++++++----
 1 files changed, 82 insertions(+), 9 deletions(-)

diff --git a/ruoyi-ui/src/layout/components/Navbar.vue b/ruoyi-ui/src/layout/components/Navbar.vue
index 9edccc9..55844db 100644
--- a/ruoyi-ui/src/layout/components/Navbar.vue
+++ b/ruoyi-ui/src/layout/components/Navbar.vue
@@ -2,12 +2,30 @@
   <div class="navbar">
     <hamburger id="hamburger-container" :is-active="sidebar.opened" class="hamburger-container" @toggleClick="toggleSideBar" />
 
-    <breadcrumb id="breadcrumb-container" class="breadcrumb-container" />
+    <breadcrumb id="breadcrumb-container" class="breadcrumb-container" v-if="!topNav"/>
+    <top-nav id="topmenu-container" class="topmenu-container" v-if="topNav"/>
 
-    <div class="right-menu">
-      <template v-if="device!=='mobile'">
+    <div class="right-menu flex align-center">
+      <template v-if="device!=='mobile' ">
+        <el-select v-model="companyName"
+                   clearable
+                   filterable
+                   reserve-keyword
+                   placeholder="璇烽�夋嫨绉熸埛"
+                   v-if="userId === 1"
+                   @change="dynamicTenantEvent"
+                   @clear="dynamicClearEvent">
+          <el-option
+            v-for="item in tenantList"
+            :key="item.tenantId"
+            :label="item.companyName"
+            :value="item.tenantId">
+          </el-option>
+          <svg-icon slot="prefix" icon-class="company" class="el-input__icon input-icon" />
+        </el-select>
+
         <search id="header-search" class="right-menu-item" />
-        
+
         <el-tooltip content="婧愮爜鍦板潃" effect="dark" placement="bottom">
           <ruo-yi-git id="ruoyi-git" class="right-menu-item hover-effect" />
         </el-tooltip>
@@ -30,11 +48,11 @@
           <i class="el-icon-caret-bottom" />
         </div>
         <el-dropdown-menu slot="dropdown">
-          <router-link to="/user/profile">
+          <router-link to="/user/profile" v-if="!dynamic">
             <el-dropdown-item>涓汉涓績</el-dropdown-item>
           </router-link>
-          <el-dropdown-item>
-            <span @click="setting = true">甯冨眬璁剧疆</span>
+          <el-dropdown-item @click.native="setting = true">
+            <span>甯冨眬璁剧疆</span>
           </el-dropdown-item>
           <el-dropdown-item divided @click.native="logout">
             <span>閫�鍑虹櫥褰�</span>
@@ -48,16 +66,29 @@
 <script>
 import { mapGetters } from 'vuex'
 import Breadcrumb from '@/components/Breadcrumb'
+import TopNav from '@/components/TopNav'
 import Hamburger from '@/components/Hamburger'
 import Screenfull from '@/components/Screenfull'
 import SizeSelect from '@/components/SizeSelect'
 import Search from '@/components/HeaderSearch'
 import RuoYiGit from '@/components/RuoYi/Git'
 import RuoYiDoc from '@/components/RuoYi/Doc'
+import { tenantList } from "@/api/login";
+import { dynamicClear, dynamicTenant } from "@/api/system/tenant";
 
 export default {
+  data() {
+    return {
+      userId: this.$store.getters.userId,
+      companyName: undefined,
+      tenantList: [],
+      // 鏄惁鍒囨崲浜嗙鎴�
+      dynamic: false
+    }
+  },
   components: {
     Breadcrumb,
+    TopNav,
     Hamburger,
     Screenfull,
     SizeSelect,
@@ -81,9 +112,37 @@
           value: val
         })
       }
+    },
+    topNav: {
+      get() {
+        return this.$store.state.settings.topNav
+      }
     }
   },
   methods: {
+    // 鍔ㄦ�佸垏鎹�
+    dynamicTenantEvent(tenantId) {
+      if (this.companyName != null && this.companyName !== '') {
+        dynamicTenant(tenantId).then(res => {
+          this.dynamic = true;
+          this.$tab.closeAllPage()
+          this.$router.push('/')
+        });
+      }
+    },
+    dynamicClearEvent() {
+      dynamicClear().then(res => {
+        this.dynamic = false;
+        this.$tab.closeAllPage()
+        this.$router.push('/')
+      });
+    },
+    // 绉熸埛鍒楄〃
+    getTenantList() {
+      tenantList().then(res => {
+        this.tenantList = res.data;
+      });
+    },
     toggleSideBar() {
       this.$store.dispatch('app/toggleSideBar')
     },
@@ -94,15 +153,24 @@
         type: 'warning'
       }).then(() => {
         this.$store.dispatch('LogOut').then(() => {
-          location.reload()
+          location.href = process.env.VUE_APP_CONTEXT_PATH + "index";
         })
-      })
+      }).catch(() => {});
     }
   }
 }
 </script>
 
 <style lang="scss" scoped>
+
+.flex {
+  display: flex;
+}
+
+.align-center {
+  align-items: center;
+}
+
 .navbar {
   height: 50px;
   overflow: hidden;
@@ -127,6 +195,11 @@
     float: left;
   }
 
+  .topmenu-container {
+    position: absolute;
+    left: 50px;
+  }
+
   .errLog-container {
     display: inline-block;
     vertical-align: top;

--
Gitblit v1.9.3