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'; import { ServiceCode } from '../model/alimtalk/types'; import { getAlimtalkAlimClText, getAlimtalkSendClTypeText, getAlimtalkSendTypeText, getAlimtalkServiceCodeText } from '../model/alimtalk/constant'; import { getAuthResultStatusText, getTransTypeText } from '../model/face-auth/constant'; import { getPayoutStatusText } from '../model/payout/constant'; export const ListItem = ({ additionalServiceCategory, mid, tid, orderDate, paymentStatus, orderTime,buyerPhoneLast4,statusColor, applicationDate, requestDate, bankName, accountNo, resultStatus, resultMessage, amount, sendMethod, processStatus, registDate, transactionTime,transactionCode,transactionType, accountName,submallId, settlementDate, companyName,orderStatus, alimCl, sendType, sendCl, paymentMethod, receiverName, requestId, subReqId, buyerName, receiverInfo, seq, serviceCode, sendDate, authStatus, status, smsCl, groupId, userMallId, transType, authResult, failReason, requestTime, resendEnabled, 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 (transactionType === '') { rs = ''; } else if (transactionType === "APPROVAL") { rs = 'blue'; } else if (transactionType === "FULL_CANCEL") { rs = 'gray'; } else if (transactionType === 'PARTIAL_CANCEL') { rs = 'gray'; } } else if (additionalServiceCategory === AdditionalServiceCategory.AccountHolderAuth) { if (authStatus === "REQUEST" || authStatus === "SUCCESS") { rs = 'blue'; } else if (authStatus === "FAIL") { rs = 'gray'; } } else if (additionalServiceCategory === AdditionalServiceCategory.AccountHolderSearch) { if (resultStatus === "SUCCESS") { rs = 'blue'; } else if (resultStatus === "FAIL") { rs = 'gray'; } } else if (additionalServiceCategory === AdditionalServiceCategory.Alimtalk) { if (sendCl === "SUCCESS" || sendCl === "REQUEST") { rs = 'blue'; } else { rs = 'gray'; } } else if (additionalServiceCategory === AdditionalServiceCategory.FaceAuth) { if (authResult === "SUCCESS") { rs = 'blue'; } else if (authResult === "FAIL") { rs = 'gray'; } } else if (additionalServiceCategory === AdditionalServiceCategory.LinkPaymentHistory) { if (paymentStatus === "0" || paymentStatus === "1" || paymentStatus === "2") { rs = 'blue'; } else if (paymentStatus === "3") { rs = 'gray'; } else if (paymentStatus === '4') { 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'; } } else if (additionalServiceCategory === AdditionalServiceCategory.Payout) { if (status === "SUCCESS" || status === "REQUEST") { rs = 'blue'; } else if (status === "FAIL") { rs = 'gray'; } } else if (additionalServiceCategory === AdditionalServiceCategory.Ars) { if (paymentStatus === "PENDING" || paymentStatus === "SUCCESS") { rs = 'blue'; } else { 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 } }); } else if (additionalServiceCategory === AdditionalServiceCategory.Alimtalk) { navigate(PATHS.additionalService.alimtalk.detail, { state: { additionalServiceCategory: additionalServiceCategory, mid: mid, tid: tid, } }); } // else if (additionalServiceCategory === AdditionalServiceCategory.FaceAuth) { // navigate(PATHS.additionalService.faceAuth.detail, { // state: { // additionalServiceCategory: additionalServiceCategory, // mid: mid // } // }) // } else { alert('additionalServiceCategory가 존재하지 않습니다.'); } }; const getTime = () => { let timeStr = ''; if (additionalServiceCategory === AdditionalServiceCategory.KeyInPayment) { let time = transactionTime?.substring(0, 4); 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 { timeStr = requestDate?.substring(8, 10) + ':' + requestDate?.substring(10, 12); } } else if (additionalServiceCategory === AdditionalServiceCategory.Ars) { timeStr = orderTime?.substring(0, 2) + ':' + orderTime?.substring(2, 4); } else if (additionalServiceCategory === AdditionalServiceCategory.Alimtalk) { let time = sendDate?.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 = authStatus || ''; } else if (additionalServiceCategory === AdditionalServiceCategory.FaceAuth) { statusText = getTransTypeText(transType) } else if (additionalServiceCategory === AdditionalServiceCategory.SMSPayment) { statusText = getSmsClName(smsCl); } else if (additionalServiceCategory === AdditionalServiceCategory.KeyInPayment) { statusText = getKeyInPaymentPaymentStatusName(transactionType) } 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 = `${transactionCode}`; } else if (additionalServiceCategory === AdditionalServiceCategory.AccountHolderAuth) { str = `${accountName}(${accountNo})`; } else if (additionalServiceCategory === AdditionalServiceCategory.AccountHolderSearch) { str = `${accountNo}`; } else if (additionalServiceCategory === AdditionalServiceCategory.FaceAuth) { str = `${userMallId}(${mid})`; } else if (additionalServiceCategory === AdditionalServiceCategory.LinkPaymentHistory ) { str = `${buyerName}`; } else if (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) { if (buyerPhoneLast4) { str = `${buyerName}(${buyerPhoneLast4})` } else { str = `${buyerName}` } } else if (additionalServiceCategory === AdditionalServiceCategory.Ars) { str = `${buyerName}(${tid})`; } else if (additionalServiceCategory === AdditionalServiceCategory.Alimtalk) { str = `${receiverName}(${getAlimtalkSendTypeText(sendType)})`; } return str; }; const getDetail = () => { let rs = []; if (additionalServiceCategory === AdditionalServiceCategory.KeyInPayment) { rs.push(