From 078a3aad5af546e87543ce374ab7ca68ffa19ab3 Mon Sep 17 00:00:00 2001 From: RuoYi <yzz_ivy@163.com> Date: 星期四, 28 九月 2023 22:24:25 +0800 Subject: [PATCH] 修复HeaderSearch组件跳转query参数丢失问题 --- ruoyi-ui/src/components/HeaderSearch/index.vue | 34 ++++++++++++++++++++++++++-------- 1 files changed, 26 insertions(+), 8 deletions(-) diff --git a/ruoyi-ui/src/components/HeaderSearch/index.vue b/ruoyi-ui/src/components/HeaderSearch/index.vue index 8974171..e9d50c2 100644 --- a/ruoyi-ui/src/components/HeaderSearch/index.vue +++ b/ruoyi-ui/src/components/HeaderSearch/index.vue @@ -12,7 +12,7 @@ class="header-search-select" @change="change" > - <el-option v-for="item in options" :key="item.path" :value="item" :label="item.title.join(' > ')" /> + <el-option v-for="option in options" :key="option.item.path" :value="option.item" :label="option.item.title.join(' > ')" /> </el-select> </div> </template> @@ -20,7 +20,7 @@ <script> // fuse is a lightweight fuzzy-search module // make search results more in line with expectations -import Fuse from 'fuse.js' +import Fuse from 'fuse.js/dist/fuse.min.js' import path from 'path' export default { @@ -70,7 +70,19 @@ this.show = false }, change(val) { - this.$router.push(val.path) + 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 { + if (query) { + this.$router.push({ path: path, query: JSON.parse(query) }); + } else { + this.$router.push(path) + } + } this.search = '' this.options = [] this.$nextTick(() => { @@ -83,7 +95,6 @@ threshold: 0.4, location: 0, distance: 100, - maxPatternLength: 32, minMatchCharLength: 1, keys: [{ name: 'title', @@ -96,7 +107,7 @@ }, // 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) { @@ -104,7 +115,7 @@ if (router.hidden) { continue } const data = { - path: path.resolve(basePath, router.path), + path: !this.ishttp(router.path) ? path.resolve(basePath, router.path) : router.path, title: [...prefixTitle] } @@ -118,9 +129,13 @@ } } + 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] } @@ -134,6 +149,9 @@ } else { this.options = [] } + }, + ishttp(url) { + return url.indexOf('http://') !== -1 || url.indexOf('https://') !== -1 } } } @@ -159,7 +177,7 @@ display: inline-block; vertical-align: middle; - /deep/ .el-input__inner { + ::v-deep .el-input__inner { border-radius: 0; border: 0; padding-left: 0; -- Gitblit v1.9.2