浏览代码

封装tab清除key公用方法

QuKatie 3 年之前
父节点
当前提交
042af79d31
共有 2 个文件被更改,包括 45 次插入2 次删除
  1. 4 1
      src/store/modules/tags.js
  2. 41 1
      src/util/keyData.js

+ 4 - 1
src/store/modules/tags.js

@@ -6,7 +6,7 @@ import {
   diff
 } from '@/util/util'
 import website from '@/config/website'
-
+import {delTabsKey,delAllTabsKey} from '@/util/keyData'
 const isFirstPage = website.isFirstPage;
 const tagWel = website.fistPage;
 const tagObj = {
@@ -69,6 +69,7 @@ const navs = {
         name: 'tagList',
         content: state.tagList
       })
+      delTabsKey(action.label)
     },
     DEL_ALL_TAG: (state) => {
       state.tagList = [state.tagWel];
@@ -76,6 +77,7 @@ const navs = {
         name: 'tagList',
         content: state.tagList
       })
+      delAllTabsKey(state.tag.label)
     },
     DEL_TAG_OTHER: (state) => {
       state.tagList = state.tagList.filter(item => {
@@ -90,6 +92,7 @@ const navs = {
         name: 'tagList',
         content: state.tagList
       })
+      delAllTabsKey(state.tag.label)
     },
     SET_TAG_LIST(state, tagList) {
       state.tagList = tagList;

+ 41 - 1
src/util/keyData.js

@@ -3,7 +3,10 @@ export function inDetailsKey(key, obj) {
   let list = []
   list = getDetailsKey() ? getDetailsKey() : []
   if (list.find(e => e.key == key)) {
-    list.fill({key: key,...obj},list.findIndex(item => item.key == key),list.findIndex(item => item.key == key)+1) 
+    list.fill({
+      key: key,
+      ...obj
+    }, list.findIndex(item => item.key == key), list.findIndex(item => item.key == key) + 1)
     sessionStorage.setItem('detailsKeyData', JSON.stringify(list))
   } else {
     list.push({
@@ -23,3 +26,40 @@ export function leaveDetailsKey(key) {
 export function getDetailsKey() {
   return JSON.parse(sessionStorage.getItem("detailsKeyData"))
 }
+//关闭当前tabs,清除key并执行解锁接口
+export function delTabsKey(key) {
+  let list = []
+  list = getDetailsKey() ? getDetailsKey() : []
+  let data = list.find(e => e.key == key)
+  if (data) {
+    //执行解锁接口
+
+
+    //执行完接口清除key
+    leaveDetailsKey(key)
+  }
+}
+//关闭其他或者全部tabs,清除key并执行解锁接口
+export function delAllTabsKey(key) {
+  let list = []
+  list = getDetailsKey() ? getDetailsKey() : []
+  if (key == '首页') {
+    //关闭所有或者当前为首页的其他tab
+    list.forEach(e => {
+      //执行解锁
+
+      //执行完接口清除key
+      leaveDetailsKey(e.key)
+    });
+  } else {
+    //其他tab
+    list.forEach(e => {
+      if (e.key != key) {
+        //执行解锁
+
+        //执行完接口清除key
+        leaveDetailsKey(e.key)
+      }
+    });
+  }
+}