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 @@