/** * 权限检查 Composable * 用于在模板或脚本中检查用户权限 */ import { computed } from 'vue' import { useUserStore } from '@/store/modules/user' export function usePermission() { const userStore = useUserStore() // 权限列表 const permissions = computed(() => userStore.permissions) // 按钮权限列表 const buttons = computed(() => userStore.buttons) // 是否是超级管理员 const isSuperAdmin = computed(() => userStore.isSuperAdmin) // 是否是超级管理员或平台用户 const isPlatformAccount = computed(() => [1, 2].includes(Number(userStore.info.user_type))) /** * 检查是否有指定权限 * @param permission 权限码 * @returns 是否有权限 */ const hasPermission = (permission: string): boolean => { return userStore.hasPermission(permission) } /** * 检查是否有任意一个权限 * @param perms 权限码数组 * @returns 是否有权限 */ const hasAnyPermission = (perms: string[]): boolean => { return userStore.hasAnyPermission(perms) } /** * 检查是否有所有权限 * @param perms 权限码数组 * @returns 是否有权限 */ const hasAllPermissions = (perms: string[]): boolean => { return userStore.hasAllPermissions(perms) } /** * 检查是否有菜单权限 * @param menuCode 菜单码 * @returns 是否有权限 */ const hasMenuPermission = (menuCode: string): boolean => { return hasPermission(`menu:${menuCode}`) } /** * 检查是否有按钮权限(从 permissions 数组检查) * @param buttonCode 按钮码 * @returns 是否有权限 */ const hasButtonPermission = (buttonCode: string): boolean => { return hasPermission(buttonCode) } /** * 检查是否有按钮权限(从 buttons 数组检查) * @param buttonCode 按钮权限码 * @returns 是否有权限 */ const hasButton = (buttonCode: string): boolean => { return userStore.hasButton(buttonCode) } return { permissions, buttons, isSuperAdmin, isPlatformAccount, hasPermission, hasAnyPermission, hasAllPermissions, hasMenuPermission, hasButtonPermission, hasButton } }