routes.ts 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110
  1. import type { Route } from '#/global'
  2. import type { RouteRecordRaw } from 'vue-router'
  3. import generatedRoutes from 'virtual:generated-pages'
  4. import { setupLayouts } from 'virtual:meta-layouts'
  5. import RoleManagement from './modules/role'
  6. import VoiceManagement from './modules/voice'
  7. import Recomendation from './modules/recomendation'
  8. import Model from './modules/model/model'
  9. import GlobalPrompt from './modules/model/globalPrompt'
  10. import tag from './modules/model/tag'
  11. function Layout() {
  12. return import('@/layouts/index.vue')
  13. }
  14. // 固定路由(默认路由)
  15. const constantRoutes: RouteRecordRaw[] = [
  16. {
  17. path: '/login',
  18. name: 'login',
  19. component: () => import('@/views/login.vue'),
  20. meta: {
  21. title: '登录',
  22. },
  23. },
  24. {
  25. path: '/:all(.*)*',
  26. name: 'notFound',
  27. component: () => import('@/views/[...all].vue'),
  28. meta: {
  29. title: '找不到页面',
  30. },
  31. },
  32. ]
  33. // 系统路由
  34. const systemRoutes: RouteRecordRaw[] = [
  35. {
  36. path: '/',
  37. component: () => import('@/layouts/index.vue'),
  38. meta: {
  39. title: () => useSettingsStore().settings.home.title,
  40. breadcrumb: false,
  41. },
  42. children: [
  43. {
  44. path: '',
  45. component: () => import('@/views/index.vue'),
  46. meta: {
  47. title: () => useSettingsStore().settings.home.title,
  48. icon: 'i-ant-design:home-twotone',
  49. breadcrumb: false,
  50. },
  51. },
  52. {
  53. path: 'reload',
  54. name: 'reload',
  55. component: () => import('@/views/reload.vue'),
  56. meta: {
  57. title: '重新加载',
  58. breadcrumb: false,
  59. },
  60. },
  61. ],
  62. },
  63. ]
  64. // 动态路由(异步路由、导航栏路由)
  65. const asyncRoutes: Route.recordMainRaw[] = [
  66. {
  67. meta: {
  68. title: 'Role',
  69. icon: 'i-mdi:robot-dead-outline',
  70. auth: '',
  71. },
  72. children: [
  73. RoleManagement,
  74. VoiceManagement,
  75. Recomendation,
  76. ],
  77. },
  78. {
  79. meta: {
  80. title: 'LLM',
  81. icon: 'i-hugeicons:brain-02',
  82. },
  83. children: [
  84. Model,
  85. GlobalPrompt,
  86. tag,
  87. ],
  88. },
  89. ]
  90. const constantRoutesByFilesystem = generatedRoutes.filter((item) => {
  91. return item.meta?.enabled !== false && item.meta?.constant === true
  92. })
  93. const asyncRoutesByFilesystem = setupLayouts(generatedRoutes.filter((item) => {
  94. return item.meta?.enabled !== false && item.meta?.constant !== true && item.meta?.layout !== false
  95. }))
  96. export {
  97. asyncRoutes,
  98. asyncRoutesByFilesystem,
  99. constantRoutes,
  100. constantRoutesByFilesystem,
  101. systemRoutes,
  102. }