index.jsx 7.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156
  1. import React, { Component } from "react";
  2. import style from "./index.less";
  3. import { getStatusImg, filterDataArr, filterOtherDataArr,timestampToTime } from '@utils/tools';
  4. import Notify from '@commonComp/Notify';
  5. import Information from '../Information';
  6. import PreviewInspect from './Inspect';
  7. import ItemPart from './ItemPart';
  8. import $ from "jquery";
  9. import AssessResultHis from '@containers/AssessResultHis'
  10. class PreviewBody extends Component {
  11. constructor(props) {
  12. super(props)
  13. this.state = {
  14. dateTime: "",
  15. }
  16. this.getCurrentDate = this.getCurrentDate.bind(this);
  17. this.onPrint = this.onPrint.bind(this);
  18. }
  19. componentDidMount() {
  20. this.getCurrentDate();
  21. }
  22. onPrint() {
  23. $("#content").jqprint({
  24. debug: false,
  25. importCSS: true,
  26. printContainer: true,
  27. operaSupport: false,
  28. });
  29. this.props.onClose()
  30. }
  31. surePrint(jsonStr) {
  32. if (filterDataArr(JSON.parse(jsonStr.chief)) == '') {
  33. Notify.info('主诉不能为空');
  34. return false;
  35. } else if (!jsonStr.diag || jsonStr.diag.trim().length < 1) {
  36. Notify.info('诊断不能为空');
  37. return false;
  38. } else {
  39. this.onPrint();
  40. this.props.save(true)
  41. }
  42. }
  43. getCurrentDate() {
  44. let myDate = new Date();
  45. let year = myDate.getFullYear(); //获取完整的年份(4位,1970-????)
  46. let mon = myDate.getMonth() - 0 + 1; //获取当前月份(0-11,0代表1月)
  47. let day = myDate.getDate(); //获取当前日(1-31)
  48. let date = year + '-' + (mon < 10 ? '0' + mon : mon) + '-' + (day < 10 ? '0' + day : day);
  49. this.setState({ dateTime: date })
  50. }
  51. showDetails(val) {
  52. let min = val.minValue, max = val.maxValue, value = val.value, dom = '';
  53. if (!isNaN(min) && !isNaN(max)) {//有最大值最小值
  54. if (isNaN(value)) {//输入的不是数据
  55. dom = getStatusImg(1, value, 1)
  56. } else if (value <= min) {//下降
  57. dom = getStatusImg(3, value, 1)
  58. } else if (value >= max) {//上升
  59. dom = getStatusImg(2, value, 1)
  60. } else {//正常
  61. dom = getStatusImg(0, value, 1)
  62. }
  63. } else if (isNaN(min) && !isNaN(max)) {//有最大值无最小值
  64. if (value >= max) {//上升
  65. dom = getStatusImg(2, value, 1)
  66. } else {//正常
  67. dom = getStatusImg(0, value, 1)
  68. }
  69. } else if (!isNaN(min) && isNaN(max)) {//有最小值无最大值
  70. if (value <= min) {//下降
  71. dom = getStatusImg(3, value, 1)
  72. } else {//正常
  73. dom = getStatusImg(0, value, 1)
  74. }
  75. } else {//无最大最小值
  76. dom = getStatusImg(1, value, 1)
  77. }
  78. if (val.questionDetailList.length > 0) {
  79. return val.questionDetailList.map((item) => {
  80. if (val.value == item.name) {
  81. return <td className={style.assistTableTdSec}><span style={{ color: item.abnormal != '0' ? "red" : null }}>{val.value}</span> {val.labelSuffix}</td>
  82. }
  83. })
  84. } else {
  85. return <td className={style.assistTableTdSec}>{dom} {val.labelSuffix}</td>
  86. }
  87. }
  88. toTime(time){
  89. let tmpTim = time.split(',').join('')-0
  90. if(time && tmpTim.toString() != 'NaN'){
  91. let date = new Date('1900-01-01');
  92. let dateTim = date.getTime();
  93. let times = (tmpTim-2)*24*60*60*1000;
  94. let result = timestampToTime(dateTim+times).split(' ')[0]
  95. return result;
  96. }else{
  97. return time;
  98. }
  99. }
  100. render() {
  101. const { show, preInfo, dataJson, dataStr, baseObj, flg ,showAssessBtn,showHistoryCases} = this.props;
  102. const other_yjs = dataStr.other?filterOtherDataArr(JSON.parse(dataStr.other),dataJson.other):'';
  103. const isChronic = (dataJson.diagChronicMagItem&&dataJson.diagChronicMagItem.name)||(dataJson.mainChronicDesease&&dataJson.mainChronicDesease.name);
  104. const noData = JSON.stringify(preInfo) == '{}';
  105. return <div className={style['content']} style={{ width: flg ? '700' : '820' }}>
  106. <div className={style['contents']} id="content" style={{ margin: "0 auto", maxWidth: "620px" }}>
  107. <Information baseObj={baseObj} preInfo={preInfo}></Information>
  108. <table className={style['infos']}>
  109. <ItemPart dataStr={dataStr.chief} title={'主诉:'} type={1}></ItemPart>
  110. <ItemPart dataStr={dataStr.present} title={'现病史:'} type={1}></ItemPart>
  111. <ItemPart dataStr={dataStr.present} title={'其他史:'} dataJson={dataJson} other_yjs={other_yjs} type={3}></ItemPart>
  112. <ItemPart dataStr={dataStr.vital} title={'查体:'} type={1}></ItemPart>
  113. <PreviewInspect dataJson={dataJson} toTime={this.toTime} dateTime={this.state.dateTime} showDetails={this.showDetails}></PreviewInspect>
  114. <ItemPart dataStr={dataStr.pacs} title={'辅检:'} type={2}></ItemPart>
  115. <ItemPart dataStr={dataStr.diag} title={'诊断:'} type={2}></ItemPart>
  116. <tr className={style['patInfoFst']}>
  117. <td className={style['patInfoSec']}>医嘱:</td>
  118. <td className={`${style['patInfoSec']} ${style['pushMessage']} ${style['font14']}`}>
  119. {((dataJson.advice.assay && dataJson.advice.assay.length > 0) || (dataJson.advice.check && dataJson.advice.assay.check > 0)) && <p className={style.pushMessageTitle}><span>开单项目</span></p>}
  120. {
  121. ((dataJson.advice.assay && dataJson.advice.assay.length > 0) || (dataJson.advice.check && dataJson.advice.assay.check > 0)) && <div className={style.pushMessageDes}>{dataJson.advice.check?dataJson.advice.check+',':''} {dataJson.advice.assay}</div>
  122. }
  123. {dataJson.advice.commontreatment && dataJson.advice.commontreatment.length > 0 && <p className={style.pushMessageTitle}><span>一般治疗</span></p>}
  124. {
  125. dataJson.advice.commontreatment && <div className={style.pushMessageDes}>{dataJson.advice.commontreatment}</div>
  126. }
  127. {dataJson.advice.followUp && dataJson.advice.followUp.length > 0 && <p className={style.pushMessageTitle}><span>回访时间:<span className={style['bbtm']}>{dataJson.advice.followUp}</span> 后回访,不适随诊</span></p>}
  128. {dataJson.advice.scheme && dataJson.advice.scheme.length > 0 && <p className={style.pushMessageTitle}><span>治疗方案</span></p>}
  129. {
  130. dataJson.advice.scheme && dataJson.advice.scheme.map((item, index) => {
  131. return <p>{item.treatment.map((it, ii) => {
  132. return (it.treatmentStr && it.treatmentStr.length > 0 ?
  133. <div className={style.pushMessageDes}>{it.treatmentStr}</div> : '')
  134. })}</p>
  135. })
  136. }
  137. {
  138. dataJson.advice.adviceInput && <div className={style.pushMessageDes}>{dataJson.advice.adviceInput}</div>
  139. }
  140. </td>
  141. </tr>
  142. </table>
  143. <p className={style.docName}>医生签名:<span>{baseObj ? baseObj.doctorName : (noData ? '' : preInfo.doctorName)}</span></p>
  144. {showAssessBtn&&isChronic?<AssessResultHis showHistoryCases={showHistoryCases} inquiryId={baseObj&&baseObj.id} inquiryDate={baseObj&&baseObj.inquiryDate}></AssessResultHis>:""}
  145. <div onClick={() => { this.surePrint(dataStr) }} className={style.printBtn} style={{
  146. display: show ? 'inline-block' : 'none',
  147. }}>打印</div>
  148. </div>
  149. </div>
  150. }
  151. }
  152. export default PreviewBody;