diff --git a/src/entities/additional-service/model/types.ts b/src/entities/additional-service/model/types.ts index 16cf00e..dcdf9d4 100644 --- a/src/entities/additional-service/model/types.ts +++ b/src/entities/additional-service/model/types.ts @@ -1,4 +1,4 @@ -import { DefaulResponsePagination } from '@/entities/common/model/types'; +import { DefaulResponsePagination, DefaultRequestPagination } from '@/entities/common/model/types'; export enum FundTransferTabKeys { RequestList = 'RequestList', @@ -31,8 +31,8 @@ export enum ProcessResult { export enum KeyInPaymentTransactionStatus { ALL = 'ALL', APPROVE = 'APPROVE', - BF_CANCEL = 'BF_CANCEL', - AF_CANCEL = 'AF_CANCEL' + ALL_CANCEL = 'ALL_CANCEL', + AFTER_CANCEL = 'AFTER_CANCEL' } export enum AccountHolderSearchType { ALL = 'ALL', @@ -68,6 +68,86 @@ export interface SortOptionsBoxProps { sortBy: SortByKeys; onClickToSort: (sortBy: SortByKeys) => void; }; + +// 부가서비스 카테고리 enum +export enum AdditionalServiceCategory { + KeyInPayment = 'KeyInPayment', + AccountHolderSearch = 'AccountHolderSearch', + LinkPaymentShipping = 'LinkPaymentShipping', + LinkPaymentPending = 'LinkPaymentPending', + FundTransfer = 'FundTransfer', + SettlementAgency = 'SettlementAgency', +} + +// 각 서비스별 개별 타입들 +export interface KeyInPaymentListItem { + tid?: string; + paymentDate?: string; + paymentStatus?: string; + amount?: number; +} + +export interface AccountHolderSearchListItem { + requestId?: string; + requestDate?: string; + bank?: string; + accountNumber?: string; + accountHolder?: string; + processResult?: string; +} + +export interface LinkPaymentShippingListItem { + transactionId?: string; + customerName?: string; + status?: string; + channel?: string; + amount?: number; + sendDate?: string; + transactionDate?: string; +} + +export interface LinkPaymentPendingListItem { + transactionId?: string; + customerName?: string; + status?: string; + channel?: string; + amount?: number; + requestDate?: string; +} + +// 공통 ListItemProps (transaction과 동일한 패턴) +export interface ListItemProps extends KeyInPaymentListItem, AccountHolderSearchListItem, LinkPaymentShippingListItem, LinkPaymentPendingListItem { + additionalServiceCategory?: AdditionalServiceCategory; +} + +// 공통 ListDateGroupProps +export interface ListDateGroupProps { + additionalServiceCategory?: AdditionalServiceCategory; + date?: string; + items?: Array; +} +// 공통 리스트 Props +export interface AdditionalServiceListProps { + additionalServiceCategory: AdditionalServiceCategory; + listItems: Record>; +} +export interface LinkPaymentShippingListProps { + additionalServiceCategory: AdditionalServiceCategory; + listItems: Record>; +} +export interface LinkPaymentPendingListProps { + additionalServiceCategory: AdditionalServiceCategory; + listItems: Record>; +} +export interface AccountHolderSearchListProps { + additionalServiceCategory: AdditionalServiceCategory; + listItems: Record>; +} +export interface KeyInPaymentListProps { + additionalServiceCategory: AdditionalServiceCategory; + listItems: Record>; +} + export interface SettlementAgencyTabProps { activeTab: SettlementAgencyTabKeys; }; @@ -141,9 +221,10 @@ export interface ExtensionListResponse extends DefaulResponsePagination { export interface ExtensionKeyinListParams extends ExtensionRequestParams { fromDate: string; toDate: string; - paymentStatus: string; - minAmount: number; - maxAmount: number; + paymentStatus: KeyInPaymentTransactionStatus; + minAmount?: number | string; + maxAmount?: number | string; + page?: DefaultRequestPagination; }; export interface ExtensionKeyinListItemProps { tid: string; @@ -155,11 +236,11 @@ export interface ExtensionKeyinListResponse extends DefaulResponsePagination { content: Array }; export interface ExtensionKeyinDownloadExcelParams extends ExtensionRequestParams { - fromDate: string; - toDate: string; - paymentStatus: string; - minAmount: number; - maxAmount: number; + fromDate?: string; + toDate?: string; + paymentStatus?: string; + minAmount?: number | string; + maxAmount?: number | string; }; export interface ExtensionKeyinDownloadExcelResponse { diff --git a/src/entities/additional-service/ui/fund-transfer-request-list-wrap.tsx b/src/entities/additional-service/ui/fund-transfer/fund-transfer-request-list-wrap.tsx similarity index 100% rename from src/entities/additional-service/ui/fund-transfer-request-list-wrap.tsx rename to src/entities/additional-service/ui/fund-transfer/fund-transfer-request-list-wrap.tsx diff --git a/src/entities/additional-service/ui/fund-transfer-result-inquiry-wrap.tsx b/src/entities/additional-service/ui/fund-transfer/fund-transfer-result-inquiry-wrap.tsx similarity index 100% rename from src/entities/additional-service/ui/fund-transfer-result-inquiry-wrap.tsx rename to src/entities/additional-service/ui/fund-transfer/fund-transfer-result-inquiry-wrap.tsx diff --git a/src/entities/additional-service/ui/fund-transfer-tab.tsx b/src/entities/additional-service/ui/fund-transfer/fund-transfer-tab.tsx similarity index 97% rename from src/entities/additional-service/ui/fund-transfer-tab.tsx rename to src/entities/additional-service/ui/fund-transfer/fund-transfer-tab.tsx index cd47251..721a4ad 100644 --- a/src/entities/additional-service/ui/fund-transfer-tab.tsx +++ b/src/entities/additional-service/ui/fund-transfer/fund-transfer-tab.tsx @@ -3,7 +3,7 @@ import { useNavigate } from '@/shared/lib/hooks/use-navigate'; import { FundTransferTabKeys, FundTransferTabProps -} from '../model/types'; +} from '../../model/types'; export const FundTransferTab = ({ activeTab }: FundTransferTabProps) => { diff --git a/src/entities/additional-service/ui/key-in-payment/key-in-payment-filter.tsx b/src/entities/additional-service/ui/key-in-payment/filter/key-in-payment-filter.tsx similarity index 98% rename from src/entities/additional-service/ui/key-in-payment/key-in-payment-filter.tsx rename to src/entities/additional-service/ui/key-in-payment/filter/key-in-payment-filter.tsx index f4d0e5c..13f1171 100644 --- a/src/entities/additional-service/ui/key-in-payment/key-in-payment-filter.tsx +++ b/src/entities/additional-service/ui/key-in-payment/filter/key-in-payment-filter.tsx @@ -11,7 +11,7 @@ import { FilterRangeAmount } from '@/shared/ui/filter/range-amount'; import { KeyInPaymentFilterProps, KeyInPaymentTransactionStatus -} from '../../model/types'; +} from '../../../model/types'; export const KeyInPaymentFilter = ({ filterOn, @@ -66,8 +66,8 @@ export const KeyInPaymentFilter = ({ let transactionStatusOption = [ { name: '전체', value: KeyInPaymentTransactionStatus.ALL }, { name: '승인', value: KeyInPaymentTransactionStatus.APPROVE }, - { name: '전취소', value: KeyInPaymentTransactionStatus.BF_CANCEL }, - { name: '후취소', value: KeyInPaymentTransactionStatus.AF_CANCEL }, + { name: '전취소', value: KeyInPaymentTransactionStatus.ALL_CANCEL }, + { name: '후취소', value: KeyInPaymentTransactionStatus.AFTER_CANCEL }, ] return ( diff --git a/src/entities/additional-service/ui/key-in-payment/key-in-payment-list.tsx b/src/entities/additional-service/ui/key-in-payment/key-in-payment-list.tsx new file mode 100644 index 0000000..f0f2e59 --- /dev/null +++ b/src/entities/additional-service/ui/key-in-payment/key-in-payment-list.tsx @@ -0,0 +1,44 @@ +import { PATHS } from '@/shared/constants/paths'; +import { useNavigate } from '@/shared/lib/hooks/use-navigate'; +import { KeyInPaymentListProps } from '../../model/types' +import { ListDateGroup } from '../list-date-group'; + +export const KeyInPaymentList = ({ + additionalServiceCategory, + listItems +}: KeyInPaymentListProps ) => { + const { navigate } = useNavigate(); + + const getListDateGroup = () => { + let rs = []; + for (const [key, value] of Object.entries(listItems)) { + rs.push( + + ); + } + return rs; + }; + + const onClickToNavigate = () => { + navigate(PATHS.additionalService.keyInPayment.request) + }; + + return ( + <> +
+ { getListDateGroup() } +
+ +
+
+ + ); +} \ No newline at end of file diff --git a/src/entities/additional-service/ui/link-payment/link-payment-date-group.tsx b/src/entities/additional-service/ui/link-payment/link-payment-date-group.tsx deleted file mode 100644 index d99a4a6..0000000 --- a/src/entities/additional-service/ui/link-payment/link-payment-date-group.tsx +++ /dev/null @@ -1,58 +0,0 @@ -import moment from 'moment'; -import 'moment/dist/locale/ko'; -import { LinkPaymentItem } from './link-payment-item'; -import { JSX } from 'react'; - -interface LinkPaymentTransaction { - transactionId: string; - customerName: string; - status: string; - channel: string; - paymentMethod: string; - amount: number; -} - -interface LinkPaymentDateGroupProps { - date: string; - items: LinkPaymentTransaction[]; -} - -export const LinkPaymentDateGroup = ({ - date, - items -}: LinkPaymentDateGroupProps) => { - moment.locale('ko'); - const getStateDate = () => { - let stateDate = moment(date).format('YY.MM.DD(ddd)'); - return stateDate; - }; - - const getLinkPaymentItem = () => { - const rs: JSX.Element[] = []; - if (items && items.length > 0) { - items.forEach((item, index) => { - const key = 'LinkPaymentItem-' + index; - rs.push( - - ) - }); - } - - return rs; - }; - - return ( - <> -
{getStateDate()}
- {getLinkPaymentItem()} - - ); -}; \ No newline at end of file diff --git a/src/entities/additional-service/ui/link-payment/link-payment-item.tsx b/src/entities/additional-service/ui/link-payment/link-payment-item.tsx deleted file mode 100644 index 373fac8..0000000 --- a/src/entities/additional-service/ui/link-payment/link-payment-item.tsx +++ /dev/null @@ -1,62 +0,0 @@ -import { PATHS } from '@/shared/constants/paths'; -import { useNavigate } from '@/shared/lib/hooks/use-navigate'; -import moment from 'moment'; - -interface LinkPaymentItemProps { - transactionId: string; - customerName: string; - status: string; - channel: string; - paymentMethod: string; - amount: number; -} - -export const LinkPaymentItem = ({ - transactionId, - customerName, - status, - channel, - paymentMethod, - amount -}: LinkPaymentItemProps) => { - const { navigate } = useNavigate(); - - const onClickToNavigate = () => { - navigate(PATHS.additionalService.linkPayment.detail, { - state: { - transactionId: transactionId - } - }); - }; - - const getStatusDotClass = () => { - if (status === '결제완료' || status === '입금요청') { - return 'status-dot blue'; - } - return 'status-dot gray'; - }; - - return ( - <> -
onClickToNavigate()} - > -
-
-
-
-
{customerName}
-
- {status} - - {channel} - - {paymentMethod} -
-
-
{amount.toLocaleString()}원
-
- - ); -}; \ No newline at end of file diff --git a/src/entities/additional-service/ui/link-payment/link-payment-list.tsx b/src/entities/additional-service/ui/link-payment/link-payment-list.tsx deleted file mode 100644 index e4094aa..0000000 --- a/src/entities/additional-service/ui/link-payment/link-payment-list.tsx +++ /dev/null @@ -1,41 +0,0 @@ -import { LinkPaymentDateGroup } from './link-payment-date-group'; - -interface LinkPaymentTransaction { - transactionId: string; - customerName: string; - status: string; - channel: string; - paymentMethod: string; - amount: number; -} - -interface LinkPaymentListProps { - listItems: Record; -} - -export const LinkPaymentList = ({ - listItems -}: LinkPaymentListProps) => { - - const getListDateGroup = () => { - let rs = []; - for (const [key, value] of Object.entries(listItems)) { - rs.push( - - ); - } - return rs; - }; - - return ( - <> -
- {getListDateGroup()} -
- - ) -}; \ No newline at end of file diff --git a/src/entities/additional-service/ui/link-payment/link-payment-pending-date-group.tsx b/src/entities/additional-service/ui/link-payment/link-payment-pending-date-group.tsx deleted file mode 100644 index c481b4e..0000000 --- a/src/entities/additional-service/ui/link-payment/link-payment-pending-date-group.tsx +++ /dev/null @@ -1,56 +0,0 @@ -import moment from 'moment'; -import 'moment/dist/locale/ko'; -import { LinkPaymentPendingItem } from './link-payment-pending-item'; -import { JSX } from 'react'; - -interface LinkPaymentPendingTransaction { - transactionId: string; - customerName: string; - status: string; - channel: string; - amount: number; -} - -interface LinkPaymentPendingDateGroupProps { - date: string; - items: LinkPaymentPendingTransaction[]; -} - -export const LinkPaymentPendingDateGroup = ({ - date, - items -}: LinkPaymentPendingDateGroupProps) => { - moment.locale('ko'); - const getStateDate = () => { - let stateDate = moment(date).format('YY.MM.DD(ddd)'); - return stateDate; - }; - - const getLinkPaymentPendingItem = () => { - const rs: JSX.Element[] = []; - if (items && items.length > 0) { - items.forEach((item, index) => { - const key = 'LinkPaymentPendingItem-' + index; - rs.push( - - ) - }); - } - - return rs; - }; - - return ( - <> -
{getStateDate()}
- {getLinkPaymentPendingItem()} - - ); -}; \ No newline at end of file diff --git a/src/entities/additional-service/ui/link-payment/link-payment-pending-item.tsx b/src/entities/additional-service/ui/link-payment/link-payment-pending-item.tsx deleted file mode 100644 index 6bac6bb..0000000 --- a/src/entities/additional-service/ui/link-payment/link-payment-pending-item.tsx +++ /dev/null @@ -1,57 +0,0 @@ -import { PATHS } from '@/shared/constants/paths'; -import { useNavigate } from '@/shared/lib/hooks/use-navigate'; - -interface LinkPaymentPendingItemProps { - transactionId: string; - customerName: string; - status: string; - channel: string; - amount: number; -} - -export const LinkPaymentPendingItem = ({ - transactionId, - customerName, - status, - channel, - amount -}: LinkPaymentPendingItemProps) => { - const { navigate } = useNavigate(); - - const onClickToNavigate = () => { - navigate(PATHS.additionalService.linkPayment.pendingDetail, { - state: { - transactionId: transactionId - } - }); - }; - - const getStatusDotClass = () => { - if (status === '발송요청') { - return 'status-dot blue'; - } - return 'status-dot gray'; - }; - - return ( - <> -
onClickToNavigate()} - > -
-
-
-
-
{customerName}
-
- {status} - - {channel} -
-
-
{amount.toLocaleString()}원
-
- - ); -}; \ No newline at end of file diff --git a/src/entities/additional-service/ui/link-payment/link-payment-pending-list.tsx b/src/entities/additional-service/ui/link-payment/link-payment-pending-list.tsx index ec705ec..6f5b8a0 100644 --- a/src/entities/additional-service/ui/link-payment/link-payment-pending-list.tsx +++ b/src/entities/additional-service/ui/link-payment/link-payment-pending-list.tsx @@ -1,18 +1,8 @@ -import { LinkPaymentPendingDateGroup } from './link-payment-pending-date-group'; - -interface LinkPaymentPendingTransaction { - transactionId: string; - customerName: string; - status: string; - channel: string; - amount: number; -} - -interface LinkPaymentPendingListProps { - listItems: Record; -} +import { LinkPaymentPendingListProps } from '../../model/types'; +import { ListDateGroup } from '../list-date-group'; export const LinkPaymentPendingList = ({ + additionalServiceCategory, listItems }: LinkPaymentPendingListProps) => { @@ -20,12 +10,13 @@ export const LinkPaymentPendingList = ({ let rs = []; for (const [key, value] of Object.entries(listItems)) { rs.push( - - ); + > + ); } return rs; }; diff --git a/src/entities/additional-service/ui/link-payment/link-payment-pending-send-wrap.tsx b/src/entities/additional-service/ui/link-payment/link-payment-pending-send-wrap.tsx index 82baf8b..2ba9e36 100644 --- a/src/entities/additional-service/ui/link-payment/link-payment-pending-send-wrap.tsx +++ b/src/entities/additional-service/ui/link-payment/link-payment-pending-send-wrap.tsx @@ -5,8 +5,8 @@ import { LinkPaymentPendingSendFilter } from "./filter/link-payment-pending-send import { useNavigate } from '@/shared/lib/hooks/use-navigate'; import { PATHS } from "@/shared/constants/paths"; import { LinkPaymentPendingList } from "./link-payment-pending-list"; -import { LinkPaymentSearchType, LinkPaymentSendingStatus, LinkPaymentSendMethod, SortByKeys } from "../../model/types"; -import { SortOptionsBox } from './sort-options-box'; +import { AdditionalServiceCategory, LinkPaymentSearchType, LinkPaymentSendingStatus, LinkPaymentSendMethod, SortByKeys } from "../../model/types"; +import { SortOptionsBox } from '../sort-options-box'; const sendingStatusBtnGrouup = [ { name: '전체', value: LinkPaymentSendingStatus.ALL }, @@ -148,7 +148,8 @@ export const LinkPaymentPendingSendWrap = () => { + additionalServiceCategory={AdditionalServiceCategory.LinkPaymentPending} + >
- + additionalServiceCategory={ AdditionalServiceCategory.LinkPaymentShipping } + >
- -
-
-
2025.06.08(일)
- -
-
-
-
-
-
김*환(7000)
-
- 20:00ㅣ승인 -
-
-
5,254,000원
-
- -
-
-
-
-
-
최*길(7000)
-
- 08:35ㅣ승인 -
-
-
23,845,000원
-
- -
-
-
-
-
-
김*환(7000)
-
- 20:00ㅣ승인 -
-
-
5,254,000원
-
- -
-
-
-
-
-
김*환(7000)
-
- 20:00ㅣ후취소 -
-
-
5,254,000원
-
- -
-
-
-
-
-
최*길(7000)
-
- 20:00ㅣ후취소 -
-
-
23,845,000원
-
-
-
-
- -
- + + ); }; \ No newline at end of file diff --git a/src/pages/additional-service/key-in-payment/requeset-page.tsx b/src/pages/additional-service/key-in-payment/requeset-page.tsx index b573755..74ac7b6 100644 --- a/src/pages/additional-service/key-in-payment/requeset-page.tsx +++ b/src/pages/additional-service/key-in-payment/requeset-page.tsx @@ -38,7 +38,7 @@ export const KeyInPaymentRequestPage = () => { moid: 'SMS', }; keyInApply(keyInApplyParams).then((rs) => { - navigate(PATHS.additionalService.arsCardPayment.requestSuccess); + navigate(PATHS.additionalService.keyInPayment.requestSuccess); console.log(rs) }).catch(() => { diff --git a/src/pages/additional-service/settlement-agency/deposit-page.tsx b/src/pages/additional-service/settlement-agency/deposit-page.tsx index b31469a..19717db 100644 --- a/src/pages/additional-service/settlement-agency/deposit-page.tsx +++ b/src/pages/additional-service/settlement-agency/deposit-page.tsx @@ -1,8 +1,8 @@ import { useState } from 'react'; import { PATHS } from '@/shared/constants/paths'; import { useNavigate } from '@/shared/lib/hooks/use-navigate'; -import { SettlementAgencyTab } from '@/entities/additional-service/ui/settlement-agency-tab'; -import { SettlementAgencyDepositWrap } from '@/entities/additional-service/ui/settlement-agency-deposit-wrap'; +import { SettlementAgencyTab } from '@/entities/additional-service/ui/settlement-agency/settlement-agency-tab'; +import { SettlementAgencyDepositWrap } from '@/entities/additional-service/ui/settlement-agency/settlement-agency-deposit-wrap'; import { SettlementAgencyTabKeys } from '@/entities/additional-service/model/types'; import { HeaderType } from '@/entities/common/model/types'; import { diff --git a/src/pages/additional-service/settlement-agency/detail-page.tsx b/src/pages/additional-service/settlement-agency/detail-page.tsx index 9e9b869..1ce0f0a 100644 --- a/src/pages/additional-service/settlement-agency/detail-page.tsx +++ b/src/pages/additional-service/settlement-agency/detail-page.tsx @@ -2,7 +2,7 @@ import { useState } from 'react'; import { PATHS } from '@/shared/constants/paths'; import { useNavigate } from '@/shared/lib/hooks/use-navigate'; import { IMAGE_ROOT } from '@/shared/constants/common'; -import { SettlementAgencyBottomAgree } from '@/entities/additional-service/ui/settlement-agency-bottom-agree'; +import { SettlementAgencyBottomAgree } from '@/entities/additional-service/ui/settlement-agency/settlement-agency-bottom-agree'; import { HeaderType } from '@/entities/common/model/types'; import { useSetHeaderTitle, diff --git a/src/pages/additional-service/settlement-agency/manage-page.tsx b/src/pages/additional-service/settlement-agency/manage-page.tsx index e7c830a..ff40ae0 100644 --- a/src/pages/additional-service/settlement-agency/manage-page.tsx +++ b/src/pages/additional-service/settlement-agency/manage-page.tsx @@ -1,8 +1,8 @@ import { useState } from 'react'; import { PATHS } from '@/shared/constants/paths'; import { useNavigate } from '@/shared/lib/hooks/use-navigate'; -import { SettlementAgencyTab } from '@/entities/additional-service/ui/settlement-agency-tab'; -import { SettlementAgencyManageWrap } from '@/entities/additional-service/ui/settlement-agency-manage-wrap'; +import { SettlementAgencyTab } from '@/entities/additional-service/ui/settlement-agency/settlement-agency-tab'; +import { SettlementAgencyManageWrap } from '@/entities/additional-service/ui/settlement-agency/settlement-agency-manage-wrap'; import { SettlementAgencyTabKeys } from '@/entities/additional-service/model/types'; import { HeaderType } from '@/entities/common/model/types'; import { diff --git a/src/pages/additional-service/settlement-agency/member-page.tsx b/src/pages/additional-service/settlement-agency/member-page.tsx index 8225d1b..e787e08 100644 --- a/src/pages/additional-service/settlement-agency/member-page.tsx +++ b/src/pages/additional-service/settlement-agency/member-page.tsx @@ -1,8 +1,8 @@ import { useState } from 'react'; import { PATHS } from '@/shared/constants/paths'; import { useNavigate } from '@/shared/lib/hooks/use-navigate'; -import { SettlementAgencyTab } from '@/entities/additional-service/ui/settlement-agency-tab'; -import { SettlementAgencyMemberWrap } from '@/entities/additional-service/ui/settlement-agency-member-wrap'; +import { SettlementAgencyTab } from '@/entities/additional-service/ui/settlement-agency/settlement-agency-tab'; +import { SettlementAgencyMemberWrap } from '@/entities/additional-service/ui/settlement-agency/settlement-agency-member-wrap'; import { SettlementAgencyTabKeys } from '@/entities/additional-service/model/types'; import { HeaderType } from '@/entities/common/model/types'; import {