fix(web, server): 修复数据分析页面总支出和大盘数据错误
- 数据分析页面改为使用后端返回的聚合统计,而不是前端计算 - 移除后端 page_size 最大 100 的限制,允许获取更多数据 - 确保账单管理和数据分析页面使用相同的数据源,保证一致性 - 更新版本号至 1.0.6
This commit is contained in:
@@ -10,7 +10,6 @@
|
||||
import AlertCircle from '@lucide/svelte/icons/alert-circle';
|
||||
import Activity from '@lucide/svelte/icons/activity';
|
||||
import RefreshCw from '@lucide/svelte/icons/refresh-cw';
|
||||
import Calendar from '@lucide/svelte/icons/calendar';
|
||||
|
||||
// 分析组件
|
||||
import {
|
||||
@@ -58,6 +57,10 @@
|
||||
let isDemo = $state(false);
|
||||
let serverAvailable = $state(true);
|
||||
|
||||
// 后端返回的聚合统计(准确的总支出/收入)
|
||||
let backendTotalExpense = $state(0);
|
||||
let backendTotalIncome = $state(0);
|
||||
|
||||
// 日期范围筛选 - 初始化为默认值
|
||||
let startYear = $state(defaultDates.startYear);
|
||||
let startMonth = $state(defaultDates.startMonth);
|
||||
@@ -92,7 +95,14 @@
|
||||
let allAnalysisRecords = $derived(isDemo ? demoRecords : toAnalysisRecords(allRecords)); // 全部数据用于每日趋势图
|
||||
let categoryStats = $derived(calculateCategoryStats(analysisRecords));
|
||||
let dailyExpenseData = $derived(calculateDailyExpenseData(analysisRecords));
|
||||
let totalStats = $derived(calculateTotalStats(analysisRecords));
|
||||
|
||||
// 使用后端返回的聚合统计(准确),如果没有则使用前端计算(作为后备)
|
||||
let totalStats = $derived({
|
||||
expense: backendTotalExpense > 0 ? backendTotalExpense : calculateTotalStats(analysisRecords).expense,
|
||||
income: backendTotalIncome > 0 ? backendTotalIncome : calculateTotalStats(analysisRecords).income,
|
||||
count: analysisRecords.length,
|
||||
});
|
||||
|
||||
let pieChartData = $derived(calculatePieChartData(categoryStats, totalStats.expense));
|
||||
let topExpenses = $derived(getTopExpenses(analysisRecords, 10));
|
||||
|
||||
@@ -138,6 +148,9 @@
|
||||
// 处理账单数据
|
||||
if (billsResponse.result && billsResponse.data) {
|
||||
records = billsResponse.data.bills || [];
|
||||
// 使用后端返回的聚合统计(准确的总支出/收入)
|
||||
backendTotalExpense = billsResponse.data.total_expense || 0;
|
||||
backendTotalIncome = billsResponse.data.total_income || 0;
|
||||
if (records.length === 0) {
|
||||
errorMessage = '暂无账单数据';
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user