이벤트 예약기간 설정

This commit is contained in:
pjs
2026-03-02 12:19:19 +09:00
parent d590a3ad48
commit f73751497a
7 changed files with 71 additions and 2 deletions

View File

@@ -280,6 +280,8 @@ public class WebEventController extends ManagerDraftAction {
model.addAttribute("CATEGORY_NO", paramMap.get("CATEGORY_NO"));
model.addAttribute("POST_NO", paramMap.get("POST_NO"));
model.addAttribute("PROCEDURE_ID", paramMap.get("PROCEDURE_ID"));
model.addAttribute("EVENT_START_DT", paramMap.get("EVENT_START_DT"));
model.addAttribute("EVENT_END_DT", paramMap.get("EVENT_END_DT"));
log.debug("WebServiceController selectMakeReservation END");

View File

@@ -34,6 +34,8 @@
<!-- 이벤트안내 상세 조회 -->
<select id="selectEventDetail" resultType="hashmap" parameterType="hashmap">
SELECT A.CATEGORY_DIV_CD, A.CATEGORY_NO, A.POST_NO, C.CATEGORY_NM , TITLE, CONTENT, THUMBNAIL_BOTTOM_TXT, A.HASHTAG, D.FILE_PATH AS THUMBNAIL_PATH, E.FILE_PATH AS CONTENTS_PATH,
DATE_FORMAT(A.EVENT_START_DT, '%Y-%m-%d') AS EVENT_START_DT,
DATE_FORMAT(A.EVENT_END_DT, '%Y-%m-%d') AS EVENT_END_DT,
(SELECT MIN(PRICE + VAT) FROM MU_TREATMENT_PROCEDURE_PRICE C
LEFT OUTER JOIN HP_CONTENTS_BBS_PROCEDURE B ON A.POST_NO = B.POST_NO AND A.CATEGORY_DIV_CD = B.CATEGORY_DIV_CD AND A.CATEGORY_NO = B.CATEGORY_NO AND B.USE_YN = 'Y'
WHERE B.MU_TREATMENT_PROCEDURE_ID = C.MU_TREATMENT_PROCEDURE_ID AND C.USE_YN = 'Y') AS PRICE,

View File

@@ -66,6 +66,17 @@ body {
margin-bottom: 18px;
}
.event-period {
font-size: 1.05em;
font-weight: 600;
color: #e74c3c;
background: #fef2f2;
border: 1px solid #fecaca;
border-radius: 8px;
padding: 10px 14px;
margin-bottom: 14px;
}
.info-price {
font-size: 1.2em;
font-weight: 700;

View File

@@ -431,11 +431,28 @@ let repeatHolidayDates = new Set();
let openScheduleDates = new Set();
function initFlatpickr() {
// 이벤트 기간 제한 설정
let calendarMinDate = "today";
let calendarMaxDate = undefined;
if (typeof event_start_dt !== 'undefined' && event_start_dt &&
typeof event_end_dt !== 'undefined' && event_end_dt) {
// 이벤트 시작일이 오늘 이후이면 시작일을, 오늘 이전이면 오늘을 minDate로 설정
const today = new Date();
today.setHours(0, 0, 0, 0);
const eventStart = new Date(event_start_dt);
eventStart.setHours(0, 0, 0, 0);
calendarMinDate = eventStart > today ? event_start_dt : "today";
calendarMaxDate = event_end_dt;
}
fp = flatpickr("#inline-calendar", {
inline: true,
locale: "ko",
dateFormat: "Y-m-d",
minDate: "today",
minDate: calendarMinDate,
maxDate: calendarMaxDate,
disableMobile: "true",
onChange: function (selectedDates, dateStr, instance) {
if (selectedDates.length > 0) {
@@ -468,6 +485,16 @@ function initFlatpickr() {
}
}
});
// 이벤트 기간 안내 표시
if (typeof event_start_dt !== 'undefined' && event_start_dt && event_end_dt) {
const calendarBox = document.querySelector('.calendar-box');
const eventPeriodHtml = `
<div class="event-period-info" style="text-align:center; padding:8px 0 4px; color:#e74c3c; font-size:0.92em; font-weight:600;">
📅 이벤트 기간: ${event_start_dt} ~ ${event_end_dt}
</div>`;
calendarBox.insertAdjacentHTML('afterbegin', eventPeriodHtml);
}
}
// 공휴일 + 병원휴일 목록 로드

View File

@@ -57,6 +57,27 @@ function fn_SelectDetail(category_div_cd, category_no, post_no) {
$('#contents_path').attr('src', CDN_URL + data.rows.CONTENTS_PATH);
// 이벤트 기간 정보 저장
window.eventStartDt = data.rows.EVENT_START_DT || '';
window.eventEndDt = data.rows.EVENT_END_DT || '';
// 이벤트 기간 표시
if (window.eventStartDt || window.eventEndDt) {
const periodEl = document.getElementById('event-period');
if (periodEl) {
let periodText = '📅 이벤트 기간: ';
if (window.eventStartDt && window.eventEndDt) {
periodText += window.eventStartDt + ' ~ ' + window.eventEndDt;
} else if (window.eventEndDt) {
periodText += '~ ' + window.eventEndDt;
} else {
periodText += window.eventStartDt + ' ~';
}
periodEl.textContent = periodText;
periodEl.style.display = 'block';
}
}
// 시술 목록 데이터 처리
updateProcedureOptions(data.price || []);
} else {
@@ -261,7 +282,9 @@ function fn_moveReservation(category_div, category_no, post_no) {
const params = [
{ name: 'CATEGORY_DIV_CD', value: category_div },
{ name: 'CATEGORY_NO', value: category_no },
{ name: 'POST_NO', value: post_no }
{ name: 'POST_NO', value: post_no },
{ name: 'EVENT_START_DT', value: window.eventStartDt || '' },
{ name: 'EVENT_END_DT', value: window.eventEndDt || '' }
];
params.forEach(param => {

View File

@@ -17,6 +17,8 @@
let category_no = [[${ CATEGORY_NO }]];
let post_no = [[${ POST_NO }]];
let procedure_id = [[${ PROCEDURE_ID }]];
let event_start_dt = /*[[${ EVENT_START_DT }]]*/ '';
let event_end_dt = /*[[${ EVENT_END_DT }]]*/ '';
</script>
</th:block>

View File

@@ -48,6 +48,8 @@
</div>
</div>
<div class="event-period" id="event-period" style="display:none;"></div>
<div class="info-price"><span id="price">0</span>원 부터</div>
<div class="select-row">