Kaynağa Gözat

新增backspace删除事件

liucf 6 yıl önce
ebeveyn
işleme
fbab9de47d

+ 33 - 1
src/common/components/EditableSpan/index.jsx

@@ -23,11 +23,14 @@ class EditableSpan extends Component{
       clearTimer:null,
       oldText:props.value,
       labelVal:'',  //存放标签原有的值--主诉字数限制用
+      preVal:''
     };
     this.$span = React.createRef();
     this.handleFocus = this.handleFocus.bind(this);
     this.onChange = this.onChange.bind(this);
     this.handleBlur = this.handleBlur.bind(this);
+    this.handleKeydown = this.handleKeydown.bind(this);
+    this.handleKeyup = this.handleKeyup.bind(this);
   }
   handleFocus(e){
     e.stopPropagation();
@@ -100,6 +103,34 @@ class EditableSpan extends Component{
       clearTimer
     });
   }
+
+  handleKeydown(e){
+    let innerVal = e.target.innerText;
+    //禁止回车事件
+    if(e.keyCode==13){return false;}
+    //backspace事件
+    if(e.keyCode==8){
+      //用于对比backspace前后的值
+      this.setState({
+        preVal:innerVal
+      })
+    }
+
+  }
+  handleKeyup(e){
+     const {boxMark,handleKeydown,i,value} = this.props;
+     const {preVal} = this.state;
+    let innerVal = e.target.innerText;
+    if(e.keyCode==8){
+      if(innerVal !==preVal){return}
+      let data = innerVal.trim();
+      //判断是否为空、中英文:, 。、;,且不是第一位
+      if(i!==0 &&data==""||data==","||data==","||data==":"||data==":"||data=="."||data=="。"||data=="、"||data==";"||data==";"){
+        handleKeydown&&handleKeydown({boxMark,i});
+      }
+    }
+    
+  }
   /*shouldComponentUpdate(next){
     if(JSON.stringify(next) == JSON.stringify(this.props)){
       return false;
@@ -126,7 +157,8 @@ class EditableSpan extends Component{
                       onInput={this.onChange}
                       onFocus={this.handleFocus}
                       onBlur={this.handleBlur}
-                      onkeydown={handleEnter}></span>;
+                      onkeydown={this.handleKeydown}
+                      onkeyup={this.handleKeyup}></span>;
 
   }
 }

+ 9 - 4
src/components/CurrentIll/index.jsx

@@ -33,7 +33,7 @@ class CurrentIll extends Component{
 
   handleFocus(e){
     // 判断主诉是否为空
-    const {mainData,mainText,setData,moduleNum,mainIds,data} = this.props;
+    const {mainData,mainText,setData,moduleNum,mainIds,data,changeEditIll,editClear} = this.props;
     const that = this;
     if(mainData.length == 0 && !mainText[0]){
       //弹窗提醒
@@ -42,14 +42,19 @@ class CurrentIll extends Component{
         forbidInput:true
       })
     }else {
-      const {changeEditIll,editClear} = this.props;
       let useEmpty = mainData.length>0?false:true;
       let num = moduleNum.num;//主诉使用了几个模板
       // if(editClear && data.length==0){//第一次聚焦去设置现病史的data
       if(data.length==0){//第一次聚焦去设置现病史的data
         setData && setData({useEmpty,num,mainData,mainIds});//是否使用空模板 及数据处理
       }
-      const showTimer = setTimeout(function(){
+      this.setState({
+          showMoudle:true,
+          forbidInput:false,
+          boxEditable:false,
+        })
+      changeEditIll(false)
+      /*const showTimer = setTimeout(function(){
         that.setState({
           showMoudle:true,
           forbidInput:false,
@@ -57,7 +62,7 @@ class CurrentIll extends Component{
         })
         changeEditIll(false)
       },150)
-      clearTimeout(showTimer);
+      clearTimeout(showTimer);*/
     }
 
   }

+ 28 - 6
src/containers/EditableSpan.js

@@ -1,14 +1,14 @@
 import {connect} from 'react-redux';
 import {EditableSpan} from '@commonComp';
