Initial commit: admin dashboard for GameNo.
Vue 3 + Vite dashboard with PrimeVue, i18n, and API integration for institution management.
This commit is contained in:
@@ -0,0 +1,197 @@
|
||||
// /src/router/routes.js
|
||||
import DashboardLayout from '@/layouts/DashboardLayout.vue';
|
||||
import AuthLayout from '@/layouts/AuthLayout.vue';
|
||||
|
||||
export const routes = [
|
||||
{
|
||||
path: '/login',
|
||||
component: AuthLayout,
|
||||
children: [
|
||||
{
|
||||
path: '',
|
||||
name: 'Login',
|
||||
component: () => import('@/views/auth/LoginView.vue'),
|
||||
meta: { requiresAuth: false }
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
path: '/',
|
||||
component: DashboardLayout,
|
||||
meta: { requiresAuth: true },
|
||||
children: [
|
||||
{
|
||||
path: '',
|
||||
name: 'DashboardHome',
|
||||
component: () => import('@/views/dashboard/DashboardHomeView.vue')
|
||||
},
|
||||
|
||||
// Users
|
||||
{
|
||||
path: 'users',
|
||||
name: 'UserList',
|
||||
component: () => import('@/views/users/UserListView.vue')
|
||||
},
|
||||
{
|
||||
path: 'users/create',
|
||||
name: 'UserCreate',
|
||||
component: () => import('@/views/users/UserFormView.vue')
|
||||
},
|
||||
{
|
||||
path: 'users/edit/:id',
|
||||
name: 'UserEdit',
|
||||
component: () => import('@/views/users/UserFormView.vue')
|
||||
},
|
||||
|
||||
// Professors
|
||||
{
|
||||
path: 'professors',
|
||||
name: 'ProfessorList',
|
||||
component: () => import('@/views/professors/ProfessorListView.vue')
|
||||
},
|
||||
{
|
||||
path: 'professors/create',
|
||||
name: 'ProfessorCreate',
|
||||
component: () => import('@/views/professors/ProfessorFormView.vue')
|
||||
},
|
||||
{
|
||||
path: 'professors/edit/:id',
|
||||
name: 'ProfessorEdit',
|
||||
component: () => import('@/views/professors/ProfessorFormView.vue')
|
||||
},
|
||||
|
||||
// Courses
|
||||
{
|
||||
path: 'courses',
|
||||
name: 'CourseList',
|
||||
component: () => import('@/views/courses/CourseListView.vue')
|
||||
},
|
||||
{
|
||||
path: 'courses/create',
|
||||
name: 'CourseCreate',
|
||||
component: () => import('@/views/courses/CourseFormView.vue')
|
||||
},
|
||||
{
|
||||
path: 'courses/edit/:id',
|
||||
name: 'CourseEdit',
|
||||
component: () => import('@/views/courses/CourseFormView.vue')
|
||||
},
|
||||
{
|
||||
path: 'courses/view/:id',
|
||||
name: 'CourseDetail',
|
||||
component: () => import('@/views/courses/CourseDetailView.vue')
|
||||
},
|
||||
|
||||
// Classes
|
||||
{
|
||||
path: 'classes',
|
||||
name: 'ClassList',
|
||||
component: () => import('@/views/classes/ClassListView.vue')
|
||||
},
|
||||
{
|
||||
path: 'classes/create',
|
||||
name: 'ClassCreate',
|
||||
component: () => import('@/views/classes/ClassFormView.vue')
|
||||
},
|
||||
{
|
||||
path: 'classes/edit/:id',
|
||||
name: 'ClassEdit',
|
||||
component: () => import('@/views/classes/ClassFormView.vue')
|
||||
},
|
||||
{
|
||||
path: 'classes/view/:id',
|
||||
name: 'ClassDetail',
|
||||
component: () => import('@/views/classes/ClassDetailView.vue')
|
||||
},
|
||||
|
||||
// Sessions
|
||||
{
|
||||
path: 'sessions',
|
||||
name: 'SessionList',
|
||||
component: () => import('@/views/sessions/SessionListView.vue')
|
||||
},
|
||||
{
|
||||
path: 'sessions/create',
|
||||
name: 'SessionCreate',
|
||||
component: () => import('@/views/sessions/SessionFormView.vue')
|
||||
},
|
||||
{
|
||||
path: 'sessions/edit/:id',
|
||||
name: 'SessionEdit',
|
||||
component: () => import('@/views/sessions/SessionFormView.vue')
|
||||
},
|
||||
{
|
||||
path: 'sessions/attendance/:id',
|
||||
name: 'AttendanceEntry',
|
||||
component: () => import('@/views/attendances/AttendanceEntryView.vue')
|
||||
},
|
||||
|
||||
// Payments
|
||||
{
|
||||
path: 'payments',
|
||||
name: 'PaymentList',
|
||||
component: () => import('@/views/payments/PaymentListView.vue')
|
||||
},
|
||||
{
|
||||
path: 'payments/view/:id',
|
||||
name: 'PaymentDetail',
|
||||
component: () => import('@/views/payments/PaymentDetailView.vue')
|
||||
},
|
||||
|
||||
// Roles
|
||||
{
|
||||
path: 'roles',
|
||||
name: 'RoleList',
|
||||
component: () => import('@/views/roles/RoleListView.vue')
|
||||
},
|
||||
{
|
||||
path: 'roles/create',
|
||||
name: 'RoleCreate',
|
||||
component: () => import('@/views/roles/RoleFormView.vue')
|
||||
},
|
||||
{
|
||||
path: 'roles/edit/:id',
|
||||
name: 'RoleEdit',
|
||||
component: () => import('@/views/roles/RoleFormView.vue')
|
||||
},
|
||||
|
||||
// Notifications
|
||||
{
|
||||
path: 'notifications',
|
||||
name: 'NotificationList',
|
||||
component: () => import('@/views/notifications/NotificationListView.vue')
|
||||
},
|
||||
|
||||
// Contact inquiries
|
||||
{
|
||||
path: 'contact-inquiries',
|
||||
name: 'ContactInquiryList',
|
||||
component: () => import('@/views/contactInquiries/ContactInquiryListView.vue')
|
||||
},
|
||||
{
|
||||
path: 'contact-inquiries/view/:id',
|
||||
name: 'ContactInquiryDetail',
|
||||
component: () => import('@/views/contactInquiries/ContactInquiryDetailView.vue')
|
||||
},
|
||||
|
||||
{
|
||||
path: 'logs',
|
||||
name: 'LogList',
|
||||
component: () => import('@/views/logs/LogListView.vue'),
|
||||
meta: { permission: 'logs:read' }
|
||||
},
|
||||
|
||||
// Errors
|
||||
{
|
||||
path: '403',
|
||||
name: 'Forbidden',
|
||||
component: () => import('@/views/errors/ForbiddenView.vue')
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
path: '/:pathMatch(.*)*',
|
||||
name: 'NotFound',
|
||||
component: () => import('@/views/errors/NotFoundView.vue')
|
||||
}
|
||||
];
|
||||
Reference in New Issue
Block a user