Explorar el Código

计算结果同步,未完

zhouna hace 6 años
padre
commit
800534ded5

+ 15 - 13
src/components/AssessResult/ScaleItem/index.jsx

@@ -7,7 +7,6 @@ import checkIcon from '@common/images/check.png';
 import {ComplexModal,MiniToast,Radio} from '@commonComp';
 import Notify from '@commonComp/Notify';
 import {deepClone} from '@utils/tools';
-import $ from "jquery";
 /**
  * 来源于页面选择
  *
@@ -16,13 +15,15 @@ class ScaleItem extends Component {
   constructor(props) {
     super(props);
     this.$area = React.createRef();
+    const {result}= props;
+    let radioVal = result&&result.radioVal;
     this.state = {
       scaleId:'',
       scaleName:'',
       parentId:'',
       showScale:false,
       optionId:'',
-      radioVal:props.radioVal||{},
+      radioVal:Object.assign({},radioVal)||{},
       formulaId:'',
       text:props.text,
       formulaData:{},       //计算公式值
@@ -45,10 +46,10 @@ class ScaleItem extends Component {
       optionId:null
     })
   }
-  confirmOption(parentId){
+  confirmOption(){
     const {handleRes} = this.props;
     const {radioVal,possible} = this.state;
-    handleRes&&handleRes(parentId,{
+    handleRes&&handleRes({
       possible:Object.assign({},possible,radioVal),
       radioVal:Object.assign({},possible,radioVal),//不设置radioVal只有最近一次选中的值
     });
@@ -60,10 +61,11 @@ class ScaleItem extends Component {
     showScaleFn&&showScaleFn(item,parentId);        //显示量表
 
   }
-  handleRadio(item,parent,pIndex){
-    let {radioVal} = this.props;
+  handleRadio(item,parent){
+    let {result} = this.props;
+    let radioVal = result&&result.radioVal;
     this.setState({
-      radioVal:Object.assign({},radioVal,{[pIndex]:item.detailName})
+      radioVal:Object.assign({},radioVal,{[parent.id]:item.detailName})
     })
   }
   handleForRadio(id,idd, ind){
@@ -152,7 +154,7 @@ class ScaleItem extends Component {
     let arr = [],temp='';
     const {indexs,result,formulaResult} = this.props;
     const {optionId,formulaId,radioVal,formulaData,isFormulaConfirm} = this.state;
-    const possible=result&&result[item.id]&&result[item.id].possible;
+    const possible=result&&result.possible;
 
     item.details.map((its,j)=>{
       if(indexs[i]&&indexs[i].includes(j)){
@@ -167,10 +169,10 @@ class ScaleItem extends Component {
                         </span>;
         }else if(its.type==2){      //计算公式
           it=formulaData[formulaId]||deepClone(its);
-          const result = it.content.result&&it.content.result[1]&&it.content.result[1].text;
+          const cresult = it.content.result&&it.content.result[1]&&it.content.result[1].text;
           temp = <div className={style['results']}>
                     <span>计算公式:</span>
-                    <span className={style["blue"]} onClick={this.showFormula.bind(this,item.id,it)}>{result?result:'请选择'}</span>
+                    <span className={style["blue"]} onClick={this.showFormula.bind(this,item.id,it)}>{cresult?cresult:'请选择'}</span>
                     <img src={level1} />
                     <MiniToast title={it.content.name}
                                icon={allTableIcon}
@@ -232,7 +234,7 @@ class ScaleItem extends Component {
           it=deepClone(its);
           temp = <div className={style['results']}>
                     <span>可能结果:</span>
-                    <span onClick={this.showOption.bind(this,item.id)} className={style["blue"]}>{possible&&possible[i]?possible[i]:'请选择'}</span>
+                    <span onClick={this.showOption.bind(this,item.id)} className={style["blue"]}>{possible&&possible[item.id]?possible[item.id]:'请选择'}</span>
                     <img src={level1} />
                     <MiniToast title='结果选择'
                          icon={checkIcon}
@@ -245,7 +247,7 @@ class ScaleItem extends Component {
                           {it.content.details&&it.content.details.map((lis,ind)=>{
                             return <div className={style["chooseItem"]}>
                               <Radio label={lis.detailName}
-                                     isSelect={radioVal&&radioVal[i]==lis.detailName}
+                                     isSelect={radioVal&&radioVal[item.id]==lis.detailName}
                                      handleClick={this.handleRadio.bind(this,lis,item,i)}>
                               </Radio>
                             </div>
@@ -278,7 +280,7 @@ class ScaleItem extends Component {
     });
   }
   render() {
-    const {title,handleInp,disabled,isRecommend,formulaResult} = this.props;console.log(formulaResult)
+    const {title,handleInp,disabled,isRecommend,formulaResult} = this.props;
     return <div className={style['assess-item']}>
       {isRecommend?'':<h2>{title}</h2>}
       <div className={style['item-content']}>

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

@@ -13,14 +13,18 @@ class AssessResult extends Component {
     super(props);
     const chooseSelecteds = JSON.parse(JSON.stringify(props.chooseSelecteds)||{});
     const wholeIndexs = JSON.parse(JSON.stringify(props.wholeIndexs)||{});      //深度复制,Object.assgin为浅复制,下下级会同源
-    const wholeResults = JSON.parse(JSON.stringify(props.wholeResults)||{});
+    //const wholeResults = JSON.parse(JSON.stringify(props.wholeResults)||{});
+
     this.state={
       chooseSelecteds:chooseSelecteds,     //大数据选择模块
       chartTimeTypes:{},      //图表模块
       wholeAssessItems:wholeIndexs,     //整体评估模块
       wholeAssessText:props.wholeAssessText||'',     //整体评估补充说明
-      wholeResults:wholeResults,
-    }
+      wholeResults:{
+        possible:Object.assign({},props.possible),
+        radioVal:Object.assign({},props.radioVal)
+      },
+    };
     this.handleChooseChange = this.handleChooseChange.bind(this);
     this.handleScaleDel = this.handleScaleDel.bind(this);
     this.handleScaleText = this.handleScaleText.bind(this);
@@ -43,9 +47,9 @@ class AssessResult extends Component {
       wholeAssessItems: items
     });
   }
-  handleResult(pid,opt){
+  handleResult(opt){
     const {wholeResults} = this.state.wholeResults;
-    const res = Object.assign({},wholeResults,{[pid]:opt});
+    const res = Object.assign({},wholeResults,opt);
     this.setState({
       wholeResults:res
     });
@@ -74,7 +78,7 @@ class AssessResult extends Component {
     isAssessConfirm&&handleSave(this.state,readyKeepHistory());
   }
   handoutTypes(item,i){
-    const {getIndexData,indexData,timeTypes,wholeAssessData,closeAssess,showScaleFn,calcuFormula,isRecommend,chronicPushItems,formulaResult} =this.props;
+    const {getIndexData,indexData,timeTypes,wholeAssessData,closeAssess,showScaleFn,calcuFormula,isRecommend,chronicPushItems,formulaResult,possible,radioVal} =this.props;
     const {chooseSelecteds,wholeAssessItems,wholeAssessText,chartTimeTypes,wholeResults} = this.state;
     const chartData = indexData;
     const name = item.regionName+":";

+ 10 - 6
src/components/ChronicInfo/index.jsx

@@ -226,10 +226,10 @@ class ChronicInfo extends React.Component{
       formulaId:null
     });
   }
-  handleRadio(item,parent,pIndex){//可能结果
+  handleRadio(item,parent){//可能结果
     let {radioVal} = this.props;
     this.setState({
-      radioVal:Object.assign({},radioVal,{[pIndex]:item.detailName})
+      radioVal:Object.assign({},radioVal,{[parent.id]:item.detailName})
     })
   }
   confirmOption(parent,pIndex){//可能结果确定
@@ -405,7 +405,7 @@ class ChronicInfo extends React.Component{
                           return <div className={style["marTop"]}>
                             <span className={style["limit"]}>
                               可能结果:
-                              <i onClick={this.showOption.bind(this,v.id)} className={style["blue"]}>{possible[i]?possible[i]:'请选择'}</i>
+                              <i onClick={this.showOption.bind(this,v.id)} className={style["blue"]}>{possible[v.id]?possible[v.id]:'请选择'}</i>
                               <img src={level1} />
                             </span>
                             {indexs[i]&&indexs[i].includes(j)?<span className={style["addResult"]}>
@@ -427,8 +427,8 @@ class ChronicInfo extends React.Component{
                                   {it.content.details&&it.content.details.map((lis,ind)=>{
                                     return <div className={style["chooseItem"]}>
                                       <Radio label={lis.detailName}
-                                               isSelect={radioVal[i]==lis.detailName}
-                                               handleClick={this.handleRadio.bind(this,lis,v,i)}>
+                                               isSelect={radioVal[v.id]==lis.detailName}
+                                               handleClick={this.handleRadio.bind(this,lis,v)}>
                                         </Radio>
                                     </div>
                                   })}
@@ -455,7 +455,7 @@ class ChronicInfo extends React.Component{
       <span className={style['okBtn']} onClick={()=>this.closeTable()}>确定</span>
     </div>;
     const {chronicMagItem,tableList,saveAssessInfos,chronicDesease,formulaResult,showHide,calcuFormula} = this.props;
-    const {showAssess,isAssessConfirm,tableName,tableId,parentId,parentIndex,isRecommendConfirm,showRecommend} = this.state;
+    const {showAssess,isAssessConfirm,tableName,tableId,parentId,parentIndex,isRecommendConfirm,showRecommend,radioVal,possible} = this.state;
     return <div className={style["tips"]} style={{marginBottom:'15px'}}>
               <div className={`${style["tips-title"]} ${style["chronic"]}`}>
                 <div className={style["tips-name"]}>
@@ -518,6 +518,8 @@ class ChronicInfo extends React.Component{
                               closeAssess={this.showAssessFn}
                               showScaleFn={this.showTable.bind(this)}
                               calcuFormula={calcuFormula}
+                              radioVal={radioVal}
+                              possible={possible}
                               isAssessConfirm={isAssessConfirm}></AssessResult>
               </ComplexModal>:''}
               {showRecommend?<ComplexModal onclose={this.showRecommendFn} footer={recFooter}
@@ -531,6 +533,8 @@ class ChronicInfo extends React.Component{
                               isRecommend={true}
                               showScaleFn={this.showTable.bind(this)}
                               calcuFormula={calcuFormula}
+                              radioVal={radioVal}
+                              possible={possible}
                               isAssessConfirm={isRecommendConfirm}></AssessResult>
               </ComplexModal>:''}
       </div>

+ 10 - 8
src/containers/ChronicInfo.js

@@ -8,17 +8,19 @@ import {saveClickNum} from '@store/async-actions/homePage';
 import { getFormulaResult } from '@store/async-actions/fetchModules'
 
 function mapStateToProps(state){
+  const {pushMessage,assessResult} = state;
   return{
     chronicMagItem: state.diagnosticList.chronicMagItem,//慢病疾病
-    chronicPushItems: state.pushMessage.chronicPushItems, //慢病右侧推送
-    tableList: state.pushMessage.tableList,
-    showList: state.pushMessage.showList,
-    showHide: state.pushMessage.showHide,
-    scaleInfo: state.pushMessage.scaleInfo,//量表内容
+    chronicPushItems: pushMessage.chronicPushItems, //慢病右侧推送
+    tableList: pushMessage.tableList,
+    showList: pushMessage.showList,
+    showHide: pushMessage.showHide,
+    scaleInfo: pushMessage.scaleInfo,//量表内容
     chronicDesease:state.mainSuit.chronicDesease,//主诉存的慢病
-    update:state.assessResult.update1,
-    formulaResult:state.pushMessage.formulaResult, //量表信息
-    indexs:state.assessResult.wholeIndexs,
+    update:assessResult.update1,
+    formulaResult:pushMessage.formulaResult, //量表信息
+    indexs:assessResult.wholeIndexs,
+    wholeResults:assessResult.wholeResults,     //整体评估可能结果
   }
 }