Files
hospital_performance/frontend/src/stores/user.js
2026-02-28 15:02:08 +08:00

49 lines
1.0 KiB
JavaScript

import { defineStore } from 'pinia'
import { ref } from 'vue'
import { login as loginApi, getCurrentUser } from '@/api/auth'
import router from '@/router'
export const useUserStore = defineStore('user', () => {
const token = ref(localStorage.getItem('token') || '')
const userInfo = ref(null)
// 登录
async function login(username, password) {
try {
const res = await loginApi({ username, password })
token.value = res.access_token
localStorage.setItem('token', res.access_token)
return true
} catch (error) {
return false
}
}
// 获取用户信息
async function getUserInfo() {
try {
const res = await getCurrentUser()
userInfo.value = res.data
return res.data
} catch (error) {
return null
}
}
// 登出
function logout() {
token.value = ''
userInfo.value = null
localStorage.removeItem('token')
router.push('/login')
}
return {
token,
userInfo,
login,
getUserInfo,
logout
}
})