부가서비스 페이지 및 컴포넌트 다국어화 완료
- 부가서비스 메인 페이지 다국어화 * 헤더 타이틀, 사용중인 서비스/신청 가능한 서비스 섹션 * 비활성 서비스 안내 메시지 - 부가서비스 공통 컴포넌트 다국어화 * list-item: 11개 서비스의 상태 라벨 (성공, 실패, 요청, 재발송) * title-info-wrap: 서비스 정보 표시 - 정산대행 페이지 다국어화 (5개 페이지) * 관리, 입금, 회원, 상세 페이지 헤더 * 상세 페이지: 입금 확인, 정산 정보, 수수료 정보 등 17개 필드 * 상태 변경 이력: 출금 실패, 동의 완료, 동의 만료 등 - 서비스별 상세 페이지 통화 표기 개선 (4개 페이지) * ARS, 펀드계좌(이체/결과), 페이아웃 상세 페이지 - 전체 통화 표기 통일 (11개 인스턴스) * 한국어: 100,000원 (suffix) * 영어: ₩100,000 (prefix) - 번역 키 추가: additionalService 네임스페이스 51+ 키 * 공통 상태 라벨, 11개 서비스명 및 설명 * 정산대행 전용 21개 키 - 지원 서비스: SMS결제, ARS결제, KEY-IN결제, 계좌조회/인증, 페이아웃, 정산대행, 링크결제, 펀드계좌, 알림톡, 안면인증 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
@@ -1,11 +1,12 @@
|
||||
import { useState } from 'react';
|
||||
import { useTranslation } from 'react-i18next';
|
||||
import { PATHS } from '@/shared/constants/paths';
|
||||
import { useNavigate } from '@/shared/lib/hooks/use-navigate';
|
||||
import { SettlementAgencyTab } from '@/entities/additional-service/ui/settlement-agency/settlement-agency-tab';
|
||||
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 {
|
||||
import {
|
||||
useSetHeaderTitle,
|
||||
useSetHeaderType,
|
||||
useSetFooterMode,
|
||||
@@ -13,11 +14,12 @@ import {
|
||||
} from '@/widgets/sub-layout/use-sub-layout';
|
||||
|
||||
export const SettlementAgencyDepositPage = () => {
|
||||
const { t } = useTranslation();
|
||||
const { navigate } = useNavigate();
|
||||
|
||||
const [activeTab, setActiveTab] = useState<SettlementAgencyTabKeys>(SettlementAgencyTabKeys.Deposit);
|
||||
|
||||
useSetHeaderTitle('정산대행');
|
||||
useSetHeaderTitle(t('additionalService.settlementAgency.title'));
|
||||
useSetHeaderType(HeaderType.LeftArrow);
|
||||
useSetFooterMode(false);
|
||||
useSetOnBack(() => {
|
||||
|
||||
@@ -1,10 +1,11 @@
|
||||
import { useState } from 'react';
|
||||
import { useTranslation } from 'react-i18next';
|
||||
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/settlement-agency-bottom-agree';
|
||||
import { HeaderType } from '@/entities/common/model/types';
|
||||
import {
|
||||
import {
|
||||
useSetHeaderTitle,
|
||||
useSetHeaderType,
|
||||
useSetFooterMode,
|
||||
@@ -12,11 +13,12 @@ import {
|
||||
} from '@/widgets/sub-layout/use-sub-layout';
|
||||
|
||||
export const SettlementAgencyDetailPage = () => {
|
||||
const { t } = useTranslation();
|
||||
const { navigate } = useNavigate();
|
||||
|
||||
const [bottomAgreeOn, setBottomAgreeOn] = useState<boolean>(false);
|
||||
|
||||
useSetHeaderTitle('정산대행');
|
||||
useSetHeaderTitle(t('additionalService.settlementAgency.title'));
|
||||
useSetHeaderType(HeaderType.LeftArrow);
|
||||
useSetFooterMode(false);
|
||||
useSetOnBack(() => {
|
||||
@@ -40,7 +42,7 @@ export const SettlementAgencyDetailPage = () => {
|
||||
<div className="receipt-row">
|
||||
<button type="button" className="receipt-btn">
|
||||
<span className="icon-24 download"></span>
|
||||
<span>입금확인서</span>
|
||||
<span>{t('additionalService.settlementAgency.depositConfirmation')}</span>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
@@ -48,84 +50,84 @@ export const SettlementAgencyDetailPage = () => {
|
||||
<div className="detail-divider"></div>
|
||||
|
||||
<div className="pay-detail">
|
||||
<div className="detail-title">정산 정보</div>
|
||||
<div className="detail-title">{t('additionalService.settlementAgency.settlementInfo')}</div>
|
||||
<ul className="kv-list">
|
||||
<li className="kv-row">
|
||||
<span className="k">정산ID</span>
|
||||
<span className="k">{t('additionalService.settlementAgency.settlementId')}</span>
|
||||
<span className="v">AB25061012</span>
|
||||
</li>
|
||||
<li className="kv-row">
|
||||
<span className="k">정산일</span>
|
||||
<span className="k">{t('additionalService.settlementAgency.settlementDate')}</span>
|
||||
<span className="v">2025.06.08</span>
|
||||
</li>
|
||||
<li className="kv-row">
|
||||
<span className="k">정산 상태</span>
|
||||
<span className="k">{t('additionalService.settlementAgency.settlementStatus')}</span>
|
||||
<span className="v">동의완료</span>
|
||||
</li>
|
||||
<li className="kv-row">
|
||||
<span className="k">총 거래금액</span>
|
||||
<span className="k">{t('additionalService.settlementAgency.totalTransactionAmount')}</span>
|
||||
<span className="v">105,000,000 원</span>
|
||||
</li>
|
||||
<li className="kv-row bolder">
|
||||
<span className="k">정산금액</span>
|
||||
<span className="k">{t('additionalService.settlementAgency.settlementAmount')}</span>
|
||||
<span className="v">100,000,000원</span>
|
||||
</li>
|
||||
</ul>
|
||||
<div className="detail-divider"></div>
|
||||
<div className="detail-title">정산 매장 정보</div>
|
||||
<div className="detail-title">{t('additionalService.settlementAgency.settlementStoreInfo')}</div>
|
||||
<ul className="kv-list">
|
||||
<li className="kv-row">
|
||||
<span className="k">정산매장 ID</span>
|
||||
<span className="k">{t('additionalService.settlementAgency.settlementStoreId')}</span>
|
||||
<span className="v">BACK01</span>
|
||||
</li>
|
||||
<li className="kv-row">
|
||||
<span className="k">정산매장 명</span>
|
||||
<span className="k">{t('additionalService.settlementAgency.settlementStoreName')}</span>
|
||||
<span className="v">뺵다방3</span>
|
||||
</li>
|
||||
<li className="kv-row">
|
||||
<span className="k">사업자 번호</span>
|
||||
<span className="k">{t('additionalService.settlementAgency.businessNumber')}</span>
|
||||
<span className="v">123456789</span>
|
||||
</li>
|
||||
<li className="kv-row">
|
||||
<span className="k">수수료 정보</span>
|
||||
<span className="k">{t('additionalService.settlementAgency.feeInfo')}</span>
|
||||
<span className="v">3%, 반올림</span>
|
||||
</li>
|
||||
<li className="kv-row">
|
||||
<span className="k">과세 여부</span>
|
||||
<span className="k">{t('additionalService.settlementAgency.taxStatus')}</span>
|
||||
<span className="v">과세, 반올림</span>
|
||||
</li>
|
||||
<li className="kv-row">
|
||||
<span className="k">은행</span>
|
||||
<span className="k">{t('additionalService.settlementAgency.bank')}</span>
|
||||
<span className="v">기업</span>
|
||||
</li>
|
||||
<li className="kv-row">
|
||||
<span className="k">계좌번호</span>
|
||||
<span className="k">{t('additionalService.settlementAgency.accountNumber')}</span>
|
||||
<span className="v">110-12-12-11111</span>
|
||||
</li>
|
||||
</ul>
|
||||
<div className="detail-divider"></div>
|
||||
<div className="detail-title summary-amount divTop">
|
||||
<span className="amount-text states-17"> 상태 변경 이력</span>
|
||||
<span className="amount-text states-17"> {t('additionalService.settlementAgency.statusChangeHistory')}</span>
|
||||
<button>
|
||||
<img
|
||||
<img
|
||||
src={ IMAGE_ROOT + '/ico_divTop_arrow.svg' }
|
||||
alt="화살표"
|
||||
alt={t('settlement.arrow')}
|
||||
/>
|
||||
</button>
|
||||
</div>
|
||||
<div className="sd-history">
|
||||
<div className="sd-history-item">
|
||||
<div className="left">
|
||||
<div className="name">출금실패</div>
|
||||
<div className="name">{t('additionalService.settlementAgency.withdrawalFailed')}</div>
|
||||
<div className="time">2025/04/15 10:00:00</div>
|
||||
</div>
|
||||
<div className="right">
|
||||
<div className="reason">사유 : 지급 계좌오류</div>
|
||||
<div className="reason">{t('additionalService.settlementAgency.reason')} : {t('additionalService.settlementAgency.accountError')}</div>
|
||||
</div>
|
||||
</div>
|
||||
<div className="sd-history-item">
|
||||
<div className="left">
|
||||
<div className="name">동의완료</div>
|
||||
<div className="name">{t('additionalService.settlementAgency.agreementCompleted')}</div>
|
||||
<div className="time">2025/04/10 10:00:00</div>
|
||||
</div>
|
||||
<div className="right">
|
||||
@@ -134,7 +136,7 @@ export const SettlementAgencyDetailPage = () => {
|
||||
</div>
|
||||
<div className="sd-history-item">
|
||||
<div className="left">
|
||||
<div className="name">동의기한 초과</div>
|
||||
<div className="name">{t('additionalService.settlementAgency.agreementExpired')}</div>
|
||||
<div className="time">2025/04/06 10:00:00</div>
|
||||
</div>
|
||||
<div className="right">
|
||||
@@ -143,10 +145,10 @@ export const SettlementAgencyDetailPage = () => {
|
||||
</div>
|
||||
</div>
|
||||
<div className="apply-row">
|
||||
<button
|
||||
<button
|
||||
className="btn-50 btn-blue flex-1"
|
||||
onClick={ () => oncClickToOpenBottomAgree() }
|
||||
>정산 동의/거절</button>
|
||||
>{t('additionalService.settlementAgency.agreeOrReject')}</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -1,11 +1,12 @@
|
||||
import { useState } from 'react';
|
||||
import { useTranslation } from 'react-i18next';
|
||||
import { PATHS } from '@/shared/constants/paths';
|
||||
import { useNavigate } from '@/shared/lib/hooks/use-navigate';
|
||||
import { SettlementAgencyTab } from '@/entities/additional-service/ui/settlement-agency/settlement-agency-tab';
|
||||
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 {
|
||||
import {
|
||||
useSetHeaderTitle,
|
||||
useSetHeaderType,
|
||||
useSetFooterMode,
|
||||
@@ -13,11 +14,12 @@ import {
|
||||
} from '@/widgets/sub-layout/use-sub-layout';
|
||||
|
||||
export const SettlementAgencyManagePage = () => {
|
||||
const { t } = useTranslation();
|
||||
const { navigate } = useNavigate();
|
||||
|
||||
const [activeTab, setActiveTab] = useState<SettlementAgencyTabKeys>(SettlementAgencyTabKeys.Manage);
|
||||
|
||||
useSetHeaderTitle('정산대행');
|
||||
useSetHeaderTitle(t('additionalService.settlementAgency.title'));
|
||||
useSetHeaderType(HeaderType.LeftArrow);
|
||||
useSetFooterMode(false);
|
||||
useSetOnBack(() => {
|
||||
|
||||
@@ -1,11 +1,12 @@
|
||||
import { useState } from 'react';
|
||||
import { useTranslation } from 'react-i18next';
|
||||
import { PATHS } from '@/shared/constants/paths';
|
||||
import { useNavigate } from '@/shared/lib/hooks/use-navigate';
|
||||
import { SettlementAgencyTab } from '@/entities/additional-service/ui/settlement-agency/settlement-agency-tab';
|
||||
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 {
|
||||
import {
|
||||
useSetHeaderTitle,
|
||||
useSetHeaderType,
|
||||
useSetFooterMode,
|
||||
@@ -13,11 +14,12 @@ import {
|
||||
} from '@/widgets/sub-layout/use-sub-layout';
|
||||
|
||||
export const SettlementAgencyMemberPage = () => {
|
||||
const { t } = useTranslation();
|
||||
const { navigate } = useNavigate();
|
||||
|
||||
const [activeTab, setActiveTab] = useState<SettlementAgencyTabKeys>(SettlementAgencyTabKeys.Member);
|
||||
|
||||
useSetHeaderTitle('정산대행');
|
||||
useSetHeaderTitle(t('additionalService.settlementAgency.title'));
|
||||
useSetHeaderType(HeaderType.LeftArrow);
|
||||
useSetFooterMode(false);
|
||||
useSetOnBack(() => {
|
||||
|
||||
Reference in New Issue
Block a user