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({ ...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, }, )