-import {SETCHECKTEXT,SETSEARCHDATA,CHECK_FOCUS_INDEX,CHECKBODY_CLEAR} from '@types/checkBody';
-import {SET_SEARCH,MAIN_FOCUS_INDEX,CLEAR_SEARCH,SETMAINTEXT} from '@types/mainSuit';
-import {SETOTHERTEXT,SETOTHERSEARCHDATA,OTHER_FOCUS_INDEX,OTHERHIS_CLEAR} from '@types/otherHistory';
-import {SET_CURRENT_SEARCH,CURRENT_CLEAR,SETCURRENTTEXT,CURRENT_FOCUS_INDEX} from '@types/currentIll';
+import {SETCHECKTEXT,SETSEARCHDATA,CHECK_FOCUS_INDEX,CHECKBODY_CLEAR,DEL_CHECKBODY} from '@types/checkBody';
+import {SET_SEARCH,MAIN_FOCUS_INDEX,CLEAR_SEARCH,SETMAINTEXT,DEL_MAIN} from '@types/mainSuit';
+import {SETOTHERTEXT,SETOTHERSEARCHDATA,OTHER_FOCUS_INDEX,OTHERHIS_CLEAR,DEL_OTHERHIS} from '@types/otherHistory';
+import {SET_CURRENT_SEARCH,CURRENT_CLEAR,SETCURRENTTEXT,CURRENT_FOCUS_INDEX,DEL_CURRENT} from '@types/currentIll';
 import {getSearch} from '@store/async-actions/fetchModules.js';
 import {billing} from '@store/async-actions/pushMessage';
 import {didPushParamChange} from '@utils/tools.js';
 import {SETTEXTFOCUS} from '@types/homePage';
-import {RESET,SETDROPSHOW} from "@store/types/homePage";
+import {RESET,SETDROPSHOW,ISREAD} from "@store/types/homePage";
 import config from '@config/index.js';
 
 function mapStateToProps(state){//console.log(state)
@@ -208,7 +208,29 @@ function mapDispatchToProps(dispatch,state) {
         default:
           break;
       }
-    }
+    },
+    handleKeydown(obj){//backspace删除
+      switch (+obj.boxMark){
+        case 1:
+          dispatch({type:DEL_MAIN,delIndex:obj.i});
+          break;
+        case 2:
+          dispatch({type:DEL_CURRENT,delIndex:obj.i});
+          break;
+        case 3:
+          dispatch({type:DEL_OTHERHIS,delIndex:obj.i});
+          break;
+        case 4:
+          dispatch({type:DEL_CHECKBODY,delIndex:obj.i});
+          break;
+        default:
+          break;
+      }
+      // 更新文本标签
+      dispatch({
+        type:ISREAD
+      })
+    },
   }
 }
 

+ 16 - 1
src/store/actions/checkBody.js

@@ -1,5 +1,5 @@
 import config from '@config/index.js';
-import {getLabelIndex} from '@common/js/func.js';
+import {getLabelIndex,fullfillText} from '@common/js/func.js';
 //设置查体数据
 export function set(state,action){
   let res = Object.assign({},state);
@@ -193,4 +193,19 @@ export function setInputLabel(state,action){
   res.saveText[i] = prefix+text+suffix;//console.log(res)
   res.update = Math.random();
   return res;
+}
+
+// backspace删除
+export function backspaceText(state,action){
+  let res = Object.assign({},state);
+  const {delIndex} = action;
+  const data = res.data;
+  if(data[delIndex-1].tagType==8 ||data[delIndex-1].flag&&data[delIndex-1].flag==3){
+    // 前一个是文本标签或者子模板 不做处理
+  }else{
+    data.splice(delIndex-1,2);
+  }
+  res.saveText = fullfillText(data).saveText;
+  res.update = Math.random();
+  return res;
 }

+ 15 - 0
src/store/actions/currentIll.js

@@ -498,4 +498,19 @@ export function setInputLabel(state,action){
   res.saveText[i] = prefix+text+suffix;
   res.update = Math.random();
   return res;
+}
+
+// backspace删除
+export function backspaceText(state,action){
+  let res = Object.assign({},state);
+  const {delIndex} = action;
+  const data = res.data;
+  if(data[delIndex-1].tagType==8 ||data[delIndex-1].flag&&data[delIndex-1].flag==3){
+    // 前一个是文本标签或者子模板 不做处理
+  }else{
+    data.splice(delIndex-1,2);
+  }
+  res.saveText = fullfillText(data).saveText;
+  res.update = Math.random();
+  return res;
 }

+ 15 - 0
src/store/actions/mainSuit.js

@@ -448,4 +448,19 @@ export function setInputLabel(state,action){
   res.saveText[i] = prefix+text+suffix;//console.log(res)
   res.update = Math.random();
   return res;
+}
+
+// backspace删除
+export function backspaceText(state,action){
+  let res = Object.assign({},state);
+  const {delIndex} = action;
+  const data = res.data;
+  if(data[delIndex-1].tagType==8 ||data[delIndex-1].flag&&data[delIndex-1].flag==3){
+    // 前一个是文本标签或者子模板 不做处理
+  }else{
+    data.splice(delIndex-1,2);
+  }
+  res.saveText = fullfillText(data).saveText;
+  res.update = Math.random();
+  return res;
 }

+ 16 - 1
src/store/actions/otherHistory.js

@@ -226,4 +226,19 @@ export const otherEditClear = (state,action)=>{
     const res = Object.assign({},state);
     res.editClear = action.bool;
     return res;
-};
+};
+
+// backspace删除
+export function backspaceText(state,action){
+  let res = Object.assign({},state);
+  const {delIndex} = action;
+  const data = res.data;
+  if(data[delIndex-1].tagType==8 ||data[delIndex-1].flag&&data[delIndex-1].flag==3){
+    // 前一个是文本标签或者子模板 不做处理
+  }else{
+    data.splice(delIndex-1,2);
+  }
+  res.saveText = fullfillText(data).saveText;
+  res.update = Math.random();
+  return res;
+}

