123456789101112131415161718192021222324252627282930 |
- // 权限控制
- 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;
|