From 1d8df2331e2088634a38f1ad22c7ad2ec8921e16 Mon Sep 17 00:00:00 2001 From: wangfukang <15630117759@163.com> Date: Thu, 14 May 2026 10:41:25 +0800 Subject: [PATCH] 1 --- utils/loading.js | 78 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 78 insertions(+) create mode 100644 utils/loading.js diff --git a/utils/loading.js b/utils/loading.js new file mode 100644 index 0000000..f782fb9 --- /dev/null +++ b/utils/loading.js @@ -0,0 +1,78 @@ +export const LOADING_SHOW_EVENT = 'common-loading:show' +export const LOADING_HIDE_EVENT = 'common-loading:hide' + +const defaultOptions = { + title: '加载中...', + mask: true +} + +const loadingState = { + visible: false, + title: defaultOptions.title, + mask: defaultOptions.mask +} + +let installed = false +let nativeShowLoading = null +let nativeHideLoading = null + +function normalizeOptions(options = {}) { + if (typeof options === 'string') { + return { + ...defaultOptions, + title: options + } + } + + return { + ...defaultOptions, + ...options, + title: options.title || defaultOptions.title, + mask: options.mask !== false + } +} + +export function getLoadingState() { + return { + ...loadingState + } +} + +export function showLoading(options) { + const loadingOptions = normalizeOptions(options) + loadingState.visible = true + loadingState.title = loadingOptions.title + loadingState.mask = loadingOptions.mask + uni.$emit(LOADING_SHOW_EVENT, loadingOptions) + loadingOptions.success && loadingOptions.success({ errMsg: 'showLoading:ok' }) + loadingOptions.complete && loadingOptions.complete({ errMsg: 'showLoading:ok' }) +} + +export function hideLoading(options = {}) { + loadingState.visible = false + uni.$emit(LOADING_HIDE_EVENT) + nativeHideLoading && nativeHideLoading.call(uni) + options.success && options.success({ errMsg: 'hideLoading:ok' }) + options.complete && options.complete({ errMsg: 'hideLoading:ok' }) +} + +export function installLoading() { + if (installed) { + return + } + + installed = true + nativeShowLoading = uni.showLoading + nativeHideLoading = uni.hideLoading + uni.$nativeShowLoading = nativeShowLoading + uni.$nativeHideLoading = nativeHideLoading + uni.showLoading = showLoading + uni.hideLoading = hideLoading +} + +export default { + installLoading, + showLoading, + hideLoading, + getLoadingState +}