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> |