index.tsx 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105
  1. import logo from '@/assets/img/logo.png'
  2. import { userStore } from '@/store/mobx'
  3. import { iMenuItem } from '@/types/router'
  4. import { validJLProject } from '@/utils/common/api'
  5. import consts from '@/utils/consts'
  6. import { Button, Dropdown, Menu, Tooltip } from "antd"
  7. import { observer } from 'mobx-react'
  8. import React, { useEffect } from 'react'
  9. import { Link } from "react-router-dom"
  10. import SvgIcon from '../SvgIcon'
  11. import styles from './index.module.scss'
  12. import './index.scss'
  13. import MenuItem from './MenuItem'
  14. interface iMenuProps {
  15. list: iMenuItem[]
  16. }
  17. const NavSider: React.FC<iMenuProps> = (props) => {
  18. const { list: MeunList } = props
  19. const handleLogout = () => {
  20. userStore.logout()
  21. }
  22. useEffect(() => {
  23. if (!userStore.isLogin) {
  24. userStore.getUserInfo()
  25. }
  26. }, [])
  27. const redirectToJL = async (e: React.MouseEvent) => {
  28. e.preventDefault()
  29. const { code = -1, data = {} } = await validJLProject()
  30. if (code === consts.RET_CODE.SUCCESS) {
  31. const { env, token } = data
  32. if (token) {
  33. let redirect
  34. if (env) {
  35. redirect = `${consts.JL_PATH.QA}/login/management?auth=${token}`
  36. } else {
  37. redirect = `${consts.JL_PATH.PROD}/login/management?auth=${token}`
  38. }
  39. window.open(redirect)
  40. }
  41. }
  42. }
  43. return (
  44. <div className="main-nav">
  45. <div className="logo"><img src={logo} /></div>
  46. <div className="nav-content">
  47. <div className="nav-top">
  48. {
  49. MeunList?.map((item: iMenuItem, idx: number) =>
  50. item.isTop && <MenuItem key={idx} item={item} />
  51. )
  52. }
  53. {
  54. userStore.userInfo.jlAuth ? <Tooltip placement='right' title='计量支付'>
  55. <a>
  56. <SvgIcon type={'xxh-jl_logo'} style={{ fontSize: 27, color: '#7786ab', cursor: 'pointer' }} onClick={redirectToJL}/>
  57. </a>
  58. </Tooltip> : null
  59. }
  60. </div>
  61. <div className="nav-footer">
  62. {
  63. MeunList?.map((item: iMenuItem, idx: number) => {
  64. if (item.path === '/console/management') {
  65. return userStore.role === 'ADMIN' ? !item.isTop && <MenuItem key={idx} item={item} /> : ''
  66. } else {
  67. return !item.isTop && <MenuItem key={idx} item={item} />
  68. }
  69. })
  70. }
  71. <div className="pi-text-center">
  72. <Dropdown overlay={() => {
  73. return (
  74. <Menu>
  75. <Menu.Item key="0">
  76. <Link to="/console/account/info">账号资料</Link>
  77. </Menu.Item>
  78. <Menu.Item key="1">
  79. <Link to="/console/account/safe">账号安全</Link>
  80. </Menu.Item>
  81. <Menu.Divider />
  82. <Menu.Item key="2">
  83. <Link to="/console/account/safe">帮助中心</Link>
  84. </Menu.Item>
  85. <Menu.Item key="3">
  86. {/* <Link to="/login">退出登录</Link> */}
  87. <span onClick={() => handleLogout()}>退出登录</span>
  88. </Menu.Item>
  89. </Menu>
  90. )
  91. }} trigger={[ 'click' ]} placement="topRight">
  92. <Button size="small" className={styles.bottomBtn}>{userStore.menuBtnText?.slice(-3)}</Button>
  93. </Dropdown>
  94. </div>
  95. </div>
  96. </div>
  97. </div>
  98. )
  99. }
  100. export default observer(NavSider)