index.jsx 4.8 KB

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