routerConfig.ts 14 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346
  1. /**头部路由一级菜单点击逻辑 */
  2. function headrRouter(initialState: any, history: any) {
  3. let ok = true
  4. let u = navigator?.userAgent
  5. let isPhone = !!u.match(/AppleWebKit.*Mobile.*/) || u?.indexOf('iPad') > -1
  6. //登录时指向/辅助处理看当前用户的一级菜单有哪些,找到第一个符合的跳转
  7. initialState?.menu?.data.forEach((item: { roles: string[], path: string, routes: { path: string, routes: any[] }[] }) => {
  8. if (ok) {
  9. ok = false
  10. let path = item?.routes?.length > 0 ? item?.routes[0]?.routes?.length > 0 ? item?.routes[0]?.routes[0]?.path ? item?.routes[0]?.routes[0]?.path : item?.routes[0].path : item?.routes[0].path : item?.routes[0].path
  11. if (history?.location?.pathname === '/') {
  12. history.push(path)
  13. }
  14. }
  15. })
  16. if (history?.location?.pathname === '/gameDataStatistics') { //当切换一级菜单的辅助跳转
  17. history?.goBack()
  18. initialState?.menu?.data.forEach((item: { roles: string[], path: string, routes: { path: string, routes: any[] }[] }) => {
  19. if (item?.routes?.some((i: { path: string }) => i.path?.includes('/gameDataStatistics'))) {
  20. let path = item?.routes?.length > 0 ? (item?.routes[0]?.routes?.length > 0 && item?.routes[0]?.routes[0]?.path) ? item?.routes[0]?.routes[0]?.path : item?.routes[0].path : item?.routes[0].path
  21. // history.push(path)
  22. isPhone ? history.push(path) : window.open(location.origin + '/#' + path)
  23. // window.open(location.origin+'/#'+path)
  24. }
  25. })
  26. // localStorage.setItem('bg', 'light')
  27. }
  28. }
  29. //返回按钮路由
  30. function btnFun(items: any) {
  31. return items?.childrenBtn?.map((btn: any,) => {
  32. return { name: btn.meta.title, key: btn?.menuId }
  33. })
  34. }
  35. //返回子路由
  36. function routeFun(items: any) {
  37. return items.children.map((route: any) => {//循环重组
  38. if (route?.children?.length > 0) {
  39. let arr = routeFun(route)
  40. return { path: route.path, name: route.meta.title, component: route.component, routes: arr, icon: route.meta.icon, key: route?.menuId }
  41. }
  42. if (route?.childrenBtn?.length > 0) {
  43. let arr = btnFun(route)
  44. return { path: route.path, name: route.meta.title, component: route.component, routes: arr, icon: route.meta.icon, key: route?.menuId }
  45. }
  46. return { path: route.path, name: route.meta.title, component: route.component, icon: items.meta.icon, key: route?.menuId }
  47. })
  48. }
  49. /**获取线上菜单并重组路由格式和权限*/
  50. function getMyMenu(code: any, data: any,) {
  51. let newData: any = []
  52. // let roles = userInfo?.roles.map((role: any) => role.roleKey)//权限从个人信息中取,以防路由列表中有错误
  53. if (code === 200) {
  54. let new_data: any[] = []
  55. // 循环判断不为空的主菜单加入
  56. Object.keys(data).reverse().map((key) => {
  57. if (Array.isArray(data[key]) && data[key]?.length > 0) {
  58. new_data.push(data[key][0])
  59. }
  60. })
  61. // 处理顺序
  62. new_data = new_data.sort((a, b) => {
  63. let v1 = a.orderNum
  64. let v2 = b.orderNum
  65. return v1 - v2
  66. })
  67. new_data.forEach((items: any) => {
  68. if (items?.children?.length === 0) {//假如路由的子路由只有一个代表当前组件没有子路由,将children中的component组件路径给外层component
  69. newData.push({ path: items.children[0].path, name: items.meta.title, icon: items.meta.icon, component: items.children[0].component, key: items.menuId }) // roles: roles
  70. }
  71. if (items?.children?.length >= 0) {//假如路由的子路由个数大于1代表有子路由
  72. let arr: any[] = routeFun(items)
  73. newData.push({ path: items.path, name: items.meta.title, icon: items.meta.icon, routes: arr, key: items.menuId })//最后添加进routes , roles: roles
  74. }
  75. })
  76. }
  77. return newData
  78. }
  79. const gameDataStatistics = {
  80. path: '/gameDataStatistics',
  81. routes: [
  82. {
  83. path: '/gameDataStatistics/allSurvey',
  84. name: '整体概况',
  85. access: 'allSurvey',
  86. component: './gameDataStatistics/allSurvey',
  87. },
  88. {
  89. path: '/gameDataStatistics/rankingList',
  90. name: '排行榜',
  91. access: 'rankingList',
  92. routes: [
  93. {
  94. path: '/gameDataStatistics/rankingList/gamer',
  95. name: '玩家充值排行榜',
  96. access: 'gamer',
  97. component: './gameDataStatistics/rankingList/gamer',
  98. },
  99. {
  100. path: '/gameDataStatistics/rankingList/game',
  101. name: '游戏充值排行榜',
  102. access: 'game',
  103. component: './gameDataStatistics/rankingList/game',
  104. },
  105. {
  106. path: '/gameDataStatistics/rankingList/channel',
  107. name: '推广渠道充值排行榜',
  108. access: 'channel',
  109. component: './gameDataStatistics/rankingList/channel',
  110. },
  111. {
  112. path: '/gameDataStatistics/rankingList/account',
  113. name: '推广账号消耗排行榜',
  114. access: 'account',
  115. component: './gameDataStatistics/rankingList/account',
  116. }
  117. ]
  118. },
  119. {
  120. path: '/gameDataStatistics/roleOperate',
  121. name: '角色运营管理',
  122. access: 'roleOperate',
  123. routes: [
  124. {
  125. path: '/gameDataStatistics/roleOperate/roleRechargeRanking',
  126. name: '角色充值排行榜',
  127. access: 'roleRechargeRanking',
  128. component: './gameDataStatistics/roleOperate/roleRechargeRanking',
  129. },
  130. {
  131. path: '/gameDataStatistics/roleOperate/roleFightingRanking',
  132. name: '角色战力排行榜',
  133. access: 'roleFightingRanking',
  134. component: './gameDataStatistics/roleOperate/roleFightingRanking',
  135. },
  136. ]
  137. },
  138. {
  139. path: '/gameDataStatistics/extensionData',
  140. name: '推广数据',
  141. access: 'extensionData',
  142. routes: [
  143. {
  144. path: '/gameDataStatistics/extensionData/total',
  145. name: '推广总数据',
  146. access: 'total',
  147. component: './gameDataStatistics/extensionData/total',
  148. },
  149. {
  150. path: '/gameDataStatistics/extensionData/everyday',
  151. name: '推广每日数据',
  152. access: 'everyday',
  153. component: './gameDataStatistics/extensionData/everyday',
  154. },
  155. ]
  156. },
  157. {
  158. path: '/gameDataStatistics/adlist',
  159. name: '广告列表',
  160. access: 'adlist',
  161. routes: [
  162. {
  163. path: '/gameDataStatistics/adlist/monitor',
  164. name: '头条广告监控',
  165. access: 'monitor',
  166. component: './gameDataStatistics/adlist/monitor',
  167. },
  168. {
  169. path: '/gameDataStatistics/adlist/tencentMonitor',
  170. name: '腾讯广告监控',
  171. access: 'tencentMonitor',
  172. component: './gameDataStatistics/adlist/tencentMonitor',
  173. }
  174. ]
  175. },
  176. {
  177. path: '/gameDataStatistics/gameData',
  178. name: '游戏数据',
  179. access: 'gameData',
  180. routes: [
  181. {
  182. path: '/gameDataStatistics/gameData/total',
  183. name: '游戏总数据',
  184. access: 'total',
  185. component: './gameDataStatistics/gameData/total',
  186. },
  187. {
  188. path: '/gameDataStatistics/gameData/everyday',
  189. name: '游戏每日数据',
  190. access: 'everyday',
  191. component: './gameDataStatistics/gameData/everyday',
  192. },
  193. {
  194. path: '/gameDataStatistics/gameData/h5Recharge',
  195. name: 'H5游戏充值表',
  196. access: 'h5Recharge',
  197. component: './gameDataStatistics/gameData/h5Recharge',
  198. },
  199. {
  200. path: '/gameDataStatistics/gameData/flowingWater',
  201. name: '每日流水贡献',
  202. access: 'flowingWater',
  203. component: './gameDataStatistics/gameData/flowingWater',
  204. },
  205. {
  206. path: '/gameDataStatistics/gameData/ltv',
  207. name: 'LTV',
  208. access: 'ltv',
  209. component: './gameDataStatistics/gameData/ltv',
  210. },
  211. {
  212. path: '/gameDataStatistics/gameData/again',
  213. name: '游戏首日复充',
  214. access: 'again',
  215. component: './gameDataStatistics/gameData/again',
  216. },
  217. {
  218. path: '/gameDataStatistics/gameData/active',
  219. name: '游戏留存数据',
  220. access: 'active',
  221. component: './gameDataStatistics/gameData/active',
  222. },
  223. ]
  224. },
  225. {
  226. path: '/gameDataStatistics/pitcher',
  227. name: '投手数据',
  228. access: 'pitcher',
  229. routes: [
  230. {
  231. path: '/gameDataStatistics/pitcher/total',
  232. name: '投手总数据',
  233. access: 'total',
  234. component: './gameDataStatistics/pitcher/total',
  235. },
  236. {
  237. path: '/gameDataStatistics/pitcher/everyDay',
  238. name: '投手每日数据',
  239. access: 'everyDay',
  240. component: './gameDataStatistics/pitcher/everyDay',
  241. },
  242. {
  243. path: '/gameDataStatistics/pitcher/totalGame',
  244. name: '投手游戏总数据',
  245. access: 'totalGame',
  246. component: './gameDataStatistics/pitcher/totalGame',
  247. },
  248. {
  249. path: '/gameDataStatistics/pitcher/everyDayGame',
  250. name: '投手游戏每日数据',
  251. access: 'everyDayGame',
  252. component: './gameDataStatistics/pitcher/everyDayGame',
  253. },
  254. ]
  255. },
  256. {
  257. path: '/gameDataStatistics/medium',
  258. name: '媒体数据',
  259. access: 'medium',
  260. routes: [
  261. {
  262. path: '/gameDataStatistics/medium/promotionEvery',
  263. name: '推广媒体每日数据',
  264. access: 'promotionEvery',
  265. component: './gameDataStatistics/medium/promotionEvery',
  266. },
  267. {
  268. path: '/gameDataStatistics/medium/promotionTotal',
  269. name: '推广媒体总数据',
  270. access: 'promotionTotal',
  271. component: './gameDataStatistics/medium/promotionTotal',
  272. },
  273. {
  274. path: '/gameDataStatistics/medium/pitcherEvery',
  275. name: '投手媒体每日数据',
  276. access: 'pitcherEvery',
  277. component: './gameDataStatistics/medium/pitcherEvery',
  278. },
  279. {
  280. path: '/gameDataStatistics/medium/pitcherTotal',
  281. name: '投手媒体总数据',
  282. access: 'pitcherTotal',
  283. component: './gameDataStatistics/medium/pitcherTotal',
  284. },
  285. {
  286. path: '/gameDataStatistics/medium/gameEvery',
  287. name: '游戏媒体每日数据',
  288. access: 'gameEvery',
  289. component: './gameDataStatistics/medium/gameEvery',
  290. },
  291. {
  292. path: '/gameDataStatistics/medium/gameTotal',
  293. name: '游戏媒体总数据',
  294. access: 'gameTotal',
  295. component: './gameDataStatistics/medium/gameTotal',
  296. },
  297. ]
  298. },
  299. {
  300. path: '/gameDataStatistics/player',
  301. name: '玩家数据',
  302. access: 'player',
  303. routes: [
  304. {
  305. path: '/gameDataStatistics/player/list',
  306. name: '玩家列表',
  307. access: 'list',
  308. component: './gameDataStatistics/player/list',
  309. },
  310. {
  311. path: '/gameDataStatistics/player/role',
  312. name: '玩家角色',
  313. access: 'role',
  314. component: './gameDataStatistics/player/role',
  315. }
  316. ]
  317. },
  318. {
  319. path: '/gameDataStatistics/gameServer',
  320. name: '游戏区服',
  321. access: 'gameServer',
  322. routes: [
  323. {
  324. path: '/gameDataStatistics/gameServer/serverData',
  325. name: '区服数据',
  326. access: 'serverData',
  327. component: './gameDataStatistics/gameServer/serverData',
  328. },
  329. ]
  330. },
  331. {
  332. path: '/gameDataStatistics/order',
  333. name: '订单',
  334. access: 'order',
  335. component: './gameDataStatistics/order',
  336. },
  337. ]
  338. }
  339. export {
  340. headrRouter,
  341. getMyMenu,
  342. gameDataStatistics
  343. }