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

This commit is contained in:
疯狂的狮子Li 2023-10-09 10:27:50 +08:00
parent 8ca601dc66
commit 81dcd8b512
2 changed files with 25 additions and 7 deletions

View File

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

View File

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