fix: resolve response format mismatches causing data loading failures in Dashboard, ImBots, Promotion, Knowledge pages

This commit is contained in:
qyyfw committed 2026-07-07 17:17:41 +08:00
1 parent 839be8f97f
commit e9ec429d21
4 files changed
+385 -461

No files matched your search

+17 -6
View File
@@ -131,13 +131,24 @@ const Dashboard: React.FC = () => {
const [statsRes, dailyRes, logsRes, auditRes] = await Promise.all([
adminAPI.getStats() as any,
(adminAPI as any).getDailyStats?.(30) || Promise.resolve({ data: [] }),
adminAPI.getRecentLogs(),
adminAPI.getRecentAudit(),
adminAPI.getRecentLogs() as any,
adminAPI.getRecentAudit() as any,
]);
if (statsRes.data) setStats(statsRes.data);
if (dailyRes.data) setDailyStats(dailyRes.data || []);
if (logsRes.data) setOperationLogs(Array.isArray(logsRes.data) ? logsRes.data : []);
if (auditRes.data) setAuditLogs(Array.isArray(auditRes.data) ? auditRes.data : []);
// Stats: backend returns raw dict (no {code,data} wrapper) — use .data or the response itself
const statsData = statsRes?.data || statsRes;
if (statsData && typeof statsData === 'object') setStats(statsData);
// Daily stats: backend returns {code, data: {days, data: [...]}} — access nested .data.data
const dailyData = dailyRes?.data?.data || (Array.isArray(dailyRes?.data) ? dailyRes.data : []) || [];
setDailyStats(Array.isArray(dailyData) ? dailyData : []);
// Recent logs: backend returns raw list (no wrapper) — use the response directly if it's an array
const logsData = Array.isArray(logsRes) ? logsRes : (Array.isArray(logsRes?.data) ? logsRes.data : []);
setOperationLogs(logsData);
// Recent audit: same as logs
const auditData = Array.isArray(auditRes) ? auditRes : (Array.isArray(auditRes?.data) ? auditRes.data : []);
setAuditLogs(auditData);
} catch (err) {
console.error('Dashboard数据加载失败:', err);
} finally {