// 权限控制 const PermissionDirective = { // 数组, 权限 code 和 布尔值, updated(el, binding, vnode ) { const routePath = vnode.ctx.appContext.config.globalProperties.$route.path; const userInfo = JSON.parse(sessionStorage.getItem('userInfo') || ''); const authorityCodes = (userInfo?.userInfo?.functionList || []).map(({ code }) => code); const permissions = binding.value; const hasPermission = (binding.value || []).filter(item => typeof item !== 'boolean'); if (!Array.isArray(permissions)) { console.error('权限必须以数组形式提供'); return; } if (permissions.some((element) => element === true)) { return; } if (!hasPermission.every(permission => authorityCodes.includes(permission))) { el.parentNode && el.parentNode.removeChild(el); } }, }; // 导出的自定义指令 const customize = [ { key: 'permission', directive: PermissionDirective, name: '角色权限' } ] export default customize;