|
@@ -15,10 +15,10 @@
|
|
<div
|
|
<div
|
|
v-show="!deviceDetection()"
|
|
v-show="!deviceDetection()"
|
|
class="inter"
|
|
class="inter"
|
|
- :title="langs ? '中文' : 'English'"
|
|
|
|
|
|
+ :title="currentLocale ? '中文' : 'English'"
|
|
@click="toggleLang"
|
|
@click="toggleLang"
|
|
>
|
|
>
|
|
- <img :src="langs ? ch : en" />
|
|
|
|
|
|
+ <img :src="currentLocale ? ch : en" />
|
|
</div>
|
|
</div>
|
|
<i
|
|
<i
|
|
class="el-icon-setting hsset"
|
|
class="el-icon-setting hsset"
|
|
@@ -33,9 +33,9 @@
|
|
</span>
|
|
</span>
|
|
<template #dropdown>
|
|
<template #dropdown>
|
|
<el-dropdown-menu>
|
|
<el-dropdown-menu>
|
|
- <el-dropdown-item icon="el-icon-switch-button" @click="logout">{{
|
|
|
|
- $t("message.hsLoginOut")
|
|
|
|
- }}</el-dropdown-item>
|
|
|
|
|
|
+ <el-dropdown-item icon="el-icon-switch-button" @click="logout">
|
|
|
|
+ {{ $t("message.hsLoginOut") }}
|
|
|
|
+ </el-dropdown-item>
|
|
</el-dropdown-menu>
|
|
</el-dropdown-menu>
|
|
</template>
|
|
</template>
|
|
</el-dropdown>
|
|
</el-dropdown>
|
|
@@ -44,7 +44,13 @@
|
|
</template>
|
|
</template>
|
|
|
|
|
|
<script lang="ts">
|
|
<script lang="ts">
|
|
-import { ref, defineComponent, onMounted, unref, watch } from "vue";
|
|
|
|
|
|
+import {
|
|
|
|
+ defineComponent,
|
|
|
|
+ onMounted,
|
|
|
|
+ unref,
|
|
|
|
+ watch,
|
|
|
|
+ getCurrentInstance
|
|
|
|
+} from "vue";
|
|
import Breadcrumb from "/@/components/ReBreadCrumb";
|
|
import Breadcrumb from "/@/components/ReBreadCrumb";
|
|
import Hamburger from "/@/components/ReHamBurger";
|
|
import Hamburger from "/@/components/ReHamBurger";
|
|
import screenfull from "../components/screenfull/index.vue";
|
|
import screenfull from "../components/screenfull/index.vue";
|
|
@@ -58,10 +64,6 @@ import { emitter } from "/@/utils/mitt";
|
|
import { deviceDetection } from "/@/utils/deviceDetection";
|
|
import { deviceDetection } from "/@/utils/deviceDetection";
|
|
import { useI18n } from "vue-i18n";
|
|
import { useI18n } from "vue-i18n";
|
|
|
|
|
|
-import ElementLocale from "element-plus/lib/locale";
|
|
|
|
-import enLocale from "element-plus/lib/locale/lang/en";
|
|
|
|
-import zhLocale from "element-plus/lib/locale/lang/zh-cn";
|
|
|
|
-
|
|
|
|
export default defineComponent({
|
|
export default defineComponent({
|
|
name: "Navbar",
|
|
name: "Navbar",
|
|
components: {
|
|
components: {
|
|
@@ -69,9 +71,25 @@ export default defineComponent({
|
|
Hamburger,
|
|
Hamburger,
|
|
screenfull
|
|
screenfull
|
|
},
|
|
},
|
|
|
|
+ computed: {
|
|
|
|
+ // eslint-disable-next-line vue/return-in-computed-property
|
|
|
|
+ currentLocale() {
|
|
|
|
+ if (!this.$storage.locale) {
|
|
|
|
+ // eslint-disable-next-line
|
|
|
|
+ this.$storage.locale = { locale: "zh" }
|
|
|
|
+ useI18n().locale.value = "zh";
|
|
|
|
+ }
|
|
|
|
+ switch (this.$storage.locale?.locale) {
|
|
|
|
+ case "zh":
|
|
|
|
+ return true;
|
|
|
|
+ case "en":
|
|
|
|
+ return false;
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ },
|
|
setup() {
|
|
setup() {
|
|
- let langs = ref(true);
|
|
|
|
-
|
|
|
|
|
|
+ // eslint-disable-next-line no-unused-vars
|
|
|
|
+ let vm: any;
|
|
const pureApp = useAppStoreHook();
|
|
const pureApp = useAppStoreHook();
|
|
const router = useRouter();
|
|
const router = useRouter();
|
|
const route = useRoute();
|
|
const route = useRoute();
|
|
@@ -82,18 +100,20 @@ export default defineComponent({
|
|
|
|
|
|
// 国际化语言切换
|
|
// 国际化语言切换
|
|
const toggleLang = (): void => {
|
|
const toggleLang = (): void => {
|
|
- langs.value = !langs.value;
|
|
|
|
- if (langs.value) {
|
|
|
|
- locale.value = "zh";
|
|
|
|
- ElementLocale.use(zhLocale);
|
|
|
|
- } else {
|
|
|
|
- locale.value = "en";
|
|
|
|
- ElementLocale.use(enLocale);
|
|
|
|
|
|
+ switch (vm.locale.locale) {
|
|
|
|
+ case "zh":
|
|
|
|
+ vm.locale = { locale: "en" };
|
|
|
|
+ locale.value = "en";
|
|
|
|
+ break;
|
|
|
|
+ case "en":
|
|
|
|
+ vm.locale = { locale: "zh" };
|
|
|
|
+ locale.value = "zh";
|
|
|
|
+ break;
|
|
}
|
|
}
|
|
};
|
|
};
|
|
|
|
|
|
watch(
|
|
watch(
|
|
- () => langs.value,
|
|
|
|
|
|
+ () => locale.value,
|
|
() => {
|
|
() => {
|
|
//@ts-ignore
|
|
//@ts-ignore
|
|
document.title = t(unref(route.meta.title)); // 动态title
|
|
document.title = t(unref(route.meta.title)); // 动态title
|
|
@@ -115,6 +135,8 @@ export default defineComponent({
|
|
}
|
|
}
|
|
|
|
|
|
onMounted(() => {
|
|
onMounted(() => {
|
|
|
|
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
|
|
+ vm = getCurrentInstance().appContext.config.globalProperties.$storage;
|
|
document
|
|
document
|
|
.querySelector(".el-dropdown__popper")
|
|
.querySelector(".el-dropdown__popper")
|
|
?.setAttribute("class", "resetTop");
|
|
?.setAttribute("class", "resetTop");
|
|
@@ -126,7 +148,6 @@ export default defineComponent({
|
|
return {
|
|
return {
|
|
pureApp,
|
|
pureApp,
|
|
toggleSideBar,
|
|
toggleSideBar,
|
|
- langs,
|
|
|
|
usename,
|
|
usename,
|
|
toggleLang,
|
|
toggleLang,
|
|
logout,
|
|
logout,
|