Files
tgCrewAdmin/src/router/routes.ts
2025-04-06 20:33:29 +03:00

111 lines
2.8 KiB
TypeScript

import type { RouteRecordRaw, RouteLocationNormalized } from 'vue-router'
import { useProjectsStore } from '../stores/projects'
const setProjectBeforeEnter = (to: RouteLocationNormalized) => {
const id = Number(to.params.id)
const projectsStore = useProjectsStore()
projectsStore.setCurrentProjectId(
!isNaN(id) && projectsStore.projectById(id) ? id : null
)
}
const routes: RouteRecordRaw[] = [
{
path: '/',
component: () => import('layouts/MainLayout.vue'),
children: [
{
path: '',
redirect: '/projects'
},
{
name: 'projects',
path: '/projects',
component: () => import('pages/ProjectsPage.vue')
},
{
name: 'project_add',
path: '/project/add',
component: () => import('pages/CreateProjectPage.vue')
},
{
name: 'project_info',
path: '/project/:id(\\d+)/info',
component: () => import('pages/ProjectInfoPage.vue'),
beforeEnter: setProjectBeforeEnter
},
{
name: 'company_mask',
path: '/project/:id(\\d+)/company-mask',
component: () => import('pages/CompanyMaskPage.vue'),
beforeEnter: setProjectBeforeEnter
},
{
path: '/project/:id(\\d+)',
component: () => import('pages/ProjectPage.vue'),
beforeEnter: setProjectBeforeEnter,
children: [
{
name: 'project',
path: '',
redirect: { name: 'chats' }
},
{
name: 'chats',
path: 'chats',
component: () => import('../components/admin/project-page/ProjectPageChats.vue')
},
{
name: 'persons',
path: 'persons',
component: () => import('../components/admin/project-page/ProjectPagePersons.vue')
},
{
name: 'companies',
path: 'companies',
component: () => import('../components/admin/project-page/ProjectPageCompanies.vue')
}
]
},
{
path: '/account',
name: 'account',
component: () => import('pages/AccountPage.vue')
},
{
path: '/login',
name: 'login',
component: () => import('pages/LoginPage.vue')
},
{
path: '/recovery-password',
name: 'recovery_password',
component: () => import('pages/ForgotPasswordPage.vue')
},
{
path: '/create-company',
name: 'create_company',
component: () => import('pages/CreateCompanyPage.vue')
},
{
path: '/person-info',
name: 'person_info',
component: () => import('pages/PersonInfoPage.vue')
}
]
},
{
path: '/:catchAll(.*)*',
component: () => import('pages/ErrorNotFound.vue'),
}
]
export default routes