index.tsx 2.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  1. import logo from '@/assets/img/logo.png'
  2. import { userState } from '@/store/mobx'
  3. import { iMenuItem } from '@/types/router'
  4. import { Button, Dropdown, Menu } from "antd"
  5. import { observer } from 'mobx-react'
  6. import React, { Component } from 'react'
  7. import { Link } from "react-router-dom"
  8. import styles from './index.module.scss'
  9. import './index.scss'
  10. import MenuItem from './MenuItem'
  11. interface iMenuProps {
  12. list: iMenuItem[]
  13. }
  14. @observer
  15. class NavSider extends Component<iMenuProps, any> {
  16. render() {
  17. const { list: MeunList } = this.props
  18. return (
  19. <div className="main-nav">
  20. <div className="logo"><img src={logo}></img></div>
  21. <div className="nav-content">
  22. <div className="nav-top">
  23. {
  24. MeunList?.map((item: iMenuItem, idx: number) =>
  25. item.isTop && <MenuItem key={idx} item={item}></MenuItem>
  26. )
  27. }
  28. </div>
  29. <div className="nav-footer">
  30. {
  31. MeunList?.map((item: iMenuItem, idx: number) => {
  32. if (item.path === '/console/management') {
  33. return userState.role === 'ADMIN' ? !item.isTop && <MenuItem key={idx} item={item}></MenuItem> : ''
  34. } else {
  35. return !item.isTop && <MenuItem key={idx} item={item}></MenuItem>
  36. }
  37. })
  38. }
  39. <div className="pi-text-center">
  40. <Dropdown overlay={() => {
  41. return (
  42. <Menu>
  43. <Menu.Item key="0">
  44. <Link to="/acount/safe">账号资料</Link>
  45. </Menu.Item>
  46. <Menu.Item key="1">
  47. <Link to="/acount/safe">账号安全</Link>
  48. </Menu.Item>
  49. <Menu.Divider />
  50. <Menu.Item key="2">
  51. <Link to="/acount/safe">帮助中心</Link>
  52. </Menu.Item>
  53. <Menu.Item key="3">
  54. {/* <Link to="/login">退出登录</Link> */}
  55. <span onClick={() => userState.logout()}>退出登录</span>
  56. </Menu.Item>
  57. </Menu>
  58. )
  59. }} trigger={[ 'click' ]} placement="topRight">
  60. <Button size="small" className={styles.bottomBtn}>{userState.userInfo.name}</Button>
  61. </Dropdown>
  62. </div>
  63. </div>
  64. </div>
  65. </div>
  66. )
  67. }
  68. }
  69. export default NavSider