routes.tsx 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102
  1. import React from 'react';
  2. import { createBrowserRouter, Navigate } from 'react-router';
  3. import { ProtectedRoute } from './components/ProtectedRoute';
  4. import { MainLayout } from './layouts/MainLayout';
  5. import { ErrorPage } from './components/ErrorPage';
  6. import { NotFoundPage } from './components/NotFoundPage';
  7. import { DashboardPage } from './pages/Dashboard';
  8. import { UsersPage } from './pages/Users';
  9. import { ClassroomDataPage } from './pages/ClassroomDataPage';
  10. import { SubmissionRecordsPage } from './pages/SubmissionRecordsPage';
  11. import { StockDataPage } from './pages/StockDataPage';
  12. import { StockXunlianCodesPage } from './pages/StockXunlianCodesPage';
  13. import { DateNotesPage } from './pages/DateNotesPage';
  14. import { LoginPage } from './pages/Login';
  15. import { FilesPage } from './pages/Files';
  16. import { ChatMessagesPage } from './pages/ChatMessages';
  17. import { VodVideosPage } from './pages/VodVideos';
  18. export const router = createBrowserRouter([
  19. {
  20. path: '/',
  21. element: <Navigate to="/admin" replace />
  22. },
  23. {
  24. path: '/admin/login',
  25. element: <LoginPage />
  26. },
  27. {
  28. path: '/admin',
  29. element: (
  30. <ProtectedRoute>
  31. <MainLayout />
  32. </ProtectedRoute>
  33. ),
  34. children: [
  35. {
  36. index: true,
  37. element: <Navigate to="/admin/dashboard" />
  38. },
  39. {
  40. path: 'dashboard',
  41. element: <DashboardPage />,
  42. errorElement: <ErrorPage />
  43. },
  44. {
  45. path: 'users',
  46. element: <UsersPage />,
  47. errorElement: <ErrorPage />
  48. },
  49. {
  50. path: 'files',
  51. element: <FilesPage />,
  52. errorElement: <ErrorPage />
  53. },
  54. {
  55. path: 'classroom-data',
  56. element: <ClassroomDataPage />,
  57. errorElement: <ErrorPage />
  58. },
  59. {
  60. path: 'submission-records',
  61. element: <SubmissionRecordsPage />,
  62. errorElement: <ErrorPage />
  63. },
  64. {
  65. path: 'stock-data',
  66. element: <StockDataPage />,
  67. errorElement: <ErrorPage />
  68. },
  69. {
  70. path: 'stock-xunlian-codes',
  71. element: <StockXunlianCodesPage />,
  72. errorElement: <ErrorPage />
  73. },
  74. {
  75. path: 'date-notes',
  76. element: <DateNotesPage />,
  77. errorElement: <ErrorPage />
  78. },
  79. {
  80. path: 'chat-messages',
  81. element: <ChatMessagesPage />,
  82. errorElement: <ErrorPage />
  83. },
  84. {
  85. path: 'vod-videos',
  86. element: <VodVideosPage />,
  87. errorElement: <ErrorPage />
  88. },
  89. {
  90. path: '*',
  91. element: <NotFoundPage />,
  92. errorElement: <ErrorPage />
  93. },
  94. ],
  95. },
  96. {
  97. path: '*',
  98. element: <NotFoundPage />,
  99. errorElement: <ErrorPage />
  100. },
  101. ]);