(() => { // 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'
});
});