我的租户菜单加提醒:需要在多租户模式下使用,否则数据会出现混乱
parent
bffd067985
commit
9b87a03522
|
@ -6,6 +6,9 @@ import { reactive } from "vue";
|
|||
import { getTenantId, getToken } from "/@/utils/auth";
|
||||
import { useUserStoreWithOut } from "/@/store/modules/user";
|
||||
|
||||
import { Modal } from "ant-design-vue";
|
||||
import { defHttp } from "@/utils/http/axios";
|
||||
|
||||
const globSetting = useGlobSetting();
|
||||
const baseApiUrl = globSetting.domainUrl;
|
||||
/**
|
||||
|
@ -459,3 +462,52 @@ export function replaceUserInfoByExpression(expression: string | any[]) {
|
|||
// @ts-ignore
|
||||
return isString ? replace(expression) : expression.map(replace);
|
||||
}
|
||||
|
||||
/**
|
||||
* 设置租户缓存,当租户退出的时候
|
||||
*
|
||||
* @param tenantId
|
||||
*/
|
||||
export async function userExitChangeLoginTenantId(tenantId){
|
||||
const userStore = useUserStoreWithOut();
|
||||
//step 1 获取用户租户
|
||||
const url = '/sys/tenant/getCurrentUserTenant'
|
||||
let currentTenantId = null;
|
||||
const data = await defHttp.get({ url });
|
||||
if(data && data.list){
|
||||
let arr = data.list;
|
||||
if(arr.length>0){
|
||||
//step 2.判断当前id是否存在用户租户中
|
||||
let filterTenantId = arr.filter((item) => item.id == tenantId);
|
||||
//存在说明不是退出的不是当前租户,还用用来的租户即可
|
||||
if(filterTenantId && filterTenantId.length>0){
|
||||
currentTenantId = tenantId;
|
||||
}else{
|
||||
//不存在默认第一个
|
||||
currentTenantId = arr[0].id
|
||||
}
|
||||
}
|
||||
}
|
||||
userStore.setTenant(currentTenantId);
|
||||
//切换租户后要刷新首页
|
||||
window.location.reload();
|
||||
}
|
||||
|
||||
/**
|
||||
* 我的租户模块需要开启多租户提示
|
||||
*
|
||||
* @param title 标题
|
||||
*/
|
||||
export function tenantSaasMessage(title){
|
||||
let tenantId = getTenantId();
|
||||
if(!tenantId){
|
||||
Modal.confirm({
|
||||
title:title,
|
||||
content: '此菜单需要在多租户模式下使用,否则数据会出现混乱',
|
||||
okText: '确认',
|
||||
okType: 'danger',
|
||||
// @ts-ignore
|
||||
cancelButtonProps: { style: { display: 'none' } },
|
||||
})
|
||||
}
|
||||
}
|
|
@ -30,7 +30,7 @@
|
|||
<RoleDesc @register="registerDesc"></RoleDesc>
|
||||
</template>
|
||||
<script lang="ts" name="system-role" setup>
|
||||
import { ref } from 'vue';
|
||||
import { onMounted, ref } from 'vue';
|
||||
import { BasicTable, TableAction } from '/@/components/Table';
|
||||
import { useDrawer } from '/@/components/Drawer';
|
||||
import { useModal } from '/@/components/Modal';
|
||||
|
@ -41,6 +41,8 @@
|
|||
import { listByTenant, deleteRole, batchDeleteRole, getExportUrl, getImportUrl } from './role.api';
|
||||
import { useListPage } from '/@/hooks/system/useListPage';
|
||||
import { getLoginTenantName } from "/@/views/system/tenant/tenant.api";
|
||||
import { tenantSaasMessage } from "@/utils/common/compUtils";
|
||||
|
||||
const showFooter = ref(true);
|
||||
const [roleUserDrawer, { openDrawer: openRoleUserDrawer }] = useDrawer();
|
||||
const [registerDrawer, { openDrawer }] = useDrawer();
|
||||
|
@ -167,6 +169,10 @@
|
|||
async function getTenantName(){
|
||||
loginTenantName.value = await getLoginTenantName();
|
||||
}
|
||||
|
||||
onMounted(()=>{
|
||||
tenantSaasMessage('租户角色')
|
||||
})
|
||||
</script>
|
||||
|
||||
<style scoped lang="less">
|
||||
|
|
|
@ -27,7 +27,7 @@
|
|||
|
||||
<script lang="ts" name="tenant-system-user" setup>
|
||||
//ts语法
|
||||
import { ref, unref } from 'vue';
|
||||
import { onMounted, ref, unref } from 'vue';
|
||||
import { BasicTable, TableAction, ActionItem } from '/@/components/Table';
|
||||
import UserDrawer from '../user/UserDrawer.vue';
|
||||
import JThirdAppButton from '/@/components/jeecg/thirdApp/JThirdAppButton.vue';
|
||||
|
@ -48,6 +48,7 @@
|
|||
import { changeOwenUserTenant } from "/@/views/system/usersetting/UserSetting.api";
|
||||
import { getLoginTenantName } from "/@/views/system/tenant/tenant.api";
|
||||
import TenantUserDrawer from './components/TenantUserDrawer.vue';
|
||||
import { tenantSaasMessage } from "@/utils/common/compUtils";
|
||||
|
||||
const { createMessage, createConfirm } = useMessage();
|
||||
|
||||
|
@ -157,7 +158,9 @@
|
|||
},
|
||||
{
|
||||
label: '离职',
|
||||
onClick: handleQuit.bind(null, record.username),
|
||||
//update-begin---author:wangshuai---date:2023-10-25---for:【QQYUN-6822】9.离职交接人选的是自己,完成之后数据没了---
|
||||
onClick: handleQuit.bind(null, record.id),
|
||||
//update-end---author:wangshuai---date:2023-10-25---for:【QQYUN-6822】9.离职交接人选的是自己,完成之后数据没了---
|
||||
//update-begin---author:wangshuai ---date:20230130 for:[QQYUN-3974]租户的创建人 不应该有离职按钮------------
|
||||
ifShow: () =>{
|
||||
return record.status === '1' && record.username!== record.createBy;
|
||||
|
@ -278,6 +281,10 @@
|
|||
loginTenantName.value = await getLoginTenantName();
|
||||
}
|
||||
//update-end---author:wangshuai ---date:20230710 for:【QQYUN-5723】4、显示当前登录租户------------
|
||||
|
||||
onMounted(()=>{
|
||||
tenantSaasMessage('租户用户')
|
||||
})
|
||||
</script>
|
||||
|
||||
<style scoped>
|
||||
|
|
|
@ -30,7 +30,7 @@
|
|||
</div>
|
||||
</template>
|
||||
<script lang="ts" name="my-tenant-list" setup>
|
||||
import { ref, unref } from 'vue';
|
||||
import { onMounted, ref, unref } from 'vue';
|
||||
import { BasicTable, TableAction } from '/@/components/Table';
|
||||
import { useModal } from '/@/components/Modal';
|
||||
import { invitationUserJoin, getTenantPageListByUserId } from '../tenant.api';
|
||||
|
@ -43,6 +43,7 @@
|
|||
import TenantPackList from '../pack/TenantPackList.vue';
|
||||
import { getTenantId } from '/@/utils/auth';
|
||||
import { useUserStore } from '/@/store/modules/user';
|
||||
import { tenantSaasMessage } from "@/utils/common/compUtils";
|
||||
|
||||
const { createMessage } = useMessage();
|
||||
const [registerModal, { openModal }] = useModal();
|
||||
|
@ -137,4 +138,9 @@
|
|||
function handleSuccess() {
|
||||
(selectedRowKeys.value = []) && reload();
|
||||
}
|
||||
|
||||
onMounted(()=>{
|
||||
//提示信息
|
||||
tenantSaasMessage('我的租户')
|
||||
})
|
||||
</script>
|
||||
|
|
|
@ -69,42 +69,6 @@
|
|||
<Icon icon="ant-design:edit-outlined" class="footer-icon" />
|
||||
<span>查看租户名片</span>
|
||||
</span>
|
||||
<span
|
||||
v-if="item.userTenantStatus !== '3' && item.auth"
|
||||
@click.stop="footerClick('tenantSetting', item)"
|
||||
class="font-color333 flex-flow margin-right40 font-size13 pointer"
|
||||
>
|
||||
<Icon icon="ant-design:tool-outlined" class="footer-icon" />
|
||||
<span>租户管理?</span>
|
||||
</span>
|
||||
<span v-else-if="item.userTenantStatus === '3' && item.auth" class="font-color9e flex-flow margin-right40 font-size13">
|
||||
<Icon icon="ant-design:tool-outlined" class="footer-icon" />
|
||||
<span>租户管理?</span>
|
||||
</span>
|
||||
<span
|
||||
v-if="item.userTenantStatus !== '3' && !item.auth"
|
||||
@click.stop="footerClick('tenantSetting', item)"
|
||||
class="font-color333 flex-flow margin-right40 font-size13 pointer"
|
||||
>
|
||||
<Icon icon="ant-design:tool-outlined" class="footer-icon" />
|
||||
<span>申请角色权限?</span>
|
||||
</span>
|
||||
<span v-else-if="item.userTenantStatus === '3' && !item.auth" class="font-color9e flex-flow margin-right40 font-size13">
|
||||
<Icon icon="ant-design:tool-outlined" class="footer-icon" />
|
||||
<span>申请角色权限?</span>
|
||||
</span>
|
||||
<span
|
||||
v-if="item.userTenantStatus !== '3'"
|
||||
@click.stop="footerClick('tenantSetting', item)"
|
||||
class="font-color333 flex-flow margin-right40 font-size13 pointer"
|
||||
>
|
||||
<Icon icon="ant-design:gold-outlined" class="footer-icon" />
|
||||
<span>我的汇报关系?</span>
|
||||
</span>
|
||||
<span v-else class="font-color9e flex-flow margin-right40 font-size13">
|
||||
<Icon icon="ant-design:gold-outlined" class="footer-icon" />
|
||||
<span>我的汇报关系?</span>
|
||||
</span>
|
||||
<span
|
||||
v-if="item.userTenantStatus !== '3'"
|
||||
@click.stop="footerClick('exitTenant', item)"
|
||||
|
@ -226,7 +190,7 @@ import { onMounted, ref, unref } from "vue";
|
|||
import { getTenantListByUserId, cancelApplyTenant, exitUserTenant, changeOwenUserTenant, agreeOrRefuseJoinTenant } from "./UserSetting.api";
|
||||
import { useUserStore } from "/@/store/modules/user";
|
||||
import { CollapseContainer } from "/@/components/Container";
|
||||
import { getFileAccessHttpUrl } from "/@/utils/common/compUtils";
|
||||
import { getFileAccessHttpUrl, userExitChangeLoginTenantId } from "/@/utils/common/compUtils";
|
||||
import headerImg from "/@/assets/images/header.jpg";
|
||||
import {useMessage} from "/@/hooks/web/useMessage";
|
||||
import { initDictOptions } from '/@/utils/dict';
|
||||
|
@ -424,11 +388,7 @@ const userDetail = ref({
|
|||
if (res.success) {
|
||||
createMessage.success(res.message);
|
||||
cancelVisible.value = false;
|
||||
//update-begin---author:wangshuai ---date:20230703 for:【QQYUN-5632】退出租户后 再点击主页 已退出的租户应用还可以操作------------
|
||||
userStore.setTenant(null);
|
||||
//update-end---author:wangshuai ---date:20230703 for:【QQYUN-5632】退出租户后 再点击主页 已退出的租户应用还可以操作------------
|
||||
//切换租户后要刷新首页
|
||||
window.location.reload();
|
||||
userExitChangeLoginTenantId(unref(myTenantInfo).tenantUserId);
|
||||
} else {
|
||||
if (res.message === 'assignedOwen') {
|
||||
//需要指定变更者
|
||||
|
@ -480,9 +440,9 @@ const userDetail = ref({
|
|||
changeOwenUserTenant({ userId:unref(tenantOwen), tenantId:unref(myTenantInfo).tenantUserId }).then((res) =>{
|
||||
if(res.success){
|
||||
createMessage.success(res.message);
|
||||
userStore.setTenant(null);
|
||||
//切换租户后要刷新首页
|
||||
window.location.reload();
|
||||
//update-begin---author:wangshuai---date:2023-10-23---for:【QQYUN-6822】7、登录拥有多个租户身份的用户,退出租户,只剩下一个租户后显示为空---
|
||||
userExitChangeLoginTenantId(unref(myTenantInfo).tenantUserId);
|
||||
//update-end---author:wangshuai---date:2023-10-23---for:【QQYUN-6822】7、登录拥有多个租户身份的用户,退出租户,只剩下一个租户后显示为空---
|
||||
} else {
|
||||
createMessage.warning(res.message);
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue