RuoYi
2025-03-05 85ff6a9910a1ca4716b620bb9a6b773119ef6042
ruoyi-ui/src/components/HeaderSearch/index.vue
@@ -20,8 +20,9 @@
<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'
import { isHttp } from '@/utils/validate'
export default {
  name: 'HeaderSearch',
@@ -36,7 +37,7 @@
  },
  computed: {
    routes() {
      return this.$store.getters.permission_routes
      return this.$store.getters.defaultRoutes
    }
  },
  watch: {
@@ -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
    }
  }
}