import { defineStore } from 'pinia' import { ref } from 'vue' import { request } from '@/api/request' export const usePermissionStore = defineStore('permission', () => { const permissions = ref([]) const loaded = ref(false) // 获取用户权限列表 async function fetchPermissions(userId: number) { try { const res = await request.get(`/sys/menu/permissions/${userId}`) permissions.value = res.data || [] loaded.value = true return permissions.value } catch (error) { console.error('获取权限失败:', error) return [] } } // 检查是否有权限 function hasPermission(permission: string | string[]): boolean { if (!permission) return true if (permissions.value.length === 0) return false if (Array.isArray(permission)) { return permission.some(p => permissions.value.includes(p)) } return permissions.value.includes(permission) } // 清空权限 function clearPermissions() { permissions.value = [] loaded.value = false } return { permissions, loaded, fetchPermissions, hasPermission, clearPermissions } })