Kaynağa Gözat

!199 发布 5.3.1-2.3.0 正式版
Merge pull request !199 from 疯狂的狮子Li/dev

疯狂的狮子Li 3 hafta önce
ebeveyn
işleme
8fa765f7be

+ 1 - 2
package.json

@@ -1,7 +1,7 @@
 {
   "$schema": "https://json.schemastore.org/package",
   "name": "ruoyi-vue-plus",
-  "version": "5.3.1-BETA2_2.3.0-BETA2",
+  "version": "5.3.1-2.3.0",
   "description": "RuoYi-Vue-Plus多租户管理系统",
   "author": "LionLi",
   "license": "MIT",
@@ -31,7 +31,6 @@
     "echarts": "5.5.0",
     "element-plus": "2.8.8",
     "file-saver": "2.0.5",
-    "fuse.js": "7.0.0",
     "highlight.js": "11.9.0",
     "image-conversion": "2.1.1",
     "js-cookie": "3.0.5",

+ 0 - 195
src/components/HeaderSearch/index.vue

@@ -1,195 +0,0 @@
-<template>
-  <div :class="{ show: show }" class="header-search">
-    <svg-icon class-name="search-icon" icon-class="search" @click.stop="click" />
-    <el-select
-      ref="headerSearchSelectRef"
-      v-model="search"
-      :remote-method="querySearch"
-      filterable
-      default-first-option
-      remote
-      placeholder="Search"
-      class="header-search-select"
-      @change="change"
-    >
-      <el-option v-for="option in options" :key="option.item.path" :value="option.item" :label="option.item.title.join(' > ')" />
-    </el-select>
-  </div>
-</template>
-
-<script setup lang="ts" name="HeaderSearch">
-import Fuse from 'fuse.js';
-import { getNormalPath } from '@/utils/ruoyi';
-import { isHttp } from '@/utils/validate';
-import { usePermissionStore } from '@/store/modules/permission';
-import { RouteRecordRaw } from 'vue-router';
-
-type Router = Array<{
-  path: string;
-  title: string[];
-}>;
-
-const search = ref('');
-const options = ref<any>([]);
-const searchPool = ref<Router>([]);
-const show = ref(false);
-const fuse = ref();
-const headerSearchSelectRef = ref<ElSelectInstance>();
-const router = useRouter();
-const routes = computed(() => usePermissionStore().getDefaultRoutes());
-
-const click = () => {
-  show.value = !show.value;
-  if (show.value) {
-    headerSearchSelectRef.value && headerSearchSelectRef.value.focus();
-  }
-};
-const close = () => {
-  headerSearchSelectRef.value && headerSearchSelectRef.value.blur();
-  options.value = [];
-  show.value = false;
-};
-const change = (val: any) => {
-  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 {
-    if (query) {
-      router.push({ path: path, query: JSON.parse(query) });
-    } else {
-      router.push(path);
-    }
-  }
-  search.value = '';
-  options.value = [];
-  nextTick(() => {
-    show.value = false;
-  });
-};
-const initFuse = (list: Router) => {
-  fuse.value = new Fuse(list, {
-    shouldSort: true,
-    threshold: 0.4,
-    location: 0,
-    distance: 100,
-    minMatchCharLength: 1,
-    keys: [
-      {
-        name: 'title',
-        weight: 0.7
-      },
-      {
-        name: 'path',
-        weight: 0.3
-      }
-    ]
-  });
-};
-// Filter out the routes that can be displayed in the sidebar
-// And generate the internationalized title
-const generateRoutes = (routes: RouteRecordRaw[], basePath = '', prefixTitle: string[] = []) => {
-  let res: Router = [];
-  routes.forEach((r) => {
-    // skip hidden router
-    if (!r.hidden) {
-      const p = r.path.length > 0 && r.path[0] === '/' ? r.path : '/' + r.path;
-      const data = {
-        path: !isHttp(r.path) ? getNormalPath(basePath + p) : r.path,
-        title: [...prefixTitle],
-        query: ''
-      };
-      if (r.meta && r.meta.title) {
-        data.title = [...data.title, r.meta.title];
-        if (r.redirect !== 'noRedirect') {
-          // only push the routes with title
-          // special case: need to exclude parent router without redirect
-          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);
-        if (tempRoutes.length >= 1) {
-          res = [...res, ...tempRoutes];
-        }
-      }
-    }
-  });
-  return res;
-};
-const querySearch = (query: string) => {
-  if (query !== '') {
-    options.value = fuse.value.search(query);
-  } else {
-    options.value = [];
-  }
-};
-
-onMounted(() => {
-  searchPool.value = generateRoutes(routes.value);
-});
-
-// watchEffect(() => {
-//     searchPool.value = generateRoutes(routes.value)
-// })
-
-watch(show, (value) => {
-  if (value) {
-    document.body.addEventListener('click', close);
-  } else {
-    document.body.removeEventListener('click', close);
-  }
-});
-
-watch(searchPool, (list: Router) => {
-  initFuse(list);
-});
-</script>
-
-<style lang="scss" scoped>
-.header-search {
-  font-size: 0 !important;
-
-  .search-icon {
-    cursor: pointer;
-    font-size: 18px;
-    vertical-align: middle;
-  }
-
-  .header-search-select {
-    font-size: 18px;
-    transition: width 0.2s;
-    width: 0;
-    overflow: hidden;
-    background: transparent;
-    border-radius: 0;
-    display: inline-block;
-    vertical-align: middle;
-
-    :deep(.el-input__inner) {
-      border-radius: 0;
-      border: 0;
-      padding-left: 0;
-      padding-right: 0;
-      box-shadow: none !important;
-      border-bottom: 1px solid #d9d9d9;
-      vertical-align: middle;
-    }
-  }
-
-  &.show {
-    .header-search-select {
-      width: 210px;
-      margin-left: 10px;
-    }
-  }
-}
-</style>

+ 0 - 1
src/layout/components/Navbar.vue

@@ -21,7 +21,6 @@
           <template #prefix><svg-icon icon-class="company" class="el-input__icon input-icon" /></template>
         </el-select>
 
-        <!-- <header-search id="header-search" class="right-menu-item" /> -->
         <search-menu ref="searchMenuRef" />
         <el-tooltip content="搜索" effect="dark" placement="bottom">
           <div class="right-menu-item hover-effect" @click="openSearchMenu">

+ 1 - 1
src/utils/jsencrypt.ts

@@ -1,4 +1,4 @@
-import JSEncrypt from 'jsencrypt';
+import JSEncrypt from 'jsencrypt/bin/jsencrypt.min.js';
 // 密钥对生成 http://web.chacuo.net/netrsakeypair
 
 const publicKey = import.meta.env.VITE_APP_RSA_PUBLIC_KEY;