index.jsx 4.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109
  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. let content = datas&&datas.group&&datas.group.map((v,i)=>{
  30. return <div className={style['group']}>
  31. <p className={style['groupName']}>{v.groupName}</p>
  32. {v.rows&&v.rows.map((it,ind)=>{
  33. return <div>
  34. {it.row.map((item,index)=>{
  35. if(item.controlType==0){
  36. return <div className={style['block']}>
  37. <p className={style['miniName']}>{item.name}</p>
  38. {item.details&&item.details.map((vv,ii)=>{
  39. return <div className={style['item']}>
  40. <Radio label={vv.detailName+'('+vv.score+')'}
  41. isSelect={vv.select==1}
  42. disabled={true}>
  43. </Radio>
  44. {vv.state==1?<span className={style['recomand']}>(智能推荐)</span>:''}
  45. </div>
  46. })}
  47. </div>
  48. }else{
  49. return <div className={style['block']}>
  50. <p className={style['miniName']}>{item.name}</p>
  51. {item.details&&item.details.map((vv,ii)=>{
  52. return <div className={style['item']}>
  53. <CheckBtn value={vv.detailName}
  54. label={vv.detailName}
  55. disabled={true}
  56. isSelect={vv.select==1}>
  57. </CheckBtn>
  58. {vv.state==1?<span className={style['recomand']}>(智能推荐)</span>:''}
  59. </div>
  60. })}
  61. </div>
  62. }
  63. })}
  64. </div>
  65. })}
  66. {v.groupCalculate.isShow==1?<p className={style['subTotal']}>
  67. <span>计分:</span>
  68. {/*<span>{v.groupCalculate.result.value}</span>*/}
  69. <span>{scaleResult&&scaleResult.group.map((m,ii)=>{
  70. if(m.groupName==v.groupName){
  71. return m.groupCalculate.result.value;
  72. }
  73. })}</span>
  74. </p>:''}
  75. </div>
  76. })
  77. return content;
  78. }
  79. render(){
  80. const {title,data,result} = this.props;
  81. const scale = data && this.filterScale(data);
  82. const datas = scale && scale.content && JSON.parse(scale.content);
  83. const scaleResult = datas; //量表计算结果
  84. return <div className={style['tableBox']} id="printcontent">
  85. <div className={style['printShow']}>
  86. <Information></Information>
  87. </div>
  88. <h1>{datas?datas.scaleName:''}</h1>
  89. {data && data.map((v,i)=>{
  90. if(v.type==0){
  91. return <div dangerouslySetInnerHTML={{__html:v.content}} className={style['textlh']}></div>
  92. }else{
  93. return <div className={style['textContent']}>
  94. {this.getContent(datas)}
  95. {datas&&datas.Calc==1?<div className={style['total']}>
  96. <span>总分:</span>
  97. <span>{result&&result.calcalculate&&result.calcalculate.result&&result.calcalculate.result.value +' '+ (result.calcalculate.result.text||'')}</span>
  98. </div>:''}
  99. </div>
  100. }
  101. })}
  102. </div>
  103. }
  104. }
  105. export default ScaleTableHis;