Browse Source

还原标签,杂音类型选择项bug修改2537,2528--未验证

zhouna 5 years ago
parent
commit
71549fabf6
3 changed files with 31 additions and 19 deletions
  1. 2 0
      src/containers/OperationContainer.js
  2. 18 17
      src/store/actions/checkBody.js
  3. 11 2
      src/utils/tools.js

+ 2 - 0
src/containers/OperationContainer.js

@@ -83,6 +83,7 @@ function mapDispatchToProps(dispatch) {
                '4':RECOVER_TAG_CHECK
             };
             const deledTags = localStorage.getItem('deletedTags')?JSON.parse(localStorage.getItem('deletedTags')):[];
+            const deledSelects = localStorage.getItem('deletedSelects')?JSON.parse(localStorage.getItem('deletedSelects')):[];
             if(deledTags.length===0){
               Notify.info('暂无标签可还原');
               return ;
@@ -91,6 +92,7 @@ function mapDispatchToProps(dispatch) {
             dispatch({
               type:maps[arr[0]],
               data:deledTags[0],
+              select:deledSelects[0],
               index:arr[1]
             });
           dispatch({

+ 18 - 17
src/store/actions/checkBody.js

@@ -206,7 +206,7 @@ export const changeLabelVal = (state,action)=>{//双击标签输入改变值
     }
   }else{//删除完标签内容则删除该标签
     const num = nextIsDot?2:1;
-    handleLocalDelTag('4',index,res.data[index]);
+    handleLocalDelTag('4',index,res.data[index],res.selecteds[index]);
     res.data.splice(index,num);
     res.selecteds.splice(index,num);//杂音类样式选中状态对应
     res.saveText = checkFullfillText(res.data).saveText;
@@ -235,39 +235,37 @@ export function backspaceText(state,action){
   let res = Object.assign({},state);
   const {delIndex,flag} = action;
   const data = res.data;
+  let inx = delIndex-1;     //要删除的(非文本)标签的index
   if(flag == 'backsp'){
     // 前一个是文本标签或者子模板,只改变值
-    if(data[delIndex-1].flag&&data[delIndex-1].flag==3){//子模板不删  
+    if(data[inx].flag&&data[inx].flag==3){//子模板不删
       // data[delIndex].value = text;
-    }else if(data[delIndex-1].tagType==8){
+    }else if(data[inx].tagType==8){
       data.splice(delIndex,1);
       res.selecteds.splice(delIndex,1);      //杂音类样式选中状态对应
       res.saveText.splice(delIndex,1);
-    }
-    else{
-      handleLocalDelTag(4,delIndex-1,data[delIndex-1]);
-      data.splice(delIndex-1,action.text.length>0?1:2);
-      res.selecteds.splice(delIndex-1,action.text.length>0?1:2); 
-      res.saveText.splice(delIndex-1,action.text.length>0?1:2);
+    }else{
+      handleLocalDelTag(4,inx,data[inx],res.selecteds[inx]);
+      const n = action.text.length>0?1:2;
+      data.splice(inx,n);
+      res.selecteds.splice(inx,n);
+      res.saveText.splice(inx,n);
     }
   }else if(flag == 'del'){
-    if(data[delIndex+1] && data[delIndex+1].flag&&data[delIndex+1].flag==3){//子模板不删  
+    inx = delIndex+1;
+    if(!data[inx]||(data[inx] && data[inx].flag&&data[inx].flag==3)){//子模板不删
       
-    }else if(data[delIndex+1] && data[delIndex+1].tagType==8){
+    }else if(data[inx] && data[inx].tagType==8){
       data.splice(delIndex,1);
       res.selecteds.splice(delIndex,1);      //杂音类样式选中状态对应
       res.saveText.splice(delIndex,1);
-    }else if(!data[delIndex+1]){//最后一个文本标签不删除
-      
-    }
-    else{
-      handleLocalDelTag(4,delIndex,data[delIndex+1]);
+    }else{
+      handleLocalDelTag(4,delIndex,data[inx],res.selecteds[inx]);
       data.splice(delIndex,2);
       res.selecteds.splice(delIndex,2);  
       res.saveText.splice(delIndex,2);
     }
   }
-  // res.saveText = fullfillText(data).saveText;
   res.update = Math.random();
   return res;
 }
@@ -326,7 +324,9 @@ export function setImportCheckbodyLabel(state,action) {
 export function recoveTag(state,action) {
   let res = Object.assign({},state);
   let arr = [...res.data];
+  let slts = [...res.selecteds];
   arr.splice(action.index,0,action.data);
+  slts.splice(action.index,0,action.select);
   const dataArr = checkFullfillText(arr);
   let nextLabel = dataArr.newArr[(+action.index)+1];
   //展开收起状态
@@ -335,6 +335,7 @@ export function recoveTag(state,action) {
   }
   res.data = dataArr.newArr;
   res.saveText = dataArr.saveText;
+  res.selecteds = slts;
   shiftLocalDelTag();
   res.update = Math.random();
   return res;

+ 11 - 2
src/utils/tools.js

@@ -1314,17 +1314,26 @@ function resetTagtype(data){
 }
 
 //记录最近3次被删除的标签
-function handleLocalDelTag(mark,index,tag){
+function handleLocalDelTag(mark,index,tag,select){
   const deledTag =  localStorage.getItem('deletedTags')?JSON.parse(localStorage.getItem('deletedTags')):[];
-  deledTag.unshift(Object.assign(tag,{delIndex:mark+'-'+index}));
+  deledTag.unshift(Object.assign({},tag,{delIndex:mark+'-'+index}));
   deledTag.length = deledTag.length>config.recoverTagNum?config.recoverTagNum:deledTag.length;
   localStorage.setItem('deletedTags',JSON.stringify(deledTag));
+  if(select){     //记录被删除的杂音类型标签选中内容数据
+    const deledSlt =  localStorage.getItem('deletedSelects')?JSON.parse(localStorage.getItem('deletedSelects')):[];
+    deledSlt.unshift(Object.assign({},select));
+    deledSlt.length = deledSlt.length>config.recoverTagNum?config.recoverTagNum:deledSlt.length;
+    localStorage.setItem('deletedSelects',JSON.stringify(deledSlt));
+  }
 }
 
 //删除被恢复的标签
 function shiftLocalDelTag(){
   const deledTags = localStorage.getItem('deletedTags')?JSON.parse(localStorage.getItem('deletedTags')):[];
+  const deledSelects = localStorage.getItem('deletedSelects')?JSON.parse(localStorage.getItem('deletedSelects')):[];
   deledTags.shift();
+  deledSelects.shift();
+  localStorage.setItem('deletedSelects',JSON.stringify(deledSelects));
   localStorage.setItem('deletedTags',JSON.stringify(deledTags));
 }
 //弹窗显示问题