'use client' import { useRef, useState } from 'react' import { useAxios } from '@/hooks/useAxios' import { useRouter } from 'next/navigation' import { useMessage } from '@/hooks/useMessage' import Cookies from 'js-cookie' import { isObjectNotEmpty, inputTelNumberCheck, inputNumberCheck } from '@/util/common-utils' import GlobalSpinner from '@/components/common/spinner/GlobalSpinner' export default function Join() { const [isLoading, setIsLoading] = useState(false) const { getMessage } = useMessage() const { promisePost } = useAxios() const router = useRouter() const storeQcastNmRef = useRef() const storeQcastNmKanaRef = useRef() const postCdRef = useRef() const addrRef = useRef() const telNoRef = useRef() const faxRef = useRef() const bizNoRef = useRef() const userNmRef = useRef() const userNmKanaRef = useRef() const userIdRef = useRef() const emailRef = useRef() const userTelNoRef = useRef() const userFaxRef = useRef() // 가입 신청 유효성 검사 const joinValidation = (formData) => { // 판매대리점 정보 - 판매대리점명 const storeQcastNm = formData.get('storeQcastNm') if (!isObjectNotEmpty(storeQcastNm)) { alert(getMessage('common.message.required.data', [getMessage('join.sub1.storeQcastNm')])) storeQcastNmRef.current.focus() return false } // 판매대리점 정보 - 판매대리점명 후리가나 const storeQcastNmKana = formData.get('storeQcastNmKana') if (!isObjectNotEmpty(storeQcastNmKana)) { alert(getMessage('common.message.required.data', [getMessage('join.sub1.storeQcastNmKana')])) storeQcastNmKanaRef.current.focus() return false } // 판매대리점 정보 - 우편번호 const postCd = formData.get('postCd') if (!isObjectNotEmpty(postCd)) { alert(getMessage('common.message.required.data', [getMessage('join.sub1.postCd')])) postCdRef.current.focus() return false } // 판매대리점 정보 - 주소 const addr = formData.get('addr') if (!isObjectNotEmpty(addr)) { alert(getMessage('common.message.required.data', [getMessage('join.sub1.addr')])) addrRef.current.focus() return false } // 판매대리점 정보 - 전화번호 const telNo = formData.get('telNo') if (!isObjectNotEmpty(telNo)) { alert(getMessage('common.message.required.data', [getMessage('join.sub1.telNo')])) telNoRef.current.focus() return false } const bizNo = formData.get('bizNo') if (!isObjectNotEmpty(bizNo)) { alert(getMessage('common.message.required.data', [getMessage('join.sub1.bizNo')])) bizNoRef.current.focus() return false } // 담당자 정보 - 담당자명 const userNm = formData.get('userNm') if (!isObjectNotEmpty(userNm)) { alert(getMessage('common.message.required.data', [getMessage('join.sub2.userNm')])) userNmRef.current.focus() return false } // 담당자 정보 - 담당자명 후리가나 const userNmKana = formData.get('userNmKana') if (!isObjectNotEmpty(userNmKana)) { alert(getMessage('common.message.required.data', [getMessage('join.sub2.userNmKana')])) userNmKanaRef.current.focus() return false } // 담당자 정보 - 신청 ID const userId = formData.get('userId') if (!isObjectNotEmpty(userId)) { alert(getMessage('common.message.required.data', [getMessage('join.sub2.userId')])) userIdRef.current.focus() return false } // 담당자 정보 - 이메일 주소 const emailRegex = /^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$/ const email = formData.get('email') if (!isObjectNotEmpty(email)) { alert(getMessage('common.message.required.data', [getMessage('join.sub2.email')])) emailRef.current.focus() return false } else { // 이메일 정규식 검사 if (!emailRegex.test(email)) { alert(getMessage('join.validation.check1', [getMessage('join.sub2.email')])) emailRef.current.focus() return false } } // 담당자 정보 - 전화번호 const userTelNo = formData.get('userTelNo') if (!isObjectNotEmpty(userTelNo)) { alert(getMessage('common.message.required.data', [getMessage('join.sub2.telNo')])) userTelNoRef.current.focus() return false } return true } // 가입 신청 const joinProcess = async (e) => { e.preventDefault() const formData = new FormData(e.target) if (joinValidation(formData)) { if (confirm(getMessage('join.complete.save.confirm'))) { const param = { storeQcastNm: formData.get('storeQcastNm'), storeQcastNmKana: formData.get('storeQcastNmKana'), postCd: formData.get('postCd'), addr: formData.get('addr'), telNo: formData.get('telNo'), fax: formData.get('fax'), bizNo: formData.get('bizNo'), userInfo: { userId: formData.get('userId'), userNm: formData.get('userNm'), userNmKana: formData.get('userNmKana'), telNo: formData.get('userTelNo'), fax: formData.get('userFax'), email: formData.get('email'), category: formData.get('category'), }, } setIsLoading(true) await promisePost({ url: '/api/login/v1.0/user/join', data: param }) .then((res) => { if (res) { if (res.data.result.resultCode == 'S') { Cookies.set('joinEmail', formData.get('email'), { expires: 1 }) router.push('/join/complete') } else { alert(res.data.result.resultMsg) } } setIsLoading(false) }) .catch((error) => { setIsLoading(false) alert(error.response.data.message) }) } } } return ( <> {isLoading && }
{getMessage('join.title')}

{getMessage('join.sub1.title')} (*{getMessage('common.require')})

{getMessage('join.sub1.comment')}
{/* 판매대리점명 */} {/* 판매대리점명 후리가나 */} {/* 우편번호/주소 */} {/* 전화번호 */} {/* FAX 번호 */} {/* 법인번호 */}
{getMessage('join.sub1.storeQcastNm')} *
{getMessage('join.sub1.storeQcastNmKana')} *
{getMessage('join.sub1.postCd')}/{getMessage('join.sub1.addr')} *
{getMessage('join.sub1.telNo')} *
{getMessage('join.sub1.fax')}
{getMessage('join.sub1.bizNo')} *

{getMessage('join.sub2.title')} (*{getMessage('common.require')})

{/* 담당자명 */} {/* 담당자명 후리가나 */} {/* 신청 ID */} {/* 이메일 주소 */} {/* 전화번호 */} {/* FAX 번호 */} {/* 부서명 */}
{getMessage('join.sub2.userNm')} *
{getMessage('join.sub2.userNmKana')} *
{getMessage('join.sub2.userId')} *
{getMessage('join.sub2.email')} *
{getMessage('join.sub2.telNo')} *
{getMessage('join.sub2.fax')}
{getMessage('join.sub2.category')}
) }