import type { MoneyRecordGroup, MoneyRecordItem, QueryMoneyRecordsResult } from '@/types/money/record' import { useRouter } from 'expo-router' import React, { useEffect, useState } from 'react' import { Text, TouchableOpacity, View } from 'react-native' import { useSafeAreaInsets } from 'react-native-safe-area-context' import { ADatePicker, LucideIcon } from '@/components/common/ao' import { Fab, FabIcon } from '@/components/ui/fab' import { AddIcon } from '@/components/ui/icon' import { Progress, ProgressFilledTrack } from '@/components/ui/progress' import { deleteMoneyRecordApi, queryMoneyRecordsApi } from '@/request/api/money/record' import { useMoneyRecordStore } from '@/store/moneyRecord' import { getCurrentYearMonth } from '@/utils/time' import { toast } from '@/utils/toast' import TransactionsList from './components/TransactionsList' export default function Money() { const moneyRecordStore = useMoneyRecordStore() const router = useRouter() // 安全高度 const insets = useSafeAreaInsets() // 日期筛选 const [showDatePicker, setShowDatePicker] = useState(false) const [searchParams, setSearchParams] = useState({ record_time: getCurrentYearMonth(), }) useEffect(() => { queryMoneyRecordsApi({ record_time: searchParams.record_time, }).then((res) => { if (res.isSuccess) { moneyRecordStore.setRecords(res.data.records, res.data.total_expense, res.data.total_income, searchParams.record_time) } else { toast.show({ title: res.message || '查询错误,请稍后再试', }) } }).catch((err) => { console.log(err) }) }, [searchParams]) return ( setShowDatePicker(true)} className="flex flex-row items-center gap-1" > {searchParams.record_time} 收入 {moneyRecordStore.total_income} 支出 {moneyRecordStore.total_expense} 结余 0.00 预算 点击设置 { router.navigate({ pathname: '/money/record/editor', params: { id: data.id }, }) }} onDelete={(id) => { moneyRecordStore.deleteMoneyRecord(id) }} /> { router.navigate('/money/record/editor') }} > { setSearchParams({ ...searchParams, record_time: val, }) setShowDatePicker(false) }} onClose={() => { setShowDatePicker(false) }} /> ) }