index.ts 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156
  1. import { createRouter, createWebHashHistory } from 'vue-router'
  2. import type { RouteRecordRaw } from 'vue-router'
  3. import type { App } from 'vue'
  4. import { Layout } from '@/utils/routerHelper'
  5. import { useI18n } from '@/hooks/web/useI18n'
  6. const { t } = useI18n()
  7. export const constantRouterMap: AppRouteRecordRaw[] = [
  8. {
  9. path: '/',
  10. component: Layout,
  11. redirect: '/version/version',
  12. name: 'Root',
  13. meta: {
  14. hidden: true
  15. }
  16. },
  17. {
  18. path: '/redirect',
  19. component: Layout,
  20. name: 'Redirect',
  21. children: [
  22. {
  23. path: '/redirect/:path(.*)',
  24. name: 'Redirect',
  25. component: () => import('@/views/Redirect/Redirect.vue'),
  26. meta: {}
  27. }
  28. ],
  29. meta: {
  30. hidden: true,
  31. noTagsView: true
  32. }
  33. },
  34. {
  35. path: '/login',
  36. component: () => import('@/views/Login/Login.vue'),
  37. name: 'Login',
  38. meta: {
  39. hidden: true,
  40. title: t('router.login'),
  41. noTagsView: true
  42. }
  43. },
  44. {
  45. path: '/404',
  46. component: () => import('@/views/Error/404.vue'),
  47. name: 'NoFind',
  48. meta: {
  49. hidden: true,
  50. title: '404',
  51. noTagsView: true
  52. }
  53. }
  54. ]
  55. export const asyncRouterMap: AppRouteRecordRaw[] = [
  56. {
  57. path: '/version',
  58. name: 'Version',
  59. component: Layout,
  60. redirect: '/version/version/version_server',
  61. meta: {
  62. title: t('router.version'),
  63. icon: 'vi-cib:telegram-plane',
  64. alwaysShow: true
  65. },
  66. children: [
  67. {
  68. path: 'version',
  69. name: 'VersionRoot',
  70. component: Layout, // 🔥 这里变成父级
  71. redirect: '/version/version/version_server',
  72. meta: {
  73. title: t('router.version_list'),
  74. alwaysShow: true
  75. },
  76. children: [
  77. {
  78. path: 'version_server',
  79. name: 'VersionServer',
  80. component: () => import('@/views/Version/VersionServer.vue'),
  81. meta: {
  82. title: t('router.version_server'),
  83. noCache: true
  84. }
  85. } /*,
  86. {
  87. path: 'version_client',
  88. name: 'VersionClient',
  89. component: () => import('@/views/Version/VersionClient.vue'),
  90. meta: {
  91. title: t('router.version_client'),
  92. noCache: true
  93. }
  94. }*/
  95. ]
  96. },
  97. {
  98. path: 'test',
  99. component: () => import('@/views/Version/Test.vue'),
  100. name: 'VersionTest',
  101. meta: {
  102. title: t('router.version_test'),
  103. noCache: true
  104. }
  105. }
  106. ]
  107. },
  108. {
  109. path: '/channel',
  110. name: 'Channel',
  111. component: Layout,
  112. redirect: '/channel/manage',
  113. meta: {
  114. title: t('router.channel'),
  115. icon: 'ep:share',
  116. alwaysShow: true
  117. },
  118. children: [
  119. {
  120. path: 'manage',
  121. name: 'ChannelManage',
  122. component: () => import('@/views/Channel/ChannelManage.vue'),
  123. meta: {
  124. title: t('router.channel_manage'),
  125. noCache: true
  126. }
  127. }
  128. ]
  129. }
  130. ]
  131. const router = createRouter({
  132. history: createWebHashHistory(),
  133. strict: true,
  134. routes: constantRouterMap as RouteRecordRaw[],
  135. scrollBehavior: () => ({ left: 0, top: 0 })
  136. })
  137. export const resetRouter = (): void => {
  138. const resetWhiteNameList = ['Redirect', 'Login', 'NoFind', 'Root']
  139. router.getRoutes().forEach((route) => {
  140. const { name } = route
  141. if (name && !resetWhiteNameList.includes(name as string)) {
  142. router.hasRoute(name) && router.removeRoute(name)
  143. }
  144. })
  145. }
  146. export const setupRouter = (app: App<Element>) => {
  147. app.use(router)
  148. }
  149. export default router