diff --git a/src/entities/additional-service/ui/link-payment/apply/link-payment-step1.tsx b/src/entities/additional-service/ui/link-payment/apply/link-payment-step1.tsx index 0974aba..5cacbfe 100644 --- a/src/entities/additional-service/ui/link-payment/apply/link-payment-step1.tsx +++ b/src/entities/additional-service/ui/link-payment/apply/link-payment-step1.tsx @@ -131,9 +131,14 @@ export const LinkPaymentStep1 = ({ formData, setFormData }: LinkPaymentStep1Prop
handleInputChange('moid', e.target.value)} + onChange={(e) => { + // 영문자와 숫자만 허용 (한글, 특수문자 제거) + const cleanedValue = e.target.value.replace(/[^a-zA-Z0-9]/g, ''); + handleInputChange('moid', cleanedValue); + }} onFocus={handleInputFocus} />
diff --git a/src/pages/additional-service/link-payment/apply/link-payment-apply-confirm-page.tsx b/src/pages/additional-service/link-payment/apply/link-payment-apply-confirm-page.tsx index 2a827f4..d7f25d0 100644 --- a/src/pages/additional-service/link-payment/apply/link-payment-apply-confirm-page.tsx +++ b/src/pages/additional-service/link-payment/apply/link-payment-apply-confirm-page.tsx @@ -91,7 +91,9 @@ export const LinkPaymentApplyConfirmPage = () => { }; const onClickToBack = () => { - navigate(-1); + navigate(PATHS.additionalService.linkPayment.request, { + state: { formData, returnToStep: 2 } + }); }; return ( diff --git a/src/pages/additional-service/link-payment/apply/link-payment-apply-page.tsx b/src/pages/additional-service/link-payment/apply/link-payment-apply-page.tsx index 2752cea..8aa276b 100644 --- a/src/pages/additional-service/link-payment/apply/link-payment-apply-page.tsx +++ b/src/pages/additional-service/link-payment/apply/link-payment-apply-page.tsx @@ -11,12 +11,14 @@ import { IdentityType, Language } from '@/entities/additional-service/model/type import { LinkContentType, LinkPaymentFormData, LinkPaymentSendMethod } from '@/entities/additional-service/model/link-pay/types'; import { useStore } from '@/shared/model/store'; import moment from 'moment'; +import { useLocation } from 'react-router'; export const LinkPaymentApplyPage = () => { const { t } = useTranslation(); const { navigate } = useNavigate(); + const location = useLocation(); const midOptionsWithoutGids = useStore.getState().UserStore.selectOptionsMidsWithoutGids; const userMid = useStore.getState().UserStore.mid; @@ -27,23 +29,31 @@ export const LinkPaymentApplyPage = () => { }); const initialMid = (midItem.length > 0) ? userMid : (midOptionsWithoutGids.length > 0 ? midOptionsWithoutGids[0]?.value || '' : ''); - const [processStep, setProcessStep] = useState(ProcessStep.One); - const [formData, setFormData] = useState({ - mid: initialMid, - sendMethod: LinkPaymentSendMethod.SMS, - goodsName: '', - amount: 0, - moid: '', - paymentLimitDate: moment().format('YYYY.MM.DD'), - buyerName: '', - email: '', - phoneNumber: '', - isIdentity: false, - identityType: IdentityType.INDIVIDUAL, - identityValue: '', - language: Language.KR, - linkContentType: LinkContentType.BASIC - }); + // location.state에서 formData와 returnToStep 받기 + const savedFormData = location.state?.formData; + const returnToStep = location.state?.returnToStep; + + const [processStep, setProcessStep] = useState( + returnToStep === 2 ? ProcessStep.Two : ProcessStep.One + ); + const [formData, setFormData] = useState( + savedFormData || { + mid: initialMid, + sendMethod: LinkPaymentSendMethod.SMS, + goodsName: '', + amount: 0, + moid: '', + paymentLimitDate: moment().format('YYYY.MM.DD'), + buyerName: '', + email: '', + phoneNumber: '', + isIdentity: false, + identityType: IdentityType.INDIVIDUAL, + identityValue: '', + language: Language.KR, + linkContentType: LinkContentType.BASIC + } + ); useSetHeaderTitle(t('additionalService.linkPayment.applyTitle')); useSetHeaderType(HeaderType.LeftArrow); diff --git a/src/shared/ui/assets/css/style-fix.css b/src/shared/ui/assets/css/style-fix.css index eec6083..512b265 100644 --- a/src/shared/ui/assets/css/style-fix.css +++ b/src/shared/ui/assets/css/style-fix.css @@ -579,6 +579,34 @@ main.pop{ object-fit: contain; } +/* 링크결제 확인 페이지 */ +main.pop { + height: 100vh; + overflow: hidden; + display: flex; + flex-direction: column; +} + +main.pop .sub-wrap { + flex: 1; + overflow-y: auto; + overflow-x: hidden; + padding-bottom: 120px; + -webkit-overflow-scrolling: touch; +} + +main.pop .preview-body { + max-width: 338px; + width: 100%; + min-height: auto; +} + +main.pop .apply-row { + position: fixed; + bottom: 0; + flex-shrink: 0; +} + .resend-text { word-break: break-all !important; }