Routing
VueRouter index file structure
const router = createRouter({
history: createWebHistory(),
routes: [
{
path: '/',
component: () => import('../views/layouts/AppLayout.vue'),
redirect: 'timesheets',
children: [
{
path: 'timesheets',
name: TimesheetsRoutesNamesEnum.INDEX,
component: () => import('../cruds/timesheets/Index.vue'),
},
{
path: 'profile',
name: RouterNamesEnum.PROFILE,
component: () => import('../views/profile/Profile.vue'),
},
{
path: 'edit-profile',
name: RouterNamesEnum.EDIT_PROFILE,
component: () => import('../views/profile/EditProfile.vue'),
},
{
path: 'user-management',
name: RouterNamesEnum.USER_MANAGEMENT,
redirect: { name: 'users.index' },
children: [
{
path: 'users',
name: UserRoutesNamesEnum.INDEX,
component: () => import('../cruds/users/Index.vue'),
},
{
path: 'users/create',
name: UserRoutesNamesEnum.CREATE,
component: () =>
import('../cruds/users/Create.vue'),
},
{
path: 'users/:userId',
name: UserRoutesNamesEnum.SHOW,
component: () => import('../cruds/users/Show.vue'),
},
{
path: 'users/:userId/edit',
name: UserRoutesNamesEnum.EDIT,
component: () => import('../cruds/users/Edit.vue'),
},
],
},
{
path: 'projects',
name: ProjectRoutesNamesEnum.INDEX,
component: () => import('../cruds/projects/Index.vue'),
},
{
path: 'projects/create',
name: ProjectRoutesNamesEnum.CREATE,
component: () => import('../cruds/projects/Create.vue'),
},
{
path: 'projects',
redirect: ProjectRoutesNamesEnum.INDEX,
children: [
{
path: ':projectId',
name: ProjectRoutesNamesEnum.SHOW,
component: () =>
import('../cruds/projects/Show.vue'),
},
{
path: ':projectId/spendings/create',
name: ProjectRoutesNamesEnum.SPEDINGS_CREATE,
component: () =>
import('../cruds/spendings/Create.vue'),
},
{
path: ':projectId/spendings/:spendingId',
name: ProjectRoutesNamesEnum.SPEDINGS_SHOW,
component: () =>
import('../cruds/spendings/Show.vue'),
},
{
path: ':projectId/spendings/:spendingId/edit',
name: ProjectRoutesNamesEnum.SPEDINGS_EDIT,
component: () =>
import('../cruds/spendings/Edit.vue'),
},
],
},
{
path: 'projects/:projectId/edit',
name: ProjectRoutesNamesEnum.EDIT,
component: () => import('../cruds/projects/Edit.vue'),
},
{
path: 'orders',
name: OrdersRoutesNamesEnum.INDEX,
component: () => import('../cruds/orders/Index.vue'),
},
{
path: 'orders/reports',
name: OrdersRoutesNamesEnum.REPORTS,
component: () => import('../cruds/orders/Reports.vue'),
},
{
path: 'orders/create',
name: OrdersRoutesNamesEnum.CREATE,
component: () => import('../cruds/orders/Create.vue'),
},
{
path: 'orders',
redirect: { name: OrdersRoutesNamesEnum.SHOW },
children: [
{
path: ':orderId',
name: OrdersRoutesNamesEnum.SHOW,
component: () => import('../cruds/orders/Show.vue'),
},
{
path: ':orderId/spendings/create',
name: OrdersRoutesNamesEnum.SPEDINGS_CREATE,
component: () =>
import('../cruds/spendings/Create.vue'),
},
{
path: ':orderId/spendings/:spendingId',
name: OrdersRoutesNamesEnum.SPEDINGS_SHOW,
component: () =>
import('../cruds/spendings/Show.vue'),
},
{
path: ':orderId/spendings/:spendingId/edit',
name: OrdersRoutesNamesEnum.SPEDINGS_EDIT,
component: () =>
import('../cruds/spendings/Edit.vue'),
},
],
},
],
},
],
})
export default routerLast updated