import React, { forwardRef, useState } from 'react'; import { Space, Row } from 'antd'; import MeButton from '../pages/security/components/MeButton'; import { useSelector } from 'react-redux'; import { RootState } from '@/states/store'; import { isLoggedIn } from '../states/user_info'; import Icon from '@/components/Icon'; import { IconButton } from '@/components/IconButton'; import ExitModal from '@/components/ExitModal'; import LanguageSettingModal from '@/components/LanguageSettingModal'; import { showNotImplemented } from '@/utils/notificationHelper'; import { FormattedMessage } from 'react-intl'; import { UserOutlined } from '@ant-design/icons'; interface SystemZoneProps { onMenuClick?: (key: string) => void; } const SystemZone = forwardRef( // eslint-disable-next-line ({ onMenuClick }, ref) => { const login = useSelector((state: RootState) => isLoggedIn(state.userInfo)); const username = useSelector((state: RootState) => state.userInfo.name); const avatarUrl = useSelector((state: RootState) => state.userInfo.avatar); // 退出弹框状态管理 const [exitModalVisible, setExitModalVisible] = useState(false); // 语言设置弹框状态管理 const [languageModalVisible, setLanguageModalVisible] = useState(false); const handleExitClick = (): void => { setExitModalVisible(true); }; const handleExitModalClose = (): void => { setExitModalVisible(false); }; const handleLanguageClick = (): void => { setLanguageModalVisible(true); }; const handleLanguageModalClose = (): void => { setLanguageModalVisible(false); }; return ( } iconPlace="left" iconSize={32} // 和size 2x 保持一致 type="primary" block style={{ padding: '4px 16px' }} onClick={handleLanguageClick} > ) : ( ) ) : ( ) } iconPlace="left" iconSize={32} type="primary" block style={{ padding: '4px 16px' }} onClick={() => showNotImplemented('我的')} > {login ? username : '未登录'} } iconPlace="left" iconSize={32} type="primary" block style={{ padding: '4px 16px' }} onClick={handleExitClick} > {/* 退出选择弹框 */} {/* 语言设置弹框 */} ); } ); export default SystemZone;