From 4ef4768c65c7b6767085c4d0e2bc32c289a3f927 Mon Sep 17 00:00:00 2001 From: xiaoxian521 <1923740402@qq.com> Date: Tue, 16 Nov 2021 22:17:57 +0800 Subject: [PATCH] =?UTF-8?q?perf:=20=E5=90=8C=E6=AD=A5=E4=B8=BB=E5=88=86?= =?UTF-8?q?=E6=94=AF=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- mock/asyncRoutes.ts | 3 +++ src/components/ReIcon/index.ts | 38 ++++++++++++++++++++++++++- src/layout/components/navbar.vue | 9 +++++-- src/layout/components/sidebar/breadCrumb.vue | 7 ++--- src/layout/components/sidebar/sidebarItem.vue | 36 ++++++++++++++++++------- src/layout/components/tag/index.vue | 6 ++++- src/layout/types.ts | 3 +++ src/plugins/element-plus/index.ts | 7 +++-- src/router/index.ts | 16 ++++++----- src/router/modules/error.ts | 3 +++ src/router/modules/externalLink.ts | 2 ++ src/router/modules/home.ts | 2 ++ src/router/modules/remaining.ts | 2 ++ src/utils/i18n.ts | 19 ++++++++++++++ src/utils/storage/index.ts | 2 +- src/utils/storage/responsive.ts | 3 ++- 16 files changed, 132 insertions(+), 26 deletions(-) create mode 100644 src/utils/i18n.ts diff --git a/mock/asyncRoutes.ts b/mock/asyncRoutes.ts index 3136434..6954db3 100644 --- a/mock/asyncRoutes.ts +++ b/mock/asyncRoutes.ts @@ -9,6 +9,7 @@ const permissionRouter = { meta: { title: "message.permission", icon: "Lollipop", + i18n: true, showLink: true, rank: 3 }, @@ -18,6 +19,7 @@ const permissionRouter = { name: "permissionPage", meta: { title: "message.permissionPage", + i18n: true, showLink: true } }, @@ -26,6 +28,7 @@ const permissionRouter = { name: "permissionButton", meta: { title: "message.permissionButton", + i18n: true, showLink: true, authority: [] } diff --git a/src/components/ReIcon/index.ts b/src/components/ReIcon/index.ts index 441416b..41bf519 100644 --- a/src/components/ReIcon/index.ts +++ b/src/components/ReIcon/index.ts @@ -1,5 +1,7 @@ -import { App } from "vue"; +import { App, defineComponent } from "vue"; import icon from "./src/Icon.vue"; +import { FontAwesomeIcon } from "@fortawesome/vue-fontawesome"; +import { iconComponents } from "/@/plugins/element-plus"; export const Icon = Object.assign(icon, { install(app: App) { @@ -10,3 +12,37 @@ export const Icon = Object.assign(icon, { export default { Icon }; +/** + * find icon component + * @param icon icon图标 + * @returns component + */ +export function findIconReg(icon: string) { + const faReg = /^fa-/; + if (faReg.test(icon)) { + return findIcon(icon.split(faReg)[1]); + } else { + return findIcon(icon, false); + } +} +export function findIcon(icon: String, isFa: Boolean = true) { + if (isFa) { + return defineComponent({ + name: "FaIcon", + data() { + return { icon: icon }; + }, + components: { FontAwesomeIcon }, + template: `` + }); + } else { + const components = iconComponents.filter( + component => component.name === icon + ); + if (components.length > 0) { + return components[0]; + } else { + return null; + } + } +} diff --git a/src/layout/components/navbar.vue b/src/layout/components/navbar.vue index ee1e12e..17da9d3 100644 --- a/src/layout/components/navbar.vue +++ b/src/layout/components/navbar.vue @@ -10,6 +10,7 @@ import { unref, watch, getCurrentInstance } from "vue"; import { deviceDetection } from "/@/utils/deviceDetection"; import screenfull from "../components/screenfull/index.vue"; import globalization from "/@/assets/svg/globalization.svg"; +import { transformI18n } from "/@/utils/i18n"; const instance = getCurrentInstance().appContext.config.globalProperties.$storage; @@ -17,13 +18,17 @@ const pureApp = useAppStoreHook(); const router = useRouter(); const route = useRoute(); let usename = storageSession.getItem("info")?.username; -const { locale, t } = useI18n(); +const { locale } = useI18n(); watch( () => locale.value, () => { //@ts-ignore - document.title = t(unref(route.meta.title)); // 动态title + document.title = transformI18n( + //@ts-ignore + unref(route.meta.title), + unref(route.meta.i18n) + ); // 动态title } ); diff --git a/src/layout/components/sidebar/breadCrumb.vue b/src/layout/components/sidebar/breadCrumb.vue index dbcd686..393b147 100644 --- a/src/layout/components/sidebar/breadCrumb.vue +++ b/src/layout/components/sidebar/breadCrumb.vue @@ -1,6 +1,7 @@