RuoYi
2023-10-09 0434b4ca7aa1efde198474dbe5d7d64f981f45cd
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',
@@ -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]
        }
@@ -116,6 +127,10 @@
            // special case: need to exclude parent router without redirect
            res.push(data)
          }
        }
        if (router.query) {
          data.query = router.query
        }
        // recursive child routes
@@ -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;