/** * 权限控制指令 * 用法: v-has-permission="'增删成员'" * 如果用户有该权限则显示元素,否则隐藏 */ export default { install(app) { app.directive('has-permission', { mounted(el, binding) { checkPermission(el, binding); }, updated(el, binding) { checkPermission(el, binding); } }); } }; function checkPermission(el, binding) { // 获取权限值,支持字符串或数组 const permission = binding.value; // 从 localStorage 获取用户信息 const userInfoStr = localStorage.getItem('localUserInfo'); if (!userInfoStr) { el.style.display = 'none'; return; } try { const userInfo = JSON.parse(userInfoStr); const permissions = userInfo.agriculturalPermissions || []; // 如果权限是字符串,检查是否包含 if (typeof permission === 'string') { const hasPermission = permissions.includes(permission); el.style.display = hasPermission ? '' : 'none'; } // 如果权限是数组,检查是否包含任一权限 else if (Array.isArray(permission)) { const hasPermission = permission.some(p => permissions.includes(p)); el.style.display = hasPermission ? '' : 'none'; } // 如果没有传入权限值,默认隐藏 else { el.style.display = 'none'; } } catch (error) { console.error('解析用户信息失败:', error); el.style.display = 'none'; } }