diff --git a/app/dashboard/page.tsx b/app/dashboard/page.tsx index 4c4453a..59a515e 100644 --- a/app/dashboard/page.tsx +++ b/app/dashboard/page.tsx @@ -389,6 +389,7 @@ export default function DashboardPage() { !open && setUpdateTarget(null)} + assets={assets} transaction={updateTarget} onSuccess={handleUpdateSubmit} /> diff --git a/src/components/transactions/update-transaction-dialog.tsx b/src/components/transactions/update-transaction-dialog.tsx index cb641d8..291778f 100644 --- a/src/components/transactions/update-transaction-dialog.tsx +++ b/src/components/transactions/update-transaction-dialog.tsx @@ -1,6 +1,6 @@ 'use client'; -import { useState, useTransition } from 'react'; +import { useState, useTransition, useEffect } from 'react'; import { useForm } from 'react-hook-form'; import { zodResolver } from '@hookform/resolvers/zod'; import { z } from 'zod'; @@ -32,6 +32,20 @@ import { Button } from '@/components/ui/button'; import { toast } from 'sonner'; import { updateTransaction } from '@/actions/transaction'; +const txTypeLabels: Record = { + BUY: '买入 (BUY)', + SELL: '卖出 (SELL)', + DIVIDEND: '分红 (DIVIDEND)', + AIRDROP: '空投 (AIRDROP)', + FEE: '手续费 (FEE)', +}; + +interface Asset { + id: string; + symbol: string; + name: string | null; +} + const updateTransactionSchema = z.object({ quantity: z.string().regex(/^-?\d+(\.\d+)?$/, '数量必须是数字'), price: z.string().regex(/^-?\d+(\.\d+)?$/, '价格必须是数字'), @@ -45,8 +59,10 @@ type UpdateForm = z.infer; interface UpdateTransactionDialogProps { open: boolean; onOpenChange: (open: boolean) => void; + assets?: Asset[]; transaction: { id: string; + assetId: string; txType: string; quantity: string; price: string; @@ -60,6 +76,7 @@ interface UpdateTransactionDialogProps { export function UpdateTransactionDialog({ open, onOpenChange, + assets, transaction, onSuccess, }: UpdateTransactionDialogProps) { @@ -76,7 +93,7 @@ export function UpdateTransactionDialog({ }, }); - useState(() => { + useEffect(() => { if (transaction && open) { form.reset({ quantity: transaction.quantity.toString(), @@ -88,7 +105,7 @@ export function UpdateTransactionDialog({ : '', }); } - }); + }, [transaction, open, form]); function handleSubmit(values: UpdateForm) { if (!transaction) return; @@ -120,6 +137,42 @@ export function UpdateTransactionDialog({
+
+ + 标的资产 + + + + 交易类型 + + +