初始化项目

This commit is contained in:
andy committed 2026-01-23 17:20:52 +08:00
commit 60c416e553
79 files changed
+5609

No files matched your search

+57
View File
@@ -0,0 +1,57 @@
import { defineStore } from 'pinia'
import { ref, computed } from 'vue'
import { login as loginApi, getUserInfo, logout as logoutApi } from '@/api/auth'
import type { LoginRequest, User } from '@/types'
export const useUserStore = defineStore(
'user',
() => {
const token = ref<string>(localStorage.getItem('token') || '')
const userInfo = ref<User | null>(null)
const isLoggedIn = computed(() => !!token.value)
const isAdmin = computed(() => userInfo.value?.role === 0)
const isDealer = computed(() => userInfo.value?.role === 1)
// 登录
const login = async (loginForm: LoginRequest) => {
const res = await loginApi(loginForm)
token.value = res.token
localStorage.setItem('token', res.token)
await fetchUserInfo()
}
// 获取用户信息
const fetchUserInfo = async () => {
if (token.value) {
try {
userInfo.value = await getUserInfo()
} catch (error) {
console.error('获取用户信息失败', error)
logout()
}
}
}
// 退出登录
const logout = () => {
token.value = ''
userInfo.value = null
localStorage.removeItem('token')
}
return {
token,
userInfo,
isLoggedIn,
isAdmin,
isDealer,
login,
fetchUserInfo,
logout
}
},
{
persist: true
}
)