import React, { useState, useEffect } from "react"; import { LockOutlined, UserOutlined, LogoutOutlined, SearchOutlined, } from "@ant-design/icons"; import { Layout, Menu, theme, Dropdown, Tooltip, Avatar, Button } from "antd"; import { Outlet, useLocation, history, useOutletContext } from "umi"; import { doFetch } from "@/utils/doFetch"; import Fade from "react-reveal/Fade"; const { Header, Content, Footer, Sider } = Layout; function Headers({ currentUser, children, broken }) { const { token: { colorBgContainer, colorTextBase }, } = theme.useToken(); const items = [ { key: "1", label: ( <span target="_blank" rel="noopener noreferrer"> 个人中心 </span> ), icon: <UserOutlined />, }, { key: "2", label: ( <span target="_blank" rel="noopener noreferrer"> 修改密码 </span> ), icon: <LockOutlined />, }, { key: "4", danger: true, label: "退出登录", icon: <LogoutOutlined />, }, ]; return ( <Header style={{ padding: 0, background: colorBgContainer, display: "flex", justifyContent: "space-between", alignItems: "center", marginTop: 10, }} > <div style={{ marginLeft: 24 }} className="centerl"> {broken && children} <Button icon={<SearchOutlined></SearchOutlined>} type="text" shape="circle" ></Button> </div> <div style={{ marginRight: 24, gap: 12 }} className="centerl"> <Dropdown menu={{ items, onClick: (e) => { switch (e.key) { case 1: history.push("/mycenter"); break; case 4: doFetch({ url: "/webtool/logout", params: {} }).then( (res) => { localStorage.removeItem("TOKENES"); history.push("/user/login"); } ); break; default: break; } }, }} placement="bottom" > <Avatar size={"large"} src={currentUser?.head_url}></Avatar> </Dropdown> <b>{currentUser?.name ?? "-"}</b> </div> </Header> ); } export default Headers;