import { outLogin, getUnreadCount } from './service';
|
import { LogoutOutlined } from '@ant-design/icons';
|
import { useModel } from '@umijs/max';
|
import React, { useEffect, useState } from 'react';
|
import { Access, history, useAccess } from 'umi';
|
import { flushSync } from 'react-dom';
|
import './style.less';
|
|
export type GlobalHeaderRightProps = {
|
menu?: boolean;
|
children?: React.ReactNode;
|
};
|
|
export const AvatarName = () => {
|
const { initialState } = useModel('@@initialState');
|
//
|
|
const { currentUser } = initialState || {};
|
return <span className="anticon">{currentUser?.userName || '超级管理员'}</span>;
|
};
|
|
export const AvatarDropdown: React.FC<GlobalHeaderRightProps> = ({ menu, children }) => {
|
|
const { initialState, setInitialState } = useModel('@@initialState');
|
|
const [unreadCount, setUnreadCount] = useState(0);
|
useEffect(() => {
|
// const timer = setInterval(() => {
|
// getUnreadCount().then((res: any) => {
|
// setUnreadCount(res.data || 0);
|
// });
|
// }, 1000 * 5)
|
|
// return () => clearInterval(timer);
|
}, []);
|
|
|
const onMenuClick = async () => {
|
await outLogin();
|
localStorage.clear();
|
flushSync(() => {
|
setInitialState((s) => ({ ...s, currentUser: undefined }));
|
});
|
|
}
|
|
return <div style={{ display: 'flex', alignItems: 'center', color: '#000' }}>
|
{
|
unreadCount > 0 &&
|
<div className='unread' onClick={() => { history.push('/message-notification/list') }}>
|
<div>未读提醒</div>
|
<div style={{ border: '1px solid red', borderRadius: '50%', width: '18px', lineHeight: '16px', marginLeft: '5px', textAlign: 'center', color: 'red', flexShrink: 0 }}>{unreadCount}</div>
|
</div>
|
}
|
<div className="logoOut" onClick={onMenuClick}>退出登录<LogoutOutlined style={{ marginLeft: '5px' }} /></div>
|
</div>
|
};
|