浏览代码

Merge remote-tracking branch 'origin/dev5.3.1' into dev/new1

# Conflicts:
#	src/common/components/EditableSpan/index.jsx
zhouna 5 年之前
父节点
当前提交
62dabdcb45

+ 19 - 14
src/common/components/EditableSpan/index.jsx

@@ -84,7 +84,7 @@ class EditableSpan extends Component{
     this.setState({
       labelVal:text1
     });
-
+    
     const that = this;
     handleChange&&handleChange({text1,boxMark,i});
 
@@ -171,7 +171,7 @@ class EditableSpan extends Component{
           ev.preventDefault();
         }else{
           ev.returnValue=false;
-        }
+        } 
         this.moveEnd(obj[0]);
       }
     }
@@ -187,9 +187,9 @@ class EditableSpan extends Component{
         obj.focus();
       }
     }
-  }
+  }  
   handleKeyup(e){
-    const {boxMark,handleKeydown,removeId,handleClear} = this.props;
+    const {boxMark,handleKeydown,removeId,handleClear,removeSpan} = this.props;
     const {preVal,index} = this.state;
     const ev = e||window.event;
     const target = ev.target||ev.srcElement;
@@ -200,7 +200,8 @@ class EditableSpan extends Component{
     }*/
     if(ev.keyCode==46){//delete
       //判断nexObj
-      let nextObj = $(this.$span.current).next();
+      // let nextObj = $(this.$span.current).next();
+      let nextObj = $(this.$span.current);
       if(preVal.trim().length==1&& !innerVal){
         removeId && removeId({boxMark,i:index,text:"",flag:'del'});
         handleClear && handleClear({boxMark});//删除最后一个字时清空搜索结果,避免现病史搜索框不立即消失的情况
@@ -214,8 +215,8 @@ class EditableSpan extends Component{
         let data = innerVal.trim();
         if(nextObj && !config.punctuationReg.test(data)){
           handleKeydown&&handleKeydown({boxMark,i:index,text:data,flag:'del'});
-          // nextObj.focus();
-          if(nextObj[0].nodeName !=="DIV"){
+          // nextObj.focus();  
+          if(nextObj && nextObj[0] && nextObj[0].nodeName !=="DIV"){
             nextObj.focus();
           }
           /*this.setState({
@@ -225,7 +226,7 @@ class EditableSpan extends Component{
       }
     }
 
-    if(ev.keyCode==8){
+    if(ev.keyCode==8){     
       // 主诉现病史去重:删除最后一个字的时候移除该数据(将name、id和value替换成空)并移除id
       // 前面是标签,内容为空时再删一次才移除标签;前面是文本,则直接移除;
       let preObj = $(this.$span.current).prev();
@@ -236,9 +237,9 @@ class EditableSpan extends Component{
           this.moveEnd(preObj[0]);
         }
       }
-
+      
       if(innerVal !== preVal){
-
+        
       }
       else{
         // 中英文数字和下划线--单独删除标签
@@ -246,7 +247,7 @@ class EditableSpan extends Component{
         if(index!==0 && reg.test(innerVal)){
           let obj = preObj[0].nodeName=="DIV"?preObj.prev():preObj;
           delSingleLable && delSingleLable({boxMark,i:index});
-          this.moveEnd(obj[0]);
+          this.moveEnd(obj[0]);  
           this.setState({
             index: null
           })
@@ -259,14 +260,18 @@ class EditableSpan extends Component{
           // let preObj = $(this.$span.current).prev();
           let obj = preObj[0].nodeName=="DIV"?preObj.prev():preObj;
           handleKeydown&&handleKeydown({boxMark,i:index,text:data,flag:'backsp'});
-          this.moveEnd(obj[0]);
+          this.moveEnd(obj[0]);  
           this.setState({
             index: null
           })
         }
       }
+      // 主诉使用模板删除最后一个空span时移除
+      if(boxMark==1 && index==0 && !innerVal){
+        removeSpan();
+      }
     }
-
+    
   }
   componentWillReceiveProps(next){
     const isRead = this.props.isRead;
@@ -281,7 +286,7 @@ class EditableSpan extends Component{
       this.$span.current.innerText?(this.$span.current.innerText = value||''):(this.$span.current.innerHTML = value||'');
     }
     if(isIE()){
-      // 左右移动没问题,但是输入过程中会失焦,并且有时光标在但是无法输入
+      // 左右移动没问题,但是输入过程中会失焦,并且有时光标在但是无法输入 
       // $(this.$span.current)[0].addEventListener('DOMCharacterDataModified', function(e){that.onChange(e);}, false);
       // 此方法会影响左右切换时光标消失
       /*$(this.$span.current).onIe8Input(function(e){

+ 31 - 2
src/common/components/Textarea/index.jsx

@@ -3,6 +3,9 @@ import style from "./index.less";
 import Notify from '../Notify';
 import config from '@config/index';
 import {isIE} from '@utils/tools.js';
+import {getFeature} from '@store/async-actions/fetchModules';
+import {getAllDataList,getAllDataStringList,ifOtherClear} from "@utils/tools.js";
+import store from '@store';
 import $ from "jquery";
 
 class Textarea extends Component {
@@ -19,6 +22,7 @@ class Textarea extends Component {
     this.handleFocus = this.handleFocus.bind(this);
     //this.handleBlur = this.handleBlur.bind(this);
     this.handleKeydown = this.handleKeydown.bind(this);
+    this.handleBlur = this.handleBlur.bind(this);
   }
   handleFocus(e){            //初始显示props中的值,focus已经显示输入的值,避免值更新闪烁
     const {handleFocus,fuzhen,handleInput,isChronic,hasMain,boxMark} = this.props;
@@ -88,6 +92,30 @@ class Textarea extends Component {
       timer
     });
   }
+  //除主诉外 其他是否为空
+  ifClear(){
+    let baseList = store.getState();
+    let jsonData = getAllDataList(baseList);
+    let jsonStr = getAllDataStringList(baseList);
+    let flg = ifOtherClear(jsonData,jsonStr,baseList);
+    return flg;
+  }
+  handleBlur(e){
+    const {saveChronic} = this.props;
+    const text = e.target.innerText;
+    getFeature(text).then((res)=>{
+      if(res.data.code==0){
+        const result = res.data.data;
+        // 慢病
+        if(result && result[0].chronicLabel==1){
+          let flg = this.ifClear();
+          if(!flg){
+            saveChronic && saveChronic(result[0],true);
+          }
+        }
+      }
+    })
+  }
   handleKeydown(e){
     const {boxMark} = this.props;
     const ev = e||window.event;
@@ -123,7 +151,7 @@ class Textarea extends Component {
     }
   }
   render() {
-    const { title } = this.props;
+    const { title,boxMark } = this.props;
     return (
       <div className={style["box"]}>
         <div className={style["title"]}>{title}</div>
@@ -133,7 +161,8 @@ class Textarea extends Component {
              ref={this.$dom}
              contentEditable={true}
              onInput={this.handleInput}
-             onKeyDown={this.handleKeydown}>
+             onkeydown={this.handleKeydown}
+             onBlur={+boxMark===1?this.handleBlur:null}>
         </div>
       </div>
     );

+ 1 - 1
src/components/CurrentIll/index.jsx

@@ -128,7 +128,7 @@ class CurrentIll extends Component{
     const {hasMain,readMode,fuzhen,isChronic,type,fetchPushInfos,handleInput,isRead,saveText,searchData,totalHide,editClear,data} = this.props;
     const {forbidInput,boxLeft,boxTop} = this.state;
     const searchFlag = searchData.length > 0 ? true : false;
-    const mode = !readMode||readMode===-1?type:readMode;
+    const mode = readMode===null||readMode===-1?type:readMode;
     if(+mode===1){      //文本模式
       return <Textarea  title='现病史' boxMark='2'
                         isRead={isRead}

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

@@ -253,15 +253,15 @@ class MainSuit extends Component{
       }
   }*/
   render(){
-    const {readMode,type,CommonSymptoms,searchData,fetchPushInfos,isRead,totalHide,handleInput,fuzhen,saveText,editClear,datas,commSymHide} = this.props;
+    const {saveChronic,readMode,type,CommonSymptoms,searchData,fetchPushInfos,isRead,totalHide,handleInput,fuzhen,saveText,editClear,datas,commSymHide} = this.props;
     const {symptom,boxLeft,boxTop} = this.state;
     const symptomFlag = CommonSymptoms.length>0 ? true : false;
     const searchFlag = searchData.length>0 ? true : false;
     const boxTop1 = datas.length>0?boxTop:45;
     const boxLeft1 = datas.length>0?boxLeft:85;
-    const mode = !readMode||readMode===-1?type:readMode;
+    const mode = readMode===null||readMode===-1?type:readMode;
     if(+mode===1){      //文本模式
-      return <Textarea title='主诉' boxMark='1' isRead={isRead} value={saveText[0]} handlePush={fetchPushInfos} handleInput={handleInput} />;
+      return <Textarea title='主诉' boxMark='1' saveChronic={saveChronic} isRead={isRead} value={saveText[0]} handlePush={fetchPushInfos} handleInput={handleInput} />;
     }
     return  <div className={style['main-suit']}>
       <ItemBox

+ 1 - 1
src/components/OtherHistory/index.jsx

@@ -58,7 +58,7 @@ class OtherHistory extends Component{
   render(){
     const {readMode,hasMain,totalHide,searchData,isRead,type,fetchPushInfos,handleInput,saveText} = this.props;
     const {boxLeft,boxTop} = this.state;
-    const mode = !readMode||readMode===-1?type:readMode;
+    const mode = readMode===null||readMode===-1?type:readMode;
     //智能模式有数据时不切换文本,文本模式有数据时不切换智能
     if(+mode===1){      //文本模式
       return <Textarea title='其他史' boxMark='3'

+ 6 - 1
src/containers/EditableSpan.js

@@ -1,7 +1,7 @@
 import {connect} from 'react-redux';
 import {EditableSpan} from '@commonComp';
 import {SETCHECKTEXT,SETSEARCHDATA,CHECK_FOCUS_INDEX,CHECKBODY_CLEAR,DEL_CHECKBODY,DEL_CHECKBODY_LABLE} from '@types/checkBody';
-import {SET_SEARCH,MAIN_FOCUS_INDEX,CLEAR_SEARCH,SETMAINTEXT,DEL_MAIN,REMOVE_MAIN_ID,DEL_MAIN_LABLE} from '@types/mainSuit';
+import {SET_SEARCH,MAIN_FOCUS_INDEX,CLEAR_SEARCH,SETMAINTEXT,DEL_MAIN,REMOVE_MAIN_ID,DEL_MAIN_LABLE,MAIN_REMOVE_SPAN} from '@types/mainSuit';
 import {SETOTHERTEXT,SETOTHERSEARCHDATA,OTHER_FOCUS_INDEX,OTHERHIS_CLEAR,DEL_OTHERHIS,REMOVE_OTHER_ID,DEL_OTHERHIS_LABLE} from '@types/otherHistory';
 import {SET_CURRENT_SEARCH,CURRENT_CLEAR,SETCURRENTTEXT,CURRENT_FOCUS_INDEX,DEL_CURRENT,REMOVE_CURR_ID,DEL_CURRENT_LABLE} from '@types/currentIll';
 import {getSearch} from '@store/async-actions/fetchModules';
@@ -282,6 +282,11 @@ function mapDispatchToProps(dispatch,state) {
       dispatch({
         type:ISREAD
       })
+    },
+    removeSpan(){//主诉移除最后一个空span
+      dispatch({
+        type:MAIN_REMOVE_SPAN
+      })
     }
   }
 }

+ 5 - 1
src/containers/MainSuit.js

@@ -12,6 +12,7 @@ import config from '@config/index.js';
 import {Notify} from '@commonComp';
 import {getInitModules} from '@store/async-actions/homePage.js';
 import {SHOW_REFER_RECORD} from '@store/types/diagnosticList';
+import { SET_READ_MODE } from "@store/types/typeConfig";
 
 function mapStateToProps(state) {//console.log(state)
   const {mainSuit,homePage,diagnosticList,typeConfig} = state;
@@ -189,7 +190,7 @@ function mapDispatchToProps(dispatch) {
           data:data
         })
       },
-      async saveChronic(item){//储存慢病信息
+      async saveChronic(item,isTextMode){//储存慢病信息
         // loading
         dispatch({type:MODI_LOADING,flag:true});
         // 存慢病
@@ -197,6 +198,9 @@ function mapDispatchToProps(dispatch) {
           type:SAVE_CHRONIC,
           data:item
         })
+        if(isTextMode){
+          dispatch({type: SET_READ_MODE, readMode: 0});
+        }
         // 取模板
         await dispatch(getInitModules);
         // 模板回来关闭;loading

+ 6 - 1
src/store/reducers/mainSuit.js

@@ -2,7 +2,7 @@ import {RECOVER_TAG_MAIN,COMM_SYMPTOMS,CLEAR_COMSYMPTOMS,SHOW_TAIL,INSERT_MAIN,
   SET_SEARCH,CLEAR_SEARCH,GET_BIGDATAPUSH,SET_MAINSUIT,MIX_CONFIRM,NUMBER_SELECT,
   RADIO_SELECT,COMM_CONFIRM,CHANGE_LABELVAL,SAVE_FREE,CLEAR_MAIN_SUIT,SET_DATA,
   INSERT_SEARCH,MAIN_FOCUS_INDEX,SETTEXTMODEVALUE,SETMAINTEXT,MAINADDLABELITEM,SETMAININPUT,DEL_MAIN,CHANGE_LABELVAL_NUMBER,
-  REMOVE_MAIN_ID,MAINSUIT_MUL,DEL_MAIN_LABLE,SET_FEATURE,SET_MS_RADIO_INPUT_VAL,SAVE_CHRONIC} from '../types/mainSuit'
+  REMOVE_MAIN_ID,MAINSUIT_MUL,DEL_MAIN_LABLE,SET_FEATURE,SET_MS_RADIO_INPUT_VAL,SAVE_CHRONIC,MAIN_REMOVE_SPAN} from '../types/mainSuit'
 import {recoveTag,getCommSymptoms,handleTailClick,insertMain,setSearch,getBigSymptom,setMainMoudle,confirm,
   setNumberValue,setRadioValue,commConfirm,changeLabelVal,saveFreeVal,clearMainSuit,insertSearch,setTextModeValue,setCheckText,
   addLabelItem,setInputLabel,backspaceText,changeNumLabelVal,removeId,multipleComfirn,delSingleLable,
@@ -109,6 +109,11 @@ export default function(state=initState,action){
       return res;
     case RECOVER_TAG_MAIN:
       return recoveTag(state,action);
+    case MAIN_REMOVE_SPAN:
+      res.data = [];
+      res.saveText = [];
+      res.editClear = true;
+      return res;
     default:
       return state;
   }

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

@@ -30,3 +30,4 @@ export const SET_FEATURE = 'SET_FEATURE';  //主诉分词
 export const SET_MS_RADIO_INPUT_VAL = 'SET_MS_RADIO_INPUT_VAL';
 export const SAVE_CHRONIC = 'SAVE_CHRONIC'; //储存慢病信息
 export const RECOVER_TAG_MAIN = 'RECOVER_TAG_MAIN';   //恢复已删除标签
+export const MAIN_REMOVE_SPAN = 'MAIN_REMOVE_SPAN';   //删除最后一个空span

+ 2 - 2
src/utils/config.js

@@ -1,8 +1,8 @@
 // const host='http://192.168.3.1:5050';//赵
 // const host='http://192.168.3.100:5050';//王峰
-const host='http://192.168.2.236:5050';//后端接口访问地址
+// const host='http://192.168.2.236:5050';//后端接口访问地址
 // const host='http://192.168.2.121:5050';//后端接口访问地址
-// const host='http://192.168.2.241:5050';//后端接口访问地址
+const host='http://192.168.2.241: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'; //周铁刚