(() => { // webpackBootstrap var __webpack_exports__ = {}; (() => { const { pageHelper, EventManager, utils } = ShopbySkin; const articleWriteFormLayerModalHelper = pageHelper.articleWriteFormLayerModalHelper(); articleWriteFormLayerModalHelper.initialize({ layerModalHelperKey: 'article-write-form', }); const boardNo = '277456'; const getCapchaKey = () => { return (new Date()).getTime().toString(); }; const getCapchaImage = async (key) => { const res = await fetch(`https://shop-api.shopby.co.kr/captcha/image?key=${key}`, { method: 'GET', headers: { 'Content-Type': 'application/json', Version: '1.0', clientId: '99ZDpWfrizZV8irrjPvB8w==', platform: 'PC', language: 'ko', }, }).then((res) => res.json()); return res.url; }; const verifyCapcha = async (key, code) => { const res = await fetch(`https://shop-api.shopby.co.kr/captcha/verify?key=${key}&code=${code}`, { method: 'POST', headers: { 'Content-Type': 'application/json', Version: '1.0', clientId: '99ZDpWfrizZV8irrjPvB8w==', platform: 'PC', language: 'ko', }, }); return ( res.status === 204 || res.status === 200 ); }; const refreshCapcha = async () => { const key = getCapchaKey(); getCapchaImage(key).then((url) => { document.querySelector('.captcha_key').value = key; document.querySelector('.captcha_image').src = url; document.querySelector('.captcha_image').style.visibility = ''; document.querySelector('.captcha_code').value = ''; }); } const getFormData = (formElement) => { const formData = new FormData(formElement); return { consultType: formData.get('consultType'), userName: formData.get('userName'), tel: formData.get('tel'), email: formData.get('email'), companyName: formData.get('companyName'), businessNumber: formData.get('businessNumber'), title: formData.get('title'), content: formData.get('content').replaceAll(/\n/g, '
'), agreement: formData.get('agreement'), } } const checkInvalidPostForm = async (data) => { if (!data.userName) { return { message: '이름을 입력해주세요.', invalid: true }; } if (!data.tel) { return { message: '연락처를 입력해주세요.', invalid: true }; } if ( !/^(01[0-9]{1}-?[0-9]{4}-?[0-9]{4})$/.test(data.tel) && !/^(01[0-9]{1}?[0-9]{8})$/.test(data.tel) ) { return { message: '연락처 형식이 맞지 안습니다.', invalid: true }; } if ('' == data.email) { return { message: '이메일을 입력해주세요.', invalid: true }; } if (!/^[A-Za-z0-9_\.\-]+@[A-Za-z0-9\-]+\.[A-Za-z0-9\-]+/.test(data.email)) { return { message: '이메일 형식이 맞지 않습니다.', invalid: true }; } if (!data.companyName) { return { message: '사업자명을 입력해주세요.', invalid: true }; } /* if (!data.businessNumber) { return { message: '사업자번호를 입력해주세요.', invalid: true }; } if ( !/^[0-9]{3}-[0-9]{2}-[0-9]{5}$/.test(data.businessNumber) && !/^[0-9]{10}$/.test(data.businessNumber) ) { return { message: '사업자번호 형식이 맞지 않습니다.', invalid: true }; } */ if (!data.title) { return { message: '제목을 입력해주세요.', invalid: true }; } if (!data.content) { return { message: '내용을 입력해주세요.', invalid: true }; } /* const fileValue = document.querySelector('.upload_hidden').value; if (!fileValue) { return { message: '파일을 업로드해주세요.', invalid: true }; } */ const captchaKey = document.querySelector('.captcha_key').value; const captchaCode = document.querySelector('.captcha_code').value; const isCaptchaVerified = await verifyCapcha(captchaKey, captchaCode); if (!isCaptchaVerified) { return { message: '자동입력 방지 문자를 정확히 입력해주세요.', invalid: true }; } if ('on' != data.agreement) { return { message: '개인정보 수집 및 이용에 동의해주세요.', invalid: true }; } return { message: '', invalid: false }; }; const filesUpload = async (files) => { const result = []; try { if ( true === files[0].type.startsWith('image') ) { await utils.postImages({ files: files, }).then((res)=>{ res.data.forEach((file) => { result.push({ originalFileName: file.value.originName, uploadedFileName: file.value.imageUrl }); }); }); } else { await utils.postFiles({ files: files, }).then((res)=>{ res.data.forEach((file) => { result.push(file.value); }); }); } } catch(e) { console.log(e); } return result; } const savePost = async (data) => { const combinedContents = '유입경로: ' + data.consultType + '
' + '이름: ' + data.userName + '
' + '연락처: ' + data.tel + '
' + '이메일: ' + data.email + '
' + '업체명: ' + data.companyName + '
' + '사업자번호: ' + data.businessNumber + '
' + '문의내용: ' + '
' + data.content + '
' ; const files = await filesUpload(document.querySelector('.upload_hidden').files); const { isSuccess } = await articleWriteFormLayerModalHelper.saveArticle({ articleNo: null, boardNo: boardNo, articleTitle: data.title, articleContent: combinedContents, guestName: data.userName, password: '1111', secreted: false, images: files, isModify: false, }); if (isSuccess) { EventManager.fire('MODAL_ALERT_OPEN', { noticeType: 'SUCCESS', message: '문의 접수가 완료 되었습니다.
확인 후 연락 드리겠습니다.
', onClose: () => { EventManager.fire('CLOSE_TITLE_MODAL'); window.location.href = '/index.html'; }, }); } } document.querySelector('.btn_consult').addEventListener('click', async (event) => { try { const formElement = document.forms['formVolumeOrder']; const data = getFormData(formElement); const { message, invalid } = await checkInvalidPostForm(data); if (invalid) { console.log('invalid:', message); EventManager.fire('MODAL_ALERT_OPEN', { noticeType: 'WARNING', message: `${message}`, }); return; } await savePost(data); } catch (e) { console.log(e); /* EventManager.fire('MODAL_ALERT_OPEN', { message: e.error.description ?? e.description, }); */ } }); document.querySelectorAll('[name="tel"]').forEach((item)=>{ item.addEventListener('input', (event)=>{ item.value = item.value.replace(/[^0-9]/g, ''); if (item.value.length > 11) { item.value = item.value.slice(0, 11); } }); }); document.querySelector('.btn_captcha_refresh').addEventListener('click', async (event) => { refreshCapcha(); }); EventManager.on('PAGE_LOAD_COMPLETED', (data) => { refreshCapcha(); }); })(); })(); //파일업로드 var fileTargets = document.querySelectorAll('.area_filebox .upload_hidden'); fileTargets.forEach(function (fileTarget) { fileTarget.addEventListener('change', function () { let maxSize = 5 * 1024 * 1024; //* 5MB 사이즈 제한 let fileSize = this.files[0].size; //업로드한 파일용량 if(fileSize > maxSize){ openAlertModal("파일첨부 사이즈는 5MB 이내로 가능합니다."); this.value = ''; //업로드한 파일 제거 return; } var filename; if (window.FileReader) { filename = this.files[0].name; } else { filename = this.value.split('/').pop().split('\\').pop(); } var sibling = this.parentElement.querySelector('.upload_name'); if (sibling) { sibling.value = filename; } }); }); //지금 바로견적 문의 버튼 클릭이벤트 document.querySelector('.btn_consult_now').addEventListener('click', function(event) { event.preventDefault(); var consultBox = document.getElementById('consult_box'); var offset = 80; var elementPosition = consultBox.getBoundingClientRect().top; var offsetPosition = elementPosition + window.pageYOffset - offset; window.scrollTo({ top: offsetPosition, behavior: 'smooth' }); });