import { defineStore } from 'pinia' import { ref } from 'vue' import { login as loginApi } from '@/api/admin' export const useAdminStore = defineStore('admin', () => { const token = ref(localStorage.getItem('admin_token')) const userInfo = ref(JSON.parse(localStorage.getItem('admin_userInfo') || 'null')) const setToken = (newToken: string) => { token.value = newToken localStorage.setItem('admin_token', newToken) } const setUserInfo = (info: any) => { userInfo.value = info localStorage.setItem('admin_userInfo', JSON.stringify(info)) } const clearToken = () => { token.value = null localStorage.removeItem('admin_token') } const clearUserInfo = () => { userInfo.value = null localStorage.removeItem('admin_userInfo') } const login = async (username: string, password: string) => { try { const response = await loginApi(username, password) const data = response.data if (data.success && data.data) { setToken(data.data.token) setUserInfo(data.data.user) return { success: true, message: data.message || '登录成功' } } return { success: false, message: data.message || '登录失败' } } catch (error: any) { console.error('登录失败:', error) return { success: false, message: error.response?.data?.message || '网络错误,请稍后重试' } } } const logout = () => { clearToken() clearUserInfo() } return { token, userInfo, setToken, setUserInfo, clearToken, clearUserInfo, login, logout } })