156 lines
4.3 KiB
Vue
156 lines
4.3 KiB
Vue
![]() |
<template>
|
|||
|
<!-- 图片魔方 -->
|
|||
|
<view class="pictureCube skeleton-rect" :style="[boxStyle]" v-if="picList.length">
|
|||
|
<view class="grid_box" :style="[gridColumns]" v-if="[0,1,2,4,5].includes(style)">
|
|||
|
<image v-for="(item,index) in picList" :key="index" @click="goDetail(item)"
|
|||
|
:src="item.image" mode="widthFix" :style="{'height':imageH * 2 + 'rpx'}"></image>
|
|||
|
</view>
|
|||
|
<view class="advertItem04 acea-row" v-if="style==3">
|
|||
|
<view class="item" @click="goDetail(picList[0])">
|
|||
|
<image :src="picList[0].image" mode="aspectFill"></image>
|
|||
|
</view>
|
|||
|
<view class="item">
|
|||
|
<view class="pic" @click="goDetail(picList[1])">
|
|||
|
<image :src="picList[1].image" mode="aspectFill"></image>
|
|||
|
</view>
|
|||
|
<view class="pic" @click="goDetail(picList[2])">
|
|||
|
<image :src="picList[2].image" mode="aspectFill"></image>
|
|||
|
</view>
|
|||
|
</view>
|
|||
|
</view>
|
|||
|
</view>
|
|||
|
</template>
|
|||
|
|
|||
|
<script>
|
|||
|
// +----------------------------------------------------------------------
|
|||
|
// | CRMEB [ CRMEB赋能开发者,助力企业发展 ]
|
|||
|
// +----------------------------------------------------------------------
|
|||
|
// | Copyright (c) 2016~2024 https://www.crmeb.com All rights reserved.
|
|||
|
// +----------------------------------------------------------------------
|
|||
|
// | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权
|
|||
|
// +----------------------------------------------------------------------
|
|||
|
// | Author: CRMEB Team <admin@crmeb.com>
|
|||
|
// +----------------------------------------------------------------------
|
|||
|
export default {
|
|||
|
name: 'pictureCube',
|
|||
|
props: {
|
|||
|
dataConfig: {
|
|||
|
type: Object,
|
|||
|
default: () => {}
|
|||
|
},
|
|||
|
},
|
|||
|
data() {
|
|||
|
return {
|
|||
|
picList: this.dataConfig.picStyle.picList,
|
|||
|
style: this.dataConfig.tabConfig.tabVal,
|
|||
|
prConfig: this.dataConfig.lrConfig.val,
|
|||
|
widthC: '',
|
|||
|
imageH: ''
|
|||
|
};
|
|||
|
},
|
|||
|
computed:{
|
|||
|
//最外层盒子的样式
|
|||
|
boxStyle(){
|
|||
|
return {
|
|||
|
borderRadius:this.dataConfig.bgStyle.val * 2 + 'rpx',
|
|||
|
background:`linear-gradient(${this.dataConfig.bgColor.color[0].item}, ${this.dataConfig.bgColor.color[1].item})`,
|
|||
|
margin:this.dataConfig.mbConfig.val * 2+'rpx' + ' ' + this.dataConfig.lrConfig.val * 2+'rpx' + ' ' + 0,
|
|||
|
padding:this.dataConfig.upConfig.val * 2+'rpx' + ' ' + '0' + ' ' + this.dataConfig.downConfig.val * 2+'rpx'
|
|||
|
}
|
|||
|
},
|
|||
|
// style == 5 height: 188rpx;
|
|||
|
//图片魔方排版
|
|||
|
gridColumns(){
|
|||
|
if([1,5].includes(this.dataConfig.tabConfig.tabVal)){
|
|||
|
return {
|
|||
|
gridTemplateColumns:'repeat(2, 1fr)'
|
|||
|
}
|
|||
|
}else if(this.dataConfig.tabConfig.tabVal == 0){
|
|||
|
return {
|
|||
|
gridTemplateColumns:'repeat(1, 1fr)'
|
|||
|
}
|
|||
|
}else if(this.dataConfig.tabConfig.tabVal == 2){
|
|||
|
return {
|
|||
|
gridTemplateColumns:'repeat(3, 1fr)'
|
|||
|
}
|
|||
|
}else if(this.dataConfig.tabConfig.tabVal == 4){
|
|||
|
return {
|
|||
|
gridTemplateColumns:'repeat(4, 1fr)'
|
|||
|
}
|
|||
|
}
|
|||
|
},
|
|||
|
},
|
|||
|
mounted() {
|
|||
|
if (this.picList.length) {
|
|||
|
let that = this;
|
|||
|
this.$nextTick((e) => {
|
|||
|
if ([0,1,5].includes(this.style)) {
|
|||
|
this.widthC = 375
|
|||
|
} else if (this.style == 2) {
|
|||
|
this.widthC = 250
|
|||
|
} else if (this.style == 4) {
|
|||
|
this.widthC = 188
|
|||
|
}
|
|||
|
uni.getImageInfo({
|
|||
|
src: that.setDomain(that.picList[0].image),
|
|||
|
success: (res) => {
|
|||
|
if (res && res.height > 0) {
|
|||
|
let height = res.height * ((that.widthC - that.prConfig * 2) / res
|
|||
|
.width)
|
|||
|
that.$set(that, 'imageH', height);
|
|||
|
} else {
|
|||
|
that.$set(that, 'imageH', (that.widthC - that.prConfig * 2) * 2);
|
|||
|
}
|
|||
|
},
|
|||
|
fail: function(error) {
|
|||
|
that.$set(that, 'imageH', (that.widthC - that.prConfig * 2) * 2);
|
|||
|
}
|
|||
|
})
|
|||
|
})
|
|||
|
}
|
|||
|
},
|
|||
|
methods: {
|
|||
|
//替换安全域名
|
|||
|
setDomain: function(url) {
|
|||
|
url = url ? url.toString() : '';
|
|||
|
//本地调试打开,生产请注销
|
|||
|
if (url.indexOf("https://") > -1) return url;
|
|||
|
else return url.replace('http://', 'https://');
|
|||
|
},
|
|||
|
goDetail(item) {
|
|||
|
this.$util.navigateTo(item.link);
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
</script>
|
|||
|
|
|||
|
<style lang="scss">
|
|||
|
.grid_box{
|
|||
|
display: grid;
|
|||
|
grid-template-rows: auto;
|
|||
|
image{
|
|||
|
width: 100%;
|
|||
|
}
|
|||
|
}
|
|||
|
.pictureCube {
|
|||
|
.advertItem04 {
|
|||
|
width: 100%;
|
|||
|
|
|||
|
.item {
|
|||
|
width: 50%;
|
|||
|
height: 376rpx;
|
|||
|
|
|||
|
.pic {
|
|||
|
width: 100%;
|
|||
|
height: 188rpx;
|
|||
|
}
|
|||
|
|
|||
|
image {
|
|||
|
width: 100%;
|
|||
|
height: 100%;
|
|||
|
display: block;
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
</style>
|