122 lines
3.8 KiB
Vue
122 lines
3.8 KiB
Vue
<template>
|
|
<view class="card" @click="onClick" :style="[customStyle]" :data-i="$attrs['data-i']">
|
|
<image class="card-img" mode="aspectFill" :src="src" />
|
|
<view class="text-wrap text-wrap-width" v-if="!!desc">
|
|
<view class="title one-t">{{title}}</view>
|
|
<view class="desc one-t">{{desc}}</view>
|
|
</view>
|
|
<view v-else class="text-wrap-width title more-t">{{title}}</view>
|
|
<image class="card-icon" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAGAAAABgCAMAAADVRocKAAABCFBMVEUAAAC/v7+qqqqZmZmLi6KJnZ2ImZmHlpaGlKGMjJmSkp6Li5eQkJuKlZ+Pj5mOjpeJkpuNjZ6IkJmHj5eLi5uKkpmGjZqJj5uLi5eIjpmIjZiKj5qKj5mJjpiHjJqJjZaGj5iKj5eIjJmKjpqHi5eGjZeIi5eHjZiIi5eHjJiIjpaHjJeIjZiGjJeIjZiGjJaGjJeIi5aGjJeHi5eHi5aHjJeHjJaHjJeGi5eHjJaHjJeGi5aGi5aHjJeHjJaGjJeGjJeHjJaHi5eGi5eHjJaHjJeGjJaGjJeHi5aHjJeHjJeHi5aGjJeHi5aGjJaHi5eGjJaHi5eHjJaGi5eGi5aHjJeGi5aGi5apAvjmAAAAV3RSTlMABAYKCw0PERMUFRYXGBkbHB0eICEjJiksLS8wMjQ1ODk7PD9ATFZXWFlaW1xdXl+Hi6msu7/Dx8vMzs/R0tTV19na3N3f4uTn6evs7e7v8PHy9PX7/P18cCTXAAABEklEQVRo3u2YWU5CQRQFn4qCM4LzhIoDAorzrIgCigiCimf/O/Gj3UIlmJxaQFXSea/T90aRMcYYY4zpG0ZPu9cZMnAi6SsLBjqS9LnJBcqSpC53Sjs/kqSPNaxwGAqtFbrQXKILjQW68DpPF17m6EI9TRdqM3TheZouVCbpQnkcK5RC4T5BF27jdOFqhC5cDtOFixhdOB+iC2cDdOEoggttLrDbk6QW5/+WJB1T/r1e+FAHWT/2q/35scsiF/w3cdZ/R13Y+8H/MMb6Hycgfz74n6ZYfzXJ+mspyF8I/vos68cep0X4eV2EB4SD4H9bZP3vy+yTtL3KjrGddXgQ34BXCVvwMmT7P69zjDHGGGP6gF83lHISOctsKQAAAABJRU5ErkJggg=="></image>
|
|
</view>
|
|
</template>
|
|
|
|
<script>
|
|
export default {
|
|
props: {
|
|
mode: {
|
|
type: Boolean,
|
|
default: false
|
|
},
|
|
src: String,
|
|
title: String,
|
|
desc: String,
|
|
url: String,
|
|
color: String,
|
|
bgcolor: String,
|
|
border: String
|
|
},
|
|
data () {
|
|
return {
|
|
|
|
}
|
|
},
|
|
computed: {
|
|
customStyle () {
|
|
return {
|
|
'background-color': this.bgColor || '#a4d0ff',
|
|
border: this.border || '1px solid #FFF',
|
|
color: this.color || '#000'
|
|
}
|
|
}
|
|
},
|
|
methods: {
|
|
onClick (e) {
|
|
if (this.url && this.url.trim().length > 6 && !this.mode) {
|
|
uni.navigateTo({ url: this.url })
|
|
}
|
|
this.$emit('click', e)
|
|
}
|
|
}
|
|
}
|
|
</script>
|
|
|
|
<style lang="scss">
|
|
.one-t {
|
|
overflow: hidden;
|
|
white-space: nowrap;
|
|
text-overflow: ellipsis;
|
|
transition: all linear 0.2s;
|
|
}
|
|
|
|
.more-t {
|
|
overflow: hidden;
|
|
text-overflow: ellipsis;
|
|
word-break:break-all;
|
|
display: -webkit-box;
|
|
-webkit-line-clamp: 2;
|
|
-webkit-box-orient: vertical;
|
|
transition: all linear 0.2s;
|
|
}
|
|
|
|
.card {
|
|
|
|
width: 80%;
|
|
margin: 10rpx auto;
|
|
max-width: 700rpx;
|
|
max-height: 140rpx;
|
|
|
|
box-sizing: border-box;
|
|
overflow: hidden;
|
|
|
|
display: flex;
|
|
justify-content: space-between;
|
|
align-items: center;
|
|
|
|
padding: 20rpx 0 20rpx 10rpx;
|
|
border-radius: 12rpx;
|
|
|
|
&-img {
|
|
width: 96rpx;
|
|
height: 96rpx;
|
|
border-radius: 12rpx;
|
|
flex: 0 0 96rpx;
|
|
}
|
|
|
|
&-icon {
|
|
width: 30rpx;
|
|
height: 96rpx;
|
|
}
|
|
|
|
.text-wrap {
|
|
|
|
display: flex;
|
|
flex-direction: column;
|
|
justify-content: space-between;
|
|
|
|
&-width {
|
|
width: 72%;
|
|
}
|
|
}
|
|
|
|
.title {
|
|
font-weight: bold;
|
|
font-size: 34rpx;
|
|
line-height: 48rpx;
|
|
}
|
|
|
|
.desc {
|
|
font-size: 27rpx;
|
|
line-height: 37rpx;
|
|
}
|
|
}
|
|
</style> |