69 lines
1.6 KiB
TypeScript
Raw Normal View History

2026-01-08 16:35:06 +08:00
import { Apis } from '@/gen/Apis';
import {
LogoutOutlined,
UnlockOutlined,
UserOutlined,
} from '@ant-design/icons';
import { history } from '@umijs/max';
import { Avatar, Dropdown, MenuProps, Space } from 'antd';
import { useState } from 'react';
import { stateActions } from '../../libs/valtio/actions';
import AvatarIcon from './AvatarIcon.png';
import ChangePassword from './ChangePassword';
export default function AvatarProps({ user }: { user: any }) {
const [open, setOpen] = useState(false);
// const [openDrawer, setOpenDrawer] = useState(false);
// const showDrawer = () => {
// setOpenDrawer(true);
// };
// const onClose = () => {
// setOpenDrawer(false);
// };
const items: MenuProps['items'] = [
{
key: 'changePassword',
label: (
<Space
onClick={() => {
setOpen(true);
}}
>
<UnlockOutlined />
</Space>
),
},
{
key: 'logout',
label: (
<Space
onClick={() => {
Apis.Common.Auth.Logout().then(() => {
stateActions.setLogout();
history.push('/login');
});
}}
>
<LogoutOutlined />
退
</Space>
),
},
];
return (
<>
<Dropdown menu={{ items }} trigger={['click']}>
<a onClick={(e) => e.preventDefault()}>
<Space>
<Avatar icon={<UserOutlined />} src={AvatarIcon} size={28} />
<span>{user?.name}</span>
</Space>
</a>
</Dropdown>
<ChangePassword open={open} setOpen={setOpen} />
</>
);
}