// [z-paging]loading相关模块
|
import u from '.././z-paging-utils'
|
import Enum from '.././z-paging-enum'
|
|
export default {
|
props: {
|
// 第一次加载后自动隐藏loading slot,默认为是
|
autoHideLoadingAfterFirstLoaded: {
|
type: Boolean,
|
default: u.gc('autoHideLoadingAfterFirstLoaded', true)
|
},
|
// loading slot是否铺满屏幕并固定,默认为否
|
loadingFullFixed: {
|
type: Boolean,
|
default: u.gc('loadingFullFixed', false)
|
},
|
// 是否自动显示系统Loading:即uni.showLoading,若开启则将在刷新列表时(调用reload、refresh时)显示,下拉刷新和滚动到底部加载更多不会显示,默认为false。
|
autoShowSystemLoading: {
|
type: Boolean,
|
default: u.gc('autoShowSystemLoading', false)
|
},
|
// 显示系统Loading时是否显示透明蒙层,防止触摸穿透,默认为是(H5、App、微信小程序、百度小程序有效)
|
systemLoadingMask: {
|
type: Boolean,
|
default: u.gc('systemLoadingMask', true)
|
},
|
// 显示系统Loading时显示的文字,默认为"加载中"
|
systemLoadingText: {
|
type: [String, Object],
|
default: u.gc('systemLoadingText', null)
|
},
|
},
|
data() {
|
return {
|
loading: false,
|
loadingForNow: false,
|
}
|
},
|
watch: {
|
// loading状态
|
loadingStatus(newVal) {
|
this.$emit('loadingStatusChange', newVal);
|
this.$nextTick(() => {
|
this.loadingStatusAfterRender = newVal;
|
})
|
if (this.useChatRecordMode) {
|
if (this.isFirstPage && (newVal === Enum.More.NoMore || newVal === Enum.More.Fail)) {
|
this.isFirstPageAndNoMore = true;
|
return;
|
}
|
}
|
this.isFirstPageAndNoMore = false;
|
},
|
loading(newVal){
|
if (newVal) {
|
this.loadingForNow = newVal;
|
}
|
},
|
},
|
computed: {
|
// 是否显示loading
|
showLoading() {
|
if (this.firstPageLoaded || !this.loading || !this.loadingForNow) return false;
|
if (this.finalShowSystemLoading) {
|
// 显示系统loading
|
uni.showLoading({
|
title: this.finalSystemLoadingText,
|
mask: this.systemLoadingMask
|
})
|
}
|
return this.autoHideLoadingAfterFirstLoaded ? (this.fromEmptyViewReload ? true : !this.pagingLoaded) : this.loadingType === Enum.LoadingType.Refresher;
|
},
|
// 最终的是否显示系统loading
|
finalShowSystemLoading() {
|
return this.autoShowSystemLoading && this.loadingType === Enum.LoadingType.Refresher;
|
}
|
},
|
methods: {
|
// 处理开始加载更多状态
|
_startLoading(isReload = false) {
|
if ((this.showLoadingMoreWhenReload && !this.isUserPullDown) || !isReload) {
|
this.loadingStatus = Enum.More.Loading;
|
}
|
this.loading = true;
|
},
|
// 停止系统loading和refresh
|
_endSystemLoadingAndRefresh(){
|
this.finalShowSystemLoading && uni.hideLoading();
|
!this.useCustomRefresher && uni.stopPullDownRefresh();
|
// #ifdef APP-NVUE
|
this.usePageScroll && uni.stopPullDownRefresh();
|
// #endif
|
}
|
}
|
}
|