소스 검색

计算公式实时更新(266)

zhangxc 5 년 전
부모
커밋
38c429ea57
2개의 변경된 파일39개의 추가작업 그리고 38개의 파일을 삭제
  1. 23 24
      src/components/ChronicInfo/index.jsx
  2. 16 14
      src/containers/ChronicInfo.js

+ 23 - 24
src/components/ChronicInfo/index.jsx

@@ -232,26 +232,20 @@ class ChronicInfo extends React.Component{
     this.closeFormula(it);
     chronicMagItem&&this.handleAddAssessItem(v,pIndex,i);
   }
-  handleInputformula(id,calcuContent,i,cres,e) {
+  handleInputformula(id,calcuContent,i,j,idd,cres,e) {
     // const {calcuValues} = this.state;
-    const {calcuResult,calcuValues,setCalcuInfo} = this.props;
-      let obj = deepClone(calcuValues);
-    let values = (obj&&obj[id])||deepClone(calcuContent);
+    const {calcuResult,calcuValues,setCalcuInfo,data,setChronicPush} = this.props;
+    const dataCopy = deepClone(data)
+      let obj = deepClone(dataCopy[i].details[j].content.details);
+    let values = deepClone(obj);
     const txt = e.target.value;
-    values[i].value = txt.replace(/[\u4e00-\u9fa5]|[^\d.]/g,'');       //处理中文输入法的情况
-    obj[id] = values;
+    values[idd].value = txt.replace(/[\u4e00-\u9fa5]|[^\d.]/g,'');       //处理中文输入法的情况
     if(/[\u4e00-\u9fa5]|[^\d.]/g.test(txt)){
       e.target.value = txt.replace(/[\u4e00-\u9fa5]|[^\d.]/g,'');
     }
-    this.setState({
-      isCalculated:false,
-      calcuValues:obj
-    });
-    let calcuResultCopy = calcuResult&&calcuResult[id]||cres
-    for(let i = 0; i < calcuResultCopy.length; i++) {
-      calcuResultCopy[i].text = ""
-    }
-    setCalcuInfo&&setCalcuInfo(id, obj[id], calcuResultCopy)
+  
+    dataCopy[i].details[j].content.details = values
+    setChronicPush&&setChronicPush(dataCopy)
   }
   handleForRadio(id,calcuContent,i,fidx){//计算公式
     const { calcuValues } = this.state;
@@ -295,11 +289,10 @@ class ChronicInfo extends React.Component{
       radioVal:Object.assign({},obj.radioVal),//不设置radioVal只有最近一次选中的值
     })
   }
-  calcuFormula(id,it) { //计算公式计算
-    const { calcuFormula } = this.props;
+  calcuFormula(id,it,i,j) { //计算公式计算
+    const {calcuFormula, data } = this.props;
     let item = deepClone(it);
-    const values = this.state.calcuValues;
-    const calcuValues = Object.keys(values).length&&values[id]?values[id]:item.content.details;
+    const calcuValues = item.content.details
     let allHasInfo = true;
     for (let i = 0; i < calcuValues.length; i++) {
       if(calcuValues[i].controlType == 2) {  //输入框类型的有没有填值
@@ -325,7 +318,7 @@ class ChronicInfo extends React.Component{
         data: item,
         disId: id
       };
-      calcuFormula(param);
+      calcuFormula(param,data,i, j);
       this.setState({
         isCalculated:true
       });
@@ -404,9 +397,15 @@ class ChronicInfo extends React.Component{
                                 </span>
                               </p>
                         }else if(it.type==2){
-                          const cres = calcuResult&&calcuResult[v.conceptId]||it.content.result;
+                          //如果保存过,则使用保存内容
+                          // const cres = calcuResult&&calcuResult[v.conceptId]||it.content.result;
+                          //每次都取最新推送内容
+                          const cres = it.content.result || [];
                           const result = cres&&cres[1]&&cres[1].text;
-                          const details = calcuValues&&calcuValues[v.conceptId]||it.content.details;
+                          //如果保存过,则使用保存内容
+                          // const details = calcuValues&&calcuValues[v.conceptId]||it.content.details;
+                          //每次都取最新推送内容
+                          const details = it.content.details || [];
                           return <div className={style["marTop"]}>
                             <span className={style["limit"]}>
                               计算公式结果:
@@ -449,7 +448,7 @@ class ChronicInfo extends React.Component{
                                           <span>{item.isShow == '0' ? item.name+':':'请输入'+item.name+':'}</span>
                                         </td>
                                         <td>
-                                          {item.isShow == '0' ? item.value + ' ' +item.uint : <input type="text" className={style['itemInp']} placeholder="请输入"  value={item.value} onInput={this.handleInputformula.bind(this,v.conceptId,details,idd,cres)}/>}
+                                          {item.isShow == '0' ? item.value + ' ' +item.uint : <input type="text" className={style['itemInp']} placeholder="请输入"  value={item.value} onInput={this.handleInputformula.bind(this,v.conceptId,details,i,j,idd,cres)}/>}
                                         </td>
                                         <td>
                                           {item.isShow != '0'&&<span>{item.uint}</span>}
@@ -459,7 +458,7 @@ class ChronicInfo extends React.Component{
                                     }
                                 })}
                                 </table>
-                                <div className={style["forMulBtn"]} onClick={this.calcuFormula.bind(this,v.conceptId,it)}>计算</div>
+                                <div className={style["forMulBtn"]} onClick={this.calcuFormula.bind(this,v.conceptId,it,i,j)}>计算</div>
                                 <table>
                                   {cres && Array.isArray(cres) &&cres.map((itemResult, resultIndex) => {
                                     return <tr>

+ 16 - 14
src/containers/ChronicInfo.js

@@ -99,11 +99,7 @@ function mapDispatchToProps(dispatch){
         type: SET_CHRONIC_PUSHS,
         data: data
       });
-      dispatch({
-        type:SET_CALCU_VALUES,
-        data:calcuItem,
-        id
-      });
+     
     },
     setCalcuInfo(id, calcuVal, calcuResult) {
       dispatch({
@@ -118,20 +114,26 @@ function mapDispatchToProps(dispatch){
       })
     },
     // 计算公式计算
-    calcuFormula(param) {
+    calcuFormula(param,data,i, j) {
       getFormulaResult(param).then((res)=>{
         if(+res.data.code==0){
           const result = res.data.data.result;
+          const dataCopy = deepClone(data)
+          dataCopy[i].details[j].content.result = result
           dispatch({
-            type: SET_CHRONIC_CALCU_RESULT,
-            result:deepClone(result),
-            id:param.disId
+            type: SET_CHRONIC_PUSHS,
+            data: dataCopy
           });
-          dispatch({
-            type:SET_CALCU_VALUES,
-            data:param.data.content.details,
-            id:param.disId
-          })
+          // dispatch({
+          //   type: SET_CHRONIC_CALCU_RESULT,
+          //   result:deepClone(result),
+          //   id:param.disId
+          // });
+          // dispatch({
+          //   type:SET_CALCU_VALUES,
+          //   data:param.data.content.details,
+          //   id:param.disId
+          // })
         }else{
           Notify.error(res.data.msg||'计算没有结果返回');
         }