| New file | 
 |  |  | 
 |  |  | <template> | 
 |  |  |    <view | 
 |  |  |        class="u-empty" | 
 |  |  |        :style="[emptyStyle]" | 
 |  |  |        v-if="show" | 
 |  |  |    > | 
 |  |  |       <u-icon | 
 |  |  |           v-if="!isSrc" | 
 |  |  |           :name="mode === 'message' ? 'chat' : `empty-${mode}`" | 
 |  |  |           :size="iconSize" | 
 |  |  |           :color="iconColor" | 
 |  |  |           margin-top="14" | 
 |  |  |       ></u-icon> | 
 |  |  |       <image | 
 |  |  |           v-else | 
 |  |  |           :style="{ | 
 |  |  |             width: $u.addUnit(width), | 
 |  |  |             height: $u.addUnit(height), | 
 |  |  |          }" | 
 |  |  |           :src="icon" | 
 |  |  |           mode="widthFix" | 
 |  |  |       ></image> | 
 |  |  |       <text | 
 |  |  |           class="u-empty__text" | 
 |  |  |           :style="[textStyle]" | 
 |  |  |       >{{text ? text : icons[mode]}}</text> | 
 |  |  |       <view class="u-empty__wrap" v-if="$slots.default || $slots.$default"> | 
 |  |  |          <slot /> | 
 |  |  |       </view> | 
 |  |  |    </view> | 
 |  |  | </template> | 
 |  |  |  | 
 |  |  | <script> | 
 |  |  |    import props from './props.js'; | 
 |  |  |  | 
 |  |  |    /** | 
 |  |  |     * empty 内容为空 | 
 |  |  |     * @description 该组件用于需要加载内容,但是加载的第一页数据就为空,提示一个"没有内容"的场景, 我们精心挑选了十几个场景的图标,方便您使用。 | 
 |  |  |     * @tutorial https://www.uviewui.com/components/empty.html | 
 |  |  |     * @property {String}         icon      内置图标名称,或图片路径,建议绝对路径 | 
 |  |  |     * @property {String}         text      提示文字 | 
 |  |  |     * @property {String}         textColor   文字颜色 (默认 '#c0c4cc' ) | 
 |  |  |     * @property {String | Number}   textSize   文字大小 (默认 14 ) | 
 |  |  |     * @property {String}         iconColor   图标的颜色 (默认 '#c0c4cc' ) | 
 |  |  |     * @property {String | Number}   iconSize   图标的大小 (默认 90 ) | 
 |  |  |     * @property {String}         mode      选择预置的图标类型 (默认 'data' ) | 
 |  |  |     * @property {String | Number}   width      图标宽度,单位px (默认 160 ) | 
 |  |  |     * @property {String | Number}   height      图标高度,单位px (默认 160 ) | 
 |  |  |     * @property {Boolean}         show      是否显示组件 (默认 true ) | 
 |  |  |     * @property {String | Number}   marginTop   组件距离上一个元素之间的距离,默认px单位 (默认 0 ) | 
 |  |  |     * @property {Object}         customStyle   定义需要用到的外部样式 | 
 |  |  |     *  | 
 |  |  |     * @event {Function} click 点击组件时触发 | 
 |  |  |     * @event {Function} close 点击关闭按钮时触发 | 
 |  |  |     * @example <u-empty text="所谓伊人,在水一方" mode="list"></u-empty> | 
 |  |  |     */ | 
 |  |  |    export default { | 
 |  |  |       name: "u-empty", | 
 |  |  |       mixins: [uni.$u.mpMixin, uni.$u.mixin, props], | 
 |  |  |       data() { | 
 |  |  |          return { | 
 |  |  |             icons: { | 
 |  |  |                car: '购物车为空', | 
 |  |  |                page: '页面不存在', | 
 |  |  |                search: '没有搜索结果', | 
 |  |  |                address: '没有收货地址', | 
 |  |  |                wifi: '没有WiFi', | 
 |  |  |                order: '订单为空', | 
 |  |  |                coupon: '没有优惠券', | 
 |  |  |                favor: '暂无收藏', | 
 |  |  |                permission: '无权限', | 
 |  |  |                history: '无历史记录', | 
 |  |  |                news: '无新闻列表', | 
 |  |  |                message: '消息列表为空', | 
 |  |  |                list: '列表为空', | 
 |  |  |                data: '数据为空', | 
 |  |  |                comment: '暂无评论', | 
 |  |  |             } | 
 |  |  |          } | 
 |  |  |       }, | 
 |  |  |       computed: { | 
 |  |  |          // 组件样式 | 
 |  |  |          emptyStyle() { | 
 |  |  |             const style = {} | 
 |  |  |             style.marginTop = uni.$u.addUnit(this.marginTop) | 
 |  |  |             // 合并customStyle样式,此参数通过mixin中的props传递 | 
 |  |  |             return uni.$u.deepMerge(uni.$u.addStyle(this.customStyle), style) | 
 |  |  |          }, | 
 |  |  |          // 文本样式 | 
 |  |  |          textStyle() { | 
 |  |  |             const style = {} | 
 |  |  |             style.color = this.textColor | 
 |  |  |             style.fontSize = uni.$u.addUnit(this.textSize) | 
 |  |  |             return style | 
 |  |  |          }, | 
 |  |  |          // 判断icon是否图片路径 | 
 |  |  |          isSrc() { | 
 |  |  |             return this.icon.indexOf('/') >= 0 | 
 |  |  |          } | 
 |  |  |       } | 
 |  |  |    } | 
 |  |  | </script> | 
 |  |  |  | 
 |  |  | <style lang="scss" scoped> | 
 |  |  |    @import '../../libs/css/components.scss'; | 
 |  |  |    $u-empty-text-margin-top:20rpx !default; | 
 |  |  |    $u-empty-slot-margin-top:20rpx !default; | 
 |  |  |  | 
 |  |  |    .u-empty { | 
 |  |  |       @include flex; | 
 |  |  |       flex-direction: column; | 
 |  |  |       justify-content: center; | 
 |  |  |       align-items: center; | 
 |  |  |  | 
 |  |  |       &__text { | 
 |  |  |          @include flex; | 
 |  |  |          justify-content: center; | 
 |  |  |          align-items: center; | 
 |  |  |          margin-top: $u-empty-text-margin-top; | 
 |  |  |       } | 
 |  |  |    } | 
 |  |  |       .u-slot-wrap { | 
 |  |  |          @include flex; | 
 |  |  |          justify-content: center; | 
 |  |  |          align-items: center; | 
 |  |  |          margin-top:$u-empty-slot-margin-top; | 
 |  |  |       } | 
 |  |  | </style> |