Jelajahi Sumber

管理评估-整体评估项目不能点开

zhouna 5 tahun lalu
induk
melakukan
a4b3a92ceb

+ 7 - 266
src/components/AssessResult/ScaleItem/index.jsx

@@ -2,11 +2,7 @@ import React, { Component } from "react";
 import style from "../index.less";
 import deleteIcon from '@common/images/delete.png';
 import deleteIconNo from '@common/images/delete_no.png';
-import allTableIcon from '@common/images/all-table.png';
-import level1 from "@common/images/级别1.png";
-import checkIcon from '@common/images/check.png';
 import {ComplexModal,MiniToast,Radio} from '@commonComp';
-import Notify from '@commonComp/Notify';
 import {deepClone,preventDefault} from '@utils/tools';
 import { getFormulaResult } from '@store/async-actions/fetchModules'
 /**
@@ -17,171 +13,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:Object.assign({},radioVal)||{},
-      formulaId:'',
       text:props.text,
-      isCalculated:false,
-      calcuValues:deepClone(props.calcuValues),   //计算公式填的值
     };
     this.getItems = this.getItems.bind(this);
     this.getDetailItems = this.getDetailItems.bind(this);
-    this.showOption = this.showOption.bind(this);
-    this.closeOption = this.closeOption.bind(this);
-    this.closeFormula = this.closeFormula.bind(this);
-    this.handleInputformula =this.handleInputformula.bind(this);
-  }
-  showOption(id){
-    this.setState({
-      optionId: id,
-      formulaId: ''
-    })
-  }
-  closeOption(){
-    const {result} = this.props;
-    const possible=result&&result.possible;
-    let {radioVal} = this.state;
-    this.setState({
-      radioVal:Object.assign({},radioVal,possible),
-      optionId:null,
-    });
-  }
-  confirmOption(){
-    const {handleRes} = this.props;
-    const {radioVal} = this.state;
-    handleRes&&handleRes({
-      possible:Object.assign({},radioVal),
-      radioVal:Object.assign({},radioVal),//不设置radioVal只有最近一次选中的值
-    });
-    this.setState({
-      optionId:null,
-    });
-  }
-  handleShowScale(item){
-    const {showScaleFn,closeAssess} = this.props;
-    //closeAssess&&closeAssess();    //关闭评估弹窗
-    showScaleFn&&showScaleFn(item);
-  }
-  handleRadio(item,parent){
-    let {result} = this.props;
-    let radioVal = result&&result.radioVal;
-    this.setState({
-      radioVal:Object.assign({},radioVal,{[parent.conceptId]:item.detailName})
-    })
-  }
-  handleReg(e){   //只能输入数字和特殊符号
-    const key = e.key;
-    if(key!='Backspace'&&((/[^\d|.\/%*~]/.test(key)))){
-      preventDefault(e);
-    }
-  }
-  handleInputformula(id,calcuContent,i,e) {
-    const { calcuResult,handleCalcu } = this.props;
-    const {calcuValues} = this.state;
-    let obj = deepClone(calcuValues);
-    let values = (obj&&obj[id])||deepClone(calcuContent);
-    const txt = e.target.value;
-    values[i].value = txt.replace(/[\u4e00-\u9fa5]|[^\d|.\/%*~]/g,'');       //处理中文输入法的情况
-    obj[id] = values;
-    if(/[\u4e00-\u9fa5]|[^\d|.\/%*~]/g.test(txt)){
-      e.target.value = txt.replace(/[\u4e00-\u9fa5]|[^\d|.\/%*~]/g,'');
-    }
-    this.setState({
-      isCalculated:false,
-      calcuValues:obj
-    });
-    handleCalcu&&handleCalcu(id,values,calcuResult);
-  }
-  handleForRadio(id,calcuContent,i,fidx){//计算公式
-    const { calcuValues } = this.state;
-    let obj = deepClone(calcuValues);
-    let values = (obj&&obj[id])||deepClone(calcuContent);
-    let details = values[i].details;
-    for(let x=0;x<details.length;x++){
-      if(x!=fidx){
-        details[x].state=0;
-      }else{
-        details[x].state=1;
-      }
-    }
-    obj[id] = values;
-    this.setState({
-      isCalculated:false,
-      calcuValues:obj
-    });
-  }
-  showFormula(id){
-    this.setState({
-      formulaId: id,
-      optionId: ''
-    });
-  }
-  closeFormula(){
-    if(this.state.isCalculated){
-      this.setState({
-        formulaId:null,
-      });
-    }else{
-      this.setState({
-        formulaId:null,
-        calcuValues:deepClone(this.props.calcuValues)
-      });
-    }
-  }
-  calcuFormula(item) { //计算公式计算
-    const { calcuResult,handleCalcu } = this.props;
-    const {calcuValues,formulaId} = this.state;
-    let it=calcuValues&&deepClone(calcuValues[formulaId]);
-    let allHasInfo = true;
-    for (let i = 0; i < it.length; i++) {
-      if(it[i].controlType == 2) {  //输入框类型的有没有填值
-        if(!it[i].value) {
-          allHasInfo = false
-        }
-      } else if(it[i].controlType == 0) {
-        let hasSelect = false;
-        for( let z = 0; z <it[i].details.length; z++) {
-          if(it[i].details[z].state == 1) {
-            hasSelect= true
-          }
-        }
-        if(!hasSelect) {
-          allHasInfo = false
-        }
-      }
-    }
-    const itemCopy = deepClone(item)
-    itemCopy.content.details = calcuValues[formulaId]
-    // item.content.details = calcuValues[formulaId];
-    if(allHasInfo) { //所有都有值,则计算
-      let results = deepClone(calcuResult);
-      getFormulaResult({type:2,data:itemCopy}).then((res)=>{
-        if(+res.data.code==0){
-          const result = res.data.data.result;
-          results[formulaId] = result;
-          handleCalcu&&handleCalcu(formulaId,calcuValues[formulaId],results);
-          this.setState({
-            isCalculated:true
-          });
-        }else{
-          Notify.error(res.data.msg||'计算没有结果返回');
-        }
-      })
-    } else {  //不是所有值都填过了
-      Notify.info('请填写计算公式内容')
-    }
   }
   getDetailItems(item,i){
     let arr = [],temp='';
-    const {indexs,result,formulaResult,disabled,calcuValues,calcuResult} = this.props;
-    const {optionId,formulaId,radioVal} = this.state;
+    const {indexs,result,formulaResult,disabled,calcuResult} = this.props;
     const possible=result&&result.possible;
     item.details.map((its,j)=>{
       let it=its;
@@ -190,108 +30,20 @@ class ScaleItem extends Component {
           let scaleRes=formulaResult&&formulaResult[it.content.conceptId]&&formulaResult[it.content.conceptId].calcalculate;
           const name = scaleRes&&scaleRes.result?(' 【'+it.content.name+'】 结果:'+scaleRes.result.value+" "+(scaleRes.result.text||'')):'【'+it.content.name+'】';
           temp =<span className={style['scale']}
-                      title={name}
-                      onClick={this.handleShowScale.bind(this,it.content)}>
+                      title={name}>
                         {name}
                         </span>;
         }else if(its.type==2){      //计算公式
           const showRes = calcuResult&&calcuResult[item.conceptId]||it.content.result;
-          const details = calcuValues&&calcuValues[item.conceptId]||it.content.details;
-
           const cresult = showRes&&showRes[1]&&showRes[1].text;
                     temp = <div className={style['results']}>
-                    <span>计算公式结果:</span>
-                    <span className={style["blue"]} style={disabled?{cursor:'default'}:''} onClick={disabled?'':this.showFormula.bind(this,item.conceptId,it)}>{cresult?cresult:'请选择'}</span>
-                      {disabled?'':<img src={level1} />}
-                      {disabled?'':<MiniToast title={it.content.name}
-                               confirmText='关闭'
-                               icon={allTableIcon}
-                               show={formulaId&&formulaId==item.conceptId?true:false}
-                               close={this.closeFormula}
-                               confirm={this.closeFormula}
-                               footer="true">
-                      <table>
-                        {details.map((item1,idd)=>{
-                          if(item1.controlType==0){//单选
-                            return <tr>
-                              <td>
-                                <span>{item1.isShow == '0' ? item1.name+':' : '请选择'+item1.name+':'}</span>
-                              </td>
-                              <td>
-                              {Array.isArray(item1.details)&&item1.isShow == '0'&&item1.details.map((ii,ind)=>{
-                                return ii.state == 1 && <div className={style["chooseItem"]}>
-                                          {ii.detailName}
-                                      </div>
-                              })}
-                              {Array.isArray(item1.details)&&item1.isShow != '0'&&item1.details.map((ii,ind)=>{
-                                return <div className={style["chooseItem"]}>
-                                        <Radio label={ii.detailName}
-                                                  isSelect={ii.state == 1}
-                                                  handleClick={this.handleForRadio.bind(this,item.conceptId,details,idd,ind)}>
-                                          </Radio>
-                                      </div>
-                              })}          
-                                
-
-                               
-                              </td>
-                            </tr>
-                          }else if(item1.controlType==2){//输入框
-                            
-                            return <tr>
-                              <td>
-                                <span>{item1.isShow == '0' ? item1.name+':':'请输入'+item1.name+':'}</span>
-                              </td>
-                              <td>
-                                {item1.isShow == '0' ? item1.value + ' ' +item1.uint : <input type="text" placeholder="请输入"  value={item1.value} onKeyDown={this.handleReg.bind(this)} onInput={(e)=>this.handleInputformula(item.conceptId,details,idd,e)}/>}
-                              </td>
-                              <td>
-                                {item1.isShow != '0'&&<span>{item1.uint}</span>}  
-                              </td>
-
-                            </tr>
-                          }
-                        })}
-                      </table>
-                      <div className={style["forMulBtn"]} onClick={this.calcuFormula.bind(this,its)}>计算</div>
-                      <table>
-                        {showRes && Array.isArray(showRes) &&showRes.map((itemResult) => {
-                          return <tr>
-                            <td>
-                              <span>{itemResult.name+':'}</span>
-                            </td>
-                            <td>
-                              <span>{itemResult.text}</span>
-                            </td>
-                          </tr>
-                        })}
-                      </table>
-                    </MiniToast>}
+                    <span>患者可能有:</span>
+                    <span className={style["blue"]}>{cresult}</span>
                 </div>
         }else if(its.type==3){
           temp = <div className={style['results']}>
                     <span>可能结果:</span>
-                    <span onClick={disabled?'':this.showOption.bind(this,item.conceptId)} style={disabled?{cursor:'default'}:''} className={style["blue"]}>{possible&&possible[item.conceptId]?possible[item.conceptId]:'请选择'}</span>
-                    {disabled?'':<img src={level1} />}
-                    {disabled?'':<MiniToast title='结果选择'
-                         icon={checkIcon}
-                         show={optionId&&optionId==item.conceptId?true:false}
-                         close={this.closeOption}
-                         confirm={this.confirmOption.bind(this,item.conceptId)}
-                         footer={true}>
-                        <div className={style["infoOption"]}>
-                          <span>{it.content.name?it.content.name+':':''}</span>
-                          {it.content.details&&it.content.details.map((lis,ind)=>{
-                            return <div className={style["chooseItem"]}>
-                              <Radio label={lis.detailName}
-                                     isSelect={radioVal&&radioVal[item.conceptId]==lis.detailName||(Object.keys(radioVal).length===0&&lis.state==1)}
-                                     handleClick={this.handleRadio.bind(this,lis,item,i)}>
-                              </Radio>
-                              {/*{lis.state==1?<span className={style['recomand']}>(智能推荐)</span>:''}*/}
-                            </div>
-                          })}
-                        </div>
-                    </MiniToast>}
+                    <span className={style["blue"]}>{possible[item.conceptId]}</span>
                   </div>;
         }
         const passId = item.details[j].type==1?item.details[j].content.conceptId:undefined;
