162 lines
3.4 KiB
Vue
162 lines
3.4 KiB
Vue
|
<template>
|
||
|
<view>
|
||
|
<view :style="'height:'+(nh+th)+'px'">
|
||
|
<view class="top-in" :class="{'gradient':gradient}" :style="{'padding-top':nh+'px','background-color':bgColor}">
|
||
|
<view :style="'height:'+(th)+'px'">
|
||
|
<view v-if="isShow" class="nt-left">
|
||
|
<view class="nl-frame" :style="'height:'+(th)+'px'">
|
||
|
<view class="opa nl-icon iconfont icon-left" v-if="canback || isFromShare" @click="navback"
|
||
|
:style="'color:'+(lwColor?lwColor:'#000')+';font-size:'+lwFont+'upx'"></view>
|
||
|
</view>
|
||
|
</view>
|
||
|
<view v-if="search" class="nt-left">
|
||
|
<view class="nl-frame" :style="'height:'+(th)+'px'">
|
||
|
<image src="http://qn.suqzp.com/displayAFixedImage/search.png" @click="navGosearch"
|
||
|
style="width: 40rpx;height: 40rpx;margin-left: 20rpx;"></image>
|
||
|
</view>
|
||
|
</view>
|
||
|
<view class="nt-right" :style="'line-height:'+th+'px'">
|
||
|
<text class="nr-text" :style="'color:'+(lwColor?lwColor:'#000')+';font-size:'+lwFont+'upx'"
|
||
|
v-if="lwTitle!='true'">{{ lwTitle }}
|
||
|
</text>
|
||
|
</view>
|
||
|
</view>
|
||
|
</view>
|
||
|
</view>
|
||
|
</view>
|
||
|
</template>
|
||
|
|
||
|
<script>
|
||
|
export default {
|
||
|
props: {
|
||
|
gradient: {
|
||
|
type: Boolean,
|
||
|
default: false,
|
||
|
},
|
||
|
lwFont: {
|
||
|
type: String,
|
||
|
default: '',
|
||
|
},
|
||
|
lwTitle: {
|
||
|
type: String,
|
||
|
default: '',
|
||
|
},
|
||
|
|
||
|
isShow: {
|
||
|
type: Boolean,
|
||
|
default: false,
|
||
|
},
|
||
|
search: {
|
||
|
type: Boolean,
|
||
|
default: false,
|
||
|
},
|
||
|
lwColor: {
|
||
|
type: String,
|
||
|
default: '#000',
|
||
|
},
|
||
|
|
||
|
bgColor: {
|
||
|
type: String,
|
||
|
default: '#fff',
|
||
|
},
|
||
|
|
||
|
isDefault: {
|
||
|
type: Boolean,
|
||
|
default: false,
|
||
|
},
|
||
|
},
|
||
|
data() {
|
||
|
return {
|
||
|
nh: 0,
|
||
|
th: 46,
|
||
|
canback: true,
|
||
|
isFromShare: false,
|
||
|
};
|
||
|
},
|
||
|
created() {
|
||
|
//计算顶部导航栏的高度
|
||
|
uni.getSystemInfo({
|
||
|
success: res => {
|
||
|
//导航高度
|
||
|
this.nh = res.statusBarHeight;
|
||
|
}, fail(err) {
|
||
|
console.log(err);
|
||
|
},
|
||
|
});
|
||
|
this.can_back();
|
||
|
this.checkIsFromShare();
|
||
|
},
|
||
|
methods: {
|
||
|
can_back() {
|
||
|
this.canback = (getCurrentPages().length > 1);
|
||
|
},
|
||
|
checkIsFromShare() {
|
||
|
const launchOptions = wx.getLaunchOptionsSync() || {};
|
||
|
if(launchOptions.scene == 1007 || launchOptions.scene == 1008){
|
||
|
this.isFromShare = true
|
||
|
}
|
||
|
},
|
||
|
navGosearch() {
|
||
|
this.$emit('bindSearch');
|
||
|
},
|
||
|
navback() {
|
||
|
if (this.isDefault) {
|
||
|
//自定义返回事件
|
||
|
this.$emit('defaultBack');
|
||
|
} else if(this.canback){
|
||
|
uni.navigateBack({
|
||
|
delta: 1,
|
||
|
});
|
||
|
}else if(this.isFromShare){
|
||
|
uni.redirectTo({url: '/pages/index/tabbar'})
|
||
|
}
|
||
|
},
|
||
|
},
|
||
|
};
|
||
|
</script>
|
||
|
|
||
|
<style lang="scss" scoped>
|
||
|
@import "icon.css";
|
||
|
|
||
|
.top-in {
|
||
|
width: 100%;
|
||
|
box-sizing: border-box;
|
||
|
z-index: 999;
|
||
|
position: fixed;
|
||
|
|
||
|
&.gradient {
|
||
|
background-size: 100% 662rpx;
|
||
|
background: #f9f9f9 linear-gradient(180deg, rgba(54, 141, 255, 0.77) 0%, rgba(125, 182, 255, 0) 36%, rgba(255, 255, 255, 0) 100%) no-repeat fixed !important;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
.nt-left {
|
||
|
position: absolute;
|
||
|
left: 5px;
|
||
|
}
|
||
|
|
||
|
.nl-frame {
|
||
|
display: flex;
|
||
|
align-items: center;
|
||
|
|
||
|
}
|
||
|
|
||
|
.nl-icon {
|
||
|
font-size: 30upx;
|
||
|
margin: 0 10px;
|
||
|
}
|
||
|
|
||
|
.nl-icon:actibe {
|
||
|
opacity: 3;
|
||
|
}
|
||
|
|
||
|
|
||
|
.nt-right {
|
||
|
text-align: center;
|
||
|
}
|
||
|
|
||
|
.nr-text {
|
||
|
font-size: 32upx;
|
||
|
}
|
||
|
</style>
|