116 lines
		
	
	
		
			3.6 KiB
		
	
	
	
		
			Vue
		
	
	
	
	
	
			
		
		
	
	
			116 lines
		
	
	
		
			3.6 KiB
		
	
	
	
		
			Vue
		
	
	
	
	
	
<template>
 | 
						||
    <u-transition
 | 
						||
        :show="loading"
 | 
						||
        :custom-style="{
 | 
						||
            position: 'fixed',
 | 
						||
            top: 0,
 | 
						||
            left: 0,
 | 
						||
            right: 0,
 | 
						||
            bottom: 0,
 | 
						||
            backgroundColor: bgColor,
 | 
						||
            display: 'flex',
 | 
						||
        }"
 | 
						||
    >
 | 
						||
        <view class="u-loading-page">
 | 
						||
            <view class="u-loading-page__warpper">
 | 
						||
                <view class="u-loading-page__warpper__loading-icon">
 | 
						||
                    <image
 | 
						||
                        v-if="image"
 | 
						||
                        :src="image"
 | 
						||
                        class="u-loading-page__warpper__loading-icon__img"
 | 
						||
                        mode="widthFit"
 | 
						||
						:style="{
 | 
						||
							width: $u.addUnit(iconSize),
 | 
						||
						    height: $u.addUnit(iconSize)
 | 
						||
						}"
 | 
						||
                    ></image>
 | 
						||
                    <u-loading-icon
 | 
						||
                        v-else
 | 
						||
                        :mode="loadingMode"
 | 
						||
                        :size="$u.addUnit(iconSize)"
 | 
						||
                        :color="loadingColor"
 | 
						||
                    ></u-loading-icon>
 | 
						||
                </view>
 | 
						||
                <slot>
 | 
						||
                    <text
 | 
						||
                        class="u-loading-page__warpper__text"
 | 
						||
                        :style="{
 | 
						||
                            fontSize: $u.addUnit(fontSize),
 | 
						||
                            color: color,
 | 
						||
                        }"
 | 
						||
                        >{{ loadingText }}</text
 | 
						||
                    >
 | 
						||
                </slot>
 | 
						||
            </view>
 | 
						||
        </view>
 | 
						||
    </u-transition>
 | 
						||
</template>
 | 
						||
 | 
						||
<script>
 | 
						||
import props from "./props.js";
 | 
						||
/**
 | 
						||
 * loadingPage 加载动画
 | 
						||
 * @description 警此组件为一个小动画,目前用在uView的loadmore加载更多和switch开关等组件的正在加载状态场景。
 | 
						||
 * @tutorial https://www.uviewui.com/components/loading.html
 | 
						||
 * @property {String | Number}	loadingText		提示内容  (默认 '正在加载' )
 | 
						||
 * @property {String}			image			文字上方用于替换loading动画的图片
 | 
						||
 * @property {String}			loadingMode		加载动画的模式,circle-圆形,spinner-花朵形,semicircle-半圆形 (默认 'circle' )
 | 
						||
 * @property {Boolean}			loading			是否加载中 (默认 false )
 | 
						||
 * @property {String}			bgColor			背景色 (默认 '#ffffff' )
 | 
						||
 * @property {String}			color			文字颜色 (默认 '#C8C8C8' )
 | 
						||
 * @property {String | Number}	fontSize		文字大小 (默认 19 )
 | 
						||
 * @property {String | Number}	iconSize		图标大小 (默认 28 )
 | 
						||
 * @property {String}			loadingColor	加载中图标的颜色,只能rgb或者十六进制颜色值 (默认 '#C8C8C8' )
 | 
						||
 * @property {Object}			customStyle		自定义样式
 | 
						||
 * @example <u-loading mode="circle"></u-loading>
 | 
						||
 */
 | 
						||
export default {
 | 
						||
    name: "u-loading-page",
 | 
						||
    mixins: [uni.$u.mpMixin, uni.$u.mixin, props],
 | 
						||
    data() {
 | 
						||
        return {};
 | 
						||
    },
 | 
						||
    methods: {},
 | 
						||
};
 | 
						||
</script>
 | 
						||
 | 
						||
<style lang="scss" scoped>
 | 
						||
@import "../../libs/css/components.scss";
 | 
						||
 | 
						||
$text-color: rgb(200, 200, 200) !default;
 | 
						||
$text-size: 19px !default;
 | 
						||
$u-loading-icon-margin-bottom: 10px !default;
 | 
						||
 | 
						||
.u-loading-page {
 | 
						||
    @include flex(column);
 | 
						||
    flex: 1;
 | 
						||
    align-items: center;
 | 
						||
    justify-content: center;
 | 
						||
 | 
						||
    &__warpper {
 | 
						||
        margin-top: -150px;
 | 
						||
        justify-content: center;
 | 
						||
        align-items: center;
 | 
						||
        /* #ifndef APP-NVUE */
 | 
						||
        color: $text-color;
 | 
						||
        font-size: $text-size;
 | 
						||
        /* #endif */
 | 
						||
        @include flex(column);
 | 
						||
 | 
						||
        &__loading-icon {
 | 
						||
            margin-bottom: $u-loading-icon-margin-bottom;
 | 
						||
 | 
						||
            &__img {
 | 
						||
                width: 40px;
 | 
						||
                height: 40px;
 | 
						||
            }
 | 
						||
        }
 | 
						||
 | 
						||
        &__text {
 | 
						||
            font-size: $text-size;
 | 
						||
            color: $text-color;
 | 
						||
        }
 | 
						||
    }
 | 
						||
}
 | 
						||
</style>
 |