import React, { PureComponent } from 'react'; import { Menu, Icon, Spin, Tag, Dropdown, Avatar, Divider, Tooltip } from 'antd'; import moment from 'moment'; import groupBy from 'lodash/groupBy'; import Debounce from 'lodash-decorators/debounce'; import { Link } from 'dva/router'; import NoticeIcon from '../NoticeIcon'; import HeaderSearch from '../HeaderSearch'; import styles from './index.less'; export default class GlobalHeader extends PureComponent { componentWillUnmount() { this.triggerResizeEvent.cancel(); } getNoticeData() { const { notices = [] } = this.props; if (notices.length === 0) { return {}; } const newNotices = notices.map(notice => { const newNotice = { ...notice }; if (newNotice.datetime) { newNotice.datetime = moment(notice.datetime).fromNow(); } // transform id to item key if (newNotice.id) { newNotice.key = newNotice.id; } if (newNotice.extra && newNotice.status) { const color = { todo: '', processing: 'blue', urgent: 'red', doing: 'gold', }[newNotice.status]; newNotice.extra = ( {newNotice.extra} ); } return newNotice; }); return groupBy(newNotices, 'type'); } toggle = () => { const { collapsed, onCollapse } = this.props; onCollapse(!collapsed); this.triggerResizeEvent(); }; /* eslint-disable*/ @Debounce(600) triggerResizeEvent() { const event = document.createEvent('HTMLEvents'); event.initEvent('resize', true, false); window.dispatchEvent(event); } render() { const { currentUser = {}, collapsed, fetchingNotices, isMobile, logo, onNoticeVisibleChange, onMenuClick, onNoticeClear, } = this.props; const menu = ( 个人中心 设置 触发报错 退出登录 ); const noticeData = this.getNoticeData(); return (
{isMobile && [ logo , , ]}
{ console.log('input', value); // eslint-disable-line }} onPressEnter={value => { console.log('enter', value); // eslint-disable-line }} /> { console.log(item, tabProps); // eslint-disable-line }} onClear={onNoticeClear} onPopupVisibleChange={onNoticeVisibleChange} loading={fetchingNotices} popupAlign={{ offset: [20, -16] }} > {currentUser.name ? ( {currentUser.name} ) : ( )}
); } }