Quellcode durchsuchen

历史病例量表显示

zhouna vor 6 Jahren
Ursprung
Commit
d4cb47b6f2

+ 2 - 1
src/common/components/CheckBtn/index.jsx

@@ -16,7 +16,8 @@ class CheckBtn extends React.Component {
   }
 
   handleClick(id){
-    this.props.handleClick(id);
+    const {handleClick} = this.props;
+    handleClick&&handleClick(id);
   }
 
   getStyle(){

+ 2 - 1
src/common/components/Radio/index.jsx

@@ -18,7 +18,8 @@ class Radio extends React.Component {
   }
 
   handleClick(id){
-    this.props.handleClick(id);
+    const {handleClick} = this.props;
+    handleClick&&handleClick(id);
   }
 
   getStyle(){

+ 50 - 5
src/components/AssessResult/AssessHis/index.jsx

@@ -1,20 +1,28 @@
 import React, { Component } from "react";
 import style from "./index.less";
-import { Radio} from '@commonComp';
+import { Radio,ComplexModal} from '@commonComp';
 import arrow from '@common/images/icon_tri_blue.png';
 import loadingIcon from '@common/images/loading.gif';
 import ChooseItem from "../ChooseItem";
 import ScaleItem from "../ScaleItem";
 import ChartItem from "../ChartItem";
+import printIcon from '@common/images/team.png';
+import tableIcon from '@common/images/table.png';
+import ScaleTableHis from '@components/ScaleTableHis';
+import $ from "jquery";
 
 class AssessResultHis extends Component {
   constructor(props) {
     super(props);
     this.state={
       chartTimeTypes:{},      //图表模块
+      tableName:'',
+      tableId:'',
+      parentIndex:0
     };
     this.showAssessFn = this.showAssessFn.bind(this);
     this.getAssessContent = this.getAssessContent.bind(this);
+    this.showScaleFn = this.showScaleFn.bind(this);
   }
   handleChartChange(i,selects){
     const {chartTimeTypes} = this.state;
@@ -36,6 +44,7 @@ class AssessResultHis extends Component {
       case 0:     //数据来源与右侧手动添加
         return <ScaleItem title={name}
                           data={wholeAssess}
+                          showScaleFn={this.showScaleFn}
                           indexs={wholeIndexs}
                           disabled={true}
                           isRecommend={item.isRecommend}></ScaleItem>;
@@ -72,19 +81,55 @@ class AssessResultHis extends Component {
       chartTimeTypes:indexTimeTypes
     });
   }*/
+  showScaleFn(item,pid){
+    const { list,inquiryId } = this.props;
+    const obj = list&&list[inquiryId];
+    if(item){
+      this.setState({
+        tableName:item.name,
+        tableId:item.id,
+        showScale:!this.state.showScale
+      });
+    }else{
+      this.setState({
+        showScale:!this.state.showScale
+      });
+    }
+
+  }
+  onPrint(){
+    let dom = $("#printcontent");
+    dom.jqprint({
+      debug: false,
+      importCSS: true,
+      printContainer: true,
+      operaSupport: false,
+    });
+  }
   render() {
-    const { loading,isChronic } = this.props;
+    const { loading,isChronic, list,inquiryId } = this.props;
+    const {tableName,tableId,showScale} = this.state;
+    const obj = list&&list[inquiryId];
+    const scaleFooter = <div className={style['footer']}>
+      <span className={style['print']} onClick={this.onPrint}><img src={printIcon} alt=""/>打印</span>
+      <span className={style['okBtn']} onClick={()=>this.showScaleFn()}>关闭</span>
+    </div>;
     return <div className={style['assess-cont']}>
       <div className={style['assess-result']}>
         <p className={style['enter']}>{isChronic?'管理和评估':'推荐'}结果:<a onClick={this.showAssessFn}>查看结果<img src={arrow} /></a></p>
       </div>
       <div className={style['assess-box']}>
         {loading?<p className={style['loading']}><img src={loadingIcon} alt='loading...'/></p>:''}
-        {/*{data?data.map((it,i)=>{
-          return this.handoutTypes(it,i);
-        }):data===null?<p className={style['no-data']}>没有历史评估记录!</p>:''}*/}
         {this.getAssessContent()}
       </div>
+      {showScale?<ComplexModal onclose={this.showScaleFn} footer={scaleFooter}
+                                          title={tableName}
+                                          icon={tableIcon}
+                                          top={20}
+                                          bottom={20}
+                                          width={820}>
+        <ScaleTableHis title={tableName} tableId={tableId} result={obj.scaleResult&&obj.scaleResult[tableId]} data={obj.scaleInfo&&obj.scaleInfo[tableId]}></ScaleTableHis>
+      </ComplexModal>:''}
     </div>;
   }
 }

+ 35 - 0
src/components/AssessResult/AssessHis/index.less

@@ -29,4 +29,39 @@
   img{
     width: 30px;
   }
+}
+.footer{
+  .print{
+    width: 111px;
+    height: 34px;
+    line-height: 34px;
+    outline: none;
+    border-radius: 4px;
+    /*color: #3B9ED0;*/
+    border: 0 none;
+    cursor: pointer;
+    background: #fff;
+    margin-right: 20px;
+    img{
+      width: 20px;
+      vertical-align: middle;
+      margin-right: 4px;
+    }
+  }
+  .okBtn{
+    width: 80px;
+    height: 34px;
+    line-height: 32px;
+    text-align: center;
+    outline: none;
+    border-radius: 4px;
+    cursor: pointer;
+    border: 1px solid #3B9ED0;
+    box-sizing: border-box;
+    margin-left: 20px;
+    background: #3B9ED0;
+    color: #fff;
+    float: right;
+    margin-right: 20px;
+  }
 }

+ 4 - 4
src/components/AssessResult/ScaleItem/index.jsx

@@ -55,10 +55,10 @@ class ScaleItem extends Component {
     });
     this.closeOption();
   }
