'use client'; import { useState } from 'react'; import { CloseIcon, PlusIcon } from './Icons'; import { Dialog, DialogContent, DialogTitle, } from '@/components/ui/dialog'; 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); if (next.has(code)) next.delete(code); else next.add(code); return next; }); }; const handleOpenChange = (open) => { if (!open) { onClose?.(); } }; return ( 添加基金到分组
添加基金到分组
{availableFunds.length === 0 ? (

所有基金已在该分组中

) : (
{availableFunds.map((fund) => (
toggleSelect(fund.code)} style={{ cursor: 'pointer' }} >
{selected.has(fund.code) &&
}
{fund.name}
#{fund.code}
{getHoldingAmount(fund) != null && (
持仓金额:¥{getHoldingAmount(fund).toFixed(2)}
)}
))}
)}
); }