index.js 7.1 KB

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