2026-03-26 12:16:01 +08:00
< template >
<!-- 轮播图 -- >
< view v-show = "!dataConfig.isHide" >
< view class = "swipers" :class = "[docConfig?'square':'circular',imgConfig?'':'fillet']" v-if = "imgUrls.length && tabConfig" :style="'padding:0 '+lrConfig+'rpx;margin-top:' + mbConfig +'rpx;'" >
< swiper :style = "'height:'+(imageH+10)+'rpx;'" indicator -dots = " true " :autoplay = "true" :circular = "circular" :interval = "interval" :duration = "duration"
indicator - color = "#E4E4E4" indicator - active - color = "#E93323" : previous - margin = "itemEdge+'rpx'" : next - margin = "itemEdge+'rpx'" : current = "swiperCur"
@ change = "swiperChange" >
< block v-for = "(item,index) in imgUrls" :key="index" >
< swiper-item : class = "{active:index == swiperCur}" >
< navigator : url = 'item.info[1].title' class = 'slide-navigator acea-row row-between-wrapper' hover -class = ' none ' >
< image :src = "item.img" class = "slide-image" mode = "widthFix" > < / image >
< / navigator >
< / swiper-item >
< / block >
< / swiper >
< / view >
< view : style = "'margin-top:' + mbConfig +'rpx;'" v-if = "!tabConfig" >
< navigator :url = "item.info[1].title" hover -class = " none " class = "advert" :class = "imgConfig?'':'fillet'" : style = "'padding:0 '+lrConfig+'rpx;'" v-for = "(item,index) in imgUrls" :key="index" >
< image :src = "item.img" > < / image >
< / navigator >
< / view >
< / view >
< / template >
< script >
export default {
name : 'swiper' ,
props : {
dataConfig : {
type : Object ,
default : ( ) => { }
} ,
isSortType : {
type : String | Number ,
default : 0
}
} ,
data ( ) {
return {
indicatorDots : false ,
circular : true ,
autoplay : true ,
interval : 2500 ,
duration : 500 ,
swiperCur : 0 ,
imgUrls : [ ] ,
docConfig : this . dataConfig . docConfig . type ,
imgConfig : this . dataConfig . imgConfig . type ,
itemEdge : this . dataConfig . itemEdge . val ,
lrConfig : this . dataConfig . lrConfig . val ,
mbConfig : this . dataConfig . mbConfig . val ,
tabConfig : this . dataConfig . tabConfig . tabVal ,
imageH : 0
} ;
} ,
watch : {
imageH ( nVal , oVal ) {
this . imageH = nVal
}
} ,
created ( ) {
this . imgUrls = this . dataConfig . swiperConfig . list
} ,
mounted ( ) {
let that = this ;
uni . getImageInfo ( {
src : that . setDomain ( that . imgUrls [ 0 ] . img ) ,
success : function ( res ) {
that . $set ( that , 'imageH' , res . height ) ;
}
} )
} ,
methods : {
// swiper
swiperChange ( e ) {
this . swiperCur = e . detail . current
} ,
//替换安全域名
setDomain : function ( url ) {
url = url ? url . toString ( ) : '' ;
//本地调试打开,生产请注销
if ( url . indexOf ( "https://" ) > - 1 ) return url ;
else return url . replace ( 'http://' , 'https://' ) ;
} ,
}
}
< / script >
< style lang = "scss" >
. advert {
box - sizing : border - box ;
image {
width : 100 % ;
box - sizing : border - box ;
display : block ;
}
}
. swipers {
position : relative ;
width : 100 % ;
margin : 0 auto ;
border - radius : 10 rpx ;
/* 设置圆角 */
& . fillet {
border - radius : 10 rpx ;
image {
border - radius : 10 rpx ;
}
}
swiper ,
. swiper - item ,
image {
width : 100 % ;
}
image {
transform : scale ( .93 ) ;
transition : all .6 s ease ;
}
swiper - item . active {
image {
transform : scale ( 1 ) ;
}
}
// 圆形指示点
& . circular {
2026-05-03 15:56:26 +08:00
: : v - deep . uni - swiper - dot {
2026-03-26 12:16:01 +08:00
width : 10 rpx ! important ;
height : 10 rpx ! important ;
background : rgba ( 0 , 0 , 0 , .4 ) ! important
}
2026-05-03 15:56:26 +08:00
: : v - deep . uni - swiper - dot - active {
2026-03-26 12:16:01 +08:00
background : # fff ! important
}
}
// 方形指示点
& . square {
2026-05-03 15:56:26 +08:00
: : v - deep . uni - swiper - dot {
2026-03-26 12:16:01 +08:00
width : 20 rpx ! important ;
height : 5 rpx ! important ;
border - radius : 3 rpx ;
background : rgba ( 0 , 0 , 0 , .4 ) ! important
}
2026-05-03 15:56:26 +08:00
: : v - deep . uni - swiper - dot - active {
2026-03-26 12:16:01 +08:00
background : # fff ! important
}
}
}
< / style >