feat: 初始化收支管理系统
This commit is contained in:
@@ -0,0 +1,43 @@
|
||||
// 用户状态管理模块:管理用户的登录状态(token、昵称、用户ID)
|
||||
import { defineStore } from 'pinia'
|
||||
import { ref } from 'vue'
|
||||
import { getUserInfo } from '../api/user'
|
||||
|
||||
export const useUserStore = defineStore('user', () => {
|
||||
// 从 localStorage 恢复 token,若不存在则为空字符串
|
||||
const token = ref(localStorage.getItem('token') || '')
|
||||
const nickname = ref('') // 用户昵称
|
||||
const userId = ref<number | null>(null) // 用户 ID
|
||||
|
||||
/** 设置 token 并持久化到 localStorage */
|
||||
function setToken(t: string) {
|
||||
token.value = t
|
||||
localStorage.setItem('token', t)
|
||||
}
|
||||
|
||||
/** 设置用户基本信息(昵称和 ID) */
|
||||
function setUserInfo(nick: string, id: number) {
|
||||
nickname.value = nick
|
||||
userId.value = id
|
||||
}
|
||||
|
||||
/** 从后端获取当前登录用户的信息 */
|
||||
async function fetchUserInfo() {
|
||||
try {
|
||||
const res: any = await getUserInfo()
|
||||
setUserInfo(res.data.nickname, res.data.id)
|
||||
} catch (e) {
|
||||
console.error('获取用户信息失败', e)
|
||||
}
|
||||
}
|
||||
|
||||
/** 退出登录:清空状态并移除 localStorage 中的 token */
|
||||
function logout() {
|
||||
token.value = ''
|
||||
nickname.value = ''
|
||||
userId.value = null
|
||||
localStorage.removeItem('token')
|
||||
}
|
||||
|
||||
return { token, nickname, userId, setToken, setUserInfo, fetchUserInfo, logout }
|
||||
})
|
||||
Reference in New Issue
Block a user