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