Browse Source

现病史手动输入存值;量表内容根据type展示

liucf 6 years ago
parent
commit
e60c29f6fc

+ 21 - 2
src/components/CurrentIll/index.jsx

@@ -29,6 +29,7 @@ class CurrentIll extends Component{
     this.onchange = this.onchange.bind(this);
     this.handleSearchSelect = this.handleSearchSelect.bind(this);
     this.handleClick = this.handleClick.bind(this);
+    this.handleBlur = this.handleBlur.bind(this);
   }
   
   componentWillReceiveProps(nextProps){
@@ -140,6 +141,19 @@ class CurrentIll extends Component{
     })
     return list;
   }
+  handleBlur(e){console.log(234,e)
+    const {freeText} = this.props;
+    const ev = e || window.event;
+    const data = ev.target.innerText || e.target.innerHTML;
+    if(!isIE()){
+      e.target.innerText?(e.target.innerText=""):(e.target.innerHTML="")
+      freeText && freeText(data.trim());
+    }else{
+      if(datas.length==0){
+        freeText && freeText(data);
+      }
+    }
+  }
 
   render(){
     const {fuzhen,isChronic,type,fetchPushInfos,handleInput,isRead,saveText,searchData,totalHide,showArr,focusIndex,editClear,data,boxLeft,boxTop} = this.props;
@@ -156,8 +170,13 @@ class CurrentIll extends Component{
                         handleInput={handleInput}/>;
     }
     return  <div className={style['current-ill']}>
-      <ItemBox title='现病史' editable={editClear||data.length==0?true:false} handleFocus={this.handleFocus} onchange={forbidInput?(e)=>{this.onchange(e)}:''} handleClick={this.handleClick}>
-        {data.length>0?this.getInlineTag():''}
+      <ItemBox title='现病史' 
+      editable={editClear||data.length==0?true:false} 
+      handleFocus={this.handleFocus} 
+      onchange={forbidInput?(e)=>{this.onchange(e)}:''} 
+      handleClick={this.handleClick}
+      handleBlur={this.handleBlur}>
+        {data.length>0?this.getInlineTag():(saveText[0]?saveText[0]:'')}
       </ItemBox>
       {searchFlag ? <SearchDrop data={searchData} show={!totalHide} onSelect={this.handleSearchSelect} left={boxLeft} top={boxTop} />:""}
     </div>

+ 36 - 17
src/components/ScaleTable/index.jsx

@@ -1,6 +1,6 @@
 import React from 'react';
 import style from './index.less';
-import mocks from '../../mock/chronicTable.js'
+// import mocks from '../../mock/chronicTable.js'
 import { Radio,CheckBtn ,Notify} from '@commonComp';
  import Information from '../Information';
  import {deepClone} from '@utils/tools.js';
@@ -158,21 +158,33 @@ class ScaleTable extends React.Component{
       }
     })
   }
+  filterScale(data){//type=1为表格内容
+    let scale = {};
+    for(let i=0; i<data.length; i++){
+      if(data[i].type==1){
+        scale = data[i];
+      }
+    }
+    return scale;
+  }
   componentWillReceiveProps(nextProps){ 
     const {tableId} = this.props;
-    if(JSON.stringify(nextProps.scaleInfo) !== '{}'){
+    const data = nextProps.scaleInfo;
+    if(JSON.stringify(data) !== '{}' && data[tableId]){
+      let scale = this.filterScale(data[tableId]);
       this.setState({
-        // valueData:nextProps.scaleInfo[tableId].length?mocks.newData:JSON.parse(nextProps.scaleInfo[tableId].content),
-        valueData:nextProps.scaleInfo[tableId]?JSON.parse(nextProps.scaleInfo[tableId][1].content):{},
+        // valueData:JSON.parse(nextProps.scaleInfo[tableId][1].content),
+        valueData:scale.content?JSON.parse(scale.content):{}
       })
     }
   }
   componentDidMount(){
     const {tableId,scaleInfo} = this.props;
     if(scaleInfo&&scaleInfo[tableId]){
+      let scale = this.filterScale(scaleInfo[tableId]);
       this.setState({
-        // valueData:scaleInfo[tableId].length?mocks.newData:JSON.parse(scaleInfo[tableId].content)
-        valueData:JSON.parse(scaleInfo[tableId][1].content)
+        // valueData:JSON.parse(scaleInfo[tableId][1].content)
+        valueData:scale.content?JSON.parse(scale.content):{}
       })
     }  
   }
@@ -183,7 +195,12 @@ class ScaleTable extends React.Component{
     // 替换表格内容
     let allDatas = scaleInfo[tableId]?JSON.parse(JSON.stringify(scaleInfo[tableId])):'' ;
     if(allDatas){
-      allDatas[1].content = JSON.stringify(valueData);
+      // allDatas[1].content = JSON.stringify(valueData);
+      for(let i=0; i<allDatas.length; i++){
+        if(allDatas[i].type==1){
+          allDatas[i].content = JSON.stringify(valueData);
+        }
+      }
       // 需求:未点计算,直接点确定、关闭也保存选中数据 4-30
       saveScaleData&&saveScaleData({id:tableId,data:allDatas});
     }
@@ -261,26 +278,28 @@ class ScaleTable extends React.Component{
     const {title,scaleInfo,tableId,formulaResult} = this.props;
     const data = scaleInfo[tableId];
     let {selecteds,scaleResult1} = this.state;
-    const content = data && data[1].content;//表格内容
-    const preContent = data && data[0].content;//表前文字
-    const footContent = data && data[2].content; //表后文字
-    const datas = content && JSON.parse(content);
+    const scale = data && this.filterScale(data);
+    const datas = scale && scale.content && JSON.parse(scale.content);
     const scaleResult = scaleResult1 || formulaResult&&formulaResult[tableId]; //量表计算结果
     return <div className={style['tableBox']} id="printcontent">
             <div className={style['printShow']}>
               <Information></Information>
             </div> 
             <h1>{datas?datas.scaleName:''}</h1>
-            <div dangerouslySetInnerHTML={{__html:preContent}} className={style['textlh']}></div>
-            <div className={style['textContent']}>
-              {this.getContent()}
-              {datas&&datas.noCalc==0?<div className={style['total']}>
+            {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.noCalc==0?<div className={style['total']}>
                     <span>总分:</span>
                     <span>{scaleResult&&scaleResult.calcalculate&&scaleResult.calcalculate.result&&scaleResult.calcalculate.result.value +' '+ scaleResult.calcalculate.result.text||''}</span>
                     <span className={style['totalBtn']} onClick={this.handleFormula}>得分</span>
                   </div>:''}
-            </div>
-            <div dangerouslySetInnerHTML={{__html:footContent}} className={style['textlh']}></div>
+                </div>
+              }
+            })}
           </div>
   }
 }

