103 lines
2.0 KiB
Vue
103 lines
2.0 KiB
Vue
<template>
|
||
<view
|
||
:class="['address-card', {'address-card--empty': !hasContent}]"
|
||
:style="{'border-radius': borderRadius, 'background-color': backgroundColor}"
|
||
>
|
||
<!-- Sign -->
|
||
<u-icon name="map" size="48" />
|
||
|
||
<!-- Content -->
|
||
<view class="content">
|
||
<!-- 地址信息 -->
|
||
<view v-if="hasContent">
|
||
<view class="bold">
|
||
<slot name="header"></slot>
|
||
</view>
|
||
<view class="m-t-10 lighter">
|
||
<slot name="main"></slot>
|
||
</view>
|
||
<view class="m-t-10 xs muted">
|
||
<slot name="footer"></slot>
|
||
</view>
|
||
</view>
|
||
<!-- 不存在地址 -->
|
||
<view v-else>{{ placeholder }}</view>
|
||
</view>
|
||
|
||
<!-- Action Sign -->
|
||
<u-icon v-if="action" name="arrow-right" size="30" />
|
||
</view>
|
||
</template>
|
||
|
||
<script>
|
||
|
||
/**
|
||
* @description 地址卡片
|
||
* @property {Boolean} name 名称
|
||
* @property {Boolean} action suffix图标 (默认值:true)
|
||
* @property {Boolean} hasContent 是否存在内容 (默认值:false)
|
||
* @property {String} placeholder 提示文字 (默认值:设置收货地址)
|
||
* @property {String} borderRadius 圆角
|
||
* @property {String} backgroundColor 背景色 (默认值:#FFFFFF)
|
||
* @example <address-card :has-content="isEmpty" :action="true" />
|
||
*/
|
||
export default {
|
||
name: 'AddressCard',
|
||
|
||
props: {
|
||
// suffix图标
|
||
action: {
|
||
type: Boolean,
|
||
default: false
|
||
},
|
||
|
||
// 是否存在内容
|
||
hasContent: {
|
||
type: Boolean,
|
||
default: false
|
||
},
|
||
|
||
// 提示文字
|
||
placeholder: {
|
||
type: String,
|
||
default: '设置收货地址'
|
||
},
|
||
|
||
// 圆角
|
||
borderRadius: {
|
||
type: String,
|
||
default: 'unset',
|
||
},
|
||
|
||
// 背景色
|
||
backgroundColor: {
|
||
type: String,
|
||
default: '#FFFFFF'
|
||
}
|
||
},
|
||
}
|
||
</script>
|
||
|
||
<style lang="scss" scoped>
|
||
.address-card {
|
||
display: flex;
|
||
align-items: flex-start;
|
||
min-height: 164rpx;
|
||
padding: 20rpx;
|
||
|
||
&--empty {
|
||
align-items: center;
|
||
}
|
||
}
|
||
|
||
|
||
|
||
.content {
|
||
flex: 1;
|
||
display: flex;
|
||
flex-direction: column;
|
||
margin: 0 20rpx;
|
||
font-size: $-font-size-md;
|
||
}
|
||
</style>
|