Files
orc-order-v2/web/frontend/src/router/index.ts
T
2026-05-12 21:43:15 +08:00

87 lines
2.1 KiB
TypeScript

import { createRouter, createWebHistory } from 'vue-router'
import { useAuthStore } from '../stores/auth'
const router = createRouter({
history: createWebHistory(),
routes: [
{
path: '/login',
name: 'Login',
component: () => import('../views/Login.vue'),
meta: { requiresAuth: false },
},
{
path: '/',
component: () => import('../views/Layout.vue'),
meta: { requiresAuth: true },
children: [
{
path: '',
name: 'Dashboard',
component: () => import('../views/Dashboard.vue'),
},
{
path: 'memory',
name: 'Memory',
component: () => import('../views/Memory.vue'),
},
{
path: 'barcodes',
name: 'Barcodes',
component: () => import('../views/Barcodes.vue'),
},
{
path: 'config',
name: 'Config',
component: () => import('../views/Config.vue'),
},
{
path: 'sync',
name: 'Sync',
component: () => import('../views/Sync.vue'),
},
{
path: 'tasks',
name: 'Tasks',
component: () => import('../views/Tasks.vue'),
},
{
path: 'logs',
name: 'Logs',
component: () => import('../views/Logs.vue'),
},
{
path: 'files',
redirect: '/files/orders',
},
{
path: 'files/orders',
name: 'FilesOrders',
component: () => import('../views/files/Orders.vue'),
},
{
path: 'files/tables',
name: 'FilesTables',
component: () => import('../views/files/Tables.vue'),
},
{
path: 'files/images',
name: 'FilesImages',
component: () => import('../views/files/Images.vue'),
},
],
},
],
})
router.beforeEach((to, from, next) => {
const authStore = useAuthStore()
if (to.meta.requiresAuth !== false && !authStore.isAuthenticated) {
next('/login')
} else {
next()
}
})
export default router