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.

107 lines
5.6 KiB

9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
1 week ago
1 week ago
1 week ago
  1. // 菜单树过滤 (展示的? )
  2. export function filterMenu(menuList) {
  3. return menuList
  4. // 过滤不是4级的 123 为菜单
  5. .filter(menu => menu.menuType === 1 || menu.menuType === 2 || menu.menuType === 3)
  6. .map(menu => ({
  7. ...menu,
  8. children: menu.children ? filterMenu(menu.children) : []
  9. }))
  10. // 按 id 升序
  11. // .sort((a, b) => a.id - b.id);
  12. }
  13. // 过滤 只获得第三级的菜单
  14. export function filterFirstMenu(menuList) {
  15. return menuList
  16. .map(menu => ({
  17. ...menu,
  18. children: menu.children ? filterMenu(menu.children) : []
  19. }))
  20. .sort((a, b) => a.id - b.id); // 按 id 升序
  21. }
  22. // 辅助函数:查找第一个可访问的菜单项
  23. export function findFirstThirdLevelMenu(menuList) {
  24. if (!menuList || menuList.length === 0) return null;
  25. for (const menu of menuList) {
  26. // 先检查当前菜单是否为三级菜单
  27. if (menu.menuType === 1) {
  28. return menu;
  29. }
  30. // 若不是,递归查找其子菜单(无论当前菜单是几级,都深入子菜单找三级)
  31. const childResult = findFirstThirdLevelMenu(menu.children);
  32. if (childResult) {
  33. return childResult;
  34. }
  35. }
  36. return null;
  37. }
  38. /**
  39. * 根据菜单信息获取对应的路由路径
  40. * @param {Object} menu - 菜单对象必须包含 id 属性对应接口返回的 menuName 数值标识
  41. * @returns {string} 匹配的路由路径无匹配时返回 '/noPermission'无权限页面
  42. */
  43. export const getRoutePath = (menu) => {
  44. // 路由映射表:
  45. // key: 接口返回的菜单唯一标识(menuName 对应的数值)
  46. // value: 前端对应的路由路径(用于页面跳转)
  47. const routeMap = {
  48. "2": "/workbench", // 工作台
  49. "3": "/goldManage", // 金币管理
  50. "58": "/moneyManage", // 现金管理
  51. "119": "/activityManage", // 活动管理
  52. "124": "/channelManage", // 频道管理
  53. "146": "/language", // 多语言配置
  54. "5": "/audit", // 金币审核
  55. "20": "/beanAudit", // 金豆审核
  56. "27": "/rate", // 汇率管理
  57. "31": "/coinRecharge", // 金币充值
  58. "34": "/beanRecharge", // 金豆充值
  59. "39": "/coinConsume", // 金币消耗
  60. "42": "/beanConsume", // 金豆消耗
  61. "47": "/coinRefund", // 退款管理
  62. "55": "/history", // 历史数据查询(父菜单)
  63. "56": "/history/newHistory", // 新版金币查询(历史数据查询子菜单)
  64. "57": "/history/oldHistory", // 旧版金币查询(历史数据查询子菜单)
  65. "128": "/permissions", // 权限管理(父菜单)
  66. "129": "/permissions/userPermission", // 用户管理(权限管理子菜单)
  67. "136": "/permissions/rolePermission", // 角色管理(权限管理子菜单)
  68. "51": "/usergold", // 金币客户账户明细
  69. "54": "/userbean", // 金豆客户账户明细
  70. "59": "/moneyManage/receiveDetail", // 收款明细(现金管理子菜单)
  71. "60": "/moneyManage/receiveDetail/receiveService", // 收款-收款提交(收款明细子菜单)
  72. "67": "/moneyManage/receiveDetail/receiveFinance", // 收款-收款处理(收款明细子菜单)
  73. "79": "/moneyManage/receiveDetail/receiveManager", // 收款-收款处理(负责人)(收款明细子菜单)
  74. // "91": "/moneyManage/receiveDetail/receiveHeader", // 收款-总部财务(收款明细子菜单) 移除
  75. "98": "/moneyManage/refundDetail", // 退款明细(现金管理子菜单)
  76. "99": "/moneyManage/refundDetail/refundService", // 退款-退款提交(退款明细子菜单)
  77. "103": "/moneyManage/refundDetail/refundFinance", // 退款-退款审批(退款明细子菜单)
  78. "107": "/moneyManage/refundDetail/refundCharge", // 退款-退款审批(负责人)(退款明细子菜单)
  79. "111": "/moneyManage/refundDetail/refundHeader", // 退款-退款审批(总部财务)(退款明细子菜单)
  80. "115": "/moneyManage/executor", // 退款执行(现金管理子菜单)
  81. "147": "/moneyManage/financialAccount", // 财务核算(现金管理子菜单)
  82. "148": "/moneyManage/financialAccount/cashFlow", // 资金流水账(财务核算子菜单)
  83. "149": "/moneyManage/financialAccount/performanceAttribution", // 业绩归属账(财务核算子菜单)
  84. "125": "/channelManage/reward", // 打赏管理(频道管理子菜单)
  85. "126": "/channelManage/fans", // 铁粉管理(频道管理子菜单)
  86. "127": "/channelManage/cart", // 小黄车管理(频道管理子菜单)
  87. "150": "/walletManage", // 钱包管理
  88. "151": "/walletManage/walletBalance", // 钱包余额
  89. "152": "/walletManage/walletDetail", // 钱包明细
  90. "153": "/walletManage/walletDetail/hkWallet", // 香港钱包
  91. "154": "/walletManage/walletDetail/sgWalletHC", // 新加坡HC钱包
  92. "156": "/walletManage/walletDetail/sgWalletCM", // 新加坡CM钱包
  93. "155": "/walletManage/walletDetail/myWallet", // 马来西亚钱包
  94. "157": "/walletManage/walletDetail/caWallet", // 加拿大钱包
  95. "158": "/walletManage/walletDetail/thWalletHS", // 泰国HS钱包
  96. "159": "/walletManage/walletDetail/thWalletHA", // 泰国HA钱包
  97. "160": "/walletManage/walletDetail/vnWallet", // 越南钱包
  98. "161": "/walletManage/walletDetail/bjWallet" // 北京钱包
  99. };
  100. // 从映射表中匹配路由,无匹配时返回无权限页面路径
  101. return routeMap[menu.id] || '/noPermission';
  102. }