getMenu.js 2.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697
  1. /*
  2. * @Author: your name
  3. * @Date: 2024-05-21 14:21:20
  4. * @LastEditTime: 2024-06-12 10:23:19
  5. * @LastEditors: bogon
  6. * @Description: In User Settings Edit
  7. * @FilePath: /performance-test/src/utils/getMenu.js
  8. */
  9. //角色菜单权限筛选
  10. export const checkListFn = (data) => {
  11. let list = [];
  12. recursiveFind(data);
  13. function recursiveFind(data) {
  14. data.forEach((item) => {
  15. // if (item.permissionType === 1 && item.checked === 1) {
  16. if (item.checked === 1) {
  17. list.push(item.permissionId);
  18. }
  19. if (item.children && item.children.length > 0) {
  20. recursiveFind(item.children); // 递归遍历子节点
  21. }
  22. });
  23. }
  24. return list;
  25. };
  26. // data 是一个树形数组结构数据,checkIdList是一个一维数组
  27. // 需求:递归循环data,data.permissionId在checkIdList这个数组中,父级节点和祖先节点的permissionId也需要push到新的一维数组。
  28. //角色菜单权限筛选
  29. export const getcheckListFn = (checkIdList, data) => {
  30. let list = [];
  31. function recursiveFind(node, ancestors = []) {
  32. if (checkIdList.includes(node.permissionId)) {
  33. // 将当前节点的 permissionId 加入到列表中
  34. list.push(node.permissionId);
  35. // 将当前节点的祖先节点的 permissionId 加入到列表中
  36. ancestors.forEach((ancestor) => {
  37. list.push(ancestor.permissionId);
  38. });
  39. }
  40. // 递归遍历子节点
  41. if (node.children && node.children.length > 0) {
  42. node.children.forEach((child) => {
  43. recursiveFind(child, [...ancestors, node]);
  44. });
  45. }
  46. }
  47. // 从根节点开始递归遍历
  48. data.forEach((root) => {
  49. recursiveFind(root);
  50. });
  51. return list;
  52. };
  53. //角色数据权限筛选
  54. export const checkDataAuthTreeFn = (data) => {
  55. let list = [];
  56. recursiveFind(data);
  57. function recursiveFind(data) {
  58. data.forEach((item) => {
  59. if (item.checked === 1 && item.children.length === 0) {
  60. list.push(item.codeNumber);
  61. }
  62. if (item.children && item.children.length > 0) {
  63. recursiveFind(item.children); // 递归遍历子节点
  64. }
  65. });
  66. }
  67. return list;
  68. };
  69. //角色数据权限筛选
  70. export const getCheckDataAuthTreeFn = (checkIdList, data) => {
  71. let list = [];
  72. function recursiveFind(node, ancestors = []) {
  73. if (checkIdList.includes(node.codeNumber)) {
  74. // 将当前节点的 codeNumber 加入到列表中
  75. list.push({ codeNumber: node.codeNumber, codeType: node.type });
  76. // 将当前节点的祖先节点的
  77. ancestors.forEach((ancestor) => {
  78. list.push({ codeNumber: ancestor.codeNumber, codeType: ancestor.type });
  79. }); //codeNumber 加入到列表中
  80. }
  81. // 递归遍历子节点
  82. if (node.children && node.children.length > 0) {
  83. node.children.forEach((child) => {
  84. recursiveFind(child, [...ancestors, node]);
  85. });
  86. }
  87. }
  88. // 从根节点开始递归遍历
  89. data.forEach((root) => {
  90. recursiveFind(root);
  91. });
  92. return list;
  93. };