@ -41,6 +41,12 @@
<li>
<input type="text" id="schOwnrNm" name="schOwnrNm" class="input" style="width: 150px;" maxlength="75" autocomplete="off"/>
</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>
<ul class="lef2">
<li class="th">처리상태</li>
<li>
<c:forEach var="code" items="${taskPrcsSttsCdList}">
@ -50,10 +56,15 @@
</label>
</c:forEach>
</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>
<li class="th">재검여부</li>
<li>
<label style="margin-right: 10px; cursor: pointer;">
<input type="checkbox" name="schReinspYn" value="Y"/> 재검(Y)
</label>
<label style="margin-right: 10px; cursor: pointer;">
<input type="checkbox" name="schReinspYn" value="N"/> 미재검(N)
</label>
</li>
</ul>
</div>
<div class="gs_booking">
@ -70,12 +81,6 @@
<button type="button" id="btn_save" class="newbtn bg4">저장</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">
@ -113,13 +118,6 @@
// 그리드 조회 시 사용된 마지막 검색조건 저장
var LAST_GRID_SEARCH_COND = {};
// 페이징 정보를 저장할 전역 변수
var GRID_PAGINATION_INFO = {
totalCount: 0,
page: 0,
perPage: 0
};
// 검색정보 설정
var setSearchCond = function() {
var schRcptYmdStart = $.trim(nvl($("#schRcptYmdStart").val(), ""));
@ -135,6 +133,11 @@
schTaskPrcsSttsCd.push($(this).val());
});
var schReinspYn = [];
$("input[name='schReinspYn']:checked").each(function() {
schReinspYn.push($(this).val());
});
SEARCH_COND.schRcptYmdStart = schRcptYmdStart;
SEARCH_COND.schRcptYmdEnd = schRcptYmdEnd;
SEARCH_COND.schInspYmdStart = schInspYmdStart;
@ -142,6 +145,7 @@
SEARCH_COND.schVhclno = schVhclno;
SEARCH_COND.schOwnrNm = schOwnrNm;
SEARCH_COND.schTaskPrcsSttsCd = schTaskPrcsSttsCd;
SEARCH_COND.schReinspYn = schReinspYn;
};
// 다운로드 URL 생성 (현재 검색조건을 쿼리스트링으로 부여)
@ -161,6 +165,11 @@
params.push('schTaskPrcsSttsCd=' + encodeURIComponent(val));
});
}
if (SEARCH_COND.schReinspYn && SEARCH_COND.schReinspYn.length > 0) {
SEARCH_COND.schReinspYn.forEach(function(val) {
params.push('schReinspYn=' + encodeURIComponent(val));
});
}
return baseUrl + (params.length ? ('?' + params.join('&')) : '');
};
@ -183,7 +192,8 @@
schInspYmdEnd: '검사일자 종료',
schVhclno: '차량번호',
schOwnrNm: '소유자명',
schTaskPrcsSttsCd: '처리상태'
schTaskPrcsSttsCd: '처리상태',
schReinspYn: '재검여부'
};
// 날짜 포맷 변환 함수 (YYYYMMDD -> YYYY-MM-DD)
@ -207,6 +217,22 @@
return textArray.join(', ');
};
// 재검여부 -> 텍스트 변환
var getReinspYnText = function(codeArray) {
if (!codeArray || codeArray.length === 0) return '전체';
var textArray = [];
codeArray.forEach(function(code) {
if (code === 'Y') {
textArray.push('재검(Y)');
} else if (code === 'N') {
textArray.push('미재검(N)');
} else {
textArray.push(code);
}
});
return textArray.join(', ');
};
// 값 포맷팅 함수
var formatValue = function(field, value) {
if (field.indexOf('Ymd') > -1) {
@ -215,6 +241,9 @@
if (field === 'schTaskPrcsSttsCd') {
return getTaskPrcsSttsCdText(value);
}
if (field === 'schReinspYn') {
return getReinspYnText(value);
}
if (!value || (Array.isArray(value) && value.length === 0)) {
return '(공백)';
}
@ -224,14 +253,14 @@
// 달라진 조건 찾기
var differences = [];
var searchFields = ['schRcptYmdStart', 'schRcptYmdEnd', 'schInspYmdStart', 'schInspYmdEnd',
'schVhclno', 'schOwnrNm', 'schTaskPrcsSttsCd'];
'schVhclno', 'schOwnrNm', 'schTaskPrcsSttsCd', 'schReinspYn' ];
searchFields.forEach(function(field) {
var currentValue = SEARCH_COND[field];
var lastValue = LAST_GRID_SEARCH_COND[field];
// 배열 비교 (처리상태)
if (field === 'schTaskPrcsSttsCd') {
// 배열 비교 (처리상태, 재검여부 )
if (field === 'schTaskPrcsSttsCd' || field === 'schReinspYn' ) {
currentValue = currentValue || [];
lastValue = lastValue || [];
@ -306,9 +335,6 @@
// 데이터 소스 설정
var dataSource = this.createDataSource();
// 현재 선택된 perPage 값 가져오기
var perPage = parseInt($('#perPageSelect').val() || 15, 10);
// 그리드 설정 객체 생성
var gridConfig = new XitTuiGridConfig();
@ -321,10 +347,9 @@
gridConfig.setOptUseClientSort(false);
// 페이징 옵션 설정
gridConfig.setOptPageOptions({
useClient: false,
perPage: perPage
});
//gridConfig.setOptPageOptions({
// useClient: true
//});
gridConfig.setOptColumnOptions({ //컬럼고정 옵션
frozenCount: 7 //고정컬럼 갯수
@ -350,11 +375,7 @@
width: 60,
sortable: false,
formatter: function(e) {
var totalCount = GRID_PAGINATION_INFO.totalCount;
var page = GRID_PAGINATION_INFO.page;
var perPage = GRID_PAGINATION_INFO.perPage;
var rowIndex = e.row.rowKey;
return totalCount - (page - 1) * perPage - rowIndex;
return e.row.rowKey+1;
}
},
{ header: '접수일자', name: 'rcptYmd', align: 'center', width: 100,
@ -383,6 +404,7 @@
}
},
{ header: '일수', name: 'daycnt', align: 'right', width: 60 },
{ header: '재검여부', name: 'reinspYn', align: 'center', width: 80 },
{ header: '과태료금액', name: 'ffnlgAmt', align: 'right', width: 100,
formatter: function(e) {
return e.value ? parseInt(e.value).toLocaleString() + '원' : '';
@ -541,8 +563,6 @@
initialRequest: false,
serializer: function(params) {
setSearchCond();
SEARCH_COND.perPage = params.perPage;
SEARCH_COND.page = params.page;
return $.param(SEARCH_COND);
}
};
@ -572,15 +592,10 @@
this.instance.on('successResponse', function(ev) {
var responseObj = JSON.parse(ev.xhr.response);
if(responseObj){
$("#currentPage").text(responseObj.data.pagination.page);
$("#totalPages").text(responseObj.data.pagination.totalPages);
var totalCount = responseObj.data.pagination.totalCount;
$("#totalCount").text('총 ' + totalCount.toLocaleString() + '건');
// 페이징 정보를 전역 변수에 저장
GRID_PAGINATION_INFO.totalCount = responseObj.data.pagination.totalCount;
GRID_PAGINATION_INFO.page = responseObj.data.pagination.page;
GRID_PAGINATION_INFO.perPage = responseObj.data.pagination.perPage;
if( responseObj.data && responseObj.data.contents ){
var totalCount = responseObj.data.contents.length;
$("#totalCount").text('총 ' + totalCount.toLocaleString() + '건');
}
}
// 선택된 행 초기화
@ -676,7 +691,6 @@
},
error: function(xhr, status, error) {
console.error("저장 실패:", error);
alert("저장 중 오류가 발생했습니다.");
}
});
}
@ -715,6 +729,7 @@
$("#schOwnrNm").val("");
// 체크박스 모두 해제
$("input[name='schTaskPrcsSttsCd']").prop('checked', false);
$("input[name='schReinspYn']").prop('checked', false);
self.grid.reload();
});
@ -766,7 +781,7 @@
// 검색 조건 파라미터 추가
setSearchCond();
$.each(SEARCH_COND, function(key, value) {
if (key === 'schTaskPrcsSttsCd') {
if (key === 'schTaskPrcsSttsCd' || key === 'schReinspYn' ) {
// 배열인 경우 각각 추가
if (value && value.length > 0) {
value.forEach(function(val) {