1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
| import type { UserInfo } from '@/api/auth'
| import { defineStore } from 'pinia'
| import { ref } from 'vue'
| import {
| getUserInfo as _getUserInfo,
| } from '@/api/auth'
|
| // 初始化状态
| const userInfoState: UserInfo & { avatar?: string, token?: string } = {
| id: 0,
| username: '',
| realName: '',
| email: '',
| mobile: '',
| status: 0,
| superAdmin: 0,
| avatar: '/static/images/default-avatar.png',
| token: '',
| }
|
| export const useUserStore = defineStore(
| 'userInfo',
| () => {
| // 定义用户信息
| const userInfo = ref<UserInfo & { avatar?: string, token?: string }>({ ...userInfoState })
| // 设置用户信息
| const setUserInfo = (val: UserInfo & { avatar?: string, token?: string }) => {
| console.log('设置用户信息', val)
| // 若头像为空 则使用默认头像
| if (!val.avatar) {
| val.avatar = userInfoState.avatar
| }
| else {
| val.avatar = 'https://oss.laf.run/ukw0y1-site/avatar.jpg?feige'
| }
| userInfo.value = val
| }
| const setUserAvatar = (avatar: string) => {
| userInfo.value.avatar = avatar
| console.log('设置用户头像', avatar)
| console.log('userInfo', userInfo.value)
| }
| // 删除用户信息
| const removeUserInfo = () => {
| userInfo.value = { ...userInfoState }
| uni.removeStorageSync('userInfo')
| uni.removeStorageSync('token')
| }
| /**
| * 获取用户信息
| */
| const getUserInfo = async () => {
| const userData = await _getUserInfo()
| setUserInfo(userData)
| return userData
| }
| /**
| * 退出登录 并 删除用户信息
| */
| const logout = async () => {
| removeUserInfo()
| }
|
| return {
| userInfo,
| getUserInfo,
| setUserInfo,
| setUserAvatar,
| logout,
| removeUserInfo,
| }
| },
| {
| persist: {
| key: 'userInfo',
| serializer: {
| serialize: state => JSON.stringify(state.userInfo),
| deserialize: value => ({ userInfo: JSON.parse(value) }),
| },
| },
| },
| )
|
|