ruoyi-ui/src/layout/components/Navbar.vue
@@ -2,14 +2,36 @@
  <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 id="ruoyi" class="right-menu-item hover-effect" />
        <el-tooltip content="源码地址" effect="dark" placement="bottom">
          <ruo-yi-git id="ruoyi-git" class="right-menu-item hover-effect" />
        </el-tooltip>
        <el-tooltip content="文档地址" effect="dark" placement="bottom">
          <ruo-yi-doc id="ruoyi-doc" class="right-menu-item hover-effect" />
        </el-tooltip>
        <screenfull id="screenfull" class="right-menu-item hover-effect" />
@@ -29,11 +51,11 @@
          <router-link to="/user/profile">
            <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>
            <span @click="logout">退出登录</span>
          <el-dropdown-item divided @click.native="logout">
            <span>退出登录</span>
          </el-dropdown-item>
        </el-dropdown-menu>
      </el-dropdown>
@@ -44,20 +66,35 @@
<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 RuoYi from '@/components/RuoYi'
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,
      tenantId: undefined,
      companyName: undefined,
      tenantList: [],
      userList: []
    }
  },
  components: {
    Breadcrumb,
    TopNav,
    Hamburger,
    Screenfull,
    SizeSelect,
    Search,
    RuoYi
    RuoYiGit,
    RuoYiDoc
  },
  computed: {
    ...mapGetters([
@@ -75,9 +112,35 @@
          value: val
        })
      }
    },
    topNav: {
      get() {
        return this.$store.state.settings.topNav
      }
    }
  },
  methods: {
    // 动态切换
    dynamicTenantEvent(tenantId) {
      if (this.companyName != null && this.companyName !== '') {
        dynamicTenant(tenantId).then(res => {
          this.$tab.closeAllPage()
          this.$router.push('/')
        });
      }
    },
    dynamicClearEvent() {
      dynamicClear().then(res => {
        this.$tab.closeAllPage()
        this.$router.push('/')
      });
    },
    // 租户列表
    getTenantList() {
      tenantList().then(res => {
        this.tenantList = res.data;
      });
    },
    toggleSideBar() {
      this.$store.dispatch('app/toggleSideBar')
    },
@@ -88,15 +151,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;
@@ -121,6 +193,11 @@
    float: left;
  }
  .topmenu-container {
    position: absolute;
    left: 50px;
  }
  .errLog-container {
    display: inline-block;
    vertical-align: top;