From 73d3f7008f863e88849c65a327c765b5f769324a Mon Sep 17 00:00:00 2001 From: "focp212@naver.com" Date: Wed, 10 Sep 2025 09:38:20 +0900 Subject: [PATCH] =?UTF-8?q?=EA=B1=B0=EB=9E=98=EB=82=B4=EC=97=AD=20?= =?UTF-8?q?=EA=B4=80=EB=A0=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/entities/common/model/constants.ts | 4 +- src/entities/common/model/types.ts | 4 +- ...ts => use-cash-receipt-detail-mutation.ts} | 12 +- .../api/use-cash-receipt-list-mutation.ts | 29 ++ .../api/use-cash-receit-list-mutation.ts | 29 -- .../use-cash-receit-list-summary-mutation.ts | 29 -- .../api/use-escro-list-mutation.ts | 29 -- ...ation.ts => use-escrow-detail-mutation.ts} | 12 +- .../api/use-escrow-list-mutation.ts | 29 ++ src/entities/transaction/model/types.ts | 464 ++++++++++-------- .../transaction/ui/all-transaction-list.tsx | 4 +- src/entities/transaction/ui/billing-list.tsx | 4 +- ...h-receipt-hand-written-issuance-step1.tsx} | 4 +- ...h-receipt-hand-written-issuance-step2.tsx} | 6 +- ...-receit-list.tsx => cash-receipt-list.tsx} | 12 +- .../ui/{escro-list.tsx => escrow-list.tsx} | 10 +- .../amount-info-wrap.tsx} | 13 +- .../ui/info-wrap/detail-info-wrap.tsx | 44 ++ .../ui/info-wrap/escrow-info-wrap.tsx | 44 ++ .../important-info-wrap.tsx} | 18 +- .../ui/info-wrap/issue-info-wrap.tsx | 44 ++ .../part-cancel-info-wrap.tsx} | 11 +- .../payment-info-wrap.tsx} | 10 +- .../settlement-info-wrap.tsx} | 10 +- .../transaction-info-wrap.tsx} | 10 +- .../transaction/ui/list-date-group.tsx | 6 +- src/entities/transaction/ui/list-item.tsx | 28 +- src/entities/user/lib/use-user-info.ts | 47 +- src/pages/home/home-page.tsx | 36 +- .../all-transaction/detail-page.tsx | 133 ++--- .../transaction/all-transaction/list-page.tsx | 4 +- src/pages/transaction/billing/detail-page.tsx | 136 ++--- src/pages/transaction/billing/list-page.tsx | 45 +- .../transaction/cash-receipt/detail-page.tsx | 93 ++++ .../hand-written-issuance-page.tsx | 12 +- .../list-page.tsx | 64 +-- .../transaction/cash-receit/detail-page.tsx | 188 ------- src/pages/transaction/escro/detail-page.tsx | 188 ------- src/pages/transaction/escrow/detail-page.tsx | 140 ++++++ .../{escro => escrow}/list-page.tsx | 58 +-- src/pages/transaction/transaction-pages.tsx | 24 +- src/shared/api/urls.ts | 74 ++- src/shared/constants/paths.ts | 28 +- src/shared/constants/route-names.ts | 18 +- src/shared/ui/menu/index.tsx | 4 +- 45 files changed, 1101 insertions(+), 1110 deletions(-) rename src/entities/transaction/api/{use-cash-receit-detail-mutation.ts => use-cash-receipt-detail-mutation.ts} (52%) create mode 100644 src/entities/transaction/api/use-cash-receipt-list-mutation.ts delete mode 100644 src/entities/transaction/api/use-cash-receit-list-mutation.ts delete mode 100644 src/entities/transaction/api/use-cash-receit-list-summary-mutation.ts delete mode 100644 src/entities/transaction/api/use-escro-list-mutation.ts rename src/entities/transaction/api/{use-escro-detail-mutation.ts => use-escrow-detail-mutation.ts} (55%) create mode 100644 src/entities/transaction/api/use-escrow-list-mutation.ts rename src/entities/transaction/ui/{cash-receit-hand-written-issuance-step1.tsx => cash-receipt-hand-written-issuance-step1.tsx} (95%) rename src/entities/transaction/ui/{cash-receit-hand-written-issuance-step2.tsx => cash-receipt-hand-written-issuance-step2.tsx} (92%) rename src/entities/transaction/ui/{cash-receit-list.tsx => cash-receipt-list.tsx} (77%) rename src/entities/transaction/ui/{escro-list.tsx => escrow-list.tsx} (71%) rename src/entities/transaction/ui/{detail-amount-info.tsx => info-wrap/amount-info-wrap.tsx} (90%) create mode 100644 src/entities/transaction/ui/info-wrap/detail-info-wrap.tsx create mode 100644 src/entities/transaction/ui/info-wrap/escrow-info-wrap.tsx rename src/entities/transaction/ui/{detail-important-info.tsx => info-wrap/important-info-wrap.tsx} (82%) create mode 100644 src/entities/transaction/ui/info-wrap/issue-info-wrap.tsx rename src/entities/transaction/ui/{detail-part-cancel-info.tsx => info-wrap/part-cancel-info-wrap.tsx} (89%) rename src/entities/transaction/ui/{detail-payment-info.tsx => info-wrap/payment-info-wrap.tsx} (84%) rename src/entities/transaction/ui/{detail-settlement-info.tsx => info-wrap/settlement-info-wrap.tsx} (84%) rename src/entities/transaction/ui/{detail-transaction-info.tsx => info-wrap/transaction-info-wrap.tsx} (83%) create mode 100644 src/pages/transaction/cash-receipt/detail-page.tsx rename src/pages/transaction/{cash-receit => cash-receipt}/hand-written-issuance-page.tsx (81%) rename src/pages/transaction/{cash-receit => cash-receipt}/list-page.tsx (74%) delete mode 100644 src/pages/transaction/cash-receit/detail-page.tsx delete mode 100644 src/pages/transaction/escro/detail-page.tsx create mode 100644 src/pages/transaction/escrow/detail-page.tsx rename src/pages/transaction/{escro => escrow}/list-page.tsx (76%) diff --git a/src/entities/common/model/constants.ts b/src/entities/common/model/constants.ts index 5b443c0..1ca0f38 100644 --- a/src/entities/common/model/constants.ts +++ b/src/entities/common/model/constants.ts @@ -1,8 +1,8 @@ export const DEFAULT_PAGE_PARAM = { - page: 0, + cursor: 'string', size: 0, sortBy: 'string', sortOrder: 'ASC', orderBy: 'string', - offset: 0 + limit: 0 }; \ No newline at end of file diff --git a/src/entities/common/model/types.ts b/src/entities/common/model/types.ts index 5242c45..8e1395a 100644 --- a/src/entities/common/model/types.ts +++ b/src/entities/common/model/types.ts @@ -1,10 +1,10 @@ export interface DefaultRequestPagination { - page: number; + cursor: string; size: number; sortBy: string; sortOrder: string; orderBy: string; - offset: number; + limit: number; }; export interface DefaulResponsePagination { nextCursor: string | null; diff --git a/src/entities/transaction/api/use-cash-receit-detail-mutation.ts b/src/entities/transaction/api/use-cash-receipt-detail-mutation.ts similarity index 52% rename from src/entities/transaction/api/use-cash-receit-detail-mutation.ts rename to src/entities/transaction/api/use-cash-receipt-detail-mutation.ts index fc7078e..bde3e18 100644 --- a/src/entities/transaction/api/use-cash-receit-detail-mutation.ts +++ b/src/entities/transaction/api/use-cash-receipt-detail-mutation.ts @@ -3,7 +3,7 @@ import { API_URL } from '@/shared/api/urls'; import { resultify } from '@/shared/lib/resultify'; import { CBDCAxiosError } from '@/shared/@types/error'; import { - CashReceitDetailParams, + CashReceiptDetailParams, DetailResponse } from '../model/types'; import { @@ -11,16 +11,16 @@ import { UseMutationOptions } from '@tanstack/react-query'; -export const cashReceitDetail = (params: CashReceitDetailParams) => { +export const cashReceiptDetail = (params: CashReceiptDetailParams) => { return resultify( - axios.post(API_URL.cashReceitDetail(), params), + axios.post(API_URL.cashReceiptDetail(), params), ); }; -export const useCashReceitDetailMutation = (options?: UseMutationOptions) => { - const mutation = useMutation({ +export const useCashReceiptDetailMutation = (options?: UseMutationOptions) => { + const mutation = useMutation({ ...options, - mutationFn: (params: CashReceitDetailParams) => cashReceitDetail(params), + mutationFn: (params: CashReceiptDetailParams) => cashReceiptDetail(params), }); return { diff --git a/src/entities/transaction/api/use-cash-receipt-list-mutation.ts b/src/entities/transaction/api/use-cash-receipt-list-mutation.ts new file mode 100644 index 0000000..fe1dbc8 --- /dev/null +++ b/src/entities/transaction/api/use-cash-receipt-list-mutation.ts @@ -0,0 +1,29 @@ +import axios from 'axios'; +import { API_URL } from '@/shared/api/urls'; +import { resultify } from '@/shared/lib/resultify'; +import { CBDCAxiosError } from '@/shared/@types/error'; +import { + CashReceiptListParams, + CashReceiptListResponse +} from '../model/types'; +import { + useMutation, + UseMutationOptions +} from '@tanstack/react-query'; + +export const cashReceiptList = (params: CashReceiptListParams) => { + return resultify( + axios.post(API_URL.cashReceiptList(), params), + ); +}; + +export const useCashReceiptListMutation = (options?: UseMutationOptions) => { + const mutation = useMutation({ + ...options, + mutationFn: (params: CashReceiptListParams) => cashReceiptList(params), + }); + + return { + ...mutation, + }; +}; diff --git a/src/entities/transaction/api/use-cash-receit-list-mutation.ts b/src/entities/transaction/api/use-cash-receit-list-mutation.ts deleted file mode 100644 index fa3072e..0000000 --- a/src/entities/transaction/api/use-cash-receit-list-mutation.ts +++ /dev/null @@ -1,29 +0,0 @@ -import axios from 'axios'; -import { API_URL } from '@/shared/api/urls'; -import { resultify } from '@/shared/lib/resultify'; -import { CBDCAxiosError } from '@/shared/@types/error'; -import { - CashReceitListParams, - CashReceitListResponse -} from '../model/types'; -import { - useMutation, - UseMutationOptions -} from '@tanstack/react-query'; - -export const cashReceitList = (params: CashReceitListParams) => { - return resultify( - axios.post(API_URL.cashReceitList(), params), - ); -}; - -export const useCashReceitListMutation = (options?: UseMutationOptions) => { - const mutation = useMutation({ - ...options, - mutationFn: (params: CashReceitListParams) => cashReceitList(params), - }); - - return { - ...mutation, - }; -}; diff --git a/src/entities/transaction/api/use-cash-receit-list-summary-mutation.ts b/src/entities/transaction/api/use-cash-receit-list-summary-mutation.ts deleted file mode 100644 index e0f3c82..0000000 --- a/src/entities/transaction/api/use-cash-receit-list-summary-mutation.ts +++ /dev/null @@ -1,29 +0,0 @@ -import axios from 'axios'; -import { API_URL } from '@/shared/api/urls'; -import { resultify } from '@/shared/lib/resultify'; -import { CBDCAxiosError } from '@/shared/@types/error'; -import { - CashReceitListSummaryParams, - CashReceitListSummaryResponse -} from '../model/types'; -import { - useMutation, - UseMutationOptions -} from '@tanstack/react-query'; - -export const cashReceitListSummary = (params: CashReceitListSummaryParams) => { - return resultify( - axios.post(API_URL.allTransactionListSummary(), params), - ); -}; - -export const useCashReceitListSummaryMutation = (options?: UseMutationOptions) => { - const mutation = useMutation({ - ...options, - mutationFn: (params: CashReceitListSummaryParams) => cashReceitListSummary(params), - }); - - return { - ...mutation, - }; -}; diff --git a/src/entities/transaction/api/use-escro-list-mutation.ts b/src/entities/transaction/api/use-escro-list-mutation.ts deleted file mode 100644 index d108ef5..0000000 --- a/src/entities/transaction/api/use-escro-list-mutation.ts +++ /dev/null @@ -1,29 +0,0 @@ -import axios from 'axios'; -import { API_URL } from '@/shared/api/urls'; -import { resultify } from '@/shared/lib/resultify'; -import { CBDCAxiosError } from '@/shared/@types/error'; -import { - EscroListParams, - EscroListResponse -} from '../model/types'; -import { - useMutation, - UseMutationOptions -} from '@tanstack/react-query'; - -export const escroList = (params: EscroListParams) => { - return resultify( - axios.post(API_URL.escroList(), params), - ); -}; - -export const useEscroListMutation = (options?: UseMutationOptions) => { - const mutation = useMutation({ - ...options, - mutationFn: (params: EscroListParams) => escroList(params), - }); - - return { - ...mutation, - }; -}; diff --git a/src/entities/transaction/api/use-escro-detail-mutation.ts b/src/entities/transaction/api/use-escrow-detail-mutation.ts similarity index 55% rename from src/entities/transaction/api/use-escro-detail-mutation.ts rename to src/entities/transaction/api/use-escrow-detail-mutation.ts index 7fd83e2..6869284 100644 --- a/src/entities/transaction/api/use-escro-detail-mutation.ts +++ b/src/entities/transaction/api/use-escrow-detail-mutation.ts @@ -3,7 +3,7 @@ import { API_URL } from '@/shared/api/urls'; import { resultify } from '@/shared/lib/resultify'; import { CBDCAxiosError } from '@/shared/@types/error'; import { - EscroDetailParams, + EscrowDetailParams, DetailResponse } from '../model/types'; import { @@ -11,16 +11,16 @@ import { UseMutationOptions } from '@tanstack/react-query'; -export const escroDetail = (params: EscroDetailParams) => { +export const escrowDetail = (params: EscrowDetailParams) => { return resultify( - axios.post(API_URL.escroDetail(), params), + axios.post(API_URL.escrowDetail(), params), ); }; -export const useEscroDetailMutation = (options?: UseMutationOptions) => { - const mutation = useMutation({ +export const useEscrowDetailMutation = (options?: UseMutationOptions) => { + const mutation = useMutation({ ...options, - mutationFn: (params: EscroDetailParams) => escroDetail(params), + mutationFn: (params: EscrowDetailParams) => escrowDetail(params), }); return { diff --git a/src/entities/transaction/api/use-escrow-list-mutation.ts b/src/entities/transaction/api/use-escrow-list-mutation.ts new file mode 100644 index 0000000..0106cb0 --- /dev/null +++ b/src/entities/transaction/api/use-escrow-list-mutation.ts @@ -0,0 +1,29 @@ +import axios from 'axios'; +import { API_URL } from '@/shared/api/urls'; +import { resultify } from '@/shared/lib/resultify'; +import { CBDCAxiosError } from '@/shared/@types/error'; +import { + EscrowListParams, + EscrowListResponse +} from '../model/types'; +import { + useMutation, + UseMutationOptions +} from '@tanstack/react-query'; + +export const escrowList = (params: EscrowListParams) => { + return resultify( + axios.post(API_URL.escrowList(), params), + ); +}; + +export const useEscrowListMutation = (options?: UseMutationOptions) => { + const mutation = useMutation({ + ...options, + mutationFn: (params: EscrowListParams) => escrowList(params), + }); + + return { + ...mutation, + }; +}; diff --git a/src/entities/transaction/model/types.ts b/src/entities/transaction/model/types.ts index 6669119..aeb51c3 100644 --- a/src/entities/transaction/model/types.ts +++ b/src/entities/transaction/model/types.ts @@ -1,4 +1,4 @@ -import { DefaulResponsePagination } from '@/entities/common/model/types'; +import { DefaulResponsePagination, DefaultRequestPagination } from '@/entities/common/model/types'; export enum CancelTabKeys { All = 'All', @@ -12,18 +12,22 @@ export enum SortByKeys { New = 'New', Amount = 'Amount', }; -export enum PageType { +export enum TransactionCategory { AllTransaction = 'AllTransaction', - CashReceit = 'CashReceit', - Escro = 'Escro', + CashReceipt = 'CashReceipt', + Escrow = 'Escrow', Billing = 'Billing', }; -export enum DetailInfoKeys { +export enum InfoWrapKeys { Amount = 'Amount', + Important = 'Important', Payment = 'Payment', Transaction = 'Transaction', Settlement = 'Settlement', PartCancel = 'PartCancel', + Issue = 'Issue', + Detail = 'Detail', + Escrow = 'Escrow', }; export enum ProcessStep { One = 'One', @@ -34,31 +38,33 @@ export interface SortOptionsBoxProps { onCliCkToSort: (sortBy: SortByKeys) => void; }; export interface ListItemProps extends ListItem{ - pageType?: PageType; + transactionCategory?: TransactionCategory; }; export interface ListDateGroupProps { - pageType?: PageType; + transactionCategory?: TransactionCategory; date?: string; items?: Array; }; export interface AllTransactionListProps { - pageType: PageType; + transactionCategory: TransactionCategory; listItems: Record> }; -export interface CashReceitListProps { - pageType: PageType; +export interface CashReceiptListProps { + transactionCategory: TransactionCategory; listItems: Record> }; -export interface EscroListProps { - pageType: PageType; +export interface EscrowListProps { + transactionCategory: TransactionCategory; listItems: Record> }; export interface BillingListProps { - pageType: PageType; + transactionCategory: TransactionCategory; listItems: Record> }; export interface ListItem { tid?: string; + issueNumber?: number; + billKey?: string; mid?: string; stateDate?: string; stateCode?: string; @@ -69,242 +75,290 @@ export interface ListItem { serviceDetailName?: string; goodsAmount?: number; }; + +export interface BillingItem { + billKey: string; + tid: string; + orderNumber: string; + approvalNumber?: string; + approvalDate?: string; + transactionDateTime?: string; + transactionAmount?: number; + requestStatus?: string; + processResult?: string; + paymentMethod?: string; + installmentMonth?: string; + productName?: string; + buyerName?: string; +}; export interface AllTransactionListResponse extends DefaulResponsePagination { content: Array; }; -export interface CashReceitListResponse extends DefaulResponsePagination { +export interface CashReceiptListResponse extends DefaulResponsePagination { content: Array; }; -export interface EscroListResponse extends DefaulResponsePagination { +export interface EscrowListResponse extends DefaulResponsePagination { content: Array; }; export interface BillingListResponse extends DefaulResponsePagination { content: Array; + }; export interface AllTransactionListSummaryParams extends AllTransactionListParams { } -export interface CashReceitListSummaryParams extends CashReceitListParams { - -} + export interface AllTransactionListSummaryResponse { totalTransactionCount: number; totalTransactionAmount: number; }; -export interface CashReceitListSummaryResponse { - totalTransactionCount: number; - totalTransactionAmount: number; -}; - -export interface TransactionRequestParams { - tid?: string; -} - -export interface AllTransactionListParams extends TransactionRequestParams { +export interface AllTransactionListParams { moid: string; - fromDate: string; - toDate: string; - stateCode: string; - serviceCode: string; - minAmount: number; - maxAmount: number; - dateCl: string; - goodsName: string; - cardCode: string; - bankCode: string; - searchCl: string; - searchValue: string; -}; - -export interface CashReceitListParams extends TransactionRequestParams { - moid: string; - fromDate: string; - toDate: string; - stateCode: string; - serviceCode: string; - minAmount: number; - maxAmount: number; - dateCl: string; - goodsName: string; - cardCode: string; - bankCode: string; - searchCl: string; - searchValue: string; -}; - -export interface EscroListParams extends TransactionRequestParams { - moid: string; - fromDate: string; - toDate: string; - stateCode: string; - serviceCode: string; - minAmount: number; - maxAmount: number; - dateCl: string; - goodsName: string; - cardCode: string; - bankCode: string; - searchCl: string; - searchValue: string; -}; - -export interface BillingListParams extends TransactionRequestParams { - moid: string; - fromDate: string; - toDate: string; - stateCode: string; - serviceCode: string; - minAmount: number; - maxAmount: number; - dateCl: string; - goodsName: string; - cardCode: string; - bankCode: string; - searchCl: string; - searchValue: string; -}; - - - -export interface ListPaging { - cursor: string | null; - size: number; - sortBy: string; - sortOrder: string; - orderBy: string; - limit: number; -}; -export interface AllTransactionDetailParams extends TransactionRequestParams { - svcCd: string; -}; -export interface CashReceitDetailParams extends TransactionRequestParams { - svcCd: string; -}; -export interface EscroDetailParams extends TransactionRequestParams { - svcCd: string; -}; -export interface BillingDetailParams extends TransactionRequestParams { - svcCd: string; -}; - -export interface DetailAmountInfoProps { - mid: string; - amount: number; - cardAmount: number; - pointAmount: number; - couponAmount: number; - kakaoMoney: number; - kakaoPoint: number; - kakaoInstantDiscount: number; - naverPoint: number; - tossMoney: number; - tossDiscount: number; - paycoPoint: number; - paycoCoupon: number; - escrowFee: number; -}; -export interface DetailImportantInfoProps { - ordNo: string; tid: string; - tradeStatus: string; - tradeMethod: string; - productName: string; - approvalDate: string; - tradeDate: string; - requestDate: string; - cancelDate: string; + fromDate: string; + toDate: string; + stateCode: string; + serviceCode: string; + minAmount: number; + maxAmount: number; + dateCl: string; + goodsName: string; + cardCode: string; + bankCode: string; + searchCl: string; + searchValue: string; + page?: DefaultRequestPagination; }; -export interface DetailPaymentInfoProps { - approvalAcquire: string; - approvalReturn: number; - approvalReAcquire: number; - approvalVAN: string; - cancelAcquire: string; - cancelReturn: string; - cancelReAcquire: string; - acquireVAN: string; - acquireCompany: string; - cardNumber: string; - approvalNumber: string; - installmentPeriod: number; - authentication: string; - accountType: string; - bankName: string; - accountNumber: string; - depositBankName: string; - depositorName: string; - depositDeadline: string; - depositDate: string; - refundScheduleDate: string; - refundBankName: string; - refundAccountNumber: string; - accountHolder: string; - refundCompleteDate: string; - partner: string; - cpid: string; - productCategory: string; - phoneNumber: string; - customerId: string; - giftCardNumber: string; - culturelandId: string; + +export interface CashReceiptListParams { + mid: string; + startDate: string; + endDate: string; + purposeType: string; + issueStatus: string; + processResult: string; + pagination: DefaultRequestPagination }; -export interface DetailTransactionInfoProps { - buyerName: string; - email: string; - phoneNumber: string; - cancelReason: string; - cancelRequestor: string; - partialCancel: string; - cashReceiptIssue: string; + +export interface EscrowListParams { + mid: string; + searchType: string; + searchKeyword: string; + startDate: string; + endDate: string; + deliveryStatus: string; + settlementStatus: string; + minAmount: number; + maxAmount: number; + pagination: DefaultRequestPagination; }; -export interface DetailSettlementInfoProps { - approvalSettleDate: string; - approvalSettleAmount: number; - cancelSettleDate: string; - cancelSettleAmount: number; + +export interface BillingListParams { + mid: string; + searchType: string; + searchKeyword: string; + startDate: string; + endDate: string; + requestStatus: string; + processResult: string; + paymentMethod: string; + pagination: DefaultRequestPagination }; -export interface DetailPartCancelInfoProps { - originalTid: string; - originalAmount: number; - partCancelTid: string; - partCancelAmount: number; - remainingAmount: number; + +export interface AllTransactionDetailParams { + svcCd?: string; + tid?: string; +}; +export interface CashReceiptDetailParams { + issueNumber?: number; +}; +export interface EscrowDetailParams { + issueNumber?: number; +}; +export interface BillingDetailParams { + billKey?: string; +}; + +export interface AmountInfo { + mid?: string; + amount?: number; + cardAmount?: number; + pointAmount?: number; + couponAmount?: number; + kakaoMoney?: number; + kakaoPoint?: number; + kakaoInstantDiscount?: number; + naverPoint?: number; + tossMoney?: number; + tossDiscount?: number; + paycoPoint?: number; + paycoCoupon?: number; + escrowFee?: number; +}; +export interface ImportantInfo { + ordNo?: string; + tid?: string; + tradeStatus?: string; + tradeMethod?: string; + productName?: string; + approvalDate?: string; + tradeDate?: string; + requestDate?: string; + cancelDate?: string; + mid?: string; + orderNumber?: string; + transactionStatus?: string; + paymentMethod?: string; + approvalDateTime?: string; +}; +export interface PaymentInfo { + approvalAcquire?: string; + approvalReturn?: number; + approvalReAcquire?: number; + approvalVAN?: string; + cancelAcquire?: string; + cancelReturn?: string; + cancelReAcquire?: string; + acquireVAN?: string; + acquireCompany?: string; + cardNumber?: string; + approvalNumber?: string; + installmentPeriod?: number; + authentication?: string; + accountType?: string; + bankName?: string; + accountNumber?: string; + depositBankName?: string; + depositorName?: string; + depositDeadline?: string; + depositDate?: string; + refundScheduleDate?: string; + refundBankName?: string; + refundAccountNumber?: string; + accountHolder?: string; + refundCompleteDate?: string; + partner?: string; + cpid?: string; + productCategory?: string; + phoneNumber?: string; + customerId?: string; + giftCardNumber?: string; + culturelandId?: string; + paymentAmount?: number; + +}; +export interface TransactionInfo { + buyerName?: string; + email?: string; + phoneNumber?: string; + cancelReason?: string; + cancelRequestor?: string; + partialCancel?: string; + cashReceiptIssue?: string; + transactionDateTime?: string; + transactionAmount?: number; +}; +export interface SettlementInfo { + approvalSettleDate?: string; + approvalSettleAmount?: number; + cancelSettleDate?: string; + cancelSettleAmount?: number; + scheduledSettlementDate?: string; + completedSettlementDate?: string; +}; +export interface PartCancelInfo { + originalTid?: string; + originalAmount?: number; + partCancelTid?: string; + partCancelAmount?: number; + remainingAmount?: number; +}; + +export interface IssueInfo { + approvalNumber?: number; + issueNumber?: number; + issueDateTime?: string; + purpose?: string; + paymentMethod?: string; + productName?: string; + transmissionStatus?: string; + transactionType?: string; +}; +export interface DetailInfo { + cancelDate?: string; + cancelApprovalNumber?: number; + receiptInfo?: string; + tid?: string; + merchantTid?: string; + subMallName?: string; + subMallBusinessNumber?: number; + issueChannel?: string; + failureReason?: string; +}; +export interface EscrowInfo { + deliveryStatus: string; + deliveryRegistrationDate: string; + deliveryCompleteDate: string; + purchaseConfirmDate: string; + purchaseRejectReason: string; + rejectReason: string; + escrowCertNumber: string; + deliveryCompany: string; + trackingNumber: number; + deliveryAddress: string; }; export interface DetailResponse { - amountInfo?: DetailAmountInfoProps; - importantInfo?: DetailImportantInfoProps; - paymentInfo?: DetailPaymentInfoProps; - transactionInfo?: DetailTransactionInfoProps; - settlementInfo?: DetailSettlementInfoProps; - partCancelInfo?: DetailPartCancelInfoProps; + amountInfo?: AmountInfo; + importantInfo?: ImportantInfo; + paymentInfo?: PaymentInfo; + transactionInfo?: TransactionInfo; + settlementInfo?: SettlementInfo; + partCancelInfo?: PartCancelInfo; + issueInfo?: IssueInfo; + detailInfo?: DetailInfo; + escrowInfo?: EscrowInfo; }; +export interface BillingDetailResponse { + billKey: string; + tid: string; + orderNumber: string; + approvalNumber: string; + approvalDate: string; + requestStatus: string; + processResult: string; + installmentMonth: string; + productName: string; + buyerName: string; +} export interface DetailInfoProps extends DetailResponse{ - pageType: PageType; + transactionCategory: TransactionCategory; show?: boolean; tid?: string; - onClickToShowInfo?: (info: DetailInfoKeys) => void; + issueNumber?: number; + onClickToShowInfo?: (info: InfoWrapKeys) => void; } export interface DetailArrowProps { show?: boolean; }; -export interface DownloadConfirmationParams extends TransactionRequestParams { - +export interface DownloadConfirmationParams { + tid?: string; }; export interface DownloadConfirmationResponse { }; -export interface DownloadExcelParams extends TransactionRequestParams { - +export interface DownloadExcelParams { + tid?: string }; export interface DownloadExcelResponse { }; -export interface AllTransactionCancelParams extends TransactionRequestParams { +export interface AllTransactionCancelParams{ + tid: string; cancelAmount: number; cancelPassword: string; bankCode: string; @@ -318,8 +372,8 @@ export interface AllTransactionCancelParams extends TransactionRequestParams { export interface AllTransactionCancelResponse { }; -export interface AllTransactionCancelInfoParams extends TransactionRequestParams { - +export interface AllTransactionCancelInfoParams { + tid: string; }; export interface AllTransactionCancelInfoResponse { remainAmount: number; diff --git a/src/entities/transaction/ui/all-transaction-list.tsx b/src/entities/transaction/ui/all-transaction-list.tsx index 987b6b5..a07ed83 100644 --- a/src/entities/transaction/ui/all-transaction-list.tsx +++ b/src/entities/transaction/ui/all-transaction-list.tsx @@ -2,7 +2,7 @@ import { AllTransactionListProps } from '../model/types'; import { ListDateGroup } from './list-date-group'; export const AllTransactionList = ({ - pageType, + transactionCategory, listItems }: AllTransactionListProps) => { @@ -11,7 +11,7 @@ export const AllTransactionList = ({ for (const [key, value] of Object.entries(listItems)) { rs.push( { const { navigate } = useNavigate(); @@ -14,7 +14,7 @@ export const BillingList = ({ for (const [key, value] of Object.entries(listItems)) { rs.push( { +export const CashReceiptHandWrittenIssuanceStep1 = () => { const { navigate } = useNavigate(); useSetOnBack(() => { - navigate(PATHS.transaction.cashReceit.list); + navigate(PATHS.transaction.cashReceipt.list); }); return ( <> diff --git a/src/entities/transaction/ui/cash-receit-hand-written-issuance-step2.tsx b/src/entities/transaction/ui/cash-receipt-hand-written-issuance-step2.tsx similarity index 92% rename from src/entities/transaction/ui/cash-receit-hand-written-issuance-step2.tsx rename to src/entities/transaction/ui/cash-receipt-hand-written-issuance-step2.tsx index 86c50fe..6a90aeb 100644 --- a/src/entities/transaction/ui/cash-receit-hand-written-issuance-step2.tsx +++ b/src/entities/transaction/ui/cash-receipt-hand-written-issuance-step2.tsx @@ -1,12 +1,12 @@ import { useSetOnBack } from '@/widgets/sub-layout/use-sub-layout'; import { ProcessStep } from '../model/types'; -export interface CashReceitHandWrittenIssuanceStep2Props { +export interface CashReceiptHandWrittenIssuanceStep2Props { setProcessStep: ((processStep: ProcessStep) => void); }; -export const CashReceitHandWrittenIssuanceStep2 = ({ +export const CashReceiptHandWrittenIssuanceStep2 = ({ setProcessStep -}: CashReceitHandWrittenIssuanceStep2Props) => { +}: CashReceiptHandWrittenIssuanceStep2Props) => { useSetOnBack(() => { setProcessStep(ProcessStep.One); }); diff --git a/src/entities/transaction/ui/cash-receit-list.tsx b/src/entities/transaction/ui/cash-receipt-list.tsx similarity index 77% rename from src/entities/transaction/ui/cash-receit-list.tsx rename to src/entities/transaction/ui/cash-receipt-list.tsx index 8ac1685..871518b 100644 --- a/src/entities/transaction/ui/cash-receit-list.tsx +++ b/src/entities/transaction/ui/cash-receipt-list.tsx @@ -1,12 +1,12 @@ import { PATHS } from '@/shared/constants/paths'; import { useNavigate } from '@/shared/lib/hooks/use-navigate'; -import { CashReceitListProps } from '../model/types'; +import { CashReceiptListProps } from '../model/types'; import { ListDateGroup } from './list-date-group'; -export const CashReceitList = ({ - pageType, +export const CashReceiptList = ({ + transactionCategory, listItems -}: CashReceitListProps) => { +}: CashReceiptListProps) => { const { navigate } = useNavigate(); const getListDateGroup = () => { @@ -14,7 +14,7 @@ export const CashReceitList = ({ for (const [key, value] of Object.entries(listItems)) { rs.push( { - navigate(PATHS.transaction.cashReceit.handWrittenIssuance); + navigate(PATHS.transaction.cashReceipt.handWrittenIssuance); }; return ( diff --git a/src/entities/transaction/ui/escro-list.tsx b/src/entities/transaction/ui/escrow-list.tsx similarity index 71% rename from src/entities/transaction/ui/escro-list.tsx rename to src/entities/transaction/ui/escrow-list.tsx index 3860875..bb85ca1 100644 --- a/src/entities/transaction/ui/escro-list.tsx +++ b/src/entities/transaction/ui/escrow-list.tsx @@ -1,17 +1,17 @@ -import { EscroListProps } from '../model/types'; +import { EscrowListProps } from '../model/types'; import { ListDateGroup } from './list-date-group'; -export const EscroList = ({ - pageType, +export const EscrowList = ({ + transactionCategory, listItems -}: EscroListProps) => { +}: EscrowListProps) => { const getListDateGroup = () => { let rs = []; for (const [key, value] of Object.entries(listItems)) { rs.push( { if(!!onClickToShowInfo){ - onClickToShowInfo(DetailInfoKeys.Amount); + onClickToShowInfo(InfoWrapKeys.Amount); } }; diff --git a/src/entities/transaction/ui/info-wrap/detail-info-wrap.tsx b/src/entities/transaction/ui/info-wrap/detail-info-wrap.tsx new file mode 100644 index 0000000..302fea7 --- /dev/null +++ b/src/entities/transaction/ui/info-wrap/detail-info-wrap.tsx @@ -0,0 +1,44 @@ +import moment from 'moment'; +import { motion } from 'framer-motion'; +import { DetailArrow } from '../detail-arrow'; +import { InfoWrapKeys, DetailInfoProps } from '../../model/types'; + +export const DetailInfoWrap = ({ + transactionCategory, + detailInfo, + show, + onClickToShowInfo +}: DetailInfoProps) => { + const variants = { + hidden: { height: 0, padding: 0, display: 'none' }, + visible: { height: 'auto', paddingTop: '12px', display: 'block' }, + }; + + const onClickToSetShowInfo = () => { + if(!!onClickToShowInfo){ + onClickToShowInfo(InfoWrapKeys.Issue); + } + }; + + return ( + <> +
+
onClickToSetShowInfo() } + > + 정산 정보 +
+ + + +
+ + ) +}; \ No newline at end of file diff --git a/src/entities/transaction/ui/info-wrap/escrow-info-wrap.tsx b/src/entities/transaction/ui/info-wrap/escrow-info-wrap.tsx new file mode 100644 index 0000000..318fd4f --- /dev/null +++ b/src/entities/transaction/ui/info-wrap/escrow-info-wrap.tsx @@ -0,0 +1,44 @@ +import moment from 'moment'; +import { motion } from 'framer-motion'; +import { DetailArrow } from '../detail-arrow'; +import { InfoWrapKeys, DetailInfoProps } from '../../model/types'; + +export const EscrowInfoWrap = ({ + transactionCategory, + escrowInfo, + show, + onClickToShowInfo +}: DetailInfoProps) => { + const variants = { + hidden: { height: 0, padding: 0, display: 'none' }, + visible: { height: 'auto', paddingTop: '12px', display: 'block' }, + }; + + const onClickToSetShowInfo = () => { + if(!!onClickToShowInfo){ + onClickToShowInfo(InfoWrapKeys.Escrow); + } + }; + + return ( + <> +
+
onClickToSetShowInfo() } + > + 정산 정보 +
+ + + +
+ + ) +}; \ No newline at end of file diff --git a/src/entities/transaction/ui/detail-important-info.tsx b/src/entities/transaction/ui/info-wrap/important-info-wrap.tsx similarity index 82% rename from src/entities/transaction/ui/detail-important-info.tsx rename to src/entities/transaction/ui/info-wrap/important-info-wrap.tsx index 39cb7a7..a7eb684 100644 --- a/src/entities/transaction/ui/detail-important-info.tsx +++ b/src/entities/transaction/ui/info-wrap/important-info-wrap.tsx @@ -1,13 +1,19 @@ -import { NumericFormat } from 'react-number-format'; import moment from 'moment'; -import { DetailInfoProps } from '../model/types'; -import { IMAGE_ROOT } from '@/shared/constants/common'; +import { InfoWrapKeys, DetailInfoProps } from '../../model/types'; -export const DetailImportantInfo = ({ - pageType, - importantInfo +export const ImportantInfoWrap = ({ + transactionCategory, + importantInfo, + show, + onClickToShowInfo }: DetailInfoProps) => { + const onClickToSetShowInfo = () => { + if(!!onClickToShowInfo){ + onClickToShowInfo(InfoWrapKeys.Important); + } + }; + return ( <>
diff --git a/src/entities/transaction/ui/info-wrap/issue-info-wrap.tsx b/src/entities/transaction/ui/info-wrap/issue-info-wrap.tsx new file mode 100644 index 0000000..8f3eec2 --- /dev/null +++ b/src/entities/transaction/ui/info-wrap/issue-info-wrap.tsx @@ -0,0 +1,44 @@ +import moment from 'moment'; +import { motion } from 'framer-motion'; +import { DetailArrow } from '../detail-arrow'; +import { InfoWrapKeys, DetailInfoProps } from '../../model/types'; + +export const IssueInfoWrap = ({ + transactionCategory, + issueInfo, + show, + onClickToShowInfo +}: DetailInfoProps) => { + const variants = { + hidden: { height: 0, padding: 0, display: 'none' }, + visible: { height: 'auto', paddingTop: '12px', display: 'block' }, + }; + + const onClickToSetShowInfo = () => { + if(!!onClickToShowInfo){ + onClickToShowInfo(InfoWrapKeys.Issue); + } + }; + + return ( + <> +
+
onClickToSetShowInfo() } + > + 정산 정보 +
+ + + +
+ + ) +}; \ No newline at end of file diff --git a/src/entities/transaction/ui/detail-part-cancel-info.tsx b/src/entities/transaction/ui/info-wrap/part-cancel-info-wrap.tsx similarity index 89% rename from src/entities/transaction/ui/detail-part-cancel-info.tsx rename to src/entities/transaction/ui/info-wrap/part-cancel-info-wrap.tsx index 49fcb47..6eb50a4 100644 --- a/src/entities/transaction/ui/detail-part-cancel-info.tsx +++ b/src/entities/transaction/ui/info-wrap/part-cancel-info-wrap.tsx @@ -1,11 +1,10 @@ -import { useState } from 'react'; import { motion } from 'framer-motion'; import { NumericFormat } from 'react-number-format'; -import { DetailInfoKeys, DetailInfoProps } from '../model/types'; -import { DetailArrow } from './detail-arrow'; +import { DetailArrow } from '../detail-arrow'; +import { InfoWrapKeys, DetailInfoProps } from '../../model/types'; -export const DetailPartCancelInfo = ({ - pageType, +export const PartCancelInfoWrap = ({ + transactionCategory, partCancelInfo, show, onClickToShowInfo @@ -18,7 +17,7 @@ export const DetailPartCancelInfo = ({ const onClickToSetShowInfo = () => { if(!!onClickToShowInfo){ - onClickToShowInfo(DetailInfoKeys.PartCancel); + onClickToShowInfo(InfoWrapKeys.PartCancel); } }; diff --git a/src/entities/transaction/ui/detail-payment-info.tsx b/src/entities/transaction/ui/info-wrap/payment-info-wrap.tsx similarity index 84% rename from src/entities/transaction/ui/detail-payment-info.tsx rename to src/entities/transaction/ui/info-wrap/payment-info-wrap.tsx index f8a13ae..39d3160 100644 --- a/src/entities/transaction/ui/detail-payment-info.tsx +++ b/src/entities/transaction/ui/info-wrap/payment-info-wrap.tsx @@ -1,9 +1,9 @@ import { motion } from 'framer-motion'; -import { DetailInfoKeys, DetailInfoProps } from '../model/types'; -import { DetailArrow } from './detail-arrow'; +import { DetailArrow } from '../detail-arrow'; +import { InfoWrapKeys, DetailInfoProps } from '../../model/types'; -export const DetailPaymentInfo = ({ - pageType, +export const PaymentInfoWrap = ({ + transactionCategory, paymentInfo, show, onClickToShowInfo @@ -15,7 +15,7 @@ export const DetailPaymentInfo = ({ const onClickToSetShowInfo = () => { if(!!onClickToShowInfo){ - onClickToShowInfo(DetailInfoKeys.Payment); + onClickToShowInfo(InfoWrapKeys.Payment); } }; diff --git a/src/entities/transaction/ui/detail-settlement-info.tsx b/src/entities/transaction/ui/info-wrap/settlement-info-wrap.tsx similarity index 84% rename from src/entities/transaction/ui/detail-settlement-info.tsx rename to src/entities/transaction/ui/info-wrap/settlement-info-wrap.tsx index 622c57f..42bf5d1 100644 --- a/src/entities/transaction/ui/detail-settlement-info.tsx +++ b/src/entities/transaction/ui/info-wrap/settlement-info-wrap.tsx @@ -1,10 +1,10 @@ import moment from 'moment'; import { motion } from 'framer-motion'; -import { DetailInfoKeys, DetailInfoProps } from '../model/types'; -import { DetailArrow } from './detail-arrow'; +import { DetailArrow } from '../detail-arrow'; +import { InfoWrapKeys, DetailInfoProps } from '../../model/types'; -export const DetailSettlementInfo = ({ - pageType, +export const SettlementInfoWrap = ({ + transactionCategory, settlementInfo, show, onClickToShowInfo @@ -16,7 +16,7 @@ export const DetailSettlementInfo = ({ const onClickToSetShowInfo = () => { if(!!onClickToShowInfo){ - onClickToShowInfo(DetailInfoKeys.Settlement); + onClickToShowInfo(InfoWrapKeys.Settlement); } }; diff --git a/src/entities/transaction/ui/detail-transaction-info.tsx b/src/entities/transaction/ui/info-wrap/transaction-info-wrap.tsx similarity index 83% rename from src/entities/transaction/ui/detail-transaction-info.tsx rename to src/entities/transaction/ui/info-wrap/transaction-info-wrap.tsx index 777d453..217ef0c 100644 --- a/src/entities/transaction/ui/detail-transaction-info.tsx +++ b/src/entities/transaction/ui/info-wrap/transaction-info-wrap.tsx @@ -1,9 +1,9 @@ import { motion } from 'framer-motion'; -import { DetailInfoKeys, DetailInfoProps } from '../model/types'; -import { DetailArrow } from './detail-arrow'; +import { DetailArrow } from '../detail-arrow'; +import { InfoWrapKeys, DetailInfoProps } from '../../model/types'; -export const DetailTransactionInfo = ({ - pageType, +export const TransactionInfoWrap = ({ + transactionCategory, transactionInfo, show, onClickToShowInfo @@ -15,7 +15,7 @@ export const DetailTransactionInfo = ({ const onClickToSetShowInfo = () => { if(!!onClickToShowInfo){ - onClickToShowInfo(DetailInfoKeys.Transaction); + onClickToShowInfo(InfoWrapKeys.Transaction); } }; diff --git a/src/entities/transaction/ui/list-date-group.tsx b/src/entities/transaction/ui/list-date-group.tsx index 655cb97..b5628d3 100644 --- a/src/entities/transaction/ui/list-date-group.tsx +++ b/src/entities/transaction/ui/list-date-group.tsx @@ -4,7 +4,7 @@ import { ListDateGroupProps } from '../model/types'; import { ListItem } from './list-item'; export const ListDateGroup = ({ - pageType, + transactionCategory, date, items }: ListDateGroupProps) => { @@ -21,9 +21,11 @@ export const ListDateGroup = ({ let key = 'ListItem-'+i; rs.push( { - if(pageType === PageType.AllTransaction){ - navigate(PATHS.transaction.allTransaction.detail + tid, { + if(transactionCategory === TransactionCategory.AllTransaction){ + navigate(PATHS.transaction.allTransaction.detail, { state: { tid: tid } }); } - else if(pageType === PageType.CashReceit){ - navigate(PATHS.transaction.cashReceit.detail + tid, { + else if(transactionCategory === TransactionCategory.CashReceipt){ + navigate(PATHS.transaction.cashReceipt.detail, { state: { - tid: tid + issueNumber: issueNumber } }); } - else if(pageType === PageType.Escro){ - navigate(PATHS.transaction.escro.detail + tid, { + else if(transactionCategory === TransactionCategory.Escrow){ + navigate(PATHS.transaction.escrow.detail, { state: { - tid: tid + issueNumber: issueNumber } }); } - else if(pageType === PageType.Billing){ - navigate(PATHS.transaction.billing.detail + tid, { + else if(transactionCategory === TransactionCategory.Billing){ + navigate(PATHS.transaction.billing.detail, { state: { - tid: tid + billKey: billKey } }); } diff --git a/src/entities/user/lib/use-user-info.ts b/src/entities/user/lib/use-user-info.ts index b8a6444..276b207 100644 --- a/src/entities/user/lib/use-user-info.ts +++ b/src/entities/user/lib/use-user-info.ts @@ -1,36 +1,21 @@ import { LoginParams } from '@/entities/user/model/types'; import { StorageKeys } from '@/shared/constants/local-storage'; -import { setLocalStorage, getLocalStorage } from '@/shared/lib/web-view-bridge'; +import { setLocalStorage } from '@/shared/lib/web-view-bridge'; import { useLoginMutation } from '@/entities/user/api/use-login-mutation'; import { useStore } from '~/shared/model/store'; export const useUserInfo = () => { const { mutateAsync: login } = useLoginMutation(); const callLogin = async (params: LoginParams) => { - useStore.getState().UserStore.resetUserInfo(); - let appStart = getLocalStorage(StorageKeys.AppStart); - - if(!!appStart){ - let tokenType = getLocalStorage(StorageKeys.TokenType); - let accessToken = getLocalStorage(StorageKeys.AccessToken); - let refreshToken = getLocalStorage(StorageKeys.RefreshToken); - let accessTokenExpiresIn = getLocalStorage(StorageKeys.AccessTokenExpiresIn); - let refreshTokenExpiresIn = getLocalStorage(StorageKeys.RefreshTokenExpiresIn); - let menuGrants = getLocalStorage(StorageKeys.TokenType); - let usrid = getLocalStorage(StorageKeys.Usrid); + try{ + useStore.getState().UserStore.resetUserInfo(); - useStore.getState().UserStore.setUserInfo({ - tokenType: tokenType, - accessToken: accessToken, - refreshToken: refreshToken, - accessTokenExpiresIn: accessTokenExpiresIn, - refreshTokenExpiresIn: refreshTokenExpiresIn, - menuGrants: menuGrants, - usrid: usrid - }); - } - else{ - login(params).then((result) => { + const result = await login(params); + if(result.requires2FA){ + // 2차인증 필요 + + } + else{ const { tokenType, accessToken, @@ -38,9 +23,10 @@ export const useUserInfo = () => { accessTokenExpiresIn, refreshTokenExpiresIn, menuGrants, - usrid + usrid, + // clientAddressIP, + // requires2FA } = result; - setLocalStorage(StorageKeys.TokenType, tokenType); setLocalStorage(StorageKeys.AccessToken, accessToken); setLocalStorage(StorageKeys.RefreshToken, refreshToken); @@ -48,12 +34,15 @@ export const useUserInfo = () => { setLocalStorage(StorageKeys.RefreshTokenExpiresIn, refreshTokenExpiresIn); setLocalStorage(StorageKeys.MenuGrants, menuGrants); setLocalStorage(StorageKeys.Usrid, usrid); + // setLocalStorage(StorageKeys.ClientAddressIP, clientAddressIP); + // setLocalStorage(StorageKeys.Requires2FA, requires2FA); useStore.getState().UserStore.setUserInfo(result); - }); + } + } + catch(e: any){ + } - - }; return { callLogin, diff --git a/src/pages/home/home-page.tsx b/src/pages/home/home-page.tsx index 060cd03..f1c3b20 100644 --- a/src/pages/home/home-page.tsx +++ b/src/pages/home/home-page.tsx @@ -1,13 +1,15 @@ import moment from 'moment'; import { useCallback, useEffect, useState } from 'react'; -import { getLocalStorage } from '@/shared/lib'; -import { StorageKeys } from '@/shared/constants/local-storage'; import { useUserInfo } from '@/entities/user/lib/use-user-info'; import { FavoriteWrapper } from '@/entities/home/ui/favorite-wrapper'; import { DayStatusBox } from '@/entities/home/ui/day-status-box'; import { HomeBottomBanner } from '@/entities/home/ui/home-bottom-banner'; import { AuthRegister } from '@/entities/home/ui/auth-reguster'; import { FooterItemActiveKey } from '@/entities/common/model/types'; +import { useStore } from '@/shared/model/store'; +import { StorageKeys } from '@/shared/constants/local-storage'; +import { setLocalStorage, getLocalStorage } from '@/shared/lib/web-view-bridge'; + import { HeaderType } from '@/entities/common/model/types'; import { useSetHeaderTitle, @@ -44,9 +46,35 @@ export const HomePage = () => { }; const handleLogin = useCallback(async () =>{ - callLogin(userParmas).then(() => { + let appStart = getLocalStorage(StorageKeys.AppStart); + + if(!!appStart){ + useStore.getState().UserStore.resetUserInfo(); + let tokenType = getLocalStorage(StorageKeys.TokenType); + let accessToken = getLocalStorage(StorageKeys.AccessToken); + let refreshToken = getLocalStorage(StorageKeys.RefreshToken); + let accessTokenExpiresIn = getLocalStorage(StorageKeys.AccessTokenExpiresIn); + let refreshTokenExpiresIn = getLocalStorage(StorageKeys.RefreshTokenExpiresIn); + let menuGrants = getLocalStorage(StorageKeys.TokenType); + let usrid = getLocalStorage(StorageKeys.Usrid); + + useStore.getState().UserStore.setUserInfo({ + tokenType: tokenType, + accessToken: accessToken, + refreshToken: refreshToken, + accessTokenExpiresIn: accessTokenExpiresIn, + refreshTokenExpiresIn: refreshTokenExpiresIn, + menuGrants: menuGrants, + usrid: usrid + }); setLoginSuccess(true); - }); + } + else{ + callLogin(userParmas).then(() => { + setLoginSuccess(true); + }); + } + }, []); const checkBottomBannerOpen = () => { diff --git a/src/pages/transaction/all-transaction/detail-page.tsx b/src/pages/transaction/all-transaction/detail-page.tsx index 56f269b..47c5af8 100644 --- a/src/pages/transaction/all-transaction/detail-page.tsx +++ b/src/pages/transaction/all-transaction/detail-page.tsx @@ -1,28 +1,28 @@ import { useEffect, useState } from 'react'; -import { useParams } from 'react-router-dom'; +import { useLocation } from 'react-router'; import { PATHS } from '@/shared/constants/paths'; import { Dialog } from '@/shared/ui/dialogs/dialog'; import { overlay } from 'overlay-kit'; import { useNavigate } from '@/shared/lib/hooks/use-navigate'; import { useAllTransactionDetailMutation } from '@/entities/transaction/api/use-all-transaction-detail-mutation'; -import { DetailAmountInfo } from '@/entities/transaction/ui/detail-amount-info'; -import { DetailImportantInfo } from '@/entities/transaction/ui/detail-important-info'; -import { DetailPaymentInfo } from '@/entities/transaction/ui/detail-payment-info'; -import { DetailTransactionInfo } from '@/entities/transaction/ui/detail-transaction-info'; -import { DetailSettlementInfo } from '@/entities/transaction/ui/detail-settlement-info'; -import { DetailPartCancelInfo } from '@/entities/transaction/ui/detail-part-cancel-info'; +import { AmountInfoWrap } from '@/entities/transaction/ui/info-wrap/amount-info-wrap'; +import { ImportantInfoWrap } from '@/entities/transaction/ui/info-wrap/important-info-wrap'; +import { PaymentInfoWrap } from '@/entities/transaction/ui/info-wrap/payment-info-wrap'; +import { TransactionInfoWrap } from '@/entities/transaction/ui/info-wrap/transaction-info-wrap'; +import { SettlementInfoWrap } from '@/entities/transaction/ui/info-wrap/settlement-info-wrap'; +import { PartCancelInfoWrap } from '@/entities/transaction/ui/info-wrap/part-cancel-info-wrap'; import { HeaderType } from '@/entities/common/model/types'; import { - PageType, + TransactionCategory, AllTransactionDetailParams, DetailResponse, - DetailAmountInfoProps, - DetailImportantInfoProps, - DetailPaymentInfoProps, - DetailTransactionInfoProps, - DetailSettlementInfoProps, - DetailPartCancelInfoProps, - DetailInfoKeys + AmountInfo, + ImportantInfo, + PaymentInfo, + TransactionInfo, + SettlementInfo, + PartCancelInfo, + InfoWrapKeys } from '@/entities/transaction/model/types'; import { useSetOnBack, @@ -33,19 +33,20 @@ import { export const AllTransactionDetailPage = () => { const { navigate } = useNavigate(); - const { tid } = useParams(); + const location = useLocation(); + const tid = location.state.tid; - const [amountInfo, setAmountInfo] = useState(); - const [importantInfo, setImportantInfo] = useState(); - const [paymentInfo, setPaymentInfo] = useState(); - const [transactionInfo, setTransactionInfo] = useState(); - const [settlementInfo, setSettlementInfo] = useState(); - const [partCancelInfo, setPartCancelInfo] = useState(); - const [showAmount, setShowAmount] = useState(false); - const [showPayment, setShowPayment] = useState(false); - const [showTransaction, setShowTransaction] = useState(false); - const [showSettlement, setShowSettlement] = useState(false); - const [showPartCancel, setShowPartCancel] = useState(false); + const [amountInfo, setAmountInfo] = useState(); + const [importantInfo, setImportantInfo] = useState(); + const [paymentInfo, setPaymentInfo] = useState(); + const [transactionInfo, setTransactionInfo] = useState(); + const [settlementInfo, setSettlementInfo] = useState(); + const [partCancelInfo, setPartCancelInfo] = useState(); + const [showAmountInfo, setShowAmountInfo] = useState(false); + const [showPaymentInfo, setShowPaymentInfo] = useState(false); + const [showTransactionInfo, setShowTransactionInfo] = useState(false); + const [showSettlementInfo, setShowSettlementInfo] = useState(false); + const [showPartCancelInfo, setShowPartCancelInfo] = useState(false); useSetHeaderTitle('거래내역 상세'); useSetHeaderType(HeaderType.RightClose); @@ -106,21 +107,21 @@ export const AllTransactionDetailPage = () => { }); }; - const onClickToShowInfo = (info: DetailInfoKeys) => { - if(info === DetailInfoKeys.Amount){ - setShowAmount(!showAmount); + const onClickToShowInfo = (infoWrapKey: InfoWrapKeys) => { + if(infoWrapKey === InfoWrapKeys.Amount){ + setShowAmountInfo(!showAmountInfo); } - else if(info === DetailInfoKeys.Payment){ - setShowPayment(!showPayment); + else if(infoWrapKey === InfoWrapKeys.Payment){ + setShowPaymentInfo(!showPaymentInfo); } - else if(info === DetailInfoKeys.Transaction){ - setShowTransaction(!showTransaction); + else if(infoWrapKey === InfoWrapKeys.Transaction){ + setShowTransactionInfo(!showTransactionInfo); } - else if(info === DetailInfoKeys.Settlement){ - setShowSettlement(!showSettlement); + else if(infoWrapKey === InfoWrapKeys.Settlement){ + setShowSettlementInfo(!showSettlementInfo); } - else if(info === DetailInfoKeys.PartCancel){ - setShowPartCancel(!showPartCancel); + else if(infoWrapKey === InfoWrapKeys.PartCancel){ + setShowPartCancelInfo(!showPartCancelInfo); } }; @@ -131,46 +132,46 @@ export const AllTransactionDetailPage = () => {
- onClickToShowInfo(info) } - > + onClickToShowInfo={ (infoWrapKey) => onClickToShowInfo(infoWrapKey) } + >
- + >
- onClickToShowInfo(info) } - > + show={ showPaymentInfo } + onClickToShowInfo={ (infoWrapKey) => onClickToShowInfo(infoWrapKey) } + >
- onClickToShowInfo(info) } - > + show={ showTransactionInfo } + onClickToShowInfo={ (infoWrapKey) => onClickToShowInfo(infoWrapKey) } + >
- onClickToShowInfo(info) } - > + show={ showSettlementInfo } + onClickToShowInfo={ (infoWrapKey) => onClickToShowInfo(infoWrapKey) } + >
- onClickToShowInfo(info) } - > + show={ showPartCancelInfo } + onClickToShowInfo={ (infoWrapKey) => onClickToShowInfo(infoWrapKey) } + >
diff --git a/src/pages/transaction/all-transaction/list-page.tsx b/src/pages/transaction/all-transaction/list-page.tsx index bffb619..00d7139 100644 --- a/src/pages/transaction/all-transaction/list-page.tsx +++ b/src/pages/transaction/all-transaction/list-page.tsx @@ -5,7 +5,7 @@ import { IMAGE_ROOT } from '@/shared/constants/common'; import { PATHS } from '@/shared/constants/paths'; import { useNavigate } from '@/shared/lib/hooks/use-navigate'; import { AllTransactionList } from '@/entities/transaction/ui/all-transaction-list'; -import { ListItem, PageType, SortByKeys } from '@/entities/transaction/model/types'; +import { ListItem, TransactionCategory, SortByKeys } from '@/entities/transaction/model/types'; import { useAllTransactionListMutation } from '@/entities/transaction/api/use-all-transaction-list-mutation'; import { useAllTransactionListSummaryMutation } from '@/entities/transaction/api/use-all-transaction-list-summary-mutation'; import { useDownloadExcelMutation } from '@/entities/transaction/api/use-download-excel-mutation'; @@ -218,7 +218,7 @@ export const AllTransactionListPage = () => {
diff --git a/src/pages/transaction/billing/detail-page.tsx b/src/pages/transaction/billing/detail-page.tsx index c22a4a7..301da46 100644 --- a/src/pages/transaction/billing/detail-page.tsx +++ b/src/pages/transaction/billing/detail-page.tsx @@ -1,28 +1,28 @@ import { useEffect, useState } from 'react'; -import { useParams } from 'react-router-dom'; +import { useLocation } from 'react-router'; import { PATHS } from '@/shared/constants/paths'; import { Dialog } from '@/shared/ui/dialogs/dialog'; import { overlay } from 'overlay-kit'; import { useNavigate } from '@/shared/lib/hooks/use-navigate'; import { useBillingDetailMutation } from '@/entities/transaction/api/use-billing-detail-mutation'; -import { DetailAmountInfo } from '@/entities/transaction/ui/detail-amount-info'; -import { DetailImportantInfo } from '@/entities/transaction/ui/detail-important-info'; -import { DetailPaymentInfo } from '@/entities/transaction/ui/detail-payment-info'; -import { DetailTransactionInfo } from '@/entities/transaction/ui/detail-transaction-info'; -import { DetailSettlementInfo } from '@/entities/transaction/ui/detail-settlement-info'; -import { DetailPartCancelInfo } from '@/entities/transaction/ui/detail-part-cancel-info'; +import { AmountInfoWrap } from '@/entities/transaction/ui/info-wrap/amount-info-wrap'; +import { ImportantInfoWrap } from '@/entities/transaction/ui/info-wrap/important-info-wrap'; +import { PaymentInfoWrap } from '@/entities/transaction/ui/info-wrap/payment-info-wrap'; +import { TransactionInfoWrap } from '@/entities/transaction/ui/info-wrap/transaction-info-wrap'; +import { SettlementInfoWrap } from '@/entities/transaction/ui/info-wrap/settlement-info-wrap'; +import { PartCancelInfoWrap } from '@/entities/transaction/ui/info-wrap/part-cancel-info-wrap'; import { HeaderType } from '@/entities/common/model/types'; import { - PageType, + TransactionCategory, BillingDetailParams, DetailResponse, - DetailAmountInfoProps, - DetailImportantInfoProps, - DetailPaymentInfoProps, - DetailTransactionInfoProps, - DetailSettlementInfoProps, - DetailPartCancelInfoProps, - DetailInfoKeys + AmountInfo, + ImportantInfo, + PaymentInfo, + TransactionInfo, + SettlementInfo, + PartCancelInfo, + InfoWrapKeys } from '@/entities/transaction/model/types'; import { useSetOnBack, @@ -33,14 +33,14 @@ import { export const BillingDetailPage = () => { const { navigate } = useNavigate(); - const { tid } = useParams(); + const location = useLocation(); - const [amountInfo, setAmountInfo] = useState(); - const [importantInfo, setImportantInfo] = useState(); - const [paymentInfo, setPaymentInfo] = useState(); - const [transactionInfo, setTransactionInfo] = useState(); - const [settlementInfo, setSettlementInfo] = useState(); - const [partCancelInfo, setPartCancelInfo] = useState(); + const [amountInfo, setAmountInfo] = useState(); + const [importantInfo, setImportantInfo] = useState(); + const [paymentInfo, setPaymentInfo] = useState(); + const [transactionInfo, setTransactionInfo] = useState(); + const [settlementInfo, setSettlementInfo] = useState(); + const [partCancelInfo, setPartCancelInfo] = useState(); const [showAmount, setShowAmount] = useState(false); const [showPayment, setShowPayment] = useState(false); const [showTransaction, setShowTransaction] = useState(false); @@ -58,8 +58,7 @@ export const BillingDetailPage = () => { const callDetail = () => { let billingDetailParams: BillingDetailParams = { - svcCd: 'st', - tid: tid + billKey: location?.state.billKey }; billingDetail(billingDetailParams).then((rs: DetailResponse) => { setAmountInfo(rs.amountInfo); @@ -74,53 +73,20 @@ export const BillingDetailPage = () => { callDetail(); }, []); - const onClickToNavigate = (path: string) => { - let timeout = setTimeout(() => { - clearTimeout(timeout); - navigate(PATHS.transaction.allTransaction.cancel, { - state: { - tid: tid - } - }); - }, 10) - }; - - - const onClickToCancel = () => { - let msg = '거래를 취소하시겠습니까?'; - - overlay.open(({ - isOpen, - close, - unmount - }) => { - return ( - onClickToNavigate(PATHS.transaction.allTransaction.cancel) } - message={ msg } - buttonLabel={['취소', '확인']} - /> - ); - }); - }; - - const onClickToShowInfo = (info: DetailInfoKeys) => { - if(info === DetailInfoKeys.Amount){ + const onClickToShowInfo = (infoWrapKey: InfoWrapKeys) => { + if(infoWrapKey === InfoWrapKeys.Amount){ setShowAmount(!showAmount); } - else if(info === DetailInfoKeys.Payment){ + else if(infoWrapKey === InfoWrapKeys.Payment){ setShowPayment(!showPayment); } - else if(info === DetailInfoKeys.Transaction){ + else if(infoWrapKey === InfoWrapKeys.Transaction){ setShowTransaction(!showTransaction); } - else if(info === DetailInfoKeys.Settlement){ + else if(infoWrapKey === InfoWrapKeys.Settlement){ setShowSettlement(!showSettlement); } - else if(info === DetailInfoKeys.PartCancel){ + else if(infoWrapKey === InfoWrapKeys.PartCancel){ setShowPartCancel(!showPartCancel); } }; @@ -132,54 +98,48 @@ export const BillingDetailPage = () => {
- onClickToShowInfo(info) } - > + >
- + >
- onClickToShowInfo(info) } - > + >
- onClickToShowInfo(info) } - > + >
- onClickToShowInfo(info) } - > + >
- onClickToShowInfo(info) } - > + >
-
- -
+
diff --git a/src/pages/transaction/billing/list-page.tsx b/src/pages/transaction/billing/list-page.tsx index c7cc2ae..3f495c6 100644 --- a/src/pages/transaction/billing/list-page.tsx +++ b/src/pages/transaction/billing/list-page.tsx @@ -4,7 +4,7 @@ import { IMAGE_ROOT } from '@/shared/constants/common'; import { PATHS } from '@/shared/constants/paths'; import { useNavigate } from '@/shared/lib/hooks/use-navigate'; import { BillingList } from '@/entities/transaction/ui/billing-list'; -import { ListItem, PageType, SortByKeys } from '@/entities/transaction/model/types'; +import { ListItem, TransactionCategory, SortByKeys } from '@/entities/transaction/model/types'; import { useBillingListMutation } from '@/entities/transaction/api/use-billing-list-mutation'; import { useDownloadExcelMutation } from '@/entities/transaction/api/use-download-excel-mutation'; import { DEFAULT_PAGE_PARAM } from '@/entities/common/model/constants'; @@ -33,8 +33,8 @@ export const BillingListPage = () => { const [listItems, setListItems] = useState({}); const [filterOn, setFilterOn] = useState(false); const [pageParam, setPageParam] = useState(DEFAULT_PAGE_PARAM); - const [fromDate, setFromDate] = useState(moment().subtract(1, 'month').format('YYYYMMDD')); - const [toDate, setToDate] = useState(moment().format('YYYYMMDD')); + const [startDate, setStartDate] = useState(moment().subtract(1, 'month').format('YYYYMMDD')); + const [endDate, setEndDate] = useState(moment().format('YYYYMMDD')); useSetHeaderTitle('빌링'); useSetHeaderType(HeaderType.LeftArrow); @@ -50,30 +50,21 @@ export const BillingListPage = () => { sortBy?: string, val?: string }) => { - let listSummaryParams = { - moid: 'string', - tid: 'string', - fromDate: fromDate, - toDate: toDate, - stateCode: '0', - serviceCode: (option?.val)? option.val: selectedServiceCode, - minAmount: 0, - maxAmount: 0, - dateCl: 'TRANS', - goodsName: 'string', - cardCode: 'st', - bankCode: 'str', - searchCl: 'CARD_NO', - searchValue: 'string', - }; - pageParam.sortBy = (option?.sortBy)? option.sortBy: sortBy; + pageParam.sortBy = (option?.sortBy)? option.sortBy: sortBy; setPageParam(pageParam); + let listParams = { + mid: 'nictest001m', + searchType: 'ALL', + searchKeyword: 'P14633723', + startDate: startDate, + endDate: endDate, + requestStatus: 'ALL', + processResult: 'ALL', + paymentMethod: 'ALL', + pagination: pageParam + }; - let listParam = { - ...listSummaryParams, - ...{page: pageParam} - }; - billingList(listParam).then((rs) => { + billingList(listParams).then((rs) => { setListItems(assembleData(rs.content)); }); } @@ -131,7 +122,7 @@ export const BillingListPage = () => { - - - - - - ); -}; \ No newline at end of file diff --git a/src/pages/transaction/escro/detail-page.tsx b/src/pages/transaction/escro/detail-page.tsx deleted file mode 100644 index 906a56a..0000000 --- a/src/pages/transaction/escro/detail-page.tsx +++ /dev/null @@ -1,188 +0,0 @@ -import { useEffect, useState } from 'react'; -import { useParams } from 'react-router-dom'; -import { PATHS } from '@/shared/constants/paths'; -import { Dialog } from '@/shared/ui/dialogs/dialog'; -import { overlay } from 'overlay-kit'; -import { useNavigate } from '@/shared/lib/hooks/use-navigate'; -import { useEscroDetailMutation } from '@/entities/transaction/api/use-escro-detail-mutation'; -import { DetailAmountInfo } from '@/entities/transaction/ui/detail-amount-info'; -import { DetailImportantInfo } from '@/entities/transaction/ui/detail-important-info'; -import { DetailPaymentInfo } from '@/entities/transaction/ui/detail-payment-info'; -import { DetailTransactionInfo } from '@/entities/transaction/ui/detail-transaction-info'; -import { DetailSettlementInfo } from '@/entities/transaction/ui/detail-settlement-info'; -import { DetailPartCancelInfo } from '@/entities/transaction/ui/detail-part-cancel-info'; -import { HeaderType } from '@/entities/common/model/types'; -import { - PageType, - EscroDetailParams, - DetailResponse, - DetailAmountInfoProps, - DetailImportantInfoProps, - DetailPaymentInfoProps, - DetailTransactionInfoProps, - DetailSettlementInfoProps, - DetailPartCancelInfoProps, - DetailInfoKeys -} from '@/entities/transaction/model/types'; -import { - useSetOnBack, - useSetHeaderTitle, - useSetHeaderType, - useSetFooterMode -} from '@/widgets/sub-layout/use-sub-layout'; - -export const EscroDetailPage = () => { - const { navigate } = useNavigate(); - const { tid } = useParams(); - - const [amountInfo, setAmountInfo] = useState(); - const [importantInfo, setImportantInfo] = useState(); - const [paymentInfo, setPaymentInfo] = useState(); - const [transactionInfo, setTransactionInfo] = useState(); - const [settlementInfo, setSettlementInfo] = useState(); - const [partCancelInfo, setPartCancelInfo] = useState(); - const [showAmount, setShowAmount] = useState(false); - const [showPayment, setShowPayment] = useState(false); - const [showTransaction, setShowTransaction] = useState(false); - const [showSettlement, setShowSettlement] = useState(false); - const [showPartCancel, setShowPartCancel] = useState(false); - - useSetHeaderTitle('에스크로 상세'); - useSetHeaderType(HeaderType.RightClose); - useSetOnBack(() => { - navigate(PATHS.transaction.escro.list); - }); - useSetFooterMode(false); - - const { mutateAsync: escroDetail } = useEscroDetailMutation(); - - const callDetail = () => { - let escroDetailParams: EscroDetailParams = { - svcCd: 'st', - tid: tid - }; - escroDetail(escroDetailParams).then((rs: DetailResponse) => { - setAmountInfo(rs.amountInfo); - setImportantInfo(rs.importantInfo); - setPaymentInfo(rs.paymentInfo); - setTransactionInfo(rs.transactionInfo); - setSettlementInfo(rs.settlementInfo); - setPartCancelInfo(rs.partCancelInfo); - }); - }; - useEffect(() => { - callDetail(); - }, []); - - const onClickToNavigate = (path: string) => { - let timeout = setTimeout(() => { - clearTimeout(timeout); - navigate(PATHS.transaction.allTransaction.cancel, { - state: { - tid: tid - } - }); - }, 10) - }; - - - const onClickToCancel = () => { - let msg = '거래를 취소하시겠습니까?'; - - overlay.open(({ - isOpen, - close, - unmount - }) => { - return ( - onClickToNavigate(PATHS.transaction.allTransaction.cancel) } - message={ msg } - buttonLabel={['취소', '확인']} - /> - ); - }); - }; - - const onClickToShowInfo = (info: DetailInfoKeys) => { - if(info === DetailInfoKeys.Amount){ - setShowAmount(!showAmount); - } - else if(info === DetailInfoKeys.Payment){ - setShowPayment(!showPayment); - } - else if(info === DetailInfoKeys.Transaction){ - setShowTransaction(!showTransaction); - } - else if(info === DetailInfoKeys.Settlement){ - setShowSettlement(!showSettlement); - } - else if(info === DetailInfoKeys.PartCancel){ - setShowPartCancel(!showPartCancel); - } - }; - - return ( - <> -
-
-
-
-
- onClickToShowInfo(info) } - > -
- -
- onClickToShowInfo(info) } - > -
- onClickToShowInfo(info) } - > -
- onClickToShowInfo(info) } - > -
- onClickToShowInfo(info) } - > -
-
-
- -
-
-
-
- - ); -}; \ No newline at end of file diff --git a/src/pages/transaction/escrow/detail-page.tsx b/src/pages/transaction/escrow/detail-page.tsx new file mode 100644 index 0000000..54768a7 --- /dev/null +++ b/src/pages/transaction/escrow/detail-page.tsx @@ -0,0 +1,140 @@ +import { useEffect, useState } from 'react'; +import { useLocation } from 'react-router'; +import { PATHS } from '@/shared/constants/paths'; +import { Dialog } from '@/shared/ui/dialogs/dialog'; +import { overlay } from 'overlay-kit'; +import { useNavigate } from '@/shared/lib/hooks/use-navigate'; +import { useEscrowDetailMutation } from '@/entities/transaction/api/use-escrow-detail-mutation'; +import { ImportantInfoWrap } from '@/entities/transaction/ui/info-wrap/important-info-wrap'; +import { EscrowInfoWrap } from '@/entities/transaction/ui/info-wrap/escrow-info-wrap'; +import { PaymentInfoWrap } from '@/entities/transaction/ui/info-wrap/payment-info-wrap'; +import { TransactionInfoWrap } from '@/entities/transaction/ui/info-wrap/transaction-info-wrap'; +import { SettlementInfoWrap } from '@/entities/transaction/ui/info-wrap/settlement-info-wrap'; +import { HeaderType } from '@/entities/common/model/types'; +import { + TransactionCategory, + EscrowDetailParams, + DetailResponse, + ImportantInfo, + EscrowInfo, + PaymentInfo, + TransactionInfo, + SettlementInfo, + InfoWrapKeys +} from '@/entities/transaction/model/types'; +import { + useSetOnBack, + useSetHeaderTitle, + useSetHeaderType, + useSetFooterMode +} from '@/widgets/sub-layout/use-sub-layout'; + +export const EscrowDetailPage = () => { + const { navigate } = useNavigate(); + const location = useLocation(); + + const [importantInfo, setImportantInfo] = useState(); + const [escrowInfo, setEscrowInfo] = useState(); + const [paymentInfo, setPaymentInfo] = useState(); + const [transactionInfo, setTransactionInfo] = useState(); + const [settlementInfo, setSettlementInfo] = useState(); + const [showImportantInfo, setShowImportantInfo] = useState(false); + const [showEscroInfo, setShowEscroInfo] = useState(false); + const [showPaymentInfo, setShowPaymentInfo] = useState(false); + const [showTransactionInfo, setShowTransactionInfo] = useState(false); + const [showSettlementInfo, setShowSettlementInfo] = useState(false); + + + useSetHeaderTitle('에스크로 상세'); + useSetHeaderType(HeaderType.RightClose); + useSetOnBack(() => { + navigate(PATHS.transaction.escrow.list); + }); + useSetFooterMode(false); + + const { mutateAsync: escroDetail } = useEscrowDetailMutation(); + + const callDetail = () => { + let escroDetailParams: EscrowDetailParams = { + issueNumber: location?.state.issueNumber, + }; + escroDetail(escroDetailParams).then((rs: DetailResponse) => { + setImportantInfo(rs.importantInfo); + setEscrowInfo(rs.escrowInfo); + setPaymentInfo(rs.paymentInfo); + setTransactionInfo(rs.transactionInfo); + setSettlementInfo(rs.settlementInfo); + }); + }; + useEffect(() => { + callDetail(); + }, []); + + const onClickToShowInfo = (infoWrapKey: InfoWrapKeys) => { + if(infoWrapKey === InfoWrapKeys.Important){ + setShowImportantInfo(!showImportantInfo); + } + else if(infoWrapKey === InfoWrapKeys.Escrow){ + setShowEscroInfo(!showEscroInfo); + } + else if(infoWrapKey === InfoWrapKeys.Payment){ + setShowPaymentInfo(!showPaymentInfo); + } + else if(infoWrapKey === InfoWrapKeys.Transaction){ + setShowTransactionInfo(!showTransactionInfo); + } + else if(infoWrapKey === InfoWrapKeys.Settlement){ + setShowSettlementInfo(!showSettlementInfo); + } + }; + + return ( + <> +
+
+
+
+
+ onClickToShowInfo(infoWrapKey) } + > +
+ onClickToShowInfo(infoWrapKey) } + > +
+ onClickToShowInfo(infoWrapKey) } + > +
+ onClickToShowInfo(infoWrapKey) } + > +
+ onClickToShowInfo(infoWrapKey) } + > +
+
+
+
+
+
+ + ); +}; \ No newline at end of file diff --git a/src/pages/transaction/escro/list-page.tsx b/src/pages/transaction/escrow/list-page.tsx similarity index 76% rename from src/pages/transaction/escro/list-page.tsx rename to src/pages/transaction/escrow/list-page.tsx index f97b496..b285e58 100644 --- a/src/pages/transaction/escro/list-page.tsx +++ b/src/pages/transaction/escrow/list-page.tsx @@ -3,9 +3,9 @@ import { useEffect, useState } from 'react'; import { IMAGE_ROOT } from '@/shared/constants/common'; import { PATHS } from '@/shared/constants/paths'; import { useNavigate } from '@/shared/lib/hooks/use-navigate'; -import { EscroList } from '@/entities/transaction/ui/escro-list'; -import { ListItem, PageType, SortByKeys } from '@/entities/transaction/model/types'; -import { useEscroListMutation } from '@/entities/transaction/api/use-escro-list-mutation'; +import { EscrowList } from '@/entities/transaction/ui/escrow-list'; +import { ListItem, TransactionCategory, SortByKeys } from '@/entities/transaction/model/types'; +import { useEscrowListMutation } from '@/entities/transaction/api/use-escrow-list-mutation'; import { useDownloadExcelMutation } from '@/entities/transaction/api/use-download-excel-mutation'; import { DEFAULT_PAGE_PARAM } from '@/entities/common/model/constants'; import { Filter } from '@/entities/transaction/ui/filter'; @@ -24,7 +24,7 @@ const serviceCodes = [ {name: '배송등록', key: 'register'}, ]; -export const EscroListPage = () => { +export const EscrowListPage = () => { const { navigate } = useNavigate(); const [selectedServiceCode, setSelectedServiceCode] = useState('all'); @@ -32,8 +32,8 @@ export const EscroListPage = () => { const [listItems, setListItems] = useState({}); const [filterOn, setFilterOn] = useState(false); const [pageParam, setPageParam] = useState(DEFAULT_PAGE_PARAM); - const [fromDate, setFromDate] = useState(moment().subtract(1, 'month').format('YYYYMMDD')); - const [toDate, setToDate] = useState(moment().format('YYYYMMDD')); + const [startDate, setStartDate] = useState(moment().subtract(1, 'month').format('YYYYMMDD')); + const [endDate, setEndDate] = useState(moment().format('YYYYMMDD')); useSetHeaderTitle('에스크로'); useSetHeaderType(HeaderType.LeftArrow); @@ -42,37 +42,29 @@ export const EscroListPage = () => { }); useSetFooterMode(true); - const { mutateAsync: escroList } = useEscroListMutation(); + const { mutateAsync: escrowList } = useEscrowListMutation(); const { mutateAsync: downloadExcel } = useDownloadExcelMutation(); const callList = (option?: { sortBy?: string, val?: string }) => { - let listSummaryParams = { - moid: 'string', - tid: 'string', - fromDate: fromDate, - toDate: toDate, - stateCode: '0', - serviceCode: (option?.val)? option.val: selectedServiceCode, - minAmount: 0, - maxAmount: 0, - dateCl: 'TRANS', - goodsName: 'string', - cardCode: 'st', - bankCode: 'str', - searchCl: 'CARD_NO', - searchValue: 'string', - }; - pageParam.sortBy = (option?.sortBy)? option.sortBy: sortBy; + pageParam.sortBy = (option?.sortBy)? option.sortBy: sortBy; setPageParam(pageParam); - - let listParam = { - ...listSummaryParams, - ...{page: pageParam} + let listParams = { + mid: "nictest001m", + searchType: "ORDER_NUMBER", + searchKeyword: "01384234", + startDate: startDate, + endDate: endDate, + deliveryStatus: "ALL", + settlementStatus: "ALL", + minAmount: 0, + maxAmount: 999999999, + pagination: pageParam }; - escroList(listParam).then((rs) => { + + escrowList(listParams).then((rs) => { setListItems(assembleData(rs.content)); }); }; @@ -130,7 +122,7 @@ export const EscroListPage = () => {