From 12a003a43036a08dbe4bb9a5c2cef308502f66a6 Mon Sep 17 00:00:00 2001
From: xiaoxian521 <1923740402@qq.com>
Date: Wed, 30 Nov 2022 16:58:56 +0800
Subject: [PATCH] release: update `3.9.0`
---
build/optimize.ts | 14 +++-
locales/en.yaml | 4 +-
locales/zh-CN.yaml | 4 +-
mock/asyncRoutes.ts | 4 +-
package.json | 2 +-
public/serverConfig.json | 2 +-
src/components/ReIcon/src/hooks.ts | 10 +++
.../ReIcon/src/iconifyIconOffline.ts | 72 +------------------
src/layout/components/navbar.vue | 11 +--
src/layout/components/notice/index.vue | 3 +-
src/layout/components/panel/index.vue | 3 +-
.../search/components/SearchFooter.vue | 6 +-
.../search/components/SearchModal.vue | 3 +-
.../search/components/SearchResult.vue | 3 +-
src/layout/components/search/index.vue | 4 +-
src/layout/components/setting/index.vue | 9 ++-
src/layout/components/sidebar/horizontal.vue | 11 +--
.../components/sidebar/leftCollapse.vue | 4 +-
src/layout/components/sidebar/mixNav.vue | 11 +--
src/layout/components/sidebar/sidebarItem.vue | 18 +++--
src/layout/components/sidebar/topCollapse.vue | 5 +-
src/layout/components/tag/index.vue | 26 ++++---
src/layout/hooks/useTag.ts | 24 ++++---
src/layout/index.vue | 1 +
src/layout/types.ts | 9 ++-
src/main.ts | 1 -
src/plugins/echarts/index.ts | 5 +-
src/router/modules/error.ts | 3 +-
src/router/modules/home.ts | 3 +-
src/router/modules/remaining.ts | 3 +-
src/style/reset.scss | 8 ---
src/utils/http/index.ts | 4 +-
src/views/login/index.vue | 11 +--
types/global.d.ts | 5 +-
vite.config.ts | 4 +-
35 files changed, 156 insertions(+), 154 deletions(-)
diff --git a/build/optimize.ts b/build/optimize.ts
index 73b24f3..65bf4bf 100644
--- a/build/optimize.ts
+++ b/build/optimize.ts
@@ -4,7 +4,7 @@
* 尤其当您禁用浏览器缓存时(这种情况只应该发生在调试阶段)必须将对应模块加入到 include里,否则会遇到开发环境切换页面卡顿的问题(vite 会认为它是一个新的依赖包会重新加载并强制刷新页面),因为它既无法使用浏览器缓存,又没有在本地 node_modules/.vite 里缓存
* 温馨提示:如果您使用的第三方库是全局引入,也就是引入到 src/main.ts 文件里,就不需要再添加到 include 里了,因为 vite 会自动将它们缓存到 node_modules/.vite
*/
-export const include = [
+const include = [
"qs",
"mitt",
"dayjs",
@@ -24,3 +24,15 @@ export const include = [
"responsive-storage",
"element-resize-detector"
];
+
+/**
+ * 在预构建中强制排除的依赖项
+ * 温馨提示:所有以 `@iconify-icons/` 开头引入的的本地图标模块,都应该加入到下面的 `exclude` 里,因为平台推荐的使用方式是哪里需要哪里引入而且都是单个的引入,不需要预构建,直接让浏览器加载就好
+ */
+const exclude = [
+ "@iconify-icons/ep",
+ "@iconify-icons/ri",
+ "@pureadmin/theme/dist/browser-utils"
+];
+
+export { include, exclude };
diff --git a/locales/en.yaml b/locales/en.yaml
index 5d8c6bf..44bb70d 100644
--- a/locales/en.yaml
+++ b/locales/en.yaml
@@ -18,8 +18,8 @@ buttons:
hscloseRightTabs: Close RightTabs
hscloseOtherTabs: Close OtherTabs
hscloseAllTabs: Close AllTabs
- hswholeFullScreen: Whole FullScreen
- hswholeExitFullScreen: Whole ExitFullScreen
+ hswholeFullScreen: FullScreen
+ hswholeExitFullScreen: ExitFull
hscontentFullScreen: Content FullScreen
hscontentExitFullScreen: Content ExitFullScreen
menus:
diff --git a/locales/zh-CN.yaml b/locales/zh-CN.yaml
index 64f52d9..de0a399 100644
--- a/locales/zh-CN.yaml
+++ b/locales/zh-CN.yaml
@@ -18,8 +18,8 @@ buttons:
hscloseRightTabs: 关闭右侧标签页
hscloseOtherTabs: 关闭其他标签页
hscloseAllTabs: 关闭全部标签页
- hswholeFullScreen: 整体页面全屏
- hswholeExitFullScreen: 整体页面退出全屏
+ hswholeFullScreen: 全屏
+ hswholeExitFullScreen: 退出全屏
hscontentFullScreen: 内容区全屏
hscontentExitFullScreen: 内容区退出全屏
menus:
diff --git a/mock/asyncRoutes.ts b/mock/asyncRoutes.ts
index 9335735..b094e21 100644
--- a/mock/asyncRoutes.ts
+++ b/mock/asyncRoutes.ts
@@ -1,6 +1,8 @@
// 模拟后端动态生成路由
import { MockMethod } from "vite-plugin-mock";
+import Lollipop from "@iconify-icons/ep/lollipop";
+
/**
* roles:页面级别权限,这里模拟二种 "admin"、"common"
* admin:管理员角色
@@ -11,7 +13,7 @@ const permissionRouter = {
path: "/permission",
meta: {
title: "menus.permission",
- icon: "lollipop",
+ icon: Lollipop,
rank: 10
},
children: [
diff --git a/package.json b/package.json
index b4caf3e..188f90e 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
{
"name": "pure-admin-thin",
- "version": "3.8.7",
+ "version": "3.9.0",
"private": true,
"scripts": {
"dev": "NODE_OPTIONS=--max-old-space-size=4096 vite",
diff --git a/public/serverConfig.json b/public/serverConfig.json
index 543163a..b4c0058 100644
--- a/public/serverConfig.json
+++ b/public/serverConfig.json
@@ -1,5 +1,5 @@
{
- "Version": "3.8.7",
+ "Version": "3.9.0",
"Title": "PureAdmin",
"FixedHeader": true,
"HiddenSideBar": false,
diff --git a/src/components/ReIcon/src/hooks.ts b/src/components/ReIcon/src/hooks.ts
index 4413b51..4f430a8 100644
--- a/src/components/ReIcon/src/hooks.ts
+++ b/src/components/ReIcon/src/hooks.ts
@@ -34,6 +34,16 @@ export function useRenderIcon(icon: any, attrs?: iconType): Component {
} else if (typeof icon === "function" || typeof icon?.render === "function") {
// svg
return icon;
+ } else if (typeof icon === "object") {
+ return defineComponent({
+ name: "OfflineIcon",
+ render() {
+ return h(IconifyIconOffline, {
+ icon: icon,
+ ...attrs
+ });
+ }
+ });
} else {
// 通过是否存在 : 符号来判断是在线还是本地图标,存在即是在线图标,反之
return defineComponent({
diff --git a/src/components/ReIcon/src/iconifyIconOffline.ts b/src/components/ReIcon/src/iconifyIconOffline.ts
index 69b6ea6..06a2a7c 100644
--- a/src/components/ReIcon/src/iconifyIconOffline.ts
+++ b/src/components/ReIcon/src/iconifyIconOffline.ts
@@ -1,88 +1,22 @@
import { h, defineComponent } from "vue";
import { Icon as IconifyIcon, addIcon } from "@iconify/vue/dist/offline";
-// element-plus icon
-import Check from "@iconify-icons/ep/check";
-import HomeFilled from "@iconify-icons/ep/home-filled";
-import Lollipop from "@iconify-icons/ep/lollipop";
-import RefreshRight from "@iconify-icons/ep/refresh-right";
-import Close from "@iconify-icons/ep/close";
-import CloseBold from "@iconify-icons/ep/close-bold";
-import Bell from "@iconify-icons/ep/bell";
-import Search from "@iconify-icons/ep/search";
-import EpArrowDown from "@iconify-icons/ep/arrow-down";
-import ArrowUp from "@iconify-icons/ep/arrow-up";
-import ArrowRight from "@iconify-icons/ep/arrow-right";
-import ArrowLeft from "@iconify-icons/ep/arrow-left";
-addIcon("check", Check);
-addIcon("home-filled", HomeFilled);
-addIcon("lollipop", Lollipop);
-addIcon("refresh-right", RefreshRight);
-addIcon("close", Close);
-addIcon("close-bold", CloseBold);
-addIcon("bell", Bell);
-addIcon("search", Search);
-addIcon("ep-arrow-down", EpArrowDown);
-addIcon("ep-arrow-up", ArrowUp);
-addIcon("ep-arrow-right", ArrowRight);
-addIcon("ep-arrow-left", ArrowLeft);
-
-// remixicon
-import ArrowRightSLine from "@iconify-icons/ri/arrow-right-s-line";
-import ArrowLeftSLine from "@iconify-icons/ri/arrow-left-s-line";
-import LogoutCircleRLine from "@iconify-icons/ri/logout-circle-r-line";
-import InformationLine from "@iconify-icons/ri/information-line";
-import ArrowUpLine from "@iconify-icons/ri/arrow-up-line";
-import ArrowDownLine from "@iconify-icons/ri/arrow-down-line";
-import Bookmark2Line from "@iconify-icons/ri/bookmark-2-line";
-import User from "@iconify-icons/ri/user-3-fill";
-import Lock from "@iconify-icons/ri/lock-fill";
-import MenuUnfold from "@iconify-icons/ri/menu-unfold-fill";
-import MenuFold from "@iconify-icons/ri/menu-fold-fill";
-import Setting from "@iconify-icons/ri/settings-3-line";
-import ArrowDown from "@iconify-icons/ri/arrow-down-s-line";
-import CloseLeftTags from "@iconify-icons/ri/text-direction-r";
-import CloseRightTags from "@iconify-icons/ri/text-direction-l";
-import CloseOtherTags from "@iconify-icons/ri/text-spacing";
-import CloseAllTags from "@iconify-icons/ri/subtract-line";
-import Fullscreen from "@iconify-icons/ri/fullscreen-fill";
-import ExitFullscreen from "@iconify-icons/ri/fullscreen-exit-fill";
-addIcon("arrow-right-s-line", ArrowRightSLine);
-addIcon("arrow-left-s-line", ArrowLeftSLine);
-addIcon("logout-circle-r-line", LogoutCircleRLine);
-addIcon("information-line", InformationLine);
-addIcon("arrow-up-line", ArrowUpLine);
-addIcon("arrow-down-line", ArrowDownLine);
-addIcon("bookmark-2-line", Bookmark2Line);
-addIcon("user", User);
-addIcon("lock", Lock);
-addIcon("menu-unfold", MenuUnfold);
-addIcon("menu-fold", MenuFold);
-addIcon("setting", Setting);
-addIcon("arrow-down", ArrowDown);
-addIcon("close-left-tags", CloseLeftTags);
-addIcon("close-right-tags", CloseRightTags);
-addIcon("close-other-tags", CloseOtherTags);
-addIcon("close-all-tags", CloseAllTags);
-addIcon("fullscreen", Fullscreen);
-addIcon("exit-fullscreen", ExitFullscreen);
-
// Iconify Icon在Vue里本地使用(用于内网环境)https://docs.iconify.design/icon-components/vue/offline.html
export default defineComponent({
name: "IconifyIconOffline",
components: { IconifyIcon },
props: {
icon: {
- type: String,
- default: ""
+ default: null
}
},
render() {
+ if (typeof this.icon === "object") addIcon(this.icon, this.icon);
const attrs = this.$attrs;
return h(
IconifyIcon,
{
- icon: `${this.icon}`,
+ icon: this.icon,
style: attrs?.style
? Object.assign(attrs.style, { outline: "none" })
: { outline: "none" },
diff --git a/src/layout/components/navbar.vue b/src/layout/components/navbar.vue
index 0bca004..bbe0e25 100644
--- a/src/layout/components/navbar.vue
+++ b/src/layout/components/navbar.vue
@@ -7,6 +7,9 @@ import Breadcrumb from "./sidebar/breadCrumb.vue";
import topCollapse from "./sidebar/topCollapse.vue";
import { useTranslationLang } from "../hooks/useTranslationLang";
import globalization from "@/assets/svg/globalization.svg?component";
+import LogoutCircleRLine from "@iconify-icons/ri/logout-circle-r-line";
+import Setting from "@iconify-icons/ri/settings-3-line";
+import Check from "@iconify-icons/ep/check";
const {
layout,
@@ -62,7 +65,7 @@ const { t, locale, translationCh, translationEn } = useTranslationLang();
简体中文
@@ -72,7 +75,7 @@ const { t, locale, translationCh, translationEn } = useTranslationLang();
@click="translationEn"
>
-
+
English
@@ -92,7 +95,7 @@ const { t, locale, translationCh, translationEn } = useTranslationLang();
{{ t("buttons.hsLoginOut") }}
@@ -105,7 +108,7 @@ const { t, locale, translationCh, translationEn } = useTranslationLang();
:title="t('buttons.hssystemSet')"
@click="onPanel"
>
-
+
diff --git a/src/layout/components/notice/index.vue b/src/layout/components/notice/index.vue
index 976b39e..1985b29 100644
--- a/src/layout/components/notice/index.vue
+++ b/src/layout/components/notice/index.vue
@@ -2,6 +2,7 @@
import { ref } from "vue";
import { noticesData } from "./data";
import NoticeList from "./noticeList.vue";
+import Bell from "@iconify-icons/ep/bell";
const noticesNum = ref(0);
const notices = ref(noticesData);
@@ -15,7 +16,7 @@ notices.value.map(v => (noticesNum.value += v.list.length));
diff --git a/src/layout/components/panel/index.vue b/src/layout/components/panel/index.vue
index 3618bdf..4a8b566 100644
--- a/src/layout/components/panel/index.vue
+++ b/src/layout/components/panel/index.vue
@@ -2,6 +2,7 @@
import { ref } from "vue";
import { onClickOutside } from "@vueuse/core";
import { emitter } from "@/utils/mitt";
+import Close from "@iconify-icons/ep/close";
const show = ref(false);
const target = ref(null);
@@ -25,7 +26,7 @@ emitter.on("openPanel", () => {
diff --git a/src/layout/components/search/components/SearchFooter.vue b/src/layout/components/search/components/SearchFooter.vue
index 3826396..52cb512 100644
--- a/src/layout/components/search/components/SearchFooter.vue
+++ b/src/layout/components/search/components/SearchFooter.vue
@@ -5,8 +5,8 @@
确认