index.jsx 6.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158
  1. import React, { Component } from "react";
  2. import style from "./index.less";
  3. import { Radio,ComplexModal,Notify} from '@commonComp';
  4. import arrow from '@common/images/show.png';
  5. import arrowDown from '@common/images/close.png';
  6. import loadingIcon from '@common/images/loading.gif';
  7. import ChooseItem from "../ChooseItem";
  8. import ScaleItem from "../ScaleItem";
  9. import ChartItem from "../ChartItem";
  10. import printIcon from '@common/images/team.png';
  11. import tableIcon from '@common/images/table.png';
  12. import ScaleTableHis from '@components/ScaleTableHis';
  13. import $ from "jquery";
  14. class AssessResultHis extends Component {
  15. constructor(props) {
  16. super(props);
  17. this.state={
  18. chartTimeTypes:{}, //图表模块
  19. tableName:'',
  20. tableId:'',
  21. parentIndex:0,
  22. showAssess:false, //显示收起数据
  23. };
  24. this.showAssessFn = this.showAssessFn.bind(this);
  25. this.getAssessContent = this.getAssessContent.bind(this);
  26. this.showScaleFn = this.showScaleFn.bind(this);
  27. }
  28. handleChartChange(i,selects){
  29. const {chartTimeTypes} = this.state;
  30. this.setState({
  31. chartTimeTypes:Object.assign(chartTimeTypes,{[i]:selects})
  32. });
  33. }
  34. showAssessFn(){
  35. //获取历史评估数据
  36. const {showAssess} = this.state;
  37. this.setState({
  38. showAssess:!showAssess
  39. });
  40. if(!showAssess){
  41. this.props.getAssessHis(this.props.inquiryId);
  42. }
  43. }
  44. handoutTypes(obj,item,i){
  45. const {wholeAssess,wholeIndexs,chooseSelecteds,scaleResult,wholeResults,wholeAssessText,calcuResult,calcuValues,scaleItems} =obj;
  46. const {getIndexData,inquiryDate,indexData,timeTypes,indexNames} = this.props;
  47. const {chartTimeTypes} = this.state;
  48. const name = item.regionName+":";
  49. const list = item.data&&item.data.rows;
  50. switch (+item.regionType){
  51. case 0: //数据来源与右侧手动添加
  52. return <ScaleItem title={name}
  53. data={wholeAssess}
  54. showScaleFn={this.showScaleFn}
  55. showListScale={this.showScaleFn}
  56. indexs={wholeIndexs}
  57. formulaResult={scaleResult}
  58. calcuResult={calcuResult}
  59. calcuValues={calcuValues}
  60. scaleItems={scaleItems}
  61. result={wholeResults}
  62. disabled={true}
  63. text={wholeAssessText}
  64. isRecommend={item.isRecommend}></ScaleItem>;
  65. case 1: //数据来源于大数据
  66. return <ChooseItem title={name} data={list} selecteds={chooseSelecteds&&chooseSelecteds[i]} disabled={true}></ChooseItem>;
  67. case 10: //数据来源于后台
  68. return <ChartItem title={name}
  69. data={indexData||{}}
  70. names={indexNames||{}}
  71. timeTypes={JSON.stringify(chartTimeTypes||{})=='{}'?timeTypes&&timeTypes[i]:chartTimeTypes[i]}
  72. initFn={getIndexData}
  73. endDate={inquiryDate}
  74. pindex={i}
  75. handleChange={this.handleChartChange.bind(this,i)}></ChartItem>;
  76. default:
  77. return '';
  78. }
  79. }
  80. getAssessContent(){
  81. const { list,inquiryId } = this.props;
  82. const obj = list&&list[inquiryId];
  83. const data = obj&&obj.data;
  84. if(data&&data.length>0){
  85. return data.map((it,i)=>{
  86. return this.handoutTypes(obj,it,i);
  87. });
  88. }else{
  89. return data===null||(data&&data.length==0)?<p className={style['no-data']}>没有历史评估记录!</p>:'';
  90. }
  91. }
  92. showScaleFn(item,pid){
  93. const { list,inquiryId } = this.props;
  94. const obj = list&&list[inquiryId];
  95. if(item&&item.id&&!(obj.scaleInfo&&obj.scaleInfo[item.id])){
  96. Notify.info("未保存该量表数据");
  97. return ;
  98. }
  99. if(item){
  100. this.setState({
  101. tableName:item.name,
  102. tableId:item.id,
  103. showScale:!this.state.showScale
  104. });
  105. }else{
  106. this.setState({
  107. showScale:!this.state.showScale
  108. });
  109. }
  110. }
  111. onPrint(){
  112. let dom = $("#printcontent");
  113. dom.jqprint({
  114. debug: false,
  115. importCSS: true,
  116. printContainer: true,
  117. operaSupport: false,
  118. });
  119. }
  120. componentWillReceiveProps(next){
  121. if(next.inquiryId!=this.props.inquiryId||!next.showHistoryCases){
  122. this.setState({
  123. showAssess:false
  124. });
  125. }
  126. }
  127. render() {
  128. const { loading,isChronic, list,inquiryId } = this.props;
  129. const {tableName,tableId,showScale,showAssess} = this.state;
  130. const obj = list&&list[inquiryId];
  131. const scaleFooter = <div className={style['footer']}>
  132. <span className={style['print']} onClick={this.onPrint}><img src={printIcon} alt=""/>打印</span>
  133. <span className={style['okBtn']} onClick={()=>this.showScaleFn()}>关闭</span>
  134. </div>;
  135. return <div className={style['assess-cont']}>
  136. <div className={style['assess-result']}>
  137. <p className={style['enter']}>{isChronic?'管理和评估':'推荐'}结果:{showAssess?<a onClick={this.showAssessFn}>收起结果<img src={arrowDown} /></a>:<a onClick={this.showAssessFn}>查看结果<img src={arrow} /></a>}</p>
  138. </div>
  139. <div className={style['assess-box']} style={{display:showAssess?'block':'none'}}>
  140. {loading?<p className={style['loading']}><img src={loadingIcon} alt='loading...'/></p>:''}
  141. {/*以下必须做判断再执行getAssessContent,否则再次打开评估历史时图表显示有问题,因为提前渲染*/}
  142. {showAssess?this.getAssessContent():''}
  143. </div>
  144. {showScale?<ComplexModal onclose={this.showScaleFn} footer={scaleFooter}
  145. title={tableName}
  146. icon={tableIcon}
  147. top={20}
  148. bottom={20}
  149. width={820}>
  150. <ScaleTableHis title={tableName} tableId={tableId} result={obj.scaleResult&&obj.scaleResult[tableId]} data={obj.scaleInfo&&obj.scaleInfo[tableId]}></ScaleTableHis>
  151. </ComplexModal>:''}
  152. </div>;
  153. }
  154. }
  155. export default AssessResultHis;