!286 合并 多租户功能
* add 新增 ruoyi-common-tenant 多租户模块 全框架适配多租户改动 * update 优化 隐藏页面主键 * remove 移除 缓存列表功能(多租户缓存功能繁杂多样 没有办法在页面管理) * update 重构 全局缓存KEY 与 常用缓存KEY做区分 * update 重构 OssFactory 加载方式 改为每次比对配置做实例更新 * update 优化 SaTokenDao 改为 Bean 注入 便于扩展 * update 重构 项目初始化数据改为懒加载 不提供热加载 * update 重构 验证码开关使用配置文件(经调查少有动态开启需求) * update 优化 启用 sqlserver 高版本语法 简化sql脚本语法 * update 优化 DataPermissionHelper 增加 开启/关闭 忽略数据权限功能 * update 优化 连接池增加 keepaliveTime 探活参数 * update 优化 调整连接池最长生命周期 防止出现警告 * update 优化 代码生成页面模板 校验不必要的表单数据 * add 新增 StringUtils splitTo 与 splitList 方法 优化业务代码
This commit is contained in:
@@ -5,8 +5,25 @@
|
||||
<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">
|
||||
@@ -56,8 +73,19 @@ 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,
|
||||
tenantId: undefined,
|
||||
companyName: undefined,
|
||||
tenantList: [],
|
||||
userList: []
|
||||
}
|
||||
},
|
||||
components: {
|
||||
Breadcrumb,
|
||||
TopNav,
|
||||
@@ -92,6 +120,27 @@ export default {
|
||||
}
|
||||
},
|
||||
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')
|
||||
},
|
||||
@@ -111,6 +160,15 @@ export default {
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
|
||||
.flex {
|
||||
display: flex;
|
||||
}
|
||||
|
||||
.align-center {
|
||||
align-items: center;
|
||||
}
|
||||
|
||||
.navbar {
|
||||
height: 50px;
|
||||
overflow: hidden;
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
<sidebar v-if="!sidebar.hide" class="sidebar-container" />
|
||||
<div :class="{hasTagsView:needTagsView,sidebarHide:sidebar.hide}" class="main-container">
|
||||
<div :class="{'fixed-header':fixedHeader}">
|
||||
<navbar />
|
||||
<navbar ref="navbar"/>
|
||||
<tags-view v-if="needTagsView" />
|
||||
</div>
|
||||
<app-main />
|
||||
@@ -54,6 +54,11 @@ export default {
|
||||
return variables;
|
||||
}
|
||||
},
|
||||
created() {
|
||||
this.$nextTick(() => {
|
||||
this.$refs.navbar.getTenantList();
|
||||
});
|
||||
},
|
||||
methods: {
|
||||
handleClickOutside() {
|
||||
this.$store.dispatch('app/closeSideBar', { withoutAnimation: false })
|
||||
|
||||
Reference in New Issue
Block a user