@@ -317,16 +69,6 @@ class ScaleItem extends Component {
       return this.getDetailItems(it,i);
     });
   }
-  getScaleContent(data){
-    if(!data){
-      return null;
-    }
-    const item = data&&data.find((it)=>{
-      return it.type==1;
-    });
-    const content = JSON.parse(item.content||null);
-    return {conceptId:item.conceptId,content,name:content.scaleName};
-  }
   getScales(){
     const {scaleItems,disabled,formulaResult} = this.props;
     let li='',temp='',arr=[],it={};
@@ -334,14 +76,13 @@ class ScaleItem extends Component {
       return '';
     };
     for( let i in scaleItems){
-      it = {conceptId:i,name:scaleItems[i].name};//this.getScaleContent(scaleItems[i].data);
+      it = {conceptId:i,name:scaleItems[i].name};
       if(!it) continue;
       let scaleRes=formulaResult&&formulaResult[it.conceptId]&&formulaResult[it.conceptId].calcalculate;
       const name = scaleRes&&scaleRes.result?(' 【'+scaleItems[i].name+'】 结果:'+scaleRes.result.value+" "+(scaleRes.result.text||'')):'【'+scaleItems[i].name+'】';
       //这里onClick不能用箭头函数,用箭头函数会一直绑定for的最后一个it
       temp =<span className={style['scale']}
-                  title={name}
-                  onClick={this.handleShowScale.bind(this,it)}>{name}</span>;
+                  title={name}>{name}</span>;
       li = disabled?<li>
         <span className={style['s-title']}>相关量表:</span>
         <div className={style['row']}>{temp}</div>

+ 3 - 34
src/components/AssessResult/index.jsx

@@ -25,19 +25,12 @@ class AssessResult extends Component {
       wholeAssessText:props.wholeAssessText||{},     //整体评估补充说明
       wholeResults: wholeResults,
       calcuResult:props.calcuResult,     //计算公式结果
-      calcuValues:props.calcuValues,    //计算公式填的值
       addedScaleIds:props.addedScaleIds,    //已加入量表的id
     };
     this.handleChooseChange = this.handleChooseChange.bind(this);
     this.handleScaleDel = this.handleScaleDel.bind(this);
     this.handleScaleText = this.handleScaleText.bind(this);
-    this.handleResult = this.handleResult.bind(this);
   }
-  /*componentWillMount(){
-    const {disId,disName,getAssess} = this.props;
-    //获取评估
-    getAssess&&getAssess(disId,disName);
-  }*/
   handleScaleText(text){
     const {disName} = this.props;
     const obj = Object.assign({},this.state.wholeAssessText);
@@ -70,15 +63,6 @@ class AssessResult extends Component {
       });
     }
   }
