整合审计看板,通过下拉选择机种

This commit is contained in:
zzh 2025-11-24 11:18:03 +08:00
parent 3f45dc220c
commit 8a1eda390a

View File

@ -26,8 +26,12 @@ const Dashboard = (() => {
canvas.onmouseleave = null;
}
// 清理日期选择器事件
const auditDateEl = document.getElementById('audit-date');
const platformSelect = document.getElementById('audit-platform-select');
const pddDateEl = document.getElementById('audit-date-pdd');
const ytDateEl = document.getElementById('audit-date-yt');
if(auditDateEl) auditDateEl.onchange = null;
if(platformSelect) platformSelect.onchange = null;
if(pddDateEl) pddDateEl.onchange = null;
if(ytDateEl) ytDateEl.onchange = null;
// 清理resize监听器
@ -103,8 +107,10 @@ const Dashboard = (() => {
// 设置审计框高度
const setAuditHeight = () => {
const height = calculateAuditHeight();
const auditCard = document.getElementById('audit-card');
const pddCard = document.getElementById('audit-pdd-card');
const ytCard = document.getElementById('audit-yt-card');
if(auditCard) auditCard.style.height = height + 'px';
if(pddCard) pddCard.style.height = height + 'px';
if(ytCard) ytCard.style.height = height + 'px';
};
@ -370,6 +376,65 @@ const Dashboard = (() => {
if(!d) return {};
return { start: d + ' 00:00:00', end: d + ' 23:59:59' };
};
// 整合的审计看板切换逻辑
const platformSelect = q('audit-platform-select');
const auditDateEl = q('audit-date');
const auditListEl = q('audit-list');
// 当前选中的平台
window.__currentAuditPlatform = 'pdd';
// 更新整合看板显示
const updateAuditDisplay = () => {
const platform = window.__currentAuditPlatform;
const params = platform === 'pdd' ? window.__pddParams : window.__ytParams;
const sTime = toEpoch(params.start);
const eTime = toEpoch(params.end);
const cacheData = platform === 'pdd' ? window.__auditCache.pdd : window.__auditCache.yt;
const filteredData = (cacheData || []).filter(r => {
const t = toEpoch(r.ts_cn);
if (t == null) return false;
return (sTime == null || t >= sTime) && (eTime == null || t <= eTime);
});
const listHtml = filteredData.slice(0, 100).map(r =>
`<li><span>${r.ts_cn||'—'}</span><span class="badge">${r.batch||''}</span><span class="badge">${r.mac||''}</span><span class="badge">${r.note||''}</span></li>`
).join('') || '<li>暂无数据</li>';
if (auditListEl) auditListEl.innerHTML = listHtml;
};
// 平台切换事件
if (platformSelect) {
platformSelect.onchange = () => {
window.__currentAuditPlatform = platformSelect.value;
// 同步日期选择器
const otherDateEl = platformSelect.value === 'pdd' ? q('audit-date-pdd') : q('audit-date-yt');
if (auditDateEl && otherDateEl) {
auditDateEl.value = otherDateEl.value;
}
updateAuditDisplay();
};
}
// 整合看板日期筛选
if (auditDateEl) {
auditDateEl.onchange = () => {
const d = auditDateEl.value;
const platform = window.__currentAuditPlatform;
if (platform === 'pdd') {
window.__pddParams = dateToRange(d);
const pddDateEl = q('audit-date-pdd');
if (pddDateEl) pddDateEl.value = d;
} else {
window.__ytParams = dateToRange(d);
const ytDateEl = q('audit-date-yt');
if (ytDateEl) ytDateEl.value = d;
}
refreshAuditLists();
updateAuditDisplay();
};
}
const pddDateEl=q('audit-date-pdd');
const ytDateEl=q('audit-date-yt');
if(pddDateEl){
@ -483,6 +548,26 @@ const Dashboard = (() => {
const ytEls=ytView.slice(0, 100).map(r=>`<li><span>${r.ts_cn||'—'}</span><span class="badge">${r.batch||''}</span><span class="badge">${r.mac||''}</span><span class="badge">${r.note||''}</span></li>`).join('')||'<li>暂无数据</li>';
const p=document.getElementById('audit-pdd'); if(p) p.innerHTML=pddEls;
const y=document.getElementById('audit-yt'); if(y) y.innerHTML=ytEls;
// 更新整合看板
const updateAuditDisplay = () => {
const platform = window.__currentAuditPlatform || 'pdd';
const params = platform === 'pdd' ? window.__pddParams : window.__ytParams;
const sTime = toEpoch(params.start);
const eTime = toEpoch(params.end);
const cacheData = platform === 'pdd' ? window.__auditCache.pdd : window.__auditCache.yt;
const filteredData = (cacheData || []).filter(r => {
const t = toEpoch(r.ts_cn);
if (t == null) return false;
return (sTime == null || t >= sTime) && (eTime == null || t <= eTime);
});
const listHtml = filteredData.slice(0, 100).map(r =>
`<li><span>${r.ts_cn||'—'}</span><span class="badge">${r.batch||''}</span><span class="badge">${r.mac||''}</span><span class="badge">${r.note||''}</span></li>`
).join('') || '<li>暂无数据</li>';
const auditListEl = document.getElementById('audit-list');
if (auditListEl) auditListEl.innerHTML = listHtml;
};
updateAuditDisplay();
} catch(e) {
clearTimeout(timeoutId);
if(e.name !== 'AbortError'){
@ -512,15 +597,28 @@ const Dashboard = (() => {
<div id="chart-tooltip" style="position:absolute;background:rgba(0,0,0,0.85);color:#fff;padding:6px 10px;border-radius:4px;font-size:12px;pointer-events:none;display:none;white-space:nowrap"></div>
</div>
</div>
<div class="grid cols-2" style="margin-top:12px">
<div id="audit-pdd-card" class="card" style="display:flex;flex-direction:column;height:460px">
<div style="margin-top:12px">
<div id="audit-card" class="card" style="display:flex;flex-direction:column;height:460px">
<div style="font-weight:600;margin-bottom:8px;display:flex;justify-content:space-between;align-items:center;flex-shrink:0;gap:8px">
<span>审计看板</span>
<div style="display:flex;gap:8px;align-items:center">
<select id="audit-platform-select" style="padding:4px 8px;background:var(--surface);border:1px solid var(--border);border-radius:6px;color:var(--text);font-size:13px;outline:none;cursor:pointer">
<option value="pdd">拼多多</option>
<option value="yt">圆通</option>
</select>
<input id="audit-date" type="date" style="padding:4px 8px;background:var(--surface);border:1px solid var(--border);border-radius:6px;color:var(--text);font-size:13px;outline:none" />
</div>
</div>
<ul id="audit-list" class="list" style="overflow-y:auto;flex:1;min-height:0">${pddList}</ul>
</div>
<div id="audit-pdd-card" class="card" style="display:none;flex-direction:column;height:460px">
<div style="font-weight:600;margin-bottom:8px;display:flex;justify-content:space-between;align-items:center;flex-shrink:0">
<span>拼多多审计</span>
<input id="audit-date-pdd" type="date" style="padding:4px 8px;background:var(--surface);border:1px solid var(--border);border-radius:6px;color:var(--text);font-size:13px;outline:none" />
</div>
<ul id="audit-pdd" class="list" style="overflow-y:auto;flex:1;min-height:0">${pddList}</ul>
</div>
<div id="audit-yt-card" class="card" style="display:flex;flex-direction:column;height:460px">
<div id="audit-yt-card" class="card" style="display:none;flex-direction:column;height:460px">
<div style="font-weight:600;margin-bottom:8px;display:flex;justify-content:space-between;align-items:center;flex-shrink:0">
<span>圆通审计</span>
<input id="audit-date-yt" type="date" style="padding:4px 8px;background:var(--surface);border:1px solid var(--border);border-radius:6px;color:var(--text);font-size:13px;outline:none" />