Files
madeu_crm/src/main/resources/static/js/web/contentsBbs/ContentsBbsUpd.js

370 lines
13 KiB
JavaScript
Raw Normal View History

2026-02-14 08:19:58 +09:00
// Custom Table Logic
let treatmentList = [];
function renderTreatmentTable() {
let tbody = document.getElementById("treatmentListBody");
tbody.innerHTML = "";
treatmentList.forEach((item, index) => {
let row = document.createElement("tr");
row.innerHTML = `
<td><input type="checkbox" name="treatmentCheck" value="${index}"></td>
<td style="text-align:left; padding-left:10px;">${item.treatmentProcedureName}</td>
<td style="text-align:right;">${num2won(item.price)}</td>
<td style="text-align:right;">${num2won(item.discountPrice)}</td>
`;
tbody.appendChild(row);
});
}
function fn_checkAll(source) {
let checkboxes = document.getElementsByName('treatmentCheck');
for (var i = 0, n = checkboxes.length; i < n; i++) {
checkboxes[i].checked = source.checked;
}
}
2025-10-18 11:06:19 +09:00
/****************************************************************************
* 이벤트 조회
****************************************************************************/
2026-02-14 08:19:58 +09:00
function fn_selectWebTreatmentPetit() {
if (true != fn_emptyCheck(postNo)) {
2025-10-18 11:06:19 +09:00
modalEvent.warning("수정", "이벤트 정보가 없습니다.");
return;
}
let formData = new FormData();
formData.append("menuClass", menuClass);
2026-02-14 08:19:58 +09:00
formData.append("categoryDivCd", categoryDivCd);
formData.append("categoryNo", categoryNo);
formData.append("postNo", postNo);
2025-10-18 11:06:19 +09:00
$.ajax({
url: encodeURI('/contentsBbs/getContentsBbs.do'),
data: formData,
dataType: "json",
processData: false,
contentType: false,
type: 'POST',
async: true,
2026-02-14 08:19:58 +09:00
success: function (rst) {
if ('0' == rst.msgCode) {
let data = rst.detail;
$("select[name=category]").val(data.categoryNo).prop("selected", true);
$("#categoryNo").val(data.categoryNo);
2025-10-18 11:06:19 +09:00
$("#title").val(data.title);
2026-02-14 08:19:58 +09:00
$("#content").val(data.content);
$("#hashtag").val(data.hashtag);
$("#thumbnailBottomTxt").val(data.thumbnailBottomTxt);
$("#thumbnailImg").attr("src", CDN_URL + data.thumbnailImgPath);
$("#contentsImg").attr("src", CDN_URL + data.contentImgPath);
$("#oldCrmItemId").val(data.oldCrmItemId);
$("#ordNo").val(data.ordNo);
treatmentList = [];
rst.treatmentList.forEach((item, i) => {
treatmentList.push({
treatmentProcedureName: item.treatmentProcedureName,
price: item.price,
discountPrice: item.discountPrice,
muTreatmentId: item.muTreatmentId,
muTreatmentProcedureId: item.muTreatmentProcedureId
});
});
renderTreatmentTable();
2025-10-18 11:06:19 +09:00
}
2026-02-14 08:19:58 +09:00
else {
2025-10-18 11:06:19 +09:00
modalEvent.danger("수정 오류", eventData.msgDesc);
}
},
2026-02-14 08:19:58 +09:00
error: function (xhr, status, error) {
2025-10-18 11:06:19 +09:00
modalEvent.danger("수정 오류", "수정 중 오류가 발생하였습니다. 잠시후 다시시도하십시오.");
},
2026-02-14 08:19:58 +09:00
beforeSend: function () {
2025-10-18 11:06:19 +09:00
},
2026-02-14 08:19:58 +09:00
complete: function () {
2025-10-18 11:06:19 +09:00
}
});
}
2026-02-14 08:19:58 +09:00
function num2won(x) {
if (typeof x === 'undefined' || x === null) return '';
return x.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ",");
2025-10-18 11:06:19 +09:00
}
/****************************************************************************
* 이벤트 수정
****************************************************************************/
2026-02-14 08:19:58 +09:00
function fn_updateWebTreatmentPetit() {
if ("Y" != insertUseYn) {
modalEvent.warning("", "등록 권한이 없습니다.");
return false;
}
let title = $("#title").val();
let content = $("#content").val();
let hashtag = $("#hashtag").val();
let thumbnailBottomTxt = $("#thumbnailBottomTxt").val();
let categoryNo = $("#categoryNo").val();
var treatmentIdList = []; // muTreatmentId
var treatmentProcedureIdList = []; // muTreatmentProcedureId
treatmentList.forEach(item => {
treatmentIdList.push(item.muTreatmentId);
treatmentProcedureIdList.push(item.muTreatmentProcedureId);
});
//let eventStartDate = $("#eventStartDate").val();
//let eventEndDate = $("#eventEndDate").val();
let file = $("#file")[0].files[0];
let content_file = $("#content_file")[0].files[0];
if (true != fn_emptyCheck(categoryNo)) {
modalEvent.warning("등록", "카테고리를 입력하세요.");
return;
}
if (true != fn_emptyCheck(title)) {
modalEvent.warning("등록", "제목을 입력하세요.");
return;
}
modalEvent.info("수정", categorytitle + " 정보를 수정하시겠습니까?", function () {
2025-10-18 11:06:19 +09:00
let formData = new FormData();
formData.append("menuClass", menuClass);
2026-02-14 08:19:58 +09:00
formData.append("categoryDivCd", categoryDivCd);
formData.append("categoryNo", categoryNo);
formData.append("postNo", postNo);
formData.append("title", title);
2025-10-18 11:06:19 +09:00
formData.append("content", content);
2026-02-14 08:19:58 +09:00
formData.append("hashtag", hashtag);
formData.append("thumbnailBottomTxt", thumbnailBottomTxt);
formData.append("treatmentlist", treatmentIdList);
formData.append("treatmentprocedurelist", treatmentProcedureIdList);
2025-10-18 11:06:19 +09:00
//formData.append("eventStartDate", eventStartDate);
//formData.append("eventEndDate", eventEndDate);
formData.append("file", file);
2026-02-14 08:19:58 +09:00
formData.append("content_file", content_file);
formData.append("oldCrmItemId", $("#oldCrmItemId").val());
formData.append("ordNo", $("#ordNo").val());
2025-10-18 11:06:19 +09:00
$.ajax({
url: encodeURI('/contentsBbs/modContentsBbs.do'),
data: formData,
dataType: "json",
processData: false,
contentType: false,
type: 'POST',
async: true,
2026-02-14 08:19:58 +09:00
success: function (data) {
if ('0' == data.msgCode) {
modalEvent.success("등록 성공", data.msgDesc, function () {
2025-10-18 11:06:19 +09:00
fn_selectListWebTreatmentPetitIntro();
});
}
2026-02-14 08:19:58 +09:00
else {
2025-10-18 11:06:19 +09:00
modalEvent.danger("등록 오류", data.msgDesc);
}
},
2026-02-14 08:19:58 +09:00
error: function (xhr, status, error) {
2025-10-18 11:06:19 +09:00
modalEvent.danger("등록 오류", "등록 중 오류가 발생하였습니다. 잠시후 다시시도하십시오.");
},
2026-02-14 08:19:58 +09:00
beforeSend: function () {
2025-10-18 11:06:19 +09:00
},
2026-02-14 08:19:58 +09:00
complete: function () {
2025-10-18 11:06:19 +09:00
}
});
});
}
2026-02-14 08:19:58 +09:00
2025-10-18 11:06:19 +09:00
/****************************************************************************
* 썸네일 이미지 미리보기
****************************************************************************/
2026-02-14 08:19:58 +09:00
function fn_filePreview(width, height, obj) {
let file = "";
if (obj == '.img_box') {
file = $("#file")[0].files[0];
} else {
file = $("#content_file")[0].files[0];
}
if (file) {
$(obj).html('');
const reader = new FileReader();
reader.onload = function (e) {
// 이미지 요소를 생성하고 미리보기 추가
const img = document.createElement('img');
img.src = e.target.result;
img.style.width = width; // 원하는 크기로 조정
img.style.height = height;
$(obj).append(img);
};
// 파일을 읽기 시작
reader.readAsDataURL(file);
}
2025-10-18 11:06:19 +09:00
}
/****************************************************************************
* 배너 이미지 삭제
****************************************************************************/
2026-02-14 08:19:58 +09:00
function fn_removePreview() {
2025-10-18 11:06:19 +09:00
$("#file").val('');
$('.img_box').html('');
}
/****************************************************************************
* 배너 이미지 미리보기
****************************************************************************/
2026-02-14 08:19:58 +09:00
function fn_fileContentPreview() {
const file = $("#content_file")[0].files[0];
if (file) {
$('.file_box').html(file.name);
}
2025-10-18 11:06:19 +09:00
}
/****************************************************************************
* 배너 이미지 삭제
****************************************************************************/
2026-02-14 08:19:58 +09:00
function fn_removeContentPreview() {
2025-10-18 11:06:19 +09:00
$("#content_file").val('');
$('.file_box').html('');
}
/****************************************************************************
* 리스트 화면으로 이동.
****************************************************************************/
2026-02-14 08:19:58 +09:00
function fn_selectListWebTreatmentPetitIntro() {
if ("Y" == selectUseYn) {
let pagingParam = "?menuClass=" + menuClass;
pagingParam += "&categoryDivCd=" + categoryDivCd;
fn_leftFormAction("/contentsBbs/moveContentsBbsList.do" + pagingParam);
} else {
2025-10-18 11:06:19 +09:00
modalEvent.warning("", "조회 권한이 없습니다.");
return false;
}
}
/****************************************************************************
* 페이지 init
****************************************************************************/
2026-02-14 08:19:58 +09:00
function fn_pageInit() {
2025-10-18 11:06:19 +09:00
// 날짜 datepicker
fn_searchDatePicker("#eventStartDate", "#eventEndDate");
2026-02-14 08:19:58 +09:00
fn_selectWebTreatmentPetit();
2025-10-18 11:06:19 +09:00
}
/****************************************************************************
* 페이지 event
****************************************************************************/
2026-02-14 08:19:58 +09:00
function fn_pageEvent() {
2025-10-18 11:06:19 +09:00
// 검색 input
2026-02-14 08:19:58 +09:00
$('.btnCancle').on("click", function () {
2025-10-18 11:06:19 +09:00
fn_selectListWebTreatmentPetitIntro();
});
2026-02-14 08:19:58 +09:00
$('.btnSave').on("click", function () {
2025-10-18 11:06:19 +09:00
fn_updateWebTreatmentPetit();
});
2026-02-14 08:19:58 +09:00
$('#delete_btn').on("click", function () {
2025-10-18 11:06:19 +09:00
fn_removePreview();
});
2026-02-14 08:19:58 +09:00
$('#file').on('change', function (e) {
fn_filePreview('800px', '450px', '.img_box');
2025-10-18 11:06:19 +09:00
})
2026-02-14 08:19:58 +09:00
$('#content_delete_btn').on("click", function () {
2025-10-18 11:06:19 +09:00
fn_removeContentPreview();
});
2026-02-14 08:19:58 +09:00
$('#content_file').on('change', function (e) {
2025-10-18 11:06:19 +09:00
fn_filePreview('100%', '100%', '.file_box');
})
2026-02-14 08:19:58 +09:00
2025-10-18 11:06:19 +09:00
}
/****************************************************************************
* 시술 목록 팝업
****************************************************************************/
2026-02-14 08:19:58 +09:00
function listOpen() {
2025-10-18 11:06:19 +09:00
let reqParam = {};
treatmentSelectModal.popup(function (obj, reqParam) {
2026-02-14 08:19:58 +09:00
let isDuplicate = false;
treatmentList.forEach((item) => {
if (item.muTreatmentProcedureId == obj.treatmentProcedureId) {
isDuplicate = true;
}
});
if (isDuplicate) {
modalEvent.warning("", "이미 시술정보가 있습니다.");
return;
}
let newItem = {
treatmentProcedureName: obj.treatmentNm,
price: obj.price,
discountPrice: obj.discountPrice,
muTreatmentId: obj.treatmentId,
muTreatmentProcedureId: obj.treatmentProcedureId
};
treatmentList.push(newItem);
renderTreatmentTable();
2025-10-18 11:06:19 +09:00
}, reqParam);
}
2026-02-14 08:19:58 +09:00
function fn_removeRow() {
let checkboxes = document.getElementsByName('treatmentCheck');
let indicesToRemove = [];
// Collect indices checking from end to start to maintain index validity
for (let i = checkboxes.length - 1; i >= 0; i--) {
if (checkboxes[i].checked) {
indicesToRemove.push(parseInt(checkboxes[i].value));
}
}
if (indicesToRemove.length === 0) {
modalEvent.warning("", "삭제할 항목을 선택해주세요.");
return;
}
// Remove items
indicesToRemove.forEach(index => {
treatmentList.splice(index, 1);
});
// Uncheck "all" checkbox if checked
document.getElementById("checkAll").checked = false;
renderTreatmentTable();
2025-10-18 11:06:19 +09:00
}
2026-02-14 08:19:58 +09:00
$(function () {
2025-10-18 11:06:19 +09:00
// 페이지 init
fn_pageInit();
// 페이지 event
fn_pageEvent();
2026-02-14 08:19:58 +09:00
});
/* =========================================
PREVIEW LOGIC
========================================= */
function fn_openPreview() {
let url = "/contentsBbs/contentsBbsPreview.do";
window.open(url, "preview", "width=1280,height=900,scrollbars=yes");
}
function getTreatmentListForPreview() {
return treatmentList;
}