-  handleResult(opt){
-    const {wholeResults} = this.state.wholeResults;
-    const {savePossibleRes} = this.props;
-    const res = Object.assign({},wholeResults,opt);
-    this.setState({
-      wholeResults:res
-    });
-    savePossibleRes && savePossibleRes(res);
-  }
   handleChooseChange(i,selects){
     const {chooseSelecteds} = this.state;
     this.setState({
@@ -91,15 +75,6 @@ class AssessResult extends Component {
       chartTimeTypes:Object.assign(chartTimeTypes,{[i]:selects})
     });
   }
-  handleCalcu(id,values,ret){
-    const {saveCalcuValue,saveCalcuResult}=this.props;
-    this.setState({
-      calcuResult:ret,
-      calcuValues:{[id]:values}
-    });
-    saveCalcuResult&&saveCalcuResult(ret);
-    saveCalcuValue&&saveCalcuValue(values, id);
-  }
   componentWillUnmount(){
     //点确定关闭弹窗时把参数传到父组件去
     const {saveAssessInfos,isAssessConfirm,clearChartData} = this.props;
@@ -121,13 +96,13 @@ class AssessResult extends Component {
     }
   }
   handoutTypes(item,i){
-    const {getIndexData,indexData,timeTypes,wholeIndexs,closeAssess,showScaleFn,chronicPushItems,
+    const {getIndexData,indexData,timeTypes,wholeIndexs,chronicPushItems,
       formulaResult,indexNames,disName} =this.props;
     let obj = [];
     Object.keys(wholeIndexs).map((i)=>{
       obj[i]=chronicPushItems[i];
     });
-    const {chooseSelecteds,wholeAssessItems,wholeScaleItems,wholeAssessText,chartTimeTypes,wholeResults,calcuResult,calcuValues} = 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;
@@ -137,18 +112,12 @@ class AssessResult extends Component {
                           data={obj}
                           handleRemove={this.handleScaleDel}
                           handleInp={this.handleScaleText}
-                          handleRes={this.handleResult}
-                          handleCalcu={this.handleCalcu.bind(this)}
                           text={wholeAssessText[disName]}
                           indexs={wholeAssessItems}
                           scaleItems ={wholeScaleItems}
                           result={wholeResults}
-                          showScaleFn={showScaleFn}
                           calcuResult={calcuResult}
-                          calcuValues={calcuValues}
-                          formulaResult={formulaResult}
-                          chronicPushItems={chronicPushItems}
-                          closeAssess={closeAssess}></ScaleItem>;
+                          formulaResult={formulaResult}></ScaleItem>;
       case 1:     //数据来源于大数据
         return <ChooseItem title={name}
                            data={list}

+ 0 - 2
src/components/AssessResult/index.less

@@ -57,7 +57,6 @@
     .scale{
       display: inline-block;
       color: @blue;
-      cursor: pointer;
       white-space: nowrap;
       max-width: 100%;
       overflow: hidden;
@@ -66,7 +65,6 @@
     }
     .blue{
       color:#3B9ED0;
-      cursor: pointer;
     }
     .blue + img{
       vertical-align: middle;

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

@@ -443,7 +443,7 @@ class ChronicInfo extends React.Component{
                             </span>
                             {formulaId&&formulaId==v.conceptId&&<MiniToast title={it.content.name}
                                 icon={allTableIcon}
-                                confirmText='加入病历记录'
+                                confirmText='加入管理评估'
                                 show={formulaId&&formulaId==v.conceptId?true:false}
                                 close={this.closeFormula.bind(this,it)}
                                 confirm={this.addFormula.bind(this,it,v,i,j)}
@@ -512,7 +512,7 @@ class ChronicInfo extends React.Component{
                             </span>
                             <MiniToast title='结果选择'
                                 icon={checkIcon}
-                                confirmText='加入病历记录'
+                                confirmText='加入管理评估'
                                 show={optionId&&optionId==v.conceptId?true:false}
                                 close={this.closeOption}
                                 confirm={this.confirmOption.bind(this,v,i,j)}
@@ -572,7 +572,7 @@ class ChronicInfo extends React.Component{
     const {comfirnFlag,flag,ff} = this.state;
     const {chronicMagItem,chronicDesease,data,showHide,slideUp} = this.props;
     const scaleFooter = <Footer print={true}
-                                footText="加入病历记录"
+                                footText="加入管理评估"
                                 handlePrint={this.onPrint}
                                 handleConfirm={this.comfirnTable}/>;
     if(data&&data.length>0){

+ 0 - 39
src/containers/AssessResult.js

@@ -70,32 +70,6 @@ function mapDispatchToProps(dispatch) {
         type:CLEAR_INDEX_DATA
       })
     },
-    saveCalcuResult(data){
-      dispatch({
-        type: SET_CHRONIC_CALCU_RESULT,
-        data:deepClone(data)
-      })
-    },
-    // setCalcuInfo(id, calcuVal, calcuResult) {
-    //   dispatch({
-    //     type: SET_CHRONIC_CALCU_RESULT,
-    //     result:calcuResult,
-    //     id:id
-    //   });
-    //   dispatch({
-    //     type:SET_CALCU_VALUES,
-    //     data:deepClone(calcuVal),
-    //     id:id
-    //   })
-    // },
-    showScaleFn(item){
-      dispatch({
-        type:SHOW_TABLE_LIST,
-        name:'showTable',
-        value:true,
-        item:Object.assign({},item)
-      });
-    },
     //保存管理评估
     saveAssessInfos(obj,flg,noSave){     //noSave未true则不调页面保存接口
       dispatch(Object.assign({},obj,{type:SET_SAVE_ASSESS_DATA}));
@@ -106,19 +80,6 @@ function mapDispatchToProps(dispatch) {
         }
       }
     },
-    savePossibleRes(data) {
-      dispatch({
-        type: 'SAVE_POSSIBLE_RESULT',
-        wholeResults: data
-      })
-    },
-    saveCalcuValue(data,id){
-      dispatch({
-        type:SET_CALCU_VALUES,
-        data,
-        id
-      })
-    }
   }
 }