待办列表跨租户审批功能开发:
后端返回tenant信息跟当前用户登录的tenant进行比较,如果不一致,则弹出确认框提示用户切换租户,点击确认后完成租户切换,弹出切换租户成功的通知,然后进入审批详情页面。
This commit is contained in:
@ -30,11 +30,33 @@
|
|||||||
import { getSchemaTask } from '/@/api/workflow/process';
|
import { getSchemaTask } from '/@/api/workflow/process';
|
||||||
import { TaskTypeUrl } from '/@/enums/workflowEnum';
|
import { TaskTypeUrl } from '/@/enums/workflowEnum';
|
||||||
import { useI18n } from '/@/hooks/web/useI18n';
|
import { useI18n } from '/@/hooks/web/useI18n';
|
||||||
import { unref, watch, onMounted, onUnmounted } from 'vue';
|
import { unref, watch, onMounted, onUnmounted ,h} from 'vue';
|
||||||
import { useRouter } from 'vue-router';
|
import { useRouter } from 'vue-router';
|
||||||
import useEventBus from '/@/hooks/event/useEventBus';
|
import useEventBus from '/@/hooks/event/useEventBus';
|
||||||
|
import { getAppEnvConfig } from '/@/utils/env';
|
||||||
|
import { storeToRefs } from 'pinia';
|
||||||
|
import { useUserStore } from '/@/store/modules/user';
|
||||||
|
import {useMessage} from "/@/hooks/web/useMessage";
|
||||||
|
import { changeTenant } from '/@/api/system/tenant';
|
||||||
|
import {useAppStore} from "/@/store/modules/app";
|
||||||
|
import {setupRouterGuard} from "/@/router/guard";
|
||||||
|
import {usePermissionStore} from "/@/store/modules/permission";
|
||||||
|
import {useTabs} from "/@/hooks/web/useTabs";
|
||||||
|
import {useMenuSetting} from "/@/hooks/setting/useMenuSetting";
|
||||||
|
import {useAppInject} from "/@/hooks/web/useAppInject";
|
||||||
|
|
||||||
|
const router = useRouter();
|
||||||
|
const { currentRoute } = router;
|
||||||
const { t } = useI18n();
|
const { t } = useI18n();
|
||||||
|
const appStore = useAppStore();
|
||||||
|
const userStore = useUserStore();
|
||||||
|
const { userInfo } = storeToRefs(userStore);
|
||||||
|
const { closeAll } = useTabs(router);
|
||||||
|
const permissionStore = usePermissionStore();
|
||||||
|
const { getShowTopMenu } = useMenuSetting();
|
||||||
|
const { getIsMobile } = useAppInject();
|
||||||
|
|
||||||
|
|
||||||
const configColumns: BasicColumn[] = [
|
const configColumns: BasicColumn[] = [
|
||||||
{
|
{
|
||||||
title: t('流水号'),
|
title: t('流水号'),
|
||||||
@ -112,9 +134,6 @@
|
|||||||
setting: false
|
setting: false
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
const router = useRouter();
|
|
||||||
const { currentRoute } = router;
|
|
||||||
|
|
||||||
|
|
||||||
onMounted(() => {
|
onMounted(() => {
|
||||||
bus.on(FLOW_PROCESSED, onFlowProcessed);
|
bus.on(FLOW_PROCESSED, onFlowProcessed);
|
||||||
@ -131,18 +150,76 @@
|
|||||||
{ deep: true }
|
{ deep: true }
|
||||||
);
|
);
|
||||||
const onRowDblClick = (record, index) => {
|
const onRowDblClick = (record, index) => {
|
||||||
const { processId, taskId, schemaId } = record;
|
const {tenantId,tenantCode,tenantName} = record;
|
||||||
|
let tenantEnabled=getAppEnvConfig().VITE_TENANT_ENABLED;
|
||||||
|
if(tenantEnabled =='true'&&tenantId){
|
||||||
|
let currentTenantId=userInfo.value.tenantId;
|
||||||
|
if(tenantId!=currentTenantId){
|
||||||
|
const { createConfirm} = useMessage();
|
||||||
|
createConfirm({
|
||||||
|
iconType: 'warning',
|
||||||
|
title: () => h('span', t('温馨提醒')),
|
||||||
|
content: () => h('div', [
|
||||||
|
h('span', t(`当前流程的发起租户是"${tenantName}",需要切换到该租户才能对该流程进行审批`)),
|
||||||
|
h('br'),
|
||||||
|
h('span', t('是否确认切换租户?未保存的数据可能会丢失!'))
|
||||||
|
]),
|
||||||
|
width:'600px',
|
||||||
|
onOk: async () => {
|
||||||
|
toggleLocale(tenantCode).then(()=>{
|
||||||
|
openDetailPage(record,true);
|
||||||
|
})
|
||||||
|
|
||||||
|
},
|
||||||
|
okText: () => t('确认'),
|
||||||
|
cancelText: () => t('取消'),
|
||||||
|
});
|
||||||
|
|
||||||
|
}else{
|
||||||
|
openDetailPage(record);
|
||||||
|
};
|
||||||
|
}else{
|
||||||
|
openDetailPage(record);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
function openDetailPage(record,isTenantSwitch){
|
||||||
|
const { processId, taskId, schemaId} = record;
|
||||||
router.push({
|
router.push({
|
||||||
path: `/flow/${schemaId}/${processId}/approveFlow`,
|
path: `/flow/${schemaId}/${processId}/approveFlow`,
|
||||||
query: {
|
query: {
|
||||||
taskId
|
taskId
|
||||||
}
|
}
|
||||||
|
}).then(()=> {
|
||||||
|
if (isTenantSwitch) {
|
||||||
|
const {notification} = useMessage();
|
||||||
|
const {tenantName} = record;
|
||||||
|
notification.success({
|
||||||
|
message: 'Tip',
|
||||||
|
description: t('已切换到租户“' + tenantName + '"'),
|
||||||
|
});
|
||||||
|
}
|
||||||
});
|
});
|
||||||
};
|
}
|
||||||
|
|
||||||
function onFlowProcessed() {
|
function onFlowProcessed() {
|
||||||
reload();
|
reload();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
async function toggleLocale(tenantCode: string) {
|
||||||
|
appStore.setPageLoadingAction(true);
|
||||||
|
await changeTenant(tenantCode);
|
||||||
|
await userStore.afterLoginAction(true);
|
||||||
|
closeAll();
|
||||||
|
await setupRouterGuard(router);
|
||||||
|
await permissionStore.changeSubsystem(getShowTopMenu.value, getIsMobile.value);
|
||||||
|
if(permissionStore.getSubSysList.length>0){
|
||||||
|
permissionStore.setSubSystem(permissionStore.getSubSysList[0].id);
|
||||||
|
}else{
|
||||||
|
permissionStore.setSubSystem("");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style scoped></style>
|
<style scoped></style>
|
||||||
|
|||||||
Reference in New Issue
Block a user