directive.js 860 B

12345678910111213141516171819202122232425262728293031323334
  1. import Vue from 'vue';
  2. const rolesList = []
  3. const permission = (el, binding) => {
  4. const roles = getRoles();
  5. if (!roles) {
  6. return;
  7. }
  8. let userPermissionList = Array.isArray(binding.value) ? binding.value : [binding.value];
  9. // 当前用户的权限列表
  10. if (!userPermissionList.some(e => roles.includes(e))) {
  11. el.parentNode && el.parentNode.removeChild(el);
  12. }
  13. }
  14. const getRoles = ()=>{
  15. let _roles = uni.getStorageSync('jurisdiction');
  16. return getUserAllRoles(_roles)
  17. }
  18. const getUserAllRoles = (item) => {
  19. console.log(item)
  20. for(let i = 0;i<item.length;i++){
  21. rolesList.push(item[i].name)
  22. console.log('用户权限',rolesList)
  23. if(item[i].children&&item[i].children.length>0){
  24. getUserAllRoles(item[i].children)
  25. }
  26. }
  27. return rolesList;
  28. }
  29. Vue.directive('hasPermission', {
  30. inserted: permission,
  31. componentUpdated: permission
  32. })