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 @@