Files
nice-app-web/src/pages/support/qna/register-page.tsx
focp212@naver.com 484c06fba0 qna 등록
2025-09-08 17:59:55 +09:00

182 lines
6.0 KiB
TypeScript
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
import { ChangeEvent, useState } from 'react';
import { PATHS } from '@/shared/constants/paths';
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,
useSetOnBack
} from '@/widgets/sub-layout/use-sub-layout';
export enum QnaRegisterPropsName {
Mid = 'Mid',
CounselType = 'CounselType',
RequestName = 'RequestName',
RequestTel = 'RequestTel',
RequestEmail = 'RequestEmail',
Title = 'Title',
Contents = 'Contents',
};
export const QnaRegisterPage = () => {
const { navigate } = useNavigate();
const [mid, setMid] = useState<string>('string');
const [counselType, setCounselType] = useState<string>('st');
const [requestName, setRequestName] = useState<string>('');
const [requestTel, setRequestTel] = useState<string>('');
const [requestEmail, setRequestEmail] = useState<string>('');
const [title, setTitle] = useState<string>('');
const [contents, setContents] = useState<string>('');
useSetHeaderTitle('1:1 문의');
useSetHeaderType(HeaderType.LeftArrow);
useSetFooterMode(false);
useSetOnBack(() => {
navigate(PATHS.support.qna.list);
});
const { mutateAsync: qnaSave } = useQnaSaveMutation();
const setInputValue = (
e: ChangeEvent<HTMLInputElement | HTMLTextAreaElement | HTMLSelectElement>,
key: string
) => {
let value = e.target.value;
if(key === QnaRegisterPropsName.Mid){
setMid(value);
}
else if(key === QnaRegisterPropsName.CounselType){
setCounselType(value);
}
else if(key === QnaRegisterPropsName.RequestName){
setRequestName(value);
}
else if(key === QnaRegisterPropsName.RequestTel){
setRequestTel(value);
}
else if(key === QnaRegisterPropsName.RequestEmail){
setRequestEmail(value);
}
else if(key === QnaRegisterPropsName.Title){
setTitle(value);
}
else if(key === QnaRegisterPropsName.Contents){
setContents(value);
}
};
const callRegister = () => {
let params = {
mid: mid,
counselType: counselType,
requestName: requestName,
requestTel: requestTel,
requestEmail: requestEmail,
title: title,
contents: contents,
};
qnaSave(params).then((rs) => {
console.log(rs);
alert('성공');
navigate(PATHS.support.qna.list);
});
};
const onClickToRegisterQna = () => {
callRegister();
};
return (
<>
<main>
<div className="tab-content">
<div className="tab-pane active">
<div className="inq-form">
<div className="inq-field">
<div className="inq-label">
<span className="red">*</span>
</div>
<div className="inq-control">
<input
type="text"
value={ title }
onChange={ (e: ChangeEvent<HTMLInputElement>) => setInputValue(e, QnaRegisterPropsName.Title) }
/>
</div>
</div>
<div className="inq-field">
<div className="inq-label">
<span className="red">*</span>
</div>
<div className="inq-control">
<select
value={ counselType }
onChange={ (e: ChangeEvent<HTMLSelectElement>) => setInputValue(e, QnaRegisterPropsName.CounselType) }
>
<option></option>
</select>
</div>
</div>
<div className="inq-field">
<div className="inq-label">
<span className="red">*</span>
</div>
<div className="inq-control">
<input
type="text"
value={ requestName }
onChange={ (e: ChangeEvent<HTMLInputElement>) => setInputValue(e, QnaRegisterPropsName.RequestName) }
/>
</div>
</div>
<div className="inq-field">
<div className="inq-label">
<span className="red">*</span>
</div>
<div className="inq-control">
<input
type="text"
placeholder="-’를 빼고 입력하세요"
value={ requestTel }
onChange={ (e: ChangeEvent<HTMLInputElement>) => setInputValue(e, QnaRegisterPropsName.RequestTel) }
/>
</div>
</div>
<div className="inq-field">
<div className="inq-label"> </div>
<div className="inq-control">
<input
type="text"
placeholder="TEST123@nicepay.com"
value={ requestEmail }
onChange={ (e: ChangeEvent<HTMLInputElement>) => setInputValue(e, QnaRegisterPropsName.RequestEmail) }
/>
</div>
</div>
<div className="inq-text">
<div className="inq-text-label">
<span className="red">*</span>
</div>
<div className="inq-text-body">
<textarea
value={ contents }
onChange={ (e: ChangeEvent<HTMLTextAreaElement>) => setInputValue(e, QnaRegisterPropsName.Contents) }
></textarea>
</div>
</div>
</div>
<div className="apply-row">
<button
className="btn-50 btn-blue flex-1"
onClick={ () => onClickToRegisterQna() }
></button>
</div>
</div>
</div>
</main>
</>
);
};