Kaynağa Gözat

有纯文本在,只删除标签

liucf 6 yıl önce
ebeveyn
işleme
55e58e9a87

+ 13 - 3
src/common/components/EditableSpan/index.jsx

@@ -28,7 +28,7 @@ class EditableSpan extends Component{
       labelVal:'',  //存放标签原有的值--主诉字数限制用
       preVal:'',
       index:null,
-      searchPre:''
+      searchPre:'',
     };
     this.$span = React.createRef();
     this.handleFocus = this.handleFocus.bind(this);
@@ -156,7 +156,7 @@ class EditableSpan extends Component{
 
   }
   handleKeyup(e){
-    const {boxMark,handleKeydown,i,value,removeId,handleClear} = this.props;
+    const {boxMark,handleKeydown,i,value,removeId,handleClear,delSingleLable} = this.props;
     const {preVal,index} = this.state;
     const ev = e||window.event;
     const target = ev.target||ev.srcElement;
@@ -172,8 +172,18 @@ class EditableSpan extends Component{
             this.moveEnd(preObj[0]);
           }
         }
-      
+      // console.log(77,innerVal,preVal);
       if(innerVal !==preVal){return false}
+      // 中英文数字和下划线--单独删除标签
+      const reg = new RegExp("([\u4E00-\uFA29]|[\uE7C7-\uE7F3]|[a-zA-Z0-9_])");
+      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.setState({
+          index: null
+        })
+      }
       let data = innerVal.trim();
       //判断是否为空、中英文:, 。、;,且不是第一位
       let pattern = new RegExp(/^\,?$|^\,?$|^\.?$|^\。?$|^\、?$|^\;?$|^\;?$|^\:?$|^\:?$\s/);

+ 25 - 4
src/containers/EditableSpan.js

@@ -1,9 +1,9 @@
 import {connect} from 'react-redux';
 import {EditableSpan} from '@commonComp';
-import {SETCHECKTEXT,SETSEARCHDATA,CHECK_FOCUS_INDEX,CHECKBODY_CLEAR,DEL_CHECKBODY} from '@types/checkBody';
-import {SET_SEARCH,MAIN_FOCUS_INDEX,CLEAR_SEARCH,SETMAINTEXT,DEL_MAIN,REMOVE_MAIN_ID} from '@types/mainSuit';
-import {SETOTHERTEXT,SETOTHERSEARCHDATA,OTHER_FOCUS_INDEX,OTHERHIS_CLEAR,DEL_OTHERHIS,REMOVE_OTHER_ID} from '@types/otherHistory';
-import {SET_CURRENT_SEARCH,CURRENT_CLEAR,SETCURRENTTEXT,CURRENT_FOCUS_INDEX,DEL_CURRENT,REMOVE_CURR_ID} from '@types/currentIll';
+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 {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.js';
 import {billing} from '@store/async-actions/pushMessage';
 import {didPushParamChange} from '@utils/tools.js';
@@ -253,6 +253,27 @@ function mapDispatchToProps(dispatch,state) {
     dispatch({
       type:ISREAD
     })
+    },
+    delSingleLable(obj){//光标在第一位时 只删除标签
+      switch (+obj.boxMark){
+        case 1:
+          dispatch({type:DEL_MAIN_LABLE,index:obj.i,text:obj.text});
+          break;
+        case 2:
+          dispatch({type:DEL_CURRENT_LABLE,index:obj.i});
+          break;
+        case 3:
+          dispatch({type:DEL_OTHERHIS_LABLE,index:obj.i});
+          break;
+        case 4:
+          dispatch({type:DEL_CHECKBODY_LABLE,index:obj.i});
+          break;
+        default:
+          break;
+      }
+      dispatch({
+        type:ISREAD
+      })
     }
   }
 }

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

