volunteer-secondary/src/store/user.ts

92 lines
1.9 KiB
TypeScript

import type { IUserInfoRes } from '@/api/types/login'
import { defineStore } from 'pinia'
import { ref } from 'vue'
// 初始化状态
const userInfoState: IUserInfoRes = {
nickName: '',
avatar: '',
openId: "",
wxCode: "",
mobile: "",
userExtend: {},
talentExtend: {
"name": "",
"type": 0,
"specialtyDirection": "",
"ageLimit": "",
"advantages": "",
"height": "",
"weight": "",
"awards": "",
"fitnessResult": "",
sprint:"",
broadJump:''
}, // 天赋
}
export const useUserStore = defineStore(
'user',
() => {
// 定义用户信息
const userInfo = ref<IUserInfoRes>({ ...userInfoState })
// 设置用户信息
const setUserInfo = (val: IUserInfoRes) => {
userInfo.value = { ...userInfo.value, ...val }
}
const setUserAvatar = (avatar: string) => {
userInfo.value.avatar = avatar
}
// 删除用户信息
const clearUserInfo = () => {
userInfo.value = { ...userInfoState }
uni.removeStorageSync('user')
}
/**
* 获取用户信息
*/
const fetchUserInfo = async () => {
return null
}
// 存储user openId
const setUserOpenId = (openId: string) => {
userInfo.value.openId = openId
}
const setUserExtend = (userExtend: any) => {
userInfo.value.userExtend = userExtend
}
const setUserTalent = (talent: any) => {
userInfo.value.talentExtend = talent;
}
const setSex = (sex: string | null) => {
userInfo.value.sex = sex
}
const initUserTalent = () => {
userInfo.value.talentExtend = JSON.parse(JSON.stringify(userInfoState.talentExtend))
}
return {
userInfo,
clearUserInfo,
fetchUserInfo,
setUserInfo,
setUserAvatar,
setUserOpenId,
setUserExtend,
setSex,
setUserTalent,
initUserTalent
}
},
{
persist: true,
},
)