diff --git a/assets/js/order-center.js b/assets/js/order-center.js index 7e89d231..70f1cd76 100644 --- a/assets/js/order-center.js +++ b/assets/js/order-center.js @@ -402,7 +402,6 @@ return; } notyf(data.message || "支付成功", "success"); - refreshView(state); if (activeDetail(state, number)) openDetail(state, number); }).catch(function (error) { button.disabled = false; @@ -426,7 +425,6 @@ var data = result.data || {}; invalidateOrder(number, data.order); notyf("订单已关闭", "success"); - refreshView(state); if (activeDetail(state, number)) openDetail(state, number); }).catch(function (error) { button.disabled = false; @@ -608,14 +606,27 @@ }); } - // refresh 供弹窗提交/取消后刷新列表与统计。 + // refresh 供弹窗提交/取消后刷新列表与统计;列表重载由下方失效监听统一触发。 function refresh(orderNumber) { invalidateOrder(orderNumber); - liveStates.forEach(function (state) { - refreshView(state); + } + + function touchesOrders(tags) { + if (!Array.isArray(tags) || !tags.length) return true; + return tags.some(function (tag) { + tag = String(tag || ""); + return tag === "orders" || tag.indexOf("order:") === 0; }); } + // 任意入口(下单待支付 / 支付 / 关闭 / 刷新状态)使订单缓存失效时,重载已挂载的订单列表。 + var refreshTimer = null; + document.addEventListener("aksrt:cache:invalidated", function (event) { + if (!liveStates.length || !touchesOrders(event.detail && event.detail.tags)) return; + window.clearTimeout(refreshTimer); + refreshTimer = window.setTimeout(function () { liveStates.forEach(refreshView); }, 300); + }); + window.AKSRTOrderCenter = { init: init, destroy: destroy, refresh: refresh }; jQuery(document).off("auto_fun.aksrt-order-center").on("auto_fun.aksrt-order-center", function () { init(document); }); }());