+ 4 - 2
src/store/reducers/checkBody.js

@@ -1,6 +1,6 @@
 import {SET,SETNUMBER4,SETSELECTED4,SETCHECKBOX,ADDLABELITEM,SETCHECKTEXT,SETSEARCHDATA,
-  SELECTSEARCHDATA,CHANGECHECKTEXTLABEL,CLEARCHECKBODY,CHECK_FOCUS_INDEX,CHECKBODY_CLEAR,SETCHECKINPUT} from '../types/checkBody.js';
-import {set,setNumberValue,setRadioValue,setCheckBoxValue,addLabelItem,setCheckText,setSearchData,insertLabelData,changeLabelVal,clearCheckBody,setInputLabel} from '../actions/checkBody.js';
+  SELECTSEARCHDATA,CHANGECHECKTEXTLABEL,CLEARCHECKBODY,CHECK_FOCUS_INDEX,CHECKBODY_CLEAR,SETCHECKINPUT,DEL_CHECKBODY} from '../types/checkBody.js';
+import {set,setNumberValue,setRadioValue,setCheckBoxValue,addLabelItem,setCheckText,setSearchData,insertLabelData,changeLabelVal,clearCheckBody,setInputLabel,backspaceText} from '../actions/checkBody.js';
 import config from '@config/index.js';
 
 const block = Object.assign(JSON.parse(config.textLabel),{full:true});
@@ -41,6 +41,8 @@ export default function(state=initState,action){
       return res;
   case SETCHECKINPUT:
       return setInputLabel(state,action);
+  case DEL_CHECKBODY:
+      return backspaceText(state,action);
     default:
       return res;
   }

+ 4 - 2
src/store/reducers/currentIll.js

@@ -1,9 +1,9 @@
 // 现病史
 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} from '../types/currentIll';
