75 lines
1.9 KiB
TypeScript
75 lines
1.9 KiB
TypeScript
import { defineStore } from 'pinia'
|
|
import type { UserState } from './types'
|
|
import menuList from '@/config/menuList.ts'
|
|
|
|
const useUserStore = defineStore('user', {
|
|
state: (): UserState => {
|
|
return {
|
|
tokenName: '',
|
|
tokenValue: '',
|
|
userPhone: '',
|
|
userNickName: '',
|
|
userId: NaN,
|
|
perms: [],
|
|
tenantId: NaN
|
|
}
|
|
},
|
|
actions: {
|
|
async RESET_STATE() {
|
|
this.$reset()
|
|
},
|
|
// 登录
|
|
onLogin(data: { tokenValue: string; tokenName: string; userNickName: string }) {
|
|
this.tokenValue = data.tokenValue
|
|
this.tokenName = data.tokenName
|
|
this.userNickName = data.userNickName
|
|
},
|
|
// 获取用户信息(昵称、头像、角色集合、权限集合)
|
|
getUserRoleInfo() {
|
|
return new Promise((resolve) => {
|
|
resolve(menuList)
|
|
/* apiGetUserRoleInfo.get!({ tenantCode: 'loan_system' }).then((res: any) => {
|
|
const {
|
|
userInfo: { userPhone, userNickName, tenantId, id },
|
|
menuResourceList,
|
|
buttonResourceList
|
|
} = res.data
|
|
this.userPhone = userPhone
|
|
this.userNickName = userNickName
|
|
this.userId = id
|
|
this.tenantId = tenantId
|
|
this.perms.splice(
|
|
0,
|
|
this.perms.length,
|
|
...(buttonResourceList ? buttonResourceList.map((item: any) => item.resourceCode) : [])
|
|
)
|
|
resolve(menuResourceList)
|
|
}) */
|
|
})
|
|
},
|
|
// 退出登录
|
|
onLogout() {
|
|
return new Promise((resolve) => {
|
|
api.login.apiLogout.get!().then(() => {
|
|
this.RESET_STATE()
|
|
window.location.href = '/login'
|
|
resolve(null)
|
|
})
|
|
})
|
|
},
|
|
// 清除 Token
|
|
onResetToken() {
|
|
return new Promise((resolve) => {
|
|
this.RESET_STATE()
|
|
resolve(null)
|
|
})
|
|
}
|
|
},
|
|
persist: {
|
|
key: 'login',
|
|
storage: localStorage
|
|
}
|
|
})
|
|
|
|
export default useUserStore
|