index.js 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109
  1. import { Layout, Dropdown ,Menu } from 'antd';
  2. import { withRouter } from 'react-router'
  3. import { useState, useEffect } from 'react';
  4. import { useSelector,useDispatch } from 'react-redux';
  5. import { panesNow } from '@reducers/tabPanes.js';
  6. import utils from '@utils/index';
  7. import logo from '@images/logo.png';
  8. import msg from '@images/msg.png';
  9. import me from '@images/me.png';
  10. import down from '@images/down.png';
  11. import './index.less'
  12. import {message} from "antd/lib/index";
  13. import { setSys,setUser } from '@reducers/userInfo.js';
  14. import apiObj from '@api/index';
  15. const {xPost,api} = apiObj;
  16. const propTypes = {
  17. }
  18. const defaultProps = {};
  19. const { Header } = Layout;
  20. const { getTimeDetail } = utils;
  21. function AHeader({ history,hideName }){
  22. const dispatch = useDispatch();
  23. const [dateTime,setDateTime] = useState('');
  24. const { user, sysName} = useSelector((state)=>{
  25. return state.userInfo;
  26. });
  27. //退出
  28. function loginOut(){
  29. localStorage.removeItem("token");
  30. localStorage.removeItem("systemId");
  31. localStorage.removeItem("hospitalId");
  32. dispatch(panesNow([]));
  33. history.push('/login');
  34. }
  35. //获取组织列表
  36. function getOrgList(){
  37. xPost(api.getUserHospitals).then((res)=>{
  38. if(res.data.code===200){
  39. const data = res.data.data;
  40. const { userInfo,software } = data;
  41. const sysId = localStorage.getItem("systemId");
  42. const hisId = localStorage.getItem("hospitalId");
  43. const sys = software.find((it)=>{
  44. return +it.id===+sysId
  45. });
  46. dispatch(setUser(userInfo));
  47. sys&&dispatch(setSys({sysId,sysName:sys.name,hisId}));
  48. }else{
  49. message.warning(res.data.msg||'获取医院列表失败');
  50. }
  51. })
  52. }
  53. //修改密码
  54. function changePsd(){
  55. }
  56. //时间
  57. let interVal;
  58. function countTime(){
  59. interVal = setInterval(()=>{
  60. setDateTime(getTimeDetail())
  61. },1000);
  62. }
  63. useEffect(()=>{
  64. countTime();
  65. if(!user.name){
  66. getOrgList();
  67. }
  68. return function clearUp(){
  69. clearInterval(interVal)
  70. }
  71. },[]);
  72. const menu = (
  73. <Menu>
  74. <Menu.Item key="0">
  75. <span className='changePsd' onClick={changePsd}>修改密码</span>
  76. </Menu.Item>
  77. <Menu.Divider/>
  78. <Menu.Item key="3" onClick={loginOut}>退出</Menu.Item>
  79. </Menu>
  80. );
  81. return (
  82. <Header className='page-header'>
  83. <img className='logo' src={logo} alt=""/>
  84. {hideName?'':<><span className='break-line'>|</span>
  85. <span className='sys-name'>{sysName}</span></>}
  86. <div className='infos'>
  87. <span className='time'>{dateTime}</span>
  88. <span className='break-line'>|</span>
  89. {/*<img className='msg-icon' src={msg} alt="未读消息"/>*/}
  90. <div className="user">
  91. <Dropdown overlay={menu} trigger={['click']}>
  92. <span className="ant-dropdown-link" onClick={e => e.preventDefault()}>
  93. <img className='user-icon' src={me} alt="用户头像"/>
  94. <i className='user-name'>{user.name}</i>
  95. <img src={down} alt=""/>
  96. </span>
  97. </Dropdown>
  98. </div>
  99. </div>
  100. </Header>
  101. )
  102. }
  103. AHeader.propTypes = propTypes;
  104. AHeader.defaultProps = defaultProps;
  105. export default withRouter(AHeader);