Blame view

uni_modules/uview-plus/components/u-loading-page/u-loading-page.vue 3.82 KB
a2702f6d   刘淇   巡查计划
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
111
112
113
114
115
116
117
118
119
120
121
  <template>
      <u-transition
          :show="loading"
          :custom-style="{
              position: 'fixed',
              top: 0,
              left: 0,
              right: 0,
              bottom: 0,
              backgroundColor: bgColor,
              display: 'flex',
              zIndex: zIndex,
              ...customStyle
          }"
      >
          <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: addUnit(iconSize),
  						    height: addUnit(iconSize)
  						}"
                      ></image>
                      <u-loading-icon
                          v-else
                          :mode="loadingMode"
                          :size="addUnit(iconSize)"
                          :color="loadingColor"
                      ></u-loading-icon>
                  </view>
                  <slot>
                      <text
                          class="u-loading-page__warpper__text"
                          :style="{
                              fontSize: addUnit(fontSize),
                              color: color,
                          }"
                          >{{ loadingText }}</text
                      >
                  </slot>
              </view>
          </view>
      </u-transition>
  </template>
  
  <script>
  import { props } from "./props";
  import { mpMixin } from '../../libs/mixin/mpMixin';
  import { mixin } from '../../libs/mixin/mixin';
  import { addUnit } from '../../libs/function/index';
  /**
   * loadingPage 加载动画
   * @description 警此组件为一个小动画,目前用在uView的loadmore加载更多和switch开关等组件的正在加载状态场景。
   * @tutorial https://uview-plus.jiangruyi.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 {Number}			zIndex	        z-index层级 (默认10 
   * @property {Object}			customStyle		自定义样式
   * @example <u-loading mode="circle"></u-loading>
   */
  export default {
      name: "u-loading-page",
      mixins: [mpMixin, mixin, props],
      data() {
          return {};
      },
      methods: {
          addUnit
      }
  };
  </script>
  
  <style lang="scss" scoped>
  $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>