作者 朱兆平

修复用户登录适配权限BUG

... ... @@ -28,6 +28,7 @@ module.exports = merge(baseWebpackConfig, {
new HtmlWebpackPlugin({
filename: 'index.html',
template: 'index.html',
favicon:'static/favicon.ico',
inject: true
}),
new FriendlyErrorsPlugin()
... ...
... ... @@ -3,7 +3,8 @@
<head>
<meta charset="utf-8">
<title>vueadmin</title>
<title>流浪地球项目</title>
<link rel="shortcut icon" type="image/x-icon" href="favicon.ico">
</head>
<body>
... ...
... ... @@ -29,16 +29,16 @@ let routes = [
{
path: '/',
component: Home,
name: '',
name: '主页',
leaf: true,
iconCls: 'el-icon-menu',
children: [
{ path: '/main', component: Main, name: '首页', hidden: false },
{ path: '/main', component: Main, name: '首页'},
]
},
// { path: '/test', component: Main },
{
path: '/',
path: '/admin',
component: Home,
name: '用户管理',
iconCls: 'el-icon-setting',//图标样式class
... ... @@ -62,7 +62,7 @@ let routes = [
{
path: '/',
component: Home,
name: '',
name: '导航三',
iconCls: 'fa fa-address-card',
leaf: true,//只有一个节点
children: [
... ...
... ... @@ -144,8 +144,7 @@
var userRouters = sessionStorage.getItem('menu');
if (userRouters) {
userRouters = JSON.parse(userRouters);
let sysMenus = _this.$router.options.routes;
rt.handleMenuList(sysMenus,userRouters);
_this.$router.options.routes = userRouters;
console.log("home:");
console.log(_this.$router.options.routes);
}
... ...
... ... @@ -67,31 +67,34 @@
this.$refs.ruleForm2.resetFields();
},
handleMenuList : function (router,menu) {
var _self = this;
var _this = this;
var routerName = "";
router.forEach(function (v_router) {
var routerTemp = router.concat();
routerTemp.forEach(function (v_router,v_index,v_arr) {
routerName = v_router.name;
menu.forEach(function (v_menu) {
//查找返回的目录列表是否包含路由名称,有就返回匹配到的元素,没有就移除
let result = menu.find(item => {
return item.name === routerName;
});
//匹配到继续判断是否子元素,有子元素继续递归
if (result) {
if(v_router.children) {
_self.handleMenuList(v_router.children,result.children);
}
//没有则可以移除
}else {
router.splice(router.findIndex(itm => itm.name === routerName ),1);
//查找返回的目录列表是否包含路由名称,有就返回匹配到的元素,没有就移除
let result = menu.find(item => {
return item.name === routerName;
});
//匹配到继续判断是否子元素,有子元素继续递归
if (result) {
if (v_router.children && v_router.children.length>0) {
_this.handleMenuList(v_router.children, result.children);
}
})
}else {
//没有则可以移除
let deletRouter = router.findIndex(itm => itm.name === routerName );
router.splice(deletRouter,1);
}
});
console.log("longined router:");
console.log(_self.$router.options.routes);
//本地存储用户目录 ,防刷新目录丢失用
sessionStorage.setItem('menu', JSON.stringify(_self.$router.options.routes));
console.log(routerName);
console.log(_this.$router.options.routes);
// 本地存储用户目录 ,防刷新目录丢失用
sessionStorage.setItem('menu', JSON.stringify(_this.$router.options.routes));
},
handleSubmit2: function (ev) {
var _this = this;
... ... @@ -127,11 +130,11 @@
console.log("sysMenus:");
console.log(sysMenus);
_this.handleMenuList(sysMenus,_this.userMenus);
_this.handleMenuList(_this.$router.options.routes,_this.userMenus);
console.log("user:");
console.log(_this.$router.options.routes);
this.$router.push({path: '/main'});
_this.$router.push({path: '/main'});
}
}).catch(error => {
let msg = error.message;
... ...
... ... @@ -7,24 +7,6 @@
<script>
import rt from '../routes'
export default {
mounted() {
var _this = this;
var user = sessionStorage.getItem('user');
if (user) {
user = JSON.parse(user);
this.sysUserName = user.username || '';
this.sysUserAvatar = user.userface || '/static/images/faceDefault.jpg';
}
//操作路由,判断本地存储的用户栏目列表是否存在,如果存在则加载路由
var userRouters = sessionStorage.getItem('menu');
if (userRouters) {
userRouters = JSON.parse(userRouters);
let sysMenus = _this.$router.options.routes;
rt.handleMenuList(sysMenus,userRouters);
console.log("main:");
console.log(_this.$router.options.routes);
}
}
}
</script>
... ...