From c10c4a5d0ee19519ccd9ae0db283fc213696effe Mon Sep 17 00:00:00 2001 From: hzm <934585316@qq.com> Date: Wed, 11 Mar 2026 08:22:09 +0800 Subject: [PATCH] =?UTF-8?q?feat=EF=BC=9A=E6=B7=BB=E5=8A=A0=E5=9F=BA?= =?UTF-8?q?=E9=87=91=E5=88=B0=E5=88=86=E7=BB=84=E5=BC=B9=E6=A1=86=E5=A2=9E?= =?UTF-8?q?=E5=8A=A0=E6=8C=81=E4=BB=93=E9=87=91=E9=A2=9D=E6=98=BE=E7=A4=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/components/AddFundToGroupModal.jsx | 54 ++++++++++++++++---------- app/page.jsx | 1 + 2 files changed, 35 insertions(+), 20 deletions(-) diff --git a/app/components/AddFundToGroupModal.jsx b/app/components/AddFundToGroupModal.jsx index 87dfb8f..260575d 100644 --- a/app/components/AddFundToGroupModal.jsx +++ b/app/components/AddFundToGroupModal.jsx @@ -1,14 +1,26 @@ 'use client'; import { useState } from 'react'; -import { motion } from 'framer-motion'; import { CloseIcon, PlusIcon } from './Icons'; +import { + Dialog, + DialogContent, + DialogTitle, +} from '@/components/ui/dialog'; -export default function AddFundToGroupModal({ allFunds, currentGroupCodes, onClose, onAdd }) { +export default function AddFundToGroupModal({ allFunds, currentGroupCodes, holdings = {}, onClose, onAdd }) { const [selected, setSelected] = useState(new Set()); const availableFunds = (allFunds || []).filter(f => !(currentGroupCodes || []).includes(f.code)); + const getHoldingAmount = (fund) => { + const holding = holdings[fund?.code]; + if (!holding || !holding.share || holding.share <= 0) return null; + const nav = Number(fund?.dwjz) || Number(fund?.gsz) || Number(fund?.estGsz) || 0; + if (!nav) return null; + return holding.share * nav; + }; + const toggleSelect = (code) => { setSelected(prev => { const next = new Set(prev); @@ -18,24 +30,21 @@ export default function AddFundToGroupModal({ allFunds, currentGroupCodes, onClo }); }; + const handleOpenChange = (open) => { + if (!open) { + onClose?.(); + } + }; + return ( - - + e.stopPropagation()} + overlayClassName="modal-overlay" + style={{ maxWidth: '500px', width: '90vw', zIndex: 99 }} > + 添加基金到分组
@@ -63,9 +72,14 @@ export default function AddFundToGroupModal({ allFunds, currentGroupCodes, onClo
{selected.has(fund.code) &&
}
-
+
{fund.name}
#{fund.code}
+ {getHoldingAmount(fund) != null && ( +
+ 持仓金额:¥{getHoldingAmount(fund).toFixed(2)} +
+ )}
))} @@ -84,7 +98,7 @@ export default function AddFundToGroupModal({ allFunds, currentGroupCodes, onClo 确定 ({selected.size})
- - + + ); } diff --git a/app/page.jsx b/app/page.jsx index 3a1304d..52551b1 100644 --- a/app/page.jsx +++ b/app/page.jsx @@ -4300,6 +4300,7 @@ export default function HomePage() { g.id === currentTab)?.codes || []} + holdings={holdings} onClose={() => setAddFundToGroupOpen(false)} onAdd={handleAddFundsToGroup} />