자금이체 페이지 다국어 지원 추가
자금이체 관련 모든 페이지에 대한 다국어 지원을 추가했습니다. 변경사항: - 이체등록 페이지: 폼 레이블, 버튼, 에러 메시지 다국어화 - 이체요청 목록 페이지: 페이지 타이틀 다국어화 - 결과조회 목록 페이지: 페이지 타이틀 다국어화 - 이체 상세 페이지: 상세 정보 레이블, 버튼, 상태 메시지 다국어화 - 결과 상세 페이지: 상세 정보 레이블, 입금확인서 버튼 다국어화 번역 키 추가: - 은행, 계좌번호, 예금주명, 이체금액, 입금인자 - 등록/요청 성공/실패 메시지 - 상세 정보 레이블 (등록일시, 요청일시, 이체일시, 이체결과, 실패사유 등) - 수취인명, 입금확인서 등 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
@@ -66,7 +66,7 @@ export const FundAccountResultDetailPage = () => {
|
||||
setEmailBottomSheetOn(false);
|
||||
};
|
||||
|
||||
useSetHeaderTitle('자금이체 상세');
|
||||
useSetHeaderTitle(t('additionalService.fundAccount.transferDetailTitle'));
|
||||
useSetHeaderType(HeaderType.LeftArrow);
|
||||
useSetFooterMode(false);
|
||||
useSetOnBack(() => {
|
||||
@@ -103,40 +103,40 @@ export const FundAccountResultDetailPage = () => {
|
||||
onClick={ onClickToOpenEmailBottomSheet }
|
||||
>
|
||||
<span className="icon-24 download"></span>
|
||||
<span>입금확인서</span>
|
||||
<span>{t('additionalService.fundAccount.depositCertificate')}</span>
|
||||
</button>
|
||||
</div>
|
||||
)}
|
||||
<div className="detail-divider"></div>
|
||||
<div className="pay-detail">
|
||||
<div className="detail-title">상세 정보</div>
|
||||
<div className="detail-title">{t('additionalService.fundAccount.detailInfo')}</div>
|
||||
<ul className="kv-list">
|
||||
<li className="kv-row">
|
||||
<span className="k">요청일시</span>
|
||||
<span className="k">{t('additionalService.fundAccount.requestDateTime')}</span>
|
||||
<span className="v">{moment(detail?.requestDate,'YYYYMMDDHHmmss').format('YYYY.MM.DD HH:mm:ss')}</span>
|
||||
</li>
|
||||
<li className="kv-row">
|
||||
<span className="k">이체일시</span>
|
||||
<span className="k">{t('additionalService.fundAccount.transferDateTime')}</span>
|
||||
<span className="v">{detail?.applicationDate ? moment(detail?.applicationDate, 'YYYYMMDDHHmmss').format('YYYY.MM.DD HH:mm:ss') : '-'}</span>
|
||||
</li>
|
||||
<li className="kv-row">
|
||||
<span className="k">이체결과</span>
|
||||
<span className="k">{t('additionalService.fundAccount.transferResult')}</span>
|
||||
<span className="v">{detail?.resultMessage || '-'}</span>
|
||||
</li>
|
||||
<li className="kv-row">
|
||||
<span className="k">실패사유</span>
|
||||
<span className="k">{t('additionalService.fundAccount.failureReason')}</span>
|
||||
<span className="v">{detail?.failReason || '-'}</span>
|
||||
</li>
|
||||
<li className="kv-row">
|
||||
<span className="k">수취인명</span>
|
||||
<span className="k">{t('additionalService.fundAccount.beneficiaryName')}</span>
|
||||
<span className="v">{detail?.accountName}</span>
|
||||
</li>
|
||||
<li className="kv-row">
|
||||
<span className="k">은행</span>
|
||||
<span className="k">{t('additionalService.fundAccount.bank')}</span>
|
||||
<span className="v">{detail?.bankName}</span>
|
||||
</li>
|
||||
<li className="kv-row">
|
||||
<span className="k">계좌번호</span>
|
||||
<span className="k">{t('additionalService.fundAccount.accountNumber')}</span>
|
||||
<span className="v">{detail?.accountNo}</span>
|
||||
</li>
|
||||
<li className="kv-row">
|
||||
@@ -144,7 +144,7 @@ export const FundAccountResultDetailPage = () => {
|
||||
<span className="v">{mid}</span>
|
||||
</li>
|
||||
<li className="kv-row">
|
||||
<span className="k">주문번호</span>
|
||||
<span className="k">{t('transaction.fields.orderNumber')}</span>
|
||||
<span className="v">{detail?.moid}</span>
|
||||
</li>
|
||||
<li className="kv-row">
|
||||
|
||||
@@ -1,11 +1,12 @@
|
||||
import { useState } from 'react';
|
||||
import { PATHS } from '@/shared/constants/paths';
|
||||
import { useNavigate } from '@/shared/lib/hooks/use-navigate';
|
||||
import { FundAccountTab } from '@/entities/additional-service/ui/fund-account/tab';
|
||||
import { useTranslation } from 'react-i18next';
|
||||
import { FundAccountTab } from '@/entities/additional-service/ui/fund-account/tab';
|
||||
import { FundAccountResultListWrap } from '@/entities/additional-service/ui/fund-account/result-list-wrap';
|
||||
import { FundAccountTabKeys } from '@/entities/additional-service/model/fund-account/types';
|
||||
import { HeaderType } from '@/entities/common/model/types';
|
||||
import {
|
||||
import {
|
||||
useSetHeaderTitle,
|
||||
useSetHeaderType,
|
||||
useSetFooterMode,
|
||||
@@ -13,11 +14,12 @@ import {
|
||||
} from '@/widgets/sub-layout/use-sub-layout';
|
||||
|
||||
export const FundAccountResultListPage = () => {
|
||||
const { t } = useTranslation();
|
||||
const { navigate } = useNavigate();
|
||||
|
||||
const [activeTab, setActiveTab] = useState<FundAccountTabKeys>(FundAccountTabKeys.ResultList);
|
||||
|
||||
useSetHeaderTitle('자금이체');
|
||||
useSetHeaderTitle(t('additionalService.fundAccount.title'));
|
||||
useSetHeaderType(HeaderType.LeftArrow);
|
||||
useSetFooterMode(false);
|
||||
useSetOnBack(() => {
|
||||
|
||||
@@ -40,7 +40,7 @@ export const FundAccountTransferDetailPage = () => {
|
||||
});
|
||||
};
|
||||
|
||||
useSetHeaderTitle('자금이체 상세');
|
||||
useSetHeaderTitle(t('additionalService.fundAccount.transferDetailTitle'));
|
||||
useSetHeaderType(HeaderType.LeftArrow);
|
||||
useSetFooterMode(false);
|
||||
useSetOnBack(() => {
|
||||
@@ -58,16 +58,16 @@ export const FundAccountTransferDetailPage = () => {
|
||||
extensionFundAccountTransferRequest(params).then((rs: ExtensionFundAccountTransferRequestResponse) => {
|
||||
if (rs.status) {
|
||||
callDetail();
|
||||
snackBar("이체요청을 성공하였습니다.")
|
||||
snackBar(t('additionalService.fundAccount.transferRequestSuccess'))
|
||||
} else {
|
||||
const errorMessage = rs.error?.message || '이체요청이 실패하였습니다.';
|
||||
snackBar(`[실패] ${errorMessage}`);
|
||||
const errorMessage = rs.error?.message || t('additionalService.fundAccount.transferRequestFailed');
|
||||
snackBar(`[${t('common.failed')}] ${errorMessage}`);
|
||||
}
|
||||
}).catch((error) => {
|
||||
const errorMessage = error?.response?.data?.error?.message ||
|
||||
error?.message ||
|
||||
'이체요청 중 오류가 발생했습니다.';
|
||||
snackBar(`[실패] ${errorMessage}`);
|
||||
t('additionalService.fundAccount.transferRequestError');
|
||||
snackBar(`[${t('common.failed')}] ${errorMessage}`);
|
||||
});
|
||||
};
|
||||
|
||||
@@ -89,38 +89,38 @@ export const FundAccountTransferDetailPage = () => {
|
||||
</div>
|
||||
<div className="detail-divider"></div>
|
||||
<div className="pay-detail">
|
||||
<div className="detail-title">상세 정보</div>
|
||||
<div className="detail-title">{t('additionalService.fundAccount.detailInfo')}</div>
|
||||
<ul className="kv-list">
|
||||
<li className="kv-row">
|
||||
<span className="k">등록일시</span>
|
||||
<span className="k">{t('additionalService.fundAccount.registrationDateTime')}</span>
|
||||
<span className="v">
|
||||
{detail?.registDate ? moment(detail.registDate, 'YYYYMMDDHHmmss').format('YYYY.MM.DD HH:mm:ss') : '-'}
|
||||
</span>
|
||||
</li>
|
||||
<li className="kv-row">
|
||||
<span className="k">처리결과</span>
|
||||
<span className="k">{t('additionalService.fundAccount.processingResult')}</span>
|
||||
<span className="v">{getFundAccountStatusName(t)(detail?.resultStatus) || '-'}</span>
|
||||
</li>
|
||||
<li className="kv-row">
|
||||
<span className="k">요청일자</span>
|
||||
<span className="k">{t('additionalService.fundAccount.requestDate')}</span>
|
||||
<span className="v">
|
||||
{detail?.requestDate ? moment(detail.requestDate, 'YYYYMMDDHHmmss').format('YYYY.MM.DD') : '-'}
|
||||
</span>
|
||||
</li>
|
||||
<li className="kv-row">
|
||||
<span className="k">이체결과</span>
|
||||
<span className="k">{t('additionalService.fundAccount.transferResult')}</span>
|
||||
<span className="v">{detail?.resultMessage || '-'}</span>
|
||||
</li>
|
||||
<li className="kv-row">
|
||||
<span className="k">수취인명</span>
|
||||
<span className="k">{t('additionalService.fundAccount.beneficiaryName')}</span>
|
||||
<span className="v">{detail?.accountName}</span>
|
||||
</li>
|
||||
<li className="kv-row">
|
||||
<span className="k">은행</span>
|
||||
<span className="k">{t('additionalService.fundAccount.bank')}</span>
|
||||
<span className="v">{detail?.bankCode || '-'} </span>
|
||||
</li>
|
||||
<li className="kv-row">
|
||||
<span className="k">계좌번호</span>
|
||||
<span className="k">{t('additionalService.fundAccount.accountNumber')}</span>
|
||||
<span className="v">{detail?.accountNo}</span>
|
||||
</li>
|
||||
<li className="kv-row">
|
||||
@@ -135,7 +135,7 @@ export const FundAccountTransferDetailPage = () => {
|
||||
className="btn-50 btn-blue flex-1"
|
||||
onClick={() => onClickToRequest()}
|
||||
disabled={detail?.resultStatus !== FundAccountStatus.REGIST_COMPLETE}
|
||||
>이체 요청</button>
|
||||
>{t('additionalService.fundAccount.transferRequestButton')}</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
import { useState } from 'react';
|
||||
import { PATHS } from '@/shared/constants/paths';
|
||||
import { useNavigate } from '@/shared/lib/hooks/use-navigate';
|
||||
import { useTranslation } from 'react-i18next';
|
||||
import { FundAccountTab } from '@/entities/additional-service/ui/fund-account/tab';
|
||||
import { FundAccountTransferListWrap } from '@/entities/additional-service/ui/fund-account/transfer-list-wrap';
|
||||
import { FundAccountTabKeys } from '@/entities/additional-service/model/fund-account/types';
|
||||
@@ -14,6 +15,7 @@ import {
|
||||
import { useExtensionAccessCheck } from '@/shared/lib/hooks/use-extension-access-check';
|
||||
|
||||
export const FundAccountTransferListPage = () => {
|
||||
const { t } = useTranslation();
|
||||
const { navigate } = useNavigate();
|
||||
// 권한 체크
|
||||
const { hasAccess, AccessDeniedDialog } = useExtensionAccessCheck({
|
||||
@@ -21,7 +23,7 @@ export const FundAccountTransferListPage = () => {
|
||||
});
|
||||
const [activeTab, setActiveTab] = useState<FundAccountTabKeys>(FundAccountTabKeys.TransferList);
|
||||
|
||||
useSetHeaderTitle('자금이체');
|
||||
useSetHeaderTitle(t('additionalService.fundAccount.title'));
|
||||
useSetHeaderType(HeaderType.LeftArrow);
|
||||
useSetFooterMode(false);
|
||||
useSetOnBack(() => {
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
import { useTranslation } from 'react-i18next';
|
||||
import { PATHS } from '@/shared/constants/paths';
|
||||
import { useNavigate } from '@/shared/lib/hooks/use-navigate';
|
||||
import { HeaderType } from '@/entities/common/model/types';
|
||||
@@ -17,6 +18,7 @@ import { useExtensionFundAccountTransferRequestMutation } from '@/entities/addit
|
||||
|
||||
|
||||
export const FundAccountTransferRequestPage = () => {
|
||||
const { t } = useTranslation();
|
||||
const { navigate } = useNavigate();
|
||||
const midOptionsWithoutGids = useStore.getState().UserStore.selectOptionsMidsWithoutGids;
|
||||
const userMid = useStore.getState().UserStore.mid;
|
||||
@@ -32,7 +34,7 @@ export const FundAccountTransferRequestPage = () => {
|
||||
|
||||
const { mutateAsync: extensionFundAccountRegist } = useExtensionFundAccountTransferRegistMutation();
|
||||
|
||||
useSetHeaderTitle('자금이체 이체등록');
|
||||
useSetHeaderTitle(t('additionalService.fundAccount.transferRegistrationTitle'));
|
||||
useSetHeaderType(HeaderType.RightClose);
|
||||
useSetFooterMode(false);
|
||||
useSetOnBack(() => {
|
||||
@@ -72,17 +74,17 @@ export const FundAccountTransferRequestPage = () => {
|
||||
};
|
||||
extensionFundAccountRegist(params).then((rs: ExtensionFundAccountTransferRegistResponse) => {
|
||||
if (rs.status) {
|
||||
snackBar("이체등록을 성공하였습니다.")
|
||||
snackBar(t('additionalService.fundAccount.registrationSuccess'))
|
||||
resetForm();
|
||||
} else {
|
||||
const errorMessage = rs.error?.message || '이체등록이 실패하였습니다.';
|
||||
snackBar(`[실패] ${errorMessage}`);
|
||||
const errorMessage = rs.error?.message || t('additionalService.fundAccount.registrationFailed');
|
||||
snackBar(`[${t('common.failed')}] ${errorMessage}`);
|
||||
}
|
||||
}).catch((error) => {
|
||||
const errorMessage = error?.response?.data?.error?.message ||
|
||||
error?.message ||
|
||||
'이체등록 중 오류가 발생했습니다.';
|
||||
snackBar(`[실패] ${errorMessage}`);
|
||||
t('additionalService.fundAccount.registrationError');
|
||||
snackBar(`[${t('common.failed')}] ${errorMessage}`);
|
||||
});
|
||||
};
|
||||
|
||||
@@ -106,7 +108,7 @@ export const FundAccountTransferRequestPage = () => {
|
||||
<div className="ing-list">
|
||||
<div className="billing-form gap-30">
|
||||
<div className="billing-row">
|
||||
<div className="billing-label">가맹점<span>*</span></div>
|
||||
<div className="billing-label">{t('filter.merchant')}<span>*</span></div>
|
||||
<div className="billing-field">
|
||||
<select
|
||||
value={mid}
|
||||
@@ -123,10 +125,10 @@ export const FundAccountTransferRequestPage = () => {
|
||||
</div>
|
||||
</div>
|
||||
<div className="billing-row">
|
||||
<div className="billing-label">은행<span>*</span></div>
|
||||
<div className="billing-label">{t('additionalService.fundAccount.bank')}<span>*</span></div>
|
||||
<div className="billing-field">
|
||||
<select value={bankCode} onChange={(e) => setBankCode(e.target.value)}>
|
||||
<option value="">선택하세요</option>
|
||||
<option value="">{t('additionalService.fundAccount.pleaseSelect')}</option>
|
||||
{
|
||||
bankList
|
||||
.filter((bank) => bank.code1 !== '****')
|
||||
@@ -141,7 +143,7 @@ export const FundAccountTransferRequestPage = () => {
|
||||
</div>
|
||||
</div>
|
||||
<div className="billing-row">
|
||||
<div className="billing-label">계좌번호<span>*</span></div>
|
||||
<div className="billing-label">{t('additionalService.fundAccount.accountNumber')}<span>*</span></div>
|
||||
<div className="billing-field">
|
||||
<NumericFormat
|
||||
value={accountNo}
|
||||
@@ -157,7 +159,7 @@ export const FundAccountTransferRequestPage = () => {
|
||||
</div>
|
||||
</div>
|
||||
<div className="billing-row">
|
||||
<div className="billing-label">예금주명<span>*</span></div>
|
||||
<div className="billing-label">{t('additionalService.fundAccount.accountHolderName')}<span>*</span></div>
|
||||
<div className="billing-field">
|
||||
<input
|
||||
type="text"
|
||||
@@ -167,7 +169,7 @@ export const FundAccountTransferRequestPage = () => {
|
||||
</div>
|
||||
</div>
|
||||
<div className="billing-row">
|
||||
<div className="billing-label">이체금액<span>*</span></div>
|
||||
<div className="billing-label">{t('additionalService.fundAccount.transferAmount')}<span>*</span></div>
|
||||
<div className="billing-field">
|
||||
<NumericFormat
|
||||
value={amount}
|
||||
@@ -182,7 +184,7 @@ export const FundAccountTransferRequestPage = () => {
|
||||
</div>
|
||||
</div>
|
||||
<div className="billing-row">
|
||||
<div className="billing-label">주문번호<span>*</span></div>
|
||||
<div className="billing-label">{t('transaction.fields.orderNumber')}<span>*</span></div>
|
||||
<div className="billing-field" style={{ display: 'flex', gap: '8px', alignItems: 'center' }}>
|
||||
<input
|
||||
type="text"
|
||||
@@ -192,7 +194,7 @@ export const FundAccountTransferRequestPage = () => {
|
||||
</div>
|
||||
</div>
|
||||
<div className="billing-row">
|
||||
<div className="billing-label">입금인자</div>
|
||||
<div className="billing-label">{t('additionalService.fundAccount.depositParameter')}</div>
|
||||
<div className="billing-field">
|
||||
<input
|
||||
type="text"
|
||||
@@ -211,7 +213,7 @@ export const FundAccountTransferRequestPage = () => {
|
||||
className="btn-50 btn-blue flex-1"
|
||||
onClick={callExtensionFundAccountTransferRegist}
|
||||
disabled={!isFormValid()}
|
||||
>등록</button>
|
||||
>{t('additionalService.fundAccount.register')}</button>
|
||||
</div>
|
||||
</>
|
||||
);
|
||||
|
||||
Reference in New Issue
Block a user