fix: 修复日期范围选择器时区和性能问题

- 修复时区问题:使用本地时区格式化日期,避免 toISOString() 导致的日期偏移
- 优化日期范围选择器性能:使用 untrack 避免循环更新
- 统一日期格式化方法:在 utils.ts 中添加 formatLocalDate 工具函数
- 修复分页逻辑:优化页码计算和显示
- 更新相关页面:bills 和 analysis 页面使用统一的日期格式化方法
This commit is contained in:
2026-01-10 01:51:18 +08:00
parent 087ae027cc
commit 48332efce4
5 changed files with 75 additions and 28 deletions

View File

@@ -11,6 +11,7 @@
import { Button } from '$lib/components/ui/button';
import type { BillRecord } from '$lib/api';
import { pieColors } from '$lib/constants/chart';
import { formatLocalDate } from '$lib/utils';
import BillRecordsTable from './BillRecordsTable.svelte';
interface Props {
@@ -96,7 +97,7 @@
const day = d.getDay();
const diff = d.getDate() - day + (day === 0 ? -6 : 1); // 调整到周一
d.setDate(diff);
return d.toISOString().split('T')[0];
return formatLocalDate(d);
}
// 获取月份标识
@@ -526,7 +527,7 @@
// 点击图表任意位置都触发,选择最近的日期
const clickedDate = data[closestIdx].date;
const dateStr = clickedDate.toISOString().split('T')[0];
const dateStr = formatLocalDate(clickedDate);
// 找出当天的所有支出记录
selectedDate = clickedDate;