wcs_client_kate_suzhou/src/router/index.js
2024-08-30 08:13:40 +08:00

93 lines
5.5 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

import { createRouter, createWebHashHistory } from 'vue-router'
const routes = [
{ path: '/', redirect: '/jump' },
{ path: '/login', name: 'login', component: () => import('../view/page/LoginPage.vue') },
{ path: '/jump', name: 'jump', component: () => import('../view/page/JumpPage.vue') },
{
path: '/wcs',
name: 'wcs',
component: () => import('../view/page/ContentPage.vue'),
children: [
{ path: 'nullPage', name: 'nullPage', component:() => import('../view/page/NullPage.vue') },
// 系统状态
{ path: 'runningInfo', name: 'runningInfo', component:() => import('../view/tab/systemStatus/RunningInfo.vue') }, // 运行信息
{ path: 'stackerStatus', name: 'stackerStatus', component:() => import('../view/tab/systemStatus/StackerStatus.vue') }, // 堆垛机状态
{ path: 'stackerConveyStatus', name: 'stackerConveyStatus', component:() => import('../view/tab/systemStatus/StackerConveyStatus.vue')}, // 库前输送机状态
{ path: 'conveyStatus', name: 'conveyStatus', component:() => import('../view/tab/systemStatus/ConveyStatus.vue') }, // 输送机状态
{ path: 'containerStatus', name: 'containerStatus', component:() => import('../view/tab/systemStatus/ContainerStatus.vue') }, // 智能货柜状态
{ path: 'shuttleStatus', name: 'shuttleStatus', component:() => import('../view/tab/systemStatus/ShuttleStatus.vue') }, // 穿梭车状态
// 任务管理
{ path: 'wmsTask', name: 'wmsTask', component:() => import('../view/tab/taskManage/WmsTask.vue') }, // Wms任务管理
{ path: 'wcsTask', name: 'wcsTask', component:() => import('../view/tab/taskManage/WcsTask.vue') }, // Wcs任务管理
{ path: 'elTagTask', name: 'elTagTask', component:() => import('../view/tab/taskManage/ElTagTask.vue') }, // 电子标签任务管理
{ path: 'conveyTask', name: 'conveyTask', component:() => import('../view/tab/taskManage/ConveyTask.vue') }, // 输送线任务管理
// 设备管理
{ path: 'location', name: 'location', component:() => import('@/view/tab/equipmentManage/LocationData.vue') }, // 点位/库位管理
{ path: 'stackerData', name: 'stackerData', component:() => import('@/view/tab/equipmentManage/StackerData.vue') }, // 堆垛机管理
{ path: 'elTagLocationData', name: 'elTagLocationData', component:() => import('@/view/tab/equipmentManage/ElTagLocationData.vue')}, // 电子标签货位管理
{ path: 'stackerConvey', name: 'stackerConvey', component:() => import('@/view/tab/equipmentManage/StackerConvey.vue')}, // 堆垛机输送线管理
// 数据查询
{ path: 'apiAccept', name: 'apiAccept', component:() => import('../view/tab/dataQuery/ApiAccept.vue') }, // 接口接收记录
{ path: 'apiRequest', name: 'apiRequest', component:() => import('../view/tab/dataQuery/ApiRequest.vue') }, // 接口请求记录
{ path: 'errMsg', name: 'errMsg', component:() => import('../view/tab/dataQuery/ErrMsg.vue') }, // 设备异常信息
{ path: 'errMsgBase', name: 'errMsgBase', component:() => import('../view/tab/dataQuery/ErrMsgBase.vue') }, // 设备异常信息基础资料
{ path: 'scanRecord', name: 'scanRecord', component:() => import('../view/tab/dataQuery/ScanRecord.vue') }, // 扫描码查询
// 系统管理
{ path: 'settingsData', name: 'settingsData', component:() => import('../view/tab/systemManage/SettingData.vue') }, // 系统设置
// 工具箱
{ path: 'printQRCode', name: 'printQRCode', component:() => import('../view/tab/tools/PrintQRCode.vue') }, // 二维码打印
// 账户管理
{ path: 'userMenuRule', name: 'userMenuRule', component:() => import('../view/tab/accountManage/UserMenuRule.vue') }, // 权限管理
{ path: 'userData', name: 'userData', component:() => import('../view/tab/accountManage/UserData.vue') }, // 用户管理
// 开发者选项
{ path: 'plcData', name: 'plcData', component:() => import('@/view/tab/development/PLCData.vue') }, // PLC管理
{ path: 'dbData', name: 'dbData', component:() => import('@/view/tab/development/DbData.vue') }, // PLC通讯管理DB块
{ path: 'configData', name: 'configData', component:() => import('@/view/tab/development/ConfigData.vue') }, // 系统配置
{ path: 'socketData', name: 'socketData', component:() => import('../view/tab/development/SocketData.vue') }, // Socket通讯管理
{ path: 'menuData', name: 'menuData', component:() => import('@/view/tab/development/MenuData.vue') }, // 菜单管理
]
},
]
const router = createRouter({
history: createWebHashHistory(),
routes
})
// 导航守卫
router.beforeEach((to, from, next) => {
// 登陆页和错误页允许访问
if(to.name === 'login' || to.name === 'limit' || to.name === 'jump') {
next()
return
}
// 校验用户是否登陆
const userName = window.sessionStorage.getItem("userName")
if(userName === undefined || userName === null || userName === '') {
next({name: 'login'})
return
}
// 校验是否访问不受限制的页面
if(to.name === 'wcs' || to.name === 'nullPage') {
next()
return
}
// 校验用户是否有菜单
const menuList = JSON.parse(window.sessionStorage.getItem("menuList"))
if(menuList === undefined || menuList === null || menuList.length === 0) {
next({name: 'login'})
return
}
// 校验用户访问的是不是其有权限访问的菜单
if(menuList.find(m => m.router === to.name) === undefined) {
console.log(to.name)
console.table(menuList)
next({name: 'login'})
return
}
next()
})
export default router