import { useEffect, useState } from 'react'; import { Image, Input, Modal, Space, Typography } from 'antd'; import { PAYMENT_PROOF_IMAGE_MAX_COUNT } from '@dukang/shared-types'; import MultiImageUpload from './MultiImageUpload'; export function parsePaymentProofUrls(raw: unknown): string[] { if (!Array.isArray(raw)) return []; return raw.map((u) => String(u ?? '').trim()).filter(Boolean); } export function PaymentProofGallery({ urls }: { urls?: unknown }) { const list = parsePaymentProofUrls(urls); if (!list.length) return <>—; return ( {list.map((url, index) => ( ))} ); } type FinancePayProofModalProps = { open: boolean; title: string; hint: string; okText: string; confirmLoading?: boolean; onCancel: () => void; onOk: (payload: { paymentRef?: string; paymentProofUrls?: string[] }) => Promise; }; export function FinancePayProofModal({ open, title, hint, okText, confirmLoading, onCancel, onOk, }: FinancePayProofModalProps) { const [paymentRef, setPaymentRef] = useState(''); const [proofUrls, setProofUrls] = useState([]); useEffect(() => { if (open) { setPaymentRef(''); setProofUrls([]); } }, [open]); return ( { await onOk({ paymentRef: paymentRef.trim() || undefined, paymentProofUrls: proofUrls.length ? proofUrls : undefined, }); }} > {hint} setPaymentRef(e.target.value)} style={{ marginBottom: 12 }} /> 打款凭证照片(可选,银行转账回单等)
); }