index.js 7.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160
  1. import {useEffect,useState} from 'react';
  2. import { useDispatch, useSelector } from 'react-redux'
  3. import { setSys,setUser } from '@reducers/userInfo.js';
  4. import { Radio, Row, Col,Steps, Select, Button } from 'antd';
  5. import AHeader from '../AHeader'
  6. import './index.less'
  7. import iconLb from '@images/lb.png';
  8. import iconHis from '@images/his.png';
  9. import rightIcon from '@images/right.png';
  10. import {message} from "antd/lib/index";
  11. import apiObj from '@api/index';
  12. const {api,xPost,interceptors} = apiObj;
  13. const { Step } = Steps;
  14. const {Option} = Select;
  15. function SysChoose({history}) {
  16. //const [current, setCurrent] = useState(1);
  17. const [sysId, setSysId] = useState(''); //选中的系统id
  18. const [sysName, setSysName] = useState(''); //选中的系统名称
  19. const [subHisId, setSubHisId] = useState(''); //选中的子医院id
  20. const [showId, setShowId] = useState(''); //要显示子医院列表的医院id
  21. const [orgList, setOrgList] = useState([]); //系统列表
  22. const [hisList, setHisList] = useState([]); //当前选中系统下的医院列表
  23. const dispatch = useDispatch();
  24. const steps = [
  25. {
  26. title: '选择系统',
  27. content: 'First-content',
  28. },
  29. {
  30. title: '选择组织',
  31. content: 'Second-content',
  32. },
  33. ];
  34. //系统单选
  35. function onChange(e){
  36. const id = e.target.value;
  37. const checkOrg = orgList.find((it)=>it.id===id);
  38. const his =checkOrg.hospitals;
  39. setSysId(id);
  40. setHisList(his);
  41. }
  42. //获取组织列表
  43. function getOrgList(){
  44. xPost(api.getUserHospitals).then((res)=>{
  45. if(res.data.code===200){
  46. const data = res.data.data;
  47. const { software,userInfo } = data;
  48. setOrgList(software);
  49. setSysName(software[0].name)
  50. setSysId(software[0].id);
  51. dispatch(setUser(userInfo));
  52. //默认显示第一个系统的组织
  53. setHisList(software[0]?software[0].hospitals:[]);
  54. }else{
  55. message.warning(res.data.msg||'获取医院列表失败');
  56. }
  57. }).catch(()=>{
  58. message.error("接口出错");
  59. });
  60. }
  61. //点击进入
  62. function getIn(id){
  63. dispatch(setSys({sysId,sysName,hisId:id}));
  64. interceptors({sysId,hisId:id});
  65. history.push("/manage");
  66. }
  67. //显示子医院列表,传空为隐藏,传id为显示
  68. function showSubPop(id){
  69. setShowId(id);
  70. }
  71. function onSelect(id){
  72. setSubHisId(id);
  73. }
  74. useEffect(()=>{
  75. getOrgList();
  76. },[]);
  77. return (
  78. <>
  79. <AHeader hideName={true}></AHeader>
  80. <div className="choose-container">
  81. <div className="banner">
  82. <p className='title'>欢迎登录AI病案质控平台!</p>
  83. <div className="tip-warn">
  84. <img src={iconLb} alt=""/>
  85. <span>平台检测到您的账号关联以下系统及组织,请先选择您想要进入的系统再选择要进入的组织。</span>
  86. </div>
  87. </div>
  88. <div className="content">
  89. <Steps current={1} className='steps-bar'>
  90. {steps.map(item => (
  91. <Step key={item.title} title={item.title} />
  92. ))}
  93. </Steps>
  94. <div className="steps-content">
  95. <div className="item">
  96. <div className="item-title">
  97. 选择系统(单选)
  98. </div>
  99. <div className="item-content">
  100. <Radio.Group
  101. onChange={onChange}
  102. value={sysId}>
  103. {orgList.map((it)=>{
  104. return <Radio key={it.id} value={it.id}>{it.name}</Radio>
  105. })}
  106. </Radio.Group>
  107. </div>
  108. </div>
  109. <div className="item">
  110. <div className="item-title">
  111. 选择组织(单选)
  112. </div>
  113. <div className="item-content">
  114. <div className="row-container">
  115. <Row className='item-rows-box' gutter={16}>
  116. {
  117. hisList.map((it)=>{
  118. return (
  119. <Col className="box-row" key={it.hospitalId} span={8}>
  120. <div className='card'>
  121. <div className="icon">
  122. <img src={iconHis} alt="icon"/>
  123. </div>
  124. <div className="card-content">
  125. <div className='name'>{it.hospitalName}</div>
  126. {it.type!==0?(<><a className='get-in' onClick={()=>showSubPop(it.hospitalId)}>点击选择 <img src={rightIcon} alt="箭头"/></a>
  127. {showId===it.hospitalId?<div className="pop-select">
  128. <p className='pop-title'>
  129. <span>选择子组织</span>
  130. <a className='close' onClick={()=>showSubPop('')}>收起</a>
  131. </p>
  132. <Select size='small' placeholder='请选择' onChange={(id)=>onSelect(id)} style={{ width: 278,marginRight:'6px' }}>
  133. {(it.children||[]).map((item)=>{
  134. return (<Option value={item.hospitalId} key={item.hospitalId}>{item.hospitalName}</Option>)
  135. })
  136. }
  137. </Select>
  138. <Button type='primary' size='small' onClick={()=>getIn(subHisId)}>进入</Button>
  139. </div>:''}</>):(<a className='get-in' onClick={()=>getIn(it.hospitalId)}>点击进入 <img src={rightIcon} alt="箭头"/></a>)}
  140. </div>
  141. </div>
  142. </Col>
  143. )
  144. })
  145. }
  146. </Row>
  147. </div>
  148. </div>
  149. </div>
  150. </div>
  151. </div>
  152. </div>
  153. </>
  154. )
  155. }
  156. export default SysChoose;