diff --git a/src/core/helpers/protocol/popup.js b/src/core/helpers/protocol/popup.js index c2b5ae6890f3fed816ac68448fecf0690c23a2a1..a2838be960df944eb30f54593fe63dfbc8bbb602 100644 --- a/src/core/helpers/protocol/popup.js +++ b/src/core/helpers/protocol/popup.js @@ -90,6 +90,10 @@ export const showLoading = { visible: { type: Boolean, default: true + }, + isShowLoading: { + type: Boolean, + default: true } } diff --git a/src/core/service/api/popup.js b/src/core/service/api/popup.js index 13db31a000d27f2793495c3d250e986bce1d4115..f07488fcc7347849aa29e19f0c3d927409ee9e1c 100644 --- a/src/core/service/api/popup.js +++ b/src/core/service/api/popup.js @@ -27,7 +27,7 @@ export function showLoading (args) { } export function hideLoading () { - emit('onHideToast') + emit('onHideLoading') return {} } diff --git a/src/platforms/h5/components/app/index.vue b/src/platforms/h5/components/app/index.vue index 1718eeedfff1b2f5e54de470d1f325cd0ec471f5..9b1b17ac79e9c07c7241955afa7d1d3233692d70 100644 --- a/src/platforms/h5/components/app/index.vue +++ b/src/platforms/h5/components/app/index.vue @@ -11,8 +11,7 @@ v-show="showTabBar" v-bind="tabBar" /> + v-bind="showToast"/> diff --git a/src/platforms/h5/components/app/popup/mixins/toast.js b/src/platforms/h5/components/app/popup/mixins/toast.js index 4b193c60e50b1454f578395ca826474cf053d1bf..b27f9e4d23d9c9298f24126f80bba2e9dcfe9185 100644 --- a/src/platforms/h5/components/app/popup/mixins/toast.js +++ b/src/platforms/h5/components/app/popup/mixins/toast.js @@ -8,14 +8,30 @@ export default { }, created () { UniServiceJSBridge.on('onShowToast', args => { - setTimeout(() => { // 延迟一下 show 可解决窗口打开前调用 showToast,showLoading 在 onHidePopup 之后触发 + setTimeout(() => { // 延迟一下 show 可解决窗口打开前调用 showToast 在 onHidePopup 之后触发 this.showToast = args }, 10) }) - UniServiceJSBridge.on(['onHidePopup', 'onHideToast'], args => { - setTimeout(() => { // 与 show 对应延迟10ms,避免快速调用 show,hide 导致无法关闭 - this.showToast.visible = false - }, 10) - }) + + const createOnHide = (type) => { + return () => { + let warnMsg = '' + if (type === 'onHideToast' && this.showToast.isShowLoading) { + warnMsg = '请注意 showToast 与 hideToast 必须配对使用' + } else if (type === 'onHideLoading' && !this.showToast.isShowLoading) { + warnMsg = '请注意 showLoading 与 hideLoading 必须配对使用' + } + if (warnMsg) { + return console.warn(warnMsg) + } + setTimeout(() => { // 与 show 对应延迟10ms,避免快速调用 show,hide 导致无法关闭 + this.showToast.visible = false + }, 10) + } + } + + UniServiceJSBridge.on('onHidePopup', createOnHide('onHidePopup')) + UniServiceJSBridge.on('onHideToast', createOnHide('onHideToast')) + UniServiceJSBridge.on('onHideLoading', createOnHide('onHideLoading')) } }