|
- <template>
- <view class="u-empty" v-if="show" :style="{
- marginTop: marginTop + 'rpx'
- }">
- <u-icon
- :name="src ? src : 'empty-' + mode"
- :custom-style="iconStyle"
- :label="text ? text : icons[mode]"
- label-pos="bottom"
- :label-color="color"
- :label-size="fontSize"
- :size="iconSize"
- :color="iconColor"
- margin-top="14"
- ></u-icon>
- <view class="u-slot-wrap">
- <slot name="bottom"></slot>
- </view>
- </view>
- </template>
-
- <script>
- /**
- * empty 内容为空
- * @description 该组件用于需要加载内容,但是加载的第一页数据就为空,提示一个"没有内容"的场景, 我们精心挑选了十几个场景的图标,方便您使用。
- * @tutorial https://www.uviewui.com/components/empty.html
- * @property {String} color 文字颜色(默认#c0c4cc)
- * @property {String} text 文字提示(默认“无内容”)
- * @property {String} src 自定义图标路径,如定义,mode参数会失效
- * @property {String Number} font-size 提示文字的大小,单位rpx(默认28)
- * @property {String} mode 内置的图标,见官网说明(默认data)
- * @property {String Number} img-width 图标的宽度,单位rpx(默认240)
- * @property {String} img-height 图标的高度,单位rpx(默认auto)
- * @property {String Number} margin-top 组件距离上一个元素之间的距离(默认0)
- * @property {Boolean} show 是否显示组件(默认true)
- * @event {Function} click 点击组件时触发
- * @event {Function} close 点击关闭按钮时触发
- * @example <u-empty text="所谓伊人,在水一方" mode="list"></u-empty>
- */
- export default {
- name: "u-empty",
- props: {
- // 图标路径
- src: {
- type: String,
- default: ''
- },
- // 提示文字
- text: {
- type: String,
- default: ''
- },
- // 文字颜色
- color: {
- type: String,
- default: '#c0c4cc'
- },
- // 图标的颜色
- iconColor: {
- type: String,
- default: '#c0c4cc'
- },
- // 图标的大小
- iconSize: {
- type: [String, Number],
- default: 120
- },
- // 文字大小,单位rpx
- fontSize: {
- type: [String, Number],
- default: 26
- },
- // 选择预置的图标类型
- mode: {
- type: String,
- default: 'data'
- },
- // 图标宽度,单位rpx
- imgWidth: {
- type: [String, Number],
- default: 120
- },
- // 图标高度,单位rpx
- imgHeight: {
- type: [String, Number],
- default: 'auto'
- },
- // 是否显示组件
- show: {
- type: Boolean,
- default: true
- },
- // 组件距离上一个元素之间的距离
- marginTop: {
- type: [String, Number],
- default: 0
- },
- iconStyle: {
- type: Object,
- default() {
- return {}
- }
- }
- },
- data() {
- return {
- icons: {
- car: '购物车为空',
- page: '页面不存在',
- search: '没有搜索结果',
- address: '没有收货地址',
- wifi: '没有WiFi',
- order: '订单为空',
- coupon: '没有优惠券',
- favor: '暂无收藏',
- permission: '无权限',
- history: '无历史记录',
- news: '无新闻列表',
- message: '消息列表为空',
- list: '列表为空',
- data: '数据为空'
- },
- // icons: [{
- // icon: 'car',
- // text: '购物车为空'
- // },{
- // icon: 'page',
- // text: '页面不存在'
- // },{
- // icon: 'search',
- // text: '没有搜索结果'
- // },{
- // icon: 'address',
- // text: '没有收货地址'
- // },{
- // icon: 'wifi',
- // text: '没有WiFi'
- // },{
- // icon: 'order',
- // text: '订单为空'
- // },{
- // icon: 'coupon',
- // text: '没有优惠券'
- // },{
- // icon: 'favor',
- // text: '暂无收藏'
- // },{
- // icon: 'permission',
- // text: '无权限'
- // },{
- // icon: 'history',
- // text: '无历史记录'
- // },{
- // icon: 'news',
- // text: '无新闻列表'
- // },{
- // icon: 'message',
- // text: '消息列表为空'
- // },{
- // icon: 'list',
- // text: '列表为空'
- // },{
- // icon: 'data',
- // text: '数据为空'
- // }],
-
- }
- }
- }
- </script>
-
- <style scoped lang="scss">
- @import "../../libs/css/style.components.scss";
-
- .u-empty {
- @include vue-flex;
- flex-direction: column;
- justify-content: center;
- align-items: center;
- height: 100%;
- }
-
- .u-image {
- margin-bottom: 20rpx;
- }
-
- .u-slot-wrap {
- @include vue-flex;
- justify-content: center;
- align-items: center;
- margin-top: 20rpx;
- }
- </style>
|