131 lines
2.8 KiB
TypeScript
131 lines
2.8 KiB
TypeScript
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,
|
||
},
|
||
)
|