- 수기발행,1:1문의 등록, 빌링 모바일 용 패딩 추가 로직 추가

This commit is contained in:
HyeonJongKim
2025-11-07 11:09:35 +09:00
parent da66206417
commit 21103232e9
5 changed files with 143 additions and 116 deletions

View File

@@ -4,9 +4,9 @@ import { useNavigate } from '@/shared/lib/hooks/use-navigate';
import { useQnaSaveMutation } from '@/entities/support/api/use-qna-save-mutation';
import { HeaderType } from '@/entities/common/model/types';
import {
useSetHeaderTitle,
useSetHeaderType,
useSetFooterMode,
useSetHeaderTitle,
useSetHeaderType,
useSetFooterMode,
useSetOnBack
} from '@/widgets/sub-layout/use-sub-layout';
import { useStore } from '@/shared/model/store';
@@ -16,6 +16,7 @@ import { overlay } from 'overlay-kit';
import { Dialog } from '@/shared/ui/dialogs/dialog';
import { QnaSaveParams, QnaSaveResponse } from '@/entities/support/model/types';
import { checkGrant } from '@/shared/lib/check-grant';
import { useKeyboardAware } from '@/shared/lib/hooks/use-keyboard-aware';
export enum QnaRegisterPropsName {
Mid = 'Mid',
@@ -39,6 +40,7 @@ export const QnaRegisterPage = () => {
const [requestEmail, setRequestEmail] = useState<string>('');
const [title, setTitle] = useState<string>('');
const [contents, setContents] = useState<string>('');
const { handleInputFocus, keyboardAwarePadding } = useKeyboardAware();
useSetHeaderTitle(t('support.qna.title'));
useSetHeaderType(HeaderType.LeftArrow);
@@ -54,25 +56,25 @@ export const QnaRegisterPage = () => {
key: string
) => {
let value = e.target.value;
if(key === QnaRegisterPropsName.Mid){
if (key === QnaRegisterPropsName.Mid) {
setMid(value);
}
else if(key === QnaRegisterPropsName.RequestType){
else if (key === QnaRegisterPropsName.RequestType) {
setRequestType(value);
}
else if(key === QnaRegisterPropsName.RequestName){
else if (key === QnaRegisterPropsName.RequestName) {
setRequestName(value);
}
else if(key === QnaRegisterPropsName.RequestTel){
else if (key === QnaRegisterPropsName.RequestTel) {
setRequestTel(value);
}
else if(key === QnaRegisterPropsName.RequestEmail){
else if (key === QnaRegisterPropsName.RequestEmail) {
setRequestEmail(value);
}
else if(key === QnaRegisterPropsName.Title){
else if (key === QnaRegisterPropsName.Title) {
setTitle(value);
}
else if(key === QnaRegisterPropsName.Contents){
else if (key === QnaRegisterPropsName.Contents) {
setContents(value);
}
};
@@ -87,7 +89,7 @@ export const QnaRegisterPage = () => {
afterLeave={unmount}
open={isOpen}
onClose={close}
message={ msg }
message={msg}
buttonLabel={[t('support.qna.confirmButton')]}
/>
);
@@ -95,35 +97,35 @@ export const QnaRegisterPage = () => {
}
const checkEmail = (email: string) => {
var re = /^([\w-]+(?:\.[\w-]+)*)@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$/i;
if(email != '' && email != 'undefined' && re.test(email)){
if (email != '' && email != 'undefined' && re.test(email)) {
return true;
}
else{
else {
return false;
}
};
const callRegister = () => {
if(!title){
if (!title) {
showAlert(t('support.qna.validation.title'));
return;
}
else if(!requestType){
else if (!requestType) {
showAlert(t('support.qna.validation.requestType'));
return;
}
else if(!requestName){
else if (!requestName) {
showAlert(t('support.qna.validation.requestName'));
return;
}
else if(!requestTel){
else if (!requestTel) {
showAlert(t('support.qna.validation.requestTel'));
return;
}
else if(requestEmail && !checkEmail(requestEmail)){
else if (requestEmail && !checkEmail(requestEmail)) {
showAlert(t('support.qna.validation.requestEmail'));
return;
}
else if(!contents){
else if (!contents) {
showAlert(t('support.qna.validation.contents'));
return;
}
@@ -140,7 +142,7 @@ export const QnaRegisterPage = () => {
alert(t('support.qna.successMessage'));
navigate(PATHS.support.qna.list);
}).catch((e: any) => {
if(e.response?.data?.error?.message){
if (e.response?.data?.error?.message) {
showAlert(e.response?.data?.error?.message);
return;
}
@@ -168,9 +170,10 @@ export const QnaRegisterPage = () => {
<div className="inq-control">
<input
type="text"
value={ title }
required= { true }
onChange={ (e: ChangeEvent<HTMLInputElement>) => setInputValue(e, QnaRegisterPropsName.Title) }
value={title}
required={true}
onChange={(e: ChangeEvent<HTMLInputElement>) => setInputValue(e, QnaRegisterPropsName.Title)}
onFocus={handleInputFocus}
/>
</div>
</div>
@@ -180,9 +183,9 @@ export const QnaRegisterPage = () => {
</div>
<div className="inq-control">
<select
value={ requestType }
required= { true }
onChange={ (e: ChangeEvent<HTMLSelectElement>) => setInputValue(e, QnaRegisterPropsName.RequestType) }
value={requestType}
required={true}
onChange={(e: ChangeEvent<HTMLSelectElement>) => setInputValue(e, QnaRegisterPropsName.RequestType)}
>
<option value="">{t('support.qna.categories.choose')}</option>
<option value="01">{t('support.qna.categories.01')}</option>
@@ -202,9 +205,10 @@ export const QnaRegisterPage = () => {
<div className="inq-control">
<input
type="text"
value={ requestName }
required= { true }
onChange={ (e: ChangeEvent<HTMLInputElement>) => setInputValue(e, QnaRegisterPropsName.RequestName) }
value={requestName}
required={true}
onChange={(e: ChangeEvent<HTMLInputElement>) => setInputValue(e, QnaRegisterPropsName.RequestName)}
onFocus={handleInputFocus}
/>
</div>
</div>
@@ -215,10 +219,11 @@ export const QnaRegisterPage = () => {
<div className="inq-control">
<PatternFormat
placeholder={t('support.qna.formLabels.phonePlaceholder')}
value={ requestTel }
value={requestTel}
valueIsNumericString
format="###########"
onChange={ (e: ChangeEvent<HTMLInputElement>) => setInputValue(e, QnaRegisterPropsName.RequestTel) }
onChange={(e: ChangeEvent<HTMLInputElement>) => setInputValue(e, QnaRegisterPropsName.RequestTel)}
onFocus={handleInputFocus}
></PatternFormat>
</div>
</div>
@@ -228,20 +233,22 @@ export const QnaRegisterPage = () => {
<input
type="email"
placeholder={t('support.qna.formLabels.emailPlaceholder')}
value={ requestEmail }
onChange={ (e: ChangeEvent<HTMLInputElement>) => setInputValue(e, QnaRegisterPropsName.RequestEmail) }
value={requestEmail}
onChange={(e: ChangeEvent<HTMLInputElement>) => setInputValue(e, QnaRegisterPropsName.RequestEmail)}
onFocus={handleInputFocus}
/>
</div>
</div>
<div className="inq-text">
<div className="inq-text" style={keyboardAwarePadding}>
<div className="inq-text-label">
{t('support.qna.formLabels.inquiryContents')} <span className="red">{t('support.qna.formLabels.required')}</span>
</div>
<div className="inq-text-body">
<textarea
value={ contents }
required= { true }
onChange={ (e: ChangeEvent<HTMLTextAreaElement>) => setInputValue(e, QnaRegisterPropsName.Contents) }
value={contents}
required={true}
onChange={(e: ChangeEvent<HTMLTextAreaElement>) => setInputValue(e, QnaRegisterPropsName.Contents)}
onFocus={handleInputFocus}
></textarea>
</div>
</div>
@@ -249,7 +256,7 @@ export const QnaRegisterPage = () => {
<div className="apply-row">
<button
className="btn-50 btn-blue flex-1"
onClick={ () => onClickToRegisterQna() }
onClick={() => onClickToRegisterQna()}
>{t('support.qna.submitButton')}</button>
</div>
</div>