index.jsx 5.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155
  1. import React, { Component } from "react";
  2. import style from "./index.less";
  3. import { Radio,ComplexModal} 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} =obj;
  46. const {getIndexData,inquiryDate,indexData,timeTypes} = 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. indexs={wholeIndexs}
  56. formulaResult={scaleResult}
  57. result={wholeResults}
  58. disabled={true}
  59. isRecommend={item.isRecommend}></ScaleItem>;
  60. case 1: //数据来源于大数据
  61. return <ChooseItem title={name} data={list} selecteds={chooseSelecteds&&chooseSelecteds[i]} disabled={true}></ChooseItem>;
  62. case 10: //数据来源于后台
  63. return <ChartItem title={name}
  64. data={indexData||{}}
  65. timeTypes={JSON.stringify(chartTimeTypes||{})=='{}'?timeTypes&&timeTypes[i]:chartTimeTypes[i]}
  66. initFn={getIndexData}
  67. endDate={inquiryDate}
  68. pindex={i}
  69. handleChange={this.handleChartChange.bind(this,i)}></ChartItem>;
  70. default:
  71. return '';
  72. }
  73. }
  74. getAssessContent(){
  75. const { list,inquiryId } = this.props;
  76. const obj = list&&list[inquiryId];
  77. const data = obj&&obj.data;
  78. if(data&&data.length>0){
  79. return data.map((it,i)=>{
  80. return this.handoutTypes(obj,it,i);
  81. });
  82. }else{
  83. return data===null||(data&&data.length==0)?<p className={style['no-data']}>没有历史评估记录!</p>:'';
  84. }
  85. }
  86. /*componentDidMount(){
  87. const indexTimeTypes = JSON.parse(JSON.stringify(this.props.indexTimeTypes));
  88. console.log(indexTimeTypes)
  89. this.setState({
  90. chartTimeTypes:indexTimeTypes
  91. });
  92. }*/
  93. showScaleFn(item,pid){
  94. const { list,inquiryId } = this.props;
  95. const obj = list&&list[inquiryId];
  96. if(item){
  97. this.setState({
  98. tableName:item.name,
  99. tableId:item.id,
  100. showScale:!this.state.showScale
  101. });
  102. }else{
  103. this.setState({
  104. showScale:!this.state.showScale
  105. });
  106. }
  107. }
  108. onPrint(){
  109. let dom = $("#printcontent");
  110. dom.jqprint({
  111. debug: false,
  112. importCSS: true,
  113. printContainer: true,
  114. operaSupport: false,
  115. });
  116. }
  117. componentWillReceiveProps(next){
  118. if(next.inquiryId!=this.props.inquiryId){
  119. this.setState({
  120. showAssess:false
  121. });
  122. }
  123. }
  124. render() {
  125. const { loading,isChronic, list,inquiryId } = this.props;
  126. const {tableName,tableId,showScale,showAssess} = this.state;
  127. const obj = list&&list[inquiryId];
  128. const scaleFooter = <div className={style['footer']}>
  129. <span className={style['print']} onClick={this.onPrint}><img src={printIcon} alt=""/>打印</span>
  130. <span className={style['okBtn']} onClick={()=>this.showScaleFn()}>关闭</span>
  131. </div>;
  132. return <div className={style['assess-cont']}>
  133. <div className={style['assess-result']}>
  134. <p className={style['enter']}>{isChronic?'管理和评估':'推荐'}结果:{showAssess?<a onClick={this.showAssessFn}>收起结果<img src={arrowDown} /></a>:<a onClick={this.showAssessFn}>查看结果<img src={arrow} /></a>}</p>
  135. </div>
  136. <div className={style['assess-box']} style={{display:showAssess?'block':'none'}}>
  137. {loading?<p className={style['loading']}><img src={loadingIcon} alt='loading...'/></p>:''}
  138. {/*以下必须做判断再执行getAssessContent,否则再次打开评估历史时图表显示有问题,因为提前渲染*/}
  139. {showAssess?this.getAssessContent():''}
  140. </div>
  141. {showScale?<ComplexModal onclose={this.showScaleFn} footer={scaleFooter}
  142. title={tableName}
  143. icon={tableIcon}
  144. top={20}
  145. bottom={20}
  146. width={820}>
  147. <ScaleTableHis title={tableName} tableId={tableId} result={obj.scaleResult&&obj.scaleResult[tableId]} data={obj.scaleInfo&&obj.scaleInfo[tableId]}></ScaleTableHis>
  148. </ComplexModal>:''}
  149. </div>;
  150. }
  151. }
  152. export default AssessResultHis;