이벤트 예약기간 설정
This commit is contained in:
@@ -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");
|
||||
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
// 공휴일 + 병원휴일 목록 로드
|
||||
|
||||
@@ -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 => {
|
||||
|
||||
@@ -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>
|
||||
|
||||
|
||||
@@ -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">
|
||||
|
||||
Reference in New Issue
Block a user