+ 13 - 1
src/containers/CurrentIll.js

@@ -1,7 +1,7 @@
 import React from 'react';
 import { connect } from 'react-redux';
 import CurrentIll from '@components/CurrentIll';
-import {INSERT_PROCESS,SET_CURRENT_DATA,SETTEXTMODEVALUE,SET_LABEL_MODULE,SELECT_SEARCHDATA,CLEAR_CURRENT_EDIT} from '@store/types/currentIll';
+import {INSERT_PROCESS,SET_CURRENT_DATA,SETTEXTMODEVALUE,SET_LABEL_MODULE,SELECT_SEARCHDATA,CLEAR_CURRENT_EDIT,SAVE_CURR_FREE} from '@store/types/currentIll';
 import {SET_CURRENT_ILL} from '@store/types/fillInfo'
 import {pushMessage} from '../store/async-actions/pushContainer';
 import {getModules} from '../store/async-actions/fetchModules.js';
@@ -141,6 +141,18 @@ function mapDispatchToProps(dispatch) {
           left:left,
           dis:0
         })
+      },
+      freeText(item){//自由输入
+        dispatch({
+          type: SAVE_CURR_FREE,
+          data:item
+        })
+        //右侧推送
+          setTimeout(function(){ 
+            if(didPushParamChange()){
+              dispatch(billing());
+            }
+          },500);
       }
     }
 }

+ 13 - 18
src/store/actions/currentIll.js

