index.jsx 5.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134
  1. import React from 'react';
  2. import style from './index.less';
  3. // import mocks from '../../mock/chronicTable.js'
  4. import { Radio,CheckBtn ,Notify} from '@commonComp';
  5. import Information from '../Information';
  6. import {deepClone} from '@utils/tools.js';
  7. import {getFormulaResult} from '@store/async-actions/fetchModules.js';
  8. /**
  9. *量表 具体信息页面
  10. *title:量表标题/scaleName
  11. *data:量表内容:scaleName量表标题,calculate量表计算结果,group分组,
  12. *
  13. *
  14. **/
  15. class ScaleTableHis extends React.Component{
  16. constructor(props){
  17. super(props);
  18. }
  19. filterScale(data){//type=1为表格内容
  20. let scale = {};
  21. for(let i=0; i<data.length; i++){
  22. if(data[i].type==1){
  23. scale = data[i];
  24. }
  25. }
  26. return scale;
  27. }
  28. getContent(datas){
  29. const {tableId,result,comfirnFlag} = this.props;
  30. const scaleResult = result&&result[tableId]; //量表计算结果
  31. let content;
  32. if(datas&&datas.scaleType==1){//计分
  33. content = datas&&datas.group&&datas.group.map((v,i)=>{
  34. return <div className={style['group']}>
  35. <p className={style['groupName']}>{v.groupName}</p>
  36. {v.rows&&v.rows.map((it)=>{
  37. return <div className={style['rows']}>
  38. {it.required==1&&it.row.length>1?<span className={style['tip']}>本组选项可多选或根据需要选择某一条选项</span>:''}
  39. {it.row.map((item,index)=>{
  40. if(item.controlType==0){
  41. return <div className={style['block']} style={{border:it.required==1&&!item.isSelect?'1px solid #f00':'none'}}>
  42. {/*<p className={style['miniName']}>{item.name}</p>*/}
  43. <p className={style['miniName']}>
  44. <i>{index==0?it.indexId + '.':''}</i>
  45. {item.name}
  46. </p>
  47. {item.details&&item.details.map((vv,ii)=>{
  48. return <div className={style['item']}>
  49. <Radio label={vv.detailName+'('+vv.score+')'}
  50. isSelect={vv.select==1}
  51. disabled={true}>
  52. </Radio>
  53. {vv.state==1?<span className={style['recomand']}>(智能推荐)</span>:''}
  54. </div>
  55. })}
  56. </div>
  57. }else{
  58. return <div className={style['block']}>
  59. <p className={style['miniName']}>{item.name}</p>
  60. {item.details&&item.details.map((vv)=>{
  61. return <div className={style['item']}>
  62. <CheckBtn value={vv.detailName}
  63. label={vv.detailName}
  64. isSelect={vv.select==1}
  65. disabled={true}>
  66. </CheckBtn>
  67. {vv.state==1?<span className={style['recomand']}>(智能推荐)</span>:''}
  68. </div>
  69. })}
  70. </div>
  71. }
  72. })}
  73. </div>
  74. })}
  75. {/*<p className={style['subTotal']}>
  76. <span>计分:</span>
  77. <span></span>
  78. </p>*/}
  79. </div>
  80. })
  81. }else if(datas&&datas.scaleType==2){//不计分
  82. content = datas&&datas.rows.map((item)=>{
  83. return <div className={style['block']} style={{border:item.required==1&&!item.isSelect&&comfirnFlag?'1px solid #f00':'none'}}>
  84. <p className={style['miniName']}>{item.name}</p>
  85. {item.details&&item.details.map((vv)=>{
  86. return <div className={style['item']}>
  87. <Radio label={vv.detailName+'('+vv.result+')'}
  88. isSelect={vv.select==1}
  89. disabled={true}>
  90. </Radio>
  91. {vv.state==1?<span className={style['recomand']}>(智能推荐)</span>:''}
  92. </div>
  93. })}
  94. </div>
  95. })
  96. }
  97. return content;
  98. }
  99. render(){
  100. const {title,data,result} = this.props;
  101. const scale = data && this.filterScale(data.data);
  102. const datas = scale && scale.content && JSON.parse(scale.content);
  103. const scaleResult = datas; //量表计算结果
  104. return <div className={style['tableBox']} id="printcontent">
  105. <div className={style['printShow']}>
  106. <Information></Information>
  107. </div>
  108. <h1>{datas?datas.scaleName:''}</h1>
  109. {data &&data.data&& data.data.map((v,i)=>{
  110. if(v.type==0){
  111. return <div dangerouslySetInnerHTML={{__html:v.content}} className={style['textlh']}></div>
  112. }else{
  113. return <div className={style['textContent']}>
  114. {this.getContent(datas)}
  115. {datas&&datas.Calc==1?<div className={style['total']}>
  116. <span>总分:</span>
  117. <span>{result&&result.calcalculate&&result.calcalculate.result&&result.calcalculate.result.value +' '+ (result.calcalculate.result.text||'')}</span>
  118. </div>:<div className={style['total']}>
  119. <span>结果:</span>
  120. <span>{result&&result.calcalculate&&result.calcalculate.result&&result.calcalculate.result.value +' '+ (result.calcalculate.result.text||'')}</span>
  121. </div>}
  122. </div>
  123. }
  124. })}
  125. </div>
  126. }
  127. }
  128. export default ScaleTableHis;