Jelajahi Sumber

delete删除

liucf 5 tahun lalu
induk
melakukan
f9d533f2f5

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

@@ -151,8 +151,8 @@ class EditableSpan extends Component{
     let innerVal = target.innerText || target.innerHTML,ele,boxTop;
     //禁止回车事件
     if(ev.keyCode==13){return false;}
-    //backspace事件
-    if(ev.keyCode==8){
+    //backspace事件 和delete
+    if(ev.keyCode==8 || ev.keyCode==46){
       //用于对比backspace前后的值
       this.setState({
         preVal:innerVal
@@ -196,6 +196,33 @@ class EditableSpan extends Component{
     const ev = e||window.event;
     const target = ev.target||ev.srcElement;
     let innerVal = target.innerText || target.innerHTML,ele,boxTop;
+    if(ev.keyCode==46){//delete
+      //判断nexObj
+      let nextObj = $(this.$span.current).next();
+      if(preVal.trim().length==1&& !innerVal){
+        removeId && removeId({boxMark,i:index,text:"",flag:'del'});
+        handleClear && handleClear({boxMark});//删除最后一个字时清空搜索结果,避免现病史搜索框不立即消失的情况
+        //如果后一个不是标签,则光标移到最前
+        if(nextObj && nextObj[0].nodeName !=="DIV"){
+          nextObj.focus();
+        }
+      }
+      //action里往后删除
+      if(innerVal == preVal){
+        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();
+          }
+          /*this.setState({
+            index: null
+          })*/
+        }
+      }
+    }
+
     if(ev.keyCode==8){     
       // 主诉现病史去重:删除最后一个字的时候移除该数据(将name、id和value替换成空)并移除id
       // 前面是标签,内容为空时再删一次才移除标签;前面是文本,则直接移除;
@@ -229,7 +256,7 @@ class EditableSpan extends Component{
         if(index!==0 && !config.punctuationReg.test(data)){
           // let preObj = $(this.$span.current).prev();
           let obj = preObj[0].nodeName=="DIV"?preObj.prev():preObj;
-          handleKeydown&&handleKeydown({boxMark,i:index,text:data});
+          handleKeydown&&handleKeydown({boxMark,i:index,text:data,flag:'backsp'});
           this.moveEnd(obj[0]);  
           this.setState({
             index: null

+ 9 - 8
src/containers/EditableSpan.js

@@ -223,20 +223,20 @@ function mapDispatchToProps(dispatch,state) {
           break;
       }
     },
-    handleKeydown(obj){//backspace删除
+    handleKeydown(obj){//backspace删除 + delete
       if(obj.i==null){return}
       switch (+obj.boxMark){
         case 1:
-          dispatch({type:DEL_MAIN,delIndex:obj.i,text:obj.text});
+          dispatch({type:DEL_MAIN,delIndex:obj.i,text:obj.text,flag:obj.flag});
           break;
         case 2:
-          dispatch({type:DEL_CURRENT,delIndex:obj.i,text:obj.text});
+          dispatch({type:DEL_CURRENT,delIndex:obj.i,text:obj.text,flag:obj.flag});
           break;
         case 3:
-          dispatch({type:DEL_OTHERHIS,delIndex:obj.i});
+          dispatch({type:DEL_OTHERHIS,delIndex:obj.i,flag:obj.flag});
           break;
         case 4:
-          dispatch({type:DEL_CHECKBODY,delIndex:obj.i});
+          dispatch({type:DEL_CHECKBODY,delIndex:obj.i,flag:obj.flag});
           break;
         default:
           break;
@@ -247,15 +247,16 @@ function mapDispatchToProps(dispatch,state) {
       })
     },
     removeId(obj){//删除时移除id
+      if(obj.i==null){return}
       switch (+obj.boxMark){
         case 1:
-          dispatch({type:REMOVE_MAIN_ID,index:obj.i,text:obj.text});
+          dispatch({type:REMOVE_MAIN_ID,index:obj.i,text:obj.text,flag:obj.flag});
           break;
         case 2:
-          dispatch({type:REMOVE_CURR_ID,index:obj.i,text:obj.text});
+          dispatch({type:REMOVE_CURR_ID,index:obj.i,text:obj.text,flag:obj.flag});
           break;
         case 3:
-          dispatch({type:REMOVE_OTHER_ID,index:obj.i});//移除多余空标签
+          dispatch({type:REMOVE_OTHER_ID,index:obj.i,flag:obj.flag});//移除多余空标签
           break;
         default:
           break;

+ 28 - 13
src/store/actions/checkBody.js

@@ -456,20 +456,35 @@ export function setInputLabel(state,action){
 // backspace删除
 export function backspaceText(state,action){
   let res = Object.assign({},state);
-  const {delIndex} = action;
+  const {delIndex,flag} = action;
   const data = res.data;
-  if(data[delIndex-1].flag&&data[delIndex-1].flag==3){
-    // if(data[delIndex-1].tagType==8 ||data[delIndex-1].flag&&data[delIndex-1].flag==3){
-    // 前一个是文本标签或者子模板 不做处理
-  }else if(data[delIndex-1].tagType==8){
-    data.splice(delIndex,1);
-    res.selecteds.splice(delIndex,1);      //杂音类样式选中状态对应
-    res.saveText.splice(delIndex,1);
-  }
-  else{
-    data.splice(delIndex-1,2);
-    res.selecteds.splice(delIndex-1,2);      //杂音类样式选中状态对应
-    res.saveText.splice(delIndex-1,2);
+  if(flag == 'backsp'){
+    // 前一个是文本标签或者子模板,只改变值
+    if(data[delIndex-1].flag&&data[delIndex-1].flag==3){//子模板不删  
+      // data[delIndex].value = text;
+    }else if(data[delIndex-1].tagType==8){
+      data.splice(delIndex,1);
+      res.selecteds.splice(delIndex,1);      //杂音类样式选中状态对应
+      res.saveText.splice(delIndex,1);
+    }
+    else{
+      data.splice(delIndex-1,2);
+      res.selecteds.splice(delIndex-1,2); 
+      res.saveText.splice(delIndex-1,2);
+    }
+  }else if(flag == 'del'){
+    if(data[delIndex+1] && data[delIndex+1].flag&&data[delIndex+1].flag==3){//子模板不删  
+      
+    }else if(data[delIndex+1] && data[delIndex+1].tagType==8){
+      data.splice(delIndex,1);
+      res.selecteds.splice(delIndex,1);      //杂音类样式选中状态对应
+      res.saveText.splice(delIndex,1);
+    }
+    else{
+      data.splice(delIndex,2);
+      res.selecteds.splice(delIndex,2);  
+      res.saveText.splice(delIndex,2);
+    }
   }
   // res.saveText = fullfillText(data).saveText;
   res.update = Math.random();

+ 49 - 21
src/store/actions/currentIll.js

@@ -897,21 +897,36 @@ export function setInputLabel(state,action){
 // backspace删除
 export function backspaceText(state,action){
   let res = Object.assign({},state);
-  const {delIndex,text} = action;
+  const {delIndex,text,flag} = action;
   const data = res.data;
   // if(data[delIndex-1].tagType==8 ||data[delIndex-1].flag&&data[delIndex-1].flag==3){
-  // 前一个是文本标签或者子模板,只改变值
-  if(data[delIndex-1].flag&&data[delIndex-1].flag==3){//子模板不删  
-    // data[delIndex].value = text;
-  }else if(data[delIndex-1].tagType==8){
-    data.splice(delIndex,1);
-    res.selecteds.splice(delIndex,1);      //杂音类样式选中状态对应
-    res.saveText.splice(delIndex,1);
-  }
-  else{
-    data.splice(delIndex-1,2);
-    res.selecteds.splice(delIndex-1,2);      //杂音类样式选中状态对应
-    res.saveText.splice(delIndex-1,2);
+  if(flag == 'backsp'){
+    // 前一个是文本标签或者子模板,只改变值
+    if(data[delIndex-1].flag&&data[delIndex-1].flag==3){//子模板不删  
+      // data[delIndex].value = text;
+    }else if(data[delIndex-1].tagType==8){
+      data.splice(delIndex,1);
+      res.selecteds.splice(delIndex,1);      //杂音类样式选中状态对应
+      res.saveText.splice(delIndex,1);
+    }
+    else{
+      data.splice(delIndex-1,2);
+      res.selecteds.splice(delIndex-1,2); 
+      res.saveText.splice(delIndex-1,2);
+    }
+  }else if(flag == 'del'){
+    if(data[delIndex+1] && data[delIndex+1].flag&&data[delIndex+1].flag==3){//子模板不删  
+      
+    }else if(data[delIndex+1] && data[delIndex+1].tagType==8){
+      data.splice(delIndex,1);
+      res.selecteds.splice(delIndex,1);      //杂音类样式选中状态对应
+      res.saveText.splice(delIndex,1);
+    }
+    else{
+      data.splice(delIndex,2);
+      res.selecteds.splice(delIndex,2);  
+      res.saveText.splice(delIndex,2);
+    }
   }
   // res.saveText = fullfillText(data).saveText;
   res.update = Math.random();
@@ -921,7 +936,7 @@ export function backspaceText(state,action){
 //删除后移除id
 export function removeId(state,action){
   let res = Object.assign({},state);
-  const {index,text} = action;
+  const {index,text,flag} = action;
   const data = res.data;
   // const id = data[index].id;
   const id = data[index].conceptId;
@@ -929,15 +944,28 @@ export function removeId(state,action){
   if(ids.includes(id)){
     ids.splice(ids.indexOf(id),1);
   }
-  if(!data[index].value && data[index-1].tagType==8){
-    data.splice(index,1);
-    res.saveText.splice(index,1);
+  if(flag == 'del'){
+    if(!data[index].value && data[index+1] && data[index+1].tagType==8){
+      data.splice(index,1);
+      res.saveText.splice(index,1);
+    }else{
+      data[index].id = "";
+      data[index].conceptId = "";
+      data[index].name = text;
+      data[index].value = text;
+    }
   }else{
-    data[index].id = "";
-    data[index].conceptId = "";
-    data[index].name = text;
-    data[index].value = text;
+    if(!data[index].value && data[index-1].tagType==8){
+      data.splice(index,1);
+      res.saveText.splice(index,1);
+    }else{
+      data[index].id = "";
+      data[index].conceptId = "";
+      data[index].name = text;
+      data[index].value = text;
+    }
   }
+  
   res.update = Math.random();
   return res;
 }

+ 44 - 18
src/store/actions/mainSuit.js

@@ -749,19 +749,33 @@ export function setInputLabel(state,action){
 // backspace删除
 export function backspaceText(state,action){
   let res = Object.assign({},state);
-  const {delIndex} = action;
+  const {delIndex,flag} = action;
   const data = res.data;
-  if(data[delIndex-1].flag&&data[delIndex-1].flag==3){
-  // if(data[delIndex-1].tagType==8 ||data[delIndex-1].flag&&data[delIndex-1].flag==3){
-    // 前一个是文本标签或者子模板 不做处理
-  }else if(data[delIndex-1].tagType==8){
-    data.splice(delIndex,1);
-    res.saveText.splice(delIndex,1);
-  }
-  else{
-    data.splice(delIndex-1,2);
-    res.saveText.splice(delIndex-1,2);
+  if(flag == 'backsp'){
+    if(data[delIndex-1].flag&&data[delIndex-1].flag==3){
+    // if(data[delIndex-1].tagType==8 ||data[delIndex-1].flag&&data[delIndex-1].flag==3){
+      // 前一个是文本标签或者子模板 不做处理
+    }else if(data[delIndex-1].tagType==8){
+      data.splice(delIndex,1);
+      res.saveText.splice(delIndex,1);
+    }
+    else{
+      data.splice(delIndex-1,2);
+      res.saveText.splice(delIndex-1,2);
+    }
+  }else if(flag == 'del'){
+    if(data[delIndex+1] && data[delIndex+1].flag&&data[delIndex+1].flag==3){
+      // 后一个是文本标签或者子模板 不做处理
+    }else if(data[delIndex+1] && data[delIndex+1].tagType==8){
+      data.splice(delIndex,1);
+      res.saveText.splice(delIndex,1);
+    }
+    else{
+      data.splice(delIndex,2);
+      res.saveText.splice(delIndex,2);
+    }
   }
+  
   // res.saveText = fullfillText(data).saveText;
   res.update = Math.random();
   return res;
@@ -770,7 +784,7 @@ export function backspaceText(state,action){
 //删除后移除id
 export function removeId(state,action){
   let res = Object.assign({},state);
-  const {index,text} = action;
+  const {index,text,flag} = action;
   const data = res.data;
   // 获取尾巴id-questionId
   const id = data[index].id;
@@ -784,14 +798,26 @@ export function removeId(state,action){
   if(ids.includes(copid)){
     ids.splice(ids.indexOf(copid),1);
   }
-  if(!data[index].value && data[index-1].tagType==8){
-    data.splice(index,1);
-    res.saveText.splice(index,1);
+  if(flag == 'del'){
+    if(!data[index].value && data[index+1] &&data[index+1].tagType==8){
+      data.splice(index,1);
+      res.saveText.splice(index,1);
+    }else{
+      data[index].id = "";
+      data[index].name = text;
+      data[index].value = text;
+    }
   }else{
-    data[index].id = "";
-    data[index].name = text;
-    data[index].value = text;
+    if(!data[index].value && data[index-1].tagType==8){
+      data.splice(index,1);
+      res.saveText.splice(index,1);
+    }else{
+      data[index].id = "";
+      data[index].name = text;
+      data[index].value = text;
+    }
   }
+  
   res.update = Math.random();
   return res;
 }

+ 49 - 21
src/store/actions/otherHistory.js

@@ -448,25 +448,45 @@ export const otherEditClear = (state,action)=>{
 // backspace删除
 export function backspaceText(state,action){
   let res = Object.assign({},state);
-  const {delIndex} = action;
+  const {delIndex,flag} = action;
   const data = res.data;
-  if(data[delIndex-1].flag&&data[delIndex-1].flag==3){
-  // if(data[delIndex-1].tagType==8 ||data[delIndex-1].flag&&data[delIndex-1].flag==3){
-    // 前一个是文本标签或者子模板 不做处理
-  }else if(data[delIndex-1].tagType==8){
-    data.splice(delIndex,1);
-    res.selecteds.splice(delIndex,1);      //杂音类样式选中状态对应
-    res.saveText.splice(delIndex,1);
-  }
-  else{
-    //月经史删除处理
-    if(data[delIndex-1].formulaCode){
-      res[data[delIndex-1].formulaCode]=undefined;
+  if(flag == 'backsp'){
+    if(data[delIndex-1].flag&&data[delIndex-1].flag==3){
+    // if(data[delIndex-1].tagType==8 ||data[delIndex-1].flag&&data[delIndex-1].flag==3){
+      // 前一个是文本标签或者子模板 不做处理
+    }else if(data[delIndex-1].tagType==8){
+      data.splice(delIndex,1);
+      res.selecteds.splice(delIndex,1);      //杂音类样式选中状态对应
+      res.saveText.splice(delIndex,1);
+    }
+    else{
+      //月经史删除处理
+      if(data[delIndex-1].formulaCode){
+        res[data[delIndex-1].formulaCode]=undefined;
+      }
+      data.splice(delIndex-1,2);
+      res.selecteds.splice(delIndex-1,2);      //杂音类样式选中状态对应
+      res.saveText.splice(delIndex-1,2);
+    }
+  }else if(flag == 'del'){
+    if(data[delIndex+1] && data[delIndex+1].flag&&data[delIndex+1].flag==3){//子模板不删  
+      
+    }else if(data[delIndex+1] && data[delIndex+1].tagType==8){
+      data.splice(delIndex,1);
+      res.selecteds.splice(delIndex,1);      //杂音类样式选中状态对应
+      res.saveText.splice(delIndex,1);
+    }
+    else{
+      //月经史删除处理
+      if(data[delIndex+1] &&data[delIndex+1].formulaCode){
+        res[data[delIndex+1].formulaCode]=undefined;
+      }
+      data.splice(delIndex,2);
+      res.selecteds.splice(delIndex,2);  
+      res.saveText.splice(delIndex,2);
     }
-    data.splice(delIndex-1,2);
-    res.selecteds.splice(delIndex-1,2);      //杂音类样式选中状态对应
-    res.saveText.splice(delIndex-1,2);
   }
+  
   // res.saveText = fullfillText(data).saveText;
   res.update = Math.random();
   return res;
@@ -475,12 +495,20 @@ export function backspaceText(state,action){
 //删除后移除空标签
 export function removeId(state,action){
   let res = Object.assign({},state);
-  const {index} = action;
+  const {index,flag} = action;
   const data = res.data;
-  if(!data[index].value && data[index-1].tagType==8){
-    data.splice(index,1);
-    res.saveText.splice(index,1);
-  } 
+  if(flag == 'del'){//delete
+    if(!data[index].value && data[inde+1] && data[inde+1].tagType==8){
+      data.splice(index,1);
+      res.saveText.splice(index,1);
+    } 
+  }else{ //backspace
+    if(!data[index].value && data[index-1].tagType==8){
+      data.splice(index,1);
+      res.saveText.splice(index,1);
+    } 
+  }
+  
   res.update = Math.random();
   return res;
 }