import defaultAvatar from '@/assets/img/default-avatar.png' // stores/user.ts import { defineStore } from 'pinia' import { ref } from 'vue' export interface UserInfoType { nickName: string avatar: string brief: string userId: number | string } export const useUserStore = defineStore('user', () => { const isLoggedIn = ref(false) const token = ref('') // const userInfo = ref({}) const userInfo = ref(null) function setToken(userToken: string) { isLoggedIn.value = true token.value = userToken // localStorage.setItem('token', userToken) } function setUserInfo(info: any) { userInfo.value = info } async function getUserInfo() { const res = await request.get('/system/user/selectUserById', { token: token.value, }) if (res.code === 200) { res.data.avatar = res.data.avatar || defaultAvatar setUserInfo(res.data) } } // 登出 function logout() { isLoggedIn.value = false token.value = '' userInfo.value = {} as UserInfoType } // 检查登录状态 function checkLoginStatus() { const savedToken = localStorage.getItem('token') if (savedToken) { isLoggedIn.value = true token.value = savedToken } } return { isLoggedIn, token, logout, checkLoginStatus, setToken, setUserInfo, userInfo, getUserInfo, } }, { persist: { key: 'mc-user-store', // paths: ['isLoggedIn', 'mymcname', 'token', 'userInfo'], // 只持久化 token storage: import.meta.client ? localStorage : undefined, }, // persist: { // storage: { // getItem(key) { // return window.localStorage.getItem(key) // }, // setItem(key, value) { // window.localStorage.setItem(key, value) // }, // }, // serializer: { // deserialize: parse, // serialize: stringify, // }, // }, }) // import { defineStore } from 'pinia' // interface State { // token: string // userInfo: Record // 或者定义一个更具体的类型 // } // export const useUserStore = defineStore('user', { // state: (): State => ({ // token: '', // userInfo: {}, // }), // actions: { // setToken(token: string) { // this.token = token // debugger // }, // setUserInfo(userInfo: Record) { // this.userInfo = userInfo // debugger // }, // // logout() { // // getLogout().then(() => { // // this.userInfo = {} // // this.token = '' // // }) // // } // }, // getters: { // // 定义计算属性 // }, // persist: { // enabled: true, // strategies: [ // { // // key: 'userInfo', // Storage: localStorage, // paths: ['userInfo', 'token'], // }, // ], // }, // })