index.jsx 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106
  1. import React, { Component } from "react";
  2. import style from "./index.less";
  3. import { Radio } from '@commonComp';
  4. import ChooseItem from "./ChooseItem";
  5. import ScaleItem from "./ScaleItem";
  6. import Information from '../Information'
  7. import ChartItem from "./ChartItem";
  8. class AssessResult extends Component {
  9. constructor(props) {
  10. super(props);
  11. const chooseSelecteds = JSON.parse(JSON.stringify(props.chooseSelecteds)||{});
  12. const wholeIndexs = JSON.parse(JSON.stringify(props.wholeIndexs)||{}); //深度复制,Object.assgin为浅复制,下下级会同源
  13. this.state={
  14. chooseSelecteds:chooseSelecteds, //大数据选择模块
  15. chartTimeTypes:{}, //图表模块
  16. wholeAssessItems:wholeIndexs, //整体评估模块
  17. wholeAssessText:props.wholeAssessText||'' //整体评估补充说明
  18. }
  19. this.handleChooseChange = this.handleChooseChange.bind(this);
  20. this.handleScaleDel = this.handleScaleDel.bind(this);
  21. this.handleScaleText = this.handleScaleText.bind(this);
  22. }
  23. componentWillMount(){
  24. //获取评估
  25. this.props.getAssess();
  26. }
  27. handleScaleText(text){
  28. this.setState({
  29. wholeAssessText:text
  30. })
  31. }
  32. handleScaleDel(i,j){
  33. const items = Object.assign({},this.state.wholeAssessItems);
  34. const inx = items[i].findIndex(x=>x==j);
  35. items[i].splice(inx,1);
  36. this.setState({
  37. wholeAssessItems: items
  38. });
  39. }
  40. handleChooseChange(i,selects){
  41. const {chooseSelecteds} = this.state;
  42. this.setState({
  43. chooseSelecteds: Object.assign(chooseSelecteds,{[i]:selects})
  44. });
  45. }
  46. handleChartChange(i,selects){
  47. const {chartTimeTypes} = this.state;
  48. this.setState({
  49. chartTimeTypes:Object.assign(chartTimeTypes,{[i]:selects})
  50. });
  51. }
  52. componentWillUnmount(){
  53. //点确定关闭弹窗时把参数传到父组件去
  54. const {handleSave,isAssessConfirm,clearChartData} = this.props;
  55. clearChartData&&clearChartData();
  56. isAssessConfirm&&handleSave(this.state);
  57. }
  58. handoutTypes(item,i){
  59. const {getIndexData,indexData,timeTypes,wholeAssessData,scaleInfo,getScaleInfo,possible,radioVal} =this.props;
  60. const {chooseSelecteds,wholeAssessItems,wholeAssessText,chartTimeTypes} = this.state;
  61. const chartData = indexData;
  62. const name = item.regionName+":";
  63. const list = item.data&&item.data.rows;
  64. switch (+item.regionType){
  65. case 0: //数据来源与右侧手动添加
  66. return <ScaleItem title={name}
  67. data={wholeAssessData}
  68. handleRemove={this.handleScaleDel}
  69. handleInp={this.handleScaleText}
  70. text={wholeAssessText}
  71. indexs={wholeAssessItems}
  72. scaleInfo={scaleInfo}
  73. possible={possible}
  74. radioVal={radioVal}
  75. getScaleData={getScaleInfo}></ScaleItem>;
  76. case 1: //数据来源于大数据
  77. return <ChooseItem title={name}
  78. data={list}
  79. handleChange={this.handleChooseChange.bind(this,i)}
  80. selecteds={chooseSelecteds[i]} ></ChooseItem>;
  81. case 10: //数据来源于后台
  82. return <ChartItem title={name}
  83. data={chartData||{}}
  84. timeTypes={JSON.stringify(chartTimeTypes)=='{}'?timeTypes&&timeTypes[i]:chartTimeTypes[i]}
  85. pindex={i}
  86. initFn={getIndexData}
  87. handleChange={this.handleChartChange.bind(this,i)}></ChartItem>;
  88. default:
  89. return '';
  90. }
  91. }
  92. render() {
  93. const { onClose, data } = this.props;
  94. return <div className={style['assess-cont']} id="AssistResult">
  95. <div className={style['printShow']}>
  96. <Information></Information>
  97. </div>
  98. {data && data.map((it, i) => {
  99. return this.handoutTypes(it, i);
  100. })}
  101. </div>;
  102. }
  103. }
  104. export default AssessResult;