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.
257 lines
6.3 KiB
257 lines
6.3 KiB
<template> |
|
<view class="assess_card_container"> |
|
<view @click="isShowDetailsFn(item,index)" v-for="(item,index) in interiorCardData" :key='index' class="'assess_card"> |
|
<view class="flex assess_card_content" :class="item.isShowDetails? 'assess_card_content_select' : ''"> |
|
<image v-if="item.isShowDetails" class="assess_card_content_select_img" :src="hotImg"></image> |
|
<view class="assess_card_content_left flex"> |
|
<view class="assess_card_content_left_icon"> |
|
<image style="width: 70rpx;height: 70rpx;" :src="imgURL+item.icon" ></image> |
|
</view> |
|
<view class="assess_card_content_left_content"> |
|
<view class="assess_card_content_left_content_label">{{item.label}}</view> |
|
<view class="assess_card_content_left_content_tip">{{item.tip}}</view> |
|
</view> |
|
</view> |
|
<view class="assess_card_content_right"> |
|
<view class="assess_card_content_right_price"> |
|
¥{{Number(item.price).toFixed(2)}} |
|
</view> |
|
<view class="assess_card_content_right_oldPrice"> |
|
¥{{Number(item.oldPrice).toFixed(2)}} |
|
</view> |
|
</view> |
|
</view> |
|
<view :style="{maxHeight:item.isShowDetails?'100vh':'0px'}" class="assess_card_details"> |
|
<view class="assess_card_details_item" v-for="(detailsItem,detailsIndex) in item.details" :key='detailsIndex'> |
|
{{detailsItem}} |
|
</view> |
|
</view> |
|
</view> |
|
</view> |
|
</template> |
|
|
|
<script> |
|
export default { |
|
props:{ |
|
assessCardData:{ |
|
type:Array, |
|
default:()=>[] |
|
} |
|
}, |
|
data() { |
|
return { |
|
setTimeouts:null, |
|
imgURL:this.global.newImgURL, |
|
hotImg:require('../static/img/hot.png'), |
|
interiorCardData: [ |
|
// { |
|
// label: '评分 + 改善建议', |
|
// tip: '组合评估', |
|
// icon: '', |
|
// price: '8.88', |
|
// oldPrice: '12.88', |
|
// details: ['驾驶员车主随时随地查询', '驾驶员车主提前获得改善时间', '知晓详细的评分影响因素及针对性改善建议'], |
|
// isShowDetails: true |
|
// }, |
|
// { |
|
// label: '评分', |
|
// tip: '单独评估', |
|
// icon: '', |
|
// price: '8.88', |
|
// oldPrice: '12.88', |
|
// details: ['驾驶员车主随时随地查询', '驾驶员车主提前获得改善时间', '知晓详细的评分影响因素及针对性改善建议'], |
|
// isShowDetails: false |
|
// }, |
|
// { |
|
// label: '改善建议', |
|
// tip: '单独评估', |
|
// icon: '', |
|
// price: '8.88', |
|
// oldPrice: '12.88', |
|
// details: ['驾驶员车主随时随地查询', '驾驶员车主提前获得改善时间', '知晓详细的评分影响因素及针对性改善建议'], |
|
// isShowDetails: false |
|
// } |
|
] |
|
} |
|
}, |
|
created() { |
|
this.initData(); |
|
this.$emit('productSelect',this.interiorCardData[0]); |
|
console.log(this.interiorCardData,'this.interiorCardData') |
|
}, |
|
methods: { |
|
initData(){ |
|
if(this.assessCardData){ |
|
const productTypefilter = function(e){ |
|
switch(e){ |
|
case 'SA': |
|
return { |
|
label:'评分+改善建议', |
|
tip:'组合评估', |
|
icon:'zjplay1.png' |
|
} |
|
case 'S': |
|
return { |
|
label:'综合分数', |
|
tip:'单独评估', |
|
icon:'zjplay2.png' |
|
} |
|
case 'A': |
|
return { |
|
label:'改善建议', |
|
tip:'单独评估', |
|
icon:'zjplay3.png' |
|
} |
|
default : |
|
return '----' |
|
} |
|
} |
|
this.assessCardData.forEach((item,index)=>{ |
|
const productType = productTypefilter(item.productType) |
|
this.interiorCardData.push({ |
|
isShowDetails: index==0?true:false, |
|
...productType, |
|
price:item.productRealPrice||'--', |
|
oldPrice:item.productOldPrice||'--', |
|
details:item.productIntroduces||[], |
|
...item |
|
}) |
|
}) |
|
} |
|
}, |
|
isShowDetailsFn(item,index){ |
|
console.log(this.setTimeouts) |
|
if(!this.setTimeouts){ |
|
this.interiorCardData.forEach((assessCardDataItem,assessCardDataIndex)=>{ |
|
if(index!==assessCardDataIndex){ |
|
assessCardDataItem.isShowDetails = false; |
|
}else{ |
|
this.setTimeouts = setTimeout(()=>{ |
|
this.$emit('productSelect',this.interiorCardData[index]); |
|
this.interiorCardData[index].isShowDetails = true; |
|
this.setTimeouts = null |
|
},500) |
|
} |
|
}); |
|
} |
|
|
|
|
|
} |
|
} |
|
} |
|
</script> |
|
|
|
<style> |
|
.assess_card_content_left_icon{ |
|
height: 100%; |
|
display: flex; |
|
align-items: center; |
|
margin-right: 20rpx; |
|
} |
|
.assess_card_details_item:last-child{ |
|
margin-bottom: 20rpx; |
|
} |
|
.assess_card_details_item:first-child{ |
|
margin-top: 20rpx; |
|
} |
|
.assess_card_details_item{ |
|
font-size: 32rpx; |
|
line-height: 50rpx; |
|
|
|
} |
|
.assess_card_content_right_price{ |
|
font-size: 40rpx; |
|
font-weight: 600; |
|
margin-bottom: 5rpx; |
|
color: #EC4545; |
|
} |
|
.assess_card_content_right_oldPrice{ |
|
color: #BBBBBB; |
|
font-size: 32rpx; |
|
text-decoration: line-through; |
|
} |
|
.assess_card_content_left_content_tip{ |
|
font-size: 32rpx; |
|
} |
|
.assess_card_content_left_content_label{ |
|
font-size: 40rpx; |
|
font-weight: 600; |
|
margin-bottom: 5rpx; |
|
} |
|
.assess_card_content_select_img{ |
|
position: absolute; |
|
width: 68rpx; |
|
height: 76rpx; |
|
left: -34rpx; |
|
top: -38rpx; |
|
} |
|
.assess_card_content_left{ |
|
/* background-color: #007AFF; */ |
|
} |
|
.flexShrink{ |
|
flex-shrink: 1; |
|
} |
|
/* .flexGrow{ |
|
flex: 1; |
|
} */ |
|
.assess_card_details{ |
|
/* box-sizing: border-box; */ |
|
margin: 0 68rpx; |
|
max-height: 0px; |
|
transition: max-height .5s; |
|
overflow: hidden !important; |
|
} |
|
.assess_card_content_right{ |
|
width: 30%; |
|
height: 100%; |
|
text-align: right; |
|
} |
|
.assess_card_content_left{ |
|
width: 70%; |
|
height: 100%; |
|
} |
|
.assess_card_content_select{ |
|
border: 10rpx solid rgba(255, 103, 0, 0.5); |
|
padding: 30rpx 30rpx !important; |
|
} |
|
.assess_card_content{ |
|
width: 100%; |
|
height: 190rpx; |
|
border-radius: 20px; |
|
top: 0; |
|
left: 0; |
|
right: 0; |
|
padding: 40rpx 40rpx; |
|
box-sizing: border-box; |
|
background-color: #FFFFFF; |
|
position: relative; |
|
} |
|
.assess_card_container{ |
|
width: 100%; |
|
} |
|
.assess_card:last-child{ |
|
margin-bottom: 0px; |
|
} |
|
.select_assess_card{ |
|
max-height: 100vh; |
|
min-height: 190rpx; |
|
border-radius: 20px; |
|
background: #FFFFFF; |
|
margin-bottom: 40rpx; |
|
position: relative; |
|
color: #FF6700; |
|
/* transition: max-height 2s; */ |
|
/* overflow: hidden; */ |
|
} |
|
.assess_card { |
|
min-height: 190rpx; |
|
/* max-height: 190rpx; */ |
|
width: 100%; |
|
border-radius: 20px; |
|
background: #FFFFFF; |
|
margin-bottom: 40rpx; |
|
position: relative; |
|
transition: min-height .5s; |
|
color: #FF6700; |
|
} |
|
</style>
|
|
|