Ver código fonte

评估图表存值

zhouna 6 anos atrás
pai
commit
1e610cc6f3

+ 6 - 8
src/components/AssessResult/ChartItem/index.jsx

@@ -67,17 +67,17 @@ class ChartItem extends Component {
       return str;
     }
   }
-  rangChange(type,index){
-    const {initFn,handleChange,data} = this.props;
+  rangChange(type,i){
+    const {initFn,handleChange,data,pindex} = this.props;
     const times = this.getXAxisArr(type);
     const startTime=times[0];
     const endTime=times[times.length-1];
     const range = [startTime,endTime];
     const temp=this.props.timeTypes;
     if(!data[startTime+endTime]){
-      initFn&&initFn({range,rangeType:type,index});
+      initFn&&initFn({range,rangeType:type,index:i,pindex,getNew:false});
     }
-    handleChange&&handleChange(Object.assign(temp,{[index]:type}));
+    handleChange&&handleChange(Object.assign(temp,{[i]:type}));
   }
   getContainers(){
     const timeTypes = this.props.timeTypes;
@@ -90,15 +90,13 @@ class ChartItem extends Component {
     return arr;
   }
   componentDidMount(){
-    const {initFn,data} = this.props;
+    const {initFn,data,pindex} = this.props;
     const type = config.chartDismen;
     const times = this.getXAxisArr(config.chartDismen);
     const startTime=times[0];
     const endTime=times[times.length-1];
     const range = [startTime,endTime];
-    if(!data[startTime+endTime]){
-      initFn&&initFn({range,rangeType:type});
-    }
+    initFn&&initFn({range,rangeType:type,pindex,getNew:true});
   }
   render() {
     const {title} = this.props;

+ 0 - 4
src/components/AssessResult/ScaleItem/index.jsx

@@ -8,9 +8,6 @@ import deleteIcon from '@common/images/delete.png';
 class ScaleItem extends Component {
   constructor(props) {
     super(props);
-    this.state={
-      supplement:props.text||''
-    };
     this.$area = React.createRef();
     this.getItems = this.getItems.bind(this);
     this.getDetailItems = this.getDetailItems.bind(this);
@@ -51,7 +48,6 @@ class ScaleItem extends Component {
   }
   render() {
     const {title,handleInp} = this.props;
-    const {supplement} = this.state;
     return <div className={style['assess-item']}>
       <h2>{title}</h2>
       <div className={style['item-content']}>

+ 9 - 6
src/components/AssessResult/index.jsx

@@ -10,10 +10,12 @@ import ChartItem from "./ChartItem";
 class AssessResult extends Component {
   constructor(props) {
     super(props);
+    const chooseSelecteds = JSON.parse(JSON.stringify(props.chooseSelecteds));
+    const wholeIndexs = JSON.parse(JSON.stringify(props.wholeIndexs));      //深度复制,Object.assgin为浅复制,下下级会同源
     this.state={
-      chooseSelecteds:Object.assign({},props.chooseSelecteds),     //大数据选择模块
+      chooseSelecteds:chooseSelecteds,     //大数据选择模块
       chartTimeTypes:{},      //图表模块
-      wholeAssessItems:Object.assign({},props.wholeIndexs),     //整体评估模块
+      wholeAssessItems:wholeIndexs,     //整体评估模块
       wholeAssessText:props.wholeAssessText||''     //整体评估补充说明
     }
     this.handleChooseChange = this.handleChooseChange.bind(this);
@@ -51,12 +53,13 @@ class AssessResult extends Component {
   }
   componentWillUnmount(){
     //点确定关闭弹窗时把参数传到父组件去
-    const {handleSave,isAssessConfirm} = this.props;
+    const {handleSave,isAssessConfirm,clearChartData} = this.props;
+    clearChartData&&clearChartData();
     isAssessConfirm&&handleSave(this.state);
   }
   handoutTypes(item,i){
-    const {getIndexData,indexData,timeTypes,wholeAssessData,wholeIndexs} =this.props;
-    const {chooseSelecteds,wholeAssessItems,wholeAssessText} = this.state;
+    const {getIndexData,indexData,timeTypes,wholeAssessData} =this.props;
+    const {chooseSelecteds,wholeAssessItems,wholeAssessText,chartTimeTypes} = this.state;
     const chartData = indexData;
     const name = item.regionName+":";
     const list = item.data&&item.data.rows;
@@ -66,7 +69,7 @@ class AssessResult extends Component {
       case 1:     //数据来源于大数据
         return <ChooseItem title={name} data={list} handleChange={this.handleChooseChange.bind(this,i)} selecteds={chooseSelecteds[i]} ></ChooseItem>;
       case 10:   //数据来源于后台
-        return <ChartItem title={name} data={chartData||{}} timeTypes={timeTypes} initFn={getIndexData} handleChange={this.handleChartChange.bind(this,i)}></ChartItem>;
+        return <ChartItem title={name} data={chartData||{}} timeTypes={JSON.stringify(chartTimeTypes)=='{}'?timeTypes&&timeTypes[i]:chartTimeTypes[i]} pindex={i} initFn={getIndexData} handleChange={this.handleChartChange.bind(this,i)}></ChartItem>;
       default:
         return '';
     }

+ 1 - 1
src/components/ChronicInfo/index.jsx

@@ -342,7 +342,7 @@ class ChronicInfo extends React.Component{
     </div>;
     const {chronicMagItem,showList,tableList,scaleInfo,data,saveAssessInfos,chronicDesease} = this.props;
     const {showInfo,showOption,showTable,showAssess,isAssessConfirm,tableName,tableId,parentId} = this.state;
-    console.log(8989,chronicMagItem,chronicDesease);
+    //console.log(8989,chronicMagItem,chronicDesease);
     return <div className={style["tips"]} style={{marginBottom:'15px'}}>
               <div className={`${style["tips-title"]} ${style["chronic"]}`}>
                 <div className={style["tips-name"]}>

+ 10 - 15
src/containers/AssessResult.js

@@ -4,7 +4,7 @@ import AssessResult from '@components/AssessResult';
 import {ISREAD} from '@store/types/homePage.js';
 import {billing} from '@store/async-actions/pushMessage';
 import {getAssessData,getIndexData} from '@store/async-actions/fetchModules';
-import {SET_ASSESS_DATA,SET_INDEX_DATA,SET_INDEX_SUB_TYPE,REMOVE_ASSESS_ITEMS} from '@types/assessResult';
+import {SET_ASSESS_DATA,SET_INDEX_DATA,SET_INDEX_SUB_TYPE,REMOVE_ASSESS_ITEMS,CLEAR_INDEX_DATA} from '@types/assessResult';
 import store from '@store';
 
 /***
@@ -49,19 +49,7 @@ function mapDispatchToProps(dispatch) {
       });
     },
     getIndexData(param){
-      const state=store.getState();
-      const {range,rangeType,index} = param;
-      const indexData = state.assessResult.indexData;
-      const obj = indexData[range[0]+range[range.length-1]];
-      /*if(index!=undefined&&obj&&Object.keys(obj).length!=0){      //该维度已获取过数据
-        console.log(obj,rangeType,index);
-        dispatch({
-          type:SET_INDEX_SUB_TYPE,
-          index,
-          rangeType
-        });
-        return ;
-      }*/
+      const {range,rangeType,index,pindex,getNew} = param;
       dispatch(getIndexData(range)).then((res)=>{
         if(res.data.code=='0'){
           dispatch({
@@ -69,13 +57,20 @@ function mapDispatchToProps(dispatch) {
             data:parseChartData(res.data.data),
             range,
             index,
-            rangeType
+            rangeType,
+            pindex,
+            getNew
           });
         }
       }).catch(error=>{
         console.log(error);
       });
     },
+    clearChartData(){
+      dispatch({
+        type:CLEAR_INDEX_DATA
+      })
+    }
     /*removeAssessResult(pIndex,i){
       dispatch({
         type:REMOVE_ASSESS_ITEMS,

+ 11 - 5
src/store/reducers/assessResult.js

@@ -1,4 +1,4 @@
-import {SET_ASSESS_DATA,SET_INDEX_DATA,SET_SAVE_ASSESS_DATA,SET_INDEX_SUB_TYPE,ADD_ASSESS_ITEMS,REMOVE_ASSESS_ITEMS} from '@types/assessResult';
+import {SET_ASSESS_DATA,SET_INDEX_DATA,SET_SAVE_ASSESS_DATA,SET_INDEX_SUB_TYPE,ADD_ASSESS_ITEMS,REMOVE_ASSESS_ITEMS,CLEAR_INDEX_DATA} from '@types/assessResult';
 import config from "@config";
 
 const init = {
@@ -12,7 +12,7 @@ const init = {
 };
 export default (state=init,action)=>{
   const res = Object.assign({},state);
-  const {data,range,index,rangeType} = action;
+  const {data,range,index,rangeType,pindex,getNew} = action;
   switch (action.type){
     case SET_ASSESS_DATA:
       res.data = action.data;
@@ -20,14 +20,20 @@ export default (state=init,action)=>{
     case SET_INDEX_DATA:
       res.indexData[range[0]+range[1]] = data;
       Object.keys(data).map((i)=>{
-        if(i===index){
-          res.indexTimeTypes[i]=rangeType;
+        if(getNew){
+          res.indexTimeTypes[pindex]=Object.assign({},res.indexTimeTypes[pindex],{[i]:config.chartDismen});
         }else{
-          res.indexTimeTypes[i]=config.chartDismen;
+          if(i===index){
+            res.indexTimeTypes[pindex][i]=rangeType;
+          }
         }
       });
       res.update = Math.random();   //对象更新
       return res;
+    case CLEAR_INDEX_DATA:      //删除图表数据,因为图表数据为记录,需实时更新
+      res.indexData = {};
+      res.indexTimeTypes = {};
+      return res;
     case SET_INDEX_SUB_TYPE:
       if(!index){
         return res;

+ 2 - 1
src/store/types/assessResult.js

@@ -3,4 +3,5 @@ export const SET_INDEX_DATA = 'SET_INDEX_DATA';       //评估图表数据
 export const SET_SAVE_ASSESS_DATA = 'SET_SAVE_ASSESS_DATA';  //保存的评估弹窗数据
 export const SET_INDEX_SUB_TYPE = 'SET_INDEX_SUB_TYPE';   //保存单个图表时间维度
 export const ADD_ASSESS_ITEMS = 'ADD_ASSESS_ITEMS';     //加入评估
-export const REMOVE_ASSESS_ITEMS = 'REMOVE_ASSESS_ITEMS';  //整体评估删除
+export const REMOVE_ASSESS_ITEMS = 'REMOVE_ASSESS_ITEMS';  //整体评估删除
+export const CLEAR_INDEX_DATA = 'CLEAR_INDEX_DATA';     //删除图表数据