@@ -114,24 +114,17 @@ export const setData = (state,action) =>{
   let useEmpty,mainData;
   let mainModleData = JSON.parse(JSON.stringify(action.info.mainData));//主诉模板数据
   let moduleData = JSON.parse(JSON.stringify(res.moduleData));//现病史模板
-  // let addModule = JSON.parse(JSON.stringify(res.addModule));//拷贝的模板
   let current = JSON.parse(JSON.stringify(moduleData));
   let newMain = [];
-  let mainLabelModule = res.mainLabelModule;//主诉选中的症状id获取到的模板
-  let objToArr = [];
-  let keyArr = Object.keys(mainLabelModule);
-  for(let i=0; i<keyArr.length; i++){
-    objToArr.push(mainLabelModule[JSON.parse(keyArr[i])]);
-  }
-  /*for(let m in mainLabelModule){
-    objToArr.push(mainLabelModule[m]);
-  }*/
-  // 过滤掉没有mapping的数据
-  let mainLabelModuleArr = objToArr;
-  /*let mainLabelModuleArr = objToArr.filter((item)=>{
-    return item.questionMapping.length>0;
-  })*/
-  
+  let mainLabelModule = res.mainLabelModule;//主诉选中的症状id获取到的尾巴
+  let mainLabelModuleArr = [];
+  if(mainLabelModule){
+    let keyArr = Object.keys(mainLabelModule);
+    for(let i=0; i<keyArr.length; i++){
+      mainLabelModuleArr.push(mainLabelModule[JSON.parse(keyArr[i])]);
+    }
+  }
+ 
   // 是否使用空模板:num=0时判断mainIds,num>=1,截取第一病程遍历是否有症状exist
   if(num==0){
     useEmpty = mainIds.length>0 ? false:true;
@@ -140,11 +133,13 @@ export const setData = (state,action) =>{
     // 模板也分词时得加上分词结果的判断
     let sliceIdx;
     for(let j=0; j<mainModleData.length; j++){
-      if(mainModleData[j].id==config.tongYId && mainModleData[j].pos==1){
+      // if(mainModleData[j].id==config.tongYId && mainModleData[j].pos==1){
+      if(mainModleData[j].pos==1){
         sliceIdx = j;
+        break;
       }
     }
-    mainData = mainModleData.slice(0,sliceIdx);
+    mainData = mainModleData.slice(0,sliceIdx);//截取第一病程
     let existData = mainData.filter((item)=>{
       return item.exist;
     })

+ 2 - 2
src/store/async-actions/pushMessage.js

@@ -173,7 +173,7 @@ export const getScaleInfo = (it)=>{console.log('参数:',it)
         json(api.push, params)
         .then((res)=>{
             const result = res.data;
-            if(result.code==0){
+            if(result.code==0 && result.data.scale && result.data.scale.length>0){
                 dispatch({
                     type: SET_SCALE_INFO,
                     data: result.data.scale,
@@ -185,7 +185,7 @@ export const getScaleInfo = (it)=>{console.log('参数:',it)
                     value:true
                 })
             }else{
-                Notify.info(result.msg)
+                Notify.info(result.msg||'暂无量表信息')
             }
         }).catch((e) => {
             console.log(e)

+ 5 - 1
src/store/reducers/currentIll.js

@@ -2,7 +2,7 @@
 import {SET_CURRENT,CURRENT_CONFIRM,INSERT_PROCESS,SET_CURRENT_DATA,SET_LABEL_MODULE,SETMAINCHECKBOX,
   CURRENT_RADIO,CURRENT_NUMBER,CURRENT_TEXT_LABEL,CLEAR_CURRENT_ILL,SETTEXTMODEVALUE,CURRENT_GET_BIGDATAPUSH,CURRENT_CLEAR,
   SET_CURRENT_SEARCH,SETCURRENTTEXT,CURRENT_FOCUS_INDEX,SELECT_SEARCHDATA,CLEAR_CURRENT_EDIT,CURRENTADDLABELITEM,
-  SETCURRENTINPUT,DEL_CURRENT,CURRENT_TEXT_LABEL_NUMBER,REMOVE_CURR_ID,CURRENT_MUL,DEL_CURRENT_LABLE,SET_RADIO_INPUT_VALUE,CURRENT_CHRONIC} from '../types/currentIll';
+  SETCURRENTINPUT,DEL_CURRENT,CURRENT_TEXT_LABEL_NUMBER,REMOVE_CURR_ID,CURRENT_MUL,DEL_CURRENT_LABLE,SET_RADIO_INPUT_VALUE,CURRENT_CHRONIC,SAVE_CURR_FREE} from '../types/currentIll';
 import {confirm,insertProcess,setData,setCheckBox,setRadioValue,setNumberValue,changeLabelVal,clearCurrentIll,
   setTextModeValue,setModule,bigDataSymptom,setCheckText,insertLabelData,clearCurrentEdit,addLabelItem,setInputLabel,
   backspaceText,changeNumLabelVal,removeId,multipleComfirn,delSingleLable,setRadioInputValue,fillChronicModule} from '../actions/currentIll';
@@ -81,6 +81,10 @@ export default function(state=initState,action){
       return setRadioInputValue(state,action);
     case CURRENT_CHRONIC:
       return fillChronicModule(state,action);
+    case SAVE_CURR_FREE://自由输入
+      res.saveText[0] = action.data;
+      res.update = Math.random();
+      return res;
     default:
       return state;
   }

+ 1 - 0
src/store/types/currentIll.js

@@ -27,4 +27,5 @@ export const CURRENT_MUL = 'CURRENT_MUL';     //单列多选
 export const DEL_CURRENT_LABLE = 'DEL_CURRENT_LABLE';     //
 export const SET_RADIO_INPUT_VALUE = 'SET_RADIO_INPUT_VALUE';
 export const CURRENT_CHRONIC = 'CURRENT_CHRONIC';//慢病填充模板
+export const SAVE_CURR_FREE = 'SAVE_CURR_FREE';//自由输入
 

+ 2 - 2
src/utils/config.js

@@ -1,7 +1,7 @@
 // const host='http://192.168.3.1:5050';//赵
 // const host='http://192.168.3.100:5050';//王峰
-// const host='http://192.168.2.241:5050';//后端接口访问地址
-const host='http://192.168.2.236:5050';//后端接口访问地址
+const host='http://192.168.2.241:5050';//后端接口访问地址
+// const host='http://192.168.2.236:5050';//后端接口访问地址
 // const host='http://192.168.3.11:5050';//王宇
 //const host='http://192.168.2.164:8080';
 // const host='http://192.168.3.117:5050'; //周铁刚