단속 > 단속 등록&열람: 위반법규 코드 관련 필드 제거 및 VO/Mapper/그리드 업데이트, 등록 로직에서 위치정보 필수값 검증 추가, 디버그 로그 주석 처리

dev
박성영 4 months ago
parent b471ef0afe
commit 17d3cdf157

@ -57,9 +57,7 @@ public class CrdnActInfoVO extends PagingVO {
// ============ 조인 컬럼(코드명) ============
private String sggCdNm; // 시군구 코드명
private String actTypeCdNm; // 행위 유형 코드명
private String vltnLwrgCd1Nm; // 위반 법규 코드 1명
private String vltnLaw1; // 위반 법 1
private String vltnLwrgCd2Nm; // 위반 법규 코드 2명
private String vltnLaw2; // 위반 법 2
private String strctIdxCdNm; // 구조 지수 코드명
private String usgIdxCdNm; // 용도 지수 코드명

@ -18,10 +18,8 @@
a.ACT_TYPE_CD,
act.CD_NM AS ACT_TYPE_CD_NM,
a.VLTN_LWRG_CD_1,
vltn1.VLTN_LWRG_NM AS VLTN_LWRG_CD_1_NM,
vltn1.VLTN_LAW AS VLTN_LAW_1,
a.VLTN_LWRG_CD_2,
vltn2.VLTN_LWRG_NM AS VLTN_LWRG_CD_2_NM,
vltn2.VLTN_LAW AS VLTN_LAW_2,
a.STRCT_IDX_CD,
strct.STRCT_NM AS STRCT_IDX_CD_NM,
@ -145,10 +143,8 @@
a.ACT_TYPE_CD,
act.CD_NM AS ACT_TYPE_CD_NM,
a.VLTN_LWRG_CD_1,
vltn1.VLTN_LWRG_NM AS VLTN_LWRG_CD_1_NM,
vltn1.VLTN_LAW AS VLTN_LAW_1,
a.VLTN_LWRG_CD_2,
vltn2.VLTN_LWRG_NM AS VLTN_LWRG_CD_2_NM,
vltn2.VLTN_LAW AS VLTN_LAW_2,
a.STRCT_IDX_CD,
strct.STRCT_NM AS STRCT_IDX_CD_NM,
@ -236,7 +232,6 @@
/* ActInfoMapper.getAllVltnLwrg : 전체 위반법규 목록 조회 */
SELECT
VLTN_LWRG_CD,
VLTN_LWRG_NM,
VLTN_LAW,
CRC_LAW,
IMPLT_LAW

@ -23,7 +23,6 @@
<input type="hidden" id="actInfoId" name="actInfoId" value="${data.actInfoId}" />
<input type="hidden" id="crdnYr" name="crdnYr" value="${crdnYr}" />
<input type="hidden" id="crdnNo" name="crdnNo" value="${crdnNo}" />
<input type="hidden" id="pstnInfoId" name="pstnInfoId" value="${data.pstnInfoId}" />
<table>
<colgroup>
@ -211,14 +210,14 @@
maxHeight: '300px',
valueField: 'vltnLwrgCd',
textField: 'vltnLaw',
searchField: ['vltnLaw', 'vltnLwrgNm', 'crcLaw', 'impltLaw'], // 여러 필드에서 검색 가능
searchField: ['vltnLaw', 'crcLaw', 'impltLaw'], // 여러 필드에서 검색 가능
placeholder: '위반법규를 입력하거나 선택하세요',
noResultsText: '검색 결과가 없습니다',
cssClass: 'vltn-lwrg-dropdown',
displayFields: [
{
name: 'vltnLwrgNm',
label: '위반법규명',
name: 'vltnLaw',
label: '위반법',
formatter: function(value) {
return value || '-';
}
@ -332,29 +331,8 @@
return;
}
var self = this;
var crdnYr = '${crdnYr}';
var crdnNo = '${crdnNo}';
// 중요로직: 위치정보ID 가져오기 (부모창에서)
var pstnInfoId = '';
if (window.opener && window.opener.CrdnDetailViewPstn && window.opener.CrdnDetailViewPstn.grid && window.opener.CrdnDetailViewPstn.grid.instance) {
var pstnData = window.opener.CrdnDetailViewPstn.grid.instance.getData();
if (pstnData && pstnData.length > 0) {
pstnInfoId = pstnData[0].pstnInfoId || '';
}
}
if (!pstnInfoId) {
alert('위치정보가 등록되어 있지 않습니다. 위치정보를 먼저 등록해주세요.');
return;
}
var mode = $('#mode').val();
var formData = $('#actInfoForm').serialize();
+ '&crdnYr=' + encodeURIComponent(crdnYr);
+ '&crdnNo=' + encodeURIComponent(crdnNo);
+ '&pstnInfoId=' + encodeURIComponent(pstnInfoId);
var url = (mode === 'update') ?
'<c:url value="/crdn/crndRegistAndView/crdnActInfo/update.ajax"/>' :

@ -69,29 +69,21 @@
},
{
header: '위반법규',
name: 'vltnLwrgCd1Nm',
name: 'vltnLaw1',
align: 'center',
width: 120,
formatter: function (e) {
var result = e.row.vltnLwrgCd1Nm || '';
if (e.row.vltnLaw1) {
result += ' (' + e.row.vltnLaw1 + ')';
}
return result;
return e.row.vltnLaw1 || '';
}
},
{
header: '위반법규2',
name: 'vltnLwrgCd2Nm',
name: 'vltnLaw2',
align: 'center',
width: 120,
hidden: true,
formatter: function (e) {
var result = e.row.vltnLwrgCd2Nm || '';
if (e.row.vltnLaw2) {
result += ' (' + e.row.vltnLaw2 + ')';
}
return result;
return e.row.vltnLaw2 || '';
}
},
{

@ -454,73 +454,27 @@
window.CrdnDetailViewOwnrInfo.removeSelectedOwnrs();
}
});
},
/**
* 그리드 모듈 등록 함수
* 각 개별 그리드 모듈에서 자신을 등록할 때 사용
*/
registerGrid: function(gridName, gridModule) {
this.grids[gridName] = gridModule;
console.log(gridName + ' 그리드 모듈이 등록되었습니다.');
},
/**
* 소유자 버튼 상태 제어 함수
* 위치정보 그리드 데이터 유무에 따라 소유자 선택/제거 버튼을 활성화/비활성화
*/
updateOwnrButtonsState: function(hasLocationData) {
var $ownrSelectBtn = $('#ownrSelectBtn');
var $ownrRemoveBtn = $('#ownrRemoveBtn');
if (hasLocationData) {
// 위치정보가 있을 때 버튼 활성화
$ownrSelectBtn.prop('disabled', false);
$ownrRemoveBtn.prop('disabled', false);
$ownrSelectBtn.removeClass('disabled');
$ownrRemoveBtn.removeClass('disabled');
} else {
// 위치정보가 없을 때 버튼 비활성화
$ownrSelectBtn.prop('disabled', true);
$ownrRemoveBtn.prop('disabled', true);
$ownrSelectBtn.addClass('disabled');
$ownrRemoveBtn.addClass('disabled');
}
},
/**
* 모듈 초기화
*/
init: function() {
var self = this;
// 중요로직: 소유자 선택/제거 버튼 초기 비활성화 설정
this.updateOwnrButtonsState(false);
// 이벤트 핸들러 설정
this.eventBindEvents();
// 단속 데이터 로딩
this.loadCrdnData();
// 팝업에서 선택된 조사원 정보 수신 콜백 설정 (한글 주석: 팝업 → 부모창 데이터 전달 수신)
window.onExmnrSelected = function(selectedExmnrs) {
if (selectedExmnrs && selectedExmnrs.length > 0) {
// 선택된 조사원명들을 콤마로 연결하여 입력필드에 설정
var exmnrNames = selectedExmnrs.map(function (exmnr) { return exmnr.exmnr; }).join(',');
$('#exmnr').val(exmnrNames);
}
};
// 중요로직: 불법행위 정보 등록 버튼 클릭 이벤트
$('#actInfoRegistBtn').on('click', function() {
var crdnYr = $('#crdnYr').val();
var crdnNo = $('#crdnNo').val();
if (!crdnYr || !crdnNo) {
var pstnInfoId = '';
if (CrdnDetailViewPstn && CrdnDetailViewPstn.grid && CrdnDetailViewPstn.grid.instance) {
var pstnData = CrdnDetailViewPstn.grid.instance.getData();
if (pstnData && pstnData.length > 0) {
pstnInfoId = pstnData[0].pstnInfoId;
}
}
if (!crdnYr || !crdnNo || !pstnInfoId) {
alert('단속 기본정보가 없습니다.');
return;
}
var url = '<c:url value="/crdn/crndRegistAndView/crdnActInfo/crdnActInfoRegistPopup.do"/>' + '?crdnYr=' + encodeURIComponent(crdnYr) + '&crdnNo=' + encodeURIComponent(crdnNo) + '&mode=C';
var url = '<c:url value="/crdn/crndRegistAndView/crdnActInfo/crdnActInfoRegistPopup.do"/>'
+ '?crdnYr=' + encodeURIComponent(crdnYr)
+ '&pstnInfoId=' + encodeURIComponent(pstnInfoId)
+ '&crdnNo=' + encodeURIComponent(crdnNo)
+ '&mode=C';
var w = 1200, h = 480;
var left = Math.max(0, (screen.width - w) / 2);
var top = Math.max(0, (screen.height - h) / 2);
@ -533,21 +487,21 @@
alert('불법행위 정보 그리드가 초기화되지 않았습니다.');
return;
}
var checkedRows = window.CrdnDetailView.grids.actInfo.grid.instance.getCheckedRows();
if (checkedRows.length === 0) {
alert('삭제할 항목을 선택해 주세요.');
return;
}
if (!confirm('선택된 ' + checkedRows.length + '건의 불법행위 정보를 삭제하시겠습니까?')) {
return;
}
var deleteIds = checkedRows.map(function(row) {
return row.actInfoId;
});
// 중요로직: 서버에 삭제 요청
$.ajax({
url: '<c:url value="/crdn/crndRegistAndView/crdnActInfo/delete.ajax"/>',
@ -573,6 +527,63 @@
}
});
});
},
/**
* 그리드 모듈 등록 함수
* 각 개별 그리드 모듈에서 자신을 등록할 때 사용
*/
registerGrid: function(gridName, gridModule) {
this.grids[gridName] = gridModule;
//console.log(gridName + ' 그리드 모듈이 등록되었습니다.');
},
/**
* 소유자 버튼 상태 제어 함수
* 위치정보 그리드 데이터 유무에 따라 소유자 선택/제거 버튼을 활성화/비활성화
*/
updateOwnrButtonsState: function(hasLocationData) {
var $ownrSelectBtn = $('#ownrSelectBtn');
var $ownrRemoveBtn = $('#ownrRemoveBtn');
if (hasLocationData) {
// 위치정보가 있을 때 버튼 활성화
$ownrSelectBtn.prop('disabled', false);
$ownrRemoveBtn.prop('disabled', false);
$ownrSelectBtn.removeClass('disabled');
$ownrRemoveBtn.removeClass('disabled');
} else {
// 위치정보가 없을 때 버튼 비활성화
$ownrSelectBtn.prop('disabled', true);
$ownrRemoveBtn.prop('disabled', true);
$ownrSelectBtn.addClass('disabled');
$ownrRemoveBtn.addClass('disabled');
}
},
/**
* 모듈 초기화
*/
init: function() {
var self = this;
// 중요로직: 소유자 선택/제거 버튼 초기 비활성화 설정
this.updateOwnrButtonsState(false);
// 이벤트 핸들러 설정
this.eventBindEvents();
// 단속 데이터 로딩
this.loadCrdnData();
// 팝업에서 선택된 조사원 정보 수신 콜백 설정 (한글 주석: 팝업 → 부모창 데이터 전달 수신)
window.onExmnrSelected = function(selectedExmnrs) {
if (selectedExmnrs && selectedExmnrs.length > 0) {
// 선택된 조사원명들을 콤마로 연결하여 입력필드에 설정
var exmnrNames = selectedExmnrs.map(function (exmnr) { return exmnr.exmnr; }).join(',');
$('#exmnr').val(exmnrNames);
}
};
console.log('단속 상세보기 통합 모듈이 초기화되었습니다.');
}

@ -213,12 +213,12 @@ $(document).ready(function() {
try {
var $featherElements = $('[data-feather]');
console.log('[DEBUG_LOG] 발견된 feather 아이콘 요소 수:', $featherElements.length);
//console.log('[DEBUG_LOG] 발견된 feather 아이콘 요소 수:', $featherElements.length);
if ($featherElements.length > 0) {
// 모든 data-feather 속성을 가진 요소에 아이콘 적용
feather.replace();
console.log('[DEBUG_LOG] Feather 아이콘 초기화 완료');
//console.log('[DEBUG_LOG] Feather 아이콘 초기화 완료');
} else {
console.log('[DEBUG_LOG] feather 아이콘 요소를 찾을 수 없습니다.');
}

Loading…
Cancel
Save