menu.js 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. import { getMenuData } from '@/Project/services/platformMenu';
  2. import { queryCurrentV2 } from '@/Project/services/user';
  3. const filterWaterMenuData = (menuData) => {
  4. if (!menuData) {
  5. return [];
  6. }
  7. var arr = [];
  8. menuData.forEach((item) => {
  9. if (item.Type != 1) return;
  10. arr.push(item);
  11. if (item.children) {
  12. let newChildren = filterWaterMenuData(item.children);
  13. item.children = newChildren.length == 0 ? null : newChildren;
  14. }
  15. });
  16. return arr;
  17. };
  18. export default {
  19. namespace: 'menu',
  20. state: {},
  21. effects: {
  22. *getPlatformMenu({ callback, payload }, { put, call }) {
  23. const allMenu = yield call(getMenuData, payload);
  24. const response = yield call(queryCurrentV2);
  25. let permission = {};
  26. if (response && allMenu) {
  27. for (let i = 0; i < response?.data?.Permissions?.length; i++) {
  28. let item = response.data.Permissions[i];
  29. if (!item.Menus || typeof item.Menus != 'object') return;
  30. permission = {
  31. ...permission,
  32. ...item.Menus,
  33. };
  34. }
  35. let menu = allMenu.data?.list.find((item) => item.MenuType == 0) || {};
  36. menu.children = filterWaterMenuData(menu.children);
  37. callback?.(menu, permission);
  38. }
  39. },
  40. },
  41. reducers: {},
  42. };