Browse Source

计算公式

zhangxc 6 years ago
parent
commit
0ea0d8b6c4

+ 2 - 2
src/components/Advice/index.jsx

@@ -66,7 +66,7 @@ class Advice extends Component{
 
   render(){
     const {advice} = this.props.pushMessage;
-    const {isRead, isFirstMainDiag, followUp, hasFollowUp, setFollowUp} = this.props
+    const {isRead, isFirstMainDiag, followUp, hasFollowUp, saveFollowUp} = this.props
     let scheme = advice.scheme && advice.scheme.map((item, index) => {
       return <p>{item.treatment.map((it,ii) =>{
         return(it.treatmentStr && it.treatmentStr.length > 0 ? 
@@ -93,7 +93,7 @@ class Advice extends Component{
             {/* {advice.commontreatment && <div className={style['treat-input']}  onInput={this.handleComTreatInput}  contentEditable={true} style = {{outline: 'none'}}></div>} */}
             {<Textarea value={advice.commontreatment} isRead={isRead} handleChangeAssistValue={this.handleComTreatInput} ></Textarea>}
         </div>}
-        {!isFirstMainDiag && <FollowUp  noTitle="true"   setFollowUp={setFollowUp} followUp = {followUp} isRead={isRead}></FollowUp>}
+        {!isFirstMainDiag && <FollowUp  noTitle="true"   setFollowUp={saveFollowUp} followUp = {followUp} isRead={isRead}></FollowUp>}
         {advice.scheme && advice.scheme.length > 0 &&<div contentEditable='false' className={style['scheme']}>
           {advice.scheme && advice.scheme.length > 0  && <h1>治疗方案</h1>}
           {scheme}

+ 76 - 9
src/components/ChronicInfo/index.jsx

@@ -13,6 +13,7 @@ import checkIcon from '@common/images/check.png';
 import {ComplexModal,ConfirmModal,MiniToast, Radio,CheckBtn} from '@commonComp';
 import AssessResult from '@containers/AssessResult';
 import ScaleTable from '@containers/ScaleTable';
+import Notify from '@commonComp/Notify';
 import $ from 'jquery';
 
 /***
@@ -41,6 +42,7 @@ class ChronicInfo extends React.Component{
       parentId:null ,
       radioVal:{},  //可能结果选择内容
       possible:{},  //可能结果
+      formulaParam: {}, //量表计算公式计算入参
     };
     this.$content = React.createRef();
 
@@ -170,8 +172,28 @@ class ChronicInfo extends React.Component{
     });
 
   }
-  handleForRadio(item,parent,pIndex){//计算公式
-
+  handleInputformula(v,i, j,idd,  e) {
+    const { data, setChronicPush } = this.props
+    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)
+  }
+  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 data1 = JSON.parse(JSON.stringify(data))
+    setChronicPush(data1)
   }
   confirmFormula(){//计算公式确定
 
@@ -191,6 +213,38 @@ class ChronicInfo extends React.Component{
     })
     
   }
+  calcuFormula(it, j, v) { //计算公式计算
+    const { calcuFormula } = this.props
+    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
+        for( let z = 0; z <it.content.details[i].details.length; z++) {
+          if(it.content.details[i].details[z].state = 1) {
+            hasSelect= true
+          }
+        }
+        if(!hasSelect) {
+          allHasInfo = false
+        }
+      }
+
+    }
+    if(allHasInfo) { //所有都有值,则计算
+      let param = {
+        type: 2,
+        content: it,
+        disId: v.id
+      }
+      calcuFormula(param)
+    } else {  //不是所有值都填过了
+      Notify.info('请填写计算公式内容')
+    }
+  }
   getDetail(){
     const {data,indexs} = this.props;
     const {showInfo,showOption,infoId,formulaId,optionId,possible,radioVal} = this.state;
@@ -241,7 +295,7 @@ class ChronicInfo extends React.Component{
                                 footer="true">
                                 <table>
                                 {it.content.details.map((item,idd)=>{
-                                    if(item.controlType==0){//单选
+                                    if(item.controlType==1){//单选
                                       return <tr>
                                         <td>
                                           <span>{'请选择'+item.name+':'}</span>
@@ -250,8 +304,8 @@ class ChronicInfo extends React.Component{
                                           {item.details.map((ii,ind)=>{
                                             return <div className={style["chooseItem"]}>
                                                     <Radio label={ii.detailName}
-                                                             isSelect={radioVal[i]==ii.detailName}
-                                                             handleClick={this.handleForRadio.bind(this,ii,v,i)}>
+                                                             isSelect={ii.state == 1}
+                                                             handleClick={this.handleForRadio.bind(this,ii,v,i, j,idd, ind)}>
                                                       </Radio>
                                                   </div>
                                           })}
@@ -265,7 +319,7 @@ class ChronicInfo extends React.Component{
                                           <span>{'请输入'+item.name+':'}</span>
                                         </td>
                                         <td>
-                                          <input type="text" placeholder="请输入" value={item.value}/>
+                                          <input type="text" placeholder="请输入"  value={item.value} onInput={this.handleInputformula.bind(this,v,i, j,idd)}/>
                                         </td>
                                         <td>
                                           <span>{item.uint}</span>
@@ -281,7 +335,8 @@ class ChronicInfo extends React.Component{
                                           {item.details.map((ii,ind)=>{
                                             return <div className={style["chooseItem"]}>
                                                     <Radio label={ii.detailName}
-                                                            isSelect={radioVal[i]==ii.detailName}
+                                                            // isSelect={radioVal[i]==ii.detailName}
+                                                            isSelect={ii.state == 1}
                                                             handleClick={this.handleForRadio.bind(this,ii,v,i)}>
                                                     </Radio>
                                                   </div>
@@ -292,7 +347,20 @@ class ChronicInfo extends React.Component{
                                     }
                                 })}
                                 </table>
-                                <div className={style["forMulBtn"]}>计算</div>
+                                <div className={style["forMulBtn"]} onClick={this.calcuFormula.bind(this,it,j, v)}>计算</div>
+                                <table>
+                                  {/* {it.content.result &&it.content.result.map((itemResult, resultIndex) => {
+                                    return <tr>
+                                        <td>
+                                            <span>{itemResult.name+':'}</span>
+                                        </td>
+                                        <td>
+                                            <span>{itemResult.value}</span>
+                                        </td>
+                                    </tr>
+                                  })} */}
+                                </table>
+                                
                             </MiniToast>
                           </div>
                         }else if(it.type==3){
@@ -341,7 +409,6 @@ 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,possible,radioVal} = this.state;
-    //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"]}>

+ 2 - 1
src/components/ChronicInfo/index.less

@@ -255,7 +255,8 @@
     line-height: 32px;
     text-align: center;
     color: #fff;
-    background: #DBDBDB;
+    // background: #DBDBDB;
+    background: #DFEAFE;
     border-radius: 4px;
     cursor: auto;
     margin-top: 15px;

+ 3 - 4
src/containers/AdviceContainer.js

@@ -1,8 +1,7 @@
 import React from 'react';
 import {connect} from 'react-redux';
 import Advice from '../components/Advice'
-import { SET_CHANGE_ADVICE_TREATMENT, SET_CHANGE_ADVICE_ASSAY, SET_CHANGE_ADVICE_CHECK, SET_COMMONTREATMENT ,SET_ADVICE_INPUT} from '@store/types/pushMessage';
-import { SET_FOLLOW_UP } from '@store/types/treat.js';
+import { SET_CHANGE_ADVICE_TREATMENT, SET_CHANGE_ADVICE_ASSAY, SET_CHANGE_ADVICE_CHECK, SET_COMMONTREATMENT ,SET_ADVICE_INPUT, SAVE_FOLLOW_UP} from '@store/types/pushMessage';
 
 function mapStateToProps(state) {
     return ({
@@ -49,9 +48,9 @@ function mapDispatchToProps(dispatch) {
                 adviceInput: text,
             })
         },
-        setFollowUp: (followUp) => {
+        saveFollowUp: (followUp) => {
             dispatch({
-                type: SET_FOLLOW_UP,
+                type: SAVE_FOLLOW_UP,
                 followUp: followUp
             })
         },

+ 13 - 1
src/containers/ChronicInfo.js

@@ -1,10 +1,11 @@
 import {connect} from 'react-redux';
 import ChronicInfo from '../components/ChronicInfo';
-import {SHOW_TABLE_LIST,HIDE_TABLE_LIST} from '@store/types/pushMessage';
+import {SHOW_TABLE_LIST,HIDE_TABLE_LIST, SET_CHRONIC_PUSHS} from '@store/types/pushMessage';
 import {getTableList,getScaleInfo,getTips} from '../store/async-actions/pushMessage';
 import {ADD_ASSESS_ITEMS,SET_SAVE_ASSESS_DATA} from "@types/assessResult";
 import {saveMessage} from "../store/async-actions/print";
 import {saveClickNum} from '@store/async-actions/homePage';
+import { getFormulaResult } from '@store/async-actions/fetchModules'
 
 function mapStateToProps(state){
   return{
@@ -47,6 +48,17 @@ function mapDispatchToProps(dispatch){
       dispatch(saveClickNum);
       dispatch(() => saveMessage())
     },
+    //设置量表推送内容
+    setChronicPush(data) {
+      dispatch({
+        type: SET_CHRONIC_PUSHS,
+        data: data
+      })
+    },
+    // 计算公式计算
+    calcuFormula(item) {
+      dispatch(getFormulaResult(item))
+    },
     // 获取量表静态知识
     getInfomation(item){
       dispatch(getTips(item));