用户登录及角色切换
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({ return request({
url: `/user/getUser/${userId}`, url: `/user/getUser`,
method: 'get' method: 'get',
params
}) })
} }

View File

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

View File

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

View File

@ -1,9 +1,10 @@
import router from './router' import router from './router'
import { resetRouter } from '@/router'
import store from './store' import store from './store'
// import { Message } from 'element-ui' // import { Message } from 'element-ui'
import NProgress from 'nprogress' import NProgress from 'nprogress'
import 'nprogress/nprogress.css' import 'nprogress/nprogress.css'
import { getToken } from '@/utils/auth' import { getToken, removeToken } from '@/utils/auth'
import Vue from 'vue' import Vue from 'vue'
import { OSSclient } from './utils/oss' import { OSSclient } from './utils/oss'
import moment from "moment"; import moment from "moment";
@ -35,19 +36,26 @@ router.beforeEach(async (to, from, next) => {
if (hasToken) { 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 === '/login' || to.path === '/recompose' || to.path === '/email-recompose' || to.path === '/error' || to.path === '/ReviewersResearchForm' || to.path === '/ReviewersResearch') {
if (to.path === '/ReviewersResearch') { if (to.path === '/ReviewersResearch') {
OSSclient() await OSSclient()
await this.$store.dispatch('user/logout') await store.dispatch('user/logout')
} }
if (to.path === '/ReviewersResearchForm') { if (to.path === '/ReviewersResearchForm') {
OSSclient() await OSSclient()
}
if (to.path === '/login') {
OSSclient()
} }
next() next()
NProgress.done() 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 { } else {
OSSclient() await OSSclient()
const hasGetUserInfo = store.getters.userId const hasGetUserInfo = store.getters.userId
if (hasGetUserInfo) { if (hasGetUserInfo) {
next() next()
@ -55,10 +63,13 @@ 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')
resetRouter()
router.addRoutes(accessRoutes) router.addRoutes(accessRoutes)
next({ ...to, replace: true }) next({ ...to, replace: true })
} catch (error) { } catch (error) {
console.log(error)
// 删除token并进入登录页面以重新登录 // 删除token并进入登录页面以重新登录
await store.dispatch('user/resetToken') await store.dispatch('user/resetToken')
next(`/login?redirect=${to.path}`) next(`/login?redirect=${to.path}`)
@ -69,17 +80,29 @@ router.beforeEach(async (to, from, next) => {
} else { } else {
/* has no token*/ /* has no token*/
if (whiteList.indexOf(to.path) !== -1) { if (whiteList.indexOf(to.path) !== -1) {
// 在免登录whiteList中直接进入 if (to.path === '/researchLogin') {
if (to.path === '/readingDicoms' || to.path === '/noneDicomReading') { const lang = to.query.lang || zzSessionStorage.getItem('lang')
OSSclient() 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') {
await OSSclient()
}
next()
} }
if (to.path === '/login') {
OSSclient()
}
next()
} else { } else {
if (to.path === '/researchForm') { 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() NProgress.done()
} else if (to.path === '/ReviewersResearchForm') { } else if (to.path === '/ReviewersResearchForm') {
next(`/ReviewersResearch?`) next(`/ReviewersResearch?`)

View File

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

View File

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

View File

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

View File

@ -24,7 +24,9 @@
<!-- 是否签署 --> <!-- 是否签署 -->
<el-form-item :label="$t('trials:self-attachment:table:isSign')"> <el-form-item :label="$t('trials:self-attachment:table:isSign')">
<el-select v-model="searchData.IsSign" clearable style="width:120px;"> <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-select>
</el-form-item> </el-form-item>
<el-form-item> <el-form-item>
@ -229,7 +231,7 @@ export default {
if (this.$route.query.isSign) { if (this.$route.query.isSign) {
this.searchData.IsSign = JSON.parse(this.$route.query.isSign) this.searchData.IsSign = JSON.parse(this.$route.query.isSign)
} }
this.getList() // this.getList()
}, },
destroyed() { destroyed() {
if (this.timer) { if (this.timer) {