From b25a280ebbfc5ca2ea334f2c7e337376e4ffd1cd Mon Sep 17 00:00:00 2001
From: RuoYi <yzz_ivy@163.com>
Date: Tue, 17 Dec 2024 11:57:05 +0800
Subject: [PATCH] 优化TopNav内链菜单点击没有高亮(IB8WHJ)

---
 ruoyi-ui/src/components/HeaderSearch/index.vue |   24 ++++++++++++++++--------
 1 files changed, 16 insertions(+), 8 deletions(-)

diff --git a/ruoyi-ui/src/components/HeaderSearch/index.vue b/ruoyi-ui/src/components/HeaderSearch/index.vue
index ae952a9..5dd4ca9 100644
--- a/ruoyi-ui/src/components/HeaderSearch/index.vue
+++ b/ruoyi-ui/src/components/HeaderSearch/index.vue
@@ -22,6 +22,7 @@
 // make search results more in line with expectations
 import Fuse from 'fuse.js/dist/fuse.min.js'
 import path from 'path'
+import { isHttp } from '@/utils/validate'
 
 export default {
   name: 'HeaderSearch',
@@ -70,11 +71,18 @@
       this.show = false
     },
     change(val) {
-      if(this.ishttp(val.path)) {
+      const path = val.path;
+      const query = val.query;
+      if(isHttp(val.path)) {
         // http(s):// 路径新窗口打开
-        window.open(val.path, "_blank");
+        const pindex = path.indexOf("http");
+        window.open(path.substr(pindex, path.length), "_blank");
       } else {
-        this.$router.push(val.path)
+        if (query) {
+          this.$router.push({ path: path, query: JSON.parse(query) });
+        } else {
+          this.$router.push(path)
+        }
       }
       this.search = ''
       this.options = []
@@ -88,7 +96,6 @@
         threshold: 0.4,
         location: 0,
         distance: 100,
-        maxPatternLength: 32,
         minMatchCharLength: 1,
         keys: [{
           name: 'title',
@@ -109,7 +116,7 @@
         if (router.hidden) { continue }
 
         const data = {
-          path: !this.ishttp(router.path) ? path.resolve(basePath, router.path) : router.path,
+          path: !isHttp(router.path) ? path.resolve(basePath, router.path) : router.path,
           title: [...prefixTitle]
         }
 
@@ -121,6 +128,10 @@
             // special case: need to exclude parent router without redirect
             res.push(data)
           }
+        }
+
+        if (router.query) {
+          data.query = router.query
         }
 
         // recursive child routes
@@ -139,9 +150,6 @@
       } else {
         this.options = []
       }
-    },
-    ishttp(url) {
-      return url.indexOf('http://') !== -1 || url.indexOf('https://') !== -1
     }
   }
 }

--
Gitblit v1.9.3