-  handleShowScale(item,parentId){
+  handleShowScale(item,parentId,pIndex){
     const {showScaleFn,closeAssess} = this.props;
     closeAssess&&closeAssess();    //关闭评估弹窗
-    showScaleFn&&showScaleFn(item,parentId);        //显示量表
+    showScaleFn&&showScaleFn(item,parentId,pIndex);        //显示量表
 
   }
   handleRadio(item,parent){
@@ -168,7 +168,7 @@ class ScaleItem extends Component {
           let scaleRes=formulaResult&&formulaResult[it.content.id]&&formulaResult[it.content.id].calcalculate;
 
           temp =<span className={style['scale']}
-                      onClick={()=>this.handleShowScale(it.content,item.id)}>
+                      onClick={()=>this.handleShowScale(it.content,item.id,i)}>
                         {scaleRes&&scaleRes.result?(' 【'+it.content.name+'】 结果:'+scaleRes.result.value+" "+scaleRes.result.text):'【'+it.content.name+'】'}
                         </span>;
         }else if(its.type==2){      //计算公式
@@ -211,7 +211,7 @@ class ScaleItem extends Component {
                                 <span>{'请输入'+item1.name+':'}</span>
                               </td>
                               <td>
-                                <input type="text" disabled={disabled} placeholder="请输入"  value={item1.value} onInput={(e)=>this.handleInputformula(item.id,idd,e.target.value)}/>
+                                {disabled?item1.value:<input type="text" placeholder="请输入"  value={item1.value} onInput={(e)=>this.handleInputformula(item.id,idd,e.target.value)}/>}
                               </td>
                               <td>
                                 <span>{item1.uint}</span>

+ 111 - 0
src/components/ScaleTableHis/index.jsx

@@ -0,0 +1,111 @@
+import React from 'react';
+import style from './index.less';
+// import mocks from '../../mock/chronicTable.js'
+import { Radio,CheckBtn ,Notify} from '@commonComp';
+ import Information from '../Information';
+ import {deepClone} from '@utils/tools.js';
+ import {getFormulaResult} from '@store/async-actions/fetchModules.js';
+/**
+*量表 具体信息页面
+*title:量表标题/scaleName
+*data:量表内容:scaleName量表标题,calculate量表计算结果,group分组,
+*
+*
+**/
+class ScaleTableHis extends React.Component{
+  constructor(props){
+    super(props);
+  }
+  filterScale(data){//type=1为表格内容
+    let scale = {};
+    for(let i=0; i<data.length; i++){
+      if(data[i].type==1){
+        scale = data[i];
+      }
+    }
+    return scale;
+  }
+
+  getContent(datas){
+    const {title,formulaResult,data} = this.props;
+    // const datas = valueData&&valueData.group?valueData:mocks.newData;
+    let content =  datas&&datas.group&&datas.group.map((v,i)=>{
+                return <div className={style['group']}>
+                  <p className={style['groupName']}>{v.groupName}</p>
+                  {v.rows&&v.rows.map((it,ind)=>{
+                    return <div>
+                      {it.row.map((item,index)=>{
+                        if(item.controlType==0){
+                          return <div className={style['block']} style={{border:it.required==1&&!item.isSelect&&start?'1px solid #f00':'none'}}>
+                              <p className={style['miniName']}>{item.name}</p>
+                              {item.details&&item.details.map((vv,ii)=>{
+                                return <div className={style['item']}>
+                                        <Radio label={vv.detailName+'('+vv.score+')'}
+                                           isSelect={vv.select==1}
+                                               disabled={true}>
+                                        </Radio>
+                                        {vv.state==1?<span className={style['recomand']}>(智能推荐)</span>:''}
+                                    </div>
+                              })}
+                              
+                            </div>
+                          }else{
+                            return <div className={style['block']}>
+                                <p className={style['miniName']}>{item.name}</p>
+                                  {item.details&&item.details.map((vv,ii)=>{
+                                    return <div className={style['item']}>
+                                    <CheckBtn value={vv.detailName}
+                                                    label={vv.detailName}
+                                                    disabled={true}
+                                                    isSelect={vv.select==1}>
+                                          </CheckBtn>
+                                    {vv.state==1?<span className={style['recomand']}>(智能推荐)</span>:''}
+                                    </div>
+                                  })}
+                            </div>
+                          }
+                        
+                      })}
+                    </div>
+                  })}
+                  {v.groupCalculate.isShow==1?<p className={style['subTotal']}>
+                    <span>计分:</span>
+                    {/*<span>{v.groupCalculate.result.value}</span>*/}
+                    <span>{scaleResult&&scaleResult.group.map((m,ii)=>{
+                      if(m.groupName==v.groupName){
+                        return m.groupCalculate.result.value;
+                      }
+                    })}</span>
+                  </p>:''}  
+                </div>
+              })
+    return content;
+  }
+
+  render(){
+    const {title,data,result} = this.props;console.log(this.props)
+    const scale = data && this.filterScale(data);
+    const datas = scale && scale.content && JSON.parse(scale.content);
+    const scaleResult = datas; //量表计算结果
+    return <div className={style['tableBox']} id="printcontent">
+            <div className={style['printShow']}>
+              <Information></Information>
+            </div> 
+            <h1>{datas?datas.scaleName:''}</h1>
+            {data && data.map((v,i)=>{
+              if(v.type==0){
+                return <div dangerouslySetInnerHTML={{__html:v.content}} className={style['textlh']}></div>
+              }else{
+                return <div className={style['textContent']}>
+                  {this.getContent(datas)}
+                  {datas&&datas.Calc==1?<div className={style['total']}>
+                    <span>总分:</span>
+                    <span>{result&&result.calcalculate&&result.calcalculate.result&&result.calcalculate.result.value +' '+ result.calcalculate.result.text||''}</span>
+                  </div>:''}
+                </div>
+              }
+            })}
+          </div>
+  }
+}
+export default ScaleTableHis;

+ 83 - 0
src/components/ScaleTableHis/index.less

@@ -0,0 +1,83 @@
+.tableBox{
+  // height: 690px;
+  overflow-y: auto;
+  padding: 30px;
+  h1{
+    font-size: 16px;
+    font-weight: bold;
+    margin: 10px 0 30px;
+    text-align: center;
+  }
+}
+strong{
+  font-weight: bold;
+}
+.textlh{
+  p{
+    line-height: 22px;
+  }
+}
+.textContent{
+  margin: 40px 0 30px;
+  .group{
+    border-bottom: 4px solid #EBEBEB;
+    padding-bottom: 10px;
+    margin-top: 25px;
+    .item{
+      display: inline-block;
+      margin-right: 24px;
+    }
+    .recomand{
+      color:#3B9ED0;
+    }
+    .block{
+      margin-top: 20px;
+      padding-top: 5px;
+    }
+    .redBorder{
+      border: 1px solid #f00;
+    }
+    // .miniName{
+    //   margin-top: 25px;
+    // }
+  }
+  .groupName{
+    font-size: 14px;
+    font-weight: bold;
+    color:#000;
+    margin: 25px 0;
+  }
+  .subTotal{
+    height: 49px;
+    line-height: 49px;
+    border-top: 1px solid #EBEBEB;
+    text-align: right;
+    margin-top: 10px;
+  }
+  .total{
+    height: 72px;
+    line-height: 72px;
+    border-bottom: 10px solid #EBEBEB;
+    text-align: right;
+    .totalBtn{
+      display: inline-block;
+      width: 64px;
+      height: 32px;
+      line-height: 32px;
+      color:#3B9ED0;
+      border: 1px solid #3B9ED0;
+      border-radius: 4px;
+      margin-left: 40px;
+      text-align: center;
+      cursor: pointer;
+    }
+  }
+}
+.printShow {
+  display: none;
+}
+@media print {
+  .printShow {
+    display: block;
+  }
+}

+ 11 - 8
src/store/async-actions/print.js

@@ -14,16 +14,13 @@ export const saveMessage = (bool) => {
     let baseList = store.getState();
     let state = baseList.patInfo.message;
     let whichSign = baseList.typeConfig.typeConfig;
+    const pushMessage = baseList.pushMessage;
     let jsonStr = getAllDataStringList(baseList);
     let jsonData = getAllDataList(baseList);
     const lisData = baseList.inspect.pushItem;
     const lisArr = transferIndexData(lisData);
-      let obj = [];
-      Object.keys(baseList.assessResult.wholeIndexs).map((i)=>{
-        obj[i]=baseList.pushMessage.chronicPushItems[i];
-      });
     const evaluation={
-      htmlContent:JSON.stringify(getEvaluations(baseList.assessResult,obj)),
+      htmlContent:JSON.stringify(getEvaluations(baseList.assessResult,pushMessage)),
       //scaleList:[]
     };//getEvaluation();
     //console.log(baseList)
@@ -133,14 +130,20 @@ function transferIndexData(data) {
    return arr;
 }
 
-function getEvaluations(base,added){
+function getEvaluations(base,pushMessage){
+    let obj = [];
+    Object.keys(base.wholeIndexs).map((i)=>{
+      obj[i]=pushMessage.chronicPushItems[i];
+    });
     return {
       data:base.data,
       chooseSelecteds:base.chooseSelecteds,
       indexTimeTypes:base.indexTimeTypes,
-      wholeAssess:added,
+      wholeAssess:obj,
       wholeAssessText:base.wholeAssessText,
-      wholeIndexs:base.wholeIndexs
+      wholeIndexs:base.wholeIndexs,
+      scaleInfo:pushMessage.scaleInfo,
+      scaleResult:pushMessage.formulaResult
     };
 }