directive.js 1.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  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. debugger
  16. let _roles = uni.getStorageSync('jurisdiction');
  17. let list = uni.getStorageSync('rolesList');
  18. if(list&&list.length > 0){
  19. return list
  20. }
  21. else{
  22. list = getUserAllRoles(_roles);
  23. uni.setStorageSync("rolesList", list)
  24. return list
  25. }
  26. }
  27. const getUserAllRoles = (item) => {
  28. console.log(item)
  29. for(let i = 0;i<item.length;i++){
  30. rolesList.push(item[i].name)
  31. console.log('用户权限',rolesList)
  32. if(item[i].children&&item[i].children.length>0){
  33. getUserAllRoles(item[i].children)
  34. }
  35. }
  36. return rolesList;
  37. }
  38. Vue.directive('hasPermission', {
  39. inserted: permission,
  40. componentUpdated: permission
  41. })