RuoYi
2024-12-02 8faea601919e885068dc955aab73fd6794d6aa27
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,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',
@@ -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
    }
  }
}
@@ -167,7 +175,7 @@
    display: inline-block;
    vertical-align: middle;
    /deep/ .el-input__inner {
    ::v-deep .el-input__inner {
      border-radius: 0;
      border: 0;
      padding-left: 0;