添加语言切换组件到多个视图
This commit is contained in:
parent
e15656de02
commit
83958e7538
@ -12,8 +12,8 @@ import { useHome } from "@/store/home/index.js";
|
|||||||
import { useI18n } from "vue-i18n";
|
import { useI18n } from "vue-i18n";
|
||||||
import { useTransitionComposable } from "@/composables/transition-composable";
|
import { useTransitionComposable } from "@/composables/transition-composable";
|
||||||
import { useRouter } from "vue-router";
|
import { useRouter } from "vue-router";
|
||||||
import { NDivider } from "naive-ui";
|
import { NDivider, NPopselect } from "naive-ui";
|
||||||
|
import { useLanguage } from "@/utils/changeLanguage.js";
|
||||||
// 注册 ScrollTrigger 插件
|
// 注册 ScrollTrigger 插件
|
||||||
gsap.registerPlugin(ScrollTrigger);
|
gsap.registerPlugin(ScrollTrigger);
|
||||||
const { currentTab } = useHome();
|
const { currentTab } = useHome();
|
||||||
@ -22,7 +22,16 @@ const { transitionState } =
|
|||||||
useTransitionComposable();
|
useTransitionComposable();
|
||||||
const main = ref();
|
const main = ref();
|
||||||
let ctx;
|
let ctx;
|
||||||
const { t } = useI18n();
|
const {
|
||||||
|
languageOptions,
|
||||||
|
currentLanguage,
|
||||||
|
currentLanguageLabel,
|
||||||
|
changeLanguage,
|
||||||
|
initLanguage,
|
||||||
|
currentLang,
|
||||||
|
currentBannerImages,
|
||||||
|
t
|
||||||
|
} = useLanguage();
|
||||||
const handleTabClick = (tab) => {
|
const handleTabClick = (tab) => {
|
||||||
currentTab.value = tab;
|
currentTab.value = tab;
|
||||||
router.push("/" + tab);
|
router.push("/" + tab);
|
||||||
@ -142,6 +151,13 @@ onUnmounted(() => {
|
|||||||
">
|
">
|
||||||
{{ t("home.nav.businessintroduction") }}
|
{{ t("home.nav.businessintroduction") }}
|
||||||
</div>
|
</div>
|
||||||
|
<div class="tab-item">
|
||||||
|
|
||||||
|
<n-popselect v-model:value="currentLanguage" :options="languageOptions" trigger="click"
|
||||||
|
@update:value="changeLanguage">
|
||||||
|
{{ currentLanguageLabel }}
|
||||||
|
</n-popselect>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</header>
|
</header>
|
||||||
<main ref="main" class="height-full">
|
<main ref="main" class="height-full">
|
||||||
|
@ -12,8 +12,8 @@ import { useHome } from "@/store/home/index.js";
|
|||||||
import { useI18n } from "vue-i18n";
|
import { useI18n } from "vue-i18n";
|
||||||
import { useTransitionComposable } from "@/composables/transition-composable";
|
import { useTransitionComposable } from "@/composables/transition-composable";
|
||||||
import { useRouter } from "vue-router";
|
import { useRouter } from "vue-router";
|
||||||
import { NDivider } from "naive-ui";
|
import { NDivider, NPopselect } from "naive-ui";
|
||||||
|
import { useLanguage } from "@/utils/changeLanguage.js";
|
||||||
// 注册 ScrollTrigger 插件
|
// 注册 ScrollTrigger 插件
|
||||||
gsap.registerPlugin(ScrollTrigger);
|
gsap.registerPlugin(ScrollTrigger);
|
||||||
const { currentTab } = useHome();
|
const { currentTab } = useHome();
|
||||||
@ -22,7 +22,16 @@ const { transitionState } =
|
|||||||
useTransitionComposable();
|
useTransitionComposable();
|
||||||
const main = ref();
|
const main = ref();
|
||||||
let ctx;
|
let ctx;
|
||||||
const { t } = useI18n();
|
const {
|
||||||
|
languageOptions,
|
||||||
|
currentLanguage,
|
||||||
|
currentLanguageLabel,
|
||||||
|
changeLanguage,
|
||||||
|
initLanguage,
|
||||||
|
currentLang,
|
||||||
|
currentBannerImages,
|
||||||
|
t
|
||||||
|
} = useLanguage();
|
||||||
const handleTabClick = (tab) => {
|
const handleTabClick = (tab) => {
|
||||||
currentTab.value = tab;
|
currentTab.value = tab;
|
||||||
router.push("/" + tab);
|
router.push("/" + tab);
|
||||||
@ -142,6 +151,13 @@ onUnmounted(() => {
|
|||||||
">
|
">
|
||||||
{{ t("home.nav.businessintroduction") }}
|
{{ t("home.nav.businessintroduction") }}
|
||||||
</div>
|
</div>
|
||||||
|
<div class="tab-item">
|
||||||
|
|
||||||
|
<n-popselect v-model:value="currentLanguage" :options="languageOptions" trigger="click"
|
||||||
|
@update:value="changeLanguage">
|
||||||
|
{{ currentLanguageLabel }}
|
||||||
|
</n-popselect>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</header>
|
</header>
|
||||||
<main ref="main" class="height-full">
|
<main ref="main" class="height-full">
|
||||||
|
@ -9,11 +9,10 @@ import {
|
|||||||
import gsap from "gsap";
|
import gsap from "gsap";
|
||||||
import ScrollTrigger from "gsap/ScrollTrigger";
|
import ScrollTrigger from "gsap/ScrollTrigger";
|
||||||
import { useHome } from "@/store/home/index.js";
|
import { useHome } from "@/store/home/index.js";
|
||||||
import { useI18n } from "vue-i18n";
|
|
||||||
import { useTransitionComposable } from "@/composables/transition-composable";
|
import { useTransitionComposable } from "@/composables/transition-composable";
|
||||||
import { useRouter } from "vue-router";
|
import { useRouter } from "vue-router";
|
||||||
import { NDivider } from "naive-ui";
|
import { NDivider, NPopselect } from "naive-ui";
|
||||||
|
import { useLanguage } from "@/utils/changeLanguage.js";
|
||||||
// 注册 ScrollTrigger 插件
|
// 注册 ScrollTrigger 插件
|
||||||
gsap.registerPlugin(ScrollTrigger);
|
gsap.registerPlugin(ScrollTrigger);
|
||||||
const { currentTab } = useHome();
|
const { currentTab } = useHome();
|
||||||
@ -21,12 +20,20 @@ const router = useRouter();
|
|||||||
const { transitionState } = useTransitionComposable();
|
const { transitionState } = useTransitionComposable();
|
||||||
const main = ref();
|
const main = ref();
|
||||||
let ctx;
|
let ctx;
|
||||||
const { t } = useI18n();
|
|
||||||
const handleTabClick = (tab) => {
|
const handleTabClick = (tab) => {
|
||||||
currentTab.value = tab;
|
currentTab.value = tab;
|
||||||
router.push("/" + tab);
|
router.push("/" + tab);
|
||||||
};
|
};
|
||||||
|
const {
|
||||||
|
languageOptions,
|
||||||
|
currentLanguage,
|
||||||
|
currentLanguageLabel,
|
||||||
|
changeLanguage,
|
||||||
|
initLanguage,
|
||||||
|
currentLang,
|
||||||
|
currentBannerImages,
|
||||||
|
t
|
||||||
|
} = useLanguage();
|
||||||
// 向前滑动
|
// 向前滑动
|
||||||
const handlePrev = () => {
|
const handlePrev = () => {
|
||||||
if (!carouselTrack.value) return;
|
if (!carouselTrack.value) return;
|
||||||
@ -295,6 +302,13 @@ onUnmounted(() => {
|
|||||||
">
|
">
|
||||||
{{ t("home.nav.businessintroduction") }}
|
{{ t("home.nav.businessintroduction") }}
|
||||||
</div>
|
</div>
|
||||||
|
<div class="tab-item">
|
||||||
|
|
||||||
|
<n-popselect v-model:value="currentLanguage" :options="languageOptions" trigger="click"
|
||||||
|
@update:value="changeLanguage">
|
||||||
|
{{ currentLanguageLabel }}
|
||||||
|
</n-popselect>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</header>
|
</header>
|
||||||
<main ref="main" class="height-full">
|
<main ref="main" class="height-full">
|
||||||
|
@ -9,11 +9,10 @@ import {
|
|||||||
import gsap from "gsap";
|
import gsap from "gsap";
|
||||||
import ScrollTrigger from "gsap/ScrollTrigger";
|
import ScrollTrigger from "gsap/ScrollTrigger";
|
||||||
import { useHome } from "@/store/home/index.js";
|
import { useHome } from "@/store/home/index.js";
|
||||||
import { useI18n } from "vue-i18n";
|
|
||||||
import { useTransitionComposable } from "@/composables/transition-composable";
|
import { useTransitionComposable } from "@/composables/transition-composable";
|
||||||
import { useRouter } from "vue-router";
|
import { useRouter } from "vue-router";
|
||||||
import { NDivider } from "naive-ui";
|
import { NDivider, NPopselect } from "naive-ui";
|
||||||
|
import { useLanguage } from "@/utils/changeLanguage.js";
|
||||||
// 注册 ScrollTrigger 插件
|
// 注册 ScrollTrigger 插件
|
||||||
gsap.registerPlugin(ScrollTrigger);
|
gsap.registerPlugin(ScrollTrigger);
|
||||||
const { currentTab } = useHome();
|
const { currentTab } = useHome();
|
||||||
@ -21,12 +20,20 @@ const router = useRouter();
|
|||||||
const { transitionState } = useTransitionComposable();
|
const { transitionState } = useTransitionComposable();
|
||||||
const main = ref();
|
const main = ref();
|
||||||
let ctx;
|
let ctx;
|
||||||
const { t } = useI18n();
|
|
||||||
const handleTabClick = (tab) => {
|
const handleTabClick = (tab) => {
|
||||||
currentTab.value = tab;
|
currentTab.value = tab;
|
||||||
router.push("/" + tab);
|
router.push("/" + tab);
|
||||||
};
|
};
|
||||||
|
const {
|
||||||
|
languageOptions,
|
||||||
|
currentLanguage,
|
||||||
|
currentLanguageLabel,
|
||||||
|
changeLanguage,
|
||||||
|
initLanguage,
|
||||||
|
currentLang,
|
||||||
|
currentBannerImages,
|
||||||
|
t
|
||||||
|
} = useLanguage();
|
||||||
// 向前滑动
|
// 向前滑动
|
||||||
const handlePrev = () => {
|
const handlePrev = () => {
|
||||||
if (!carouselTrack.value) return;
|
if (!carouselTrack.value) return;
|
||||||
@ -295,6 +302,13 @@ onUnmounted(() => {
|
|||||||
">
|
">
|
||||||
{{ t("home.nav.businessintroduction") }}
|
{{ t("home.nav.businessintroduction") }}
|
||||||
</div>
|
</div>
|
||||||
|
<div class="tab-item">
|
||||||
|
|
||||||
|
<n-popselect v-model:value="currentLanguage" :options="languageOptions" trigger="click"
|
||||||
|
@update:value="changeLanguage">
|
||||||
|
{{ currentLanguageLabel }}
|
||||||
|
</n-popselect>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</header>
|
</header>
|
||||||
<main ref="main" class="height-full">
|
<main ref="main" class="height-full">
|
||||||
|
@ -34,6 +34,13 @@
|
|||||||
">
|
">
|
||||||
{{ t("home.nav.businessintroduction") }}
|
{{ t("home.nav.businessintroduction") }}
|
||||||
</div>
|
</div>
|
||||||
|
<div class="tab-item">
|
||||||
|
|
||||||
|
<n-popselect v-model:value="currentLanguage" :options="languageOptions" trigger="click"
|
||||||
|
@update:value="changeLanguage">
|
||||||
|
{{ currentLanguageLabel }}
|
||||||
|
</n-popselect>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</header>
|
</header>
|
||||||
<main class="px-[490px] ">
|
<main class="px-[490px] ">
|
||||||
@ -263,13 +270,23 @@ import {
|
|||||||
onBeforeMount,
|
onBeforeMount,
|
||||||
computed,
|
computed,
|
||||||
} from "vue";
|
} from "vue";
|
||||||
import { NDivider } from 'naive-ui'
|
import { NDivider, NPopselect } from 'naive-ui'
|
||||||
import { useHome } from "@/store/home/index.js";
|
import { useHome } from "@/store/home/index.js";
|
||||||
import { useRoute } from "vue-router";
|
import { useRoute } from "vue-router";
|
||||||
import { useI18n } from "vue-i18n";
|
|
||||||
import { useRouter } from "vue-router";
|
import { useRouter } from "vue-router";
|
||||||
|
import { useLanguage } from "@/utils/changeLanguage.js";
|
||||||
|
const {
|
||||||
|
languageOptions,
|
||||||
|
currentLanguage,
|
||||||
|
currentLanguageLabel,
|
||||||
|
changeLanguage,
|
||||||
|
initLanguage,
|
||||||
|
currentLang,
|
||||||
|
currentBannerImages,
|
||||||
|
t
|
||||||
|
} = useLanguage();
|
||||||
const router = useRouter();
|
const router = useRouter();
|
||||||
const { t } = useI18n();
|
|
||||||
const state = reactive({
|
const state = reactive({
|
||||||
pageTitle: "",
|
pageTitle: "",
|
||||||
});
|
});
|
||||||
|
@ -34,6 +34,13 @@
|
|||||||
">
|
">
|
||||||
{{ t("home.nav.businessintroduction") }}
|
{{ t("home.nav.businessintroduction") }}
|
||||||
</div>
|
</div>
|
||||||
|
<div class="tab-item">
|
||||||
|
|
||||||
|
<n-popselect v-model:value="currentLanguage" :options="languageOptions" trigger="click"
|
||||||
|
@update:value="changeLanguage">
|
||||||
|
{{ currentLanguageLabel }}
|
||||||
|
</n-popselect>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</header>
|
</header>
|
||||||
<main class="px-[490px] ">
|
<main class="px-[490px] ">
|
||||||
@ -263,13 +270,23 @@ import {
|
|||||||
onBeforeMount,
|
onBeforeMount,
|
||||||
computed,
|
computed,
|
||||||
} from "vue";
|
} from "vue";
|
||||||
import { NDivider } from 'naive-ui'
|
import { NDivider, NPopselect } from 'naive-ui'
|
||||||
import { useHome } from "@/store/home/index.js";
|
import { useHome } from "@/store/home/index.js";
|
||||||
import { useRoute } from "vue-router";
|
import { useRoute } from "vue-router";
|
||||||
import { useI18n } from "vue-i18n";
|
|
||||||
import { useRouter } from "vue-router";
|
import { useRouter } from "vue-router";
|
||||||
|
import { useLanguage } from "@/utils/changeLanguage.js";
|
||||||
|
const {
|
||||||
|
languageOptions,
|
||||||
|
currentLanguage,
|
||||||
|
currentLanguageLabel,
|
||||||
|
changeLanguage,
|
||||||
|
initLanguage,
|
||||||
|
currentLang,
|
||||||
|
currentBannerImages,
|
||||||
|
t
|
||||||
|
} = useLanguage();
|
||||||
const router = useRouter();
|
const router = useRouter();
|
||||||
const { t } = useI18n();
|
|
||||||
const state = reactive({
|
const state = reactive({
|
||||||
pageTitle: "",
|
pageTitle: "",
|
||||||
});
|
});
|
||||||
|
Loading…
Reference in New Issue
Block a user