瀏覽代碼

关闭标签时清除状态

zhongxiaoyu 3 年之前
父節點
當前提交
f1072fd95c
共有 3 個文件被更改,包括 45 次插入21 次删除
  1. 1 3
      src/App.vue
  2. 42 11
      src/layout/components/TagsView/index.vue
  3. 2 7
      src/store/modules/user.js

+ 1 - 3
src/App.vue

@@ -1,7 +1,7 @@
 <!--
  * @Author: your name
  * @Date: 2021-10-14 17:17:53
- * @LastEditTime: 2022-03-29 10:02:24
+ * @LastEditTime: 2022-03-30 15:24:07
  * @LastEditors: your name
  * @Description: In User Settings Edit
  * @FilePath: \Foshan4A\src\App.vue
@@ -281,7 +281,6 @@ export default {
               this.$store.dispatch("app/getErrorNum", 0);
               this.clearAll();
               this.$store.dispatch("app/toggleDialog", false);
-              this.$store.dispatch('tagsView/delAllViews');
               this.$router.push(`/login?redirect=${this.$route.fullPath}`);
               location.reload();
             }
@@ -290,7 +289,6 @@ export default {
             this.$store.dispatch("app/getErrorNum", 0);
             this.clearAll();
             this.$store.dispatch("app/toggleDialog", false);
-            this.$store.dispatch('tagsView/delAllViews');
             this.$router.push(`/login?redirect=${this.$route.fullPath}`);
             location.reload();
           }

+ 42 - 11
src/layout/components/TagsView/index.vue

@@ -18,6 +18,7 @@
 <script>
 import ScrollPane from './ScrollPane'
 import path from 'path'
+import { mapGetters } from 'vuex'
 
 export default {
   components: { ScrollPane },
@@ -31,12 +32,7 @@ export default {
     }
   },
   computed: {
-    visitedViews () {
-      return this.$store.state.tagsView.visitedViews
-    },
-    routes () {
-      return this.$store.state.user.roles
-    }
+    ...mapGetters(['visitedViews', 'roles'])
   },
   watch: {
     $route () {
@@ -49,10 +45,45 @@ export default {
       } else {
         document.body.removeEventListener('click', this.closeMenu)
       }
+    },
+    visitedViews: {
+      handler(val) {
+        console.log(JSON.stringify(val).length)
+        let authView = false
+        let accountGroupView = false
+        let orgView = false
+        val.forEach(view => {
+          switch (view.path) {
+            case '/authority':
+              authView = true
+              break
+            case '/organization':
+              orgView = true
+              break
+            case '/accountGroup':
+              accountGroupView = true
+              break
+            default:
+              break
+          }
+        })
+        if (!authView) {
+          sessionStorage.removeItem('authExpandedKeys')
+          sessionStorage.removeItem('authCurrentKey')
+        }
+        if (!orgView) {
+          sessionStorage.removeItem('orgExpandedKeys')
+          sessionStorage.removeItem('orgCurrentKey')
+        }
+        if (!accountGroupView) {
+          sessionStorage.removeItem('accountGroupExpandedKeys')
+          sessionStorage.removeItem('accountGroupCurrentKey')
+        }
+      }
     }
   },
   created () {
-    if (this.routes && this.routes.length) {
+    if (this.roles && this.roles.length) {
       this.initTags()
       this.addTags()
       this.beforeUnload()
@@ -86,10 +117,10 @@ export default {
     isAffix (tag) {
       return tag.meta && tag.meta.affix
     },
-    filterAffixTags (routes, basePath = '/') {
+    filterAffixTags (roles, basePath = '/') {
       let tags = []
-      if (this.routes) {
-        routes.forEach(route => {
+      if (this.roles) {
+        roles.forEach(route => {
           if (route.meta && route.meta.affix) {
             const tagPath = path.resolve(basePath, route.path)
             tags.push({
@@ -110,7 +141,7 @@ export default {
       return tags
     },
     initTags () {
-      const affixTags = this.affixTags = this.filterAffixTags(this.routes)
+      const affixTags = this.affixTags = this.filterAffixTags(this.roles)
       for (const tag of affixTags) {
         // Must have tag name
         if (tag.name) {

+ 2 - 7
src/store/modules/user.js

@@ -102,21 +102,16 @@ const actions = {
   },
 
   // user logout
-  logout ({ commit, state }) {
+  logout ({ commit, dispatch, state }) {
     // console.log(state)
     return new Promise((resolve, reject) => {
       loginUp({ "UserId": state.UserId, "UserType": state.UserType }).then(result => {
+        dispatch('tagsView/delAllViews');
         sessionStorage.removeItem("userName");
         sessionStorage.removeItem("UserType");
         sessionStorage.removeItem("User_Id");
         sessionStorage.removeItem("token");
         sessionStorage.removeItem("userAuthList");
-        sessionStorage.removeItem('authExpandedKeys')
-        sessionStorage.removeItem('authCurrentKey')
-        sessionStorage.removeItem('accountGroupExpandedKeys')
-        sessionStorage.removeItem('accountGroupCurrentKey')
-        sessionStorage.removeItem('orgExpandedKeys')
-        sessionStorage.removeItem('orgCurrentKey')
         removeToken(); // must remove  token  first
         removeToken('codeToken');
         removeToken('systemSet');