zhouna 5 лет назад
Родитель
Сommit
69bb34fd95
4 измененных файлов с 32 добавлено и 15 удалено
  1. 2 2
      src/containers/EditableSpan.js
  2. 25 1
      src/store/actions/homePage.js
  3. 3 12
      src/store/reducers/homePage.js
  4. 2 0
      src/utils/utils.js

+ 2 - 2
src/containers/EditableSpan.js

@@ -7,7 +7,7 @@ import {SET_CURRENT_SEARCH,CURRENT_CLEAR,SETCURRENTTEXT,CURRENT_FOCUS_INDEX,DEL_
 import {getSearch} from '@store/async-actions/fetchModules';
 import {billing} from '@store/async-actions/pushMessage';
 import {didPushParamChange,storageLocal} from '@utils/tools';
-import {SETTEXTFOCUS,RESET,SETDROPSHOW,ISREAD} from '@types/homePage';
+import {SETTEXTFOCUS,RESET,SETDROPSHOW,ISREAD,SET_SELECTED_AREA} from '@types/homePage';
 import config from '@config/index';
 
 function mapStateToProps(state){//console.log(state)
@@ -296,7 +296,7 @@ function mapDispatchToProps(dispatch,state) {
     },
     setSelectArea(data){
       dispatch({
-        type:'SET_SELECTED_AREA',
+        type:SET_SELECTED_AREA,
         data
       })
     }

+ 25 - 1
src/store/actions/homePage.js

@@ -114,4 +114,28 @@ export const getAssistList = (state,action)=>{
   let res = Object.assign({},state);
   res.assistList = action.data
   return res;
-};
+};
+
+export const setSelectArea = (state,action)=>{
+  let res = Object.assign({},state);
+  const {i,dir,boxMark} = action.data;
+  if(dir==='start'){      //重新开始选取区域,结束位置清空
+    delete res['select_end'];
+  }
+  res['select_'+dir]=i;
+  res.select_boxMark=boxMark;
+  if(res.select_start===res.select_end){      //起点和终点一样,则不选中
+    delete res.select_boxMark;
+    delete res.select_start;
+    delete res.select_end;
+  }
+  return res;
+}
+
+export const resetSelectArea = (state,action)=>{
+  let res = Object.assign({},state);
+  delete res.select_boxMark;
+  delete res.select_start;
+  delete res.select_end;
+  return res;
+}

+ 3 - 12
src/store/reducers/homePage.js

@@ -1,7 +1,7 @@
 import {HIDE,RESET,SETINITDATA,SETDROPSHOW,SETADDITEMINIT,SETT0EDIT,SETREADDITEMS,SETPREDATA,
   HIDEDROP,CLICKCOUNT,ISREAD,SETOTHERHISTORY,SETMINSCREEN,MODI_LOADING,GET_INSPECT_LIST,GET_ASSIST_LIST,
   SETALLMODULES,SETSYSTEMCONFIG,SETPRE,RESET_SELECT_TAG,SET_SELECTED_AREA} from '../types/homePage.js';
-import {showDrop,setAddItemInit,setLabelToEdit,confirmHide,clickNum,getInspectList,getAssistList} from '../actions/homePage.js';
+import {showDrop,setAddItemInit,setLabelToEdit,confirmHide,clickNum,getInspectList,getAssistList,setSelectArea,resetSelectArea} from '../actions/homePage.js';
 
 const initState = {
   totalHide:false,
@@ -81,18 +81,9 @@ export default function (state=initState,action) {
     case SETPREDATA:
       res.preData = action.preData;
     case SET_SELECTED_AREA:
-      const {i,dir,boxMark} = action.data;
-      if(dir==='start'){      //重新开始选取区域,结束位置清空
-        delete res['select_end'];
-      }
-      res['select_'+dir]=i;
-      res.select_boxMark=boxMark;
-      return res;
+      return setSelectArea(state,action);
     case RESET_SELECT_TAG:
-      delete res.select_boxMark;
-      delete res.select_start;
-      delete res.select_end;
-      return res;
+      return resetSelectArea(state,action);
     default:
       return res;
   }

+ 2 - 0
src/utils/utils.js

@@ -245,6 +245,8 @@ export function deleteSelectedLabels(state,action){
   if(start>end){      //从后往前选中
     n = arr[end].tagType=='8'?start-end:start-end+1;
     arr.splice(end,n);
+  }else if(start===end){
+    return res;
   }else{
     n = arr[end].tagType=='8'?end-start:end-start+1;
     arr.splice(start,n);