first commit
This commit is contained in:
110
src/router/routes.ts
Normal file
110
src/router/routes.ts
Normal file
@@ -0,0 +1,110 @@
|
||||
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
|
||||
Reference in New Issue
Block a user