説明なし
選択できるのは25トピックまでです。 トピックは、先頭が英数字で、英数字とダッシュ('-')を使用した35文字以内のものにしてください。

router.ts 4.5KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224
  1. import { createRouter, createWebHashHistory, type RouteRecordRaw } from 'vue-router'
  2. import { getToken, isAdminMode } from '@/api'
  3. // 导入页面组件
  4. import Login from '@/views/Login.vue'
  5. import Dashboard from '@/views/Dashboard.vue'
  6. import TenantManagement from '@/views/TenantManagement.vue'
  7. import RoleManagement from '@/views/RoleManagement.vue'
  8. import UserManagement from '@/views/UserManagement.vue'
  9. import ProjectManagement from '@/views/ProjectManagement.vue'
  10. import AgentManagement from '@/views/AgentManagement.vue'
  11. import SkillManagement from '@/views/SkillManagement.vue'
  12. import ConfigManagement from '@/views/ConfigManagement.vue'
  13. // 路由配置
  14. const routes: RouteRecordRaw[] = [
  15. {
  16. path: '/',
  17. redirect: '/dashboard',
  18. meta: { requiresAuth: true }
  19. },
  20. {
  21. path: '/login',
  22. name: 'Login',
  23. component: Login,
  24. meta: { title: '登录' }
  25. },
  26. {
  27. path: '/dashboard',
  28. name: 'Dashboard',
  29. component: Dashboard,
  30. meta: {
  31. requiresAuth: true,
  32. title: '仪表盘'
  33. }
  34. },
  35. // 租户管理相关路由
  36. {
  37. path: '/tenant/list',
  38. name: 'TenantList',
  39. component: TenantManagement,
  40. meta: {
  41. requiresAuth: true,
  42. title: '租户管理'
  43. }
  44. },
  45. {
  46. path: '/tenant/create',
  47. name: 'TenantCreate',
  48. component: TenantManagement,
  49. meta: {
  50. requiresAuth: true,
  51. title: '创建租户'
  52. }
  53. },
  54. // 角色管理相关路由
  55. {
  56. path: '/role/list',
  57. name: 'RoleList',
  58. component: RoleManagement,
  59. meta: {
  60. requiresAuth: true,
  61. title: '角色管理'
  62. }
  63. },
  64. {
  65. path: '/role/create',
  66. name: 'RoleCreate',
  67. component: RoleManagement,
  68. meta: {
  69. requiresAuth: true,
  70. title: '创建角色'
  71. }
  72. },
  73. // 用户管理相关路由
  74. {
  75. path: '/user/list',
  76. name: 'UserList',
  77. component: UserManagement,
  78. meta: {
  79. requiresAuth: true,
  80. title: '用户管理'
  81. }
  82. },
  83. {
  84. path: '/user/create',
  85. name: 'UserCreate',
  86. component: UserManagement,
  87. meta: {
  88. requiresAuth: true,
  89. title: '创建用户'
  90. }
  91. },
  92. // 项目管理相关路由
  93. {
  94. path: '/project/list',
  95. name: 'ProjectList',
  96. component: ProjectManagement,
  97. meta: {
  98. requiresAuth: true,
  99. title: '项目管理'
  100. }
  101. },
  102. {
  103. path: '/project/create',
  104. name: 'ProjectCreate',
  105. component: ProjectManagement,
  106. meta: {
  107. requiresAuth: true,
  108. title: '创建项目'
  109. }
  110. },
  111. // Agent管理相关路由
  112. {
  113. path: '/agent/list',
  114. name: 'AgentList',
  115. component: AgentManagement,
  116. meta: {
  117. requiresAuth: true,
  118. title: 'Agent管理'
  119. }
  120. },
  121. {
  122. path: '/agent/create',
  123. name: 'AgentCreate',
  124. component: AgentManagement,
  125. meta: {
  126. requiresAuth: true,
  127. title: '创建Agent'
  128. }
  129. },
  130. // Skill管理相关路由
  131. {
  132. path: '/skill/list',
  133. name: 'SkillList',
  134. component: SkillManagement,
  135. meta: {
  136. requiresAuth: true,
  137. title: 'Skill管理'
  138. }
  139. },
  140. {
  141. path: '/skill/create',
  142. name: 'SkillCreate',
  143. component: SkillManagement,
  144. meta: {
  145. requiresAuth: true,
  146. title: '创建Skill'
  147. }
  148. },
  149. // 配置管理相关路由
  150. {
  151. path: '/config/startup',
  152. name: 'ConfigStartup',
  153. component: ConfigManagement,
  154. meta: {
  155. requiresAuth: true,
  156. title: '启动配置'
  157. }
  158. },
  159. {
  160. path: '/config/meta',
  161. name: 'ConfigMeta',
  162. component: ConfigManagement,
  163. meta: {
  164. requiresAuth: true,
  165. title: '元数据初始化'
  166. }
  167. },
  168. {
  169. path: '/config/token',
  170. name: 'ConfigToken',
  171. component: ConfigManagement,
  172. meta: {
  173. requiresAuth: true,
  174. title: 'Token管理'
  175. }
  176. },
  177. // 404页面
  178. {
  179. path: '/:pathMatch(.*)*',
  180. name: 'NotFound',
  181. component: { template: '<div>页面未找到</div>' },
  182. meta: { title: '404' }
  183. }
  184. ]
  185. // 创建路由实例
  186. const router = createRouter({
  187. history: createWebHashHistory(),
  188. routes
  189. })
  190. // 路由守卫:认证检查
  191. router.beforeEach((to, from, next) => {
  192. // 设置页面标题
  193. if (to.meta.title) {
  194. document.title = `${to.meta.title} - 配置服务管理`
  195. }
  196. // 检查是否需要认证
  197. if (to.meta.requiresAuth) {
  198. const token = getToken()
  199. const adminMode = isAdminMode()
  200. if (!token && !adminMode) {
  201. // 未登录,重定向到登录页
  202. next('/login')
  203. return
  204. }
  205. }
  206. // 如果已经登录,访问登录页则重定向到首页
  207. if (to.path === '/login') {
  208. const token = getToken()
  209. if (token) {
  210. next('/dashboard')
  211. return
  212. }
  213. }
  214. next()
  215. })
  216. export default router