초기 커밋: 5130 레거시 시스템
- URL 하드코딩 → .env APP_URL 기반 동적 URL로 변경 - DB 연결 하드코딩 → .env 기반으로 변경 - MySQL strict mode DATE 오류 수정
This commit is contained in:
190
output/common/pdfEmailJS.php
Normal file
190
output/common/pdfEmailJS.php
Normal file
@@ -0,0 +1,190 @@
|
||||
<script>
|
||||
|
||||
var ajaxRequest = null;
|
||||
|
||||
$(document).ready(function(){
|
||||
var loader = document.getElementById('loadingOverlay');
|
||||
if(loader)
|
||||
loader.style.display = 'none';
|
||||
|
||||
});
|
||||
|
||||
// 부트스트랩 툴팁
|
||||
$(document).ready(function() {
|
||||
var tooltipTriggerList = [].slice.call(document.querySelectorAll('[data-bs-toggle="tooltip"]'));
|
||||
var tooltipList = tooltipTriggerList.map(function (tooltipTriggerEl) {
|
||||
return new bootstrap.Tooltip(tooltipTriggerEl);
|
||||
});
|
||||
});
|
||||
|
||||
function captureReturnKey(e) {
|
||||
if(e.keyCode==13 && e.srcElement.type != 'textarea')
|
||||
return false;
|
||||
}
|
||||
|
||||
function recaptureReturnKey(e) {
|
||||
if(e.keyCode==13 && e.srcElement.type != 'textarea')
|
||||
return false;
|
||||
}
|
||||
|
||||
function generatePDF() {
|
||||
var workplace = '<?php echo $title_message; ?>';
|
||||
var today = new Date();
|
||||
var formattedDate = "(" + String(today.getFullYear()).slice(-2) + "." + ("0" + (today.getMonth() + 1)).slice(-2) + "." + ("0" + today.getDate()).slice(-2) + ")";
|
||||
var result = 'KD(' + workplace +')' + formattedDate + '.pdf';
|
||||
|
||||
var element = document.getElementById('content-to-print');
|
||||
var opt = {
|
||||
margin: [10, 3, 12, 3], // Top, right, bottom, left margins
|
||||
filename: result,
|
||||
image: { type: 'jpeg', quality: 1 },
|
||||
html2canvas: {
|
||||
scale: 3, // ★★★ 해상도(기본은 1) → 2~4 정도로 높이면 선명해짐 4는 용량이 매우 큽니다. 보통 3M 이상
|
||||
useCORS: true,
|
||||
scrollY: 0,
|
||||
scrollX: 0,
|
||||
windowWidth: document.body.scrollWidth,
|
||||
windowHeight: document.body.scrollHeight
|
||||
},
|
||||
jsPDF: { unit: 'mm', format: 'a4', orientation: 'portrait' },
|
||||
pagebreak: {
|
||||
mode: ['css', 'legacy'],
|
||||
avoid: ['tr', '.avoid-break'] // 핵심
|
||||
}
|
||||
};
|
||||
html2pdf().from(element).set(opt).save();
|
||||
}
|
||||
|
||||
|
||||
|
||||
function generatePDF_server(callback) {
|
||||
var workplace = '<?php echo $title_message; ?>';
|
||||
var item = '<?php echo $emailTitle; ?>';
|
||||
var today = new Date();
|
||||
var formattedDate = "(" + String(today.getFullYear()).slice(-2) + "." + ("0" + (today.getMonth() + 1)).slice(-2) + "." + ("0" + today.getDate()).slice(-2) + ")";
|
||||
var result = 'KD' + item +'(' + workplace + ')' + formattedDate + '.pdf';
|
||||
|
||||
var element = document.getElementById('content-to-print');
|
||||
var opt = {
|
||||
margin: [10, 3, 12, 3], // Top, right, bottom, left margins
|
||||
filename: result,
|
||||
image: { type: 'jpeg', quality: 1 },
|
||||
html2canvas: { scale: 3 },
|
||||
jsPDF: { unit: 'mm', format: 'a4', orientation: 'portrait' },
|
||||
pagebreak: { mode: [''] }
|
||||
};
|
||||
|
||||
html2pdf().from(element).set(opt).output('datauristring').then(function (pdfDataUri) {
|
||||
var pdfBase64 = pdfDataUri.split(',')[1]; // Base64 인코딩된 PDF 데이터 추출
|
||||
var formData = new FormData();
|
||||
formData.append('pdf', pdfBase64);
|
||||
formData.append('filename', result);
|
||||
|
||||
$.ajax({
|
||||
type: 'POST',
|
||||
url: '/email/save_pdf.php', // PDF 파일을 저장하는 PHP 파일
|
||||
data: formData,
|
||||
processData: false,
|
||||
contentType: false,
|
||||
success: function (response) {
|
||||
var res = JSON.parse(response);
|
||||
if (callback) {
|
||||
callback(res.filename); // 서버에 저장된 파일 경로를 콜백으로 전달
|
||||
}
|
||||
},
|
||||
error: function (xhr, status, error) {
|
||||
Swal.fire('Error', 'PDF 저장에 실패했습니다.', 'error');
|
||||
}
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
function sendmail() {
|
||||
var secondordnum = '<?php echo $secondordnum; ?>'; // 서버에서 가져온 값
|
||||
var item = '<?php echo $emailTitle; ?>';
|
||||
|
||||
if (!secondordnum) {
|
||||
Swal.fire({
|
||||
icon: 'warning',
|
||||
title: '오류 알림',
|
||||
text: '발주처 코드가 없습니다.'
|
||||
});
|
||||
return; // 함수 종료
|
||||
}
|
||||
|
||||
if (typeof ajaxRequest !== 'undefined' && ajaxRequest !== null) {
|
||||
ajaxRequest.abort();
|
||||
}
|
||||
|
||||
ajaxRequest = $.ajax({
|
||||
type: 'POST',
|
||||
url: '/email/get_companyCode.php',
|
||||
data: { secondordnum: secondordnum },
|
||||
dataType: 'json',
|
||||
success: function(response) {
|
||||
console.log('response : ', response);
|
||||
if (response.error) {
|
||||
Swal.fire('Error', response.error, 'error');
|
||||
} else {
|
||||
var email = response.email;
|
||||
var vendorName = response.vendor_name;
|
||||
|
||||
Swal.fire({
|
||||
title: 'E메일 보내기',
|
||||
text: vendorName + ' Email 주소확인',
|
||||
icon: 'warning',
|
||||
input: 'text', // input 창을 텍스트 필드로 설정
|
||||
inputLabel: 'Email 주소 수정 가능',
|
||||
inputValue: email, // 기존 이메일 주소를 기본값으로 설정
|
||||
showCancelButton: true,
|
||||
confirmButtonText: '보내기',
|
||||
cancelButtonText: '취소',
|
||||
reverseButtons: true,
|
||||
inputValidator: (value) => {
|
||||
if (!value) {
|
||||
return '이메일 주소를 입력해주세요!';
|
||||
}
|
||||
const emailPattern = /^[^\s@]+@[^\s@]+\.[^\s@]+$/;
|
||||
if (!emailPattern.test(value)) {
|
||||
return '올바른 이메일 형식을 입력해주세요!';
|
||||
}
|
||||
}
|
||||
}).then((result) => {
|
||||
if (result.isConfirmed) {
|
||||
const updatedEmail = result.value; // 입력된 이메일 주소 가져오기
|
||||
generatePDF_server(function(filename) {
|
||||
sendEmail(updatedEmail, vendorName, item, filename);
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
}
|
||||
},
|
||||
error: function(xhr, status, error) {
|
||||
Swal.fire('Error', '전송중 오류가 발생했습니다.', 'error');
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
function sendEmail(recipientEmail, vendorName, item, filename) {
|
||||
if (typeof ajaxRequest !== 'undefined' && ajaxRequest !== null) {
|
||||
ajaxRequest.abort();
|
||||
}
|
||||
var today = new Date();
|
||||
var formattedDate = "(" + String(today.getFullYear()).slice(-2) + "." + ("0" + (today.getMonth() + 1)).slice(-2) + "." + ("0" + today.getDate()).slice(-2) + ")";
|
||||
|
||||
ajaxRequest = $.ajax({
|
||||
type: 'POST',
|
||||
url: '/email/send_email.php', // 이메일 전송을 처리하는 PHP 파일
|
||||
data: { email: recipientEmail, vendorName: vendorName, filename: filename, item: item, formattedDate: formattedDate },
|
||||
success: function(response) {
|
||||
console.log(response);
|
||||
Swal.fire('Success', '정상적으로 전송되었습니다.', 'success');
|
||||
},
|
||||
error: function(xhr, status, error) {
|
||||
Swal.fire('Error', '전송에 실패했습니다. 확인바랍니다.', 'error');
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
</script>
|
||||
Reference in New Issue
Block a user