@@ -348,4 +348,20 @@ export function multipleComfirn(state,action){
   res.selecteds[ikey] = action.data;
   res.update = Math.random();
   return res;
+}
+
+export function delSingleLable(state,action){
+  let res = Object.assign({},state);
+  const {index} = action;
+  let data = res.data;
+  // 前一个不是文本标签 并且不是子模板,则删除
+  if(data[index-1].flag&&data[index-1].flag==3){
+
+  }
+  else if(data[index-1].tagType != 8){
+    data.splice(index-1,1);
+    res.saveText.splice(index-1,1);
+  }
+  res.update = Math.random();
+  return res;
 }

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

@@ -697,4 +697,21 @@ export function multipleComfirn(state,action){
   res.selecteds[ikey] = action.data;
   res.update = Math.random();
   return res;
+}
+
+
+export function delSingleLable(state,action){
+  let res = Object.assign({},state);
+  const {index} = action;
+  let data = res.data;
+  // 前一个不是文本标签 并且不是子模板,则删除
+  if(data[index-1].flag&&data[index-1].flag==3){
+
+  }
+  else if(data[index-1].tagType != 8){
+    data.splice(index-1,1);
+    res.saveText.splice(index-1,1);
+  }
+  res.update = Math.random();
+  return res;
 }

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

@@ -641,6 +641,22 @@ export function multipleComfirn(state,action){
   data[ikey].value = seleData;
   res.saveText[ikey] = seleData;
   res.selecteds[ikey] = action.data;
-  res.update = Math.random();console.log(123,action,res);
+  res.update = Math.random();
+  return res;
+}
+
+export function delSingleLable(state,action){
+  let res = Object.assign({},state);
+  const {index} = action;
+  let data = res.data;
+  // 前一个不是文本标签 并且不是子模板,则删除
+  if(data[index-1].flag&&data[index-1].flag==3){
+
+  }
+  else if(data[index-1].tagType != 8){
+    data.splice(index-1,1);
+    res.saveText.splice(index-1,1);
+  }
+  res.update = Math.random();
   return res;
 }

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

@@ -345,4 +345,20 @@ export function multipleComfirn(state,action){
   res.selecteds[ikey] = action.data;
   res.update = Math.random();
   return res;
+}
+
+export function delSingleLable(state,action){
+  let res = Object.assign({},state);
+  const {index} = action;
+  let data = res.data;
+  // 前一个不是文本标签 并且不是子模板,则删除
+  if(data[index-1].flag&&data[index-1].flag==3){
+
+  }
+  else if(data[index-1].tagType != 8){
+    data.splice(index-1,1);
+    res.saveText.splice(index-1,1);
+  }
+  res.update = Math.random();
+  return res;
 }

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

@@ -1,9 +1,9 @@
 import {SET,SETNUMBER4,SETSELECTED4,SETCHECKBOX,ADDLABELITEM,SETCHECKTEXT,SETSEARCHDATA,
   SELECTSEARCHDATA,CHANGECHECKTEXTLABEL,CLEARCHECKBODY,CHECK_FOCUS_INDEX,CHECKBODY_CLEAR,
-  SETCHECKINPUT,DEL_CHECKBODY,CHANGECHECKTEXTLABEL_NUMBER,CHECKCONFIRMSELECTED,CHECKBODY_MUL} from '../types/checkBody.js';
+  SETCHECKINPUT,DEL_CHECKBODY,CHANGECHECKTEXTLABEL_NUMBER,CHECKCONFIRMSELECTED,CHECKBODY_MUL,DEL_CHECKBODY_LABLE} from '../types/checkBody.js';
 import {set,setNumberValue,setRadioValue,setCheckBoxValue,addLabelItem,setCheckText,
   setSearchData,insertLabelData,changeLabelVal,clearCheckBody,setInputLabel,backspaceText,
-  changeNumLabelVal,confirm,multipleComfirn} from '../actions/checkBody.js';
+  changeNumLabelVal,confirm,multipleComfirn,delSingleLable} from '../actions/checkBody.js';
 import config from '@config/index.js';
 
 const block = Object.assign(JSON.parse(config.textLabel),{full:true});//空白时保留一个自由文本标签
