RuoYi
2023-09-28 e8fe5f14553e4e95050dc1e929f6fb545ed80148
src/components/HeaderSearch/index.vue
@@ -21,6 +21,7 @@
import Fuse from 'fuse.js'
import { getNormalPath } from '@/utils/ruoyi'
import { isHttp } from '@/utils/validate'
import usePermissionStore from '@/store/modules/permission'
const search = ref('');
const options = ref([]);
@@ -28,9 +29,8 @@
const show = ref(false);
const fuse = ref(undefined);
const headerSearchSelectRef = ref(null);
const store = useStore();
const router = useRouter();
const routes = computed(() => store.getters.permission_routes);
const routes = computed(() => usePermissionStore().routes);
function click() {
  show.value = !show.value
@@ -45,12 +45,17 @@
}
function change(val) {
  const path = val.path;
  const query = val.query;
  if (isHttp(path)) {
    // http(s):// 路径新窗口打开
    const pindex = path.indexOf("http");
    window.open(path.substr(pindex, path.length), "_blank");
  } else {
    router.push(path)
    if (query) {
      router.push({ path: path, query: JSON.parse(query) });
    } else {
      router.push(path)
    }
  }
  search.value = ''
@@ -65,7 +70,6 @@
    threshold: 0.4,
    location: 0,
    distance: 100,
    maxPatternLength: 32,
    minMatchCharLength: 1,
    keys: [{
      name: 'title',
@@ -78,7 +82,7 @@
}
// Filter out the routes that can be displayed in the sidebar
// And generate the internationalized title
function generateRoutes(routes, basePath = '', prefixTitle = []) {
function generateRoutes(routes, basePath = '', prefixTitle = [], query = {}) {
  let res = []
  for (const r of routes) {
@@ -99,10 +103,13 @@
        res.push(data)
      }
    }
    if (r.query) {
      data.query = r.query
    }
    // recursive child routes
    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) {
        res = [...res, ...tempRoutes]
      }