|
|
@@ -1,22 +1,16 @@
|
|
|
import React, { PureComponent } from 'react';
|
|
|
-import { Layout, Menu, Icon, Spin, Tag, Dropdown, Avatar, message, Divider } from 'antd';
|
|
|
+import { Layout, Menu, Icon, Spin, Tag, Dropdown, Avatar, Divider } 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 '../../components/NoticeIcon';
|
|
|
import HeaderSearch from '../../components/HeaderSearch';
|
|
|
-import logo from '../../assets/logo.svg';
|
|
|
import styles from './index.less';
|
|
|
|
|
|
const { Header } = Layout;
|
|
|
|
|
|
export default class GlobalHeader extends PureComponent {
|
|
|
- componentDidMount() {
|
|
|
- this.props.dispatch({
|
|
|
- type: 'user/fetchCurrent',
|
|
|
- });
|
|
|
- }
|
|
|
componentWillUnmount() {
|
|
|
this.triggerResizeEvent.cancel();
|
|
|
}
|
|
|
@@ -47,33 +41,9 @@ export default class GlobalHeader extends PureComponent {
|
|
|
});
|
|
|
return groupBy(newNotices, 'type');
|
|
|
}
|
|
|
- handleNoticeClear = (type) => {
|
|
|
- message.success(`清空了${type}`);
|
|
|
- this.props.dispatch({
|
|
|
- type: 'global/clearNotices',
|
|
|
- payload: type,
|
|
|
- });
|
|
|
- }
|
|
|
- handleNoticeVisibleChange = (visible) => {
|
|
|
- if (visible) {
|
|
|
- this.props.dispatch({
|
|
|
- type: 'global/fetchNotices',
|
|
|
- });
|
|
|
- }
|
|
|
- }
|
|
|
- handleMenuClick = ({ key }) => {
|
|
|
- if (key === 'logout') {
|
|
|
- this.props.dispatch({
|
|
|
- type: 'login/logout',
|
|
|
- });
|
|
|
- }
|
|
|
- }
|
|
|
toggle = () => {
|
|
|
- const { collapsed } = this.props;
|
|
|
- this.props.dispatch({
|
|
|
- type: 'global/changeLayoutCollapsed',
|
|
|
- payload: !collapsed,
|
|
|
- });
|
|
|
+ const { collapsed, onCollapse } = this.props;
|
|
|
+ onCollapse(!collapsed);
|
|
|
this.triggerResizeEvent();
|
|
|
}
|
|
|
@Debounce(600)
|
|
|
@@ -84,10 +54,11 @@ export default class GlobalHeader extends PureComponent {
|
|
|
}
|
|
|
render() {
|
|
|
const {
|
|
|
- currentUser, collapsed, fetchingNotices, isMobile,
|
|
|
+ currentUser, collapsed, fetchingNotices, isMobile, logo,
|
|
|
+ onNoticeVisibleChange, onMenuClick, onNoticeClear,
|
|
|
} = this.props;
|
|
|
const menu = (
|
|
|
- <Menu className={styles.menu} selectedKeys={[]} onClick={this.handleMenuClick}>
|
|
|
+ <Menu className={styles.menu} selectedKeys={[]} onClick={onMenuClick}>
|
|
|
<Menu.Item disabled><Icon type="user" />个人中心</Menu.Item>
|
|
|
<Menu.Item disabled><Icon type="setting" />设置</Menu.Item>
|
|
|
<Menu.Divider />
|
|
|
@@ -98,10 +69,12 @@ export default class GlobalHeader extends PureComponent {
|
|
|
return (
|
|
|
<Header className={styles.header}>
|
|
|
{isMobile && (
|
|
|
- [(
|
|
|
- <Link to="/" className={styles.logo} key="logo">
|
|
|
- <img src={logo} alt="logo" width="32" />
|
|
|
- </Link>),
|
|
|
+ [
|
|
|
+ (
|
|
|
+ <Link to="/" className={styles.logo} key="logo">
|
|
|
+ <img src={logo} alt="logo" width="32" />
|
|
|
+ </Link>
|
|
|
+ ),
|
|
|
<Divider type="vertical" key="line" />,
|
|
|
]
|
|
|
)}
|
|
|
@@ -128,8 +101,8 @@ export default class GlobalHeader extends PureComponent {
|
|
|
onItemClick={(item, tabProps) => {
|
|
|
console.log(item, tabProps); // eslint-disable-line
|
|
|
}}
|
|
|
- onClear={this.handleNoticeClear}
|
|
|
- onPopupVisibleChange={this.handleNoticeVisibleChange}
|
|
|
+ onClear={onNoticeClear}
|
|
|
+ onPopupVisibleChange={onNoticeVisibleChange}
|
|
|
loading={fetchingNotices}
|
|
|
popupAlign={{ offset: [20, -16] }}
|
|
|
>
|