unis-sip/template/js/auth.js

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;