Przeglądaj źródła

fix 修复 HeaderSearch组件跳转query参数丢失问题

疯狂的狮子Li 1 rok temu
rodzic
commit
81dcd8b512

+ 13 - 4
ruoyi-ui-vue3/src/components/HeaderSearch/index.vue

@@ -45,12 +45,17 @@ function close() {
 }
 function change(val) {
   const path = val.path;
+  const query = val.query;
   if (isHttp(path)) {
     // http(s):// 路径新窗口打开
     const pindex = path.indexOf("http");
     window.open(path.substr(pindex, path.length), "_blank");
   } else {
-    router.push(path)
+    if (query) {
+      router.push({ path: path, query: JSON.parse(query) });
+    } else {
+      router.push(path)
+    }
   }
 
   search.value = ''
@@ -77,7 +82,7 @@ function initFuse(list) {
 }
 // Filter out the routes that can be displayed in the sidebar
 // And generate the internationalized title
-function generateRoutes(routes, basePath = '', prefixTitle = []) {
+function generateRoutes(routes, basePath = '', prefixTitle = [], query = {}) {
   let res = []
 
   for (const r of routes) {
@@ -99,9 +104,13 @@ function generateRoutes(routes, basePath = '', prefixTitle = []) {
       }
     }
 
+    if (r.query) {
+      data.query = r.query
+    }
+
     // recursive child routes
     if (r.children) {
-      const tempRoutes = generateRoutes(r.children, data.path, data.title)
+      const tempRoutes = generateRoutes(r.children, data.path, data.title, data.query)
       if (tempRoutes.length >= 1) {
         res = [...res, ...tempRoutes]
       }
@@ -176,4 +185,4 @@ watch(searchPool, (list) => {
     }
   }
 }
-</style>
+</style>

+ 12 - 3
ruoyi-ui/src/components/HeaderSearch/index.vue

@@ -71,12 +71,17 @@ export default {
     },
     change(val) {
       const path = val.path;
+      const query = val.query;
       if(this.ishttp(val.path)) {
         // http(s):// 路径新窗口打开
         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 = []
@@ -102,7 +107,7 @@ export default {
     },
     // Filter out the routes that can be displayed in the sidebar
     // And generate the internationalized title
-    generateRoutes(routes, basePath = '/', prefixTitle = []) {
+    generateRoutes(routes, basePath = '/', prefixTitle = [], query = {}) {
       let res = []
 
       for (const router of routes) {
@@ -124,9 +129,13 @@ export default {
           }
         }
 
+        if (router.query) {
+          data.query = router.query
+        }
+
         // recursive child routes
         if (router.children) {
-          const tempRoutes = this.generateRoutes(router.children, data.path, data.title)
+          const tempRoutes = this.generateRoutes(router.children, data.path, data.title, data.query)
           if (tempRoutes.length >= 1) {
             res = [...res, ...tempRoutes]
           }