hir_web/src/store/modules/user.js

291 lines
10 KiB
JavaScript

import { getToken, setToken, removeToken, setName, removeName } from '@/utils/auth'
import { login, getUserMenuTree, getUserPermissions, loginSelectUserRole, TJUserLoginInfo } from '@/api/user'
import { getUser } from '@/api/admin'
import { resetRouter } from '@/router'
import md5 from 'js-md5'
const getDefaultState = () => {
return {
token: getToken(),
name: '',
userName: '',
userId: '',
avatar: '',
permissions: [],
tree: [],
/* eslint-disable */
TotalNeedSignSystemDocCount: eval(process.env.VUE_APP_WORD_FOR_PERMISSION) ? null : 0,
TotalNeedSignTrialDocCount: eval(process.env.VUE_APP_WORD_FOR_PERMISSION) ? null : 0,
TrialStatusStr: null,
isTestUser: false,
roles: []
}
}
const state = getDefaultState()
const mutations = {
SET_ROLES: (state, roles) => {
state.roles = roles
},
RESET_STATE: (state) => {
Object.assign(state, getDefaultState())
},
SET_TOKEN: (state, token) => {
zzSessionStorage.setItem('TokenKey', token)
// document.cookie = 'access_token=' + token + ';path=/'
state.token = token
},
SET_NAME: (state, name) => {
state.name = name
},
SET_USERNAME: (state, name) => {
state.userName = name
},
SET_TREE: (state, tree) => {
state.tree = tree
},
SET_PERMISSIONS: (state, permissions) => {
state.permissions = permissions
},
SET_AVATAR: (state, avatar) => {
state.avatar = avatar
},
SET_USERID: (state, id) => {
state.userId = id
},
SET_ISTESTUSER: (state, isTestUser) => {
state.isTestUser = eval(isTestUser)
},
SET_NEED_SIGN_SYSTEM_DOC_COUNT: (state, TotalNeedSignSystemDocCount) => {
/* eslint-disable */
if (eval(process.env.VUE_APP_WORD_FOR_PERMISSION) && !state.isTestUser) {
zzSessionStorage.setItem('TotalNeedSignSystemDocCount', TotalNeedSignSystemDocCount)
state.TotalNeedSignSystemDocCount = TotalNeedSignSystemDocCount
} else {
zzSessionStorage.setItem('TotalNeedSignSystemDocCount', 0)
state.TotalNeedSignSystemDocCount = 0
}
},
SET_NEED_SIGN_TRIALS_DOC_COUNT: (state, TotalNeedSignTrialDocCount) => {
if (eval(process.env.VUE_APP_WORD_FOR_PERMISSION) && !state.isTestUser) {
zzSessionStorage.setItem('TotalNeedSignTrialDocCount', TotalNeedSignTrialDocCount)
state.TotalNeedSignTrialDocCount = TotalNeedSignTrialDocCount
} else {
zzSessionStorage.setItem('TotalNeedSignTrialDocCount', 0)
state.TotalNeedSignTrialDocCount = 0
}
},
SET_TRIAL_STATUS_STR: (state, TrialStatusStr) => {
zzSessionStorage.setItem('TrialStatusStr', TrialStatusStr)
state.TrialStatusStr = TrialStatusStr
}
}
const actions = {
setRoles({ commit }, roles) {
commit('SET_ROLES', roles)
},
// user login
login({ commit }, userInfo) {
const { username, password } = userInfo
return new Promise((resolve, reject) => {
login({ UserName: username.trim(), Password: md5(password) }).then(async response => {
if (response.IsSuccess) {
zzSessionStorage.removeItem('lastWorkbench')
zzSessionStorage.setItem('my_username', username.trim())
zzSessionStorage.setItem('my_password', md5(password))
const data = response.Result
if (data.BasicInfo.IsFirstAdd) {
try {
zzSessionStorage.setItem('userId', data.BasicInfo.Id)
commit('SET_TOKEN', data.JWTStr)
setToken(data.JWTStr)
resolve(false)
} catch (e) {
console.log(e)
}
} else {
try {
zzSessionStorage.setItem('IsAdmin', data.BasicInfo.IsAdmin)
zzSessionStorage.setItem('IsReviewer', data.BasicInfo.IsReviewer)
zzSessionStorage.setItem('userName', data.BasicInfo.UserName)
commit('SET_TOKEN', data.JWTStr)
commit('SET_NAME', data.BasicInfo.RealName)
zzSessionStorage.setItem('realName', data.BasicInfo.RealName)
zzSessionStorage.setItem('isTestUser', data.BasicInfo.IsTestUser)
commit('SET_ISTESTUSER', data.BasicInfo.IsTestUser)
commit('SET_USERNAME', data.BasicInfo.UserName)
commit('SET_USERID', data.BasicInfo.Id)
setToken(data.JWTStr)
setName(data.BasicInfo.RealName)
const userString = decodeURIComponent(escape(window.atob(data.JWTStr.split('.')[1].replace(/-/g, '+').replace(/_/g, '/'))))
const user = JSON.parse(userString)
zzSessionStorage.setItem('userTypeShortName', user.userTypeShortName)
zzSessionStorage.setItem('userId', user.id)
zzSessionStorage.setItem('userTypeEnumInt', user.userTypeEnumInt)
var permissions = await getUserPermissions()
var menuTree = await getUserMenuTree()
commit('SET_TREE', menuTree.Result)
commit('SET_PERMISSIONS', permissions.Result)
zzSessionStorage.setItem('newTree', JSON.stringify(menuTree.Result))
zzSessionStorage.setItem('permissions', JSON.stringify(permissions.Result))
} catch (e) {
console.log(e)
}
resolve(response.Result)
}
} else {
reject(response.ErrorMessage)
}
}).catch(() => {
reject()
})
})
},
loginByToken({ commit }, Token) {
return new Promise((resolve, reject) => {
TJUserLoginInfo(Token).then(async response => {
if (response.IsSuccess) {
zzSessionStorage.removeItem('lastWorkbench')
const data = response.Result
commit('SET_TOKEN', response.OtherInfo)
setToken(response.OtherInfo)
commit('SET_ROLES', data)
resolve(data)
} else {
reject(response.ErrorMessage)
}
}).catch(() => {
reject()
})
})
},
loginByRole({ commit }, userInfo) {
const { UserId, UserTypeId } = userInfo
let params = {
UserId, UserTypeId
}
return new Promise((resolve, reject) => {
loginSelectUserRole(params).then(async response => {
if (response.IsSuccess) {
const data = response.Result.JWTStr
try {
commit('SET_TOKEN', data)
setToken(data)
commit('SET_USERID', UserId)
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.realName)
setName(user.realName)
zzSessionStorage.setItem('realName', user.realName)
zzSessionStorage.setItem('userTypeEnumInt', user.userTypeEnumInt)
var permissions = await getUserPermissions()
var menuTree = await getUserMenuTree()
commit('SET_TREE', menuTree.Result)
commit('SET_PERMISSIONS', permissions.Result)
zzSessionStorage.setItem('newTree', JSON.stringify(menuTree.Result))
zzSessionStorage.setItem('permissions', JSON.stringify(permissions.Result))
zzSessionStorage.removeItem('lastWorkbench')
} catch (e) {
console.log(e)
}
resolve(response.Result)
} else {
reject(response.ErrorMessage)
}
}).catch(() => {
reject()
})
})
},
setTree({ commit }, tree) {
commit('SET_TREE', tree)
},
setPermissions({ commit }, permissions) {
commit('SET_PERMISSIONS', permissions)
},
setTotalNeedSignSystemDocCount({ commit }, TotalNeedSignSystemDocCount) {
commit('SET_NEED_SIGN_SYSTEM_DOC_COUNT', TotalNeedSignSystemDocCount)
},
setTotalNeedSignTrialDocCount({ commit }, TotalNeedSignTrialDocCount) {
commit('SET_NEED_SIGN_TRIALS_DOC_COUNT', TotalNeedSignTrialDocCount)
},
setTrialStatusStr({ commit }, TrialStatusStr) {
commit('SET_TRIAL_STATUS_STR', TrialStatusStr)
},
// get user info
getInfo({ commit, state }) {
const token = state.token
// 解析jwt
const userString = decodeURIComponent(escape(window.atob(token.split('.')[1].replace(/-/g, '+').replace(/_/g, '/'))))
commit('SET_TREE', JSON.parse(zzSessionStorage.getItem('newTree')))
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_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'))
zzSessionStorage.setItem('userName', user.name)
zzSessionStorage.setItem('my_username', user.name)
zzSessionStorage.setItem('userId', user.id)
zzSessionStorage.setItem('userTypeShortName', user.userTypeShortName)
zzSessionStorage.setItem('userTypeEnumInt', user.userTypeEnumInt)
return user
},
updateInfo({ commit, state }) {
commit('SET_NAME', zzSessionStorage.getItem('realName'))
},
// user logout
logout({ commit, state }) {
removeToken() // must remove token first
resetRouter()
removeName()
zzSessionStorage.clear()
commit('RESET_STATE')
},
setToken({ commit }, token) {
commit('SET_TOKEN', token)
},
// 获取用户信息
getUserInfo({ commit, state }) {
return new Promise((resolve, reject) => {
getUser(state.userId).then(res => {
if (res.Result) {
commit('SET_ROLES', res.Result.AccountList)
}
resolve(res.Result)
}).catch(err => {
reject(err)
})
})
},
// remove token
resetToken({ commit }) {
return new Promise(resolve => {
document.cookie = ''
removeToken() // must remove token first
commit('RESET_STATE')
resolve()
})
}
}
export default {
namespaced: true,
state,
mutations,
actions
}