This commit is contained in:
Jay Sheen
2025-11-03 16:12:17 +09:00
12 changed files with 99 additions and 18 deletions

View File

@@ -113,6 +113,7 @@ export interface ExtensionAlimtalkDownloadExcelParams {
toDate?: string; toDate?: string;
sendType?: AlimtalkSendType; sendType?: AlimtalkSendType;
sendCl?: AlimTalkSendCl; sendCl?: AlimTalkSendCl;
email?: string;
}; };
export interface ExtensionAlimtalkDownloadExcelResponse { export interface ExtensionAlimtalkDownloadExcelResponse {

View File

@@ -25,6 +25,16 @@ export interface ExtensionArsResendParams {
}; };
export interface ExtensionArsResendResponse { export interface ExtensionArsResendResponse {
status: boolean; status: boolean;
error?: {
root?: string;
errKey?: string;
code?: string;
message?: string;
timestamp?: string;
details?: {
path?: string;
};
};
}; };
export interface ExtensionArsListParams { export interface ExtensionArsListParams {
mid?: string; mid?: string;
@@ -54,6 +64,7 @@ export interface ExtensionArsListResponse extends DefaulResponsePagination {
export interface ExtensionArsDownloadExcelParams { export interface ExtensionArsDownloadExcelParams {
mid?: string; mid?: string;
moid?: string; moid?: string;
email?: string;
fromDate?: string; fromDate?: string;
toDate?: string; toDate?: string;
paymentStatus?: PaymentStatus; paymentStatus?: PaymentStatus;

View File

@@ -83,6 +83,7 @@ export interface ExtensionKeyinDownloadExcelParams extends ExtensionRequestParam
fromDate?: string; fromDate?: string;
toDate?: string; toDate?: string;
paymentStatus?: string; paymentStatus?: string;
email?: string
minAmount?: number; minAmount?: number;
maxAmount?: number; maxAmount?: number;
} }

View File

@@ -132,7 +132,7 @@ export interface ExtensionSmsDownloadExcelParams extends ExtensionRequestParams
fromDate: string; fromDate: string;
toDate: string; toDate: string;
smsCl: string; smsCl: string;
email: string;
} }
export interface ExtensionSmsDownloadExcelResponse { export interface ExtensionSmsDownloadExcelResponse {

View File

@@ -38,6 +38,18 @@ export const ListItem = ({
}); });
}; };
const getDotClass = () => {
let rs = 'gray';
if(periodType === SettlementPeriodType.SETTLEMENT_DATE && settlementAmount){
if(settlementAmount > 0) rs = 'blue';
}
else if(periodType === SettlementPeriodType.TRANSACTION_DATE && transactionAmount){
if(transactionAmount > 0) rs = 'blue';
}
return rs;
};
return ( return (
<> <>
<div <div
@@ -45,7 +57,7 @@ export const ListItem = ({
onClick={ () => onClickToNavigate() } onClick={ () => onClickToNavigate() }
> >
<div className="transaction-status"> <div className="transaction-status">
<div className={ `status-dot blue`}></div> <div className={ `status-dot ${getDotClass()}`}></div>
</div> </div>
<div className="transaction-content"> <div className="transaction-content">
{ (periodType === SettlementPeriodType.SETTLEMENT_DATE) && { (periodType === SettlementPeriodType.SETTLEMENT_DATE) &&

View File

@@ -1,7 +1,7 @@
import { NumericFormat } from 'react-number-format'; import { NumericFormat } from 'react-number-format';
import { PATHS } from '@/shared/constants/paths'; import { PATHS } from '@/shared/constants/paths';
import { useNavigate } from '@/shared/lib/hooks/use-navigate'; import { useNavigate } from '@/shared/lib/hooks/use-navigate';
import { ListItemProps, TransactionCategory } from '../model/types'; import { BillingRequestStatus, CashReceiptTransactionType, EscrowDeliveryStatus, ListItemProps, TransactionCategory } from '../model/types';
import moment from 'moment'; import moment from 'moment';
import { useStore } from '@/shared/model/store'; import { useStore } from '@/shared/model/store';
import { getAllTransactionStatusCode, getPaymentMethodName } from '../model/contant'; import { getAllTransactionStatusCode, getPaymentMethodName } from '../model/contant';
@@ -16,7 +16,7 @@ export const ListItem = ({
paymentMethod, processResult, transactionType, paymentMethod, processResult, transactionType,
transactionDateTime, transactionAmount, transactionDateTime, transactionAmount,
deliveryStatus, settlementStatus, deliveryStatus, settlementStatus,
cancelStatus, billKey, orderNumber cancelStatus, billKey, orderNumber, requestStatus
}: ListItemProps) => { }: ListItemProps) => {
const { navigate } = useNavigate(); const { navigate } = useNavigate();
const { t } = useTranslation(); const { t } = useTranslation();
@@ -34,17 +34,55 @@ export const ListItem = ({
return rs; return rs;
}; };
const getDotClass = (str?: string) => { const getDotClass = () => {
let rs = ''; let rs = '';
if(statusCode === '0'){ if(transactionCategory === TransactionCategory.AllTransaction){
rs = ''; if(statusCode === '0'
} || statusCode === '4'
else if(statusCode === '1'){ ){
rs = 'blue'; rs = 'blue';
} }
else if(statusCode === '2'){ else if(statusCode === '1'
|| statusCode === '2'
|| statusCode === '3'
){
rs = 'gray'; rs = 'gray';
} }
}
else if(transactionCategory === TransactionCategory.CashReceipt){
if(transactionType === CashReceiptTransactionType.APPROVAL){
rs = 'blue';
}
else if(transactionType === CashReceiptTransactionType.CANCEL){
rs = 'gray';
}
}
else if(transactionCategory === TransactionCategory.Escrow){
if(deliveryStatus === EscrowDeliveryStatus.DELIVERY_INSERT
|| deliveryStatus === EscrowDeliveryStatus.DELIVERY_COMPLETE
|| deliveryStatus === EscrowDeliveryStatus.PURCHASE_CONFIRM
){
rs = 'blue';
}
else if(deliveryStatus === EscrowDeliveryStatus.PAY_COMPLETE
|| deliveryStatus === EscrowDeliveryStatus.PURCHASE_REJECT
|| deliveryStatus === EscrowDeliveryStatus.RETURN_PROCESSING
|| EscrowDeliveryStatus.DEPOSIT_COMPLETE
){
rs = 'gray';
}
}
else if(transactionCategory === TransactionCategory.Billing){
if(requestStatus === BillingRequestStatus.SUCCESS){
rs = 'blue';
}
else if(requestStatus === BillingRequestStatus.IN_PROGRESS
|| requestStatus === BillingRequestStatus.REQUEST_CANCEL
){
rs = 'gray';
}
}
return rs; return rs;
}; };

View File

@@ -150,7 +150,7 @@ export const AlimtalkListPage = () => {
toDate: toDate, toDate: toDate,
sendType: sendType, sendType: sendType,
sendCl: sendCl, sendCl: sendCl,
//email: selectedEmail email: selectedEmail
}; };
extensionAlimtalkDownloadExcel(params).then((rs: ExtensionAlimtalkDownloadExcelResponse) => { extensionAlimtalkDownloadExcel(params).then((rs: ExtensionAlimtalkDownloadExcelResponse) => {
console.log('Excel Download Status:', rs.status); console.log('Excel Download Status:', rs.status);

View File

@@ -24,6 +24,7 @@ import moment from 'moment';
import { ArsResendSmsBottomSheet } from '@/entities/additional-service/ui/ars/resend-sms-bottom-sheet'; import { ArsResendSmsBottomSheet } from '@/entities/additional-service/ui/ars/resend-sms-bottom-sheet';
import { useExtensionArsResendMutation } from '@/entities/additional-service/api/ars/use-extension-ars-resend-mutation'; import { useExtensionArsResendMutation } from '@/entities/additional-service/api/ars/use-extension-ars-resend-mutation';
import { getArsOrderStatusName, getArsPaymentStatusName } from '@/entities/additional-service/model/ars/constant'; import { getArsOrderStatusName, getArsPaymentStatusName } from '@/entities/additional-service/model/ars/constant';
import { snackBar } from '@/shared/lib';
export const ArsDetailPage = () => { export const ArsDetailPage = () => {
const { t, i18n } = useTranslation(); const { t, i18n } = useTranslation();
@@ -74,7 +75,19 @@ export const ArsDetailPage = () => {
tid: tid tid: tid
} }
extensionArsResend(params).then((rs: ExtensionArsResendResponse) => { extensionArsResend(params).then((rs: ExtensionArsResendResponse) => {
console.log(rs); if (rs.status) {
snackBar("SMS 재전송을 성공하였습니다.");
setBottomSheetOn(false);
callDetail(); // 상세 정보 갱신
} else {
const errorMessage = rs.error?.message || 'SMS 재전송이 실패하였습니다.';
snackBar(`[실패] ${errorMessage}`);
}
}).catch((error) => {
const errorMessage = error?.response?.data?.error?.message ||
error?.message ||
'SMS 재전송 중 오류가 발생했습니다.';
snackBar(`[실패] ${errorMessage}`);
}); });
}; };

View File

@@ -144,7 +144,7 @@ export const ArsListPage = () => {
orderStatus: orderStatus, orderStatus: orderStatus,
minAmount: minAmount, minAmount: minAmount,
maxAmount: maxAmount, maxAmount: maxAmount,
//email: selectedEmail email: selectedEmail
}; };
extensionArsDownloadExcel(params).then((rs: ExtensionArsDownloadExcelResponse) => { extensionArsDownloadExcel(params).then((rs: ExtensionArsDownloadExcelResponse) => {
console.log('Excel Download Status:', rs); console.log('Excel Download Status:', rs);

View File

@@ -146,7 +146,7 @@ export const KeyInPaymentPage = () => {
paymentStatus: transactionType, paymentStatus: transactionType,
minAmount: minAmount, minAmount: minAmount,
maxAmount: maxAmount, maxAmount: maxAmount,
//email: selectedEmail email: selectedEmail
}).then((rs) => { }).then((rs) => {
console.log('Excel Download Status:', rs.status); console.log('Excel Download Status:', rs.status);
}); });

View File

@@ -81,6 +81,10 @@ export const KeyInPaymentRequestPage = () => {
}; };
keyInApply(keyInApplyParams).then((rs) => { keyInApply(keyInApplyParams).then((rs) => {
console.log('KEY-IN 결제 응답:', rs);
console.log('rs.data:', rs.data);
console.log('rs.data?.resultMessage:', rs.data?.resultMessage);
if (rs.status && rs.data?.success) { if (rs.status && rs.data?.success) {
// 성공: 화면 유지 & 입력 내용 초기화 // 성공: 화면 유지 & 입력 내용 초기화
snackBar("KEY-IN 결제 신청을 성공하였습니다.") snackBar("KEY-IN 결제 신청을 성공하였습니다.")
@@ -90,6 +94,7 @@ export const KeyInPaymentRequestPage = () => {
const errorMessage = rs.data?.resultMessage || const errorMessage = rs.data?.resultMessage ||
rs.error?.message || rs.error?.message ||
'결제 신청에 실패했습니다.'; '결제 신청에 실패했습니다.';
console.log('최종 errorMessage:', errorMessage);
// HTML 태그 제거 // HTML 태그 제거
const cleanMessage = errorMessage.replace(/<br\s*\/?>/gi, ' ').trim(); const cleanMessage = errorMessage.replace(/<br\s*\/?>/gi, ' ').trim();
snackBar(`[실패] ${cleanMessage}`); snackBar(`[실패] ${cleanMessage}`);

View File

@@ -149,7 +149,7 @@ export const SmsPaymentPage = () => {
fromDate: fromDate, fromDate: fromDate,
toDate: toDate, toDate: toDate,
smsCl: smsCl, smsCl: smsCl,
//email: selectedEmail email: selectedEmail
}).then((rs) => { }).then((rs) => {
console.log('Excel Download Status:', rs.status); console.log('Excel Download Status:', rs.status);
}); });