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.
150 lines
3.3 KiB
150 lines
3.3 KiB
<!-- template只能有一个顶级标签,语法需要改成vue的语法来写 -->
|
|
<template>
|
|
<view class="index-banner" :style="{marginBottom: meta.margin_bottom + 'px',background: meta.background_color}" v-if="bannerData && bannerData.length">
|
|
<view class="banner-title" v-if="bannerTitle && show">
|
|
<span>{{ bannerTitle }}</span>
|
|
<span data-src="/pages/index/microPages/microPages?id=brand&name=brand" @tap="_jumpImg">
|
|
更多
|
|
<text class="iconfont icon-gengduo"></text>
|
|
</span>
|
|
</view>
|
|
<view class="banner">
|
|
<view class="top-image">
|
|
<swiper
|
|
:style="
|
|
'height: ' +
|
|
imgHeight +
|
|
'rpx; padding-left: ' +
|
|
meta.padding_left +
|
|
'px; padding-right: ' +
|
|
meta.padding_right +
|
|
'px; padding-bottom: ' +
|
|
meta.padding_bottom +
|
|
'px; '
|
|
"
|
|
indicator-dots="true"
|
|
autoplay="true"
|
|
circular="true"
|
|
indicator-active-color="#186c6b"
|
|
>
|
|
<swiper-item v-for="(item, index) in bannerData" :key="index">
|
|
<image mode="widthFix" :src="item.image" :data-src="item.link" class="slide-image" @load="_imgLoad" @tap="_jumpImg"></image>
|
|
</swiper-item>
|
|
</swiper>
|
|
</view>
|
|
</view>
|
|
</view>
|
|
</template>
|
|
|
|
<script>
|
|
export default {
|
|
// 对应data
|
|
data() {
|
|
return {
|
|
imgHeight: 900
|
|
};
|
|
},
|
|
options: {
|
|
addGlobalClass: true,
|
|
},
|
|
// 对应properties里面的字段
|
|
props: {
|
|
//轮播图数据
|
|
bannerData: {
|
|
type: Array,
|
|
value: ''
|
|
},
|
|
screenWidth: {
|
|
type: String,
|
|
value: ''
|
|
},
|
|
bannerTitle: {
|
|
type: String,
|
|
value: ''
|
|
},
|
|
show: {
|
|
type: Number,
|
|
value: ''
|
|
},
|
|
meta: {
|
|
type: Object,
|
|
value: ""
|
|
}
|
|
},
|
|
// 对应methods
|
|
methods: {
|
|
//内部方法建议以下划线开头
|
|
_imgLoad(e) {
|
|
return; // PS 不执行自动高
|
|
var height = e.detail.height;
|
|
var width = e.detail.width;
|
|
var ratio = width / height;
|
|
var screenWidth = this.screenWidth;
|
|
if(this.meta && this.meta.padding_left){
|
|
this.imgHeight = screenWidth / ratio - this.meta.padding_left
|
|
} else{
|
|
this.imgHeight = screenWidth / ratio
|
|
}
|
|
|
|
},
|
|
_jumpImg(e) {
|
|
var src = e.currentTarget.dataset.src;
|
|
if (!src || src == 'uto_miniprogram') return;
|
|
wx.navigateTo({
|
|
url: src,
|
|
fail: err => {
|
|
wx.switchTab({
|
|
url: src
|
|
});
|
|
}
|
|
});
|
|
},
|
|
},
|
|
};
|
|
</script>
|
|
|
|
<!-- 复制之前的less放进来就可以 -->
|
|
<style lang="less" scoped>
|
|
.index-banner{
|
|
// height: 900rpx;
|
|
//margin-bottom: 10px;
|
|
.banner-title{
|
|
padding: 10px 15px 10px 15px;
|
|
display: flex;
|
|
justify-content: space-between;
|
|
color: #000;
|
|
align-items: center;
|
|
background: #FFFFFF;
|
|
span:nth-child(1) {
|
|
font-size: 24px;
|
|
font-weight: bold;
|
|
line-height: 33px;
|
|
display: inline-block;
|
|
//padding-left: 6px;
|
|
//border-left: 4px solid #E7031C;
|
|
}
|
|
|
|
span:nth-child(2) {
|
|
font-size: 12px;
|
|
display: flex;
|
|
align-items: center;
|
|
text{
|
|
font-size: 15px;
|
|
font-weight: 700;
|
|
margin-left: 5px;
|
|
}
|
|
}
|
|
}
|
|
.banner {
|
|
background: #FFFFFF;
|
|
height: 100%;
|
|
image {
|
|
width: 100%;
|
|
height: 100% !important;
|
|
object-fit: cover;
|
|
vertical-align: middle !important;
|
|
}
|
|
}
|
|
|
|
}
|
|
</style>
|