项目内切换角色
continuous-integration/drone/push Build is passing Details

uat_us
wangxiaoshuang 2024-12-24 16:21:23 +08:00
parent 177510643d
commit a95a129dde
14 changed files with 331 additions and 130 deletions

View File

@ -5,3 +5,6 @@ npm install
# 启动服务 # 启动服务
npm run dev npm run dev
# v1.9.0修改
1. 角色修改全局userId实际意义修改为userRoleId用户角色id新增identityUserId新的用户id

View File

@ -30,7 +30,6 @@
</script> </script>
<% } else { %> <% } else { %>
<script> <script>
console.log(2)
window.zzSessionStorage = { window.zzSessionStorage = {
setItem: (item, value) => { setItem: (item, value) => {
return sessionStorage.setItem(item, value) return sessionStorage.setItem(item, value)

View File

@ -47,7 +47,7 @@ export function updateUser(param) {
export function getUser(userId) { export function getUser(userId) {
return request({ return request({
url: `/user/getUser/${userId}`, url: `/user/getUser`,
method: 'get' method: 'get'
}) })
} }

View File

@ -5,14 +5,15 @@
v-dialogDrag v-dialogDrag
width="540px" width="540px"
:close-on-click-modal="false" :close-on-click-modal="false"
:close-on-press-escape="false"
append-to-body append-to-body
:title="$t('toggleRole:tip:title')" :title="$t('toggleRole:tip:title')"
center center
top="30vh" top="30vh"
:show-close="false" :show-close="false"
@close="cancel" :before-close="cancel"
> >
<el-radio-group v-model="form.UserTypeId" class="roles" v-if="hasRole"> <el-radio-group v-model="form.userRoleId" class="roles" v-if="hasRole">
<el-radio <el-radio
v-for="item in roles" v-for="item in roles"
:key="item.Id" :key="item.Id"
@ -23,10 +24,22 @@
{{ item.UserTypeShortName }} {{ item.UserTypeShortName }}
</el-radio> </el-radio>
</el-radio-group> </el-radio-group>
<div v-else>{{ $t('toggleRole:tip:noRole') }}</div> <div v-else style="text-align: center">
{{ $t('toggleRole:tip:noRole') }}
</div>
<div slot="footer"> <div slot="footer">
<!-- 取消 -->
<el-button size="small" @click="cancel()">
{{ $t('common:button:cancel') }}
</el-button>
<!-- 保存 --> <!-- 保存 -->
<el-button type="primary" size="small" @click="save" :loading="loading"> <el-button
type="primary"
size="small"
@click="save"
:loading="loading"
v-if="hasRole"
>
{{ $t('common:button:confirm') }} {{ $t('common:button:confirm') }}
</el-button> </el-button>
</div> </div>
@ -48,10 +61,13 @@ export default {
data() { data() {
return { return {
form: { form: {
UserTypeId: null, userRoleId: null,
}, },
} }
}, },
created() {
this.form.userRoleId = zzSessionStorage.getItem('userId')
},
computed: { computed: {
roles() { roles() {
return this.$store.state.user.roles return this.$store.state.user.roles
@ -63,12 +79,13 @@ export default {
methods: { methods: {
cancel() { cancel() {
this.$emit('update:visible', false) this.$emit('update:visible', false)
this.$emit('cancel')
}, },
async save() { async save() {
try { try {
if (!this.form.UserTypeId) if (!this.form.userRoleId)
return this.$message.warning(this.$t('toggleRole:ruleMessage:select')) return this.$message.warning(this.$t('toggleRole:ruleMessage:select'))
this.$emit('save', this.form.UserTypeId) this.$emit('save', this.form.userRoleId)
} catch (err) { } catch (err) {
console.log(err) console.log(err)
} }

View File

@ -1,6 +1,5 @@
import { SubjectCheckConfig } from './module/Subject' import { SubjectCheckConfig } from './module/Subject'
console.log(SubjectCheckConfig.moduleType)
export const checkConfig = { export const checkConfig = {
ModuleType: { ModuleType: {
...SubjectCheckConfig.ModuleType ...SubjectCheckConfig.ModuleType

View File

@ -78,6 +78,7 @@ router.beforeEach(async (to, from, next) => {
try { try {
// 获取用户信息 // 获取用户信息
await store.dispatch('user/getInfo') await store.dispatch('user/getInfo')
await store.dispatch('user/getUserInfo')
const accessRoutes = await store.dispatch('permission/generateRoutes') const accessRoutes = await store.dispatch('permission/generateRoutes')
router.addRoutes(accessRoutes) router.addRoutes(accessRoutes)
next({ ...to, replace: true }) next({ ...to, replace: true })

View File

@ -7,7 +7,7 @@ const getters = {
tree: state => state.user.tree, tree: state => state.user.tree,
userName: state => state.user.userName, userName: state => state.user.userName,
userId: state => state.user.userId, userId: state => state.user.userId,
userRoleId: state => state.user.userRoleId, identityUserId: state => state.user.identityUserId,
routes: state => state.permission.routes, routes: state => state.permission.routes,
asyncRoutes: state => state.permission.addRoutes, asyncRoutes: state => state.permission.addRoutes,
visitedViews: state => state.tagsView.visitedViews, visitedViews: state => state.tagsView.visitedViews,

View File

@ -118,7 +118,6 @@ const actions = {
return new Promise(resolve => { return new Promise(resolve => {
var newTree = JSON.parse(zzSessionStorage.getItem('newTree')) var newTree = JSON.parse(zzSessionStorage.getItem('newTree'))
const sidebarRoutes = filterAsyncRouter(newTree || []) const sidebarRoutes = filterAsyncRouter(newTree || [])
console.log(sidebarRoutes, 'sidebarRoutes')
commit('SET_ROUTES', sidebarRoutes) commit('SET_ROUTES', sidebarRoutes)
resolve(sidebarRoutes) resolve(sidebarRoutes)
}) })

View File

@ -1,5 +1,6 @@
import { getToken, setToken, removeToken, setName, removeName } from '@/utils/auth' import { getToken, setToken, removeToken, setName, removeName } from '@/utils/auth'
import { login, loginOut, getUserMenuTree, getUserPermissions, getUserLoginRoleList, loginSelectUserRole } from '@/api/user' import { login, loginOut, getUserMenuTree, getUserPermissions, getUserLoginRoleList, loginSelectUserRole } from '@/api/user'
import { getUser } from '@/api/admin'
import { resetRouter } from '@/router' import { resetRouter } from '@/router'
import md5 from 'js-md5' import md5 from 'js-md5'
@ -9,7 +10,7 @@ const getDefaultState = () => {
name: '', name: '',
userName: '', userName: '',
userId: '', userId: '',
userRoleId: '', identityUserId: '',
avatar: '', avatar: '',
permissions: [], permissions: [],
tree: [], tree: [],
@ -54,8 +55,8 @@ const mutations = {
SET_USERID: (state, id) => { SET_USERID: (state, id) => {
state.userId = id state.userId = id
}, },
SET_USEROLEID: (state, id) => { SET_IDENTITYUSERID: (state, id) => {
state.userRoleId = id state.identityUserId = id
}, },
SET_ISTESTUSER: (state, isTestUser) => { SET_ISTESTUSER: (state, isTestUser) => {
state.isTestUser = eval(isTestUser) state.isTestUser = eval(isTestUser)
@ -126,18 +127,18 @@ const actions = {
zzSessionStorage.setItem('IsReviewer', data.BasicInfo.IsReviewer) zzSessionStorage.setItem('IsReviewer', data.BasicInfo.IsReviewer)
zzSessionStorage.setItem('userName', data.BasicInfo.UserName) zzSessionStorage.setItem('userName', data.BasicInfo.UserName)
commit('SET_TOKEN', data.JWTStr) commit('SET_TOKEN', data.JWTStr)
commit('SET_NAME', data.BasicInfo.RealName) // commit('SET_NAME', data.BasicInfo.UserName)
zzSessionStorage.setItem('realName', data.BasicInfo.RealName)
zzSessionStorage.setItem('isTestUser', data.BasicInfo.IsTestUser) zzSessionStorage.setItem('isTestUser', data.BasicInfo.IsTestUser)
commit('SET_ISTESTUSER', data.BasicInfo.IsTestUser) commit('SET_ISTESTUSER', data.BasicInfo.IsTestUser)
commit('SET_USERNAME', data.BasicInfo.UserName) commit('SET_USERNAME', data.BasicInfo.UserName)
commit('SET_USERID', data.BasicInfo.IdentityUserId) commit('SET_USERID', data.BasicInfo.IdentityUserId)
setToken(data.JWTStr) setToken(data.JWTStr)
setName(data.BasicInfo.RealName) // setName(data.BasicInfo.RealName)
const userString = decodeURIComponent(escape(window.atob(data.JWTStr.split('.')[1].replace(/-/g, '+').replace(/_/g, '/')))) const userString = decodeURIComponent(escape(window.atob(data.JWTStr.split('.')[1].replace(/-/g, '+').replace(/_/g, '/'))))
const user = JSON.parse(userString) const user = JSON.parse(userString)
zzSessionStorage.setItem('userTypeShortName', user.userTypeShortName) // zzSessionStorage.setItem('userId', user.identityUserId)
zzSessionStorage.setItem('userId', user.identityUserId) commit('SET_IDENTITYUSERID', user.identityUserId)
zzSessionStorage.setItem('identityUserId', user.identityUserId)
zzSessionStorage.setItem('userTypeEnumInt', user.userTypeEnumInt) zzSessionStorage.setItem('userTypeEnumInt', user.userTypeEnumInt)
// var permissions = await getUserPermissions() // var permissions = await getUserPermissions()
// var menuTree = await getUserMenuTree() // var menuTree = await getUserMenuTree()
@ -170,10 +171,13 @@ const actions = {
const data = response.Result const data = response.Result
try { try {
commit('SET_USEROLEID', userRoleId)
zzSessionStorage.setItem('userRoleId', userRoleId)
commit('SET_TOKEN', data) commit('SET_TOKEN', data)
setToken(data) setToken(data)
const userString = decodeURIComponent(escape(window.atob(data.split('.')[1].replace(/-/g, '+').replace(/_/g, '/'))))
const user = JSON.parse(userString)
zzSessionStorage.setItem('userTypeShortName', user.userTypeShortName)
commit('SET_NAME', user.fullName)
setName(user.fullName)
var permissions = await getUserPermissions() var permissions = await getUserPermissions()
var menuTree = await getUserMenuTree() var menuTree = await getUserMenuTree()
commit('SET_TREE', menuTree.Result) commit('SET_TREE', menuTree.Result)
@ -217,23 +221,34 @@ const actions = {
commit('SET_PERMISSIONS', JSON.parse(zzSessionStorage.getItem('permissions'))) commit('SET_PERMISSIONS', JSON.parse(zzSessionStorage.getItem('permissions')))
commit('SET_ISTESTUSER', zzSessionStorage.getItem('isTestUser')) commit('SET_ISTESTUSER', zzSessionStorage.getItem('isTestUser'))
const user = JSON.parse(userString) const user = JSON.parse(userString)
commit('SET_NAME', zzSessionStorage.getItem('realName')) commit('SET_NAME', zzSessionStorage.getItem('Name'))
commit('SET_USEROLEID', user.userRoleId) commit('SET_IDENTITYUSERID', user.identityUserId)
commit('SET_USERID', user.identityUserId) commit('SET_USERID', user.userRoleId)
commit('SET_USERNAME', zzSessionStorage.getItem('userName')) commit('SET_USERNAME', zzSessionStorage.getItem('userName'))
commit('SET_NEED_SIGN_SYSTEM_DOC_COUNT', parseInt(zzSessionStorage.getItem('TotalNeedSignSystemDocCount'))) commit('SET_NEED_SIGN_SYSTEM_DOC_COUNT', parseInt(zzSessionStorage.getItem('TotalNeedSignSystemDocCount')))
commit('SET_NEED_SIGN_TRIALS_DOC_COUNT', parseInt(zzSessionStorage.getItem('TotalNeedSignTrialDocCount'))) commit('SET_NEED_SIGN_TRIALS_DOC_COUNT', parseInt(zzSessionStorage.getItem('TotalNeedSignTrialDocCount')))
console.log(zzSessionStorage.getItem('TotalNeedSignSystemDocCount')) // console.log(zzSessionStorage.getItem('TotalNeedSignSystemDocCount'))
console.log(zzSessionStorage.getItem('TotalNeedSignTrialDocCount')) // console.log(zzSessionStorage.getItem('TotalNeedSignTrialDocCount'))
zzSessionStorage.setItem('userName', user.name) zzSessionStorage.setItem('userName', user.name)
zzSessionStorage.setItem('userId', user.identityUserId) zzSessionStorage.setItem('userId', user.userRoleId)
zzSessionStorage.setItem('userRoleId', user.userRoleId) zzSessionStorage.setItem('identityUserId', user.identityUserId)
zzSessionStorage.setItem('userTypeShortName', user.userTypeShortName) zzSessionStorage.setItem('userTypeShortName', user.userTypeShortName)
zzSessionStorage.setItem('userTypeEnumInt', user.userTypeEnumInt) zzSessionStorage.setItem('userTypeEnumInt', user.userTypeEnumInt)
return user return user
}, },
updateInfo({ commit, state }) { updateInfo({ commit, state }) {
commit('SET_NAME', zzSessionStorage.getItem('realName')) commit('SET_NAME', zzSessionStorage.getItem('Name'))
},
// 获取用户信息
getUserInfo({ commit, state }) {
return new Promise((resolve, reject) => {
getUser().then(res => {
commit('SET_ROLES', res.Result.AccountList)
resolve(res.Result)
}).catch(err => {
reject(err)
})
})
}, },
// user logout // user logout
async logout({ commit, state }) { async logout({ commit, state }) {

View File

@ -244,9 +244,10 @@
</el-dialog> </el-dialog>
<browserTip ref="browserTip" /> <browserTip ref="browserTip" />
<toggleRole <toggleRole
:visible="toggleRoleVisible" :visible.sync="toggleRoleVisible"
:loading="toggleRoleLoading" :loading="toggleRoleLoading"
@save="loginByRole" @save="loginByRole"
@cancel="cancel"
/> />
</div> </div>
</template> </template>
@ -424,6 +425,13 @@ export default {
// this.$alert(this.$t('login:message:login4'), this.$t('common:title:warning')) // this.$alert(this.$t('login:message:login4'), this.$t('common:title:warning'))
this.$message.warning(this.$t('login:message:login4')) this.$message.warning(this.$t('login:message:login4'))
} }
if (
Array.isArray(this.$store.state.user.roles) &&
this.$store.state.user.roles.length === 1
) {
this.loginByRole(this.$store.state.user.roles[0].Id)
return
}
return (this.toggleRoleVisible = true) return (this.toggleRoleVisible = true)
}) })
.catch(() => { .catch(() => {
@ -438,36 +446,44 @@ export default {
.then((res) => { .then((res) => {
this.toggleRoleLoading = false this.toggleRoleLoading = false
if (res) { if (res) {
this.$store.dispatch('permission/generateRoutes').then((res) => { this.$store
this.loading = false .dispatch('permission/generateRoutes')
if (res && res.length > 0) { .then((res) => {
this.$store.dispatch('global/getNoticeList') this.loading = false
this.$router.addRoutes(res) if (res && res.length > 0) {
if (this.loginType === 'DevOps') { this.$store.dispatch('global/getNoticeList')
this.$router.replace({ path: res[0].path }) this.$router.addRoutes(res)
return if (this.loginType === 'DevOps') {
} this.$router.replace({ path: res[0].path })
if (this.hasPermi(['role:radmin'])) { return
this.$router.replace({ path: res[0].path }) }
return if (this.hasPermi(['role:radmin'])) {
} this.$router.replace({ path: res[0].path })
if ( return
this.hasPermi([ }
'role:air', if (
'role:rpm', this.hasPermi([
'role:rcrc', 'role:air',
'role:rir', 'role:rpm',
]) 'role:rcrc',
) { 'role:rir',
this.$router.replace({ path: '/trials/trials-list' }) ])
) {
this.$router.replace({ path: '/trials/trials-list' })
} else {
this.$router.replace({ path: '/trials' })
}
} else { } else {
this.$router.replace({ path: '/trials' }) this.toggleRoleLoading = false
//
this.$message.warning(this.$t('login:message:login2'))
} }
} else { })
// .catch((err) => {
this.$message.warning(this.$t('login:message:login2')) this.toggleRoleLoading = false
} })
}) } else {
this.toggleRoleLoading = false
} }
}) })
.catch(() => { .catch(() => {
@ -476,6 +492,12 @@ export default {
this.toggleRoleLoading = false this.toggleRoleLoading = false
}) })
}, },
cancel() {
this.showCode = true
this.loading = false
this.toggleRoleLoading = false
// this.toggleRoleVisible = false
},
onSuccess() { onSuccess() {
this.isShow = false this.isShow = false
this.loginIn() this.loginIn()

View File

@ -44,7 +44,6 @@ export default {
this.$i18n.locale = lang this.$i18n.locale = lang
this.setLanguage(lang) this.setLanguage(lang)
this.$updateDictionary() this.$updateDictionary()
console.log(Vue)
this.$upload() this.$upload()
window.location.reload() window.location.reload()
} }

View File

@ -11,7 +11,7 @@
<img v-else src="@/assets/zzlogo4.png" alt="" /> <img v-else src="@/assets/zzlogo4.png" alt="" />
<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') }}
</span> </span>
</div> </div>
<div class="center-menu"> <div class="center-menu">
@ -39,13 +39,17 @@
> >
<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 v-if="!hasPermi(['role:zys','role:zyss','role:zybs'])" index="2" :disabled="TotalNeedSignSystemDocCount !== 0"> <el-menu-item
v-if="!hasPermi(['role:zys', 'role:zyss', 'role:zybs'])"
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
@ -63,7 +67,7 @@
> >
<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>
</el-menu-item> </el-menu-item>
<el-submenu index="4" class="my_info"> <el-submenu index="4" class="my_info">
@ -75,128 +79,214 @@
</span> </span>
<!-- 账户信息 --> <!-- 账户信息 -->
<el-menu-item v-if="!hasPermi(['role:air'])" index="4-2">{{ <el-menu-item v-if="!hasPermi(['role:air'])" index="4-2">{{
$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'])" v-if="hasPermi(['role:dev', 'role:oa', 'role:admin'])"
index="4-4" index="4-4"
>{{ $t("trials:trials-myinfo:title:system") }}</el-menu-item >{{ $t('trials:trials-myinfo:title:system') }}</el-menu-item
> >
<!-- 切换角色 -->
<el-menu-item index="4-5" v-if="hasRole">{{
$t('trials:trials-myinfo:title:toggleRole')
}}</el-menu-item>
<!-- 退出 --> <!-- 退出 -->
<el-menu-item index="4-3">{{ <el-menu-item index="4-3">{{
$t("trials:trials-myinfo:button:loginout") $t('trials:trials-myinfo:button:loginout')
}}</el-menu-item> }}</el-menu-item>
</el-submenu> </el-submenu>
</el-menu> </el-menu>
<TopLang v-if="VUE_APP_OSS_CONFIG_REGION !== 'oss-us-west-1'&& NODE_ENV !== 'usa'" /> <TopLang
v-if="
VUE_APP_OSS_CONFIG_REGION !== 'oss-us-west-1' && NODE_ENV !== 'usa'
"
/>
</div> </div>
<toggleRole
:visible.sync="toggleRoleVisible"
:loading="toggleRoleLoading"
@save="loginByRole"
/>
</div> </div>
</template> </template>
<script> <script>
import { mapGetters, mapMutations } from "vuex"; import { mapGetters, mapMutations } from 'vuex'
import TopLang from "./topLang"; import TopLang from './topLang'
import NoticeMarquee from "./noticeMarquee"; import NoticeMarquee from './noticeMarquee'
import toggleRole from '@/components/toggleRole'
export default { export default {
components: { TopLang, NoticeMarquee }, components: { TopLang, NoticeMarquee, toggleRole },
data() { data() {
return { return {
activeIndex: "2", activeIndex: '2',
isReviewer: false, isReviewer: false,
userTypeShortName: zzSessionStorage.getItem("userTypeShortName"), userTypeShortName: zzSessionStorage.getItem('userTypeShortName'),
notice: "", notice: '',
VUE_APP_OSS_CONFIG_REGION: process.env.VUE_APP_OSS_CONFIG_REGION, VUE_APP_OSS_CONFIG_REGION: process.env.VUE_APP_OSS_CONFIG_REGION,
NODE_ENV: process.env.NODE_ENV, NODE_ENV: process.env.NODE_ENV,
}; toggleRoleVisible: false,
toggleRoleLoading: false,
}
}, },
computed: { computed: {
...mapGetters([ ...mapGetters([
"sidebar", 'sidebar',
"name", 'name',
"userName", 'userName',
"device", 'device',
"TotalNeedSignSystemDocCount", 'TotalNeedSignSystemDocCount',
"language", 'language',
]), ]),
roles() {
return this.$store.state.user.roles
},
hasRole() {
return this.roles && this.roles.length > 1
},
}, },
watch: { watch: {
$route(v) { $route(v) {
this.changeRoute(v); this.changeRoute(v)
}, },
}, },
created() { created() {
console.log(!this.hasPermi(["role:air"])); // this.isReviewer = JSON.parse(zzSessionStorage.getItem('IsReviewer'))
this.isReviewer = JSON.parse(zzSessionStorage.getItem("IsReviewer")); console.log(this.$route.path, 'this.$route.path')
this.changeRoute(this.$route); this.changeRoute(this.$route)
}, },
methods: { methods: {
...mapMutations({ setLanguage: "lang/setLanguage" }), ...mapMutations({ setLanguage: 'lang/setLanguage' }),
changeRoute(v) { changeRoute(v) {
if (v.path === "/trials/trials-workbench") { if (v.path === '/trials/trials-workbench') {
this.activeIndex = "1"; this.activeIndex = '1'
} }
if ( if (
v.path === "/trials/trials-list" || v.path === '/trials/trials-list' ||
~v.path.indexOf("/trials/trials-panel") ~v.path.indexOf('/trials/trials-panel')
) { ) {
this.activeIndex = "2"; this.activeIndex = '2'
} }
if (v.path === "/trials/trials-notice") { if (v.path === '/trials/trials-notice') {
this.activeIndex = "3"; this.activeIndex = '3'
} }
if (v.path === "/trials/trials-myinfo") { if (v.path === '/trials/trials-myinfo') {
this.activeIndex = "4-2"; this.activeIndex = '4-2'
} }
}, },
handleSelect(key, keyPath) { handleSelect(key, keyPath) {
switch (key) { switch (key) {
case "4-2": case '4-2':
this.go("/trials/trials-myinfo"); this.go('/trials/trials-myinfo')
break; break
case "4-3": case '4-3':
this.logout(); this.logout()
break; break
case "4-4": case '4-4':
this.go("/dashboard/list"); this.go('/dashboard/list')
break; break
case "1": case '4-5':
this.go("/trials/trials-workbench"); // this.go('/dashboard/list')
break; // console.log('')
case "2": this.$store.dispatch('user/getUserInfo').then((res) => {
if (~this.$route.path.indexOf("/trials/trials-panel")) { this.toggleRoleVisible = true
return; })
break
case '1':
this.go('/trials/trials-workbench')
break
case '2':
if (~this.$route.path.indexOf('/trials/trials-panel')) {
return
} }
var lastWorkbench = zzSessionStorage.getItem("lastWorkbench"); var lastWorkbench = zzSessionStorage.getItem('lastWorkbench')
if (lastWorkbench) { if (lastWorkbench) {
this.go(lastWorkbench); this.go(lastWorkbench)
} else { } else {
this.go("/trials/trials-list"); this.go('/trials/trials-list')
} }
break; break
case "3": case '3':
this.go("/trials/trials-notice"); this.go('/trials/trials-notice')
break; break
} }
}, },
toggleSideBar() { toggleSideBar() {
this.$store.dispatch("app/toggleSideBar"); this.$store.dispatch('app/toggleSideBar')
}, },
async logout() { async logout() {
await this.$store.dispatch("user/logout"); await this.$store.dispatch('user/logout')
this.$router.push(`/login`); this.$router.push(`/login`)
this.$i18n.locale = "zh"; this.$i18n.locale = 'zh'
this.setLanguage("zh"); this.setLanguage('zh')
this.$updateDictionary(); this.$updateDictionary()
}, },
go(value) { go(value) {
this.$router.push({ path: value }); this.$router.push({ path: value })
}, },
account() { account() {
this.$router.push({ name: "Account" }); this.$router.push({ name: 'Account' })
},
loginByRole(userRoleId) {
if (this.$store.state.user.userId === userRoleId) {
this.toggleRoleVisible = false
this.toggleRoleLoading = false
return false
}
this.toggleRoleLoading = true
this.$store
.dispatch('user/loginByRole', { userRoleId })
.then((res) => {
if (res) {
this.$store
.dispatch('permission/generateRoutes')
.then((res) => {
if (res && res.length > 0) {
this.$store.dispatch('global/getNoticeList')
this.$router.addRoutes(res)
this.toggleRoleLoading = false
if (this.loginType === 'DevOps') {
this.$router.replace({ path: res[0].path })
return
}
if (this.hasPermi(['role:radmin'])) {
this.$router.replace({ path: res[0].path })
return
}
if (
this.hasPermi([
'role:air',
'role:rpm',
'role:rcrc',
'role:rir',
])
) {
this.$router.replace({ path: '/trials/trials-list' })
} else {
this.$router.replace({ path: '/trials' })
}
window.location.reload()
} else {
//
this.toggleRoleLoading = false
this.$message.warning(this.$t('login:message:login2'))
}
})
.catch((err) => {
this.toggleRoleLoading = false
})
} else {
this.toggleRoleLoading = false
}
})
.catch(() => {
this.toggleRoleLoading = false
})
}, },
}, },
}; }
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>

View File

@ -108,6 +108,35 @@
{{ $t('trials:trials-myinfo:button:update') }} {{ $t('trials:trials-myinfo:button:update') }}
</el-button> </el-button>
</el-form-item> </el-form-item>
<el-form-item
:label="$t('trials:trials-myinfo:form:toggleRole')"
style="position: relative"
prop="VerificationCode"
v-if="hasRole"
>
<el-radio-group v-model="userRoleId" class="roles" v-if="hasRole">
<el-radio
v-for="item in roles"
:key="item.Id"
:label="item.Id"
:disabled="item.isUserRoleDisabled"
style="margin-bottom: 10px"
>
{{ item.UserTypeShortName }}
</el-radio>
</el-radio-group>
<!-- 修改 -->
<el-button
:disabled="!userRoleId"
class="saveBtn"
:loading="toggleRoleLoading"
type="primary"
size="small"
@click="toggleRole"
>
{{ $t('trials:trials-myinfo:button:toggleRole') }}
</el-button>
</el-form-item>
</el-form> </el-form>
</div> </div>
<password /> <password />
@ -142,6 +171,8 @@ export default {
data() { data() {
return { return {
userForm: {}, userForm: {},
userRoleId: null,
toggleRoleLoading: false,
sendDisabled: true, sendDisabled: true,
sendTitle: this.$t('trials:trials-myinfo:button:getVCode'), sendTitle: this.$t('trials:trials-myinfo:button:getVCode'),
rule: { rule: {
@ -174,7 +205,35 @@ export default {
}, },
} }
}, },
created() {
this.userRoleId = zzSessionStorage.getItem('userId')
},
computed: {
roles() {
return this.$store.state.user.roles
},
hasRole() {
return this.roles && this.roles.length > 1
},
},
methods: { methods: {
//
toggleRole() {
if (
this.userRoleId === zzSessionStorage.getItem('userId') ||
this.toggleRoleLoading
)
return false
this.toggleRoleLoading = true
this.$store
.dispatch('user/loginByRole', { userRoleId: this.userRoleId })
.then((res) => {
window.location.reload()
})
.catch(() => {
this.toggleRoleLoading = false
})
},
setNewEmail() { setNewEmail() {
setNewEmail(this.userForm.EMail, this.userForm.VerificationCode).then( setNewEmail(this.userForm.EMail, this.userForm.VerificationCode).then(
() => { () => {

View File

@ -471,7 +471,6 @@ export default {
...mapState('user', ['isTestUser']) ...mapState('user', ['isTestUser'])
}, },
mounted() { mounted() {
console.log('isTestUser: ',this.isTestUser)
this.getUserTobeDoneRecord() this.getUserTobeDoneRecord()
this.getNeedSignTrialDocTrialIdList() this.getNeedSignTrialDocTrialIdList()
this.getUserInfo() this.getUserInfo()
@ -507,7 +506,6 @@ export default {
}, },
getNeedSignTrialDocTrialIdList() { getNeedSignTrialDocTrialIdList() {
getNeedSignTrialDocTrialIdList().then(res => { getNeedSignTrialDocTrialIdList().then(res => {
console.log(res)
this.trialIdList = res.Result this.trialIdList = res.Result
this.$nextTick(() => { this.$nextTick(() => {
var list = document.querySelectorAll('div[tab-data]') var list = document.querySelectorAll('div[tab-data]')