This commit is contained in:
focp212@naver.com
2025-10-30 15:54:13 +09:00
6 changed files with 163 additions and 95 deletions

View File

@@ -1,6 +1,7 @@
import { useEffect } from 'react';
import { useState } from 'react';
import { motion } from 'framer-motion';
import { useTranslation } from 'react-i18next';
import { IMAGE_ROOT } from '@/shared/constants/common';
import { FilterSelect } from '@/shared/ui/filter/select';
import { FilterSelectInput } from '@/shared/ui/filter/select-input';
@@ -53,6 +54,7 @@ export const AllTransactionFilter = ({
setSearchValue,
serviceCodeOptions
}: AllTransactionFilterProps) => {
const { t } = useTranslation();
const [filterMid, setFilterMid] = useState<string>(mid);
const [filterMoidTidType, setFilterMoidTidType] = useState<AllTransactionMoidTid>(AllTransactionMoidTid.MOID);
@@ -120,33 +122,33 @@ export const AllTransactionFilter = ({
}
else if(value === '01'){
options.push({name: '카드번호', value: AllTransactionSearchCl.CARD_NO});
options.push({name: '승인번호', value: AllTransactionSearchCl.CARD_APPROVAL_NO});
options.push({name: t('filter.searchOptions.cardNumber'), value: AllTransactionSearchCl.CARD_NO});
options.push({name: t('filter.searchOptions.approvalNumber'), value: AllTransactionSearchCl.CARD_APPROVAL_NO});
}
else if(value === '02'){
options.push({name: '구매자명', value: AllTransactionSearchCl.BANK_BUYER_NM});
options.push({name: t('filter.searchOptions.buyerName'), value: AllTransactionSearchCl.BANK_BUYER_NM});
}
else if(value === '03'){
options.push({name: '가상계좌번호', value: AllTransactionSearchCl.VACCT_NO});
options.push({name: '입금자명', value: AllTransactionSearchCl.VACCT_DEPOSIT_NM});
options.push({name: t('filter.searchOptions.virtualAccountNumber'), value: AllTransactionSearchCl.VACCT_NO});
options.push({name: t('filter.searchOptions.depositorName'), value: AllTransactionSearchCl.VACCT_DEPOSIT_NM});
}
else if(value === '05'){
options.push({name: '휴대폰번호', value: AllTransactionSearchCl.TEL_NO});
options.push({name: t('filter.searchOptions.phoneNumber'), value: AllTransactionSearchCl.TEL_NO});
}
else if(value === '14'){
options.push({name: '상품권번호', value: AllTransactionSearchCl.SSGMONEY_GIFT_NO});
options.push({name: t('filter.searchOptions.giftCardNumber'), value: AllTransactionSearchCl.SSGMONEY_GIFT_NO});
}
else if(value === '21'){
options.push({name: '승인번호', value: AllTransactionSearchCl.SSGBANK_APPROVAL_NO});
options.push({name: t('filter.searchOptions.approvalNumber'), value: AllTransactionSearchCl.SSGBANK_APPROVAL_NO});
}
else if(value === '24'){
options.push({name: '고객ID', value: AllTransactionSearchCl.CMSBANK_USER_ID});
options.push({name: t('filter.searchOptions.customerId'), value: AllTransactionSearchCl.CMSBANK_USER_ID});
}
else if(value === '26'){
options.push({name: '컬처랜드ID', value: AllTransactionSearchCl.SSGBANK_APPROVAL_NO});
options.push({name: t('filter.searchOptions.culturelandId'), value: AllTransactionSearchCl.SSGBANK_APPROVAL_NO});
}
else if(value === '31'){
options.push({name: '카드번호', value: AllTransactionSearchCl.TMONEY_CARD_NO});
options.push({name: t('filter.searchOptions.tmoneyCardNumber'), value: AllTransactionSearchCl.TMONEY_CARD_NO});
}
setSearchClOptionsGroup(options);
@@ -184,7 +186,7 @@ export const AllTransactionFilter = ({
>
<div className="full-menu-container">
<div className="full-menu-header">
<div className="full-menu-title center"></div>
<div className="full-menu-title center">{t('filter.filter')}</div>
<div className="full-menu-actions">
<button
id="closeFullMenu"
@@ -192,7 +194,7 @@ export const AllTransactionFilter = ({
>
<img
src={ IMAGE_ROOT + '/ico_close.svg' }
alt="닫기"
alt={t('filter.close')}
onClick={ () => onClickToClose() }
/>
</button>
@@ -201,12 +203,12 @@ export const AllTransactionFilter = ({
<div className="option-list pt-16">
<FilterSelectMid
title='가맹점'
title={t('filter.merchant')}
selectSetter={ setMid }
showType={ 'GID' }
></FilterSelectMid>
<FilterSelectInput
title='주문번호/TID'
title={t('filter.orderNumberTid')}
selectValue={ filterMoidTidType }
selectSetter={ setFilterMoidTidType }
selectOptions={ AllTransactionMoidTidOptionsGroup }
@@ -214,7 +216,7 @@ export const AllTransactionFilter = ({
inputSetter={ setFilterMoidTidValue }
></FilterSelectInput>
<FilterCalendar
title='조회기간'
title={t('filter.period')}
startDate={ filterFromDate }
endDate={ filterToDate }
setStartDate={ setFilterFromDate }
@@ -222,7 +224,7 @@ export const AllTransactionFilter = ({
></FilterCalendar>
<FilterButtonGroups
title='거래상태'
title={t('filter.transactionStatus')}
activeValue={ filterStatusCode }
btnGroups={ statusCodeBtns }
setter={ setFilterStatusCode }
@@ -230,7 +232,7 @@ export const AllTransactionFilter = ({
{ serviceCodeOptions &&
<FilterSelect
title='결제수단'
title={t('filter.paymentMethod')}
selectValue={ filterServiceCode }
selectSetter={ onChangeServiceCode }
selectOptions={ serviceCodeOptions }
@@ -238,7 +240,7 @@ export const AllTransactionFilter = ({
}
<FilterRangeAmount
title='거래금액'
title={t('filter.transactionAmount')}
minAmount={ filterMinAmount }
maxAmount={ filterMaxAmount }
setMinAmount={ setFilterMinAmount }
@@ -253,7 +255,7 @@ export const AllTransactionFilter = ({
></FilterSelect>
*/}
<FilterSelectInput
title='상세조회'
title={t('filter.detailSearch')}
selectValue={ filterSearchCl }
selectSetter={ setFilterSearchCl }
selectOptions={ searchClOptionsGroup }
@@ -266,7 +268,7 @@ export const AllTransactionFilter = ({
<button
className="btn-50 btn-blue flex-1"
onClick={ () => onClickToSetFilter() }
></button>
>{t('filter.apply')}</button>
</div>
</div>
</motion.div>

View File

@@ -1,6 +1,7 @@
import { useEffect } from 'react';
import { useState } from 'react';
import { motion } from 'framer-motion';
import { useTranslation } from 'react-i18next';
import { IMAGE_ROOT } from '@/shared/constants/common';
import { FilterSelect } from '@/shared/ui/filter/select';
import { FilterSelectInput } from '@/shared/ui/filter/select-input';
@@ -52,6 +53,7 @@ export const BillingFilter = ({
setMinAmount,
setMaxAmount
}: BillingFilterProps) => {
const { t } = useTranslation();
const [filterMid, setFilterMid] = useState<string>(mid);
const [filterSearchType, setFilterSearchType] = useState<BillingSearchType>(searchType);
@@ -104,7 +106,7 @@ export const BillingFilter = ({
>
<div className="full-menu-container">
<div className="full-menu-header">
<div className="full-menu-title center"></div>
<div className="full-menu-title center">{t('filter.filter')}</div>
<div className="full-menu-actions">
<button
id="closeFullMenu"
@@ -112,7 +114,7 @@ export const BillingFilter = ({
>
<img
src={ IMAGE_ROOT + '/ico_close.svg' }
alt="닫기"
alt={t('filter.close')}
onClick={ () => onClickToClose() }
/>
</button>
@@ -121,12 +123,12 @@ export const BillingFilter = ({
<div className="option-list pt-16">
<FilterSelectMid
title='가맹점'
title={t('filter.merchant')}
selectSetter={ setMid }
showType={ 'GID' }
></FilterSelectMid>
<FilterSelectInput
title='주문번호/TID'
title={t('filter.orderNumberTid')}
selectValue={ filterSearchType }
selectSetter={ setFilterSearchType }
selectOptions={ BillingSearchTypeOptionsGroup }
@@ -134,7 +136,7 @@ export const BillingFilter = ({
inputSetter={ setFilterSearchKeyword }
></FilterSelectInput>
<FilterCalendar
title='조회기간'
title={t('filter.period')}
startDate={ filterStartDate }
endDate={ filterEndDate }
setStartDate={ setFilterStartDate }
@@ -142,26 +144,26 @@ export const BillingFilter = ({
></FilterCalendar>
<FilterButtonGroups
title='요청상태'
title={t('filter.requestStatus')}
activeValue={ filterRequestStatus }
btnGroups={ BillingRequestStatusBtnGroup }
setter={ setFilterRequestStatus }
></FilterButtonGroups>
<FilterButtonGroups
title='처리결과'
title={t('filter.processingResult')}
activeValue={ filterProcessResult }
btnGroups={ BillingProcessResultBtnGroup }
setter={ setFilterProcessResult }
></FilterButtonGroups>
<FilterButtonGroups
title='결제수단'
title={t('filter.paymentMethod')}
activeValue={ filterPaymentMethod }
btnGroups={ BillingPaymentMethodBtnGroup }
setter={ setFilterPaymentMethod }
></FilterButtonGroups>
<FilterRangeAmount
title='거래금액'
title={t('filter.transactionAmount')}
minAmount={ filterMinAmount }
maxAmount={ filterMaxAmount }
setMinAmount={ setFilterMinAmount }
@@ -173,7 +175,7 @@ export const BillingFilter = ({
<button
className="btn-50 btn-blue flex-1"
onClick={ () => onClickToSetFilter() }
></button>
>{t('filter.apply')}</button>
</div>
</div>
</motion.div>

View File

@@ -1,6 +1,7 @@
import { useEffect } from 'react';
import { useState } from 'react';
import { motion } from 'framer-motion';
import { useTranslation } from 'react-i18next';
import { IMAGE_ROOT } from '@/shared/constants/common';
import { FilterSelect } from '@/shared/ui/filter/select';
import { FilterSelectInput } from '@/shared/ui/filter/select-input';
@@ -44,6 +45,7 @@ export const CashReceiptFilter = ({
setProcessResult,
setSearchNumberType
}: CashReceiptFilterProps) => {
const { t } = useTranslation();
const [filterMid, setFilterMid] = useState<string>(mid);
const [filterStartDate, setFilterStartDate] = useState<string>(startDate);
@@ -56,8 +58,8 @@ export const CashReceiptFilter = ({
const [filterIssueType, setFilterIssueType] = useState<string>('');
const [filterIssueNumber, setFilterIssueNumber] = useState<string>('');
const issueTypeOptionsGroup = [
{name: '승인번호', value: 'issue'},
{name: '발행번호', value: 'issue2'},
{name: t('filter.searchOptions.approvalNumber'), value: 'issue'},
{name: t('filter.searchOptions.issueNumber'), value: 'issue2'},
];
const midOptions = useStore.getState().UserStore.selectOptionsMids;
@@ -96,7 +98,7 @@ export const CashReceiptFilter = ({
>
<div className="full-menu-container">
<div className="full-menu-header">
<div className="full-menu-title center"></div>
<div className="full-menu-title center">{t('filter.filter')}</div>
<div className="full-menu-actions">
<button
id="closeFullMenu"
@@ -104,7 +106,7 @@ export const CashReceiptFilter = ({
>
<img
src={ IMAGE_ROOT + '/ico_close.svg' }
alt="닫기"
alt={t('filter.close')}
onClick={ () => onClickToClose() }
/>
</button>
@@ -113,12 +115,12 @@ export const CashReceiptFilter = ({
<div className="option-list pt-16">
<FilterSelectMid
title='가맹점'
title={t('filter.merchant')}
selectSetter={ setMid }
showType={ 'GID' }
></FilterSelectMid>
<FilterCalendar
title='발행일자'
title={t('filter.issuanceDate')}
startDate={ filterStartDate }
endDate={ filterEndDate }
setStartDate={ setFilterStartDate }
@@ -126,25 +128,25 @@ export const CashReceiptFilter = ({
></FilterCalendar>
<FilterButtonGroups
title='용도'
title={t('filter.purpose')}
activeValue={ filterPurposeType }
btnGroups={ CashReceiptPurposeTypeBtnGroup }
setter={ setFilterPurposeType }
></FilterButtonGroups>
<FilterButtonGroups
title='거래구분'
title={t('filter.transactionCategory')}
activeValue={ filterTransactionType }
btnGroups={ CashReceiptTransactionTypeBtnGroup }
setter={ setFilterTransactionType }
></FilterButtonGroups>
<FilterButtonGroups
title='진행상태'
title={t('filter.progressStatus')}
activeValue={ filterProcessResult }
btnGroups={ CashReceiptProcessResultBtnGroup }
setter={ setFilterProcessResult }
></FilterButtonGroups>
<FilterSelectInput
title='승인번호/발행번호'
title={t('filter.approvalIssuanceNumber')}
selectValue={ filterSearchNumberType }
selectSetter={ setFilterSearchNumberType }
selectOptions={ issueTypeOptionsGroup }
@@ -156,7 +158,7 @@ export const CashReceiptFilter = ({
<button
className="btn-50 btn-blue flex-1"
onClick={ () => onClickToSetFilter() }
></button>
>{t('filter.apply')}</button>
</div>
</div>
</motion.div>

View File

@@ -1,6 +1,7 @@
import { useEffect } from 'react';
import { useState } from 'react';
import { motion } from 'framer-motion';
import { useTranslation } from 'react-i18next';
import { IMAGE_ROOT } from '@/shared/constants/common';
import { FilterSelect } from '@/shared/ui/filter/select';
import { FilterSelectInput } from '@/shared/ui/filter/select-input';
@@ -48,6 +49,7 @@ export const EscrowFilter = ({
setMinAmount,
setMaxAmount
}: EscrowFilterProps) => {
const { t } = useTranslation();
const [filterMid, setFilterMid] = useState<string>(mid);
const [filterSearchType, setFilterSearchType] = useState<EscrowSearchType>(searchType);
@@ -98,7 +100,7 @@ export const EscrowFilter = ({
>
<div className="full-menu-container">
<div className="full-menu-header">
<div className="full-menu-title center"></div>
<div className="full-menu-title center">{t('filter.filter')}</div>
<div className="full-menu-actions">
<button
id="closeFullMenu"
@@ -106,7 +108,7 @@ export const EscrowFilter = ({
>
<img
src={ IMAGE_ROOT + '/ico_close.svg' }
alt="닫기"
alt={t('filter.close')}
onClick={ () => onClickToClose() }
/>
</button>
@@ -115,12 +117,12 @@ export const EscrowFilter = ({
<div className="option-list pt-16">
<FilterSelectMid
title='가맹점'
title={t('filter.merchant')}
selectSetter={ setMid }
showType={ 'GID' }
></FilterSelectMid>
<FilterSelectInput
title='주문번호/TID'
title={t('filter.orderNumberTid')}
selectValue={ filterSearchType }
selectSetter={ setSearchType }
selectOptions={ EscrowSearchTypeOptionsGroup }
@@ -128,7 +130,7 @@ export const EscrowFilter = ({
inputSetter={ setSearchKeyword }
></FilterSelectInput>
<FilterCalendar
title='조회기간'
title={t('filter.period')}
startDate={ filterStartDate }
endDate={ filterEndDate }
setStartDate={ setFilterStartDate }
@@ -136,20 +138,20 @@ export const EscrowFilter = ({
></FilterCalendar>
<FilterButtonGroups
title='배송상태'
title={t('filter.deliveryStatus')}
activeValue={ filterDeliveryStatus }
btnGroups={ EscrowDeliveryStatusBtnGroup }
setter={ setFilterDeliveryStatus }
></FilterButtonGroups>
<FilterButtonGroups
title='결제수단'
title={t('filter.paymentMethod')}
activeValue={ filterSettlementStatus }
btnGroups={ EscrowSettlementStatusBtnGroup }
setter={ setFilterSettlementStatus }
></FilterButtonGroups>
<FilterRangeAmount
title='거래금액'
title={t('filter.transactionAmount')}
minAmount={ filterMinAmount }
maxAmount={ filterMaxAmount }
setMinAmount={ setFilterMinAmount }
@@ -161,7 +163,7 @@ export const EscrowFilter = ({
<button
className="btn-50 btn-blue flex-1"
onClick={ () => onClickToSetFilter() }
></button>
>{t('filter.apply')}</button>
</div>
</div>
</motion.div>

View File

@@ -49,7 +49,37 @@
},
"filter": {
"title": "Search Filters",
"filter": "Filter",
"close": "Close",
"apply": "Apply",
"merchant": "Merchant",
"orderNumberTid": "OID/TID",
"period": "Period",
"issuanceDate": "Issuance Date",
"transactionStatus": "Transaction Status",
"paymentMethod": "Payment Method",
"transactionAmount": "Transaction Amount",
"detailSearch": "Detail Search",
"purpose": "Purpose",
"transactionCategory": "Transaction Category",
"progressStatus": "Progress Status",
"approvalIssuanceNumber": "Approval/Issuance Number",
"requestStatus": "Request Status",
"processingResult": "Processing Result",
"deliveryStatus": "Delivery Status",
"searchOptions": {
"cardNumber": "Card Number",
"approvalNumber": "Approval Number",
"buyerName": "Buyer Name",
"virtualAccountNumber": "Virtual Account Number",
"depositorName": "Depositor Name",
"phoneNumber": "Phone Number",
"giftCardNumber": "Gift Card Number",
"customerId": "Customer ID",
"culturelandId": "Cultureland ID",
"tmoneyCardNumber": "T-money Card Number",
"issueNumber": "Issue Number"
},
"periods": {
"1month": "1 Month",
"3months": "3 Months",

View File

@@ -49,7 +49,37 @@
},
"filter": {
"title": "조회조건 설정",
"filter": "필터",
"close": "닫기",
"apply": "적용",
"merchant": "가맹점",
"orderNumberTid": "주문번호/TID",
"period": "조회기간",
"issuanceDate": "발행일자",
"transactionStatus": "거래상태",
"paymentMethod": "결제수단",
"transactionAmount": "거래금액",
"detailSearch": "상세조회",
"purpose": "용도",
"transactionCategory": "거래구분",
"progressStatus": "진행상태",
"approvalIssuanceNumber": "승인번호/발행번호",
"requestStatus": "요청상태",
"processingResult": "처리결과",
"deliveryStatus": "배송상태",
"searchOptions": {
"cardNumber": "카드번호",
"approvalNumber": "승인번호",
"buyerName": "구매자명",
"virtualAccountNumber": "가상계좌번호",
"depositorName": "입금자명",
"phoneNumber": "휴대폰번호",
"giftCardNumber": "상품권번호",
"customerId": "고객ID",
"culturelandId": "컬처랜드ID",
"tmoneyCardNumber": "티머니 카드번호",
"issueNumber": "발행번호"
},
"periods": {
"1month": "1개월",
"3months": "3개월",