| 123456789101112131415161718192021222324252627282930313233343536373839 |
- import { Local, Session } from '@/utils/storage';
- import { CACHE_KEY } from '@/constants/index';
- /**
- * 权限校验指令
- * 使用方法:v-hasPermi="['system:user:add']"
- */
- export default {
- mounted(el: HTMLElement, binding: any) {
- const { value } = binding;
- // 兼容 Local 存储与 Session 存储,防止因不同分支的存储容器不同而导致读空
- const cacheData = Local.get(CACHE_KEY.PERMS) || Session.get(CACHE_KEY.PERMS);
- // 兼容直接数组形式 [...] 与 对象包裹形式 { data: [...] } 或 { value: [...] }
- let perms: string[] = [];
- if (Array.isArray(cacheData)) {
- perms = cacheData;
- } else if (cacheData && typeof cacheData === 'object') {
- if (Array.isArray(cacheData.data)) {
- perms = cacheData.data;
- } else if (Array.isArray(cacheData.value)) {
- perms = cacheData.value;
- }
- }
- if (value && value instanceof Array && value.length > 0) {
- const hasPermissions = perms.some(permission => {
- return (value as string[]).includes(permission);
- });
- if (!hasPermissions) {
- // 如果没有权限,则移除元素
- el.parentNode && el.parentNode.removeChild(el);
- }
- } else {
- console.error(`[v-hasPermi]: 请设置操作权限标签值, 如 v-hasPermi="['system:user:add']"`);
- }
- }
- };
|