Explorar el Código

评估选择和补充存值

zhouna hace 6 años
padre
commit
3626f837b9

+ 17 - 9
src/components/AssessResult/ChartItem/index.jsx

@@ -68,12 +68,16 @@ class ChartItem extends Component {
     }
   }
   rangChange(type,index){
-    const {initFn,handleChange} = this.props;
+    const {initFn,handleChange,data} = this.props;
     const times = this.getXAxisArr(type);
-    const range = [times[0],times[times.length-1]];
+    const startTime=times[0];
+    const endTime=times[times.length-1];
+    const range = [startTime,endTime];
     const temp=this.props.timeTypes;
-    initFn&&initFn({range,rangeType:type,index});
-    handleChange(Object.assign(temp,{[index]:type}));
+    if(!data[startTime+endTime]){
+      initFn&&initFn({range,rangeType:type,index});
+    }
+    handleChange&&handleChange(Object.assign(temp,{[index]:type}));
   }
   getContainers(){
     const timeTypes = this.props.timeTypes;
@@ -86,11 +90,15 @@ class ChartItem extends Component {
     return arr;
   }
   componentDidMount(){
-    const {initFn} = this.props;
+    const {initFn,data} = this.props;
     const type = config.chartDismen;
     const times = this.getXAxisArr(config.chartDismen);
-    const range = [times[0],times[times.length-1]];
-    initFn&&initFn({range,rangeType:type});
+    const startTime=times[0];
+    const endTime=times[times.length-1];
+    const range = [startTime,endTime];
+    if(!data[startTime+endTime]){
+      initFn&&initFn({range,rangeType:type});
+    }
   }
   render() {
     const {title} = this.props;
@@ -211,7 +219,7 @@ class Chart extends Component{
     this.drawChart();
   }
   render(){
-    const {type} = this.props;
+    const {type,index} = this.props;
     return <div className={style['cont']}>
               <div className={style['time-range']}>
                 <span className={type=='year'?style['range']+" "+style['on']:style['range']} onClick={()=>this.timeSwitch("year")}>近一年</span>
@@ -219,7 +227,7 @@ class Chart extends Component{
                 <span className={type=='month'?style['range']+" "+style['on']:style['range']} onClick={()=>this.timeSwitch("month")}>近一个月</span>
                 <span className={type=='week'?style['range']+" "+style['on']:style['range']} onClick={()=>this.timeSwitch("week")}>近一周</span>
               </div>
-              <div className={style["chart-box"]} id={'chart'+this.props.index}></div>
+              <div className={style["chart-box"]} id={'chart'+index}></div>
             </div>;
   }
 }

+ 5 - 16
src/components/AssessResult/ChooseItem/index.jsx

@@ -11,22 +11,15 @@ class ChooseItem extends Component {
     super(props);
     this.state = {
       saveData:null,
-      selecteds:{},
     };
   }
 
   handleRadio(name,value){
-    const {selecteds} = this.state;
-    const {handleChange} = this.props;
-    this.setState({
-      selecteds:Object.assign({},selecteds,{[name]:value})
-    });
-    handleChange&&handleChange(Object.assign({},selecteds,{[name]:value}));     //不能用this.state.selecteds,因为state更新不是即时的
-
+    const {handleChange,selecteds} = this.props;
+    handleChange&&handleChange(Object.assign({},selecteds,{[name]:value}));
   }
   handleCheckbox(name,value){
-    let {selecteds} = this.state;
-    const {handleChange} = this.props;
+    const {handleChange,selecteds} = this.props;
     selecteds[name]?selecteds[name]:selecteds[name]=[];
     const index = selecteds[name].findIndex((i)=>i==value);
     if(index!=-1){
@@ -34,14 +27,10 @@ class ChooseItem extends Component {
     }else{
       selecteds[name].push(value);
     }
-    this.setState({
-      selecteds:selecteds
-    });
     handleChange&&handleChange(selecteds);
   }
   render() {
-    const {title,data} = this.props;
-    const {selecteds} = this.state;
+    const {title,data,selecteds} = this.props;
     return <div className={style['assess-item']}>
         <h2>{title}</h2>
         <div className={style['item-content']}>
@@ -55,7 +44,7 @@ class ChooseItem extends Component {
                       return <div className={style['choose-item']}>
                                 <Radio label={i.detailName}
                                        value={i.detailName}
-                                       isSelect={selecteds[it.name]==i.detailName}
+                                       isSelect={selecteds&&selecteds[it.name]==i.detailName}
                                        handleClick={this.handleRadio.bind(this,it.name,i.detailName)}></Radio>
                                 {i.state?<i>(智能推荐)</i>:''}
                               </div>;

+ 9 - 2
src/components/AssessResult/ScaleItem/index.jsx

@@ -9,8 +9,9 @@ class ScaleItem extends Component {
   constructor(props) {
     super(props);
     this.state={
-      supplement:''
+      supplement:props.text||''
     };
+    this.$area = React.createRef();
     this.getItems = this.getItems.bind(this);
     this.getDetailItems = this.getDetailItems.bind(this);
   }
@@ -43,8 +44,14 @@ class ScaleItem extends Component {
       return this.getDetailItems(it,i);
     });
   }
+  componentDidMount(){
+    if(this.props.text){
+      this.$area.current.value = this.props.text;
+    }
+  }
   render() {
     const {title,handleInp} = this.props;
+    const {supplement} = this.state;
     return <div className={style['assess-item']}>
       <h2>{title}</h2>
       <div className={style['item-content']}>
@@ -53,7 +60,7 @@ class ScaleItem extends Component {
             this.getItems()
           }
           <li>
-            <textarea className={style['edit-row']} name="supplement" rows="6" placeholder='评估描述' onInput={(e)=>handleInp(e.target.value)}></textarea>
+            <textarea className={style['edit-row']} ref={this.$area} name="supplement" rows="6" placeholder='评估描述' onBlur={(e)=>handleInp(e.target.value)}></textarea>
           </li>
         </ul>
       </div>

+ 8 - 8
src/components/AssessResult/index.jsx

@@ -10,10 +10,10 @@ class AssessResult extends Component {
   constructor(props) {
     super(props);
     this.state={
-      chooseSelecteds:{},     //大数据选择模块
+      chooseSelecteds:Object.assign({},props.chooseSelecteds),     //大数据选择模块
       chartTimeTypes:{},      //图表模块
-      wholeAssessItems:props.wholeIndexs,     //整体评估模块
-      wholeAssessText:props.wholeText||''     //整体评估补充说明
+      wholeAssessItems:Object.assign({},props.wholeIndexs),     //整体评估模块
+      wholeAssessText:props.wholeAssessText||''     //整体评估补充说明
     }
     this.handleChooseChange = this.handleChooseChange.bind(this);
     this.handleScaleDel = this.handleScaleDel.bind(this);
@@ -23,7 +23,7 @@ class AssessResult extends Component {
     //获取评估
     this.props.getAssess();
   }
-  handleScaleText(text){
+  handleScaleText(text){console.log(text)
       this.setState({
         wholeAssessText:text
       })
@@ -55,16 +55,16 @@ class AssessResult extends Component {
   }
   handoutTypes(item,i){
     const {getIndexData,indexData,timeTypes,wholeAssessData,wholeIndexs} =this.props;
-    //console.log(indexData)
+    const {chooseSelecteds,wholeAssessItems,wholeAssessText} = this.state;
     const chartData = indexData;
     const name = item.regionName+":";
     const list = item.data&&item.data.rows;
     switch (+item.regionType){
       case 0:     //数据来源与右侧手动添加
-        return <ScaleItem title={name} data={wholeAssessData} handleRemove={this.handleScaleDel} handleInp={this.handleScaleText} indexs={this.state.wholeAssessItems}></ScaleItem>;
+        return <ScaleItem title={name} data={wholeAssessData} handleRemove={this.handleScaleDel} handleInp={this.handleScaleText} text={wholeAssessText} indexs={wholeAssessItems}></ScaleItem>;
       case 1:     //数据来源于大数据
-        return <ChooseItem title={name} data={list} handleChange={this.handleChooseChange.bind(this,i)}></ChooseItem>;
-      case 10:    //数据来源于后台
+        return <ChooseItem title={name} data={list} handleChange={this.handleChooseChange.bind(this,i)} selecteds={chooseSelecteds[i]} ></ChooseItem>;
+      case 10:   //数据来源于后台
         return <ChartItem title={name} data={chartData||{}} timeTypes={timeTypes} initFn={getIndexData} handleChange={this.handleChartChange.bind(this,i)}></ChartItem>;
       default:
         return '';

+ 2 - 4
src/components/PreviewBody/index.jsx

@@ -3,7 +3,7 @@ import style from "./index.less";
 import { normalVal, filterDataArr, filterOtherDataArr,timestampToTime } from '@utils/tools';
 import Notify from '@commonComp/Notify';
 import $ from "jquery";
-import arrow from '@common/images/icon_tri_blue.png';
+import AssessResultHis from '@containers/AssessResultHis'
 
 (function ($) {
   var opt;
@@ -306,9 +306,7 @@ class PreviewBody extends Component {
           </tr>
         </table>
         <p style={{textAlign:'right',marginTop:'15px'}}>医生签名:<span style={{minWidth: '60px',padding: '0 5px 2px 5px',borderBottom: '1px solid #333',}}>{baseObj ? baseObj.doctorName : (noData ? '' : preInfo.doctorName)}</span></p>
-        <div className={style['assess-result']}>
-          <p className={style['enter']}>管理和评估结果:<a>查看结果<img src={arrow} /></a></p>
-        </div>
+        {/*<AssessResultHis inquiryId={baseObj&&baseObj.inquiryCode}></AssessResultHis>*/}
       </div>
 
       <div onClick={() => { this.surePrint(dataStr) }} style={{

+ 0 - 14
src/components/PreviewBody/index.less

@@ -40,18 +40,4 @@ table{
   tr td:first-child{
     width: 31%;
   }
-}
-.assess-result{
-  border-top: 1px #e2e4e6 solid;
-  margin-top:50px;
-  .enter{
-    margin-top: 15px;
-  }
-  a{
-    color: @blue;
-    cursor: pointer;
-    img{
-      margin-left: 4px;
-    }
-  }
 }

+ 13 - 12
src/containers/AssessResult.js

@@ -17,18 +17,20 @@ import store from '@store';
  *
  * ***/
 
-function mapStateToProps(state) {console.log(state)
+function mapStateToProps(state) {
   const {assessResult} = state;
   return {
     data:assessResult.data,
     indexData:assessResult.indexData,
     saveIndexData:assessResult.saveIndexData,
     saveData:assessResult.saveData,
-    update:assessResult.update,
-    update1:assessResult.update1,
-    timeTypes:assessResult.indexTimeTypes,
-    wholeAssessData:assessResult.wholeAssess,
-    wholeIndexs:assessResult.wholeIndexs
+    update:assessResult.update,     //评估数据更新
+    update1:assessResult.update1,       //加入记录更新
+    timeTypes:assessResult.indexTimeTypes,    //图表切换的维度
+    wholeAssessData:assessResult.wholeAssess,   //评估内容
+    wholeIndexs:assessResult.wholeIndexs,      //已加入评估记录的推送项
+    chooseSelecteds:assessResult.chooseSelecteds,    //已选中的选项
+    wholeAssessText:assessResult.wholeAssessText,     //整体评估补充说明
   }
 }
 
@@ -51,16 +53,15 @@ function mapDispatchToProps(dispatch) {
       const {range,rangeType,index} = param;
       const indexData = state.assessResult.indexData;
       const obj = indexData[range[0]+range[range.length-1]];
-
-      if(index!=undefined&&obj&&Object.keys(obj).length!=0){      //该维度已获取过数据
-        //console.log(obj,rangeType,index);
-        /*dispatch({
+      /*if(index!=undefined&&obj&&Object.keys(obj).length!=0){      //该维度已获取过数据
+        console.log(obj,rangeType,index);
+        dispatch({
           type:SET_INDEX_SUB_TYPE,
           index,
           rangeType
-        });*/
+        });
         return ;
-      }
+      }*/
       dispatch(getIndexData(range)).then((res)=>{
         if(res.data.code=='0'){
           dispatch({

+ 5 - 1
src/containers/ChronicInfo.js

@@ -3,6 +3,8 @@ import ChronicInfo from '../components/ChronicInfo';
 import {SHOW_TABLE_LIST,HIDE_TABLE_LIST} from '@store/types/pushMessage';
 import {getTableList,getScaleInfo} 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';
 
 function mapStateToProps(state){
   return{
@@ -39,8 +41,10 @@ function mapDispatchToProps(dispatch){
       })
     },
     //保存管理评估
-    saveAssessInfos(obj){
+    saveAssessInfos(obj){console.log(obj)
       dispatch(Object.assign({},obj,{type:SET_SAVE_ASSESS_DATA}));
+      dispatch(saveClickNum);
+      dispatch(() => saveMessage())
     }
   }
 }

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

@@ -677,7 +677,7 @@ export const clearMainSuit = (state,action)=>{//回读和清除
   if(action.symptomFeature !== undefined){//清除分词数据
     res.symptomFeature.featureData = action.symptomFeature;
   }
-  console.log(res,action);
+  //console.log(res,action);
   return res;
 }
 

+ 11 - 0
src/store/async-actions/fetchModules.js

@@ -19,6 +19,7 @@ const api={
   getSymptomFeature:'/feature/getSymptomFeature',
   getAssess:'/evaluationModuleMapping/getEvaluationModules',    //获取管理评估-慢病
   getIndexData:'/indexData/getIndexDatas',    //获取指标数据-图表-慢病
+  getAssessHis:'/inquiryInfo/getEvaluations',   //历史评估记录
 };
 
 export const getFeature = (item)=>{
@@ -237,6 +238,16 @@ export function getAssessData(){
   }
 }
 
+//慢病-获取管理评估历史单条记录
+export function getAssessHis(id){
+  return (dispatch,getStore)=>{
+    const param = {
+      inquiryId:id,
+    };
+    return json(api.getAssessHis,param);
+  }
+}
+//获取评估中图表数据
 export function getIndexData(range){
   return (dispatch,getStore)=>{
     const {patInfo} = getStore();

+ 1 - 1
src/store/async-actions/historyTemplates.js

@@ -7,7 +7,7 @@ export const initItemList = (item) => {
     let baseList = store.getState();
     // let whichSign = baseList.typeConfig.typeConfig;
     let state = baseList.patInfo.message;
-    const param = item?{"hospitalId": state.hospitalId,"patientId": state.patientId,"disName":item.name,"disType":1}:{"hospitalId": state.hospitalId,"patientId": state.patientId};
+    const param = item?{"hospitalId": state.hospitalId,"patientId": state.patientId,"disName":item.name,"disType":1}:{"hospitalId": state.hospitalId,"patientId": state.patientId,"disType":0,"disName":'糖尿病复诊'};
     return (dispatch) => {
         axios.json('/inquiryInfo/hisInquirys',param).then((res)=>{
             const data =res.data;

+ 17 - 1
src/store/async-actions/print.js

@@ -18,7 +18,11 @@ export const saveMessage = (bool) => {
     let jsonData = getAllDataList(baseList);
     const lisData = baseList.inspect.pushItem;
     const lisArr = transferIndexData(lisData);
-    //transferIndexData(lisData);
+    const evaluation={
+      htmlContent:JSON.stringify(getEvaluations(baseList.assessResult)),
+      //scaleList:[]
+    };//getEvaluation();
+    console.log(baseList)
     // console.log(jsonStr.diag,'保存历史病历')
     json('/inquiryInfo/saveInquiry', {
         "doctorId": state.doctorId,
@@ -27,6 +31,7 @@ export const saveMessage = (bool) => {
         "patientId": state.patientId,         //患者id              
         "dataJson": JSON.stringify(getAllDataList(baseList)),
         "indexData":lisArr,
+        "inquiryEvaluation":evaluation,
         "detailList": [{
             "content": jsonStr.chief,
             "contentValue":filterDataArr(JSON.parse(jsonStr.chief)),
@@ -123,6 +128,17 @@ function transferIndexData(data) {
    return arr;
 }
 
+function getEvaluations(base){
+    return {
+      data:base.data,
+      chooseSelecteds:base.chooseSelecteds,
+      indexTimeTypes:base.indexTimeTypes,
+      wholeAssess:base.wholeAssess,
+      wholeAssessText:base.wholeAssessText,
+      wholeIndexs:base.wholeIndexs
+    };
+}
+
 export const clearMessages = () => {
     let baseList = store.getState();
     let whichSign = baseList.typeConfig.typeConfig;

+ 3 - 3
src/store/reducers/assessResult.js

@@ -36,10 +36,10 @@ export default (state=init,action)=>{
       res.update = Math.random();   //对象更新
       return res;
     case SET_SAVE_ASSESS_DATA:
-      res.wholeIndexs = action.wholeAssessItems;
+      res.wholeIndexs = action.wholeAssessItems||{};
       //res.indexTimeTypes = action.chartTimeTypes;
-      res.wholeAssessText = action.wholeAssessText;
-      res.chooseSelecteds = action.chooseSelecteds;
+      res.wholeAssessText = action.wholeAssessText||'';
+      res.chooseSelecteds = action.chooseSelecteds||{};
       return res;
     //case CLEAR_ASSESS_DATA:
     case ADD_ASSESS_ITEMS: