Browse Source

Merge branch 'ChronicMag' of http://192.168.2.236:10080/zhouna/newICSS into ChronicMag

liucf 6 years atrás
parent
commit
7ab97d32ae

BIN
src/common/images/1.png


BIN
src/common/images/2.png


BIN
src/common/images/3.png


BIN
src/common/images/4.png


BIN
src/common/images/5.png


BIN
src/common/images/6.png


BIN
src/common/images/7.png


BIN
src/common/images/8.png


+ 1 - 1
src/common/js/func.js

@@ -125,7 +125,7 @@ export const fullfillText = (arr,noPre=false,noEnd=false,ifEmpty=true)=>{
       }
     }else{
       pre = arr[i-1];
-      item = !ifEmpty&&cNum<config.showCheckNum?Object.assign({},it,{showInCheck:true}):it;
+      item = !ifEmpty&&cNum<config.showCheckNum+1?Object.assign({},it,{showInCheck:true}):it;
       //判断单选项是否有默认选中,位置在隐藏区域时,查体所有标签展示
       if(!ifEmpty&&!checkHiddenDefault&&cNum>config.showCheckNum&&+it.tagType===1&&(+it.controlType===0||+it.controlType===1)){
         if(it.questionDetailList.find((it)=>it.defaultSelect=='1')){

+ 23 - 2
src/common/less/variables.less

@@ -197,18 +197,39 @@
 // 加入病历
 .add-record{
   float: right;
-  cursor: pointer;
+  text-align: left;
+  padding-left: 5px;
+  cursor: default;
+  display: inline-block;
+  width: 99px;
+  height: 26px;
+  line-height: 26px;
+  border: 1px solid #EAEDF1;
+  border-radius: 4px;
+  font-size: 12px;
+  img{
+    vertical-align: middle;
+    width: 12px;
+    margin:-3px 3px 0 0;
+  }
+}
+.disable-add{
+  float: right;
+  text-align: left;
+  padding-left: 5px;
+  cursor: default;
   display: inline-block;
   width: 99px;
   height: 26px;
   line-height: 26px;
-  text-align: center;
   border: 1px solid #EAEDF1;
   border-radius: 4px;
   font-size: 12px;
+  color: @placeholder-color;
   img{
     vertical-align: middle;
     width: 12px;
     margin:-3px 3px 0 0;
+    opacity: .5;
   }
 }

+ 3 - 2
src/components/AssessResult/AssessHis/index.jsx

@@ -44,7 +44,7 @@ class AssessResultHis extends Component {
   }
   handoutTypes(obj,item,i){
     const {wholeAssess,wholeIndexs,chooseSelecteds,scaleResult,wholeResults,wholeAssessText} =obj;
-    const {getIndexData,inquiryDate,indexData,timeTypes} = this.props;
+    const {getIndexData,inquiryDate,indexData,timeTypes,indexNames} = this.props;
     const {chartTimeTypes} = this.state;
     const name = item.regionName+":";
     const list = item.data&&item.data.rows;
@@ -64,6 +64,7 @@ class AssessResultHis extends Component {
       case 10:    //数据来源于后台
         return <ChartItem title={name}
                           data={indexData||{}}
+                          names={indexNames||{}}
                           timeTypes={JSON.stringify(chartTimeTypes||{})=='{}'?timeTypes&&timeTypes[i]:chartTimeTypes[i]}
                           initFn={getIndexData}
                           endDate={inquiryDate}
@@ -88,7 +89,7 @@ class AssessResultHis extends Component {
   showScaleFn(item,pid){
     const { list,inquiryId } = this.props;
     const obj = list&&list[inquiryId];
-    if(!(obj.scaleInfo&&obj.scaleInfo[item.id])){
+    if(item&&item.id&&!(obj.scaleInfo&&obj.scaleInfo[item.id])){
       Notify.info("未保存该量表数据");
       return ;
     }

+ 28 - 12
src/components/AssessResult/ChartItem/index.jsx

@@ -81,17 +81,28 @@ class ChartItem extends Component {
     }
     handleChange&&handleChange(Object.assign(temp,{[i]:type}));
   }
-  getContainers(){
+  getContainers(obj){
     const timeTypes = this.props.timeTypes;
-    const range = this.getXAxisArr(config.chartDismen);
-    const obj = this.props.data[range[0]+range[range.length-1]];
     const {endDate} = this.props;
-    let arr = [];
+    let len = 1,idx=0;    //单个图表第一条线的在所有线中的index,用于显示不同的形状,打印使用
+    let arr = [],keys = Object.keys(obj||{});
     for(let i in obj){
-      arr.push(<Chart data={obj[i]} endDate={endDate} type={timeTypes&&timeTypes[i]} index={i} getXAxisArr={this.getXAxisArr} handleRangeChange={this.rangChange}/>)
+      idx = keys.findIndex((t)=>{return t==i});
+      len = idx==0?0:len+obj[keys[idx-1]].length;
+      arr.push(<Chart data={obj[i]} len={len} endDate={endDate} type={timeTypes&&timeTypes[i]} index={i} getXAxisArr={this.getXAxisArr} handleRangeChange={this.rangChange}/>)
     }
     return arr.length>0?arr:<p style={{color:'#acacac'}}>该模块暂无数据</p>;
   }
+  getLegends(obj){
+    let arr = [],temp='',doms=[];
+    for(let i in obj){
+      arr = [...arr,...obj[i]];
+    }
+    arr.map((it,ix)=>{
+      doms.push(<div><img src={require('@common/images/'+(ix+1)+'.png')} /><span>{it}</span></div>);
+    });
+    return doms;
+  }
   componentDidMount(){
     const {initFn,pindex} = this.props;
     const type = config.chartDismen;
@@ -102,11 +113,17 @@ class ChartItem extends Component {
     initFn&&initFn({range,rangeType:type,pindex,getNew:true});
   }
   render() {
-    const {title} = this.props;
+    const {title,data,names} = this.props;
+    const range = this.getXAxisArr(config.chartDismen);
+    const obj = data[range[0]+range[range.length-1]];
+    const nameObj = names&&names[range[0]+range[range.length-1]];
     return <div className={style['assess-item']}>
       <h2>{title}</h2>
+      <div className={style['legend']}>
+        {this.getLegends(nameObj)}
+      </div>
       <div className={style['item-content']}>
-        {this.getContainers()}
+        {this.getContainers(obj)}
       </div>
     </div>;
   }
@@ -127,7 +144,7 @@ class Chart extends Component{
     this.timeSwitch = this.timeSwitch.bind(this);
   }
   drawChart(){
-    const {index,data,getXAxisArr,type,endDate} = this.props;
+    const {index,data,getXAxisArr,type,endDate,len} = this.props;
     const xAxis = getXAxisArr(type);
     const id = endDate?'chart'+endDate+index:'chart'+index;
     let series = [],names=[],inx=-1;
@@ -139,7 +156,6 @@ class Chart extends Component{
       sixMonth:9,
       year:60
     };
-
     data&&data.map((it,j)=>{
       let values=new Array();
       let name='';
@@ -161,10 +177,10 @@ class Chart extends Component{
         type: 'line',
         data: values,
         showAllSymbol:true,
-        symbol:config.chartSymbols[j%7],
-        symbolSize:7,
+        symbol:'image://'+require('@common/images/'+((len+j)%8+1)+'.png'),//config.chartSymbols[(len+j)%8],
+        symbolSize:10,
         itemStyle:{
-          color:config.chartColors[j%7]
+          color:config.chartColors[(len+j)%8]
         }
       });
     });

+ 52 - 12
src/components/AssessResult/ScaleItem/index.jsx

@@ -56,9 +56,13 @@ class ScaleItem extends Component {
     this.closeOption();
   }
   handleShowScale(item,parentId,pIndex){
-    const {showScaleFn,closeAssess} = this.props;
+    const {showScaleFn,closeAssess,showListScale} = this.props;
     closeAssess&&closeAssess();    //关闭评估弹窗
-    showScaleFn&&showScaleFn(item,parentId,pIndex);        //显示量表
+    if(!parentId){                //显示量表
+      showListScale&&showListScale(item);
+    }else{
+      showScaleFn&&showScaleFn(item,parentId,pIndex);
+    }
 
   }
   handleRadio(item,parent){
@@ -70,8 +74,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 +90,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 +111,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 +155,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;
     }
@@ -156,7 +168,7 @@ class ScaleItem extends Component {
   }
   getDetailItems(item,i){
     let arr = [],temp='';
-    const {indexs,result,formulaResult,calcuResult,disabled} = this.props;
+    const {indexs,result,formulaResult,calcuResult,calcuValues,disabled} = this.props;
     const {optionId,formulaId,radioVal,formulaData,isFormulaConfirm} = this.state;
     const possible=result&&result.possible;
 
@@ -173,6 +185,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]&&calcuValues[item.id].details||it.content.details;
           const cresult = showRes&&showRes[1]&&showRes[1].text;
                     temp = <div className={style['results']}>
                     <span>计算公式结果:</span>
@@ -185,8 +198,8 @@ class ScaleItem extends Component {
                                confirm={this.confirmFormula.bind(this,item,i)}
                                footer="true">
                       <table>
-                        {it.content.details.map((item1,idd)=>{
-                          if(item1.controlType==1||item1.controlType==3){//单选
+                        {details.map((item1,idd)=>{
+                          if(item1.controlType==0){//单选
                             return <tr>
                               <td>
                                 <span>{'请选择'+item1.name+':'}</span>
@@ -255,6 +268,7 @@ class ScaleItem extends Component {
                                      isSelect={radioVal&&radioVal[item.id]==lis.detailName}
                                      handleClick={this.handleRadio.bind(this,lis,item,i)}>
                               </Radio>
+                              {lis.state==1?<span className={style['recomand']}>(智能推荐)</span>:''}
                             </div>
                           })}
                         </div>
@@ -267,7 +281,7 @@ class ScaleItem extends Component {
           </li>:<li>
           <span>{item.name}:</span>
           <div className={style['row']}>{temp}</div>
-          <div className={style["recommend"]} onClick={()=>this.props.handleRemove(i,j)}>
+          <div className={style["recommend"]} onClick={()=>this.props.handleRemove(false,i,j)}>
             <img className={style["deleteIcon"]} src={deleteIcon} />
           </div>
         </li>;
@@ -282,6 +296,29 @@ class ScaleItem extends Component {
       return this.getDetailItems(it,i);
     });
   }
+  getScales(){
+    const {scaleItems,disabled,formulaResult} = this.props;
+    let li='',temp='';
+    const arr = scaleItems&&scaleItems.map((it,i)=>{
+      if(!it) return '';
+      let scaleRes=formulaResult&&formulaResult[it.id]&&formulaResult[it.id].calcalculate;
+      temp =<span className={style['scale']} onClick={()=>this.handleShowScale(it)}>
+                        {scaleRes&&scaleRes.result?(' 【'+it.name+'】 结果:'+scaleRes.result.value+" "+scaleRes.result.text):'【'+it.name+'】'}
+                        </span>;
+      li = disabled?<li>
+        <span>相关量表:</span>
+        <div className={style['row']}>{temp}</div>
+      </li>:<li>
+        <span>相关量表:</span>
+        <div className={style['row']}>{temp}</div>
+        <div className={style["recommend"]} onClick={()=>this.props.handleRemove(true,i)}>
+          <img className={style["deleteIcon"]} src={deleteIcon} />
+        </div>
+      </li>;
+      return li;
+    });
+    return arr;
+  }
   handleInput(e){
     const text = e.target.value;
     this.setState({
@@ -289,7 +326,7 @@ class ScaleItem extends Component {
     });
   }
   render() {
-    const {title,handleInp,disabled,isRecommend,formulaResult} = this.props;
+    const {title,handleInp,disabled,isRecommend} = this.props;
     return <div className={style['assess-item']}>
       {isRecommend?'':<h2>{title}</h2>}
       <div className={style['item-content']}>
@@ -297,6 +334,9 @@ class ScaleItem extends Component {
           {
             this.getItems()
           }
+          {
+            this.getScales()
+          }
           {isRecommend?'':<li>
             <textarea className={style['edit-row']}
                       ref={this.$area}

+ 26 - 10
src/components/AssessResult/index.jsx

@@ -7,18 +7,20 @@ import Information from '../Information'
 import ChartItem from "./ChartItem";
 import Notify from '@commonComp/Notify';
 import {readyKeepHistory} from '@utils/tools';
+import loadingIcon from '@common/images/loading.gif';
 
 class AssessResult extends Component {
   constructor(props) {
     super(props);
     const chooseSelecteds = JSON.parse(JSON.stringify(props.chooseSelecteds)||{});
     const wholeIndexs = JSON.parse(JSON.stringify(props.wholeIndexs)||{});      //深度复制,Object.assgin为浅复制,下下级会同源
-    //const wholeResults = JSON.parse(JSON.stringify(props.wholeResults)||{});
+    const wholeScale = JSON.parse(JSON.stringify(props.wholeScaleItems)||{});
 
     this.state={
       chooseSelecteds:chooseSelecteds,     //大数据选择模块
       chartTimeTypes:{},      //图表模块
       wholeAssessItems:wholeIndexs,     //整体评估模块
+      wholeScaleItems:wholeScale,
       wholeAssessText:props.wholeAssessText||'',     //整体评估补充说明
       wholeResults:{
         possible:props.possible,
@@ -39,13 +41,22 @@ class AssessResult extends Component {
         wholeAssessText:text
       })
   }
-  handleScaleDel(i,j){
-    const items = Object.assign({},this.state.wholeAssessItems);
-    const inx = items[i].findIndex(x=>x==j);
-    items[i].splice(inx,1);
-    this.setState({
-      wholeAssessItems: items
-    });
+  handleScaleDel(isList,i,j){
+    if(isList){         //删除全部量表中的项目
+      const items = [...this.state.wholeScaleItems];
+      items.splice(i,1);
+      this.setState({
+        wholeScaleItems: items
+      });
+    }else{
+      const items = Object.assign({},this.state.wholeAssessItems);
+      const inx = items[i].findIndex(x=>x==j);
+      items[i].splice(inx,1);
+      this.setState({
+        wholeAssessItems: items
+      });
+    }
+
   }
   handleResult(opt){
     const {wholeResults} = this.state.wholeResults;
@@ -80,12 +91,12 @@ class AssessResult extends Component {
   }
   handoutTypes(item,i){
     const {getIndexData,indexData,timeTypes,wholeIndexs,closeAssess,showScaleFn,calcuFormula,isRecommend,chronicPushItems,
-      formulaResult,calcuResult} =this.props;
+      formulaResult,calcuResult,calcuValues,indexNames,showListScale} =this.props;
     let obj = [];
     Object.keys(wholeIndexs).map((i)=>{
       obj[i]=chronicPushItems[i];
     });
-    const {chooseSelecteds,wholeAssessItems,wholeAssessText,chartTimeTypes,wholeResults} = this.state;
+    const {chooseSelecteds,wholeAssessItems,wholeScaleItems,wholeAssessText,chartTimeTypes,wholeResults} = this.state;
     const chartData = indexData;
     const name = item.regionName+":";
     const list = item.data&&item.data.rows;
@@ -98,10 +109,13 @@ class AssessResult extends Component {
                           handleRes={this.handleResult}
                           text={wholeAssessText}
                           indexs={wholeAssessItems}
+                          scaleItems ={wholeScaleItems}
                           result={wholeResults}
                           showScaleFn={showScaleFn}
+                          showListScale={showListScale}
                           calcuFormula={calcuFormula}
                           calcuResult={calcuResult}
+                          calcuValues={calcuValues}
                           formulaResult={formulaResult}
                           isRecommend={isRecommend}
                           chronicPushItems={chronicPushItems}
@@ -114,6 +128,7 @@ class AssessResult extends Component {
       case 10:   //数据来源于后台
         return <ChartItem title={name}
                           data={chartData||{}}
+                          names={indexNames||{}}
                           timeTypes={JSON.stringify(chartTimeTypes)=='{}'?timeTypes&&timeTypes[i]:chartTimeTypes[i]}
                           pindex={i}
                           initFn={getIndexData}
@@ -131,6 +146,7 @@ class AssessResult extends Component {
       <div className={style['printShow']}>
         <Information></Information>
       </div>
+      {!(data&&data.length>0)?<p className={style['loading']}><img src={loadingIcon} alt='loading...'/></p>:''}
       {data && data.map((it, i) => {
         return this.handoutTypes(it, i);
       })}

+ 30 - 1
src/components/AssessResult/index.less

@@ -43,6 +43,9 @@
     .chooseItem{
       display: inline-block;
       margin-right: 10px;
+      .recomand{
+        color: @blue;
+      }
     }
     .scale{
       color: @blue;
@@ -73,7 +76,7 @@
     min-width: 302px;
     width: 49%;
     height: 250px;
-    margin-bottom: 20px;
+    margin: 15px 0 5px;
     position: relative;
     .chart-box{
       width: 100%;
@@ -168,6 +171,32 @@
   border-radius: 4px;
   padding: 5px;
 }
+.legend{
+  padding: 0 36px;
+  /*margin-bottom: 15px;*/
+  &>div{
+    display: inline-block;
+    margin-top: 10px;
+  }
+  span{
+    margin-right: 20px;
+  }
+  img{
+    vertical-align: middle;
+    width: 18px;
+    margin-right: 3px;
+  }
+}
+.loading{
+  text-align: center;
+  position: absolute;
+  top: 49%;
+  left: 49%;
+  img{
+    width: 40px;
+  }
+}
+
 @media print {
   .printShow,.textareaStatic {
     display: block;

+ 81 - 73
src/components/ChronicInfo/index.jsx

@@ -14,6 +14,7 @@ import {ComplexModal,ConfirmModal,MiniToast, Radio,CheckBtn} from '@commonComp';
 import AssessResult from '@containers/AssessResult';
 import ScaleTable from '@containers/ScaleTable';
 import Notify from '@commonComp/Notify';
+import {deepClone} from '@utils/tools';
 import $ from 'jquery';
 
 /***
@@ -64,6 +65,7 @@ class ChronicInfo extends React.Component{
     this.handleForRadio = this.handleForRadio.bind(this);
     this.showRecommendFn = this.showRecommendFn.bind(this);
     this.handleSaveCalcu = this.handleSaveCalcu.bind(this);     //保存评估修改的计算和可能结果
+    this.getAddBtnState = this.getAddBtnState.bind(this);
   }
 
   onPrint() {
@@ -75,16 +77,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){//量表按钮
@@ -111,9 +103,6 @@ class ChronicInfo extends React.Component{
       type:22,
     }
     getInfomation&&getInfomation(param);
-    /*this.setState({
-      infoId:id
-    })*/
   }
   closeInfo(){//关闭静态知识
     this.setState({
@@ -217,27 +206,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({
@@ -267,8 +260,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) {  //输入框类型的有没有填值
@@ -289,21 +287,51 @@ 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('请填写计算公式内容')
     }
   }
+  getAddBtnState(flag,v,i,j){
+    const {indexs,wholeScaleItems,addScaleItems} = this.props;
+    let btn = '';
+    if(flag){     //有结果
+      if(j!==undefined){
+        btn = indexs[i]&&indexs[i].includes(j)?<span className={style["add-record"]}>
+                   <img src={added} />
+                   已加入
+                 </span>:<span className={style["listResult"]} onClick={()=>this.handleAddAssessItem(v,i,j)}>
+                   <img src={add} />
+                   加入病历记录
+                 </span>;
+      }else{
+        btn = wholeScaleItems&&wholeScaleItems[i]?<span className={style["add-record"]}>
+                   <img src={added} />
+                   已加入
+                 </span>:<span className={style["listResult"]} onClick={()=>addScaleItems(v,i)}>
+                   <img src={add} />
+                   加入病历记录
+                 </span>;
+      }
+
+    }else{
+      btn = <span className={style["disable-add"]}>
+                   <img src={add} />
+                   加入病历记录
+                 </span>;
+    }
+
+    return btn;
+  }
   getDetail(){
-    const {data,indexs,formulaResult,calcuResult} = this.props;
+    const {data,indexs,formulaResult,calcuResult,calcuValues} = this.props;
     const {formulaId,optionId,possible,radioVal,isFormulaConfirm} = this.state;
     let list = data&&data.map((v,i)=>{
                     return <div className={style["list"]}>
@@ -312,12 +340,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>
@@ -325,41 +347,32 @@ class ChronicInfo extends React.Component{
                                   <i onClick={this.showTable.bind(this,it.content,v.id,i)}>{'【'+it.content.name+'】'}</i>
                                   {formulaResult&&formulaResult[it.content.id]?<i>{'结果:'}{formulaResult[it.content.id].calcalculate&&formulaResult[it.content.id].calcalculate.result.value +' '+ formulaResult[it.content.id].calcalculate.result.text}</i>:''}
                                 </span>
-                                {indexs[i]&&indexs[i].includes(j)?<span className={style["addResult"]}>
-                                  <img src={added} />
-                                  已加入
-                                </span>:<span className={style["listResult"]} onClick={()=>this.handleAddAssessItem(v,i,j)}>
-                                  <img src={add} />
-                                  加入病历记录
-                                </span>
+                                {
+                                  this.getAddBtnState(formulaResult&&formulaResult[it.content.id],v,i,j)
                                 }
                               </p>
                         }else if(it.type==2){
                           const cres = calcuResult&&calcuResult[v.id]||it.content.result;
                           const result = cres&&cres[1]&&cres[1].text;
+                          const details = calcuValues&&calcuValues[v.id]&&calcuValues[v.id].details||it.content.details;
                           return <div className={style["marTop"]}>
                             <span className={style["limit"]}>
                               计算公式结果:
                               <i className={style["blue"]} onClick={this.showFormula.bind(this,v.id)}>{result?result:'请选择'}</i>
                               <img src={level1} />
                             </span>
-                            {indexs[i]&&indexs[i].includes(j)?<span className={style["addResult"]}>
-                                  <img src={added} />
-                                  已加入
-                                </span>:<span className={style["listResult"]} onClick={()=>this.handleAddAssessItem(v,i,j)}>
-                                  <img src={add} />
-                                  加入病历记录
-                                </span>
+                            {
+                              this.getAddBtnState(result,v,i,j)
                             }
-                            <MiniToast title={it.content.name}
+                            {formulaId&&formulaId==v.id&&<MiniToast title={it.content.name}
                                 icon={allTableIcon}
                                 show={formulaId&&formulaId==v.id?true:false}
                                 close={this.closeFormula}
                                 confirm={this.confirmFormula.bind(this,v,i)}
                                 footer="true">
                                 <table>
-                                {it.content.details.map((item,idd)=>{
-                                    if(item.controlType==3||item.controlType==1){//单选
+                                {details.map((item,idd)=>{
+                                    if(item.controlType==0){//单选
                                       return <tr>
                                         <td>
                                           <span>{'请选择'+item.name+':'}</span>
@@ -393,7 +406,7 @@ class ChronicInfo extends React.Component{
                                 </table>
                                 <div className={style["forMulBtn"]} onClick={this.calcuFormula.bind(this,it,j, v, i)}>计算</div>
                                 <table>
-                                  {it.content.result && Array.isArray(it.content.result) &&it.content.result.map((itemResult, resultIndex) => {
+                                  {cres && Array.isArray(cres) &&cres.map((itemResult, resultIndex) => {
                                     return <tr>
                                         <td>
                                             <span>{itemResult.name+':'}</span>
@@ -405,7 +418,7 @@ class ChronicInfo extends React.Component{
                                   })}
                                 </table>
                                 
-                            </MiniToast>
+                            </MiniToast>}
                           </div>
                         }else if(it.type==3){
                           return <div className={style["marTop"]}>
@@ -414,13 +427,8 @@ class ChronicInfo extends React.Component{
                               <i onClick={this.showOption.bind(this,v.id)} className={style["blue"]}>{possible[v.id]?possible[v.id]:'请选择'}</i>
                               <img src={level1} />
                             </span>
-                            {indexs[i]&&indexs[i].includes(j)?<span className={style["addResult"]}>
-                                  <img src={added} />
-                                  已加入
-                                </span>:<span className={style["listResult"]} onClick={()=>this.handleAddAssessItem(v,i,j)}>
-                                  <img src={add} />
-                                  加入病历记录
-                                </span>
+                            {
+                              this.getAddBtnState(possible[v.id],v,i,j)
                             }
                             <MiniToast title='结果选择'
                                 icon={checkIcon}
@@ -461,7 +469,7 @@ class ChronicInfo extends React.Component{
       <span className={style['print']} onClick={this.onPrint}><img src={printIcon} alt=""/>打印</span>
       <span className={style['okBtn']} onClick={()=>this.closeTable()}>确定</span>
     </div>;
-    const {chronicMagItem,tableList,saveAssessInfos,chronicDesease,formulaResult,showHide,calcuFormula} = this.props;
+    const {chronicMagItem,tableList,saveAssessInfos,chronicDesease,formulaResult,showHide,calcuFormula,addScaleItems,wholeScaleItems} = this.props;
     const {showAssess,isAssessConfirm,tableName,tableId,parentId,parentIndex,isRecommendConfirm,showRecommend,radioVal,possible} = this.state;
     return <div className={style["tips"]} style={{marginBottom:'15px'}}>
               <div className={`${style["tips-title"]} ${style["chronic"]}`}>
@@ -502,10 +510,9 @@ class ChronicInfo extends React.Component{
                               <i onClick={this.handleListClick.bind(this,v)}>{'【'+v.name+'】'}</i>
                               {formulaResult&&formulaResult[v.id]?<i className={style['res']}>{'结果:'}{formulaResult[v.id].calcalculate&&formulaResult[v.id].calcalculate.result.value+' '+ (formulaResult[v.id].calcalculate.result.text?formulaResult[v.id].calcalculate.result.text:'')}</i>:''}
                             </span>
-                            <span className={style["listResult"]} onClick={()=>this.handleAddAssessItem(v,i,j)}>
-                              <img src={add} />
-                              加入病历记录
-                            </span>
+                            {
+                              this.getAddBtnState(formulaResult&&formulaResult[v.id],v,i)
+                            }
                           </li>
                         })}
                       </ul>
@@ -528,6 +535,7 @@ class ChronicInfo extends React.Component{
                               handleSaveCalcu={this.handleSaveCalcu}
                               closeAssess={this.showAssessFn}
                               showScaleFn={this.showTable.bind(this)}
+                              showListScale={this.handleListClick.bind(this)}
                               calcuFormula={calcuFormula}
                               radioVal={radioVal}
                               possible={possible}

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

@@ -73,14 +73,8 @@
           display: inline-block;
           width: 73%;
         }
-         .listResult,.addResult{
+         .listResult{
           .add-record;
-        } 
-        .addResult{
-          color: #3B9ED0;
-          text-align: left;
-          padding-left: 5px;
-          cursor: default;
         }
         .infoBox{
           position: absolute;
@@ -213,6 +207,7 @@
       }
       .listResult{
         .add-record;
+        cursor: pointer;
       }
     }
     .footer{

+ 1 - 1
src/components/Treat/AdverseReactions/index.jsx

@@ -75,7 +75,7 @@ class AdverseReactions extends Component {
                         
                     </span>
                         {item.details.map((it, idx) => {
-                            return <span key={item.id + it.name}>
+                            return <span className={style['adverse-reactions-name']} key={item.id + it.name}>
                                 <input type="checkbox" checked={it.value == 1} id={item.id + it.name} onChange={this.changeReact.bind(this, it, index)}/>
                                 <label for={item.id + it.name}> {it.name} </label>
                             </span>

+ 6 - 0
src/components/Treat/AdverseReactions/index.less

@@ -46,4 +46,10 @@
 .last-treat-big-name {
     position: relative;
 }
+.adverse-reactions-name {
+    input, label {
+        cursor: pointer;
+    }
+    
+}
 

+ 1 - 1
src/config/index.js

@@ -56,7 +56,7 @@ export default {
     },
     chartDismen:'year',   //评估图表默认维度:近1年year,近6个月sixMonth,近1个月month,近1周week
     chartSymbols:['emptyCircle' , 'rect', 'arrow', 'triangle', 'diamond','circle', 'pin', 'roundRect'],
-    chartColors:['#3B9ED0','#F50933', '#F99903', '#66CB33', '#91c7ae','#749f83',  '#ca8622'],
+    chartColors:['#E84C47','#B947E8', '#47B0E8', '#4774E8', '#6C4EF9','#63DEC2', '#DDD81D','#EF592B'],
     showCheckNum:16,        //查体默认展开非自由文本标签的个数
     radioOptionPer:'()',     //单选项输入占位符
     textReg:new RegExp("([\u4E00-\uFA29]|[\uE7C7-\uE7F3]|[a-zA-Z0-9])"), //包含中英文或数字

+ 5 - 18
src/containers/AssessResult.js

@@ -5,8 +5,7 @@ import {ISREAD} from '@store/types/homePage.js';
 import {billing} from '@store/async-actions/pushMessage';
 import {getAssessData,getIndexData} from '@store/async-actions/fetchModules';
 import {SET_ASSESS_DATA,SET_INDEX_DATA,SET_INDEX_SUB_TYPE,REMOVE_ASSESS_ITEMS,CLEAR_INDEX_DATA} from '@types/assessResult';
-import store from '@store';
-import {SET_SCALE_INFO} from "../store/types/pushMessage";
+import {parseChartData} from '@utils/tools';
 
 /***
  * 管理评估逻辑:
@@ -23,6 +22,7 @@ function mapStateToProps(state) {
   return {
     data:assessResult.data,
     indexData:assessResult.indexData,
+    indexNames:assessResult.indexNames,
     update:assessResult.update,     //评估数据更新
     update1:assessResult.update1,       //加入记录更新
     timeTypes:assessResult.indexTimeTypes,    //图表切换的维度
@@ -36,6 +36,8 @@ function mapStateToProps(state) {
     chronicPushItems: pushMessage.chronicPushItems, //慢病右侧推送
     formulaResult:pushMessage.formulaResult,       //量表计算结果
     calcuResult:pushMessage.calcuResult,      //评估弹窗可能结果计算结果
+    calcuValues:pushMessage.calcuValues,      //计算公式填的值
+    wholeScaleItems:assessResult.wholeScaleItems,     //全部量表中已加入病例的量表
   }
 }
 
@@ -91,22 +93,7 @@ function mapDispatchToProps(dispatch) {
   }
 }
 
-function parseChartData(indexData){
-  let arr=[],obj={},temp={};
-  let nameArr=[],nameObj={};  //暂弃
-  if(!indexData){
-    return [];
-  }
-  indexData.itemIndexData.map((it)=>{
-    temp=indexData.indexConfigData.find((i)=>{return it.itemName==i.indexUnique});
-    arr=obj[temp.indexDesc]||[];
-    nameArr=nameObj[temp.indexDesc]||[];
-    obj[temp.indexDesc]=[...arr,it];
-    nameObj[temp.indexDesc]=[...nameArr,it.itemName];
-  });
-  //nameObj,obj;
-  return obj;
-}
+
 const AssessResultContainer = connect(mapStateToProps, mapDispatchToProps)(AssessResult);
 
 export default AssessResultContainer;

+ 2 - 16
src/containers/AssessResultHis.js

@@ -6,6 +6,7 @@ import {billing} from '@store/async-actions/pushMessage';
 import {getAssessHis,getIndexData} from '@store/async-actions/fetchModules';
 import {SET_ASSESS_DATA,SET_INDEX_DATA} from '@types/assessResult';
 import {SET_ASSESS_HISTORY_DATA,SET_ASSESS_HISTORY_LOADING} from '@types/assessResultHis';
+import {parseChartData} from '@utils/tools';
 
 /***
  * 管理评估逻辑:
@@ -22,6 +23,7 @@ function mapStateToProps(state) {
   return {
     list:assessResultHis,    //已获取到的历史评估列表
     indexData:assessResult.indexData,
+    indexNames:assessResult.indexNames,
     loading:assessResultHis.loading,
     timeTypes:assessResult.indexTimeTypes,    //图表切换的维度
   }
@@ -76,22 +78,6 @@ function mapDispatchToProps(dispatch) {
   }
 }
 
-function parseChartData(indexData){
-  let arr=[],obj={},temp={};
-  let nameArr=[],nameObj={};  //暂弃
-  if(!indexData){
-    return [];
-  }
-  indexData.itemIndexData.map((it)=>{
-    temp=indexData.indexConfigData.find((i)=>{return it.itemName==i.indexUnique});
-    arr=obj[temp.orderNo]||[];
-    nameArr=nameObj[temp.orderNo]||[];
-    obj[temp.orderNo]=[...arr,it];
-    nameObj[temp.orderNo]=[...nameArr,it.itemName];
-  });
-  //nameObj,obj;
-  return obj;
-}
 const AssessResultHisContainer = connect(mapStateToProps, mapDispatchToProps)(AssessResultHis);
 
 export default AssessResultHisContainer;

+ 20 - 14
src/containers/ChronicInfo.js

@@ -2,12 +2,13 @@ import {connect} from 'react-redux';
 import ChronicInfo from '../components/ChronicInfo';
 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,SET_CHRONIC_CALCU_RESULT} from "@types/assessResult";
+import {ADD_ASSESS_ITEMS,SET_SAVE_ASSESS_DATA,SET_CHRONIC_CALCU_RESULT,ADD_WHOLE_SCALE_ITEMS} from "@types/assessResult";
 import {saveMessage} from "../store/async-actions/print";
 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,10 +21,13 @@ 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,     //整体评估可能结果
-    calcuResult:pushMessage.calcuResult
+    calcuResult:pushMessage.calcuResult,      //计算公式结果
+    calcuValues:pushMessage.calcuValues,      //计算公式填的值
+    wholeScaleItems:assessResult.wholeScaleItems,     //全部量表中已加入病例的量表
   }
 }
 
@@ -53,6 +57,13 @@ function mapDispatchToProps(dispatch){
         subIndex:i
       })
     },
+    addScaleItems(obj,i){
+      dispatch({
+        type:ADD_WHOLE_SCALE_ITEMS,
+        data:obj,
+        index:i
+      })
+    },
     //保存管理评估
     saveAssessInfos(obj,flg,noSave){     //noSave未true则不调页面保存接口
       dispatch(Object.assign({},obj,{type:SET_SAVE_ASSESS_DATA}));
@@ -70,10 +81,12 @@ function mapDispatchToProps(dispatch){
       })
     },
     //设置量表推送内容
-    setChronicPush(data) {
+    setChronicPush(data,id,calcuItem) {
       dispatch({
         type: SET_CHRONIC_PUSHS,
-        data: data
+        data: data,
+        calcuItem,
+        id
       })
     },
     // 计算公式计算
@@ -84,17 +97,10 @@ function mapDispatchToProps(dispatch){
         if(+res.data.code==0){
           const data = chronicPushItems;
           const result = res.data.data.result;
-          data[param.ppIndex].details[param.pIndex].content.result =  result;
-          /*if(item.isPop){
-            dispatch({
-              type:SET_CHRONIC_CALCU_RESULT,
-              data:deepClone(result),
-              id:item.param.disId
-            });
-          }*/
+          const content = data[param.ppIndex].details[param.pIndex].content;
+          content.result =  result;
           dispatch({
-            type: SET_CHRONIC_PUSHS,
-            data: deepClone(data),
+            type: SET_CALCU_VALUES,
             result:deepClone(result),
             id:item.param.disId
           })

+ 1 - 1
src/store/actions/pushMessage.js

@@ -113,7 +113,7 @@ export const addScheme = (state, action) => {
 	 //将同类药添加到一起
 	for (let i = 0; i < scheme[RepeatIndex].treatment.length; i++) {
 		for (let j = 0; j < treatment.length; j++) {
-			if (scheme[RepeatIndex].treatment[i].id === treatment[j].id && scheme[RepeatIndex].treatment[i].bigdrugsName === treatment[j].bigdrugsName) {
+			if (scheme[RepeatIndex].treatment[i].id === treatment[j].id && scheme[RepeatIndex].treatment[i].bigdrugsName === treatment[j].bigdrugsName && scheme[RepeatIndex].treatment[i].subdrugsName === treatment[j].subdrugsName) {
 				for(let z = 0; z < treatment[j].medicitionsList.length; z++) {
 					if(treatment[j].medicitionsList[z].selected) {
 						if(scheme[RepeatIndex].treatment[i].treatmentStr !== '') {

+ 7 - 5
src/store/async-actions/fetchModules.js

@@ -231,16 +231,18 @@ export function saveMode(mode){
 
 //慢病-获取管理评估
 export function getAssessData(){
-  return (dispatch,getStore)=>{
-    const {patInfo} = getStore();
+  return ()=>{
+    const emrData = getEMRParams();
     const param = {
       diseaseId:21773,
       disType:1,
       diag:'糖尿病',
+      diseaseName:'糖尿病',
       featureType:11,
-      lis:[],
-      sex:patInfo.message.sex,
-      age:patInfo.message.patientAge
+      lis:emrData.lis,
+      sex:emrData.sex,
+      age:emrData.age,
+      symptom:emrData.current + emrData.main
     };
     return json(api.getAssess,param);
   }

+ 12 - 5
src/store/reducers/assessResult.js

@@ -1,10 +1,11 @@
 import {SET_ASSESS_DATA,SET_INDEX_DATA,SET_SAVE_ASSESS_DATA,SET_INDEX_SUB_TYPE,ADD_ASSESS_ITEMS,
-  REMOVE_ASSESS_ITEMS,CLEAR_INDEX_DATA,SET_CHRONIC_CALCU_RESULT} from '@types/assessResult';
+  REMOVE_ASSESS_ITEMS,CLEAR_INDEX_DATA,SET_CHRONIC_CALCU_RESULT,ADD_WHOLE_SCALE_ITEMS} from '@types/assessResult';
 import config from "@config";
 
 const init = {
   data:[],        //评估模块数据
   indexData:{},     //评估图表数据
+  indexNames:{},
   indexTimeTypes:{},    //单个图表选中的维度
   wholeAssess:[],     //整体评估数据
   wholeIndexs:{},     //已加入的评估数据的index,加入按钮状态用
@@ -14,7 +15,8 @@ const init = {
     possible:{},
     radioVal:{}
   },    //可能结果
-  calcuResult:{}
+  calcuResult:{},       //计算公式填的值
+  wholeScaleItems:[],   //全部量表中添加的整体评估项
 };
 export default (state=init,action)=>{
   const res = Object.assign({},state);
@@ -24,8 +26,9 @@ export default (state=init,action)=>{
       res.data = action.data;
       return res;
     case SET_INDEX_DATA:
-      res.indexData[range[0]+range[1]] = data;
-      Object.keys(data).map((i)=>{
+      res.indexData[range[0]+range[1]] = data.obj;
+      res.indexNames[range[0]+range[1]] = data.nameObj;
+      Object.keys(data.obj||{}).map((i)=>{
         if(getNew){
           res.indexTimeTypes[pindex]=Object.assign({},res.indexTimeTypes[pindex],{[i]:config.chartDismen});
         }else{
@@ -53,7 +56,7 @@ export default (state=init,action)=>{
     case SET_SAVE_ASSESS_DATA:
       res.wholeIndexs = action.wholeAssessItems||{};
       res.wholeResults = action.wholeResults||{};
-      //res.indexTimeTypes = action.chartTimeTypes;
+      res.wholeScaleItems = action.wholeScaleItems||[];
       res.wholeAssessText = action.wholeAssessText||'';
       res.chooseSelecteds = action.chooseSelecteds||{};
       return res;
@@ -64,6 +67,10 @@ export default (state=init,action)=>{
       res.wholeIndexs[action.index] = arr?[...arr,action.subIndex]:[action.subIndex];
       res.update1 = Math.random();   //对象更新,与其他字段名不同因为绑定在pushItems,避免不必要的渲染
       return res;
+    case ADD_WHOLE_SCALE_ITEMS:
+      res.wholeScaleItems[action.index] = action.data;
+      res.update1 = Math.random();
+      return res;
     case REMOVE_ASSESS_ITEMS:
       const {index,pIndex} = action;
       const temp =[...res.wholeIndexs[pIndex]];

+ 9 - 9
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,19 +16,15 @@ const initState = {
   check: [ //辅检
   ],
   tips: {},
-  advice: {
-    // assay: '', 
-    // check: '',
-    // scheme: [],
-    // adviceStr: '' 
-  },
+  advice: {},
   AdviceStr: '',
   tmpFlg:'',
   tableList:[],
   formulaResult:{},
   scaleInfo:{},
   showHide:{},
-  calcuResult:{}
+  calcuResult:{},
+  calcuValues:{}
 };
 export default function(state = initState, action) {
   let res = Object.assign({},state);
@@ -78,9 +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.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;

+ 2 - 1
src/store/types/assessResult.js

@@ -5,4 +5,5 @@ export const SET_INDEX_SUB_TYPE = 'SET_INDEX_SUB_TYPE';   //保存单个图表
 export const ADD_ASSESS_ITEMS = 'ADD_ASSESS_ITEMS';     //加入评估
 export const REMOVE_ASSESS_ITEMS = 'REMOVE_ASSESS_ITEMS';  //整体评估删除
 export const CLEAR_INDEX_DATA = 'CLEAR_INDEX_DATA';     //删除图表数据
-export const SET_CHRONIC_CALCU_RESULT = 'SET_CHRONIC_CALCU_RESULT';   //保存评估中计算结果
+export const SET_CHRONIC_CALCU_RESULT = 'SET_CHRONIC_CALCU_RESULT';   //保存评估中计算结果
+export const ADD_WHOLE_SCALE_ITEMS  = 'ADD_WHOLE_SCALE_ITEMS';    //从全部量表中添加的整体评估

+ 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';  //保存计算公式数据
 
 

+ 20 - 0
src/utils/tools.js

@@ -920,6 +920,25 @@ function readyKeepHistory(){
     return 3;
   }
 }
+
+//评估图表数据转换
+function parseChartData(indexData){
+  let arr=[],obj={},temp={};
+  let nameArr=[],nameObj={};
+  if(!indexData){
+    return [];
+  }
+  indexData.itemIndexData.map((it)=>{
+    temp=indexData.indexConfigData.find((i)=>{return it.itemName==i.indexUnique});
+    arr=obj[temp.indexDesc]||[];
+    nameArr=nameObj[temp.indexDesc]||[];
+    obj[temp.indexDesc]=[...arr,it];
+    nameObj[temp.indexDesc]=[...nameArr,it.itemName];
+  });
+  //nameObj,obj;
+  return {nameObj,obj};
+}
+
 module.exports = {
     checkType: Type.checkType,
     regexp,
@@ -955,4 +974,5 @@ module.exports = {
     getCurrentDate,
     ifOtherClear,
     readyKeepHistory,
+    parseChartData,
 };