/* ============================================================
v4.8 · 失败可见化
原写法.catch(function(){ return 默认值 }) 会把网络失败吞成空数据,
用户以为「今天没数据」,实际是没网(v1.47.1 同类事故)。
现改为:记录失败项 → 页面顶部显示红色提示条 + 重试入口。
============================================================ */
window.__failed = {};
function __guard(name, url, def) {
return function () {
return PROD.get(url).catch(function (e) {
window.__failed[name] = (e && e.message) ? e.message : '请求失败';
return def;
});
};
}
function __renderFailed(barId) {
var bar = document.getElementById(barId);
if (!bar) return;
var names = window.__FAIL_NAMES || {};
var keys = Object.keys(window.__failed);
if (!keys.length) { bar.innerHTML = ''; return; }
var esc = function (s) {
return String(s == null ? '' : s).replace(/[&<>"]/g, function (c) {
return { '&': '&', '<': '<', '>': '>', '"': '"' }[c];
});
};
bar.innerHTML = '⚠ 以下数据加载失败,页面数值不完整:' +
keys.map(function (k) {
return (names[k] || k) + '(' + esc(window.__failed[k]) + ')';
}).join('、') +
'
';
}
window.__FAIL_NAMES = {"cats": "品类", "orders": "订单", "dep": "保证金"};