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 +++ src/components/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 +- .../components/search/components/SearchFooter.vue | 6 +- .../components/search/components/SearchModal.vue | 3 +- .../components/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 ++-- src/layout/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 @@ 确认 - - + + 切换 @@ -17,6 +17,8 @@ diff --git a/src/layout/components/search/components/SearchModal.vue b/src/layout/components/search/components/SearchModal.vue index ae9bab2..a583435 100644 --- a/src/layout/components/search/components/SearchModal.vue +++ b/src/layout/components/search/components/SearchModal.vue @@ -9,6 +9,7 @@ import { transformI18n } from "@/plugins/i18n"; import { useDebounceFn, onKeyStroke } from "@vueuse/core"; import { ref, watch, computed, nextTick, shallowRef } from "vue"; import { usePermissionStoreHook } from "@/store/modules/permission"; +import Search from "@iconify-icons/ep/search"; interface Props { /** 弹窗显隐 */ @@ -148,7 +149,7 @@ onKeyStroke("ArrowDown", handleDown); > diff --git a/src/layout/components/search/components/SearchResult.vue b/src/layout/components/search/components/SearchResult.vue index ab96d0d..7bdf397 100644 --- a/src/layout/components/search/components/SearchResult.vue +++ b/src/layout/components/search/components/SearchResult.vue @@ -4,6 +4,7 @@ import { useI18n } from "vue-i18n"; import { useEpThemeStoreHook } from "@/store/modules/epTheme"; import { useRenderIcon } from "@/components/ReIcon/src/hooks"; import enterOutlined from "@/assets/svg/enter_outlined.svg?component"; +import Bookmark2Line from "@iconify-icons/ri/bookmark-2-line"; const { t } = useI18n(); @@ -67,7 +68,7 @@ function handleTo() { @click="handleTo" @mouseenter="handleMouse(item)" > - + {{ t(item.meta?.title) }} diff --git a/src/layout/components/search/index.vue b/src/layout/components/search/index.vue index 98aef20..bfd9c63 100644 --- a/src/layout/components/search/index.vue +++ b/src/layout/components/search/index.vue @@ -1,6 +1,8 @@