@@ -55,6 +55,8 @@ export default function(state=initState,action){
       return backspaceText(state,action);
     case CHECKBODY_MUL:
       return multipleComfirn(state,action);
+    case DEL_CHECKBODY_LABLE:
+      return delSingleLable(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,DEL_CURRENT,CURRENT_TEXT_LABEL_NUMBER,REMOVE_CURR_ID,CURRENT_MUL} from '../types/currentIll';
+  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} from '../types/currentIll';
 import {confirm,insertProcess,setData,setCheckBox,setRadioValue,setNumberValue,changeLabelVal,clearCurrentIll,
-  setTextModeValue,setModule,bigDataSymptom,setCheckText,insertLabelData,clearCurrentEdit,addLabelItem,setInputLabel,backspaceText,changeNumLabelVal,removeId,multipleComfirn} from '../actions/currentIll';
+  setTextModeValue,setModule,bigDataSymptom,setCheckText,insertLabelData,clearCurrentEdit,addLabelItem,setInputLabel,backspaceText,changeNumLabelVal,removeId,multipleComfirn,delSingleLable} from '../actions/currentIll';
 
 const initState = {
   moduleData:[],
@@ -73,6 +73,8 @@ export default function(state=initState,action){
       return removeId(state,action);
     case CURRENT_MUL://单列多选
       return multipleComfirn(state,action);
+    case DEL_CURRENT_LABLE:
+      return delSingleLable(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,DEL_MAIN,CHANGE_LABELVAL_NUMBER,REMOVE_MAIN_ID,MAINSUIT_MUL} from '../types/mainSuit'
+  INSERT_SEARCH,MAIN_FOCUS_INDEX,SETTEXTMODEVALUE,SETMAINTEXT,MAINADDLABELITEM,SETMAININPUT,DEL_MAIN,CHANGE_LABELVAL_NUMBER,REMOVE_MAIN_ID,MAINSUIT_MUL,DEL_MAIN_LABLE} from '../types/mainSuit'
 import {getCommSymptoms,handleTailClick,insertMain,setSearch,getBigSymptom,setMainMoudle,confirm,
-  setNumberValue,setRadioValue,commConfirm,changeLabelVal,saveFreeVal,clearMainSuit,insertSearch,setTextModeValue,setCheckText,changeEditClear,addLabelItem,setInputLabel,backspaceText,changeNumLabelVal,removeId,multipleComfirn} from '../actions/mainSuit'
+  setNumberValue,setRadioValue,commConfirm,changeLabelVal,saveFreeVal,clearMainSuit,insertSearch,setTextModeValue,setCheckText,changeEditClear,addLabelItem,setInputLabel,backspaceText,changeNumLabelVal,removeId,multipleComfirn,delSingleLable} from '../actions/mainSuit'
 
 
 const initState = {
@@ -86,6 +86,8 @@ export default function(state=initState,action){
       return removeId(state,action);
     case MAINSUIT_MUL://单列多选
       return multipleComfirn(state,action);
+    case DEL_MAIN_LABLE://单独删除标签
+      return delSingleLable(state,action);
     default:
       return state;
   }

+ 4 - 2
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,DEL_OTHERHIS,CHANGEOTHERTEXTLABEL_NUMBER,OTHERHIS_MUL,REMOVE_OTHER_ID} from '../types/otherHistory';
-import {confirm,setRadioValue,setNumberValue,setCheckBoxValue,setCheckText,setSearchData,insertLabelData,clearOtherHistory,changeTextLabel,setOtherInput,setTextModeValue,addLabelItem,otherEditClear,backspaceText,changeNumLabelVal,multipleComfirn,removeId} from '../actions/otherHistory';
+  SELECTOTHERSEARCHDATA,CLEAROTHERHISTORY,CHANGEOTHERTEXTLABEL,SETOTHERINPUT,SETTEXTMODEVALUE,OTHER_FOCUS_INDEX,OTHERHIS_CLEAR,OTHERADDLABELITEM,OTHEREDICLEAR,DEL_OTHERHIS,CHANGEOTHERTEXTLABEL_NUMBER,OTHERHIS_MUL,REMOVE_OTHER_ID,DEL_OTHERHIS_LABLE} from '../types/otherHistory';
+import {confirm,setRadioValue,setNumberValue,setCheckBoxValue,setCheckText,setSearchData,insertLabelData,clearOtherHistory,changeTextLabel,setOtherInput,setTextModeValue,addLabelItem,otherEditClear,backspaceText,changeNumLabelVal,multipleComfirn,removeId,delSingleLable} from '../actions/otherHistory';
 import config from '@config/index.js';
 
 const block = Object.assign(JSON.parse(config.textLabel),{full:true});//空白时保留一个自由文本标签
