import React, {Suspense, useEffect, useState} from 'react';
import {Breadcrumb, Dropdown, Layout, Menu, Popconfirm} from "antd";
import {BugTwoTone, DesktopOutlined, DownOutlined, LogoutOutlined} from "@ant-design/icons";
import {Link, Outlet, useLocation, useNavigate} from "react-router-dom";
import {getCurrentUser, isAdmin} from "../service/permission";
import LogoWithName from "../images/logo-with-name.png";
import Logo from "../images/logo.png";
import FooterComponent from "./FooterComponent";
import accountApi from "../api/account";
import {routers} from "./router";
import Landing from "../components/Landing";
import {setTitle} from "../hook/title";
const {Sider, Header} = Layout;
const breadcrumbMatchMap = {
'/asset/': '资产详情',
'/user/': '用户详情',
'/role/': '角色详情',
'/user-group/': '用户组详情',
'/login-policy/': '登录策略详情',
'/command-filter/': '命令过滤器详情',
'/strategy/': '授权策略详情',
};
const breadcrumbNameMap = {};
routers.forEach(r => {
if (r.children) {
r.children.forEach(c => {
breadcrumbNameMap['/' + c.key] = c.label;
})
} else {
breadcrumbNameMap['/' + r.key] = r.label;
}
});
const ManagerLayout = () => {
const location = useLocation();
const navigate = useNavigate();
let currentUser = getCurrentUser();
let userMenus = currentUser['menus'] || [];
let menus = routers.filter(router => userMenus.includes(router.key)).map(router => {
if (router.children) {
router.children = router.children.filter(r => userMenus.includes(r.key));
}
return router;
});
let [collapsed, setCollapsed] = useState(false);
let _current = location.pathname.split('/')[1];
let [current, setCurrent] = useState(_current);
let [logo, setLogo] = useState(LogoWithName);
let [logoWidth, setLogoWidth] = useState(140);
let [openKeys, setOpenKeys] = useState(JSON.parse(sessionStorage.getItem('openKeys')));
useEffect(() => {
setCurrent(_current);
setTitle(breadcrumbNameMap['/' + _current]);
}, [_current]);
const pathSnippets = location.pathname.split('/').filter(i => i);
const extraBreadcrumbItems = pathSnippets.map((_, index) => {
const url = `/${pathSnippets.slice(0, index + 1).join('/')}`;
let label = breadcrumbNameMap[url];
if (!label) {
for (let k in breadcrumbMatchMap) {
if (url.includes(k)) {
label = breadcrumbMatchMap[k];
break;
}
}
}
return (