이벤트 예약기간 설정
This commit is contained in:
@@ -280,6 +280,8 @@ public class WebEventController extends ManagerDraftAction {
|
|||||||
model.addAttribute("CATEGORY_NO", paramMap.get("CATEGORY_NO"));
|
model.addAttribute("CATEGORY_NO", paramMap.get("CATEGORY_NO"));
|
||||||
model.addAttribute("POST_NO", paramMap.get("POST_NO"));
|
model.addAttribute("POST_NO", paramMap.get("POST_NO"));
|
||||||
model.addAttribute("PROCEDURE_ID", paramMap.get("PROCEDURE_ID"));
|
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");
|
log.debug("WebServiceController selectMakeReservation END");
|
||||||
|
|
||||||
|
|||||||
@@ -34,6 +34,8 @@
|
|||||||
<!-- 이벤트안내 상세 조회 -->
|
<!-- 이벤트안내 상세 조회 -->
|
||||||
<select id="selectEventDetail" resultType="hashmap" parameterType="hashmap">
|
<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,
|
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
|
(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'
|
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,
|
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;
|
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 {
|
.info-price {
|
||||||
font-size: 1.2em;
|
font-size: 1.2em;
|
||||||
font-weight: 700;
|
font-weight: 700;
|
||||||
|
|||||||
@@ -431,11 +431,28 @@ let repeatHolidayDates = new Set();
|
|||||||
let openScheduleDates = new Set();
|
let openScheduleDates = new Set();
|
||||||
|
|
||||||
function initFlatpickr() {
|
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", {
|
fp = flatpickr("#inline-calendar", {
|
||||||
inline: true,
|
inline: true,
|
||||||
locale: "ko",
|
locale: "ko",
|
||||||
dateFormat: "Y-m-d",
|
dateFormat: "Y-m-d",
|
||||||
minDate: "today",
|
minDate: calendarMinDate,
|
||||||
|
maxDate: calendarMaxDate,
|
||||||
disableMobile: "true",
|
disableMobile: "true",
|
||||||
onChange: function (selectedDates, dateStr, instance) {
|
onChange: function (selectedDates, dateStr, instance) {
|
||||||
if (selectedDates.length > 0) {
|
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);
|
$('#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 || []);
|
updateProcedureOptions(data.price || []);
|
||||||
} else {
|
} else {
|
||||||
@@ -261,7 +282,9 @@ function fn_moveReservation(category_div, category_no, post_no) {
|
|||||||
const params = [
|
const params = [
|
||||||
{ name: 'CATEGORY_DIV_CD', value: category_div },
|
{ name: 'CATEGORY_DIV_CD', value: category_div },
|
||||||
{ name: 'CATEGORY_NO', value: category_no },
|
{ 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 => {
|
params.forEach(param => {
|
||||||
|
|||||||
@@ -17,6 +17,8 @@
|
|||||||
let category_no = [[${ CATEGORY_NO }]];
|
let category_no = [[${ CATEGORY_NO }]];
|
||||||
let post_no = [[${ POST_NO }]];
|
let post_no = [[${ POST_NO }]];
|
||||||
let procedure_id = [[${ PROCEDURE_ID }]];
|
let procedure_id = [[${ PROCEDURE_ID }]];
|
||||||
|
let event_start_dt = /*[[${ EVENT_START_DT }]]*/ '';
|
||||||
|
let event_end_dt = /*[[${ EVENT_END_DT }]]*/ '';
|
||||||
</script>
|
</script>
|
||||||
</th:block>
|
</th:block>
|
||||||
|
|
||||||
|
|||||||
@@ -48,6 +48,8 @@
|
|||||||
</div>
|
</div>
|
||||||
</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="info-price"><span id="price">0</span>원 부터</div>
|
||||||
|
|
||||||
<div class="select-row">
|
<div class="select-row">
|
||||||
|
|||||||
Reference in New Issue
Block a user