90 lines
2.6 KiB
JavaScript
90 lines
2.6 KiB
JavaScript
import { login, logout, getInfo } from '@/api/login'
|
||
import { getToken, setToken, removeToken } from '@/utils/auth'
|
||
import defAva from '@/assets/images/user.png'
|
||
|
||
const useUserStore = defineStore(
|
||
'user',
|
||
{
|
||
state: () => ({
|
||
token: getToken(),
|
||
id: '',
|
||
name: '',
|
||
avatar: '',
|
||
orgId: '',
|
||
practitionerId: '',
|
||
orgName: '',
|
||
nickName: '',
|
||
fixmedinsCode: '', // 医疗机构编码
|
||
roles: [],
|
||
permissions: [],
|
||
tenantId: ''
|
||
}),
|
||
actions: {
|
||
// 登录
|
||
login(userInfo) {
|
||
const username = userInfo.username.trim()
|
||
const password = userInfo.password
|
||
const code = userInfo.code
|
||
const uuid = userInfo.uuid
|
||
const tenantId = userInfo.tenantId
|
||
return new Promise((resolve, reject) => {
|
||
login(username, password, code, uuid ,tenantId).then(res => {
|
||
setToken(res.token)
|
||
this.token = res.token
|
||
this.tenantId = tenantId
|
||
resolve()
|
||
}).catch(error => {
|
||
reject(error)
|
||
})
|
||
})
|
||
},
|
||
// 获取用户信息
|
||
getInfo() {
|
||
return new Promise((resolve, reject) => {
|
||
getInfo().then(res => {
|
||
const user = res.user
|
||
const avatar = (user.avatar == "" || user.avatar == null) ? defAva : import.meta.env.VITE_APP_BASE_API + user.avatar;
|
||
|
||
if (res.roles && res.roles.length > 0) { // 验证返回的roles是否是一个非空数组
|
||
this.roles = res.roles
|
||
this.permissions = res.permissions
|
||
} else {
|
||
this.roles = ['ROLE_DEFAULT']
|
||
}
|
||
this.id = user.userId
|
||
this.name = user.userName // 用户账号(对应数据库的user_name字段,如'admin')
|
||
this.orgId = user.orgId
|
||
this.orgName = user.orgName
|
||
this.nickName = user.nickName
|
||
this.practitionerId = res.practitionerId
|
||
this.fixmedinsCode = res.optionJson.fixmedinsCode
|
||
this.avatar = avatar
|
||
resolve(res)
|
||
}).catch(error => {
|
||
reject(error)
|
||
})
|
||
})
|
||
},
|
||
// 退出系统
|
||
logOut() {
|
||
return new Promise((resolve, reject) => {
|
||
logout(this.token).then(() => {
|
||
this.token = ''
|
||
this.roles = []
|
||
this.permissions = []
|
||
this.tenantId = ''
|
||
removeToken()
|
||
resolve()
|
||
}).catch(error => {
|
||
reject(error)
|
||
})
|
||
})
|
||
},
|
||
removeRoles(){
|
||
this.roles = []
|
||
}
|
||
}
|
||
})
|
||
|
||
export default useUserStore
|