| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152 |
- /**
- * 权限控制指令
- * 用法: 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';
- }
- }
|