import { NumericFormat } from 'react-number-format'; import { PATHS } from '@/shared/constants/paths'; import { useNavigate } from '@/shared/lib/hooks/use-navigate'; import { ListItemProps, AdditionalServiceCategory } from '../model/types'; import { getPaymentStatusText, getProcessStatusText, getSendMethodText } from '../lib/payment-status-utils'; import { getFundAccountResultStatusName, getFundAccountStatusName } from '../model/fund-account/constant'; import moment from 'moment'; import { FundAccountResultStatus } from '../model/fund-account/types'; import { getSmsClName } from '../model/sms-payment/constant'; import { getKeyInPaymentPaymentStatusName } from '../model/key-in/constant'; import { getArsPaymentStatusName, getArsOrderStatusName } from '../model/ars/constant'; export const ListItem = ({ additionalServiceCategory, mid, tid, paymentDate, paymentStatus, applicationDate, requestDate, bankName, accountNo, resultStatus, resultMessage, amount, sendMethod, processStatus,registDate, accountName, transferStatus, submallId, settlementDate, companyName, disbursementStatus, disbursementAmount, orderStatus, arsPaymentMethod, alimCl, sendType, sendCl, paymentMethod, receiverName, requestId,subReqId, buyerName,receiverInfo, seq, smsCl, name, onResendClick }: ListItemProps) => { const { navigate } = useNavigate(); const getItemClass = () => { let rs = ''; if (paymentStatus === '') { rs = ''; } else if (paymentStatus === "APPROVAL") { rs = 'approved'; } else if (paymentStatus === "ALL_CANCEL") { rs = 'refund'; } else if (paymentStatus === 'AFTER_CANCEL') { rs = 'refund'; } return rs; }; const getDotClass = (str?: string) => { let rs = ''; if (additionalServiceCategory === AdditionalServiceCategory.KeyInPayment) { if (paymentStatus === '') { rs = ''; } else if (paymentStatus === "APPROVAL") { rs = 'blue'; } else if (paymentStatus === "ALL_CANCEL") { rs = 'gray'; } else if (paymentStatus === 'AFTER_CANCEL') { rs = 'gray'; } } else if (additionalServiceCategory === AdditionalServiceCategory.AccountHolderAuth) { if (transferStatus === "REQUEST" || transferStatus === "SUCCESS") { rs = 'blue'; } else if (transferStatus === "FAIL") { rs = 'gray'; } } else if (additionalServiceCategory === AdditionalServiceCategory.AccountHolderSearch) { if (resultStatus === "SUCCESS") { rs = 'blue'; } else if (resultStatus === "FAIL") { rs = 'gray'; } } else if (additionalServiceCategory === AdditionalServiceCategory.FaceAuth) { if (resultStatus === "SUCCESS") { rs = 'blue'; } else if (resultStatus === "FAIL") { rs = 'gray'; } } else if (additionalServiceCategory === AdditionalServiceCategory.LinkPaymentHistory) { if (paymentStatus === "PAYMENT_COMPLETE") { rs = 'blue'; } else if (paymentStatus === "ACTIVE") { rs = 'blue'; } else if (paymentStatus === "DEPOSIT_REQUEST") { rs = 'blue'; } else if (paymentStatus === "PAYMENT_FAIL") { rs = 'blue'; } else if (paymentStatus === "INACTIVE") { rs = 'gray'; } } else if (additionalServiceCategory === AdditionalServiceCategory.LinkPaymentWait) { if (processStatus === "SEND_REQUEST") { rs = 'blue' } else { rs = 'gray' } } else if (additionalServiceCategory === AdditionalServiceCategory.SMSPayment) { if (smsCl === "VACCOUNT_REQ_DEPOSIT") { rs = 'blue' } else { rs = 'gray' } } else if (additionalServiceCategory === AdditionalServiceCategory.FundAccountTransfer) { if (resultStatus === "REQUEST_SUCCESS" || resultStatus === "REGIST_COMPLETE" || resultStatus === "TRANSFER_REQUEST") { rs = 'blue'; } else if (resultStatus === "REQUEST_FAIL") { rs = 'gray'; } } else if (additionalServiceCategory === AdditionalServiceCategory.FundAccountResult) { if (resultStatus === "REQUEST" || resultStatus === "SUCCESS") { rs = 'blue'; } else if (resultStatus === "FAIL") { rs = 'gray'; } } return rs; }; const onClickToNavigate = () => { // 상세페이지 없음 if (additionalServiceCategory === AdditionalServiceCategory.KeyInPayment || additionalServiceCategory === AdditionalServiceCategory.SMSPayment || additionalServiceCategory === AdditionalServiceCategory.FaceAuth ) { return; } //이하 상세페이지 존재 else if (additionalServiceCategory === AdditionalServiceCategory.AccountHolderAuth) { navigate(PATHS.additionalService.accountHolderAuth.detail, { state: { additionalServiceCategory: additionalServiceCategory, mid: mid, tid: tid } }) } else if (additionalServiceCategory === AdditionalServiceCategory.AccountHolderSearch) { navigate(PATHS.additionalService.accountHolderSearch.detail, { state: { additionalServiceCategory: additionalServiceCategory, mid: mid, tid: tid } }); } else if (additionalServiceCategory === AdditionalServiceCategory.LinkPaymentHistory) { navigate(PATHS.additionalService.linkPayment.detail, { state: { additionalServiceCategory: additionalServiceCategory, mid: mid, tid: tid, requestId: requestId, subReqId: subReqId } }); } else if (additionalServiceCategory === AdditionalServiceCategory.LinkPaymentWait) { navigate(PATHS.additionalService.linkPayment.pendingDetail, { state: { additionalServiceCategory: additionalServiceCategory, mid: mid, tid: tid, requestId: requestId } }); } else if (additionalServiceCategory === AdditionalServiceCategory.FundAccountTransfer) { navigate(PATHS.additionalService.fundAccount.transferDetail, { state: { additionalServiceCategory: additionalServiceCategory, seq: seq } }); } else if (additionalServiceCategory === AdditionalServiceCategory.FundAccountResult) { navigate(PATHS.additionalService.fundAccount.resultDetail, { state: { additionalServiceCategory: additionalServiceCategory, mid: mid, tid: tid } }); } else if (additionalServiceCategory === AdditionalServiceCategory.SettlementAgency) { } else if (additionalServiceCategory === AdditionalServiceCategory.Payout) { navigate(PATHS.additionalService.payout.detail, { state: { additionalServiceCategory: additionalServiceCategory, mid: mid, tid: tid } }); } else if (additionalServiceCategory === AdditionalServiceCategory.Ars) { navigate(PATHS.additionalService.ars.detail, { state: { additionalServiceCategory: additionalServiceCategory, mid: mid, tid: tid, amount: amount } }); } else if (additionalServiceCategory === AdditionalServiceCategory.Alimtalk) { navigate(PATHS.additionalService.alimtalk.detail, { state: { additionalServiceCategory: additionalServiceCategory, mid: mid, tid: tid, } }); } else { alert('additionalServiceCategory가 존재하지 않습니다.'); } }; const getTime = () => { let timeStr = ''; if (additionalServiceCategory === AdditionalServiceCategory.KeyInPayment) { let time = paymentDate?.substring(8, 12); timeStr = time?.substring(0, 2) + ':' + time?.substring(2, 4); } else if (additionalServiceCategory === AdditionalServiceCategory.AccountHolderAuth) { let time = requestDate?.substring(8, 14); timeStr = time?.substring(0, 2) + ':' + time?.substring(2, 4) + ':' + time?.substring(4, 6); } else if (additionalServiceCategory === AdditionalServiceCategory.AccountHolderSearch) { let time = requestDate?.substring(8, 14); timeStr = time?.substring(0, 2) + ':' + time?.substring(2, 4) + ':' + time?.substring(4, 6); } else if (additionalServiceCategory === AdditionalServiceCategory.FaceAuth) { let time = requestDate?.substring(8, 14); timeStr = time?.substring(0, 2) + ':' + time?.substring(2, 4) + ':' + time?.substring(4, 6); } else if (additionalServiceCategory === AdditionalServiceCategory.FundAccountTransfer) { if (registDate && registDate.length >= 12) { timeStr = registDate.substring(8, 10) + ':' + registDate.substring(10, 12); } } else if (additionalServiceCategory === AdditionalServiceCategory.FundAccountResult) { if (applicationDate && applicationDate.length >= 12) { timeStr = applicationDate.substring(8, 10) + ':' + applicationDate.substring(10, 12); } } else if (additionalServiceCategory === AdditionalServiceCategory.Ars) { let time = paymentDate?.substring(8, 12); timeStr = time?.substring(0, 2) + ':' + time?.substring(2, 4); } else if (additionalServiceCategory === AdditionalServiceCategory.Alimtalk) { let time = paymentDate?.substring(8, 12); timeStr = time?.substring(0, 2) + ':' + time?.substring(2, 4); } else { return } return timeStr; }; const getStatus = () => { let statusText = ''; if (additionalServiceCategory === AdditionalServiceCategory.FundAccountTransfer) { statusText = getFundAccountStatusName(resultStatus); } else if (additionalServiceCategory === AdditionalServiceCategory.FundAccountResult) { statusText = getFundAccountResultStatusName(resultStatus); } else if (additionalServiceCategory === AdditionalServiceCategory.AccountHolderSearch) { statusText = resultStatus || ''; } else if (additionalServiceCategory === AdditionalServiceCategory.AccountHolderAuth) { statusText = transferStatus || ''; } else if (additionalServiceCategory === AdditionalServiceCategory.FaceAuth) { statusText = status || ''; } else if (additionalServiceCategory === AdditionalServiceCategory.SMSPayment) { console.log(smsCl) statusText = getSmsClName(smsCl); } else if (additionalServiceCategory === AdditionalServiceCategory.KeyInPayment) { statusText = getKeyInPaymentPaymentStatusName(paymentStatus) } else if (additionalServiceCategory === AdditionalServiceCategory.Ars) { statusText = getArsPaymentStatusName(paymentStatus) } else { statusText = resultStatus || status || ''; } return statusText; }; const getTitle = () => { let str: string | undefined = ''; if (additionalServiceCategory === AdditionalServiceCategory.KeyInPayment) { str = `${tid}(${amount})`; } else if (additionalServiceCategory === AdditionalServiceCategory.AccountHolderAuth) { str = `${accountName}(${accountNo})`; } else if (additionalServiceCategory === AdditionalServiceCategory.AccountHolderSearch) { str = `${accountNo}`; } else if (additionalServiceCategory === AdditionalServiceCategory.FaceAuth) { str = `${name}(${tid})`; } else if (additionalServiceCategory === AdditionalServiceCategory.LinkPaymentHistory || additionalServiceCategory === AdditionalServiceCategory.LinkPaymentWait ) { str = `${buyerName}(${receiverInfo})`; } else if (additionalServiceCategory === AdditionalServiceCategory.Payout) { str = companyName; } else if (additionalServiceCategory === AdditionalServiceCategory.FundAccountTransfer || additionalServiceCategory === AdditionalServiceCategory.FundAccountResult ) { str = `${accountName}(${accountNo})`; } else if (additionalServiceCategory === AdditionalServiceCategory.SMSPayment) { str = `${paymentDate}(${paymentStatus})[추후 수정 필요]` } else if (additionalServiceCategory === AdditionalServiceCategory.Ars) { str = '이름(' + tid + ')'; } else if (additionalServiceCategory === AdditionalServiceCategory.Alimtalk) { str = `${receiverName}(${tid})`; } return str; }; const getDetail = () => { let rs = []; if (additionalServiceCategory === AdditionalServiceCategory.KeyInPayment) { rs.push(