거래명세서 납품일 선택할 수 있게 수정

This commit is contained in:
2026-03-09 12:18:25 +09:00
parent 2411aaa23e
commit ed3141f2ef

View File

@@ -423,6 +423,33 @@ body {
border-right: none;
}
/* datepicker 팝업이 페이지 리셋 스타일에 영향받지 않도록 보호 */
.ui-datepicker {
z-index: 9999 !important;
background: #fff;
border: 1px solid #ccc;
padding: 5px;
font-size: 9pt;
}
.ui-datepicker th,
.ui-datepicker td {
padding: 3px;
text-align: center;
}
.ui-datepicker td a,
.ui-datepicker td span {
display: block;
padding: 3px;
text-decoration: none;
}
.ui-datepicker .ui-datepicker-header {
padding: 5px;
text-align: center;
}
/* 버튼 */
.button-area {
text-align: center;
@@ -448,39 +475,68 @@ body {
color: white;
}
</style>
<script src="https://code.jquery.com/jquery-2.1.4.min.js"></script>
<script>
$(document).ready(function(){
var today = new Date();
// yyyyMMdd 또는 yyyy-MM-dd 형식의 날짜를 "YYYY년 M월 D일 X요일" 형식으로 표시
function fn_setDeliveryDate(dateStr) {
if(!dateStr) return;
var year, month, day;
if(dateStr.includes("-")) {
var parts = dateStr.split("-");
year = parseInt(parts[0]);
month = parseInt(parts[1]);
day = parseInt(parts[2]);
} else if(dateStr.length >= 8) {
year = parseInt(dateStr.substring(0, 4));
month = parseInt(dateStr.substring(4, 6));
day = parseInt(dateStr.substring(6, 8));
} else {
return;
}
if(isNaN(year) || isNaN(month) || isNaN(day)) return;
var date = new Date(year, month - 1, day);
var days = ['일', '월', '화', '수', '목', '금', '토'];
var dateStr = today.getFullYear() + "년 " + (today.getMonth() + 1) + "월 " + today.getDate() + "일 " + days[today.getDay()] + "요일";
var displayStr = year + "년 " + month + "월 " + day + "일 " + days[date.getDay()] + "요일";
// 표시용 날짜 (한글)
$("#deliveryDate").text(dateStr);
$("#deliveryDate").text(displayStr);
// 전송용 날짜 (YYYY-MM-DD) - hidden input에 저장
var year = today.getFullYear();
var month = String(today.getMonth() + 1).padStart(2, '0');
var day = String(today.getDate()).padStart(2, '0');
var isoDate = year + "-" + month + "-" + day;
var isoDate = year + "-" + String(month).padStart(2, '0') + "-" + String(day).padStart(2, '0');
$("#deliveryDateISO").val(isoDate);
}
$(document).ready(function(){
// 기본값: 오늘 날짜
var today = new Date();
var todayISO = today.getFullYear() + "-" + String(today.getMonth() + 1).padStart(2, '0') + "-" + String(today.getDate()).padStart(2, '0');
fn_setDeliveryDate(todayISO);
// datepicker 초기화
$("#deliveryDatePicker").datepicker({
changeMonth: true,
changeYear: true,
dateFormat: 'yy-mm-dd',
onSelect: function(dateText) {
fn_setDeliveryDate(dateText);
}
});
// 달력 아이콘 클릭 시 datepicker 표시
$("#deliveryDateCalBtn").on('click', function(e) {
e.preventDefault();
$("#deliveryDatePicker").datepicker("show");
});
fn_loadData();
// 날짜 수정 시 ISO 형식도 업데이트
// 날짜 직접 수정 시 ISO 형식도 업데이트
$("#deliveryDate").on('blur', function() {
var dateText = $(this).text().trim();
// 날짜 파싱 시도
try {
// "2025년 3월 5일 수요일" 형식 파싱
var match = dateText.match(/(\d{4})년\s*(\d+)월\s*(\d+)일/);
if (match) {
var year = match[1];
var month = String(match[2]).padStart(2, '0');
var day = String(match[3]).padStart(2, '0');
var isoDate = year + "-" + month + "-" + day;
$("#deliveryDateISO").val(isoDate);
console.log("날짜 업데이트: " + dateText + " → " + isoDate);
if(match) {
fn_setDeliveryDate(match[1] + "-" + match[2] + "-" + match[3]);
}
} catch(e) {
console.error("날짜 파싱 실패:", e);
@@ -623,6 +679,12 @@ function fn_loadSavedStatement(projectObjid, gridData) {
// 고객사 정보
$("#receiverName").text(firstItem.CUSTOMER || "");
// 저장된 납품일 복원
var savedIsDt = savedData[0].isdt || savedData[0].ISDT || savedData[0].IsDt || "";
if(savedIsDt && savedIsDt.length >= 8) {
fn_setDeliveryDate(String(savedIsDt));
}
// 품목 테이블 채우기
var tbody = $("#itemsBody");
tbody.empty();
@@ -1041,6 +1103,8 @@ function fn_close() {
<td class="date-label-cell">납품일</td>
<td class="date-value-cell" colspan="4">
<span id="deliveryDate" contenteditable="true">2025년 3월 5일 수요일</span>
<img id="deliveryDateCalBtn" src="/images/date_icon.png" alt="달력" class="no-print" style="width:16px;height:16px;cursor:pointer;vertical-align:middle;margin-left:8px;">
<input type="text" id="deliveryDatePicker" readonly style="width:1px;height:1px;border:none;padding:0;margin:0;opacity:0;overflow:hidden;">
<input type="hidden" id="deliveryDateISO" value="">
</td>
<td class="supplier-label-cell" rowspan="5">