Header.tsx 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596
  1. import * as React from 'react';
  2. import { Layout, MenuProps, Modal, Dropdown, Select, Button, Tooltip } from 'antd';
  3. import { CaretDownOutlined, LogoutOutlined } from '@ant-design/icons';
  4. import logoSrc from '@/assets/public/logo.png';
  5. import router from '@/router';
  6. import LocalStorage from '@/LocalStorage';
  7. const { Header: AntdHeader } = Layout;
  8. interface Props {
  9. userName: string,
  10. onClickLogout: () => Promise<any>,
  11. onSelectChange: (value: number) => void; // 新增回调函数
  12. currentMenuType: number;
  13. };
  14. const Header: React.FC<Props> = (props: Props) => {
  15. const {
  16. userName,
  17. onClickLogout,
  18. onSelectChange,
  19. currentMenuType
  20. } = props;
  21. // const items: MenuProps['items'] = [
  22. // // 移除退出登录选项,现在使用独立的登出按钮
  23. // ];
  24. const fruits = [
  25. { id: 1, name: 'DeepSeek' },
  26. { id: 2, name: '智谱' },
  27. ];
  28. const [open, setOpen] = React.useState(false); // 控制下拉框展开状态
  29. const onDropdownVisibleChange = (visible: boolean) => {
  30. setOpen(visible);
  31. };
  32. return (
  33. <AntdHeader className='header'>
  34. <div className='header-logo' onClick={() => {
  35. if(LocalStorage.getStatusFlag('deepseek:application:list')){
  36. router.navigate({ pathname: '/deepseek/questionAnswer' });
  37. }
  38. }}>
  39. <img className='header-logo-picture' src={logoSrc} />
  40. <div className='header-logo-text'>
  41. 建科•小智应用广场
  42. </div>
  43. {/* <Select
  44. className='header-platform-selector'
  45. open={open}
  46. value={currentMenuType}
  47. onChange={onSelectChange}
  48. placeholder="请选择"
  49. onDropdownVisibleChange={onDropdownVisibleChange}
  50. onClick={(e) => e.stopPropagation()} // 阻止事件冒泡
  51. >
  52. {fruits.map(fruit => (
  53. <Select.Option key={fruit.id} value={fruit.id}>
  54. {fruit.name}
  55. </Select.Option>
  56. ))}
  57. </Select> */}
  58. </div>
  59. <div className='header-user-section'>
  60. <div className='header-operation'>
  61. <div className='header-operation-picture'>
  62. {userName.slice(0, 1)}
  63. </div>
  64. <div className='header-operation-name'>
  65. {userName}
  66. </div>
  67. {/* <CaretDownOutlined className='header-operation-down' /> */}
  68. </div>
  69. <Tooltip title="退出登录" placement="bottom">
  70. <Button
  71. type="text"
  72. icon={<LogoutOutlined />}
  73. className='header-logout-btn'
  74. onClick={() => {
  75. Modal.confirm({
  76. title: '提示',
  77. content: '确定退出平台吗?',
  78. async onOk() {
  79. await onClickLogout();
  80. }
  81. });
  82. }}
  83. />
  84. </Tooltip>
  85. </div>
  86. </AntdHeader>
  87. );
  88. };
  89. export default Header;