提前说明的是,我这里的目的是根据自己配置的菜单顺序,将获取到的菜单列表的第一项作为首页展示.
java后端
getUserPermissionByToken()方法
将下面的首页获取注掉
if(!PermissionDataUtil.hasIndexPage(metaList)){
SysPermission indexMenu = sysPermissionService.list(new LambdaQueryWrapper<SysPermission>().eq(SysPermission::getName,"首页")).get(0);
metaList.add(0,indexMenu);
}
前端
src/utils/util.js
生成首页路由的方法改成下面的,
这里我只做了三层路由,各位可根据实际,进行重写
export function generateIndexRouter (data) {
let path = undefined
if (data[0].children != undefined && data[0].children.length > 0) {
// 三级路由
if (data[0].children[0].children != undefined && data[0].children[0].children.length > 0) {
path = data[0].children[0].children[0].path
} else {
// 二级路由
path = data[0].children[0].path
}
} else {
// 一级路由
path = data[0].path
}
console.log('执行路由generateIndexRouter -> path', path)
let indexRouter = [{
path: '/',
name: path,
component: resolve => require(['@/components/layouts/TabLayout'], resolve),
meta: { title: '首页' },
redirect: path,
children: [
...generateChildRouters(data)
]
}, {
'path': '*', 'redirect': '/404', 'hidden': true
}]
return indexRouter
}
src/components/layouts/TabLayout.vue
这里是处理页签
去掉这个
将用到下面方法的部分注掉
addIndexToFirst()
如图:
登陆页
这里将路由跳转的dashboard/analysis去掉,更正后的样子:
改这里是因为每次更换角色登陆时,会出现404错误.
补充:退出登陆后,页签也会有问题
原本他是用路由跳的 ,这就导致,之前的页签会带过去,也算是bug
下面是页签处理
很明显这样确有问题,
所以,我在退出登陆时,未用路由跳转
直接用
window.location.replace("/user/login")