diff --git a/frontend/lib/swr-config.js b/frontend/lib/swr-config.js index 5213467..67e2a6e 100644 --- a/frontend/lib/swr-config.js +++ b/frontend/lib/swr-config.js @@ -1,5 +1,3 @@ -import { getRecords, getStats, getCategories, getRecurringBills } from './api'; - // 全局 SWR 配置 export const swrConfig = { refreshInterval: 0, // 默认不自动刷新 @@ -11,11 +9,3 @@ export const swrConfig = { console.error('SWR Error:', error); }, }; - -// 数据获取器映射 -export const fetchers = { - records: (month, type) => getRecords(month, type), - stats: (month) => getStats(month), - categories: () => getCategories(), - recurring: () => getRecurringBills(), -}; diff --git a/frontend/lib/utils.js b/frontend/lib/utils.js index e81ce53..b2732e1 100644 --- a/frontend/lib/utils.js +++ b/frontend/lib/utils.js @@ -7,6 +7,13 @@ export const formatMonth = (date) => export const formatMoney = (num) => (num || 0).toFixed(2); +// Format date as 'YYYY-MM-DD' +export const formatDate = (date) => + `${date.getFullYear()}-${String(date.getMonth() + 1).padStart(2, '0')}-${String(date.getDate()).padStart(2, '0')}`; + +// Get current time string 'HH:MM' +export const getCurrentTimeStr = () => new Date().toTimeString().slice(0, 5); + // Parse date-time string 'YYYY-MM-DD HH:MM' into date and time parts export const parseDateTime = (dateTimeStr) => { if (!dateTimeStr) return { datePart: '', timePart: '00:00' }; diff --git a/frontend/pages/index.js b/frontend/pages/index.js index 34c0063..2892e46 100644 --- a/frontend/pages/index.js +++ b/frontend/pages/index.js @@ -7,7 +7,7 @@ import RecordModal from '../components/RecordModal'; import { useToast } from '../components/ToastProvider'; import { useConfirm } from '../components/ConfirmProvider'; import { useCategories } from '../hooks/useCategories'; -import { getMonthStr, formatMoney, formatMonth, parseDateTime, getDatePart } from '../lib/utils'; +import { getMonthStr, formatMoney, formatMonth, parseDateTime, getDatePart, formatDate, getCurrentTimeStr } from '../lib/utils'; export default function Home() { const router = useRouter(); @@ -31,12 +31,13 @@ export default function Home() { showToast('分类加载失败', { tone: 'error' }); } }, [categoriesError]); + const [formData, setFormData] = useState({ type: 'expense', amount: '', category: '', - date: new Date().toISOString().split('T')[0], - time: new Date().toTimeString().slice(0, 5), + date: formatDate(new Date()), + time: getCurrentTimeStr(), note: '', }); @@ -53,8 +54,8 @@ export default function Home() { type: 'expense', amount: '', category: '', - date: new Date().toISOString().split('T')[0], - time: new Date().toTimeString().slice(0, 5), + date: formatDate(new Date()), + time: getCurrentTimeStr(), note: '', }); @@ -206,12 +207,16 @@ export default function Home() { [groupedRecords] ); - const getDayExpense = (date) => { - const dayRecords = groupedRecords[date] || []; - return dayRecords - .filter((record) => record.type === 'expense') - .reduce((sum, record) => sum + record.amount, 0); - }; + const dayExpenses = useMemo(() => { + const expenses = {}; + for (const date of Object.keys(groupedRecords)) { + const dayRecords = groupedRecords[date] || []; + expenses[date] = dayRecords + .filter((record) => record.type === 'expense') + .reduce((sum, record) => sum + record.amount, 0); + } + return expenses; + }, [groupedRecords]); const homeHeaderContent = (