From 7a4f61cf5e8d42d24907ccc3d7345d25012d3a55 Mon Sep 17 00:00:00 2001
From: RuoYi <yzz_ivy@163.com>
Date: Tue, 14 Apr 2026 16:43:50 +0800
Subject: [PATCH] 通知公告新增阅读用户&详细

---
 ruoyi-ui/src/plugins/tab.js |   46 +++++++++++++++++++++++++++-------------------
 1 files changed, 27 insertions(+), 19 deletions(-)

diff --git a/ruoyi-ui/src/plugins/tab.js b/ruoyi-ui/src/plugins/tab.js
index c8058a9..9929de3 100644
--- a/ruoyi-ui/src/plugins/tab.js
+++ b/ruoyi-ui/src/plugins/tab.js
@@ -1,18 +1,22 @@
 import store from '@/store'
-import router from '@/router';
+import router from '@/router'
 
 export default {
   // 刷新当前tab页签
   refreshPage(obj) {
-    const { path, query, matched } = router.currentRoute;
+    const { path, query, matched } = router.currentRoute
+    // 防止在重定向过程中重复刷新
+    if (path.startsWith('/redirect/')) {
+      return Promise.resolve()
+    }
     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 };
+            obj = { name: m.components.default.name, path: path, query: query }
           }
         }
-      });
+      })
     }
     return store.dispatch('tagsView/delCachedView', obj).then(() => {
       const { path, query } = obj
@@ -24,44 +28,48 @@
   },
   // 关闭当前tab页签,打开新页签
   closeOpenPage(obj) {
-    store.dispatch("tagsView/delView", router.currentRoute);
+    store.dispatch("tagsView/delView", router.currentRoute)
     if (obj !== undefined) {
-      return router.push(obj);
+      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', 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);
+    return store.dispatch('tagsView/delView', obj)
   },
   // 关闭所有tab页签
   closeAllPage() {
-    return store.dispatch('tagsView/delAllViews');
+    return store.dispatch('tagsView/delAllViews')
   },
   // 关闭左侧tab页签
   closeLeftPage(obj) {
-    return store.dispatch('tagsView/delLeftTags', obj || router.currentRoute);
+    return store.dispatch('tagsView/delLeftTags', obj || router.currentRoute)
   },
   // 关闭右侧tab页签
   closeRightPage(obj) {
-    return store.dispatch('tagsView/delRightTags', obj || router.currentRoute);
+    return store.dispatch('tagsView/delRightTags', obj || router.currentRoute)
   },
   // 关闭其他tab页签
   closeOtherPage(obj) {
-    return store.dispatch('tagsView/delOthersViews', obj || router.currentRoute);
+    return store.dispatch('tagsView/delOthersViews', obj || router.currentRoute)
   },
   // 添加tab页签
-  openPage(title, url) {
-    var obj = { path: url, meta: { title: title } }
-    store.dispatch('tagsView/addView', obj);
-    return router.push(url);
+  openPage(title, url, params) {
+    const 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);
+    return store.dispatch('tagsView/updateVisitedView', obj)
   }
 }

--
Gitblit v1.9.3