Files
FiDA_Front/src/stores/userInfo.ts

55 lines
1.2 KiB
TypeScript
Raw Normal View History

2026-02-02 13:32:33 +08:00
// 每一个存储的模块命名规则use开头store结尾
2026-02-23 14:45:35 +08:00
import router from '@/router'
2026-02-02 13:32:33 +08:00
import { defineStore } from 'pinia'
import { ref, computed } from 'vue'
import { removeLocal, setLocal } from '@/utils/local'
import MyEvent from '@/utils/myEvent'
2026-02-26 16:55:25 +08:00
import { Logout, GetUserInfo } from '@/api/login'
2026-02-02 13:32:33 +08:00
export const useUserInfoStore = defineStore('userInfo', () => {
2026-02-23 14:45:35 +08:00
const state = ref({
2026-02-11 16:32:38 +08:00
userInfo: {},
token: '',
2026-02-02 13:32:33 +08:00
2026-02-23 14:45:35 +08:00
})
2026-02-26 16:55:25 +08:00
const getUserInfo = async () => {
const res = await GetUserInfo()
if (res) {
state.value.userInfo = { ...res }
} else {
state.value.userInfo = {}
}
}
2026-02-23 14:45:35 +08:00
// actions
const setUserInfo = (data: any) => {
state.value.userInfo = data
}
const setToken = (data: string) => {
state.value.token = data
// setLocal(data, 'token')
}
2026-02-26 16:55:25 +08:00
const logOut = async (isApi: boolean = true) => {
2026-02-23 14:45:35 +08:00
// 处理退出登录的一些逻辑
2026-02-26 16:55:25 +08:00
if (isApi) await Logout()
2026-02-23 14:45:35 +08:00
state.value.token = ''
state.value.userInfo = {}
// removeLocal('token')
// MyEvent.emit('clear-generate-state')
// MyEvent.emit('clear-client-state')
// MyEvent.emit('clearAllCache')
router.push({ name: 'login' })
return ""
}
return {
state,
getUserInfo,
setToken,
setUserInfo,
logOut
}
2026-02-02 13:32:33 +08:00
})