Merge remote-tracking branch 'origin/main'
commit
7e383bcb09
@ -0,0 +1,641 @@
|
||||
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
|
||||
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
|
||||
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
|
||||
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>
|
||||
<%@ taglib prefix="dateUtil" uri="http://egovframework.go.kr/functions/date-util" %>
|
||||
|
||||
<!-- Main body -->
|
||||
<div class="main_body">
|
||||
<section id="section8" class="main_bars">
|
||||
<div class="bgs-main">
|
||||
<section id="section5">
|
||||
<div class="sub_title"></div>
|
||||
<button type="button" id="registerBtn" class="newbtn bg1">등록</button>
|
||||
<button type="button" id="updaterBtn" class="newbtn bg4">수정</button>
|
||||
</section>
|
||||
</div>
|
||||
</section>
|
||||
<div class="contants_body">
|
||||
<div class="gs_b_top">
|
||||
<ul class="lef">
|
||||
<li class="th">단속 년도</li>
|
||||
<li>
|
||||
<input type="text" id="schCrdnYr" name="schCrdnYr" maxlength="4" class="input calender" style="width: 80px;" autocomplete="off" value="${dateUtil:getCurrentDateTime('yyyy')}"/>
|
||||
</li>
|
||||
<li class="th">단속 번호</li>
|
||||
<li>
|
||||
<input type="text" id="schCrdnNo" name="schCrdnNo" maxlength="6" class="input" style="width: 100px;" autocomplete="off"/>
|
||||
</li>
|
||||
<li class="th">지역 구분</li>
|
||||
<li>
|
||||
<select id="schRgnSeCd" name="schRgnSeCd" class="input" style="width: 120px;">
|
||||
<option value="">전체</option>
|
||||
<c:forEach var="code" items="${regionList}">
|
||||
<option value="${code.cdId}" <c:if test="${param.schRgnSeCd eq code.cdId}">selected</c:if>>
|
||||
${code.cdNm}
|
||||
</option>
|
||||
</c:forEach>
|
||||
</select>
|
||||
</li>
|
||||
<li class="th">적발 방법</li>
|
||||
<li>
|
||||
<select id="schDsclMthdCd" name="schDsclMthdCd" class="input" style="width: 150px;">
|
||||
<option value="">전체</option>
|
||||
<c:forEach var="code" items="${dsclMthdCdList}">
|
||||
<option value="${code.cdId}" <c:if test="${param.schDsclMthdCd eq code.cdId}">selected</c:if>>
|
||||
${code.cdNm}
|
||||
</option>
|
||||
</c:forEach>
|
||||
</select>
|
||||
</li>
|
||||
<li class="th">조사원</li>
|
||||
<li>
|
||||
<input type="text" id="schExmnr" name="schExmnr" maxlength="50" class="input" style="width: 150px;" autocomplete="off"/>
|
||||
</li>
|
||||
<li class="th">진행단계</li>
|
||||
<li>
|
||||
<select id="schCrdnPrcsSttsCd" name="schCrdnPrcsSttsCd" class="input" style="width: 120px;">
|
||||
<option value="">전체</option>
|
||||
<c:forEach var="code" items="${crdnPrcsSttsCdList}">
|
||||
<option value="${code.cdId}" <c:if test="${param.schCrdnPrcsSttsCd eq code.cdId}">selected</c:if>>
|
||||
${code.cdNm}
|
||||
</option>
|
||||
</c:forEach>
|
||||
</select>
|
||||
</li>
|
||||
<li class="th">가중 부과 대상</li>
|
||||
<li>
|
||||
<select id="schAgrvtnLevyTrgtYn" name="schAgrvtnLevyTrgtYn" class="input" style="width: 120px;">
|
||||
<option value="">전체</option>
|
||||
<option value="Y" <c:if test="${param.schAgrvtnLevyTrgtYn eq 'Y'}">selected</c:if>>대상</option>
|
||||
<option value="N" <c:if test="${param.schAgrvtnLevyTrgtYn eq 'N'}">selected</c:if>>비대상</option>
|
||||
</select>
|
||||
</li>
|
||||
</ul>
|
||||
<ul class="rig2">
|
||||
<li><button type="button" id="search_btn" class="newbtnss bg1">검색</button></li>
|
||||
<li><button type="button" id="reset_btn" class="newbtnss bg5" style="margin-left: 5px;">초기화</button></li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="gs_booking">
|
||||
<div class="row">
|
||||
<div class="col-sm-12">
|
||||
<div class="box_column">
|
||||
<ul class="box_title" style="display: flex; justify-content: space-between; align-items: center;">
|
||||
<li class="tit">단속 목록</li>
|
||||
<li class="rig">
|
||||
<button type="button" id="btnDsps" class="newbtn bg2-1">처분사전</button>
|
||||
<button type="button" id="btnCrcCmd" class="newbtn bg2-1">시정명령</button>
|
||||
<button type="button" id="btnCrcUrg" class="newbtn bg2-1">시정촉구</button>
|
||||
<button type="button" id="btnLevyPrvntc" class="newbtn bg2-1">부과예고</button>
|
||||
<button type="button" id="btnLevy" class="newbtn bg2-1">부과</button>
|
||||
<button type="button" id="btnPayUrg" class="newbtn bg2-1">납부촉구</button>
|
||||
|
||||
<span id="totalCount" class="total-count" style="padding-left: 25px;padding-right: 25px;">총 0건</span>
|
||||
<select id="perPageSelect" class="input" style="width: 112px; ">
|
||||
<option value="15">페이지당 15</option>
|
||||
<option value="50">페이지당 50</option>
|
||||
<option value="100">페이지당 100</option>
|
||||
</select>
|
||||
<span class="page_number"><span id="currentPage"></span><span class="bar">/</span><span id="totalPages"></span> Pages</span>
|
||||
</li>
|
||||
</ul>
|
||||
<div class="containers">
|
||||
<div id="grid"></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<!-- /Main body -->
|
||||
|
||||
<script type="text/javascript">
|
||||
|
||||
/**
|
||||
* 단속 등록/조회 목록 관리 모듈
|
||||
* 단속 목록을 조회하고 관리하는 기능을 제공합니다.
|
||||
*/
|
||||
(function(window, $) {
|
||||
'use strict';
|
||||
|
||||
var SEARCH_COND = {};
|
||||
|
||||
// 검색정보 설정
|
||||
var setSearchCond = function() {
|
||||
var schCrdnYr = $.trim(nvl($("#schCrdnYr").val(), ""));
|
||||
var schCrdnNo = $.trim(nvl($("#schCrdnNo").val(), ""));
|
||||
var schRgnSeCd = $.trim(nvl($("#schRgnSeCd").val(), ""));
|
||||
var schDsclMthdCd = $.trim(nvl($("#schDsclMthdCd").val(), ""));
|
||||
var schExmnr = $.trim(nvl($("#schExmnr").val(), ""));
|
||||
var schCrdnPrcsSttsCd = $.trim(nvl($("#schCrdnPrcsSttsCd").val(), ""));
|
||||
var schAgrvtnLevyTrgtYn = $.trim(nvl($("#schAgrvtnLevyTrgtYn").val(), ""));
|
||||
|
||||
SEARCH_COND.schCrdnYr = schCrdnYr;
|
||||
SEARCH_COND.schCrdnNo = schCrdnNo;
|
||||
SEARCH_COND.schRgnSeCd = schRgnSeCd;
|
||||
SEARCH_COND.schDsclMthdCd = schDsclMthdCd;
|
||||
SEARCH_COND.schExmnr = schExmnr;
|
||||
SEARCH_COND.schCrdnPrcsSttsCd = schCrdnPrcsSttsCd;
|
||||
SEARCH_COND.schAgrvtnLevyTrgtYn = schAgrvtnLevyTrgtYn;
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* 단속 목록 관리 네임스페이스
|
||||
*/
|
||||
var CrdnRegistAndViewList = {
|
||||
/**
|
||||
* 선택된 행 정보
|
||||
*/
|
||||
selectedRow: null,
|
||||
|
||||
/**
|
||||
* 그리드 관련 객체
|
||||
*/
|
||||
grid: {
|
||||
/**
|
||||
* 그리드 인스턴스
|
||||
*/
|
||||
instance: null,
|
||||
|
||||
/**
|
||||
* 그리드 설정 초기화
|
||||
* @returns {Object} 그리드 설정 객체
|
||||
*/
|
||||
initConfig: function() {
|
||||
// 데이터 소스 설정
|
||||
var dataSource = this.createDataSource();
|
||||
|
||||
// 현재 선택된 perPage 값 가져오기
|
||||
var perPage = parseInt($('#perPageSelect').val() || 15, 10);
|
||||
|
||||
// 그리드 설정 객체 생성
|
||||
var gridConfig = new XitTuiGridConfig();
|
||||
|
||||
// 기본 설정
|
||||
gridConfig.setOptDataSource(dataSource); // 데이터소스 연결
|
||||
gridConfig.setOptGridId('grid'); // 그리드를 출력할 Element ID
|
||||
gridConfig.setOptGridHeight(470); // 그리드 높이(단위: px)
|
||||
gridConfig.setOptRowHeight(30); // 그리드 행 높이(단위: px)
|
||||
gridConfig.setOptRowHeaderType(''); // 행 첫번째 셀 타입 비활성화 (라디오 버튼을 컬럼으로 구현)
|
||||
gridConfig.setOptUseClientSort(true); // 서버사이드 정렬 false
|
||||
|
||||
// 페이징 옵션 설정
|
||||
gridConfig.setOptPageOptions({
|
||||
useClient: true, // 클라이언트 페이징 여부(false: 서버 페이징)
|
||||
perPage: perPage // 페이지당 표시 건수
|
||||
});
|
||||
gridConfig.setOptColumns(this.getGridColumns());
|
||||
|
||||
return gridConfig;
|
||||
},
|
||||
|
||||
/**
|
||||
* 그리드 컬럼 정의
|
||||
* @returns {Array} 그리드 컬럼 배열
|
||||
*/
|
||||
getGridColumns: function() {
|
||||
var self = this;
|
||||
return [
|
||||
{
|
||||
header: '선택',
|
||||
name: '_radio',
|
||||
align: 'center',
|
||||
width: 50,
|
||||
sortable: false,
|
||||
renderer: {
|
||||
type: XitRadioRenderer,
|
||||
options: {
|
||||
radioName: 'gridRowRadio',
|
||||
targetObject: 'CrdnRegistAndViewList',
|
||||
selectedRowProperty: 'selectedRow'
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
header: '번호',
|
||||
name: '_rowNum',
|
||||
align: 'center',
|
||||
width: 60,
|
||||
sortable: false,
|
||||
formatter: function(e) {
|
||||
return XitReverseRowNumberRenderer.format(CrdnRegistAndViewList.grid.instance.getData().length, e);
|
||||
}
|
||||
},
|
||||
{
|
||||
header: '단속년도',
|
||||
name: 'crdnYr',
|
||||
align: 'center',
|
||||
width: 80,
|
||||
sortingType: 'desc',
|
||||
sortable: true
|
||||
},
|
||||
{
|
||||
header: '단속번호',
|
||||
name: 'crdnNo',
|
||||
align: 'center',
|
||||
width: 90,
|
||||
sortable: true
|
||||
},
|
||||
{
|
||||
header: '지역구분',
|
||||
name: 'rgnSeCdNm',
|
||||
align: 'center',
|
||||
width: 100
|
||||
},
|
||||
{
|
||||
header: '적발방법',
|
||||
name: 'dsclMthdCdNm',
|
||||
align: 'center',
|
||||
width: 120
|
||||
},
|
||||
{
|
||||
header: '적발일자',
|
||||
name: 'dsclYmd',
|
||||
align: 'center',
|
||||
width: 100,
|
||||
formatter: function (e) {
|
||||
return e.value ? moment(e.value).format('YYYY-MM-DD') : '';
|
||||
}
|
||||
},
|
||||
{
|
||||
header: '조사원',
|
||||
name: 'exmnr',
|
||||
align: 'left',
|
||||
width: 120
|
||||
},
|
||||
{
|
||||
header: '재부과여부',
|
||||
name: 'relevyYn',
|
||||
align: 'center',
|
||||
width: 80,
|
||||
formatter: function(e) {
|
||||
return e.value === 'Y' ? '재부과' : '일반';
|
||||
}
|
||||
},
|
||||
{
|
||||
header: '가중부과대상',
|
||||
name: 'agrvtnLevyTrgtYn',
|
||||
align: 'center',
|
||||
width: 100,
|
||||
formatter: function(e) {
|
||||
return e.value === 'Y' ? '대상' : '비대상';
|
||||
}
|
||||
},
|
||||
{
|
||||
header: '진행단계',
|
||||
name: 'crdnPrcsSttsCdNm',
|
||||
align: 'center',
|
||||
width: 100
|
||||
},
|
||||
{
|
||||
header: '등록일시',
|
||||
name: 'regDt',
|
||||
align: 'center',
|
||||
width: 150
|
||||
},
|
||||
{
|
||||
header: '등록자',
|
||||
name: 'rgtrNm',
|
||||
align: 'center',
|
||||
width: 100
|
||||
}
|
||||
];
|
||||
},
|
||||
|
||||
/**
|
||||
* 데이터 소스 생성
|
||||
* @returns {Object} 데이터 소스 설정 객체
|
||||
*/
|
||||
createDataSource: function() {
|
||||
return {
|
||||
api: {
|
||||
readData: {
|
||||
url: '<c:url value="/crdn/crndRegistAndView/list.ajax"/>',
|
||||
method: 'POST',
|
||||
contentType: 'application/x-www-form-urlencoded',
|
||||
processData: true
|
||||
}
|
||||
},
|
||||
initialRequest: false, // 초기 데이터 요청 여부
|
||||
serializer: function(params) {
|
||||
// 기본 파라미터 (페이지 정보 등)
|
||||
var defaultParams = $.param(params);
|
||||
// 검색 폼 데이터
|
||||
setSearchCond();
|
||||
var searchParams = $.param(SEARCH_COND);
|
||||
// 모든 파라미터 조합
|
||||
console.log(defaultParams + '&' + searchParams);
|
||||
return defaultParams + '&' + searchParams;
|
||||
}
|
||||
};
|
||||
},
|
||||
|
||||
/**
|
||||
* 그리드 인스턴스 생성
|
||||
*/
|
||||
create: function() {
|
||||
var gridConfig = this.initConfig();
|
||||
var Grid = tui.Grid;
|
||||
this.instance = gridConfig.instance(Grid);
|
||||
|
||||
// 그리드 테마 설정
|
||||
Grid.applyTheme('striped');
|
||||
|
||||
this.gridBindEvents();
|
||||
},
|
||||
|
||||
/**
|
||||
* 그리드 이벤트 바인딩
|
||||
*/
|
||||
gridBindEvents: function() {
|
||||
var self = this;
|
||||
|
||||
// 데이터 로딩 완료 이벤트 - 라디오 버튼 초기화
|
||||
this.instance.on('successResponse', function(ev) {
|
||||
// 라디오 버튼 모두 해제
|
||||
document.querySelectorAll('input[name="gridRowRadio"]').forEach(function(radio) {
|
||||
radio.checked = false;
|
||||
});
|
||||
// 선택된 행 초기화
|
||||
CrdnRegistAndViewList.selectedRow = null;
|
||||
});
|
||||
|
||||
// 행 선택 이벤트
|
||||
this.instance.on('selection', function(ev) {
|
||||
if (ev.range && ev.range.row && ev.range.row.length > 0) {
|
||||
var rowKey = ev.range.row[0];
|
||||
CrdnRegistAndViewList.selectedRow = self.instance.getRow(rowKey);
|
||||
|
||||
// XitRadioRenderer 동기화 함수 사용
|
||||
XitRadioRenderer.syncRadioSelection(rowKey, 'gridRowRadio');
|
||||
}
|
||||
});
|
||||
|
||||
// 행 클릭 이벤트 - 라디오 버튼 즉시 체크를 위해 추가
|
||||
this.instance.on('click', function(ev) {
|
||||
if (ev.rowKey !== undefined && ev.rowKey !== null) {
|
||||
CrdnRegistAndViewList.selectedRow = self.instance.getRow(ev.rowKey);
|
||||
|
||||
// XitRadioRenderer 동기화 함수 사용
|
||||
XitRadioRenderer.syncRadioSelection(ev.rowKey, 'gridRowRadio');
|
||||
}
|
||||
});
|
||||
|
||||
// 행 더블클릭 이벤트 - detailView 페이지를 새 탭으로 열기
|
||||
this.instance.on('dblclick', function(ev) {
|
||||
var rowKey = ev.rowKey;
|
||||
var rowData = self.instance.getRow(rowKey);
|
||||
if (rowData) {
|
||||
var paramCond = Object.assign({}, SEARCH_COND);
|
||||
paramCond.crdnYr = rowData.crdnYr;
|
||||
paramCond.crdnNo = rowData.crdnNo;
|
||||
|
||||
// 새 탭으로 열기 - 컨트롤러가 요구하는 파라미터명으로 전달 (crdnYr, crdnNo)
|
||||
var detailUrl = buildUrlWithParamCondAndMultipleKeys(null, {"crdnYr": rowData.crdnYr, "crdnNo": rowData.crdnNo}, "<c:url value="/crdn/crndRegistAndView/detailView.do"/>");
|
||||
window.open(detailUrl, 'crdnDetailView');
|
||||
}
|
||||
});
|
||||
|
||||
// 페이지 변경 이벤트 - 페이지 이동 버튼 클릭 시 현재 페이지 업데이트 및 라디오 버튼 초기화
|
||||
this.instance.on('afterPageMove', function(ev) {
|
||||
// 라디오 버튼 모두 해제
|
||||
document.querySelectorAll('input[name="gridRowRadio"]').forEach(function(radio) {
|
||||
radio.checked = false;
|
||||
});
|
||||
// 선택된 행 초기화
|
||||
CrdnRegistAndViewList.selectedRow = null;
|
||||
|
||||
});
|
||||
|
||||
// 데이터 로드 완료 후 페이지 정보 업데이트
|
||||
this.updatePageInfo();
|
||||
},
|
||||
|
||||
/**
|
||||
* 페이지 정보 업데이트, 클라이언트 사이드 페이징
|
||||
*/
|
||||
updatePageInfo: function() {
|
||||
var self = this;
|
||||
// 약간의 딜레이를 두어 데이터 로딩이 완료된 후 실행
|
||||
setTimeout(function() {
|
||||
try {
|
||||
var totalCount = self.instance.getData().length || 0;
|
||||
$("#totalCount").text('총 ' + totalCount.toLocaleString() + '건');
|
||||
var perPage = parseInt($('#perPageSelect').val() || 15);
|
||||
var totalPages = Math.ceil(totalCount / perPage);
|
||||
var pagination = self.instance.getPagination();
|
||||
if (pagination) {
|
||||
var currentPage = pagination.getCurrentPage();
|
||||
$("#currentPage").text(currentPage);
|
||||
$("#totalPages").text(totalPages);
|
||||
}
|
||||
} catch (e) {
|
||||
console.log('페이지 정보 업데이트 중 오류:', e);
|
||||
}
|
||||
}, 50);
|
||||
}
|
||||
},
|
||||
|
||||
/**
|
||||
* 팝업 관련 기능
|
||||
*/
|
||||
openRegisterPopup: function() {
|
||||
window.open('<c:url value="/crdn/crndRegistAndView/popup.do"/>?mode=C', 'crdnRegistAndViewReg', 'width=800,height=700,scrollbars=yes');
|
||||
},
|
||||
|
||||
openViewPopup: function(crdnYr, crdnNo) {
|
||||
var url = '<c:url value="/crdn/crndRegistAndView/popup.do"/>?mode=V&crdnYr=' +
|
||||
encodeURIComponent(crdnYr) + '&crdnNo=' +
|
||||
encodeURIComponent(crdnNo);
|
||||
window.open(url, 'crdnRegistAndViewView', 'width=800,height=700,scrollbars=yes');
|
||||
},
|
||||
|
||||
/**
|
||||
* 목록 새로고침
|
||||
*/
|
||||
refreshList: function() {
|
||||
if (this.grid.instance) {
|
||||
this.grid.instance.readData();
|
||||
}
|
||||
},
|
||||
|
||||
/**
|
||||
* 단속 상태를 업데이트합니다.
|
||||
* 선택된 행이 있을 때만 상태를 업데이트합니다.
|
||||
*
|
||||
* @param statusCode 변경할 상태 코드
|
||||
* @param statusName 상태명 (확인 메시지용)
|
||||
*/
|
||||
updateStatus: function(statusCode, statusName) {
|
||||
var self = this;
|
||||
|
||||
// 선택된 행 확인
|
||||
if (!this.selectedRow) {
|
||||
alert('상태를 변경할 단속 건을 선택해주세요.');
|
||||
return;
|
||||
}
|
||||
|
||||
var crdnYr = this.selectedRow.crdnYr;
|
||||
var crdnNo = this.selectedRow.crdnNo;
|
||||
|
||||
// 확인 메시지
|
||||
if (!confirm(crdnYr + '-' + crdnNo + ' 단속 건의 상태를 [' + statusName + ']으로 변경하시겠습니까?')) {
|
||||
return;
|
||||
}
|
||||
|
||||
// AJAX 요청으로 상태 업데이트
|
||||
$.ajax({
|
||||
url: '<c:url value="/crdn/crndRegistAndView/updateStatus.ajax"/>',
|
||||
type: 'POST',
|
||||
data: {
|
||||
crdnYr: crdnYr,
|
||||
crdnNo: crdnNo,
|
||||
crdnPrcsSttsCd: statusCode
|
||||
},
|
||||
success: function(response) {
|
||||
if (response && response.success) {
|
||||
alert('단속 상태가 성공적으로 변경되었습니다.');
|
||||
// 목록 새로고침
|
||||
self.refreshList();
|
||||
// 선택된 행 초기화
|
||||
self.selectedRow = null;
|
||||
} else {
|
||||
alert(response.message || '상태 변경에 실패했습니다.');
|
||||
}
|
||||
},
|
||||
error: function(xhr, status, error) {
|
||||
console.error('상태 업데이트 요청 실패:', error);
|
||||
alert('상태 변경 중 오류가 발생했습니다.');
|
||||
}
|
||||
});
|
||||
},
|
||||
|
||||
/**
|
||||
* 이벤트 핸들러 설정
|
||||
*/
|
||||
eventBindEvents: function() {
|
||||
var self = this;
|
||||
|
||||
// 검색 버튼 클릭 이벤트
|
||||
$("#search_btn").on('click', function() {
|
||||
self.grid.instance.readData(1);
|
||||
// 검색 후 페이지 정보 업데이트
|
||||
setTimeout(function() {
|
||||
self.grid.updatePageInfo();
|
||||
}, 200);
|
||||
});
|
||||
|
||||
// 초기화 버튼 클릭 이벤트
|
||||
$("#reset_btn").on('click', function() {
|
||||
// 모든 검색 조건 초기화
|
||||
$("#schCrdnYr").val("${dateUtil:getCurrentDateTime('yyyy')}"); // 현재 년도로 초기화
|
||||
$("#schCrdnNo").val("");
|
||||
$("#schRgnSeCd").val("");
|
||||
$("#schDsclMthdCd").val("");
|
||||
$("#schExmnr").val("");
|
||||
$("#schCrdnPrcsSttsCd").val("");
|
||||
$("#schAgrvtnLevyTrgtYn").val("");
|
||||
|
||||
// 그리드 데이터 새로고침
|
||||
self.grid.instance.readData(1);
|
||||
self.grid.updatePageInfo();
|
||||
});
|
||||
|
||||
// 등록 버튼 클릭 이벤트
|
||||
$("#registerBtn").on('click', function() {
|
||||
self.openRegisterPopup();
|
||||
});
|
||||
|
||||
// 수정 버튼 클릭 이벤트
|
||||
$("#updaterBtn").on('click', function() {
|
||||
// 선택된 행 확인
|
||||
if (!self.selectedRow) {
|
||||
alert('수정할 단속 건을 선택해주세요.');
|
||||
return;
|
||||
}
|
||||
|
||||
// 선택된 행의 데이터로 팝업 열기
|
||||
self.openViewPopup(self.selectedRow.crdnYr, self.selectedRow.crdnNo);
|
||||
});
|
||||
|
||||
// 상태 업데이트 버튼 클릭 이벤트들
|
||||
$("#btnDsps").on('click', function() {
|
||||
self.updateStatus('20', '처분사전');
|
||||
});
|
||||
|
||||
$("#btnCrcCmd").on('click', function() {
|
||||
self.updateStatus('30', '시정명령');
|
||||
});
|
||||
|
||||
$("#btnCrcUrg").on('click', function() {
|
||||
self.updateStatus('40', '시정촉구');
|
||||
});
|
||||
|
||||
$("#btnLevyPrvntc").on('click', function() {
|
||||
self.updateStatus('50', '부과예고');
|
||||
});
|
||||
|
||||
$("#btnLevy").on('click', function() {
|
||||
self.updateStatus('60', '부과');
|
||||
});
|
||||
|
||||
$("#btnPayUrg").on('click', function() {
|
||||
self.updateStatus('70', '납부촉구');
|
||||
});
|
||||
|
||||
// 엔터키 검색
|
||||
$(".gs_b_top input").on('keypress', function(e) {
|
||||
if (e.which === 13) {
|
||||
e.preventDefault();
|
||||
$("#search_btn").trigger('click');
|
||||
}
|
||||
});
|
||||
|
||||
// perPage 변경 이벤트 추가
|
||||
$('#perPageSelect').on('change', function() {
|
||||
var perPage = parseInt($(this).val(), 10);
|
||||
// Grid의 perPage 설정 변경 및 데이터 리로드
|
||||
self.grid.instance.setPerPage(perPage);
|
||||
|
||||
// 라디오 버튼 모두 해제
|
||||
document.querySelectorAll('input[name="gridRowRadio"]').forEach(function(radio) {
|
||||
radio.checked = false;
|
||||
});
|
||||
// 선택된 행 초기화
|
||||
self.selectedRow = null;
|
||||
|
||||
// perPage 변경 후 페이지 정보 업데이트
|
||||
self.grid.updatePageInfo();
|
||||
});
|
||||
},
|
||||
|
||||
/**
|
||||
* 모듈 초기화
|
||||
*/
|
||||
init: function() {
|
||||
|
||||
// 그리드 생성
|
||||
this.grid.create();
|
||||
|
||||
// 이벤트 핸들러 설정
|
||||
this.eventBindEvents();
|
||||
|
||||
this.grid.instance.readData();
|
||||
}
|
||||
};
|
||||
|
||||
// 팝업 콜백 함수 (팝업에서 호출)
|
||||
window.refreshCrdnList = function() {
|
||||
CrdnRegistAndViewList.refreshList();
|
||||
};
|
||||
|
||||
// DOM 준비 완료 시 초기화
|
||||
$(document).ready(function() {
|
||||
CrdnRegistAndViewList.init();
|
||||
});
|
||||
|
||||
})(window, jQuery);
|
||||
</script>
|
||||
Loading…
Reference in New Issue