| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209 | <template>	<view class="mix-empty" :style="{backgroundColor: backgroundColor}">		<view v-if="type==='cart'" class="cart column center">			<image class="icon" src="/static/empty/cart.png"></image>			<text class="title">{{ hasLogin ? '空空如也' : '先去登录嘛' }}</text>			<text class="text">别忘了买点什么犒赏一下自己哦</text>			<view class="btn center" @click="onCartBtnClick">				<text>{{ hasLogin ? '随便逛逛' : '去登录' }}</text>			</view>		</view>		<view v-else-if="type==='address'" class="address column center">			<image class="icon" src="/static/empty/address.png"></image>			<text class="text">找不到您的收货地址哦,先去添加一个吧~</text>			<view class="btn center" @click="navTo('manage')">				<text class="mix-icon icon-jia2"></text>			</view>		</view>		<view v-else-if="type==='favorite'" class="favorite column center">			<image class="icon" src="/static/empty/favorite.png"></image>			<text class="text">收藏夹空空的,先去逛逛吧~</text>			<view class="btn center" @click="switchTab('/pages/tabbar/home')">				<text>随便逛逛</text>			</view>		</view>		<view v-else class="default column center">			<image class="icon" src="/static/empty/default.png"></image>			<text class="text">{{ text }}</text>		</view>	</view></template><script>	/**	 * 缺省显示	 * @prop text 缺省文字提示	 * @prop type 缺省类型	 * @prop backgroundColor 缺省页面背景色	 */	export default {		computed: {			hasLogin(){				return !!this.$store.getters.hasLogin;			}		},		props: {			text: {				type: String,				default: '暂时没有数据'			},			type: {				type: String,				default: ''			},			backgroundColor: {				type: String,				default: 'rgba(0,0,0,0)'			}		},		methods: {			onCartBtnClick(){				if(this.hasLogin){					uni.switchTab({						url: '/pages/tabbar/home'					})				}else{					this.navTo('/pages/auth/login');				}			},			switchTab(url){				uni.switchTab({					url				})			}		}	}</script><style scoped lang="scss">	.mix-empty{		position: fixed;		left: 0;		right: 0;		top: 0;		bottom: 0;		display: flex;		flex-direction: column;		align-items: center;		animation: show .5s 1;	}	@keyframes show{		from {			opacity: 0;		}		to {			opacity: 1;		}	}	.default{		padding-top: 26vh;		/* #ifdef H5 */		padding-top: 30vh;		/* #endif */				.icon{			width: 460rpx;			height: 342rpx;		}		.text{			margin-top: 10rpx;			font-size: 28rpx;			color: #999;		}	}	.cart{		padding-top: 14vh;		/* #ifdef H5 */		padding-top: 18vh;		/* #endif */				.icon{			width: 320rpx;			height: 320rpx;		}		.title{			margin: 50rpx 0 26rpx;			font-size: 34rpx;			color: #333;		}		.text{			font-size: 28rpx;			color: #aaa;		}		.btn{			width: 320rpx;			height: 80rpx;			margin-top: 80rpx;			text-indent: 2rpx;			letter-spacing: 2rpx;			font-size: 32rpx;			color: #fff;			border-radius: 100rpx;			background: linear-gradient(to bottom right, #ffb2bf, $base-color);		}	}	.address{		padding-top: 6vh;		/* #ifdef H5 */		padding-top: 10vh;		/* #endif */				.icon{			width: 380rpx;			height: 380rpx;		}		.text{			width: 400rpx;			margin-top: 40rpx;			font-size: 30rpx;			color: #999;			text-align: center;			line-height: 1.6;		}		.btn{			position: fixed;			left: 50%;			bottom: 120rpx;			width: 110rpx;			height: 110rpx;			background-color: $base-color;			border-radius: 100rpx;			transform: translateX(-50%);			box-shadow: 2rpx 2rpx 10rpx rgba(255, 83, 111, .5);		}		.icon-jia2{			font-size: 50rpx;			color: #fff;		}	}	.favorite{		padding-top: 6vh;		/* #ifdef H5 */		padding-top: 10vh;		/* #endif */				.icon{			width: 360rpx;			height: 360rpx;		}		.text{			width: 400rpx;			margin-top: 40rpx;			font-size: 30rpx;			color: #999;			text-align: center;			line-height: 1.6;		}		.btn{			width: 320rpx;			height: 80rpx;			margin-top: 40rpx;			text-indent: 2rpx;			letter-spacing: 2rpx;			font-size: 32rpx;			color: #fff;			border-radius: 100rpx;			background: linear-gradient(to bottom right, #ffb2bf, $base-color);		}	}</style>
 |