You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
210 lines
4.0 KiB
210 lines
4.0 KiB
<template>
|
|
<!-- #ifdef H5 -->
|
|
<view class="nav-head-H5" :class="{ 'tp': bgTransparent }">
|
|
<!-- #endif -->
|
|
<!-- #ifdef APP-PLUS -->
|
|
<view class="nav-head" :class="{ 'tp': bgTransparent }">
|
|
<!-- #endif -->
|
|
<image src="../../static/public/back.png" mode="aspectFit" class="back" @tap="back()" v-if="showBack"></image>
|
|
<slot name="left"></slot>
|
|
<slot></slot>
|
|
<slot name="middle"></slot>
|
|
<slot name="right"></slot>
|
|
<view class="languageBtn" v-if="showLang" @click.stop="languageShow = true">
|
|
{{ langTrue }}
|
|
</view>
|
|
<!-- popups弹窗 -->
|
|
<u-overlay :show="languageShow" @click="languageShow = false" :opacity="0">
|
|
<language-popups v-model="languageShow" :popData="languageData" @tapPopup="tapPopup">
|
|
</language-popups>
|
|
</u-overlay>
|
|
|
|
</view>
|
|
</template>
|
|
|
|
<script>
|
|
const COMPONENT_NAME = 'navigation'
|
|
import languageData from '@/utils/language/config'
|
|
|
|
export default {
|
|
name: COMPONENT_NAME,
|
|
props: {
|
|
showBack: { // 是否显示返回按钮
|
|
type: Boolean,
|
|
default() {
|
|
return true
|
|
}
|
|
},
|
|
bgTransparent: { // 背景是否透明
|
|
type: Boolean,
|
|
default() {
|
|
return false
|
|
}
|
|
},
|
|
bgnum: {
|
|
type: Boolean,
|
|
default() {
|
|
return false
|
|
}
|
|
},
|
|
showLang: { // 是否显示返回按钮
|
|
type: Boolean,
|
|
default() {
|
|
return false
|
|
}
|
|
},
|
|
},
|
|
data() {
|
|
return {
|
|
langTrue: languageData[0].title || 'English',
|
|
languageData,
|
|
languageShow: false,
|
|
}
|
|
},
|
|
computed: {
|
|
|
|
},
|
|
mounted() {
|
|
if(this.showLang){
|
|
if (uni.getStorageSync('langTrue')) {
|
|
this.langTrue = uni.getStorageSync('langTrue')
|
|
}
|
|
}
|
|
|
|
},
|
|
methods: {
|
|
// 切换语言
|
|
tapPopup(e) {
|
|
this._i18n.locale = e.language
|
|
this.$store.commit('setLanguage', e.language)
|
|
this.langTrue = e.title
|
|
uni.setStorageSync('langTrue', e.title)
|
|
// uni.redirectTo({
|
|
// url: '/pages/home/index'
|
|
// })
|
|
uni.reLaunch({
|
|
url: '/pages/login/register'
|
|
})
|
|
},
|
|
back() {
|
|
|
|
// #ifdef H5
|
|
history.back()
|
|
// #endif
|
|
|
|
// #ifdef APP-PLUS
|
|
uni.navigateBack()
|
|
// #endif
|
|
}
|
|
},
|
|
}
|
|
</script>
|
|
|
|
<style scoped lang="scss">
|
|
.item {
|
|
font-size: 28rpx;
|
|
text-align: center;
|
|
width: 234rpx;
|
|
line-height: 60rpx;
|
|
}
|
|
.languageBtn {
|
|
display: inline-block;
|
|
box-sizing: border-box;
|
|
width: 180rpx;
|
|
position: absolute;
|
|
right: 0rpx;;
|
|
margin: 38rpx 48rpx 0 0;
|
|
font-size: 24rpx;
|
|
height: 60rpx;
|
|
line-height: 36rpx;
|
|
text-align: center;
|
|
padding-left: 12rpx;
|
|
|
|
&::before {
|
|
display: block;
|
|
position: absolute;
|
|
content: '';
|
|
background-image: url(../../static/home/map.png);
|
|
background-repeat: no-repeat;
|
|
background-size: 36rpx;
|
|
width: 36rpx;
|
|
height: 36rpx;
|
|
top: 0rpx;
|
|
left: 0rpx;
|
|
}
|
|
|
|
&::after {
|
|
display: block;
|
|
position: absolute;
|
|
content: '';
|
|
background-image: url(../../static/home/pull-down.png);
|
|
background-repeat: no-repeat;
|
|
background-size: 24rpx;
|
|
width: 24rpx;
|
|
height: 24rpx;
|
|
top: 12rpx;
|
|
right: 0rpx;
|
|
}
|
|
|
|
|
|
|
|
}
|
|
.nav-head-H5{
|
|
overflow: hidden;
|
|
position: fixed;
|
|
top: 0rpx;
|
|
height: 112rpx;
|
|
// background-color: #fafafa;
|
|
// background-color: #fff;
|
|
text-align: center;
|
|
font-weight: 700;
|
|
font-size: 36rpx;
|
|
color: #fff;
|
|
// padding: 40rpx 16rpx;
|
|
display: flex;
|
|
justify-content: center;
|
|
align-items: center;
|
|
width: 100%;
|
|
background-color: #15141F;
|
|
z-index: 8;
|
|
border-bottom: 4rpx solid #323045;
|
|
|
|
&.tp {
|
|
background-color: transparent;
|
|
border: none;
|
|
}
|
|
}
|
|
.nav-head {
|
|
overflow: hidden;
|
|
position: fixed;
|
|
top: 0rpx;
|
|
height: 112rpx;
|
|
// background-color: #fafafa;
|
|
// background-color: #fff;
|
|
text-align: center;
|
|
font-weight: 700;
|
|
font-size: 36rpx;
|
|
color: #fff;
|
|
// padding: 40rpx 16rpx;
|
|
padding-top: 88rpx;
|
|
display: flex;
|
|
justify-content: center;
|
|
align-items: center;
|
|
width: 100%;
|
|
background-color: #15141F;
|
|
z-index: 8;
|
|
border-bottom: 4rpx solid #323045;
|
|
|
|
&.tp {
|
|
background-color: transparent;
|
|
border: none;
|
|
}
|
|
}
|
|
|
|
.back {
|
|
width: 80rpx;
|
|
height: 80rpx;
|
|
position: absolute;
|
|
left: 36rpx;
|
|
}
|
|
</style>
|
|
|