소스 검색

update 优化$tab.closePage后存在非首页页签时不应该跳转首页

疯狂的狮子li 2 년 전
부모
커밋
bb265274c5
1개의 변경된 파일71개의 추가작업 그리고 67개의 파일을 삭제
  1. 71 67
      ruoyi-ui/src/plugins/tab.js

+ 71 - 67
ruoyi-ui/src/plugins/tab.js

@@ -1,67 +1,71 @@
-import store from '@/store'
-import router from '@/router';
-
-export default {
-  // 刷新当前tab页签
-  refreshPage(obj) {
-    const { path, query, matched } = router.currentRoute;
-    if (obj === undefined) {
-      matched.forEach((m) => {
-        if (m.components && m.components.default && m.components.default.name) {
-          if (!['Layout', 'ParentView'].includes(m.components.default.name)) {
-            obj = { name: m.components.default.name, path: path, query: query };
-          }
-        }
-      });
-    }
-    return store.dispatch('tagsView/delCachedView', obj).then(() => {
-      const { path, query } = obj
-      router.replace({
-        path: '/redirect' + path,
-        query: query
-      })
-    })
-  },
-  // 关闭当前tab页签,打开新页签
-  closeOpenPage(obj) {
-    store.dispatch("tagsView/delView", router.currentRoute);
-    if (obj !== undefined) {
-      return router.push(obj);
-    }
-  },
-  // 关闭指定tab页签
-  closePage(obj) {
-    if (obj === undefined) {
-      return store.dispatch('tagsView/delView', router.currentRoute).then(({ lastPath }) => {
-        return router.push(lastPath || '/');
-      });
-    }
-    return store.dispatch('tagsView/delView', obj);
-  },
-  // 关闭所有tab页签
-  closeAllPage() {
-    return store.dispatch('tagsView/delAllViews');
-  },
-  // 关闭左侧tab页签
-  closeLeftPage(obj) {
-    return store.dispatch('tagsView/delLeftTags', obj || router.currentRoute);
-  },
-  // 关闭右侧tab页签
-  closeRightPage(obj) {
-    return store.dispatch('tagsView/delRightTags', obj || router.currentRoute);
-  },
-  // 关闭其他tab页签
-  closeOtherPage(obj) {
-    return store.dispatch('tagsView/delOthersViews', obj || router.currentRoute);
-  },
-  // 添加tab页签
-  openPage(title, url, params) {
-    var obj = { path: url, meta: { title: title } }
-    store.dispatch('tagsView/addView', obj);
-    return router.push({ path: url, query: params });
-  },
-  // 修改tab页签
-  updatePage(obj) {
-    return store.dispatch('tagsView/updateVisitedView', obj);
-  }
-}
+import store from '@/store'
+import router from '@/router';
+
+export default {
+  // 刷新当前tab页签
+  refreshPage(obj) {
+    const { path, query, matched } = router.currentRoute;
+    if (obj === undefined) {
+      matched.forEach((m) => {
+        if (m.components && m.components.default && m.components.default.name) {
+          if (!['Layout', 'ParentView'].includes(m.components.default.name)) {
+            obj = { name: m.components.default.name, path: path, query: query };
+          }
+        }
+      });
+    }
+    return store.dispatch('tagsView/delCachedView', obj).then(() => {
+      const { path, query } = obj
+      router.replace({
+        path: '/redirect' + path,
+        query: query
+      })
+    })
+  },
+  // 关闭当前tab页签,打开新页签
+  closeOpenPage(obj) {
+    store.dispatch("tagsView/delView", router.currentRoute);
+    if (obj !== undefined) {
+      return router.push(obj);
+    }
+  },
+  // 关闭指定tab页签
+  closePage(obj) {
+    if (obj === undefined) {
+      return store.dispatch('tagsView/delView', router.currentRoute).then(({ visitedViews }) => {
+        const latestView = visitedViews.slice(-1)[0]
+        if (latestView) {
+          return router.push(latestView.fullPath)
+        }
+        return router.push('/');
+      });
+    }
+    return store.dispatch('tagsView/delView', obj);
+  },
+  // 关闭所有tab页签
+  closeAllPage() {
+    return store.dispatch('tagsView/delAllViews');
+  },
+  // 关闭左侧tab页签
+  closeLeftPage(obj) {
+    return store.dispatch('tagsView/delLeftTags', obj || router.currentRoute);
+  },
+  // 关闭右侧tab页签
+  closeRightPage(obj) {
+    return store.dispatch('tagsView/delRightTags', obj || router.currentRoute);
+  },
+  // 关闭其他tab页签
+  closeOtherPage(obj) {
+    return store.dispatch('tagsView/delOthersViews', obj || router.currentRoute);
+  },
+  // 添加tab页签
+  openPage(title, url, params) {
+    var obj = { path: url, meta: { title: title } }
+    store.dispatch('tagsView/addView', obj);
+    return router.push({ path: url, query: params });
+  },
+  // 修改tab页签
+  updatePage(obj) {
+    return store.dispatch('tagsView/updateVisitedView', obj);
+  }
+}