getAuth.js 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. /*
  2. * @Author: your name
  3. * @Date: 2024-05-17 16:09:03
  4. * @LastEditTime: 2024-05-18 18:40:13
  5. * @LastEditors: bogon
  6. * @Description: In User Settings Edit
  7. * @FilePath: /performance-test/src/utils/getAuth.js
  8. */
  9. import { orgList } from "@/views/home/components/mockData";
  10. //返回可动态添加的路由
  11. export const getAuthRouterFn = (list) => {
  12. // 将list 转成一维数组,按钮级别权限拿到 返回为[]格式
  13. const { result, anthBtnList } = flattenTree(list);
  14. const arr = filterTreeByPermissions(result, orgList);
  15. return { authRouterList: arr, anthBtnList };
  16. };
  17. const flattenTree = (tree) => {
  18. let result = [];
  19. let anthBtnList = [];
  20. const flattenRecursive = (nodes) => {
  21. nodes.forEach((node) => {
  22. result.push(node);
  23. if (node.children && node.children.length > 0) {
  24. flattenRecursive(node.children);
  25. }
  26. if (node.permissionDepth === 2) {
  27. anthBtnList.push(node);
  28. }
  29. });
  30. };
  31. flattenRecursive(tree);
  32. return { result, anthBtnList };
  33. };
  34. const filterTreeByPermissions = (permissions, tree) => {
  35. const permissionSet = new Set(permissions.map((item) => item.permissionName));
  36. const filterTreeRecursive = (nodes) => {
  37. return nodes.reduce((filteredNodes, node) => {
  38. const newNode = { ...node };
  39. if (newNode.children && newNode.children.length > 0) {
  40. newNode.children = filterTreeRecursive(newNode.children);
  41. }
  42. if (
  43. permissionSet.has(newNode.name) ||
  44. (newNode.children && newNode.children.length > 0)
  45. ) {
  46. filteredNodes.push(newNode);
  47. }
  48. return filteredNodes;
  49. }, []);
  50. };
  51. return filterTreeRecursive(tree);
  52. };