AvatarDropdown.jsx
2.08 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
import React from 'react';
import { connect } from 'umi';
import { LogoutOutlined, InfoCircleOutlined } from '@ant-design/icons';
import { Avatar, Menu, Spin } from 'antd';
import { IconFontConfig } from '@/common';
import HeaderDropdown from '../HeaderDropdown';
import styles from './index.less';
import ModalUpdatePassword from '../ModalUpdatePassword';
class AvatarDropdown extends React.Component {
onMenuClick = event => {
const { key } = event;
if (key === 'logout') {
const { dispatch } = this.props;
if (dispatch) {
dispatch({
type: 'login/logout',
});
}
return;
} else if (key === 'password') {
const { dispatch } = this.props;
dispatch({
type: 'user/changeState',
payload: {
dataModal: {
modalType: 'PASSWORD_UPDATE_MODAL',
modalShow: true,
modalData: {},
},
},
});
}
};
render() {
const {
currentUser = {
avatar: '',
name: '',
},
menu,
} = this.props;
const menuHeaderDropdown = (
<Menu className={styles.menu} selectedKeys={[]} onClick={this.onMenuClick}>
<Menu.Item key="password">
<InfoCircleOutlined />
修改密码
</Menu.Item>
<Menu.Item key="logout">
<LogoutOutlined />
退出登录
</Menu.Item>
</Menu>
);
return currentUser && currentUser.name ? (
<>
<HeaderDropdown overlay={menuHeaderDropdown}>
<span className={`${styles.action} ${styles.account}`}>
<IconFontConfig type="icon-header" style={{ fontSize: '28px' }} className="mr-10" />
<span className={styles.name}>{currentUser.name}</span>
</span>
</HeaderDropdown>
<ModalUpdatePassword />
</>
) : (
<Spin
size="small"
style={{
marginLeft: 8,
marginRight: 8,
lineHeight: '64px',
}}
/>
);
}
}
export default connect(({ user }) => ({
currentUser: user.currentUser,
}))(AvatarDropdown);