用户登录及角色切换
continuous-integration/drone/push Build is passing Details

main
wangxiaoshuang 2025-08-18 13:41:39 +08:00
parent e7e373ca37
commit d0887851c2
8 changed files with 109 additions and 79 deletions

View File

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

View File

@ -128,20 +128,20 @@ export default {
}
// document.cookie = 'TrialId=' + this.$route.query.trialId + ';path=/'
},
trialId(v) {
getUserDocumentList({ TrialId: this.$route.query.trialId }).then(
async (res) => {
var total = res.OtherInfo.NeedSignCount;
var TrialStatusStr = res.OtherInfo.TrialStatusStr;
this.IsAdditionalAssessment = res.OtherInfo.IsAdditionalAssessment;
this.TrialStatusStr = TrialStatusStr;
await store.dispatch("user/setTotalNeedSignTrialDocCount", total);
await store.dispatch("user/setTrialStatusStr", TrialStatusStr);
this.TrialConfig = res.OtherInfo.TrialConfig;
this.IsAllOnlySRReading = res.OtherInfo.IsAllOnlySRReading;
}
);
},
// trialId(v) {
// getUserDocumentList({ TrialId: this.$route.query.trialId }).then(
// async (res) => {
// var total = res.OtherInfo.NeedSignCount;
// var TrialStatusStr = res.OtherInfo.TrialStatusStr;
// this.IsAdditionalAssessment = res.OtherInfo.IsAdditionalAssessment;
// this.TrialStatusStr = TrialStatusStr;
// await store.dispatch("user/setTotalNeedSignTrialDocCount", total);
// await store.dispatch("user/setTrialStatusStr", TrialStatusStr);
// this.TrialConfig = res.OtherInfo.TrialConfig;
// this.IsAllOnlySRReading = res.OtherInfo.IsAllOnlySRReading;
// }
// );
// },
},
mounted() {
// console.log(this.trialsRouter);
@ -150,18 +150,18 @@ export default {
if (~url.indexOf("?")) {
query = url.split("?")[1];
}
getUserDocumentList({ TrialId: this.$route.query.trialId }).then(
async (res) => {
var total = res.OtherInfo.NeedSignCount;
var TrialStatusStr = res.OtherInfo.TrialStatusStr;
this.IsAdditionalAssessment = res.OtherInfo.IsAdditionalAssessment;
this.TrialStatusStr = TrialStatusStr;
await store.dispatch("user/setTotalNeedSignTrialDocCount", total);
await store.dispatch("user/setTrialStatusStr", TrialStatusStr);
this.TrialConfig = res.OtherInfo.TrialConfig;
this.IsAllOnlySRReading = res.OtherInfo.IsAllOnlySRReading;
}
);
// getUserDocumentList({ TrialId: this.$route.query.trialId }).then(
// async (res) => {
// var total = res.OtherInfo.NeedSignCount;
// var TrialStatusStr = res.OtherInfo.TrialStatusStr;
// this.IsAdditionalAssessment = res.OtherInfo.IsAdditionalAssessment;
// this.TrialStatusStr = TrialStatusStr;
// await store.dispatch("user/setTotalNeedSignTrialDocCount", total);
// await store.dispatch("user/setTrialStatusStr", TrialStatusStr);
// this.TrialConfig = res.OtherInfo.TrialConfig;
// this.IsAllOnlySRReading = res.OtherInfo.IsAllOnlySRReading;
// }
// );
this.selectedTab();
this.getTrialList();
var firstGoIn = this.trialsRouter.children.find((v) => {

View File

@ -95,16 +95,15 @@ export default {
this.toggleRoleVisible = true
})
},
loginByRole(row) {
let { UserId, UserTypeId } = row
if (this.$store.state.user.userId === UserId) {
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', { UserId, UserTypeId })
.dispatch('user/loginByRole', { userRoleId })
.then((res) => {
if (res) {
this.$store

View File

@ -1,9 +1,10 @@
import router from './router'
import { resetRouter } from '@/router'
import store from './store'
// import { Message } from 'element-ui'
import NProgress from 'nprogress'
import 'nprogress/nprogress.css'
import { getToken } from '@/utils/auth'
import { getToken, removeToken } from '@/utils/auth'
import Vue from 'vue'
import { OSSclient } from './utils/oss'
import moment from "moment";
@ -35,19 +36,26 @@ router.beforeEach(async (to, from, next) => {
if (hasToken) {
if (to.path === '/login' || to.path === '/recompose' || to.path === '/email-recompose' || to.path === '/error' || to.path === '/ReviewersResearchForm' || to.path === '/ReviewersResearch') {
if (to.path === '/ReviewersResearch') {
OSSclient()
await this.$store.dispatch('user/logout')
await OSSclient()
await store.dispatch('user/logout')
}
if (to.path === '/ReviewersResearchForm') {
OSSclient()
}
if (to.path === '/login') {
OSSclient()
await OSSclient()
}
next()
NProgress.done()
} else if (from.path === '/researchForm') {
removeToken()
const lang = to.query.lang || zzSessionStorage.getItem('lang')
next(`/researchLogin?trialId=${to.query.trialId}&lang=${lang}`)
NProgress.done()
} else if (from.path === '/researchDetail_m') {
removeToken()
const lang = to.query.lang || zzSessionStorage.getItem('lang')
next(`/researchLogin_m?trialId=${to.query.trialId}&lang=${lang}`)
NProgress.done()
} else {
OSSclient()
await OSSclient()
const hasGetUserInfo = store.getters.userId
if (hasGetUserInfo) {
next()
@ -55,10 +63,13 @@ router.beforeEach(async (to, from, next) => {
try {
// 获取用户信息
await store.dispatch('user/getInfo')
await store.dispatch('user/getUserInfo')
const accessRoutes = await store.dispatch('permission/generateRoutes')
resetRouter()
router.addRoutes(accessRoutes)
next({ ...to, replace: true })
} catch (error) {
console.log(error)
// 删除token并进入登录页面以重新登录
await store.dispatch('user/resetToken')
next(`/login?redirect=${to.path}`)
@ -69,17 +80,29 @@ router.beforeEach(async (to, from, next) => {
} else {
/* has no token*/
if (whiteList.indexOf(to.path) !== -1) {
if (to.path === '/researchLogin') {
const lang = to.query.lang || zzSessionStorage.getItem('lang')
const flag = navigator.userAgent.match(/(phone|pad|pod|iPhone|iPod|ios|iPad|Android|Mobile|BlackBerry|IEMobile|MQQBrowser|JUC|Fennec|wOSBrowser|BrowserNG|WebOS|Symbian|Windows Phone)/i)
if (flag) {
next(`/researchLogin_m?trialId=${to.query.trialId}&lang=${lang}`)
} else {
next()
}
} else {
// 在免登录whiteList中直接进入
if (to.path === '/readingDicoms' || to.path === '/noneDicomReading') {
OSSclient()
}
if (to.path === '/login') {
OSSclient()
await OSSclient()
}
next()
}
} else {
if (to.path === '/researchForm') {
next(`/researchLogin?`)
const lang = to.query.lang || zzSessionStorage.getItem('lang')
next(`/researchLogin?trialId=${to.query.trialId}&lang=${lang}`)
NProgress.done()
} else if (to.path === '/researchDetail_m') {
const lang = to.query.lang || zzSessionStorage.getItem('lang')
next(`/researchLogin_m?trialId=${to.query.trialId}&lang=${lang}`)
NProgress.done()
} else if (to.path === '/ReviewersResearchForm') {
next(`/ReviewersResearch?`)

View File

@ -177,20 +177,21 @@ const actions = {
loginSelectUserRole(params).then(async response => {
if (response.IsSuccess) {
const data = response.Result.JWTStr
const data = response.Result
try {
commit('SET_TOKEN', data)
setToken(data)
commit('SET_USERID', UserId)
zzSessionStorage.setItem('userId', UserId)
commit('SET_USERID', userRoleId)
zzSessionStorage.setItem('userId', userRoleId)
const userString = decodeURIComponent(escape(window.atob(data.split('.')[1].replace(/-/g, '+').replace(/_/g, '/'))))
const user = JSON.parse(userString)
// return console.log(user, user.realName)
zzSessionStorage.setItem('userTypeShortName', user.userTypeShortName)
// commit('SET_USERTYPESHORTNAME', user.userTypeShortName)
commit('SET_NAME', user.realName)
setName(user.realName)
zzSessionStorage.setItem('realName', user.realName)
commit('SET_USERTYPESHORTNAME', user.userTypeShortName)
commit('SET_NAME', user.fullName)
setName(user.fullName)
commit('SET_IDENTITYUSERID', user.identityUserId)
zzSessionStorage.setItem('identityUserId', user.identityUserId)
zzSessionStorage.setItem('userTypeEnumInt', user.userTypeEnumInt)
var permissions = await getUserPermissions()
var menuTree = await getUserMenuTree()
@ -236,16 +237,19 @@ const actions = {
commit('SET_PERMISSIONS', JSON.parse(zzSessionStorage.getItem('permissions')))
commit('SET_ISTESTUSER', zzSessionStorage.getItem('isTestUser'))
const user = JSON.parse(userString)
commit('SET_NAME', zzSessionStorage.getItem('realName'))
commit('SET_USERID', user.id)
commit('SET_NAME', zzSessionStorage.getItem('Name'))
commit('SET_USERTYPESHORTNAME', user.userTypeShortName)
commit('SET_IDENTITYUSERID', user.identityUserId)
commit('SET_USERID', user.userRoleId)
commit('SET_USERNAME', zzSessionStorage.getItem('userName'))
commit('SET_NEED_SIGN_SYSTEM_DOC_COUNT', parseInt(zzSessionStorage.getItem('TotalNeedSignSystemDocCount')))
commit('SET_NEED_SIGN_TRIALS_DOC_COUNT', parseInt(zzSessionStorage.getItem('TotalNeedSignTrialDocCount')))
console.log(zzSessionStorage.getItem('TotalNeedSignSystemDocCount'))
console.log(zzSessionStorage.getItem('TotalNeedSignTrialDocCount'))
commit('SET_IS_FIRST_SYSTEM_DOC_SIGN', zzSessionStorage.getItem('IsFirstSysDocNeedSign'))
// console.log(zzSessionStorage.getItem('TotalNeedSignSystemDocCount'))
// console.log(zzSessionStorage.getItem('TotalNeedSignTrialDocCount'))
zzSessionStorage.setItem('userName', user.name)
zzSessionStorage.setItem('my_username', user.name)
zzSessionStorage.setItem('userId', user.id)
zzSessionStorage.setItem('userId', user.userRoleId)
zzSessionStorage.setItem('identityUserId', user.identityUserId)
zzSessionStorage.setItem('userTypeShortName', user.userTypeShortName)
zzSessionStorage.setItem('userTypeEnumInt', user.userTypeEnumInt)
return user
@ -277,7 +281,7 @@ const actions = {
// 获取用户信息
getUserInfo({ commit, state }) {
return new Promise((resolve, reject) => {
getUser(state.userId).then(res => {
getUser().then(res => {
if (res.Result) {
commit('SET_ROLES', res.Result.AccountList)
}

View File

@ -418,16 +418,13 @@ export default {
return
}
if (
this.hasPermi([
'role:air',
'role:rpm',
'role:rcrc',
'role:rir',
])
this.hasPermi(['role:pm', 'role:oa', 'role:admin', 'role:dev'])
) {
this.$router.replace({ path: '/trials/trials-list' })
history.replaceState(null, null, '/trials/trials-inspection')
history.go(0)
} else {
this.$router.replace({ path: '/trials' })
history.replaceState(null, null, '/trials/trials-list')
history.go(0)
}
} else {
this.toggleRoleLoading = false

View File

@ -140,23 +140,22 @@ export default {
},
},
created() {
this.isReviewer = JSON.parse(zzSessionStorage.getItem('IsReviewer'))
// this.isReviewer = JSON.parse(zzSessionStorage.getItem('IsReviewer'))
this.changeRoute(this.$route)
this.getInfo()
this.$store.dispatch('user/getUserInfo')
},
methods: {
...mapMutations({ setLanguage: 'lang/setLanguage' }),
loginByRole(row) {
let { UserId, UserTypeId } = row
if (this.$store.state.user.userId === UserId) {
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', { UserId, UserTypeId })
.dispatch('user/loginByRole', { userRoleId })
.then((res) => {
if (res) {
this.$store
@ -180,13 +179,18 @@ export default {
) {
history.replaceState(null, null, '/trials/trials-inspection')
history.go(0)
// this.$router.replace({ path: '/trials/trials-list' })
} else {
history.replaceState(null, null, '/trials/trials-list')
history.go(0)
// this.$router.replace({ path: '/trials/trials-workbench' })
}
this.toggleRoleVisible = false
this.toggleRoleLoading = false
this.$EventBus.$emit('reload')
// this.$nextTick(() => {
// window.location.reload()
// })
} else {
//
this.toggleRoleLoading = false

View File

@ -24,7 +24,9 @@
<!-- 是否签署 -->
<el-form-item :label="$t('trials:self-attachment:table:isSign')">
<el-select v-model="searchData.IsSign" clearable style="width:120px;">
<el-option v-for="item of $d.YesOrNo" v-if="item.raw.ValueCN !== ''" :label="item.label" :value="item.value" />
<template v-for="item of $d.YesOrNo">
<el-option v-if="item.raw.ValueCN !== ''" :key="item.id" :label="item.label" :value="item.value" />
</template>
</el-select>
</el-form-item>
<el-form-item>
@ -229,7 +231,7 @@ export default {
if (this.$route.query.isSign) {
this.searchData.IsSign = JSON.parse(this.$route.query.isSign)
}
this.getList()
// this.getList()
},
destroyed() {
if (this.timer) {