2021-11-24 23:33:06 +08:00

210 lines
4.1 KiB
Vue
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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