100 lines
1.9 KiB
JavaScript
100 lines
1.9 KiB
JavaScript
/**
|
|
* Vue Router 路由配置
|
|
*/
|
|
import { createRouter, createWebHashHistory } from 'vue-router';
|
|
import LoginPage from '../views/LoginPage.vue';
|
|
import ConsolePage from '../views/ConsolePage.vue';
|
|
import DeliveryPage from '../views/DeliveryPage.vue';
|
|
import InvitePage from '../views/InvitePage.vue';
|
|
import FeedbackPage from '../views/FeedbackPage.vue';
|
|
import PurchasePage from '../views/PurchasePage.vue';
|
|
import LogPage from '../views/LogPage.vue';
|
|
import store from '../store';
|
|
|
|
const routes = [
|
|
{
|
|
path: '/',
|
|
redirect: '/console'
|
|
},
|
|
{
|
|
path: '/login',
|
|
name: 'Login',
|
|
component: LoginPage,
|
|
meta: {
|
|
requiresAuth: false,
|
|
showSidebar: false
|
|
}
|
|
},
|
|
{
|
|
path: '/console',
|
|
name: 'Console',
|
|
component: ConsolePage,
|
|
meta: {
|
|
requiresAuth: true
|
|
}
|
|
},
|
|
{
|
|
path: '/delivery',
|
|
name: 'Delivery',
|
|
component: DeliveryPage,
|
|
meta: {
|
|
requiresAuth: true
|
|
}
|
|
},
|
|
{
|
|
path: '/invite',
|
|
name: 'Invite',
|
|
component: InvitePage,
|
|
meta: {
|
|
requiresAuth: true
|
|
}
|
|
},
|
|
{
|
|
path: '/feedback',
|
|
name: 'Feedback',
|
|
component: FeedbackPage,
|
|
meta: {
|
|
requiresAuth: true
|
|
}
|
|
},
|
|
{
|
|
path: '/log',
|
|
name: 'Log',
|
|
component: LogPage,
|
|
meta: {
|
|
requiresAuth: true
|
|
}
|
|
},
|
|
{
|
|
path: '/purchase',
|
|
name: 'Purchase',
|
|
component: PurchasePage,
|
|
meta: {
|
|
requiresAuth: true
|
|
}
|
|
}
|
|
];
|
|
|
|
const router = createRouter({
|
|
history: createWebHashHistory(),
|
|
routes
|
|
});
|
|
|
|
// 路由守卫
|
|
router.beforeEach((to, from, next) => {
|
|
const isLoggedIn = store.state.auth.isLoggedIn;
|
|
|
|
if (to.meta.requiresAuth && !isLoggedIn) {
|
|
// 需要登录但未登录,跳转到登录页
|
|
next('/login');
|
|
} else if (to.path === '/login' && isLoggedIn) {
|
|
// 已登录访问登录页,跳转到控制台
|
|
next('/console');
|
|
} else {
|
|
next();
|
|
}
|
|
});
|
|
|
|
export default router;
|
|
|