|
|
|
|
@ -19,18 +19,17 @@
|
|
|
|
|
<col style="width: 20%;" />
|
|
|
|
|
<col style="width: 30%;" />
|
|
|
|
|
<col style="width: 20%;" />
|
|
|
|
|
<col style="width: 30%;"/>
|
|
|
|
|
<col style="width: 30%;" />
|
|
|
|
|
</colgroup>
|
|
|
|
|
<tr>
|
|
|
|
|
<th class="th"><span class="required">*</span> 단속 년도</th>
|
|
|
|
|
<td>
|
|
|
|
|
<c:choose>
|
|
|
|
|
<c:when test="${param.mode eq 'C'}">
|
|
|
|
|
<input type="text" id="crdnYr" name="crdnYr" class="input" value="${dateUtil:getCurrentDateTime('yyyy')}" readonly/>
|
|
|
|
|
<input type="text" id="crdnYr" name="crdnYr" class="input" value="${dateUtil:getCurrentDateTime('yyyy')}" readonly />
|
|
|
|
|
</c:when>
|
|
|
|
|
<c:otherwise>
|
|
|
|
|
<input type="text" id="crdnYr" name="crdnYr" class="input"
|
|
|
|
|
value="${data.crdnYr}" readonly/>
|
|
|
|
|
<input type="text" id="crdnYr" name="crdnYr" class="input" value="${data.crdnYr}" readonly />
|
|
|
|
|
</c:otherwise>
|
|
|
|
|
</c:choose>
|
|
|
|
|
</td>
|
|
|
|
|
@ -41,8 +40,7 @@
|
|
|
|
|
자동채번
|
|
|
|
|
</c:when>
|
|
|
|
|
<c:otherwise>
|
|
|
|
|
<input type="text" id="crdnNo" name="crdnNo" class="input"
|
|
|
|
|
value="${data.crdnNo}" readonly/>
|
|
|
|
|
<input type="text" id="crdnNo" name="crdnNo" class="input" value="${data.crdnNo}" readonly />
|
|
|
|
|
</c:otherwise>
|
|
|
|
|
</c:choose>
|
|
|
|
|
</td>
|
|
|
|
|
@ -66,15 +64,13 @@
|
|
|
|
|
<tr>
|
|
|
|
|
<th class="th"><span class="required">*</span> 적발일자</th>
|
|
|
|
|
<td colspan="3">
|
|
|
|
|
<input type="text" id="dsclYmd" name="dsclYmd" class="input calender datepicker" validation-check="required"
|
|
|
|
|
value="${dateUtil:formatDateString(data.dsclYmd)}" maxlength="10" style="width: 120px;" autocomplete="off"/>
|
|
|
|
|
<input type="text" id="dsclYmd" name="dsclYmd" class="input calender datepicker" validation-check="required" value="${dateUtil:formatDateString(data.dsclYmd)}" maxlength="10" style="width: 120px;" autocomplete="off" />
|
|
|
|
|
</td>
|
|
|
|
|
</tr>
|
|
|
|
|
<tr>
|
|
|
|
|
<th class="th">조사원</th>
|
|
|
|
|
<td colspan="3">
|
|
|
|
|
<input type="text" id="exmnr" name="exmnr" class="input"
|
|
|
|
|
value="${data.exmnr}" maxlength="100" style="width: 80%;" validation-check="maxlength" />
|
|
|
|
|
<input type="text" id="exmnr" name="exmnr" class="input" value="${data.exmnr}" maxlength="100" style="width: 80%;" validation-check="maxlength" />
|
|
|
|
|
<button id="btnExmnrSelect" class="newbtn bg1 smallb-2" type="button">조사원 선택</button>
|
|
|
|
|
</td>
|
|
|
|
|
</tr>
|
|
|
|
|
@ -153,8 +149,12 @@
|
|
|
|
|
* 코드 선택박스 초기화
|
|
|
|
|
*/
|
|
|
|
|
initCodeSelect: function() {
|
|
|
|
|
commonCodeSelectAjax('RGN_SE_CD', 'rgnSeCd', '선택하세요', "${data.rgnSeCd == null ? '1':data.rgnSeCd}", {sortColumn:"SORT_ORDR"});
|
|
|
|
|
commonCodeSelectAjax('DSCL_MTHD_CD', 'dsclMthdCd', '선택하세요', "${data.dsclMthdCd}", {sortColumn:"CD_NM"});
|
|
|
|
|
commonCodeSelectAjax('RGN_SE_CD', 'rgnSeCd', '선택하세요', "${data.rgnSeCd == null ? '1':data.rgnSeCd}", {
|
|
|
|
|
sortColumn: "SORT_ORDR"
|
|
|
|
|
});
|
|
|
|
|
commonCodeSelectAjax('DSCL_MTHD_CD', 'dsclMthdCd', '선택하세요', "${data.dsclMthdCd}", {
|
|
|
|
|
sortColumn: "CD_NM"
|
|
|
|
|
});
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
@ -172,178 +172,181 @@
|
|
|
|
|
* 이벤트 바인딩
|
|
|
|
|
*/
|
|
|
|
|
bindEvents: function() {
|
|
|
|
|
var self = this;
|
|
|
|
|
|
|
|
|
|
$("#btnSave").on('click', function() {
|
|
|
|
|
self.save();
|
|
|
|
|
});
|
|
|
|
|
var self = this;
|
|
|
|
|
|
|
|
|
|
$("#btnDelete").on('click', function() {
|
|
|
|
|
self.delete();
|
|
|
|
|
});
|
|
|
|
|
$("#btnSave").on('click', function() {
|
|
|
|
|
self.save();
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
// 닫기 버튼
|
|
|
|
|
$('.modalclose').on('click', function(e) {
|
|
|
|
|
e.preventDefault();
|
|
|
|
|
self.cancel();
|
|
|
|
|
});
|
|
|
|
|
$("#btnDelete").on('click', function() {
|
|
|
|
|
self.delete();
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
$("#dsclYmd").datepicker({
|
|
|
|
|
container: '.popup_inner',
|
|
|
|
|
language: "kr"
|
|
|
|
|
});
|
|
|
|
|
// 닫기 버튼
|
|
|
|
|
$('.modalclose').on('click', function(e) {
|
|
|
|
|
e.preventDefault();
|
|
|
|
|
self.cancel();
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
// 조사원 선택 버튼
|
|
|
|
|
$("#btnExmnrSelect").on('click', function() {
|
|
|
|
|
self.openExmnrPopup();
|
|
|
|
|
});
|
|
|
|
|
$("#dsclYmd").datepicker({
|
|
|
|
|
container: '.popup_inner',
|
|
|
|
|
language: "kr"
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
},
|
|
|
|
|
// 조사원 선택 버튼
|
|
|
|
|
$("#btnExmnrSelect").on('click', function() {
|
|
|
|
|
self.openExmnrPopup();
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 팝업 취소 처리
|
|
|
|
|
* 자식 팝업창들을 닫고 현재 창을 닫습니다.
|
|
|
|
|
*/
|
|
|
|
|
cancel: function() {
|
|
|
|
|
// 공통 함수를 사용하여 자식 팝업창들을 닫고 현재 창 닫기
|
|
|
|
|
this.childPopups = closeChildPopupsAndSelf(this.childPopups);
|
|
|
|
|
},
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 조사원 선택 팝업 열기
|
|
|
|
|
*/
|
|
|
|
|
openExmnrPopup: function () {
|
|
|
|
|
var popupUrl = '<c:url value="/crdn/crndRegistAndView/crdnExmnr/crdnExmnrSelectPopup.do" />';
|
|
|
|
|
var popupName = 'exmnrPopup';
|
|
|
|
|
var popup = openPopup(popupUrl, 800, 700, popupName);
|
|
|
|
|
if (popup) {
|
|
|
|
|
this.childPopups.push(popup);
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
/**
|
|
|
|
|
* 팝업 취소 처리
|
|
|
|
|
* 자식 팝업창들을 닫고 현재 창을 닫습니다.
|
|
|
|
|
*/
|
|
|
|
|
cancel: function() {
|
|
|
|
|
// 공통 함수를 사용하여 자식 팝업창들을 닫고 현재 창 닫기
|
|
|
|
|
this.childPopups = closeChildPopupsAndSelf(this.childPopups);
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 단속 정보 저장
|
|
|
|
|
* 폼 유효성 검증 후 단속 정보를 저장합니다.
|
|
|
|
|
*/
|
|
|
|
|
save: function() {
|
|
|
|
|
if (!this.validate()) return;
|
|
|
|
|
/**
|
|
|
|
|
* 조사원 선택 팝업 열기
|
|
|
|
|
*/
|
|
|
|
|
openExmnrPopup: function() {
|
|
|
|
|
var popupUrl = '<c:url value="/crdn/crndRegistAndView/crdnExmnr/crdnExmnrSelectPopup.do" />';
|
|
|
|
|
var popupName = 'exmnrPopup';
|
|
|
|
|
var popup = openPopup(popupUrl, 800, 700, popupName);
|
|
|
|
|
if (popup) {
|
|
|
|
|
this.childPopups.push(popup);
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
var mode = $("#mode").val();
|
|
|
|
|
var url = mode === 'C' ? '/crdn/crndRegistAndView/insert.ajax' : '/crdn/crndRegistAndView/update.ajax';
|
|
|
|
|
var data = $("#crdnForm").serialize();
|
|
|
|
|
/**
|
|
|
|
|
* 단속 정보 저장
|
|
|
|
|
* 폼 유효성 검증 후 단속 정보를 저장합니다.
|
|
|
|
|
*/
|
|
|
|
|
save: function() {
|
|
|
|
|
if (!this.validate()) return;
|
|
|
|
|
|
|
|
|
|
$.ajax({
|
|
|
|
|
url: url,
|
|
|
|
|
type: 'POST',
|
|
|
|
|
data: data,
|
|
|
|
|
success: function(response) {
|
|
|
|
|
if (response.success) {
|
|
|
|
|
alert(response.message || '처리되었습니다.');
|
|
|
|
|
if (window.opener && window.opener.refreshCrdnList) {
|
|
|
|
|
window.opener.refreshCrdnList();
|
|
|
|
|
var mode = $("#mode").val();
|
|
|
|
|
var url = mode === 'C' ? '/crdn/crndRegistAndView/insert.ajax' : '/crdn/crndRegistAndView/update.ajax';
|
|
|
|
|
var data = $("#crdnForm").serialize();
|
|
|
|
|
|
|
|
|
|
$.ajax({
|
|
|
|
|
url: url,
|
|
|
|
|
type: 'POST',
|
|
|
|
|
data: data,
|
|
|
|
|
success: function(response) {
|
|
|
|
|
if (response.success) {
|
|
|
|
|
alert(response.message || '처리되었습니다.');
|
|
|
|
|
if (window.opener && window.opener.refreshCrdnList) {
|
|
|
|
|
window.opener.refreshCrdnList();
|
|
|
|
|
}
|
|
|
|
|
window.close();
|
|
|
|
|
} else {
|
|
|
|
|
alert(response.message || '처리 중 오류가 발생했습니다.');
|
|
|
|
|
}
|
|
|
|
|
window.close();
|
|
|
|
|
} else {
|
|
|
|
|
alert(response.message || '처리 중 오류가 발생했습니다.');
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
},
|
|
|
|
|
});
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 단속 정보 삭제
|
|
|
|
|
* 사용자 확인 후 단속 정보를 삭제합니다.
|
|
|
|
|
*/
|
|
|
|
|
delete: function() {
|
|
|
|
|
if (!confirm('정말 삭제하시겠습니까?')) return;
|
|
|
|
|
/**
|
|
|
|
|
* 단속 정보 삭제
|
|
|
|
|
* 사용자 확인 후 단속 정보를 삭제합니다.
|
|
|
|
|
*/
|
|
|
|
|
delete: function() {
|
|
|
|
|
if (!confirm('정말 삭제하시겠습니까?')) return;
|
|
|
|
|
|
|
|
|
|
var crdnYr = $("#crdnYr").val();
|
|
|
|
|
var crdnNo = $("#crdnNo").val();
|
|
|
|
|
var crdnYr = $("#crdnYr").val();
|
|
|
|
|
var crdnNo = $("#crdnNo").val();
|
|
|
|
|
|
|
|
|
|
$.ajax({
|
|
|
|
|
url: '/crdn/crndRegistAndView/delete.ajax',
|
|
|
|
|
type: 'POST',
|
|
|
|
|
data: { crdnYr: crdnYr, crdnNo: crdnNo },
|
|
|
|
|
success: function(response) {
|
|
|
|
|
if (response.success) {
|
|
|
|
|
alert(response.message || '삭제되었습니다.');
|
|
|
|
|
if (window.opener && window.opener.refreshCrdnList) {
|
|
|
|
|
window.opener.refreshCrdnList();
|
|
|
|
|
$.ajax({
|
|
|
|
|
url: '<c:url value="/crdn/crndRegistAndView/delete.ajax"/>',
|
|
|
|
|
type: 'POST',
|
|
|
|
|
data: {
|
|
|
|
|
crdnYr: crdnYr,
|
|
|
|
|
crdnNo: crdnNo
|
|
|
|
|
},
|
|
|
|
|
success: function(response) {
|
|
|
|
|
if (response.success) {
|
|
|
|
|
alert(response.message || '삭제되었습니다.');
|
|
|
|
|
if (window.opener && window.opener.refreshCrdnList) {
|
|
|
|
|
window.opener.refreshCrdnList();
|
|
|
|
|
}
|
|
|
|
|
window.close();
|
|
|
|
|
} else {
|
|
|
|
|
alert(response.message || '삭제 중 오류가 발생했습니다.');
|
|
|
|
|
}
|
|
|
|
|
window.close();
|
|
|
|
|
} else {
|
|
|
|
|
alert(response.message || '삭제 중 오류가 발생했습니다.');
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
},
|
|
|
|
|
});
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 폼 유효성 검증
|
|
|
|
|
* baseData/bldgNewPrcCrtrAmt/popup.jsp 패턴과 동일하게 적용
|
|
|
|
|
* @returns {boolean} 유효성 검증 결과
|
|
|
|
|
*/
|
|
|
|
|
validate: function() {
|
|
|
|
|
// 기본 validation-check 속성 기반 검증
|
|
|
|
|
var isValid = validateFormByAttributes('crdnForm');
|
|
|
|
|
/**
|
|
|
|
|
* 폼 유효성 검증
|
|
|
|
|
* baseData/bldgNewPrcCrtrAmt/popup.jsp 패턴과 동일하게 적용
|
|
|
|
|
* @returns {boolean} 유효성 검증 결과
|
|
|
|
|
*/
|
|
|
|
|
validate: function() {
|
|
|
|
|
// 기본 validation-check 속성 기반 검증
|
|
|
|
|
var isValid = validateFormByAttributes('crdnForm');
|
|
|
|
|
|
|
|
|
|
if (isValid) {
|
|
|
|
|
// 지역구분 검증
|
|
|
|
|
if (!$.trim($('#rgnSeCd').val())) {
|
|
|
|
|
var rgnSeElement = document.getElementById('rgnSeCd');
|
|
|
|
|
errorElementCreate(rgnSeElement, '지역구분을 선택하세요.', false);
|
|
|
|
|
$('#rgnSeCd').focus();
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
if (isValid) {
|
|
|
|
|
// 지역구분 검증
|
|
|
|
|
if (!$.trim($('#rgnSeCd').val())) {
|
|
|
|
|
var rgnSeElement = document.getElementById('rgnSeCd');
|
|
|
|
|
errorElementCreate(rgnSeElement, '지역구분을 선택하세요.', false);
|
|
|
|
|
$('#rgnSeCd').focus();
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// 적발방법 검증
|
|
|
|
|
if (!$.trim($('#dsclMthdCd').val())) {
|
|
|
|
|
var dsclMthdElement = document.getElementById('dsclMthdCd');
|
|
|
|
|
errorElementCreate(dsclMthdElement, '적발방법을 선택하세요.', false);
|
|
|
|
|
$('#dsclMthdCd').focus();
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
// 적발방법 검증
|
|
|
|
|
if (!$.trim($('#dsclMthdCd').val())) {
|
|
|
|
|
var dsclMthdElement = document.getElementById('dsclMthdCd');
|
|
|
|
|
errorElementCreate(dsclMthdElement, '적발방법을 선택하세요.', false);
|
|
|
|
|
$('#dsclMthdCd').focus();
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// 재부과여부 검증
|
|
|
|
|
if (!$.trim($('#relevyYn').val())) {
|
|
|
|
|
var relevyElement = document.getElementById('relevyYn');
|
|
|
|
|
errorElementCreate(relevyElement, '재부과여부를 선택하세요.', false);
|
|
|
|
|
$('#relevyYn').focus();
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
// 재부과여부 검증
|
|
|
|
|
if (!$.trim($('#relevyYn').val())) {
|
|
|
|
|
var relevyElement = document.getElementById('relevyYn');
|
|
|
|
|
errorElementCreate(relevyElement, '재부과여부를 선택하세요.', false);
|
|
|
|
|
$('#relevyYn').focus();
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// 비고 글자수 검증 (varchar(1000) 제한)
|
|
|
|
|
var rmrk = $.trim($('#rmrk').val());
|
|
|
|
|
if (rmrk && rmrk.length > 1000) {
|
|
|
|
|
var rmrkElement = document.getElementById('rmrk');
|
|
|
|
|
errorElementCreate(rmrkElement, '비고는 1000자 이내로 입력하세요. (현재: ' + rmrk.length + '자)', false);
|
|
|
|
|
$('#rmrk').focus();
|
|
|
|
|
return false;
|
|
|
|
|
// 비고 글자수 검증 (varchar(1000) 제한)
|
|
|
|
|
var rmrk = $.trim($('#rmrk').val());
|
|
|
|
|
if (rmrk && rmrk.length > 1000) {
|
|
|
|
|
var rmrkElement = document.getElementById('rmrk');
|
|
|
|
|
errorElementCreate(rmrkElement, '비고는 1000자 이내로 입력하세요. (현재: ' + rmrk.length + '자)', false);
|
|
|
|
|
$('#rmrk').focus();
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return isValid;
|
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
return isValid;
|
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
$(document).ready(function() {
|
|
|
|
|
CrdnPopup.init();
|
|
|
|
|
});
|
|
|
|
|
$(document).ready(function() {
|
|
|
|
|
CrdnPopup.init();
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 조사원 선택 팝업에서 호출되는 콜백 함수
|
|
|
|
|
* @param selectedExmnrs 선택된 조사원 배열
|
|
|
|
|
*/
|
|
|
|
|
window.onExmnrSelected = function(selectedExmnrs) {
|
|
|
|
|
if (selectedExmnrs && selectedExmnrs.length > 0) {
|
|
|
|
|
// 선택된 조사원들의 이름을 쉼표로 구분하여 입력 필드에 설정
|
|
|
|
|
var exmnrNames = selectedExmnrs.map(function (exmnr) {
|
|
|
|
|
return exmnr.exmnr;
|
|
|
|
|
}).join(',');
|
|
|
|
|
$('#exmnr').val(exmnrNames);
|
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
/**
|
|
|
|
|
* 조사원 선택 팝업에서 호출되는 콜백 함수
|
|
|
|
|
* @param selectedExmnrs 선택된 조사원 배열
|
|
|
|
|
*/
|
|
|
|
|
window.onExmnrSelected = function(selectedExmnrs) {
|
|
|
|
|
if (selectedExmnrs && selectedExmnrs.length > 0) {
|
|
|
|
|
// 선택된 조사원들의 이름을 쉼표로 구분하여 입력 필드에 설정
|
|
|
|
|
var exmnrNames = selectedExmnrs.map(function(exmnr) {
|
|
|
|
|
return exmnr.exmnr;
|
|
|
|
|
}).join(',');
|
|
|
|
|
$('#exmnr').val(exmnrNames);
|
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
})(jQuery);
|
|
|
|
|
})(jQuery);
|
|
|
|
|
</script>
|