From 76252e50d118e6dc9228966227d2d091a3e2eb00 Mon Sep 17 00:00:00 2001 From: wangxiaoshuang <825034831@qq.com> Date: Tue, 1 Apr 2025 15:35:16 +0800 Subject: [PATCH] =?UTF-8?q?=E7=99=BB=E5=BD=95=E9=A1=B5=E4=BB=8E=E8=B7=AF?= =?UTF-8?q?=E7=94=B1=E4=B8=AD=E8=8E=B7=E5=8F=96token=E7=99=BB=E5=BD=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/store/modules/user.js | 25 +++++- src/views/login/index.vue | 86 ++++++++++++++++--- .../trials-layout/components/trialsNavbar.vue | 7 +- 3 files changed, 100 insertions(+), 18 deletions(-) diff --git a/src/store/modules/user.js b/src/store/modules/user.js index bb806f8..f478405 100644 --- a/src/store/modules/user.js +++ b/src/store/modules/user.js @@ -1,5 +1,5 @@ import { getToken, setToken, removeToken, setName, removeName } from '@/utils/auth' -import { login, getUserMenuTree, getUserPermissions, loginSelectUserRole } from '@/api/user' +import { login, getUserMenuTree, getUserPermissions, loginSelectUserRole, TJUserLoginInfo } from '@/api/user' import { getUser } from '@/api/admin' import { resetRouter } from '@/router' import md5 from 'js-md5' @@ -142,6 +142,23 @@ const actions = { }) }) }, + loginByToken({ commit }, Token) { + return new Promise((resolve, reject) => { + TJUserLoginInfo({ Token }).then(async response => { + if (response.IsSuccess) { + zzSessionStorage.removeItem('lastWorkbench') + const data = response.Result + setToken(response.OtherInfo) + commit('SET_ROLES', data) + resolve(data) + } else { + reject(response.ErrorMessage) + } + }).catch(() => { + reject() + }) + }) + }, loginByRole({ commit }, userInfo) { const { UserId, UserTypeId } = userInfo let params = { @@ -160,10 +177,12 @@ const actions = { zzSessionStorage.setItem('userId', UserId) 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.fullName) - setName(user.fullName) + commit('SET_NAME', user.realName) + setName(user.realName) + zzSessionStorage.setItem('realName', user.realName) zzSessionStorage.setItem('userTypeEnumInt', user.userTypeEnumInt) var permissions = await getUserPermissions() var menuTree = await getUserMenuTree() diff --git a/src/views/login/index.vue b/src/views/login/index.vue index 5c8f8df..95bd325 100644 --- a/src/views/login/index.vue +++ b/src/views/login/index.vue @@ -112,6 +112,8 @@ {{ $t("system:hospital:save") }} + @@ -124,11 +126,12 @@ import Img1 from '@/assets/pic-1.png' import logoImg from '@/assets/zzlogo2.png' import { getHospital } from '@/api/hospital.js' import { getHIRHospitalList, updateDefaultHospital } from '@/api/admin' -import { TJUserLoginInfo } from '@/api/user' +import toggleRole from '@/components/toggleRole' +import { resetRouter } from '@/router' export default { name: 'Login', - components: { TopLang, Vcode }, + components: { TopLang, Vcode, toggleRole }, data() { return { config: WINDOW_CONFIG, @@ -176,7 +179,10 @@ export default { hospitalList: [], form: { Id: null - } + }, + + toggleRoleVisible: false, + toggleRoleLoading: false, } }, computed: { @@ -215,16 +221,74 @@ export default { }, methods: { ...mapMutations({ setLanguage: 'lang/setLanguage' }), + loginByRole(row) { + let { UserId, UserTypeId } = row + if (this.$store.state.user.userId === UserId) { + this.toggleRoleVisible = false + this.toggleRoleLoading = false + return false + } + this.toggleRoleLoading = true + this.$store + .dispatch('user/loginByRole', { UserId, UserTypeId }) + .then((res) => { + if (res) { + this.$store + .dispatch('permission/generateRoutes') + .then(async (res) => { + if (res && res.length > 0) { + resetRouter() + await 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:pm', 'role:oa', 'role:admin', 'role:dev']) + ) { + history.replaceState(null, null, '/trials/trials-inspection') + history.go(0) + } else { + history.replaceState(null, null, '/trials/trials-list') + history.go(0) + } + this.toggleRoleVisible = false + this.toggleRoleLoading = false + this.$EventBus.$emit('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 + }) + }, // 置换token async TJUserLoginInfo(Token) { - try { - let params = { - Token - } - let res = await TJUserLoginInfo(params) - } catch (err) { - console.log(err) - } + this.$store + .dispatch('user/loginByToken', { Token }).then(res => { + if (res.length === 1) { + return this.loginByRole(res[0]) + } + this.toggleRoleVisible = true + }).catch(err => { + console.log(err) + }) }, async saveHospital() { if (this.form.Id === this.hospital.Id) return this.visible = false diff --git a/src/views/trials/trials-layout/components/trialsNavbar.vue b/src/views/trials/trials-layout/components/trialsNavbar.vue index 4ad79fa..df3d263 100644 --- a/src/views/trials/trials-layout/components/trialsNavbar.vue +++ b/src/views/trials/trials-layout/components/trialsNavbar.vue @@ -2,9 +2,8 @@
- +
@@ -74,7 +73,7 @@ -