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