111 lines
2.8 KiB
TypeScript
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
|