94 lines
2.8 KiB
JavaScript
94 lines
2.8 KiB
JavaScript
// 登录和权限管理相关的JavaScript代码
|
|
const auth = {
|
|
// 存储登录信息
|
|
setLoginInfo(loginResponse) {
|
|
localStorage.setItem('token', loginResponse.token);
|
|
localStorage.setItem('user', JSON.stringify(loginResponse.user));
|
|
localStorage.setItem('roles', JSON.stringify(loginResponse.roles));
|
|
localStorage.setItem('menus', JSON.stringify(loginResponse.menus));
|
|
},
|
|
|
|
// 清除登录信息
|
|
clearLoginInfo() {
|
|
localStorage.removeItem('token');
|
|
localStorage.removeItem('user');
|
|
localStorage.removeItem('roles');
|
|
localStorage.removeItem('menus');
|
|
},
|
|
|
|
// 获取用户信息
|
|
getUser() {
|
|
const userStr = localStorage.getItem('user');
|
|
return userStr ? JSON.parse(userStr) : null;
|
|
},
|
|
|
|
// 获取用户角色
|
|
getRoles() {
|
|
const rolesStr = localStorage.getItem('roles');
|
|
return rolesStr ? JSON.parse(rolesStr) : [];
|
|
},
|
|
|
|
// 获取用户菜单
|
|
getMenus() {
|
|
const menusStr = localStorage.getItem('menus');
|
|
return menusStr ? JSON.parse(menusStr) : [];
|
|
},
|
|
|
|
// 生成菜单树
|
|
generateMenuTree(menus) {
|
|
const menuMap = {};
|
|
const menuTree = [];
|
|
|
|
// 创建菜单映射
|
|
menus.forEach(menu => {
|
|
menuMap[menu.menuId] = {
|
|
...menu,
|
|
children: []
|
|
};
|
|
});
|
|
|
|
// 构建菜单树
|
|
menus.forEach(menu => {
|
|
const menuItem = menuMap[menu.menuId];
|
|
if (menu.parentId === 0) {
|
|
menuTree.push(menuItem);
|
|
} else {
|
|
const parentMenu = menuMap[menu.parentId];
|
|
if (parentMenu) {
|
|
parentMenu.children.push(menuItem);
|
|
}
|
|
}
|
|
});
|
|
|
|
return menuTree;
|
|
},
|
|
|
|
// 渲染菜单
|
|
renderMenu(menuTree) {
|
|
const menuHtml = menuTree.map(menu => {
|
|
if (menu.children && menu.children.length > 0) {
|
|
return `
|
|
<el-sub-menu index="${menu.menuId}">
|
|
<template #title>
|
|
<el-icon><component is="${menu.icon || 'Menu'}"></component></el-icon>
|
|
<span>${menu.menuName}</span>
|
|
</template>
|
|
${this.renderMenu(menu.children)}
|
|
</el-sub-menu>
|
|
`;
|
|
} else {
|
|
return `
|
|
<el-menu-item index="${menu.path}">
|
|
<el-icon><component is="${menu.icon || 'Document'}"></component></el-icon>
|
|
<span>${menu.menuName}</span>
|
|
</el-menu-item>
|
|
`;
|
|
}
|
|
}).join('');
|
|
|
|
return menuHtml;
|
|
}
|
|
};
|
|
|
|
// 导出auth对象
|
|
export default auth; |