From d0887851c2521f0d100441b44ed1854a24291498 Mon Sep 17 00:00:00 2001 From: wangxiaoshuang <825034831@qq.com> Date: Mon, 18 Aug 2025 13:41:39 +0800 Subject: [PATCH] =?UTF-8?q?=E7=94=A8=E6=88=B7=E7=99=BB=E5=BD=95=E5=8F=8A?= =?UTF-8?q?=E8=A7=92=E8=89=B2=E5=88=87=E6=8D=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/api/admin.js | 7 ++- src/components/TrialsTab/index.vue | 52 +++++++++--------- src/layout/components/Navbar.vue | 7 +-- src/permission.js | 55 +++++++++++++------ src/store/modules/user.js | 34 +++++++----- src/views/login/index.vue | 13 ++--- .../trials-layout/components/trialsNavbar.vue | 14 +++-- .../attachments/self-attachment/index.vue | 6 +- 8 files changed, 109 insertions(+), 79 deletions(-) diff --git a/src/api/admin.js b/src/api/admin.js index 3c10bb1..8a31009 100644 --- a/src/api/admin.js +++ b/src/api/admin.js @@ -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 }) } diff --git a/src/components/TrialsTab/index.vue b/src/components/TrialsTab/index.vue index f843b81..49e2279 100644 --- a/src/components/TrialsTab/index.vue +++ b/src/components/TrialsTab/index.vue @@ -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) => { diff --git a/src/layout/components/Navbar.vue b/src/layout/components/Navbar.vue index fcbc69b..49bb9e7 100644 --- a/src/layout/components/Navbar.vue +++ b/src/layout/components/Navbar.vue @@ -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 diff --git a/src/permission.js b/src/permission.js index de7a560..1412b83 100644 --- a/src/permission.js +++ b/src/permission.js @@ -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) { - // 在免登录whiteList中,直接进入 - if (to.path === '/readingDicoms' || to.path === '/noneDicomReading') { - OSSclient() + 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') { + await OSSclient() + } + next() } - if (to.path === '/login') { - 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?`) diff --git a/src/store/modules/user.js b/src/store/modules/user.js index 1c68ca7..5e66272 100644 --- a/src/store/modules/user.js +++ b/src/store/modules/user.js @@ -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) } diff --git a/src/views/login/index.vue b/src/views/login/index.vue index 919920e..17ed6c7 100644 --- a/src/views/login/index.vue +++ b/src/views/login/index.vue @@ -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 diff --git a/src/views/trials/trials-layout/components/trialsNavbar.vue b/src/views/trials/trials-layout/components/trialsNavbar.vue index 4119eb4..b94fa77 100644 --- a/src/views/trials/trials-layout/components/trialsNavbar.vue +++ b/src/views/trials/trials-layout/components/trialsNavbar.vue @@ -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 diff --git a/src/views/trials/trials-panel/attachments/self-attachment/index.vue b/src/views/trials/trials-panel/attachments/self-attachment/index.vue index 3487f86..a6e151d 100644 --- a/src/views/trials/trials-panel/attachments/self-attachment/index.vue +++ b/src/views/trials/trials-panel/attachments/self-attachment/index.vue @@ -24,7 +24,9 @@ - + @@ -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) {