topWindow.vue 4.16 KB
<template>
	<view>
		<b-navbar toggleable="lg" type="dark" class="b-navbar">
			<b-navbar-brand :title="$t('hdk.gohome')" href="/mobile">
				<img src="@/static/hdk-top-logo.png" width="63px" height="32px" style="margin-left: 10px;" alt="Kitten">
			</b-navbar-brand>
			<b-navbar-toggle target="nav-collapse"></b-navbar-toggle>
			<b-collapse id="nav-collapse" is-nav class="collapseR">
				<b-navbar-nav>
					<b-nav-item v-show="!isHome" @click="handleClick('productInformation')"
						:class="{ 'activeCSS': selectedNavItem === 'productInformation' }">
						{{$t('hdk.productInformation')}}
					</b-nav-item>
					<b-nav-item v-show="!isHome" @click="handleClick('inspectionInformation')"
						:class="{ 'activeCSS': selectedNavItem === 'inspectionInformation' }">
						{{$t('hdk.inspectionInformation')}}
					</b-nav-item>
					<b-nav-item v-show="!isHome" @click="handleClick('attachmentInformation')"
						:class="{ 'activeCSS': selectedNavItem === 'attachmentInformation' }">
						{{$t('hdk.attachmentInformation')}}
					</b-nav-item>
					<b-nav-item-dropdown :text="selectedLanguage" right>
						<template #button-content>
								<img src="@/static/images/icon/language.png" width="17px" height="17px"
									alt="Kitten" style="margin:2px 2px 5px 2px;">
								<text>{{selectedLanguage}}</text>
						</template>
						<b-dropdown-item href="#" @click="changeLanguage('en')">{{$t('locale.en')}}
						</b-dropdown-item>
						<b-dropdown-item href="#" @click="changeLanguage('zh-hans')">{{$t('locale.zh-hans')}}
						</b-dropdown-item>
					</b-nav-item-dropdown>
				</b-navbar-nav>
			</b-collapse>
		</b-navbar>
	</view>
</template>

<script>
	export default {
		data() {
			return {
				selectedLanguage: this.$t('index.language'),
				selectedNavItem: 'productInformation'
			}
		},
		props: {
			isHome: {
				type: Boolean,
				default: true
			},
		},
		mounted() {
			var url = window.location.href;
			var lang = this.getQueryString('lang');
			console.log("地址携带语种", lang);
			if (lang === "zh") {
				this.$i18n.locale = 'zh-Hans';
				uni.setLocale('zh-Hans');
				this.selectedLanguage = `${this.$t('index.language')}:${this.$t('locale.zh-hans')}`;
			} else if (lang === "en") {
				this.$i18n.locale = 'en';
				uni.setLocale('en');
				this.selectedLanguage = `${this.$t('index.language')}:${this.$t('locale.en')}`;
			} else {
				let Localelang = 'en';
				console.log("本地语言", Localelang);
				this.selectedLanguage = Localelang == 'en' ? `${this.$t('index.language')}:${this.$t('locale.en')}` :
					`${this.$t('index.language')}:${this.$t('locale.zh-hans')}`
			}
		},
		methods: {
			getQueryString(key) {
				const url = new URL(decodeURIComponent(location.href));
				return url.searchParams.get(key);
			},
			handleClick(item) {
				this.selectedNavItem = item;
				this.$emit('item-click', item);
			},
			changeLanguage(locale) {
				console.log('切换语言为:', locale);
				// 更新选择的语言
				if (locale === 'en') {
					this.$i18n.locale = 'en';
					uni.setLocale('en');
					this.selectedLanguage = `${this.$t('index.language')}:${this.$t('locale.en')}`;
				} else if (locale === 'zh-hans') {
					this.$i18n.locale = 'zh-Hans';
					uni.setLocale('zh-Hans');
					this.selectedLanguage = `${this.$t('index.language')}:${this.$t('locale.zh-hans')}`;
				}
			}
		}
	}
</script>

<style scoped lang="scss">
	.uni-top-window {
		padding: 0 15px;
		display: flex;
		flex-direction: row;
		justify-content: space-between;
		align-items: center;
		box-sizing: border-box;
		border-bottom: 1px solid #e1e1e1;
		background-color: #00AEAA;
		color: #333;
	}

	.b-navbar {
		width: 100vw;
		background-color: #00AEAA;
		display: flex;
	}

	/* PC端样式 */
	@media screen and (min-width: 768px) {
		.b-navbar {
			padding: 0 10%;
			height: 50px;
		}

		.navbar-nav {
			height: 100%;
		}

		.nav-item {
			padding: 0 20px;
		}

		.collapseR {
			width: 100%;
			height: 100%;
			line-height: 30px !important;
			justify-content: flex-end;
		}
	}

	/* 移动端样式 */
	@media screen and (max-width: 767px) {
		.nav-item {
			padding-left: 10px;
		}
	}

	.activeCSS {
		.nav-link {
			color: #000;
		}

		background: #fff;
	}



	.b-navCss {
		color: #fff;
	}
</style>