60 lines
1.6 KiB
JavaScript
60 lines
1.6 KiB
JavaScript
|
|
import { defineStore } from 'pinia'
|
||
|
|
|
||
|
|
export const useUserStore = defineStore('user', {
|
||
|
|
state: () => ({
|
||
|
|
userName: '',
|
||
|
|
mobile: '',
|
||
|
|
userAvatar: '',
|
||
|
|
isLoggedIn: false,
|
||
|
|
}),
|
||
|
|
actions: {
|
||
|
|
async fetchUserInfo() {
|
||
|
|
const { data, error } = await useApiFetch('/user/detail').get().json()
|
||
|
|
if (data.value && !error.value) {
|
||
|
|
if (data.value.code === 200) {
|
||
|
|
const userinfo = data.value.data.userInfo
|
||
|
|
this.userName = userinfo.mobile || ''
|
||
|
|
this.mobile = userinfo.mobile || ''
|
||
|
|
this.userAvatar = userinfo.userAvatar
|
||
|
|
this.isLoggedIn = true
|
||
|
|
|
||
|
|
// 保存到localStorage
|
||
|
|
localStorage.setItem(
|
||
|
|
'userInfo',
|
||
|
|
JSON.stringify({
|
||
|
|
nickName: this.userName,
|
||
|
|
avatar: this.userAvatar,
|
||
|
|
})
|
||
|
|
)
|
||
|
|
} else if (data.value.code === 100009) {
|
||
|
|
localStorage.removeItem('token')
|
||
|
|
localStorage.removeItem('refreshAfter')
|
||
|
|
localStorage.removeItem('accessExpire')
|
||
|
|
localStorage.removeItem('userInfo')
|
||
|
|
localStorage.removeItem('agentInfo')
|
||
|
|
|
||
|
|
this.resetUser()
|
||
|
|
window.location.reload()
|
||
|
|
}
|
||
|
|
} else {
|
||
|
|
}
|
||
|
|
},
|
||
|
|
|
||
|
|
// 更新用户信息
|
||
|
|
updateUserInfo(userInfo) {
|
||
|
|
if (userInfo) {
|
||
|
|
this.userName = userInfo.mobile || userInfo.nickName || ''
|
||
|
|
this.userAvatar = userInfo.avatar || ''
|
||
|
|
this.isLoggedIn = true
|
||
|
|
}
|
||
|
|
},
|
||
|
|
|
||
|
|
// 重置用户信息
|
||
|
|
resetUser() {
|
||
|
|
this.userName = ''
|
||
|
|
this.userAvatar = ''
|
||
|
|
this.isLoggedIn = false
|
||
|
|
},
|
||
|
|
},
|
||
|
|
})
|