123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116 |
- <!--空布局:
- 遵循easycom规范, 可作为独立的组件, 不使用mescroll的页面也能使用:
- <mescroll-empty v-if="isShowEmpty" :option="optEmpty" @emptyclick="emptyClick"></mescroll-empty>
- -->
- <template>
- <view class="mescroll-empty" :class="{ 'empty-fixed': option.fixed }" :style="{ 'z-index': option.zIndex, top: option.top }">
- <view> <image v-if="icon" class="empty-icon" :src="icon" mode="widthFix" /> </view>
- <view v-if="tip" class="empty-tip">{{ tip }}</view>
- <view v-if="btnText" class="empty-btn" @click="emptyClick">{{ btnText }}</view>
- </view>
- </template>
- <script>
- // 引入全局配置
- import GlobalOption from '../mescroll-uni/mescroll-uni-option.js';
- // 引入国际化工具类
- import mescrollI18n from '../mescroll-uni/mescroll-i18n.js';
- export default {
- props: {
- // empty的配置项: 默认为GlobalOption.up.empty
- option: {
- type: Object,
- default() {
- return {};
- }
- }
- },
- // 使用computed获取配置,用于支持option的动态配置
- computed: {
- // 图标
- icon() {
- if (this.option.icon != null) { // 此处不使用短路求值, 用于支持传空串不显示图标
- return this.option.icon
- } else{
- let i18nType = mescrollI18n.getType() // 国际化配置
- if (this.option.i18n) {
- return this.option.i18n[i18nType].icon
- } else{
- return GlobalOption.i18n[i18nType].up.empty.icon || GlobalOption.up.empty.icon
- }
- }
- },
- // 文本提示
- tip() {
- if (this.option.tip != null) { // 支持传空串不显示文本提示
- return this.option.tip
- } else{
- let i18nType = mescrollI18n.getType() // 国际化配置
- if (this.option.i18n) {
- return this.option.i18n[i18nType].tip
- } else{
- return GlobalOption.i18n[i18nType].up.empty.tip || GlobalOption.up.empty.tip
- }
- }
- },
- // 按钮文本
- btnText() {
- if (this.option.i18n) {
- let i18nType = mescrollI18n.getType() // 国际化配置
- return this.option.i18n[i18nType].btnText
- } else{
- return this.option.btnText
- }
- }
- },
- methods: {
- // 点击按钮
- emptyClick() {
- this.$emit('emptyclick');
- }
- }
- };
- </script>
- <style>
- /* 无任何数据的空布局 */
- .mescroll-empty {
- box-sizing: border-box;
- width: 100%;
- padding: 100rpx 50rpx;
- text-align: center;
- }
- .mescroll-empty.empty-fixed {
- z-index: 99;
- position: absolute; /*transform会使fixed失效,最终会降级为absolute */
- top: 100rpx;
- left: 0;
- }
- .mescroll-empty .empty-icon {
- width: 280rpx;
- height: 280rpx;
- }
- .mescroll-empty .empty-tip {
- margin-top: 20rpx;
- font-size: 24rpx;
- color: gray;
- }
- .mescroll-empty .empty-btn {
- display: inline-block;
- margin-top: 40rpx;
- min-width: 200rpx;
- padding: 18rpx;
- font-size: 28rpx;
- border: 1rpx solid #e04b28;
- border-radius: 60rpx;
- color: #e04b28;
- }
- .mescroll-empty .empty-btn:active {
- opacity: 0.75;
- }
- </style>
|