@@ -60,6 +60,8 @@ export default function(state=initState,action){//console.log(state)
         return multipleComfirn(state,action);
     case REMOVE_OTHER_ID:
         return removeId(state,action);
+    case DEL_OTHERHIS_LABLE:
+        return delSingleLable(state,action);
     default:
       return res;
   }

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

@@ -15,4 +15,5 @@ export const SETCHECKINPUT = 'set_check_body_input_label';
 export const DEL_CHECKBODY = 'DEL_CHECKBODY';//backspace
 export const CHANGECHECKTEXTLABEL_NUMBER = 'CHANGECHECKTEXTLABEL_NUMBER';//数字键盘
 export const CHECKCONFIRMSELECTED = 'spread_check_body_labels';
-export const CHECKBODY_MUL = 'CHECKBODY_MUL';//单列多选
+export const CHECKBODY_MUL = 'CHECKBODY_MUL';//单列多选
+export const DEL_CHECKBODY_LABLE = 'DEL_CHECKBODY_LABLE';

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

@@ -24,4 +24,5 @@ export const DEL_CURRENT = 'DEL_CURRENT';     //backspace删除
 export const CURRENT_TEXT_LABEL_NUMBER = 'CURRENT_TEXT_LABEL_NUMBER';     //数字键盘输入
 export const REMOVE_CURR_ID = 'REMOVE_CURR_ID';     //删除后移除id
 export const CURRENT_MUL = 'CURRENT_MUL';     //单列多选
+export const DEL_CURRENT_LABLE = 'DEL_CURRENT_LABLE';     //
 

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

@@ -25,3 +25,4 @@ export const DEL_MAIN = 'DEL_MAIN';     //删除标签
 export const CHANGE_LABELVAL_NUMBER = 'CHANGE_LABELVAL_NUMBER';     //数字键盘输入存值
 export const REMOVE_MAIN_ID = 'REMOVE_MAIN_ID';     //移除id
 export const MAINSUIT_MUL = 'MAINSUIT_MUL';     //单列多选
+export const DEL_MAIN_LABLE = 'DEL_MAIN_LABLE';     

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

@@ -19,4 +19,5 @@ export const OTHEREDICLEAR = 'OTHEREDICLEAR';    //文本框是否可以编辑
 export const DEL_OTHERHIS = 'DEL_OTHERHIS';    //backspace
 export const CHANGEOTHERTEXTLABEL_NUMBER = 'CHANGEOTHERTEXTLABEL_NUMBER';    //数字键盘
 export const OTHERHIS_MUL = 'OTHERHIS_MUL';    //单列多选
-export const REMOVE_OTHER_ID = 'REMOVE_OTHER_ID';    
+export const REMOVE_OTHER_ID = 'REMOVE_OTHER_ID';    
+export const DEL_OTHERHIS_LABLE = 'DEL_OTHERHIS_LABLE';