Files
xk-doctor-wx/components/d-loading-page/d-loading-page.vue
2024-09-19 12:57:55 +08:00

117 lines
3.3 KiB
Vue
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<template>
<d-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>
<d-loading-icon v-else :mode="loadingMode" :size="$u.addUnit(iconSize)" :color="loadingColor"></d-loading-icon>
</view>
<slot>
<text class="u-loading-page__warpper__text" :style="{
fontSize: $u.addUnit(fontSize),
color: color,
}">{{ loadingText }}</text>
</slot>
</view>
</view>
</d-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: [props],
data() {
return {};
},
methods: {},
};
</script>
<style lang="scss" scoped>
@mixin flex($direction: row) {
/* #ifndef APP-NVUE */
display: flex;
/* #endif */
flex-direction: $direction;
}
/* #ifndef APP-NVUE */
// 由于uView是基于nvue环境进行开发的此环境中普通元素默认为flex-direction: column;
// 所以在非nvue中需要对元素进行重置为flex-direction: column; 否则可能会表现异常
view,
scroll-view,
swiper-item {
display: flex;
flex-direction: column;
flex-shrink: 0;
flex-grow: 0;
flex-basis: auto;
align-items: stretch;
align-content: flex-start;
}
/* #endif */
$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>