volunteer-4/src/store/user.ts

131 lines
2.8 KiB
TypeScript
Raw Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

import { City, ExtraUserInfo } from '@/types/app-type'
import { defineStore } from 'pinia'
import { ref } from 'vue'
const initState = {
nickname: '',
avatar: '',
city: {
allscore: 0,
code: '0',
isopen: 0,
lizations: [],
policy: 0,
provincename: '',
years: 0,
},
estimatedAchievement: {
year: 0, // 学期
expectedScore: '', // 成绩
requireSubject: { code: 0, name: '', simplename: '' },
optionalSubject: [],
provinceCode: '',
className: null,
createTime: '',
createUserId: 0,
createUserName: null,
id: 0,
init: false,
isDelete: false,
isUpdateScore: 0,
isVIP: false,
provinceName: '',
rank: 0,
schoolName: null,
sp: 0,
subjectGroup: '',
updateTime: null,
updateUserId: null,
updateUserName: null,
uuid: null,
vipCode: null,
wxId: 0,
},
userFilterParams: {
phase: 0,
},
token: '',
openid: '',
}
export const useUserStore = defineStore(
'user',
() => {
const userInfo = ref<ExtraUserInfo>({ ...initState })
// 设置用户信息
const setUserInfo = (val: ExtraUserInfo) => {
userInfo.value = val
}
// 设置用户所在城市
const setUserCity = (val: City) => {
userInfo.value.city = val
}
// 设置预估成绩
const setEstimatedAchievement = (val: any) => {
userInfo.value.estimatedAchievement = Object.assign(userInfo.value.estimatedAchievement, val)
}
// 设置用户token
const setUserToken = (val: string) => {
userInfo.value.token = val
}
const setUserOpenId = (val: string) => {
userInfo.value.openid = val
}
const setUserNickName = (val: string) => {
userInfo.value.nickname = val
}
const setUserAvatar = (val: string) => {
userInfo.value.avatar = val
}
// 清除预估成绩
const clearUserEstimatedAchievement = () => {
userInfo.value.estimatedAchievement = Object.assign(userInfo.value.estimatedAchievement, {
year: 0, // 学期
expectedScore: '', // 成绩
requireSubject: { code: 0, name: '', simplename: '' },
optionalSubject: [],
provinceCode: '',
})
}
// 清除用户信息
const clearUserInfo = () => {
userInfo.value = { ...initState }
}
// 一般没有reset需求不需要的可以删除
const reset = () => {
userInfo.value = { ...initState }
}
const isLoginFlag = computed(() => !!userInfo.value.token)
return {
userInfo,
setUserInfo,
clearUserInfo,
isLoginFlag,
reset,
setUserCity,
setEstimatedAchievement,
clearUserEstimatedAchievement,
setUserToken,
setUserOpenId,
setUserNickName,
setUserAvatar,
}
},
{
persist: true,
},
)