You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

112 lines
3.1 KiB

  1. // 菜单树过滤 (展示的? )
  2. export function filterMenu(menuList) {
  3. return menuList
  4. // 过滤不是4级的 123 为菜单
  5. .filter(menu => menu.menuType !== 4)
  6. .map(menu => ({
  7. ...menu,
  8. children: menu.children ? filterMenu(menu.children) : []
  9. }))
  10. .sort((a, b) => a.id - b.id); // 按 id 升序
  11. }
  12. // 过滤 只获得第三级的菜单
  13. export function filterFirstMenu(menuList) {
  14. return menuList
  15. .map(menu => ({
  16. ...menu,
  17. children: menu.children ? filterMenu(menu.children) : []
  18. }))
  19. .sort((a, b) => a.id - b.id); // 按 id 升序
  20. }
  21. // 辅助函数:查找第一个可访问的菜单项
  22. export function findFirstThirdLevelMenu(menuList) {
  23. if (!menuList || menuList.length === 0) return null;
  24. for (const menu of menuList) {
  25. // 先检查当前菜单是否为三级菜单
  26. if (menu.menuType === 3) {
  27. return menu;
  28. }
  29. // 若不是,递归查找其子菜单(无论当前菜单是几级,都深入子菜单找三级)
  30. const childResult = findFirstThirdLevelMenu(menu.children);
  31. if (childResult) {
  32. return childResult;
  33. }
  34. }
  35. return null;
  36. }
  37. // 路由映射(左侧菜单栏)
  38. export const getRoutePath = (menu) => {
  39. // 路由映射表:key为接口menuName,value为对应路由路径
  40. const routeMap = {
  41. '工作台': '/workspace',
  42. '工作台展示': '/workspace',
  43. '财务审核': '/audit',
  44. '金币审核': '/audit',
  45. '金豆审核': '/beanAudit',
  46. '汇率管理': '/rate',
  47. '充值管理': '/coinRecharge',
  48. '金币充值': '/coinRecharge',
  49. '金豆充值': '/beanRecharge',
  50. '消耗管理': '/coinConsume',
  51. '金币消耗': '/coinConsume',
  52. '金豆消耗': '/beanConsume',
  53. '退款管理': '/coinRefund',
  54. '金币退款': '/coinRefund',
  55. // '金豆退款': '/beanRefund',
  56. '权限管理': '/permissions',
  57. '客户账户明细': '/usergold',
  58. '金币客户账户明细': '/usergold',
  59. '金豆客户账户明细': '/userbean',
  60. };
  61. // 未匹配的菜单默认使用id作为路由(可根据实际需求调整)
  62. return routeMap[menu.menuName] || '/noPermission'
  63. }
  64. // 路由映射(获取第一个菜单)
  65. export const getFirstRoutePath = (menu) => {
  66. // 路由映射表:key为接口menuName,value为对应路由路径
  67. const routeMap = {
  68. '工作台展示': '/workspace',
  69. '金币审核': '/audit',
  70. '金豆审核': '/beanAudit',
  71. '汇率管理': '/rate',
  72. '金币充值': '/coinRecharge',
  73. '金豆充值': '/beanRecharge',
  74. '金币消耗': '/coinConsume',
  75. '金豆消耗': '/beanConsume',
  76. '金币退款': '/coinRefund',
  77. // '金豆退款': '/beanRefund',
  78. '权限管理': '/permissions',
  79. '金币客户账户明细': '/usergold',
  80. '金豆客户账户明细': '/userbean',
  81. };
  82. // 未匹配的菜单默认使用id作为路由(可根据实际需求调整)
  83. return routeMap[menu.menuName] || '/noPermission'
  84. }