zhangmeng
2024-04-19 e3ba120cb766a17e098e58d11c39ffc600a3070c
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
<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"
                    ></image>
                    <u-loading-icon
                        v-else
                        :mode="loadingMode"
                        size="28"
                        :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}            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>