import { motion } from 'framer-motion'; import { useTranslation } from 'react-i18next'; import { useEffect, useState } from 'react'; import { ExtensionFundAccountDownloadReceiptParams, ExtensionFundAccountDownloadReceiptResponse, ExtensionFundAccountResultDetailParams, ExtensionFundAccountResultDetailResponse, } from '@/entities/additional-service/model/fund-account/types'; import moment from 'moment'; import { useExtensionFundAccountResultDetailMutation } from '@/entities/additional-service/api/fund-account/use-extension-fund-account-result-detail-mutation'; import { useExtensionFundAccountDownloadReceiptMutation } from '@/entities/additional-service/api/fund-account/use-extension-fund-account-download-certificate-mutation'; import { EmailBottomSheet } from '@/entities/common/ui/email-bottom-sheet'; import { DetailMotionDuration, DetailMotionStyle, DetailMotionVariants } from '@/entities/common/model/constant'; import { FullMenuClose } from '@/entities/common/ui/full-menu-close'; import { showAlert } from '@/widgets/show-alert'; export interface FundAccountResultDetailProps { detailOn: boolean; setDetailOn: (detailOn: boolean) => void; mid: string; tid: string; }; export const FundAccountResultDetail = ({ detailOn, setDetailOn, mid, tid }: FundAccountResultDetailProps) => { const { t } = useTranslation(); const [detail, setDetail] = useState(); const [emailBottomSheetOn, setEmailBottomSheetOn] = useState(false); const { mutateAsync: extensionFundAccountResultDetail } = useExtensionFundAccountResultDetailMutation(); const { mutateAsync: extensionFundAccountDownlaodReceipt } = useExtensionFundAccountDownloadReceiptMutation(); const callDetail = () => { let params: ExtensionFundAccountResultDetailParams = { mid: mid, tid: tid, }; extensionFundAccountResultDetail(params).then((rs: ExtensionFundAccountResultDetailResponse) => { console.log(rs.requestDate) setDetail(rs); }).catch((e: any) => { if (e.response?.data?.error?.message) { showAlert(e.response?.data?.error?.message); return; } }); }; const onClickToOpenEmailBottomSheet = () => { setEmailBottomSheetOn(true); }; const onSendRequest = (selectedEmail?: string) => { if (selectedEmail) { let params: ExtensionFundAccountDownloadReceiptParams = { mid: mid, tid: tid, email: selectedEmail }; extensionFundAccountDownlaodReceipt(params).then((rs: ExtensionFundAccountDownloadReceiptResponse) => { console.log('Receipt Download Status:', rs); }).catch((e: any) => { if(e.response?.data?.error?.message){ showAlert(e.response?.data?.error?.message); return; } }); } setEmailBottomSheetOn(false); }; const onClickToClose = () => { setDetailOn(false); }; useEffect(() => { if (!!mid && !!tid) { callDetail(); } }, [mid, tid]); return ( <>
{t('additionalService.fundAccount.transferDetailTitle')}
{t('home.money', { value: new Intl.NumberFormat('en-US').format(detail?.amount || 0) })}
{detail?.accountName}({detail?.accountNo})
{detail?.applicationDate && (
{moment(detail?.applicationDate, 'YYYYMMDDHHmmss').format('YYYY.MM.DD HH:mm:ss')}
)}
{/* ✅ resultMessage가 "정상"일 때만 표시 */} {detail?.resultMessage === '정상' && (
)}
{t('additionalService.fundAccount.detailInfo')}
  • {t('additionalService.fundAccount.requestDateTime')} {moment(detail?.requestDate, 'YYYYMMDDHHmmss').format('YYYY.MM.DD HH:mm:ss')}
  • {t('additionalService.fundAccount.transferDateTime')} {detail?.applicationDate ? moment(detail?.applicationDate, 'YYYYMMDDHHmmss').format('YYYY.MM.DD HH:mm:ss') : '-'}
  • {t('additionalService.fundAccount.transferResult')} {detail?.resultMessage || '-'}
  • {t('additionalService.fundAccount.failureReason')} {detail?.failReason || '-'}
  • {t('additionalService.fundAccount.beneficiaryName')} {detail?.accountName}
  • {t('additionalService.fundAccount.bank')} {detail?.bankName}
  • {t('additionalService.fundAccount.accountNumber')} {detail?.accountNo}
  • MID {mid}
  • {t('transaction.fields.orderNumber')} {detail?.moid}
  • TID {detail?.tid}
); };