+  SET_CURRENT_SEARCH,SETCURRENTTEXT,CURRENT_FOCUS_INDEX,SELECT_SEARCHDATA,CLEAR_CURRENT_EDIT,CURRENTADDLABELITEM,SETCURRENTINPUT,DEL_CURRENT} from '../types/currentIll';
 import {confirm,insertProcess,setData,setCheckBox,setRadioValue,setNumberValue,changeLabelVal,clearCurrentIll,
-  setTextModeValue,setModule,bigDataSymptom,setCheckText,insertLabelData,clearCurrentEdit,addLabelItem,setInputLabel} from '../actions/currentIll';
+  setTextModeValue,setModule,bigDataSymptom,setCheckText,insertLabelData,clearCurrentEdit,addLabelItem,setInputLabel,backspaceText} from '../actions/currentIll';
 
 const initState = {
   moduleData:[],
@@ -65,6 +65,8 @@ export default function(state=initState,action){
       return addLabelItem(state,action);
     case SETCURRENTINPUT:
       return setInputLabel(state,action);
+    case DEL_CURRENT:
+      return backspaceText(state,action);
     default:
       return state;
   }

+ 4 - 2
src/store/reducers/mainSuit.js

@@ -1,9 +1,9 @@
 import {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} from '../types/mainSuit'
+  INSERT_SEARCH,MAIN_FOCUS_INDEX,SETTEXTMODEVALUE,SETMAINTEXT,MAINADDLABELITEM,SETMAININPUT,DEL_MAIN} from '../types/mainSuit'
 import {getCommSymptoms,handleTailClick,insertMain,setSearch,getBigSymptom,setMainMoudle,confirm,
-  setNumberValue,setRadioValue,commConfirm,changeLabelVal,saveFreeVal,clearMainSuit,insertSearch,setTextModeValue,setCheckText,changeEditClear,addLabelItem,setInputLabel} from '../actions/mainSuit'
+  setNumberValue,setRadioValue,commConfirm,changeLabelVal,saveFreeVal,clearMainSuit,insertSearch,setTextModeValue,setCheckText,changeEditClear,addLabelItem,setInputLabel,backspaceText} from '../actions/mainSuit'
 
 
 const initState = {
@@ -78,6 +78,8 @@ export default function(state=initState,action){
       return addLabelItem(state,action);
     case SETMAININPUT:
       return setInputLabel(state,action);
+    case DEL_MAIN:
+      return backspaceText(state,action);
     default:
       return state;
   }

+ 5 - 3
src/store/reducers/otherHistory.js

@@ -1,6 +1,6 @@
 import {SETDATA,CONFIRMSELECTED,SETRADIO,SETNUMBER,SETOTHERCHECKBOX,SETOTHERTEXT,SETOTHERSEARCHDATA,
-  SELECTOTHERSEARCHDATA,CLEAROTHERHISTORY,CHANGEOTHERTEXTLABEL,SETOTHERINPUT,SETTEXTMODEVALUE,OTHER_FOCUS_INDEX,OTHERHIS_CLEAR,OTHERADDLABELITEM,OTHEREDICLEAR} from '../types/otherHistory';
-import {confirm,setRadioValue,setNumberValue,setCheckBoxValue,setCheckText,setSearchData,insertLabelData,clearOtherHistory,changeTextLabel,setOtherInput,setTextModeValue,addLabelItem,otherEditClear} from '../actions/otherHistory';
+  SELECTOTHERSEARCHDATA,CLEAROTHERHISTORY,CHANGEOTHERTEXTLABEL,SETOTHERINPUT,SETTEXTMODEVALUE,OTHER_FOCUS_INDEX,OTHERHIS_CLEAR,OTHERADDLABELITEM,OTHEREDICLEAR,DEL_OTHERHIS} from '../types/otherHistory';
+import {confirm,setRadioValue,setNumberValue,setCheckBoxValue,setCheckText,setSearchData,insertLabelData,clearOtherHistory,changeTextLabel,setOtherInput,setTextModeValue,addLabelItem,otherEditClear,backspaceText} from '../actions/otherHistory';
 
 const initState = {data:[],saveText:[],selecteds:[],focusIndex:'',editClear:true};/*mockData.OtherHis.moduleDetailDTOList;[
     mockData.radioData,
@@ -48,7 +48,9 @@ export default function(state=initState,action){//console.log(state)
         res.searchData = [];
         return res;
     case OTHEREDICLEAR:
-        return otherEditClear(state,action);;
+        return otherEditClear(state,action);
+    case DEL_OTHERHIS:
+        return backspaceText(state,action);
     default:
       return res;
   }

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

@@ -11,4 +11,5 @@ export const CHANGECHECKTEXTLABEL = 'change_check_text';
 export const CLEARCHECKBODY = 'clear_check_body';
 export const CHECK_FOCUS_INDEX = 'check_focus_text_index';
 export const CHECKBODY_CLEAR = 'clear_search_check_body';
-export const SETCHECKINPUT = 'set_check_body_input_label';
+export const SETCHECKINPUT = 'set_check_body_input_label';
+export const DEL_CHECKBODY = 'DEL_CHECKBODY';//backspace

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

@@ -20,4 +20,5 @@ export const SELECT_SEARCHDATA = 'SELECT_SEARCHDATA' ;//选中搜索结果
 export const CLEAR_CURRENT_EDIT = 'CLEAR_CURRENT_EDIT' ;
 export const CURRENTADDLABELITEM = 'current_add_label_item';    //带加号的标签复制
 export const SETCURRENTINPUT = 'SET_CURRENT_ILL_INPUT_LABEL';     //文本输入标签存值
+export const DEL_CURRENT = 'DEL_CURRENT';     //backspace删除
 

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

@@ -21,3 +21,4 @@ export const SETTEXTMODEVALUE = 'SET_TEXT_MODE_VALUE';  //文本模式下输入
 export const SETMAINTEXT = 'SETMAINTEXT';  //模板下输入值
 export const MAINADDLABELITEM = 'MAIN_ADD_LABEL_ITEM';      //带加号的标签复制
 export const SETMAININPUT = 'SET_MAIN_INPUT_LABEL';     //文本输入标签存值
+export const DEL_MAIN = 'DEL_MAIN';     //文本输入标签存值

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

@@ -15,4 +15,5 @@ export const SETTEXTMODEVALUE = 'SET_OTHER_TEXT_MODE_VALUE';  //文本模式下
 export const OTHER_FOCUS_INDEX = 'other_focus_text_index';
 export const OTHERHIS_CLEAR = 'OTHERHIS_CLEAR';  //清空搜索值
 export const OTHERADDLABELITEM = 'other_add_label_item';    //带加号的标签复制
-export const OTHEREDICLEAR = 'OTHEREDICLEAR';    //文本框是否可以编辑
+export const OTHEREDICLEAR = 'OTHEREDICLEAR';    //文本框是否可以编辑
+export const DEL_OTHERHIS = 'DEL_OTHERHIS';    //backspace