feat(admin-dashboard): add mini rank chart for 7d merchant revenue
This commit is contained in:
@@ -126,6 +126,75 @@
|
||||
});
|
||||
})();
|
||||
|
||||
// 仪表盘:迷你排行(近7天站点收入 Top5)
|
||||
(function () {
|
||||
var el = qs('[data-role="merchant-revenue-rank-7d-chart"][data-points]');
|
||||
if (!el) {
|
||||
return;
|
||||
}
|
||||
|
||||
var raw = el.getAttribute('data-points') || '[]';
|
||||
var points = [];
|
||||
try {
|
||||
points = JSON.parse(raw) || [];
|
||||
} catch (e) {
|
||||
points = [];
|
||||
}
|
||||
|
||||
if (!points || points.length === 0) {
|
||||
el.classList.add('is-empty');
|
||||
el.textContent = '暂无排行数据';
|
||||
return;
|
||||
}
|
||||
|
||||
var max = 0;
|
||||
points.forEach(function (p) {
|
||||
var v = Number(p && p.paid_sum ? p.paid_sum : 0);
|
||||
if (v > max) {
|
||||
max = v;
|
||||
}
|
||||
});
|
||||
if (!max || max <= 0) {
|
||||
max = 1;
|
||||
}
|
||||
|
||||
el.innerHTML = '';
|
||||
|
||||
points.forEach(function (p, idx) {
|
||||
var paid = Number(p && p.paid_sum ? p.paid_sum : 0);
|
||||
var ratio = Math.max(0, Math.min(1, paid / max));
|
||||
|
||||
var row = document.createElement('div');
|
||||
row.className = 'adm-mini-rank-row';
|
||||
|
||||
var name = document.createElement('div');
|
||||
name.className = 'adm-mini-rank-name';
|
||||
// 仅展示 #排名(站点名在表格里可看;后续可把真实名字也塞进 data-points)
|
||||
name.textContent = '#' + (idx + 1);
|
||||
|
||||
var wrap = document.createElement('div');
|
||||
wrap.className = 'adm-mini-rank-bar-wrap';
|
||||
|
||||
var bar = document.createElement('div');
|
||||
bar.className = 'adm-mini-rank-bar';
|
||||
bar.style.width = Math.round(ratio * 100) + '%';
|
||||
|
||||
wrap.appendChild(bar);
|
||||
|
||||
var val = document.createElement('div');
|
||||
val.className = 'adm-mini-rank-value';
|
||||
val.textContent = '¥' + paid.toFixed(2);
|
||||
|
||||
row.title = 'Top' + (idx + 1) + ':已付 ¥' + paid.toFixed(2) + ',订单数 ' + String(p && p.count != null ? p.count : 0);
|
||||
|
||||
row.appendChild(name);
|
||||
row.appendChild(wrap);
|
||||
row.appendChild(val);
|
||||
|
||||
el.appendChild(row);
|
||||
});
|
||||
})();
|
||||
|
||||
// 通用:将后端 flash 信息同步到 toast(更像 Ant Design Pro 的反馈方式)
|
||||
// 说明:渐进增强。页面仍保留原本的提示块,不依赖 JS。
|
||||
(function () {
|
||||
|
||||
Reference in New Issue
Block a user