From eaeb143190931711575e28e17f1fcb8774f57d75 Mon Sep 17 00:00:00 2001 From: kennethcheng Date: Wed, 29 Apr 2026 01:56:50 +0800 Subject: [PATCH] =?UTF-8?q?fix(ui):=20=E4=BF=AE=E5=A4=8D=E4=BF=AE=E6=94=B9?= =?UTF-8?q?=E6=B5=81=E6=B0=B4=E5=BC=B9=E7=AA=97=E6=97=A0=E5=9B=9E=E6=98=BE?= =?UTF-8?q?=E9=97=AE=E9=A2=98=EF=BC=8C=E5=B9=B6=E9=94=81=E5=AE=9A=E6=A0=87?= =?UTF-8?q?=E7=9A=84=E4=B8=8E=E7=B1=BB=E5=9E=8B=E5=AD=97=E6=AE=B5=E9=98=B2?= =?UTF-8?q?=E6=AD=A2=E7=AF=A1=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/dashboard/page.tsx | 1 + .../update-transaction-dialog.tsx | 59 ++++++++++++++++++- 2 files changed, 57 insertions(+), 3 deletions(-) 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({
+
+ + 标的资产 + + + + 交易类型 + + +