【项目权限】切换角色后进入了没有权限的项目
continuous-integration/drone/push Build is passing Details

rj
wangxiaoshuang 2026-06-18 13:55:09 +08:00
parent 97411b7eaf
commit 2fca310327
4 changed files with 68 additions and 74 deletions

View File

@ -56,7 +56,8 @@ export default {
TrialConfig: {}, TrialConfig: {},
TrialStatusStr: null, TrialStatusStr: null,
trialId: null, trialId: null,
IsAdditionalAssessment: false IsAdditionalAssessment: false,
isReload: false
} }
}, },
computed: { computed: {
@ -71,7 +72,11 @@ export default {
if (~url.indexOf('?')) { if (~url.indexOf('?')) {
query = url.split('?')[1] query = url.split('?')[1]
} }
zzSessionStorage.setItem('lastWorkbench', `${v.path}${query ? '?' : ''}${query}`) if (!this.isReload) {
zzSessionStorage.setItem('lastWorkbench', `${v.path}${query ? '?' : ''}${query}`)
} else {
this.isReload = false
}
var firstGoIn = this.trialsRouter.children.find(v => { return v.name === 'TrialsPanel' }).children[0] var firstGoIn = this.trialsRouter.children.find(v => { return v.name === 'TrialsPanel' }).children[0]
if (this.trialsTab === '/trials/trials-panel') { if (this.trialsTab === '/trials/trials-panel') {
var targetPath = firstGoIn.path var targetPath = firstGoIn.path
@ -96,6 +101,9 @@ export default {
} }
}, },
mounted() { mounted() {
this.$EventBus.$on("reload", () => {
this.isReload = true
})
var query = `` var query = ``
var url = window.location.href var url = window.location.href
if (~url.indexOf('?')) { if (~url.indexOf('?')) {

View File

@ -2,11 +2,7 @@
<div class="navbar navbar-flex-wrapper"> <div class="navbar navbar-flex-wrapper">
<div class="leftMenu"> <div class="leftMenu">
<div class="navbar-flex-wrapper"> <div class="navbar-flex-wrapper">
<hamburger <hamburger :is-active="sidebar.opened" class="hamburger-container" @toggleClick="toggleSideBar" />
:is-active="sidebar.opened"
class="hamburger-container"
@toggleClick="toggleSideBar"
/>
<breadcrumb class="breadcrumb-container" /> <breadcrumb class="breadcrumb-container" />
</div> </div>
@ -51,12 +47,8 @@
<TopLang></TopLang> <TopLang></TopLang>
</div> </div>
</div> </div>
<toggleRole <toggleRole v-if="toggleRoleVisible" :visible.sync="toggleRoleVisible" :loading="toggleRoleLoading"
v-if="toggleRoleVisible" @save="loginByRole" />
:visible.sync="toggleRoleVisible"
:loading="toggleRoleLoading"
@save="loginByRole"
/>
</div> </div>
</template> </template>
@ -192,12 +184,14 @@ export default {
flex-direction: row; flex-direction: row;
justify-content: space-between; justify-content: space-between;
} }
.navbar { .navbar {
height: 50px; height: 50px;
overflow: hidden; overflow: hidden;
// position: relative; // position: relative;
background: #fff; background: #fff;
box-shadow: 0 1px 4px rgba(0, 21, 41, 0.08); box-shadow: 0 1px 4px rgba(0, 21, 41, 0.08);
.hamburger-container { .hamburger-container {
line-height: 46px; line-height: 46px;
height: 100%; height: 100%;
@ -219,6 +213,7 @@ export default {
// float: right; // float: right;
height: 100%; height: 100%;
line-height: 65px; line-height: 65px;
// position: relative; // position: relative;
&:focus { &:focus {
outline: none; outline: none;
@ -245,6 +240,7 @@ export default {
.avatar-container { .avatar-container {
display: inline-block; display: inline-block;
margin-right: 200px; margin-right: 200px;
.user-avatar { .user-avatar {
margin-top: 5px; margin-top: 5px;
width: 40px; width: 40px;
@ -252,16 +248,19 @@ export default {
border-radius: 10px; border-radius: 10px;
} }
} }
.dropdown-container { .dropdown-container {
// margin-left: 30px; // margin-left: 30px;
// position: absolute; // position: absolute;
// right: 20px; // right: 20px;
// top: 0px; // top: 0px;
cursor: pointer; cursor: pointer;
.el-icon-caret-bottom { .el-icon-caret-bottom {
font-size: 12px; font-size: 12px;
} }
} }
.el-dropdown-link { .el-dropdown-link {
color: #999c9e; color: #999c9e;
cursor: pointer; cursor: pointer;

View File

@ -1,13 +1,8 @@
<template> <template>
<div class="trials-navbar" style="position: relative"> <div class="trials-navbar" style="position: relative">
<div class="leftMenu"> <div class="leftMenu">
<img <img v-if="NODE_ENV === 'usa'" src="@/assets/title-logo.png" alt="" class="title-logo" />
v-if="NODE_ENV === 'usa'" <img v-else src="@/assets/system.png" alt="" style="width: 150px;height: 50px;margin-bottom: -7px;" />
src="@/assets/title-logo.png"
alt=""
class="title-logo"
/>
<img v-else src="@/assets/system.png" alt="" style="width: 150px;height: 50px;margin-bottom: -7px;"/>
<span style="white-space: nowrap" v-if="NODE_ENV !== 'usa'"> <span style="white-space: nowrap" v-if="NODE_ENV !== 'usa'">
<!-- 中心影像系统EICS --> <!-- 中心影像系统EICS -->
{{ $t('trials:trials:title:eics') }} {{ $t('trials:trials:title:eics') }}
@ -17,53 +12,38 @@
<NoticeMarquee /> <NoticeMarquee />
</div> </div>
<div class="right-menu"> <div class="right-menu">
<el-menu <el-menu :default-active="activeIndex" class="el-menu-demo" mode="horizontal" size="mini" @select="handleSelect">
:default-active="activeIndex" <el-menu-item v-if="
class="el-menu-demo" !hasPermi([
mode="horizontal" 'role:air',
size="mini" 'role:rpm',
@select="handleSelect" 'role:radmin',
> 'role:rcrc',
<el-menu-item 'role:rir',
v-if=" ])
!hasPermi([ " index="1">
'role:air',
'role:rpm',
'role:radmin',
'role:rcrc',
'role:rir',
])
"
index="1"
>
<i class="el-icon-odometer" /> <i class="el-icon-odometer" />
<!-- 工作台 --> <!-- 工作台 -->
<span slot="title">{{ $t('trials:menuTitle:workbench') }}</span> <span slot="title">{{ $t('trials:menuTitle:workbench') }}</span>
</el-menu-item> </el-menu-item>
<el-menu-item <el-menu-item v-if="!hasPermi(['role:zys', 'role:zyss', 'role:zybs'])" index="2"
v-if="!hasPermi(['role:zys', 'role:zyss', 'role:zybs'])" :disabled="TotalNeedSignSystemDocCount !== 0">
index="2"
:disabled="TotalNeedSignSystemDocCount !== 0"
>
<i class="el-icon-box" /> <i class="el-icon-box" />
<!-- 我的项目 --> <!-- 我的项目 -->
<span slot="title"> <span slot="title">
{{ $t('trials:tab:trials') }} {{ $t('trials:tab:trials') }}
</span> </span>
</el-menu-item> </el-menu-item>
<el-menu-item <el-menu-item v-if="
v-if=" !hasPermi([
!hasPermi([ 'role:air',
'role:air', 'role:rpm',
'role:rpm', 'role:radmin',
'role:radmin', 'role:rcrc',
'role:rcrc', 'role:rir',
'role:rir', 'role:zys',
'role:zys', ])
]) " index="3">
"
index="3"
>
<i class="el-icon-chat-dot-square" /> <i class="el-icon-chat-dot-square" />
<!-- 通知消息 --> <!-- 通知消息 -->
<span slot="title">{{ $t('trials:tab:notice') }}</span> <span slot="title">{{ $t('trials:tab:notice') }}</span>
@ -81,11 +61,8 @@
$t('trials:trials-myinfo:title:accountInfo') $t('trials:trials-myinfo:title:accountInfo')
}}</el-menu-item> }}</el-menu-item>
<!-- 管理后台 --> <!-- 管理后台 -->
<el-menu-item <el-menu-item v-if="hasPermi(['role:dev', 'role:oa', 'role:admin'])" index="4-4">{{
v-if="hasPermi(['role:dev', 'role:oa', 'role:admin'])" $t('trials:trials-myinfo:title:system') }}</el-menu-item>
index="4-4"
>{{ $t('trials:trials-myinfo:title:system') }}</el-menu-item
>
<!-- 切换角色 --> <!-- 切换角色 -->
<el-menu-item index="4-5" v-if="hasRole">{{ <el-menu-item index="4-5" v-if="hasRole">{{
$t('trials:trials-myinfo:title:toggleRole') $t('trials:trials-myinfo:title:toggleRole')
@ -96,18 +73,12 @@
}}</el-menu-item> }}</el-menu-item>
</el-submenu> </el-submenu>
</el-menu> </el-menu>
<TopLang <TopLang v-if="
v-if=" VUE_APP_OSS_CONFIG_REGION !== 'oss-us-west-1' && NODE_ENV !== 'usa'
VUE_APP_OSS_CONFIG_REGION !== 'oss-us-west-1' && NODE_ENV !== 'usa' " />
"
/>
</div> </div>
<toggleRole <toggleRole v-if="toggleRoleVisible" :visible.sync="toggleRoleVisible" :loading="toggleRoleLoading"
v-if="toggleRoleVisible" @save="loginByRole" />
:visible.sync="toggleRoleVisible"
:loading="toggleRoleLoading"
@save="loginByRole"
/>
</div> </div>
</template> </template>
@ -313,37 +284,45 @@ export default {
overflow: hidden; overflow: hidden;
background: #fff; background: #fff;
box-shadow: 0 1px 4px rgba(0, 21, 41, 0.08); box-shadow: 0 1px 4px rgba(0, 21, 41, 0.08);
.el-breadcrumb__item { .el-breadcrumb__item {
font-size: 16px; font-size: 16px;
} }
.leftMenu { .leftMenu {
display: flex; display: flex;
align-items: flex-end; align-items: flex-end;
padding-left: 20px; padding-left: 20px;
padding-bottom: 20px; padding-bottom: 20px;
img { img {
height: 28px; height: 28px;
margin-right: 10px; margin-right: 10px;
} }
.title-logo { .title-logo {
height: 36px; height: 36px;
} }
span { span {
font-size: 20px; font-size: 20px;
position: relative; position: relative;
bottom: -3px; bottom: -3px;
} }
} }
.right-menu, .right-menu,
.center-menu { .center-menu {
display: flex; display: flex;
flex-direction: row; flex-direction: row;
justify-content: space-between; justify-content: space-between;
height: 100%; height: 100%;
// line-height: 70px; // line-height: 70px;
&:focus { &:focus {
outline: none; outline: none;
} }
.right-menu-item { .right-menu-item {
display: inline-block; display: inline-block;
padding: 0 8px; padding: 0 8px;
@ -361,9 +340,11 @@ export default {
} }
} }
} }
.avatar-container { .avatar-container {
display: inline-block; display: inline-block;
margin-right: 200px; margin-right: 200px;
.user-avatar { .user-avatar {
margin-top: 5px; margin-top: 5px;
width: 40px; width: 40px;
@ -371,29 +352,34 @@ export default {
border-radius: 10px; border-radius: 10px;
} }
} }
.dropdown-container { .dropdown-container {
cursor: pointer; cursor: pointer;
.el-icon-caret-bottom { .el-icon-caret-bottom {
font-size: 12px; font-size: 12px;
} }
} }
.el-dropdown-link { .el-dropdown-link {
color: #999c9e; color: #999c9e;
cursor: pointer; cursor: pointer;
} }
} }
.right-menu { .right-menu {
.el-menu-item.is-active { .el-menu-item.is-active {
font-weight: bolder; font-weight: bolder;
} }
} }
.center-menu { .center-menu {
width: calc(100% - 1200px); width: calc(100% - 1200px);
} }
} }
</style> </style>
<style> <style>
.el-menu--horizontal > .my_info.el-submenu .el-submenu__icon-arrow { .el-menu--horizontal>.my_info.el-submenu .el-submenu__icon-arrow {
margin-top: 0; margin-top: 0;
} }
</style> </style>

View File

@ -667,6 +667,7 @@ export default {
} }
this.hoursTip = hoursTip this.hoursTip = hoursTip
this.$EventBus.$on("reload", (data) => { this.$EventBus.$on("reload", (data) => {
zzSessionStorage.removeItem('lastWorkbench')
window.location.reload() window.location.reload()
}); });
}, },