import { defineStore } from 'pinia' // 管理员认证状态管理store export const useAuthStore = defineStore('auth', { state: () => ({ token: localStorage.getItem('token') || '', user: JSON.parse(localStorage.getItem('user') || 'null') }), getters: { // 判断是否已登录 isAuthenticated: (state) => !!state.token && !!state.user, // 获取用户名 username: (state) => state.user?.username || '', // 获取用户角色 userRole: (state) => state.user?.role || '' }, actions: { // 登录 login(loginData,callback) { const { accessToken} = loginData this.token = accessToken this.user = loginData // 持久化存储 localStorage.setItem('token', accessToken) localStorage.setItem('user', JSON.stringify(this.user)) callback&&callback(); }, // 登出 logout() { this.token = '' this.user = null // 清除持久化存储 localStorage.removeItem('token') localStorage.removeItem('user') localStorage.removeItem('admin-remember-me') }, // 检查认证状态 checkAuth() { const storedToken = localStorage.getItem('token') const storedUser = localStorage.getItem('user') if (storedToken && storedUser) { this.token = storedToken this.user = JSON.parse(storedUser) return true } return false }, // 检查权限 hasPermission(requiredRole) { if (!this.user) return false const roleHierarchy = { 'admin': 3, 'manager': 2, 'user': 1 } const userLevel = roleHierarchy[this.user.role] || 0 const requiredLevel = roleHierarchy[requiredRole] || 0 return userLevel >= requiredLevel } } }) // 全局状态管理store export const useAppStore = defineStore('app', { state: () => ({ // 应用主题设置 theme: 'light', // 国际化语言设置 locale: 'zh-CN', // 加载状态 isLoading: false, // 侧边栏展开状态(响应式适配用) sidebarCollapsed: false, // 移动端菜单显示状态 mobileMenuVisible: false }), getters: { // 获取当前主题 currentTheme: (state) => state.theme, // 获取当前语言 currentLocale: (state) => state.locale, // 判断是否是深色主题 isDarkTheme: (state) => state.theme === 'dark', // 判断是否是浅色主题 isLightTheme: (state) => state.theme === 'light', // 获取加载状态(兼容性) loading: (state) => state.isLoading }, actions: { // 切换主题 toggleTheme() { this.theme = this.theme === 'light' ? 'dark' : 'light' // 保存到localStorage localStorage.setItem('theme', this.theme) // 应用到document document.documentElement.setAttribute('data-theme', this.theme) }, // 设置主题 setTheme(theme) { this.theme = theme localStorage.setItem('theme', theme) document.documentElement.setAttribute('data-theme', theme) }, // 切换语言 toggleLocale() { this.locale = this.locale === 'zh-CN' ? 'en-US' : 'zh-CN' localStorage.setItem('locale', this.locale) // 不再触发事件,由Vue的响应式系统自动通知 }, // 设置语言 setLocale(locale) { this.locale = locale localStorage.setItem('locale', locale) // 不再触发事件,由Vue的响应式系统自动通知 }, // 设置加载状态 setLoading(loading) { this.isLoading = loading }, // 切换侧边栏状态 toggleSidebar() { this.sidebarCollapsed = !this.sidebarCollapsed }, // 设置侧边栏状态 setSidebarCollapsed(collapsed) { this.sidebarCollapsed = collapsed }, // 切换移动端菜单显示状态 toggleMobileMenu() { this.mobileMenuVisible = !this.mobileMenuVisible }, // 设置移动端菜单显示状态 setMobileMenuVisible(visible) { this.mobileMenuVisible = visible }, // 初始化应用状态 initApp() { // 从localStorage读取保存的主题和语言设置 const savedTheme = localStorage.getItem('theme') || 'light' const savedLocale = localStorage.getItem('locale') || 'zh-CN' this.setTheme(savedTheme) this.setLocale(savedLocale) // 初始化移动端状态 const isMobile = window.innerWidth < 768 this.sidebarCollapsed = isMobile this.mobileMenuVisible = false } } }) // 用户状态管理store(可根据需要扩展) export const useUserStore = defineStore('user', { state: () => ({ userInfo: null, isLoggedIn: false, token: null }), getters: { // 获取用户信息 user: (state) => state.userInfo, // 判断是否已登录 loggedIn: (state) => state.isLoggedIn }, actions: { // 设置用户信息 setUser(userInfo) { this.userInfo = userInfo this.isLoggedIn = true }, // 清除用户信息 clearUser() { this.userInfo = null this.isLoggedIn = false this.token = null localStorage.removeItem('token') }, // 设置token setToken(token) { this.token = token localStorage.setItem('token', token) }, // 从localStorage初始化用户状态 initUser() { const token = localStorage.getItem('token') if (token) { this.token = token // 这里可以添加token验证逻辑 this.isLoggedIn = true } } } }) // 默认导出,用于兼容 useStore() 调用 export default useAppStore