Переглянути джерело

计算公式推送不清空bug修改1315

zhouna 6 роки тому
батько
коміт
8a6c34003f

+ 14 - 6
src/components/AssessResult/ScaleItem/index.jsx

@@ -70,8 +70,10 @@ class ScaleItem extends Component {
   }
   handleForRadio(id,idd, ind){
     const {formulaData} = this.state;
-    const obj = JSON.parse(JSON.stringify(formulaData));
+    const {calcuValues} = this.props;
+    const obj = deepClone(formulaData);
     const data = obj&&obj[id];
+    data.content = calcuValues&&calcuValues[id];
     if (data) {
       for(let z = 0; z <  data.content.details[idd].details.length; z++) {
         data.content.details[idd].details[z].state = 0;
@@ -84,7 +86,7 @@ class ScaleItem extends Component {
   }
   showFormula(id,it){
     const {formulaData} = this.state;
-    const obj = JSON.parse(JSON.stringify(formulaData)||{});
+    const obj = deepClone(formulaData)||{};
     if(!obj[id]){
       obj[id] = it;
     }
@@ -105,12 +107,16 @@ class ScaleItem extends Component {
     })
   }
   calcuFormula(j, v, ii) { //计算公式计算
-    const { calcuFormula,chronicPushItems } = this.props;
+    const { calcuFormula,chronicPushItems,calcuValues } = this.props;
     const {formulaId,formulaData} = this.state;
-    const it =formulaData&&formulaData[formulaId];
+    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
+    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) {
@@ -145,8 +151,10 @@ class ScaleItem extends Component {
   }
   handleInputformula(id,idd,text) {
     const {formulaData} = this.state;
+    const {calcuValues} = this.props;
     const obj = deepClone(formulaData);
     const data = obj&&obj[id];
+    data.content = calcuValues&&calcuValues[id];
     if (data) {
       data.content.details[idd].value = text;
     }
@@ -173,7 +181,7 @@ class ScaleItem extends Component {
         }else if(its.type==2){      //计算公式
           it=formulaData[formulaId]||deepClone(its);
           const showRes = calcuResult&&calcuResult[item.id]||it.content.result;
-          const details = calcuValues&&calcuValues[item.id]||it.content.details;
+          const details = calcuValues&&calcuValues[item.id]&&calcuValues[item.id].details||it.content.details;
           const cresult = showRes&&showRes[1]&&showRes[1].text;
                     temp = <div className={style['results']}>
                     <span>计算公式结果:</span>

+ 31 - 42
src/components/ChronicInfo/index.jsx

@@ -76,16 +76,6 @@ class ChronicInfo extends React.Component{
       printContainer: true,
       operaSupport: false,
     });
-    // setTimeout(() => {//把生成的图片和iframe删掉
-    //   let imgLis = document.querySelectorAll('.canvasImg')
-    //   let iframe = document.getElementsByTagName('iframe')
-    //   for(let i = 0;i < imgLis.length;i++){
-    //     imgLis[i].remove()
-    //   }
-    //   for(let i = 0;i < iframe.length;i++){
-    //     iframe[i].remove()
-    //   }
-    // }, 500);
   }
   
   showTableList(id){//量表按钮
@@ -112,9 +102,6 @@ class ChronicInfo extends React.Component{
       type:22,
     }
     getInfomation&&getInfomation(param);
-    /*this.setState({
-      infoId:id
-    })*/
   }
   closeInfo(){//关闭静态知识
     this.setState({
@@ -209,27 +196,31 @@ class ChronicInfo extends React.Component{
     });
   }
   handleInputformula(v,i, j,idd,  e) {
-    const { data, setChronicPush } = this.props;
+    const { data, setChronicPush,calcuValues } = this.props;
+    let data1 = JSON.parse(JSON.stringify(data));
+    if(calcuValues&&calcuValues[data1[i].id]){
+      data1[i].details[j].content=calcuValues&&calcuValues[data1[i].id];
+    }
     const text = e.target.value;
-    if (data[i].details) {
-      data[i].details[j].content.details[idd].value = text
-    } 
-    
-    const data1 = JSON.parse(JSON.stringify(data));
-    
-    setChronicPush(data1)
+    if (data1[i].details) {
+      data1[i].details[j].content.details[idd].value = text
+    }
+
+    setChronicPush(data1,data1[i].id,data1[i].details[j].content)
   }
   handleForRadio(ii,v,i, j,idd, ind){//计算公式
-    const { data, setChronicPush } = this.props;
-    if (data[i].details) {
-      for(let z = 0; z <  data[i].details[j].content.details[idd].details.length; z++) {
-        data[i].details[j].content.details[idd].details[z].state = 0
-      }
-      data[i].details[j].content.details[idd].details[ind].state = 1
-    } 
-    
+    const { data, setChronicPush,calcuValues } = this.props;
     const data1 = JSON.parse(JSON.stringify(data));
-    setChronicPush(data1)
+    if(calcuValues&&calcuValues[data1[i].id]){
+      data1[i].details[j].content=calcuValues&&calcuValues[data1[i].id];
+    }
+    if (data1[i].details) {
+      for(let z = 0; z <  data1[i].details[j].content.details[idd].details.length; z++) {
+        data1[i].details[j].content.details[idd].details[z].state = 0
+      }
+      data1[i].details[j].content.details[idd].details[ind].state = 1
+    }
+    setChronicPush(data1,data1[i].id,data1[i].details[j].content);
   }
   confirmFormula(){//计算公式确定
     this.setState({
@@ -259,8 +250,13 @@ class ChronicInfo extends React.Component{
       radioVal:Object.assign({},obj.radioVal),//不设置radioVal只有最近一次选中的值
     })
   }
-  calcuFormula(it,j, v, i) { //计算公式计算
-    const { calcuFormula, data ,chronicPushItems} = this.props;
+  calcuFormula(item,j, v, i) { //计算公式计算
+    const { calcuFormula, data ,chronicPushItems,calcuValues} = this.props;
+    let pushObj = deepClone(chronicPushItems);
+    if(calcuValues&&calcuValues[pushObj[i].id]){
+      pushObj[i].details[j].content=calcuValues&&calcuValues[pushObj[i].id];
+    }
+    let it = pushObj[i].details[j];
     let allHasInfo = true;
     for (let i = 0; i < it.content.details.length; i++) {
       if(it.content.details[i].controlType == 2) {  //输入框类型的有没有填值
@@ -281,15 +277,14 @@ class ChronicInfo extends React.Component{
 
     }
     if(allHasInfo) { //所有都有值,则计算
-      // delete it.content.resultz
       let param = {
         type: 2,
         data: it,
         disId: v.id,
         pIndex: j,
         ppIndex: i
-      }
-      calcuFormula({param,chronicPushItems})
+      };
+      calcuFormula({param,chronicPushItems:pushObj})
     } else {  //不是所有值都填过了
       Notify.info('请填写计算公式内容')
     }
@@ -304,12 +299,6 @@ class ChronicInfo extends React.Component{
                                 <img src={infoPic} className={style["infoPic"]} onClick={this.showInfo.bind(this,v.id)}/>
                               </p>:''}
-                      {/*<MiniToast title='静态知识'
-                                icon={allTableIcon}
-                                show={infoId&&infoId==v.id?true:false}
-                                close={this.closeInfo}>
-                          {pureText}
-                      </MiniToast>*/}
                       {v.details&&v.details.map((it,j)=>{
                         if(it.type==1){
                           return <p>
@@ -329,7 +318,7 @@ class ChronicInfo extends React.Component{
                         }else if(it.type==2){
                           const cres = calcuResult&&calcuResult[v.id]||it.content.result;
                           const result = cres&&cres[1]&&cres[1].text;
-                          const details = it.content.details;
+                          const details = calcuValues&&calcuValues[v.id]&&calcuValues[v.id].details||it.content.details;
                           return <div className={style["marTop"]}>
                             <span className={style["limit"]}>
                               计算公式结果:

+ 1 - 1
src/containers/AssessResult.js

@@ -95,7 +95,7 @@ function mapDispatchToProps(dispatch) {
 
 function parseChartData(indexData){
   let arr=[],obj={},temp={};
-  let nameArr=[],nameObj={};  //暂弃
+  let nameArr=[],nameObj={};
   if(!indexData){
     return [];
   }

+ 7 - 12
src/containers/ChronicInfo.js

@@ -8,6 +8,7 @@ import {saveClickNum} from '@store/async-actions/homePage';
 import { getFormulaResult } from '@store/async-actions/fetchModules'
 import {deepClone} from '@utils/tools';
 import Notify from '@commonComp/Notify';
+import {SET_CALCU_VALUES} from "../store/types/pushMessage";
 
 function mapStateToProps(state){
   const {pushMessage,assessResult} = state;
@@ -20,6 +21,7 @@ function mapStateToProps(state){
     scaleInfo: pushMessage.scaleInfo,//量表内容
     chronicDesease:state.mainSuit.chronicDesease,//主诉存的慢病
     update:assessResult.update1,
+    cupdate:pushMessage.update,
     formulaResult:pushMessage.formulaResult, //量表信息
     indexs:assessResult.wholeIndexs,
     wholeResults:assessResult.wholeResults,     //整体评估可能结果
@@ -71,10 +73,12 @@ function mapDispatchToProps(dispatch){
       })
     },
     //设置量表推送内容
-    setChronicPush(data) {
+    setChronicPush(data,id,calcuItem) {
       dispatch({
         type: SET_CHRONIC_PUSHS,
-        data: data
+        data: data,
+        calcuItem,
+        id
       })
     },
     // 计算公式计算
@@ -87,18 +91,9 @@ function mapDispatchToProps(dispatch){
           const result = res.data.data.result;
           const content = data[param.ppIndex].details[param.pIndex].content;
           content.result =  result;
-          /*if(item.isPop){
-            dispatch({
-              type:SET_CHRONIC_CALCU_RESULT,
-              data:deepClone(result),
-              id:item.param.disId
-            });
-          }*/
           dispatch({
-            type: SET_CHRONIC_PUSHS,
-            data: deepClone(data),
+            type: SET_CALCU_VALUES,
             result:deepClone(result),
-            values:deepClone(content.details),
             id:item.param.disId
           })
         }else{

+ 8 - 10
src/store/reducers/pushMessage.js

@@ -2,7 +2,7 @@ import {CHANGE_ASSAY, CHANGE_CHECK, BILLING_ADVICE, ADD_SCHEME, SET_TIPS,  SET_T
         SET_CHANGE_ADVICE_TREATMENT, SET_CHANGE_ADVICE_ASSAY, SET_CHANGE_ADVICE_CHECK, ADD_BILLING,
         CLEAR_ALL_PUSH_MESSAGE,SHOW_TIPS_DETAILS, HIDE_TIPS_DETAILS, SET_COMMONTREATMENT, IS_FIRST_MAIN_DIAG, 
         SET_ADVICE_INPUT ,SET_CHRONIC_TABLELIST,SHOW_TABLE_LIST,SET_SCALE_INFO,SET_CHRONIC_PUSHS,
-        SAVE_TABLE_RESULT, SAVE_FOLLOW_UP, DEL_FOLLOW_UP} from '../types/pushMessage';
+        SAVE_TABLE_RESULT, SAVE_FOLLOW_UP, DEL_FOLLOW_UP,SET_CALCU_VALUES} from '../types/pushMessage';
 import {changeAssay, changeCheck, setAdvice, addScheme, setTips, setTipsDetails, setChangeAdviceTreatment, 
         setChangeAdviceAssay, setChangeAdviceCheck, addBilling, clearAllPushMessage, showTipsDetails, hideTipsDetails, 
         setCommontreatment, isFirstMainDiag, setAdviceInput, saveFollowUp, delFollowUp } from '../actions/pushMessage';
@@ -16,12 +16,7 @@ const initState = {
   check: [ //辅检
   ],
   tips: {},
-  advice: {
-    // assay: '', 
-    // check: '',
-    // scheme: [],
-    // adviceStr: '' 
-  },
+  advice: {},
   AdviceStr: '',
   tmpFlg:'',
   tableList:[],
@@ -29,7 +24,7 @@ const initState = {
   scaleInfo:{},
   showHide:{},
   calcuResult:{},
-  calcuValues:[]
+  calcuValues:{}
 };
 export default function(state = initState, action) {
   let res = Object.assign({},state);
@@ -79,10 +74,13 @@ export default function(state = initState, action) {
     case SET_CHRONIC_PUSHS:
       res.chronicPushItems = action.data;
       if(action.id){
-        res.calcuResult[action.id] = action.result;
-        res.calcuValues[action.id] = action.values;
+        res.calcuValues[action.id] = action.calcuItem;
       }
       return res;
+    case SET_CALCU_VALUES:
+      res.calcuResult[action.id] = action.result;
+      res.update = Math.random();
+      return res;
     case SET_SCALE_INFO://量表内容-量表id
       res.scaleInfo = Object.assign({},res.scaleInfo,{[action.id]:action.data});
       return res;

+ 1 - 0
src/store/types/pushMessage.js

@@ -22,5 +22,6 @@ export const SET_SCALE_INFO = 'SET_SCALE_INFO' ; //量表明细
 export const SAVE_TABLE_RESULT = 'SAVE_TABLE_RESULT' ; //量表计算结果
 export const SAVE_FOLLOW_UP = 'SAVE_FOLLOW_UP'  //保存回访时间
 export const DEL_FOLLOW_UP = 'DEL_FOLLOW_UP'  //保存回访时间
+export const SET_CALCU_VALUES = 'SET_CALCU_VALUES';  //保存计算公式数据