Files
cunkebao_v3/Backend/src/router/index.js
2025-03-18 14:39:17 +08:00

81 lines
1.7 KiB
JavaScript

import Vue from 'vue'
import Router from 'vue-router'
import AuthRouter from './auth'
import HomeRouter from './home'
import SystemRouter from './system'
import ProductRouter from '@/router/product';
import TaskRouter from '@/router/task';
import DeviceRouter from '@/router/device';
import { isLogin } from '@/utils/auth'
import store from '@/store'
const originalPush = Router.prototype.push
Router.prototype.push = function push(location) {
return originalPush.call(this, location).catch(err => console.log(err))
}
Vue.use(Router)
const RouteView = {
name: 'RouteView',
render: h => h('router-view'),
}
const routes = [
AuthRouter,
HomeRouter,
SystemRouter,
ProductRouter,
TaskRouter,
DeviceRouter,
{
path: '/',
name: 'home',
component: () => import('@/views/home/layout'),
meta: {
title: '',
needLogin: true,
},
},
{
path: '*',
name: '404 NotFound',
component: () => import('@/views/other/404'),
meta: {
title: '404 NotFound',
needLogin: false,
},
},
]
const router = new Router({
routes,
mode: 'hash',
})
// 全局前置守卫
router.beforeEach((to, from, next) => {
// 设置页面标题
document.title = to.meta.title ? to.meta.title : '医视管理系统'
// 检查路由是否需要登录
if (to.meta.needLogin) {
// 检查登录状态
if (isLogin()) {
next()
} else {
// 未登录,重定向到登录页
next({ path: '/auth/login' })
}
} else {
// 如果是访问登录页且已登录,则跳转到首页
if (to.path === '/auth/login' && isLogin()) {
next({ path: '/' })
} else {
next()
}
}
})
export default router