import type { App } from 'vue' import { CACHE_KEY } from '@/hooks/web/useCache' import cache from '@/plugins/cache' const { t } = useI18n() // 国际化 export function hasPermi(app: App) { app.directive('hasPermi', (el, binding) => { const { value } = binding const all_permission = '*:*:*' const permissions = cache.local.get(CACHE_KEY.USER)?.permissions || [] if (value && value instanceof Array && value.length > 0) { const permissionFlag = value const hasPermissions = permissions.some((permission: string) => { return all_permission === permission || permissionFlag.includes(permission) }) if (!hasPermissions) { el.parentNode && el.parentNode.removeChild(el) } } else { throw new Error(t('permission.hasPermission')) } }) }