فهرست منبع

评估弹窗计算公式跳bug1330

zhouna 6 سال پیش
والد
کامیت
f36369462d

+ 3 - 1
src/components/AssessResult/AssessHis/index.jsx

@@ -43,7 +43,7 @@ class AssessResultHis extends Component {
     }
   }
   handoutTypes(obj,item,i){
-    const {wholeAssess,wholeIndexs,chooseSelecteds,scaleResult,wholeResults,wholeAssessText} =obj;
+    const {wholeAssess,wholeIndexs,chooseSelecteds,scaleResult,wholeResults,wholeAssessText,calcuResult,calcuValues} =obj;
     const {getIndexData,inquiryDate,indexData,timeTypes,indexNames} = this.props;
     const {chartTimeTypes} = this.state;
     const name = item.regionName+":";
@@ -55,6 +55,8 @@ class AssessResultHis extends Component {
                           showScaleFn={this.showScaleFn}
                           indexs={wholeIndexs}
                           formulaResult={scaleResult}
+                          calcuResult={calcuResult}
+                          calcuValues={calcuValues}
                           result={wholeResults}
                           disabled={true}
                           text={wholeAssessText}

+ 19 - 23
src/components/AssessResult/ScaleItem/index.jsx

@@ -7,6 +7,7 @@ import checkIcon from '@common/images/check.png';
 import {ComplexModal,MiniToast,Radio} from '@commonComp';
 import Notify from '@commonComp/Notify';
 import {deepClone} from '@utils/tools';
+import { getFormulaResult } from '@store/async-actions/fetchModules'
 /**
  * 来源于页面选择
  *
@@ -110,24 +111,18 @@ class ScaleItem extends Component {
       formulaId:null
     })
   }
-  calcuFormula(j, v, ii) { //计算公式计算
-    const { calcuFormula,chronicPushItems,calcuValues } = this.props;
+  calcuFormula() { //计算公式计算
+    const { calcuResult,handleCalcu } = this.props;
     const {formulaId,formulaData} = this.state;
     let it=formulaData&&formulaData[formulaId];
-    const rst = calcuValues&&calcuValues[formulaId];
-    if(rst){
-      it.content = rst;
-    }
-    let pushObj = deepClone(chronicPushItems);
-    pushObj[ii].details[j]=it;
     let allHasInfo = true;
     for (let i = 0; i < it.content.details.length; i++) {
       if(it.content.details[i].controlType == 2) {  //输入框类型的有没有填值
         if(!it.content.details[i].value) {
           allHasInfo = false
         }
-      } else if(it.content.details[i].controlType == 1) {
-        let hasSelect = false
+      } else if(it.content.details[i].controlType == 0) {
+        let hasSelect = false;
         for( let z = 0; z <it.content.details[i].details.length; z++) {
           if(it.content.details[i].details[z].state == 1) {
             hasSelect= true
@@ -140,15 +135,16 @@ class ScaleItem extends Component {
 
     }
     if(allHasInfo) { //所有都有值,则计算
-      // delete it.content.resultz
-      let param = {
-        type: 2,
-        data: it,
-        disId: v.id,
-        pIndex: j,
-        ppIndex: ii,
-      }
-      calcuFormula({param,chronicPushItems:pushObj})
+      let results = deepClone(calcuResult);
+      getFormulaResult({type:2,data:it}).then((res)=>{
+        if(+res.data.code==0){
+          const result = res.data.data.result;
+          results[formulaId] = result;
+          handleCalcu&&handleCalcu(results);
+        }else{
+          Notify.error(res.data.msg||'计算没有结果返回');
+        }
+      })
     } else {  //不是所有值都填过了
       Notify.info('请填写计算公式内容')
     }
@@ -168,8 +164,8 @@ class ScaleItem extends Component {
   }
   getDetailItems(item,i){
     let arr = [],temp='';
-    const {indexs,result,formulaResult,calcuResult,calcuValues,disabled} = this.props;
-    const {optionId,formulaId,radioVal,formulaData,isFormulaConfirm} = this.state;
+    const {indexs,result,formulaResult,calcuValues,disabled,calcuResult} = this.props;
+    const {optionId,formulaId,radioVal,formulaData} = this.state;
     const possible=result&&result.possible;
 
     item.details.map((its,j)=>{
@@ -233,9 +229,9 @@ class ScaleItem extends Component {
                           }
                         })}
                       </table>
-                      {disabled?"":<div className={style["forMulBtn"]} onClick={this.calcuFormula.bind(this,j, item, i)}>计算</div>}
+                      {disabled?"":<div className={style["forMulBtn"]} onClick={this.calcuFormula.bind(this)}>计算</div>}
                       <table>
-                        {showRes && Array.isArray(showRes) &&showRes.map((itemResult, resultIndex) => {
+                        {showRes && Array.isArray(showRes) &&showRes.map((itemResult) => {
                           return <tr>
                             <td>
                               <span>{itemResult.name+':'}</span>

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

@@ -26,6 +26,7 @@ class AssessResult extends Component {
         possible:props.possible,
         radioVal:props.radioVal
       },
+      calcuResult:props.calcuResult,     //计算公式结果
     };
     this.handleChooseChange = this.handleChooseChange.bind(this);
     this.handleScaleDel = this.handleScaleDel.bind(this);
@@ -77,9 +78,14 @@ class AssessResult extends Component {
       chartTimeTypes:Object.assign(chartTimeTypes,{[i]:selects})
     });
   }
+  handleCalcu(ret){
+    this.setState({
+      calcuResult:ret
+    });
+  }
   componentWillUnmount(){
     //点确定关闭弹窗时把参数传到父组件去
-    const {handleSave,isAssessConfirm,clearChartData,handleSaveCalcu,isRecommend} = this.props;
+    const {handleSave,isAssessConfirm,clearChartData,handleSaveCalcu,isRecommend,saveCalcuResult} = this.props;
     clearChartData&&clearChartData();
     if(!isRecommend&&isAssessConfirm && readyKeepHistory() == 1){
       Notify.error("主诉不能为空");
@@ -87,16 +93,20 @@ class AssessResult extends Component {
       Notify.info('诊断不能为空');
     }
     handleSaveCalcu&&handleSaveCalcu(this.state.wholeResults);
-    isAssessConfirm&&handleSave(this.state,readyKeepHistory(),isRecommend);
+    if(isAssessConfirm){
+      handleSave(this.state,readyKeepHistory(),isRecommend);
+    }else{
+      saveCalcuResult&&saveCalcuResult(this.state.calcuResult);
+    }
   }
   handoutTypes(item,i){
-    const {getIndexData,indexData,timeTypes,wholeIndexs,closeAssess,showScaleFn,calcuFormula,isRecommend,chronicPushItems,
-      formulaResult,calcuResult,calcuValues,indexNames,showListScale} =this.props;
+    const {getIndexData,indexData,timeTypes,wholeIndexs,closeAssess,showScaleFn,isRecommend,chronicPushItems,
+      formulaResult,calcuValues,indexNames,showListScale} =this.props;
     let obj = [];
     Object.keys(wholeIndexs).map((i)=>{
       obj[i]=chronicPushItems[i];
     });
-    const {chooseSelecteds,wholeAssessItems,wholeScaleItems,wholeAssessText,chartTimeTypes,wholeResults} = this.state;
+    const {chooseSelecteds,wholeAssessItems,wholeScaleItems,wholeAssessText,chartTimeTypes,wholeResults,calcuResult} = this.state;
     const chartData = indexData;
     const name = item.regionName+":";
     const list = item.data&&item.data.rows;
@@ -107,13 +117,13 @@ class AssessResult extends Component {
                           handleRemove={this.handleScaleDel}
                           handleInp={this.handleScaleText}
                           handleRes={this.handleResult}
+                          handleCalcu={this.handleCalcu.bind(this)}
                           text={wholeAssessText}
                           indexs={wholeAssessItems}
                           scaleItems ={wholeScaleItems}
                           result={wholeResults}
                           showScaleFn={showScaleFn}
                           showListScale={showListScale}
-                          calcuFormula={calcuFormula}
                           calcuResult={calcuResult}
                           calcuValues={calcuValues}
                           formulaResult={formulaResult}

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

@@ -469,7 +469,7 @@ class ChronicInfo extends React.Component{
       <span className={style['print']} onClick={this.onPrint}><img src={printIcon} alt=""/>打印</span>
       <span className={style['okBtn']} onClick={()=>this.closeTable()}>确定</span>
     </div>;
-    const {chronicMagItem,tableList,saveAssessInfos,chronicDesease,formulaResult,showHide,calcuFormula,addScaleItems,wholeScaleItems} = this.props;
+    const {chronicMagItem,tableList,saveAssessInfos,chronicDesease,formulaResult,showHide} = this.props;
     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"]}`}>
@@ -536,7 +536,6 @@ class ChronicInfo extends React.Component{
                               closeAssess={this.showAssessFn}
                               showScaleFn={this.showTable.bind(this)}
                               showListScale={this.handleListClick.bind(this)}
-                              calcuFormula={calcuFormula}
                               radioVal={radioVal}
                               possible={possible}
                               isAssessConfirm={isAssessConfirm}></AssessResult>
@@ -552,7 +551,6 @@ class ChronicInfo extends React.Component{
                               closeAssess={this.showRecommendFn}
                               isRecommend={true}
                               showScaleFn={this.showTable.bind(this)}
-                              calcuFormula={calcuFormula}
                               radioVal={radioVal}
                               possible={possible}
                               isAssessConfirm={isRecommendConfirm}></AssessResult>

+ 8 - 3
src/containers/AssessResult.js

@@ -4,8 +4,8 @@ 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,CLEAR_INDEX_DATA} from '@types/assessResult';
-import {parseChartData} from '@utils/tools';
+import {SET_ASSESS_DATA,SET_INDEX_DATA,SET_INDEX_SUB_TYPE,REMOVE_ASSESS_ITEMS,CLEAR_INDEX_DATA,SET_CHRONIC_CALCU_RESULT} from '@types/assessResult';
+import {parseChartData,deepClone} from '@utils/tools';
 
 /***
  * 管理评估逻辑:
@@ -32,7 +32,6 @@ function mapStateToProps(state) {
     chooseSelecteds:assessResult.chooseSelecteds,    //已选中的选项
     wholeAssessText:assessResult.wholeAssessText,     //整体评估补充说明
     scaleInfo: pushMessage.scaleInfo,//量表内容
-    scaleUpdate:pushMessage.scaleUpdate,
     chronicPushItems: pushMessage.chronicPushItems, //慢病右侧推送
     formulaResult:pushMessage.formulaResult,       //量表计算结果
     calcuResult:assessResult.calcuResult,      //评估弹窗可能结果计算结果
@@ -90,6 +89,12 @@ function mapDispatchToProps(dispatch) {
         type:CLEAR_INDEX_DATA
       })
     },
+    saveCalcuResult(data){
+      dispatch({
+        type: SET_CHRONIC_CALCU_RESULT,
+        data:deepClone(data)
+      })
+    }
   }
 }
 

+ 1 - 5
src/containers/ChronicInfo.js

@@ -92,14 +92,10 @@ function mapDispatchToProps(dispatch){
     },
     // 计算公式计算
     calcuFormula(item) {
-      // dispatch(getFormulaResult(item))
-      const {param,chronicPushItems} = item;
+      const {param} = item;
       getFormulaResult(param).then((res)=>{
         if(+res.data.code==0){
-          //const data = chronicPushItems;
           const result = res.data.data.result;
-          /*const content = data[param.ppIndex].details[param.pIndex].content;
-          content.result =  result;*/
           dispatch({
             type: SET_CHRONIC_CALCU_RESULT,
             result:deepClone(result),

+ 3 - 1
src/store/async-actions/print.js

@@ -144,7 +144,9 @@ function getEvaluations(base,pushMessage){
       wholeIndexs:base.wholeIndexs,
       scaleInfo:pushMessage.scaleInfo,
       scaleResult:pushMessage.formulaResult,
-      wholeResults:base.wholeResults
+      wholeResults:base.wholeResults,
+      calcuResult:base.calcuResult,
+      calcuValues:base.calcuValues
     };
 }
 

+ 6 - 1
src/store/reducers/assessResult.js

@@ -60,6 +60,7 @@ export default (state=init,action)=>{
       res.wholeScaleItems = action.wholeScaleItems||[];
       res.wholeAssessText = action.wholeAssessText||'';
       res.chooseSelecteds = action.chooseSelecteds||{};
+      res.calcuResult = action.calcuResult||{};
       return res;
     //case CLEAR_ASSESS_DATA:
     case ADD_ASSESS_ITEMS:
@@ -79,7 +80,11 @@ export default (state=init,action)=>{
       //res.wholeAssess[pIndex].details[index].add=false;
       return res;
     case SET_CHRONIC_CALCU_RESULT:
-      res.calcuResult[action.id] = action.result;
+      if(action.id){
+        res.calcuResult[action.id] = action.result;
+      }else{
+        res.calcuResult = action.data;
+      }
       res.update1= Math.random();
       return res;
     case SET_CALCU_VALUES: