링크결제 발송대기 필터 다국어 지원 추가

- 필터 레이블 및 옵션 현지화
- 휴대폰번호/이메일 검색 타입 번역
- 발송수단 및 진행상태 옵션 다국어 적용

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
Jay Sheen
2025-11-03 16:11:37 +09:00
parent 79b5c1cb76
commit 2fea3a0691
3 changed files with 20 additions and 15 deletions

View File

@@ -1,5 +1,6 @@
import moment from 'moment'; import moment from 'moment';
import { useEffect } from 'react'; import { useEffect } from 'react';
import { useTranslation } from 'react-i18next';
import { IMAGE_ROOT } from '@/shared/constants/common'; import { IMAGE_ROOT } from '@/shared/constants/common';
import { motion } from 'framer-motion'; import { motion } from 'framer-motion';
import { ChangeEvent, useState } from 'react'; import { ChangeEvent, useState } from 'react';
@@ -32,7 +33,7 @@ export const LinkPaymentWaitSendFilter = ({
setSendMethod, setSendMethod,
setProcessStatus setProcessStatus
}: LinkPaymentWaitFilterProps) => { }: LinkPaymentWaitFilterProps) => {
const { t } = useTranslation();
const [filterMid, setFilterMid] = useState<string>(mid); const [filterMid, setFilterMid] = useState<string>(mid);
const [filterSearchType, setFilterSearchType] = useState<LinkPaymentSearchCl>(searchCl); const [filterSearchType, setFilterSearchType] = useState<LinkPaymentSearchCl>(searchCl);
@@ -58,21 +59,21 @@ export const LinkPaymentWaitSendFilter = ({
}; };
let searchTypeOption = [ let searchTypeOption = [
{ name: '휴대폰번호', value: LinkPaymentSearchCl.PHONE }, { name: t('additionalService.linkPay.phoneNumber'), value: LinkPaymentSearchCl.PHONE },
{ name: '이메일', value: LinkPaymentSearchCl.EMAIL }, { name: t('common.email'), value: LinkPaymentSearchCl.EMAIL },
]; ];
let sendMethodOption = [ let sendMethodOption = [
{ name: '전체', value: LinkPaymentSendMethod.ALL }, { name: t('additionalService.linkPay.all'), value: LinkPaymentSendMethod.ALL },
{ name: 'SMS', value: LinkPaymentSendMethod.SMS }, { name: 'SMS', value: LinkPaymentSendMethod.SMS },
{ name: '이메일', value: LinkPaymentSendMethod.EMAIL }, { name: t('common.email'), value: LinkPaymentSendMethod.EMAIL },
{ name: '카카오', value: LinkPaymentSendMethod.KAKAO }, { name: t('common.kakao'), value: LinkPaymentSendMethod.KAKAO },
]; ];
let processStatusOption = [ let processStatusOption = [
{ name: '전체', value: LinkPaymentProcessStatus.ALL }, { name: t('additionalService.linkPay.all'), value: LinkPaymentProcessStatus.ALL },
{ name: '발송요청', value: LinkPaymentProcessStatus.SEND_REQUEST }, { name: t('additionalService.linkPay.sendRequest'), value: LinkPaymentProcessStatus.SEND_REQUEST },
{ name: '발송취소', value: LinkPaymentProcessStatus.SEND_CANCEL }, { name: t('additionalService.linkPay.sendCancel'), value: LinkPaymentProcessStatus.SEND_CANCEL },
]; ];
useEffect(() => { useEffect(() => {
@@ -90,7 +91,7 @@ export const LinkPaymentWaitSendFilter = ({
> >
<div className="full-menu-container"> <div className="full-menu-container">
<div className="full-menu-header"> <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"> <div className="full-menu-actions">
<FullMenuClose <FullMenuClose
addClass='full-menu-close' addClass='full-menu-close'
@@ -101,13 +102,13 @@ export const LinkPaymentWaitSendFilter = ({
<div className="option-list pt-16 pb-86"> <div className="option-list pt-16 pb-86">
<FilterSelectMid <FilterSelectMid
title='가맹점' title={t('filter.merchant')}
selectSetter={setFilterMid} selectSetter={setFilterMid}
showType={'GID'} showType={'GID'}
></FilterSelectMid> ></FilterSelectMid>
<FilterSelectInput <FilterSelectInput
title='휴대폰번호/이메일' title={t('additionalService.linkPay.phoneNumberEmail')}
selectValue={filterSearchType} selectValue={filterSearchType}
selectSetter={setFilterSearchType} selectSetter={setFilterSearchType}
selectOptions={searchTypeOption} selectOptions={searchTypeOption}
@@ -122,14 +123,14 @@ export const LinkPaymentWaitSendFilter = ({
></FilterCalendar> ></FilterCalendar>
<FilterButtonGroups <FilterButtonGroups
title='발송수단' title={t('additionalService.linkPayment.sendMethodFilter')}
activeValue={filterSendMethod} activeValue={filterSendMethod}
btnGroups={sendMethodOption} btnGroups={sendMethodOption}
setter={setFilterSendMethod} setter={setFilterSendMethod}
></FilterButtonGroups> ></FilterButtonGroups>
<FilterButtonGroups <FilterButtonGroups
title='진행상태' title={t('additionalService.linkPayment.processStatus')}
activeValue={filterProcessStatus} activeValue={filterProcessStatus}
btnGroups={processStatusOption} btnGroups={processStatusOption}
setter={setFilterProcessStatus} setter={setFilterProcessStatus}
@@ -139,7 +140,7 @@ export const LinkPaymentWaitSendFilter = ({
<button <button
className="btn-50 btn-blue flex-1" className="btn-50 btn-blue flex-1"
onClick={() => onClickToSetFilter()} onClick={() => onClickToSetFilter()}
></button> >{t('filter.apply')}</button>
</div> </div>
</div> </div>
</motion.div> </motion.div>

View File

@@ -1090,6 +1090,8 @@
"linkContent": "Link Content", "linkContent": "Link Content",
"basic": "Basic", "basic": "Basic",
"additional": "Additional", "additional": "Additional",
"sendMethodFilter": "Send Method",
"processStatus": "Process Status",
"resendFailed": "Resend failed.", "resendFailed": "Resend failed.",
"resendError": "An error occurred during resend.", "resendError": "An error occurred during resend.",
"resendConfirm": "Do you want to resend?", "resendConfirm": "Do you want to resend?",

View File

@@ -1090,6 +1090,8 @@
"linkContent": "링크내용", "linkContent": "링크내용",
"basic": "기본", "basic": "기본",
"additional": "추가", "additional": "추가",
"sendMethodFilter": "발송수단",
"processStatus": "진행상태",
"resendFailed": "재발송을 실패하였습니다.", "resendFailed": "재발송을 실패하였습니다.",
"resendError": "재발송 중 오류가 발생했습니다.", "resendError": "재발송 중 오류가 발생했습니다.",
"resendConfirm": "재발송 하시겠습니까?", "resendConfirm": "재발송 하시겠습니까?",