통합조회 화면 수정

main
이범준 1 year ago
parent 8ce0298999
commit 9965e0de70

@ -1,9 +1,13 @@
package cokr.xit.fims.sprt.web;
import java.util.List;
import java.util.Map;
import javax.annotation.Resource;
import org.springframework.web.servlet.ModelAndView;
import cokr.xit.base.code.CommonCode;
import cokr.xit.base.web.ApplicationController;
import cokr.xit.fims.sprt.service.Sprt01Service;
@ -30,6 +34,16 @@ public class Sprt01Controller extends ApplicationController {
public ModelAndView unityInquireMain() {
ModelAndView mav = new ModelAndView("fims/sprt/sprt01010-main");
Map<String, List<CommonCode>> commonCodes = getCodesOf("FIM003", "FIM010", "FIM026", "FIM054");
mav.addObject("VLTNList", null);
mav.addObject("FIM003List", commonCodes.get("FIM003"));
mav.addObject("FIM010List", commonCodes.get("FIM010"));
mav.addObject("FIM026List", commonCodes.get("FIM026"));
mav.addObject("FIM054List", commonCodes.get("FIM054"));
addCodes(commonCodes, mav, "FIM003", "FIM010", "FIM026", "FIM054", "VLTN");
return mav.addObject("pageName", "sprt01010") // View(jsp)에서 사용할 id 뒤에 붙일 suffix
.addObject("infoPrefix", "unityInq") // prefix
;

@ -5,574 +5,299 @@
<div class="content-wrapper">
<div class="container-xxl flex-grow-1 px-0">
<div class="card wrapper-list">
<!-- 상단 버튼 -->
<div class="container-page-btn">
<button type="button" class="btn btn-outline-dark" id="btnReset--${pageName}" title="초기화" onclick="fnReset${pageName}();">
초기화
</button>
<span class="container-window-btn-right">
<button type="button" class="btn btn-search w-px-120" id="btnSearch--${pageName}" title="검색" onclick="fnSearchList${pageName}();">
검색
</button>
<button type="button" class="btn btn-excel w-px-120" id="btnExcel--${pageName}" title="엑셀 저장" onclick="fnExcel${pageName}();">
엑셀
</button>
</span>
</div>
<!-- / 상단 버튼 -->
<!-- 검색 조건 영역 -->
<form id="frmSearch--${pageName}" name="frmSearch">
<!-- 메인 조건 -->
<div class="container-search">
<div class="row g-1">
<!-- 업무구분 -->
<div class="col-12">
<label class="form-label fw-bold form-search-title text-end">업무구분</label>
<span class="form-search-linebox">
<c:forEach items="${FIM054List}" var="item">
<label>
<input type="radio" class="form-check-input" name="taskSeCd" alt="업무구분"
value="${item.code}" onchange="fnResetAndChangeBiz${pageName}(this.value);">
${item.value}
</label>
</c:forEach>
</span>
</div>
<!-- 부과제외일자 -->
<div class="col-6">
<label class="form-label fw-bold form-search-title text-end">부과제외일자</label>
<span class="form-search-linebox">
<input type="text" class="form-control form-date" id="schLevyExclYmdFrom--${pageName}" name="schLevyExclYmdFrom"
data-fmt-type="day" title="시작 날짜 선택" />
<button type="button" class="bx bx-sm bx-calendar bg-white"></button>
~
<input type="text" class="form-control form-date" id="schLevyExclYmdTo--${pageName}" name="schLevyExclYmdTo"
data-fmt-type="day" title="종료 날짜 선택" />
<button type="button" class="bx bx-sm bx-calendar bg-white"></button>
</span>
</div>
<!-- 부과제외구분 -->
<div class="col-6">
<label class="form-label fw-bold form-search-title text-end">부과제외구분</label>
<select class="form-select w-px-100" id="schLevyExclSeCd--${pageName}" name="schLevyExclSeCd">
<option value="">전체</option>
<c:forEach items="${FIM021List}" var="item">
<option value="${item.code}">${item.value}</option>
</c:forEach>
</select>
</div>
<!-- 차량번호 -->
<div class="col-6">
<label class="form-label fw-bold form-search-title text-end">차량번호</label>
<input type="text" class="form-control w-px-150" id="schVhrno--${pageName}" name="schVhrno" />
</div>
<!-- 납부자명 -->
<div class="col-6">
<label class="form-label fw-bold form-search-title text-end">납부자명</label>
<input type="text" class="form-control w-px-150" id="schRtpyrNm--${pageName}" name="schRtpyrNm" />
</div>
<!-- 단속일자 -->
<div class="col-6">
<label class="form-label fw-bold form-search-title text-end">단속일자</label>
<span class="form-search-linebox">
<input type="text" class="form-control form-date" id="schCrdnYmdFrom--${pageName}" name="schCrdnYmdFrom"
data-fmt-type="day" title="시작 날짜 선택" />
<button type="button" class="bx bx-sm bx-calendar bg-white"></button>
~
<input type="text" class="form-control form-date" id="schCrdnYmdTo--${pageName}" name="schCrdnYmdTo"
data-fmt-type="day" title="종료 날짜 선택" />
<button type="button" class="bx bx-sm bx-calendar bg-white"></button>
</span>
</div>
<!-- 동적검색 -->
<div class="col-6">
<input type="hidden" id="by--${pageName}" name="by" />
<input type="text" class="form-control" id="byOutput--${pageName}" value="동적 검색" readonly />
<input type="hidden" id="mainOption--${pageName}" name="mainOption" />
<input type="hidden" id="subOption--${pageName}" name="subOption" />
<input type="text" class="form-control w-px-300" id="term--${pageName}" name="term" />
<!-- 상세 검색조건 버튼 -->
<span class="flr">
<button type="button" class="btn btn-open-detail" data-bs-toggle="collapse" data-bs-target="#searchDetail--${pageName}">
<i class="bx bx-chevron-down"></i>
상세검색
</button>
</span>
</div>
</div>
</div> <!-- / 메인 조건 -->
<!-- 상세 조건 -->
<div id="searchDetail--${pageName}" class="container-search container-search-detail collapse">
<div class="row g-1">
<!-- 등록일자, 수정일자 -->
<div class="col-6">
<select class="form-select text-center" id="schDetailRegDtOpt--${pageName}" name="schDetailRegDtOpt">
<option value="regDt">등록일자</option>
<option value="mdfcnDt">수정일자</option>
</select>
<span class="form-search-linebox">
<input type="text" class="form-control form-date" id="schDetailRegDtFrom--${pageName}" name="schDetailRegDtFrom"
data-fmt-type="day" title="시작 날짜 선택" />
<button type="button" class="bx bx-sm bx-calendar bg-white"></button>
~
<input type="text" class="form-control form-date" id="schDetailRegDtTo--${pageName}" name="schDetailRegDtTo"
data-fmt-type="day" title="종료 날짜 선택">
<button type="button" class="bx bx-sm bx-calendar bg-white"></button>
</span>
</div>
<!-- 등록자명, 수정자명 -->
<div class="col-6">
<select class="form-select text-center" id="schDetailRgtrOpt--${pageName}" name="schDetailRgtrOpt">
<option value="rgtr">등록자</option>
<option value="mdfr">수정자</option>
</select>
<input type="text" class="form-control" id="schDetailRgtrNm--${pageName}" name="schDetailRgtrNm" />
</div>
</div>
</div>
<!-- / 상세 조건 -->
</form>
<!-- / 검색 조건 영역 -->
<!-- 업무 버튼 및 건수 표시 -->
<div>
<span class="container-page-btn">
<!-- 건수, 페이지 표시 -->
<div class="d-flex flex-row justify-content-between">
<label class="dataTables_info" id="paging--${pageName}PagingInfo" role="status" aria-live="polite"></label>
<ul class="pagination pagination-primary" id="paging--${pageName}">
</ul>
</div>
<span class="container-window-btn-right">
<!-- 업무 버튼 -->
<button type="button" class="btn btn-primary" id="btnUpdate--${pageName}" title="수정" onclick="fnUpdate${pageName}();">
수정
</button>
<button type="button" class="btn btn-primary" id="btnRemove--${pageName}" title="삭제" onclick="fnRemove${pageName}();">
삭제
</button>
</span>
</span>
</div>
<!-- / 업무 버튼 및 건수 표시 -->
<!-- DataTables(그리드) -->
<div class="card-datatable text-nowrap">
<div class="dataTables_wrapper dt-bootstrap5 no-footer" id="DataTables_Table_0_wrapper--${pageName}">
<div class="table-responsive" id="table-responsive--${pageName}" style="overflow-x:scroll; height:480px; overflow-y:scroll;" >
<table class="table-layout-fixed dataTable datatables-ajax table table-bordered no-footer" id="DataTables_Table_0--${pageName}" aria-describedby="DataTables_Table_0_info">
<thead class="sticky-thead">
<tr id="theadTr--${pageName}"
data-by="by--${pageName}" data-by-output="byOutput--${pageName}" data-main-option="mainOption--${pageName}" data-sub-option="subOption--${pageName}">
<th class="cmn" style="width: 72px;">NO.</th>
<th class="cmn" style="width: 56px;">
<input type="checkbox" class="form-check-input" onchange="${pageName}Control.select(this.checked);">
</th>
<th class="cmn" style="width: 140px;" onclick="searchFromGridTitle('LEVY_EXCL_YMD', this.innerText, 'ymd', '');">부과제외일자</th>
<th class="cmn" style="width: 140px;" onclick="searchFromGridTitle('LEVY_EXCL_SE_CD', this.innerText, 'codeValue', 'FIM021');">부과제외구분</th>
<th class="cmn" style="width: 200px;" onclick="searchFromGridTitle('LEVY_EXCL_RSN_CD', this.innerText, 'codeValue', 'FIM022');">부과제외사유</th>
<th class="cmn" style="width: 280px;" onclick="searchFromGridTitle('ETC_CN', this.innerText, 'match', 'part');">기타내용</th>
<th class="cmn" style="width: 180px;" onclick="searchFromGridTitle('CVLCPT_RCPT_NO', this.innerText, 'match', 'part');">민원접수번호</th>
<th class="cmn" style="width: 140px;" onclick="searchFromGridTitle('CVLCPT_RCPT_YMD', this.innerText, 'ymd', '');">민원접수일자</th>
<th class="cmn" style="width: 180px;" onclick="searchFromGridTitle('CRDN_YMD', this.innerText, 'ymd', '');">단속일시</th>
<th class="cmn" style="width: 140px;" onclick="searchFromGridTitle('VHRNO', this.innerText, 'match', 'part');">차량번호</th>
<th class="cmn" style="width: 160px;" onclick="searchFromGridTitle('CRDN_STDG_NM', this.innerText, 'match', 'part');">법정동</th>
<th class="cmn" style="width: 280px;" onclick="searchFromGridTitle('CRDN_PLC', this.innerText, 'match', 'part');">단속장소</th>
<th class="cmn" style="width: 120px;" onclick="searchFromGridTitle('FFNLG_AMT', this.innerText, 'match', 'part');">과태료금액</th>
<th class="cmn" style="width: 160px;" onclick="searchFromGridTitle('CRDN_STTS_CD', this.innerText, 'codeValue', 'FIM010');">처리상태</th>
<th class="cmn" style="width: 200px;" onclick="searchFromGridTitle('RTPYR_NM', this.innerText, 'match', 'part');">납부자명</th>
<th class="cmn" style="width: 120px;" onclick="searchFromGridTitle('RTPYR_BRDT', this.innerText, 'match', 'part');">납부자생일</th>
<th class="cmn" style="width: 180px;">등록일시</th>
<th class="cmn" style="width: 140px;">등록사용자</th>
<th class="cmn" style="width: 180px;">수정일시</th>
<th class="cmn" style="width: 140px;">수정사용자</th>
<th class="cmn dummy-th"></th>
</tr>
</thead>
<tbody id="tbody--${pageName}">
</tbody>
<template id="${infoPrefix}Row--${pageName}">
<tr data-key="{LEVY_EXCL_ID}">
<td class="cmn text-center" onclick="{onclick}" ondblclick="{ondblclick}">{ROW_NUM}</td>
<td class="cmn text-center">
<input type="checkbox" class="form-check-input" value="{LEVY_EXCL_ID}" onchange="${pageName}Control.select('{LEVY_EXCL_ID}', this.checked);">
</td>
<td class="cmn text-center" onclick="{onclick}" ondblclick="{ondblclick}">{LEVY_EXCL_YMD}</td>
<td class="cmn text-center" onclick="{onclick}" ondblclick="{ondblclick}">{LEVY_EXCL_SE_NM}</td>
<td class="cmn text-center" onclick="{onclick}" ondblclick="{ondblclick}">{LEVY_EXCL_RSN_NM}</td>
<td class="cmn text-start" onclick="{onclick}" ondblclick="{ondblclick}">{ETC_CN}</td>
<td class="cmn text-center" onclick="{onclick}" ondblclick="{ondblclick}">{CVLCPT_RCPT_NO}</td>
<td class="cmn text-center" onclick="{onclick}" ondblclick="{ondblclick}">{CVLCPT_RCPT_YMD}</td>
<td class="cmn text-center" onclick="{onclick}" ondblclick="{ondblclick}">{CRDN_YMD_TM}</td>
<td class="cmn text-start" onclick="{onclick}" ondblclick="{ondblclick}">{VHRNO}</td>
<td class="cmn text-start" onclick="{onclick}" ondblclick="{ondblclick}">{CRDN_STDG_NM}</td>
<td class="cmn text-start" onclick="{onclick}" ondblclick="{ondblclick}">{CRDN_PLC}</td>
<td class="cmn text-end" onclick="{onclick}" ondblclick="{ondblclick}">{FFNLG_AMT}</td>
<td class="cmn text-center" onclick="{onclick}" ondblclick="{ondblclick}">{CRDN_STTS_NM}</td>
<td class="cmn text-start" onclick="{onclick}" ondblclick="{ondblclick}">{RTPYR_NM}</td>
<td class="cmn text-center" onclick="{onclick}" ondblclick="{ondblclick}">{RTPYR_BRDT}</td>
<td class="cmn text-center" onclick="{onclick}" ondblclick="{ondblclick}">{REG_DT}</td>
<td class="cmn text-center" onclick="{onclick}" ondblclick="{ondblclick}">{RGTR_NM}</td>
<td class="cmn text-center" onclick="{onclick}" ondblclick="{ondblclick}">{MDFCN_DT}</td>
<td class="cmn text-center" onclick="{onclick}" ondblclick="{ondblclick}">{MDFR_NM}</td>
<td class="cmn dummy-td"></td>
</tr>
</template>
<template id="${infoPrefix}NotFound--${pageName}">
<tr class="odd">
<td valign="top" colspan="21" class="dataTables_empty text-center">${prefixName} 정보를 찾지 못했습니다.</td>
</tr>
</template>
</table>
</div>
</div>
</div>
<!-- / DataTables(그리드) -->
<jsp:include page="/WEB-INF/jsp/fims/sprt/sprt01020-info.jsp" />
<jsp:include page="/WEB-INF/jsp/fims/sprt/sprt01030-info.jsp" />
<jsp:include page="/WEB-INF/jsp/fims/sprt/sprt01040-info.jsp" />
</div>
</div>
<jsp:include page="/WEB-INF/jsp/include/bottom.jsp" />
<div class="content-backdrop fade"></div>
</div>
<jsp:include page="/WEB-INF/jsp/fims/sprt/sprt01050-info.jsp" />
<script>
/**************************************************************************
* Global Variable
**************************************************************************/
// URL
var ${pageName}PrefixUrl = "/excl/excl01";
// 공통 코드
/**************************************************************************
* Global Variable
**************************************************************************/
// 공통 코드
// var FIM021 = new CommonCodes(${FIM021}, true);
// var FIM022 = new CommonCodes(${FIM022}, true);
/**************************************************************************
* DatasetControl
**************************************************************************/
var ${pageName}Control = new DatasetControl({
prefix : "levyExcl"
, prefixName : "부과제외"
, infoSize : "lg"
, keymapper : info => info ? info.LEVY_EXCL_ID : ""
, dataGetter : obj => obj.levyExclList
, appendData : true
, tableRenderComplete : false // dataTables 에 자료 추가 완료 여부
// , urls : {
// load : wctx.url(${pageName}PrefixUrl + "/010/list.do") // 검색
// , remove : wctx.url(${pageName}PrefixUrl + "/010/removes.do") // 선택(체크) 자료 삭제
// , getInfo : wctx.url("/sprt/sprt02/010/main.do") // 개별총정보
// }
, formats : {
LEVY_EXCL_YMD : dateFormat
, CRDN_YMD_TM : datetimeFormat
, CVLCPT_RCPT_YMD : dateFormat
, FFNLG_CRDN_AMT : numberFormat
, FFNLG_AMT : numberFormat
, REG_DT : datetimeFormat
, MDFCN_DT : datetimeFormat
/**************************************************************************
* DatasetControl
**************************************************************************/
var integralSearchControl = new DatasetControl({
prefix : "integralSearch", prefixName : "통합조회"
, infoSize : "lg"
, appendData : false
, keymapper : info => info ? info.CRDN_ID : ""
, dataGetter : obj => obj.dataList
, urls : {
load : wctx.url("/sprt/sprt01/010/list.do"), // 검색
getInfo : wctx.url("/sprt/sprt02/010/main.do") // 개별총정보
}
, formats : {
LEVY_EXCL_YMD : dateFormat
, CRDN_YMD_TM : datetimeFormat
, CVLCPT_RCPT_YMD : dateFormat
, FFNLG_CRDN_AMT : numberFormat
, FFNLG_AMT : numberFormat
, REG_DT : datetimeFormat
, MDFCN_DT : datetimeFormat
}
});
/**************************************************************************
* DatasetControl 이벤트
**************************************************************************/
// Dataset 변경 이벤트
integralSearchControl.onDatasetChange = obj => {
integralSearch.renderList("up");
integralSearch.renderList("down");
//$("#paging--${pageName}").setPagingInfo({
// list : integralSearchControl.dataset
// , prefix : "paging--${pageName}"
// , start : obj.${infoPrefix}Start
// , totalSize : obj.${infoPrefix}Total
// , fetchSize : obj.${infoPrefix}Fetch
// , func : "integralSearchControl.load({index})"
//});
//보안모드
fn_securityModeToggle($("#securityMode--top").is(":checked"));
};
// 현재 선택 자료 변경 이벤트
integralSearchControl.onCurrentChange = (item) => {
if (!item) return;
var key = item.data.CRDN_ID;
$("#upTbody--${pageName}").setCurrentRow(key);
$("#downTbody--${pageName}").setCurrentRow(key);
};
// 선택(체크) 변경 이벤트
integralSearchControl.onSelectionChange = selected => {
var allList = integralSearchControl.dataset;
var keys = selected.map(e => allList.getKey(e));
$("#upTbody--${pageName},#downTbody--${pageName}").find("input[type='checkbox']").each(function() {
var checkbox = $(this);
checkbox.prop("checked", keys.includes(checkbox.val()));
});
/**************************************************************************
* DatasetControl 이벤트
**************************************************************************/
// Dataset 변경 이벤트
${pageName}Control.onDatasetChange = obj => {
renderList${pageName}();
$("#paging--${pageName}").setPagingInfo({
list : ${pageName}Control.dataset
, prefix : "paging--${pageName}"
, start : obj.${infoPrefix}Start
, totalSize : obj.${infoPrefix}Total
, fetchSize : obj.${infoPrefix}Fetch
, func : "${pageName}Control.load({index})"
});
${pageName}Control.tableRenderComplete = true; // dataTables 에 자료 추가 완료
};
// 현재 선택 자료 변경 이벤트
${pageName}Control.onCurrentChange = item => {
if (!item) return;
let key = item.data.LEVY_EXCL_ID;
$("#tbody--${pageName}").setCurrentRow(key);
};
// 선택(체크) 변경 이벤트
${pageName}Control.onSelectionChange = selected => {
let ${infoPrefix}List = ${pageName}Control.dataset;
let keys = selected.map(e => ${infoPrefix}List.getKey(e));
$("#tbody--${pageName} input[type='checkbox']").each(function() {
let checkbox = $(this);
checkbox.prop("checked", keys.includes(checkbox.val()));
});
$("#btnRemove--${pageName}").prop("disabled", keys.length < 1);
};
// 개별총정보 dialog
${pageName}Control.getInfo = (crdnId) => {
if (crdnId == undefined || crdnId == null || crdnId == "") {
return;
}
};
let params = {
callControlName : "${pageName}Control"
, crdnId : crdnId
}
ajax.get({
url : ${pageName}Control.urls.getInfo
, data : params || {}
, success : resp => {
dialog.open({
id : "totalInfoMainDialog"
, title : "개별총정보"
, content : resp
, size : "xxl"
, init : () => { }
, onClose : () => { }
});
}
});
// 개별총정보 dialog
integralSearchControl.getInfo = (crdnId) => {
if (crdnId == undefined || crdnId == null || crdnId == "") {
return;
}
// 삭제 callback
${pageName}Control.onRemove = (selected, resp) => {
let btnTitle = $("#btnRemove--${pageName}").attr("title");
let showMessage = resp.retMessage.replace(/[S]|[F]/g, btnTitle);
dialog.alert(showMessage);
if (resp.saved) {
${pageName}Control._load();
}
var params = {
callControlName : "integralSearchControl"
, crdnId : crdnId
}
// 삭제
${pageName}Control.remove = (params) => {
let selected = ${pageName}Control.dataset.getKeys("selected");
if (selected.length < 1) return;
if (!params) {
params = {};
params[${pageName}Control.prefixed("IDs")] = selected.join(",");
ajax.get({
url : integralSearchControl.urls.getInfo
, data : params || {}
, success : resp => {
dialog.open({
id : "totalInfoMainDialog"
, title : "개별총정보"
, content : resp
, size : "xxl"
, init : () => { }
, onClose : () => { }
});
}
});
}
ajax.post({
url : ${pageName}Control.urls.remove
, data : params
, success : resp => ${pageName}Control.onRemove(selected, resp)
});
}
/**************************************************************************
*
**************************************************************************/
// DataTables에 click, dbclick 이벤트
renderList${pageName} = () => {
let ${infoPrefix}List = ${pageName}Control.dataset;
let empty = ${infoPrefix}List.empty;
let trs = empty ?
[document.getElementById("${infoPrefix}NotFound--${pageName}").innerHTML] : <%-- from template#${infoPrefix}NotFound --%>
${infoPrefix}List.inStrings(
document.getElementById("${infoPrefix}Row--${pageName}").innerHTML, <%-- from template#${infoPrefix}Row --%>
(str, dataItem) => str
.replace(/{onclick}/gi, "${pageName}Control.setCurrent('" + dataItem.getValue("LEVY_EXCL_ID") + "');")
.replace(/{ondblclick}/gi, "${pageName}Control.getInfo('" + dataItem.getValue("CRDN_ID") + "');")
);
$("#tbody--${pageName}").html(trs.join());
$("th input[type='checkbox']").prop("checked", false);
//보안모드
fn_securityModeToggle($("#securityMode--top").is(":checked"));
}
// 삭제 callback
integralSearchControl.onRemove = (selected, resp) => {
var btnTitle = $("#btnRemove--${pageName}").attr("title");
// 업무구분 변경
fnResetAndChangeBiz${pageName} = (taskSeCd) => {
initForm${pageName}();
var showMessage = resp.retMessage.replace(/[S]|[F]/g, btnTitle);
${pageName}Control.urls.load = wctx.url("/" + taskSeCd + ${pageName}PrefixUrl + "/010/list.do"); // 조회
${pageName}Control.urls.remove = wctx.url("/" + taskSeCd + ${pageName}PrefixUrl + "/010/removes.do"); // 삭제
${pageName}Control.urls.getInfo = wctx.url("/" + taskSeCd + "/sprt/sprt02/010/main.do"); // 개별총정보
dialog.alert(showMessage);
// 업무별 그리드가 존재 한다면.. crdn06010-main.jsp 참고
// $("#DataTables_Table_0--${pageName}").find("th").resizable( "destroy" );
// $("#DataTables_Table_0--${pageName}").find("th").resizable( {handles : "e"} ); // style="width" 변경 조정
if (resp.saved) {
integralSearchControl._load();
}
}
// 검색 조건 파라미터 가져오기
getParams${pageName} = () => {
let formFields = new FimsFormFields("#frmSearch--${pageName}");
let formData = formFields.get();
formData.fetchSize = FETCH_XS; // 한번에 조회되는 자료 건수
// 삭제
integralSearchControl.remove = (params) => {
var selected = integralSearchControl.dataset.getKeys("selected");
// 나중에 삭제
formData.sggCd = "41480"; // 시군구 코드 임시
return formData;
}
if (selected.length < 1) return;
// 수정 dialog -> callback 추가
${pageName}Info = (params) => {
ajax.get({
url : wctx.url("/" + params.taskSeCd + ${pageName}PrefixUrl + "/020/info.do?openerPageName=${pageName}")
, data : params || {}
, success : resp => {
dialog.open({
id : ${pageName}Control.prefixed("Dialog")
, title : ${pageName}Control.prefixName + " 정보"
, content : resp
, size : ${pageName}Control.infoSize
, init : () => { }
, onClose : () => { ${pageName}Control.load(${pageName}Control.query.pageNum); } // callback
});
}
});
if (!params) {
params = {};
params[integralSearchControl.prefixed("IDs")] = selected.join(",");
}
/**************************************************************************
* 초기 셋팅
**************************************************************************/
// 화면 초기값 셋팅
initForm${pageName} = () => {
// 달력 초기화
initDatepicker("frmSearch--${pageName}");
$("#schLevyExclYmdFrom--${pageName}").datepicker("setDate", DateUtil.getDateDay(-30).date);
$("#schLevyExclYmdTo--${pageName}").datepicker("setDate", new Date());
${pageName}Control.dataset.clear();
ajax.post({
url : integralSearchControl.urls.remove
, data : params
, success : resp => integralSearchControl.onRemove(selected, resp)
});
}
/**************************************************************************
*
**************************************************************************/
var integralSearch = {};
integralSearch.renderList = (updown) => {
var tbody = updown == "up" ? "upTbody--${pageName}" : "downTbody--${pageName}";
var trs = "";
var allList = integralSearchControl.dataset;
var empty = allList.empty;
if(allList.empty){
trs = [document.getElementById("notFound--${pageName}").innerHTML];
} else {
var upList = allList.filter(item => item.RCVMT_YN == "N");
var downList = allList.filter(item => item.RCVMT_YN == "Y");
var targetList = updown == "up" ? upList : downList;
if(targetList.lenth < 1){
trs = [document.getElementById("notFound--${pageName}").innerHTML];
} else {
trs = targetList.inStrings(
document.getElementById("row--${pageName}").innerHTML,
(str, dataItem) => str
.replace(/{onclick}/gi, "integralSearchControl.setCurrent('" + dataItem.getValue("CRDN_ID") + "');")
.replace(/{ondblclick}/gi, "integralSearchControl.getInfo('" + dataItem.getValue("CRDN_ID") + "');")
);
}
}
// 이벤트
setEvent${pageName} = () => {
// form-date 항목에서 키보드로 입력시 날짜 포맷팅 적용
$("#frmSearch--${pageName}").find(".form-date").each(function() {
$(this).on("input", function() {
let value = this.value.replaceAll("-", "");
if (value.length > 7) {
this.value = value.substring(0, 4) + "-" + value.substring(4, 6) + "-" + value.substring(6);
} else if(value.length > 5) {
this.value = value.substring(0, 4) + "-" + value.substring(4);
}
$("#"+tbody).html(trs.join());
}
// 검색 조건 파라미터 가져오기
integralSearch.getParams = () => {
var formFields = new FimsFormFields("#frmSearch--${pageName}");
var formData = formFields.get();
formData.fetchSize = FETCH_XS; // 한번에 조회되는 자료 건수
// 나중에 삭제
formData.sggCd = "41480"; // 시군구 코드 임시
return formData;
}
// 수정 dialog -> callback 추가
integralSearch.fnInfo = (params) => {
ajax.get({
url : wctx.url("/sprt/sprt02/010/info.do?openerPageName=${pageName}")
, data : params || {}
, success : resp => {
dialog.open({
id : integralSearchControl.prefixed("Dialog")
, title : integralSearchControl.prefixName + " 정보"
, content : resp
, size : integralSearchControl.infoSize
, init : () => { }
, onClose : () => { integralSearchControl.load(integralSearchControl.query.pageNum); } // callback
});
});
// DataTables width 변경 조정
$("#DataTables_Table_0--${pageName}").find("th").resizable( {handles : "e"} );
// DataTables 스크롤 이벤트
$("#table-responsive--${pageName}").scroll(function() {
let el = $(this);
if (el.scrollTop() == 0) {
return;
}
if (!${pageName}Control.tableRenderComplete) {
return;
}
}
});
}
let itemsCnt = ${pageName}Control.dataset._items.length;
let totCnt = ${pageName}Control.dataset.getValue("TOT_CNT"); // let totCnt = ${pageName}Control.dataset.getCurrent("item").data.TOT_CNT;
/**************************************************************************
* 초기 셋팅
**************************************************************************/
if (itemsCnt >= totCnt) {
return;
}
if ((el[0].scrollHeight - el.scrollTop() + VERTICAL_SCROLL_HEIGHT) <= el.outerHeight()) {
${pageName}Control.tableRenderComplete = false; // dataTables 에 자료 추가 완료
// 이벤트
integralSearch.setEvent = () => {
// form-date 항목에서 키보드로 입력시 날짜 포맷팅 적용
$("#frmSearch--${pageName}").find(".form-date").each(function() {
$(this).on("input", function() {
var value = this.value.replaceAll("-", "");
${pageName}Control.load(${pageName}Control.query.pageNum + 1);
if (value.length > 7) {
this.value = value.substring(0, 4) + "-" + value.substring(4, 6) + "-" + value.substring(6);
} else if(value.length > 5) {
this.value = value.substring(0, 4) + "-" + value.substring(4);
}
});
}
/**************************************************************************
* 버튼 clickEvent
**************************************************************************/
// 초기화
fnReset${pageName} = () => {
let taskSeCd = $("#layout-navbar input[name='taskSeCd']:checked").val();
});
});
fnResetAndChangeBiz${pageName}(taskSeCd);
}
// DataTables width 변경 조정
$("#upTable--${pageName}").find("th").resizable( {handles : "e"} );
$("#downTable--${pageName}").find("th").resizable( {handles : "e"} );
}
// 검색
fnSearchList${pageName} = () => {
// 검색조건
${pageName}Control.query = getParams${pageName}();
${pageName}Control.query.delYn = "N"; // 삭제 여부
${pageName}Control.query.crdnDelYn = "N"; // 단속 대장 삭제 여부
/**************************************************************************
* 버튼 clickEvent
**************************************************************************/
// 초기화
integralSearch.fnReset = () => {
// 달력 초기화
initDatepicker("frmSearch--${pageName}");
${pageName}Control.load();
}
integralSearchControl.dataset.clear();
}
// 엑셀
fnExcel${pageName} = () => {
}
// 검색
integralSearch.fnSearchList = () => {
// 검색조건
integralSearchControl.query = integralSearch.getParams();
integralSearchControl.query.delYn = "N"; // 삭제 여부
integralSearchControl.query.crdnDelYn = "N"; // 단속 대장 삭제 여부
// 수정
fnUpdate${pageName} = () => {
let levyExclId = ${pageName}Control.dataset.getValue("LEVY_EXCL_ID");
let levyExclSeCd = ${pageName}Control.dataset.getValue("LEVY_EXCL_SE_CD");
integralSearchControl.load();
}
// 부과제외ID 가 없다면.. return
if (levyExclId == undefined || levyExclId == "") {
return;
}
// 엑셀
integralSearch.fnExcel = () => {
let params = {
callPurpose : "update"
, sggCd : ${pageName}Control.dataset.getValue("SGG_CD") // 시군구 코드
, taskSeCd : ${pageName}Control.dataset.getValue("TASK_SE_CD") // 업무 구분 코드
, levyExclId : levyExclId
};
}
${pageName}Info(params);
}
// 수정
integralSearch.fnUpdate = () => {
// 삭제
fnRemove${pageName} = () => {
dialog.alert({
content : "선택한 부과제외 정보를 삭제하시겠습니까?"
, onOK : () => {
${pageName}Control.remove();
}
});
}
var params = {
callPurpose : "update"
, sggCd : integralSearchControl.dataset.getValue("SGG_CD") // 시군구 코드
, taskSeCd : integralSearchControl.dataset.getValue("TASK_SE_CD") // 업무 구분 코드
, crdnId : integralSearchControl.dataset.getValue("CRDN_ID")
};
/**************************************************************************
* script 진입
**************************************************************************/
$(document).ready(function() {
// 이벤트 설정
setEvent${pageName}();
integralSearch.fnInfo(params);
}
// 보안모드
fn_securityModeToggle($("#securityMode--top").is(":checked"));
/**************************************************************************
* script 진입
**************************************************************************/
$(document).ready(function() {
$("#upTheadTr--${pageName}").html(document.getElementById("cols--${pageName}").innerHTML);
$("#downTheadTr--${pageName}").html(document.getElementById("cols--${pageName}").innerHTML);
// 이벤트 설정
integralSearch.setEvent();
// 업무구분 및 화면 초기 설정
let defaultBizValue = $("#layout-navbar input[name='taskSeCd']:checked").val();
$("#frmSearch--${pageName} input[name='taskSeCd'][value='" + defaultBizValue + "']").prop("checked", true);
// 보안모드
fn_securityModeToggle($("#securityMode--top").is(":checked"));
fnResetAndChangeBiz${pageName}(defaultBizValue);
});
integralSearch.fnReset();
});
</script>

@ -0,0 +1,225 @@
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" isELIgnored="false" session="false"%>
<%@ include file="/WEB-INF/jsp/include/taglib.jsp"%>
<c:set var="prefixName" scope="request">통합조회 조회조건</c:set>
<span class="mb-1">
<!-- 상단 버튼 -->
<div class="container-page-btn">
<button type="button" id="btnReset--${pageName}" class="btn btn-outline-dark"
title="초기화" onclick="integralSearch.fnReset();">
초기화
</button>
<span class="container-window-btn-right">
<button type="button" id="" class="btn btn-search w-px-120"
title="내역서인쇄" onclick="">
내역서인쇄
</button>
<button type="button" id="" class="btn btn-search w-px-120"
title="고지서인쇄" onclick="">
고지서인쇄
</button>
<button type="button" id="" class="btn btn-search w-px-120"
title="대납등록" onclick="">
대납등록
</button>
<button type="button" id="" class="btn btn-search w-px-120"
title="압류(해제)조서" onclick="">
압류(해제)조서
</button>
<button type="button" id="" class="btn btn-search w-px-120"
title="교부청구서출력" onclick="">
교부청구서출력
</button>
<button type="button" id="" class="btn btn-search w-px-120"
title="온라인입금관리수정" onclick="">
온라인입금관리수정
</button>
<button type="button" id="" class="btn btn-search w-px-120"
title="온라인입금관리대장" onclick="">
온라인입금관리대장
</button>
<button type="button" id="btnSearch--${pageName}" class="btn btn-search w-px-120"
title="검색" onclick="integralSearch.fnSearchList();">
검색
</button>
</span>
</div>
<!-- / 상단 버튼 -->
<!-- 검색 조건 영역 -->
<form id="frmSearch--${pageName}" name="frmSearch">
<!-- 메인 조건 -->
<div class="container-search">
<div class="row g-1">
<!-- 업무구분 -->
<div class="col-12">
<label class="form-label fw-bold form-search-title text-end">업무구분</label>
<span class="form-search-linebox">
<label>
<input type="radio" class="form-check-input" name="taskSeCd" alt="업무구분"
value="" onchange="integralSearch.fnReset();" checked="checked">
전체
</label>
<c:forEach items="${FIM054List}" var="item">
<label>
<input type="radio" class="form-check-input" name="taskSeCd" alt="업무구분"
value="${item.code}" onchange="integralSearch.fnReset();">
${item.value}
</label>
</c:forEach>
</span>
</div>
<!-- 차량번호 -->
<div class="col-6">
<label class="form-label fw-bold form-search-title text-end">차량번호</label>
<input type="text" id="vhrno--${pageName}" name="vhrno" class="form-control w-px-150" />
</div>
<!-- 대체차량번호 -->
<div class="col-6">
<label class="form-label fw-bold form-search-title text-end">대체차량번호</label>
<input type="text" id="rpmSzrVhrno--${pageName}" name="rpmSzrVhrno" class="form-control w-px-150" />
</div>
<!-- 납부자명 -->
<div class="col-6">
<label class="form-label fw-bold form-search-title text-end">납부자명</label>
<input type="text" id="rtpyrNm--${pageName}" name="rtpyrNm" class="form-control w-px-150" />
</div>
<!-- 납부자번호 -->
<div class="col-6">
<label class="form-label fw-bold form-search-title text-end">납부자번호</label>
<input type="text" id="rtpyrNo--${pageName}" name="rtpyrNo" class="form-control w-px-150" />
</div>
<!-- 민원신청인명 -->
<div class="col-6">
<label class="form-label fw-bold form-search-title text-end">민원신청인명</label>
<input type="text" id="cvlcptAplcntNm--${pageName}" name="cvlcptAplcntNm" class="form-control w-px-150" />
</div>
<!-- 동적검색 -->
<div class="col-6">
<input type="hidden" id="by--${pageName}" name="by" />
<input type="text" id="byOutput--${pageName}" class="form-control" value="동적 검색" readonly />
<input type="hidden" id="mainOption--${pageName}" name="mainOption" />
<input type="hidden" id="subOption--${pageName}" name="subOption" />
<input type="text" id="term--${pageName}" name="term" class="form-control w-px-300" />
<!-- 상세 검색조건 버튼 -->
<span class="flr">
<button type="button" class="btn btn-open-detail"
data-bs-toggle="collapse" data-bs-target="#searchDetail--${pageName}">
<i class="bx bx-chevron-down"></i>
상세검색
</button>
</span>
</div>
</div>
</div> <!-- / 메인 조건 -->
<!-- 상세 조건 -->
<div id="searchDetail--${pageName}" class="container-search container-search-detail collapse">
<div class="row g-1">
<!-- 단속일자 -->
<div class="col-6">
<label class="form-label fw-bold form-search-title text-end">단속일자</label>
<span class="form-search-linebox">
<input type="text" id="schCrdnYmdFrom--${pageName}" name="schCrdnYmdFrom"
class="form-control form-date" data-fmt-type="day" title="시작 날짜 선택" />
<button type="button" class="bx bx-sm bx-calendar bg-white"></button>
~
<input type="text" id="schCrdnYmdTo--${pageName}" name="schCrdnYmdTo"
class="form-control form-date" data-fmt-type="day" title="종료 날짜 선택" />
<button type="button" class="bx bx-sm bx-calendar bg-white"></button>
</span>
</div>
<!-- 단속시간 -->
<div class="col-6">
<label class="form-label fw-bold form-search-title">단속시간</label>
<input type="text" name="schCrdnTmFrom" class="form-control form-time"
data-fmt-type="time" maxlength="8" />
~ <input type="text" name="schCrdnTmTo" class="form-control form-time"
data-fmt-type="time" maxlength="8" />
</div>
<!-- 납부자주소 -->
<div class="col-6">
<label class="form-label fw-bold form-search-title text-end">납부자주소</label>
<input type="text" id="rtpyrAddr--${pageName}" name="rtpyrAddr" class="form-control w-px-150" />
</div>
<!-- 납부자상세주소 -->
<div class="col-6">
<label class="form-label fw-bold form-search-title text-end">납부자상세주소</label>
<input type="text" id="rtpyrDtlAddr--${pageName}" name="rtpyrDtlAddr" class="form-control w-px-150" />
</div>
<!-- 고지번호 -->
<div class="col-6">
<label class="form-label fw-bold form-search-title text-end">고지번호</label>
<input type="text" id="gojiNo--${pageName}" name="gojiNo" class="form-control w-px-150" />
</div>
<!-- 전자납부번호 -->
<div class="col-6">
<label class="form-label fw-bold form-search-title text-end">전자납부번호</label>
<input type="text" id="epayno--${pageName}" name="epayno" class="form-control w-px-150" />
</div>
<!-- 위반내용 -->
<div class="col-6">
<label class="form-label fw-bold form-search-title text-end">위반내용</label>
<select id="vltnCd--${pageName}" name="vltnCd" class="form-select">
<c:forEach items="${VLTNList}" var="item">
<option value="${item.code}">${item.value}</option>
</c:forEach>
</select>
</div>
<!-- 처리상태 -->
<div class="col-6">
<label class="form-label fw-bold form-search-title text-end">처리상태</label>
<select id="crdnSttsCd--${pageName}" name="crdnSttsCd" class="form-select">
<option value="">전체</option>
<c:forEach items="${FIM010List}" var="item">
<option value="${item.code}">${item.value}</option>
</c:forEach>
</select>
</div>
<!-- 단속등록구분 -->
<div class="col-6">
<label class="form-label fw-bold form-search-title text-end">단속등록구분</label>
<select id="crdnRegSeCd--${pageName}" name="crdnRegSeCd" class="form-select">
<option value="">전체</option>
<c:forEach items="${FIM026List}" var="item">
<option value="${item.code}">${item.value}</option>
</c:forEach>
</select>
</div>
<!-- 단속입력구분 -->
<div class="col-6">
<label class="form-label fw-bold form-search-title text-end">단속입력구분</label>
<select id="crdnInptSeCd--${pageName}" name="crdnInptSeCd" class="form-select">
<option value="">전체</option>
<c:forEach items="${FIM003List}" var="item">
<option value="${item.code}">${item.value}</option>
</c:forEach>
</select>
</div>
<!-- 단속법정동 -->
<div class="col-6">
<label class="form-label fw-bold form-search-title text-end">단속법정동</label>
<input type="text" id="crdnStdgNm--${pageName}" name="crdnStdgNm" class="form-control w-px-150" />
</div>
<!-- 위반장소 -->
<div class="col-6">
<label class="form-label fw-bold form-search-title text-end">위반장소</label>
<input type="text" id="crdnPlc--${pageName}" name="crdnPlc" class="form-control w-px-150" />
</div>
<!-- 신고자전화번호 -->
<div class="col-6">
<label class="form-label fw-bold form-search-title text-end">신고자전화번호</label>
<input type="text" id="celNoV--${pageName}" name="celNoV" class="form-control w-px-150" />
</div>
<!-- 민원목록번호 -->
<div class="col-6">
<label class="form-label fw-bold form-search-title text-end">민원목록번호</label>
<input type="text" id="cvlcptListNo--${pageName}" name="cvlcptListNo" class="form-control w-px-150" />
</div>
</div>
</div>
<!-- / 상세 조건 -->
</form>
</span>

@ -0,0 +1,148 @@
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" isELIgnored="false" session="false"%>
<%@ include file="/WEB-INF/jsp/include/taglib.jsp"%>
<c:set var="prefixName" scope="request">통합조회 상단그리드</c:set>
<span class="my-1">
<!-- 건수 표시 -->
<div>
<span class="h4 fw-bold">미납자료</span>
<label class="bg-lighter px-2 col-form-label text-sm-end">
미납건수
</label>
<input type="text" class="form-control w-px-100" readonly />
<label class="bg-lighter px-2 col-form-label text-sm-end">
전체미납건수
</label>
<input type="text" class="form-control w-px-100" readonly />
<label class="bg-lighter px-2 col-form-label text-sm-end">
미납액
</label>
<input type="text" class="form-control w-px-100" readonly />
<label class="bg-lighter px-2 col-form-label text-sm-end">
전체미납액
</label>
<input type="text" class="form-control w-px-100" readonly />
</div>
<!-- 업무 버튼 -->
<div>
<span class="container-page-btn">
<span class="container-window-btn-right">
<!-- 업무 버튼 -->
<button type="button" id="" class="btn btn-primary"
title="특기사항관리" onclick="">
특기사항관리
</button>
<button type="button" id="" class="btn btn-primary"
title="가상계좌개별생성" onclick="">
가상계좌개별생성
</button>
<button type="button" id="" class="btn btn-primary"
title="주민번호복사" onclick="">
주민번호복사
</button>
<button type="button" id="" class="btn btn-primary"
title="압류상태로변경" onclick="">
압류상태로변경
</button>
<button type="button" id="" class="btn btn-primary"
title="위택스자료전송" onclick="">
위택스자료전송
</button>
<button type="button" id="" class="btn btn-primary"
title="특기사항입력-일괄" onclick="">
특기사항입력-일괄
</button>
<button type="button" id="" class="btn btn-primary"
title="대체압류변경-일괄" onclick="">
대체압류변경-일괄
</button>
<button type="button" id="" class="btn btn-primary"
title="압류취소-일괄" onclick="">
압류취소-일괄
</button>
<button type="button" id="" class="btn btn-primary"
title="압류예정일자-일괄" onclick="">
압류예정일자-일괄
</button>
<button type="button" id="btnExcel--${pageName}" class="btn btn-excel"
title="엑셀 저장" onclick="integralSearch.fnExcel();">
엑셀
</button>
<button type="button" id="" class="btn btn-primary"
title="사전통지서출력" onclick="">
사전통지서출력
</button>
</span>
</span>
</div>
<!-- / 업무 버튼 및 건수 표시 -->
<!-- 탭 -->
<div class="nav-align-top mb-1">
<ul class="nav nav-tabs" role="tablist">
<li class="nav-item">
<button type="button" class="nav-link active w-px-120" role="tab" data-bs-toggle="tab">
전체
</button>
</li>
<li class="nav-item">
<button type="button" class="nav-link w-px-120" role="tab" data-bs-toggle="tab">
단속
</button>
</li>
<li class="nav-item">
<button type="button" class="nav-link w-px-120" role="tab" data-bs-toggle="tab">
의견진술접수
</button>
</li>
<li class="nav-item">
<button type="button" class="nav-link w-px-120" role="tab" data-bs-toggle="tab">
자납부과
</button>
</li>
<li class="nav-item">
<button type="button" class="nav-link w-px-120" role="tab" data-bs-toggle="tab">
부과
</button>
</li>
<li class="nav-item">
<button type="button" class="nav-link w-px-120" role="tab" data-bs-toggle="tab">
독촉
</button>
</li>
<li class="nav-item">
<button type="button" class="nav-link w-px-120" role="tab" data-bs-toggle="tab">
압류예정
</button>
</li>
<li class="nav-item">
<button type="button" class="nav-link w-px-120" role="tab" data-bs-toggle="tab">
압류
</button>
</li>
</ul>
</div>
<!-- DataTables(그리드) -->
<div class="card-datatable text-nowrap">
<div class="dataTables_wrapper dt-bootstrap5 no-footer">
<div class="table-responsive"
style="overflow-x:scroll; height:300px; overflow-y:scroll;" >
<table class="table-layout-fixed dataTable datatables-ajax table table-bordered no-footer"
id="upTable--${pageName}" aria-describedby="DataTables_Table_0_info">
<thead class="sticky-thead">
<tr id="upTheadTr--${pageName}"
data-by="by--${pageName}" data-by-output="byOutput--${pageName}"
data-main-option="mainOption--${pageName}" data-sub-option="subOption--${pageName}">
</tr>
</thead>
<tbody id="upTbody--${pageName}">
</tbody>
</table>
</div>
</div>
</div>
<!-- / DataTables(그리드) -->
</span>

@ -0,0 +1,140 @@
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" isELIgnored="false" session="false"%>
<%@ include file="/WEB-INF/jsp/include/taglib.jsp"%>
<c:set var="prefixName" scope="request">통합조회 하단그리드</c:set>
<span class="my-1">
<!-- 건수 표시 -->
<div>
<span class="h4 fw-bold">수납,기타</span>
<label class="bg-lighter px-2 col-form-label text-sm-end">
결손건수
</label>
<input type="text" class="form-control w-px-100" readonly />
<label class="bg-lighter px-2 col-form-label text-sm-end">
결손금액
</label>
<input type="text" class="form-control w-px-100" readonly />
<label class="bg-lighter px-2 col-form-label text-sm-end">
수납건수
</label>
<input type="text" class="form-control w-px-100" readonly />
<label class="bg-lighter px-2 col-form-label text-sm-end">
총수납건수
</label>
<input type="text" class="form-control w-px-100" readonly />
<label class="bg-lighter px-2 col-form-label text-sm-end">
수납액
</label>
<input type="text" class="form-control w-px-100" readonly />
<label class="bg-lighter px-2 col-form-label text-sm-end">
총수납액
</label>
<input type="text" class="form-control w-px-100" readonly />
</div>
<!-- 업무 버튼 -->
<div>
<span class="container-page-btn">
<span class="container-window-btn-right">
<!-- 업무 버튼 -->
<button type="button" id="" class="btn btn-primary"
title="특기사항관리" onclick="">
특기사항관리
</button>
<button type="button" id="" class="btn btn-primary"
title="주민번호복사" onclick="">
주민번호복사
</button>
<button type="button" id="" class="btn btn-primary"
title="압류상태로변경" onclick="">
압류상태로변경
</button>
<button type="button" id="" class="btn btn-primary"
title="위택스전송_대납" onclick="">
위택스전송_대납
</button>
<button type="button" id="" class="btn btn-primary"
title="특기사항입력-일괄" onclick="">
특기사항입력-일괄
</button>
<button type="button" id="" class="btn btn-primary"
title="대체압류변경-일괄" onclick="">
대체압류변경-일괄
</button>
<button type="button" id="" class="btn btn-primary"
title="결손취소-일괄" onclick="">
결손취소-일괄
</button>
<button type="button" id="btnExcel--${pageName}" class="btn btn-excel"
title="엑셀 저장" onclick="integralSearch.fnExcel();">
엑셀
</button>
<button type="button" id="" class="btn btn-primary"
title="대납고지서출력" onclick="">
대납고지서출력
</button>
<button type="button" id="" class="btn btn-primary"
title="납부확인서출력" onclick="">
납부확인서출력
</button>
</span>
</span>
</div>
<!-- 탭 -->
<div class="nav-align-top mb-1">
<ul class="nav nav-tabs" role="tablist">
<li class="nav-item">
<button type="button" class="nav-link active w-px-120" role="tab" data-bs-toggle="tab">
전체
</button>
</li>
<li class="nav-item">
<button type="button" class="nav-link w-px-120" role="tab" data-bs-toggle="tab">
대납
</button>
</li>
<li class="nav-item">
<button type="button" class="nav-link w-px-120" role="tab" data-bs-toggle="tab">
수납
</button>
</li>
<li class="nav-item">
<button type="button" class="nav-link w-px-120" role="tab" data-bs-toggle="tab">
결손
</button>
</li>
<li class="nav-item">
<button type="button" class="nav-link w-px-120" role="tab" data-bs-toggle="tab">
법원이송
</button>
</li>
<li class="nav-item">
<button type="button" class="nav-link w-px-120" role="tab" data-bs-toggle="tab">
기타
</button>
</li>
</ul>
</div>
<!-- DataTables(그리드) -->
<div class="card-datatable text-nowrap">
<div class="dataTables_wrapper dt-bootstrap5 no-footer">
<div class="table-responsive"
style="overflow-x:scroll; height:300px; overflow-y:scroll;" >
<table class="table-layout-fixed dataTable datatables-ajax table table-bordered no-footer"
id="downTable--${pageName}" aria-describedby="DataTables_Table_0_info">
<thead class="sticky-thead">
<tr id="downTheadTr--${pageName}"
data-by="by--${pageName}" data-by-output="byOutput--${pageName}"
data-main-option="mainOption--${pageName}" data-sub-option="subOption--${pageName}">
</tr>
</thead>
<tbody id="downTbody--${pageName}">
</tbody>
</table>
</div>
</div>
</div>
<!-- / DataTables(그리드) -->
</span>

@ -0,0 +1,293 @@
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" isELIgnored="false" session="false"%>
<%@ include file="/WEB-INF/jsp/include/taglib.jsp"%>
<c:set var="prefixName" scope="request">통합조회 그리드 템플릿</c:set>
<template id="cols--${pageName}">
<th class="cmn" style="width: 72px;">NO.</th>
<th class="cmn" style="width: 56px;">
<input type="checkbox" class="form-check-input" onchange="integralSearchControl.select(this.checked);">
</th>
<th class="cmn" style="width: 140px;"
onclick="searchFromGridTitle('SGG_CD', this.innerText, '', '');"
>시군구명
</th>
<th class="cmn" style="width: 140px;"
onclick="searchFromGridTitle('', this.innerText, '', '');"
>과태료명
</th>
<th class="cmn" style="width: 200px;"
onclick="searchFromGridTitle('', this.innerText, '', '');"
>단속입력구분
</th>
<th class="cmn" style="width: 280px;"
onclick="searchFromGridTitle('', this.innerText, '', '');"
>단속일시
</th>
<th class="cmn" style="width: 180px;"
onclick="searchFromGridTitle('', this.innerText, '', '');"
>신고자명
</th>
<th class="cmn" style="width: 140px;"
onclick="searchFromGridTitle('', this.innerText, '', '');"
>민원접수번호
</th>
<th class="cmn" style="width: 180px;"
onclick="searchFromGridTitle('', this.innerText, '', '');"
>민원접수일자
</th>
<th class="cmn" style="width: 140px;"
onclick="searchFromGridTitle('', this.innerText, '', '');"
>민원목록번호
</th>
<th class="cmn" style="width: 160px;"
onclick="searchFromGridTitle('', this.innerText, '', '');"
>차량번호
</th>
<th class="cmn" style="width: 280px;"
onclick="searchFromGridTitle('', this.innerText, '', '');"
>대체차량번호
</th>
<th class="cmn" style="width: 120px;"
onclick="searchFromGridTitle('', this.innerText, '', '');"
>잔액
</th>
<th class="cmn" style="width: 160px;"
onclick="searchFromGridTitle('', this.innerText, '', '');"
>사진건수
</th>
<th class="cmn" style="width: 200px;"
onclick="searchFromGridTitle('', this.innerText, '', '');"
>차량확인코드
</th>
<th class="cmn" style="width: 120px;"
onclick="searchFromGridTitle('', this.innerText, '', '');"
>납부자명
</th>
<th class="cmn" style="width: 120px;"
onclick="searchFromGridTitle('', this.innerText, '', '');"
>납부자번호
</th>
<th class="cmn" style="width: 120px;"
onclick="searchFromGridTitle('', this.innerText, '', '');"
>처리상태
</th>
<th class="cmn" style="width: 120px;"
onclick="searchFromGridTitle('', this.innerText, '', '');"
>제외사유
</th>
<th class="cmn" style="width: 120px;"
onclick="searchFromGridTitle('', this.innerText, '', '');"
>제외일자
</th>
<th class="cmn" style="width: 120px;"
onclick="searchFromGridTitle('', this.innerText, '', '');"
>기타사항
</th>
<th class="cmn" style="width: 120px;"
onclick="searchFromGridTitle('', this.innerText, '', '');"
>고지번호
</th>
<th class="cmn" style="width: 120px;"
onclick="searchFromGridTitle('', this.innerText, '', '');"
>처리일자
</th>
<th class="cmn" style="width: 120px;"
onclick="searchFromGridTitle('', this.innerText, '', '');"
>단속장소
</th>
<th class="cmn" style="width: 120px;"
onclick="searchFromGridTitle('', this.innerText, '', '');"
>단속구분
</th>
<th class="cmn" style="width: 120px;"
onclick="searchFromGridTitle('', this.innerText, '', '');"
>의견진술여부
</th>
<th class="cmn" style="width: 120px;"
onclick="searchFromGridTitle('', this.innerText, '', '');"
>의견진술기한
</th>
<th class="cmn" style="width: 120px;"
onclick="searchFromGridTitle('', this.innerText, '', '');"
>견인여부
</th>
<th class="cmn" style="width: 120px;"
onclick="searchFromGridTitle('', this.innerText, '', '');"
>이의신청여부
</th>
<th class="cmn" style="width: 120px;"
onclick="searchFromGridTitle('', this.innerText, '', '');"
>압류예정일자
</th>
<th class="cmn" style="width: 120px;"
onclick="searchFromGridTitle('', this.innerText, '', '');"
>압류일자
</th>
<th class="cmn" style="width: 120px;"
onclick="searchFromGridTitle('', this.innerText, '', '');"
>잔액
</th>
<th class="cmn" style="width: 120px;"
onclick="searchFromGridTitle('', this.innerText, '', '');"
>본세
</th>
<th class="cmn" style="width: 120px;"
onclick="searchFromGridTitle('', this.innerText, '', '');"
>가산금
</th>
<th class="cmn" style="width: 120px;"
onclick="searchFromGridTitle('', this.innerText, '', '');"
>중가산금
</th>
<th class="cmn" style="width: 120px;"
onclick="searchFromGridTitle('', this.innerText, '', '');"
>납부기한
</th>
<th class="cmn" style="width: 120px;"
onclick="searchFromGridTitle('', this.innerText, '', '');"
>납기후일자
</th>
<th class="cmn" style="width: 120px;"
onclick="searchFromGridTitle('', this.innerText, '', '');"
>납기후금액
</th>
<th class="cmn" style="width: 120px;"
onclick="searchFromGridTitle('', this.innerText, '', '');"
>가상계좌번호
</th>
<th class="cmn" style="width: 120px;"
onclick="searchFromGridTitle('', this.innerText, '', '');"
>전자납부번호
</th>
<th class="cmn" style="width: 120px;"
onclick="searchFromGridTitle('', this.innerText, '', '');"
>재부과여부
</th>
<th class="cmn" style="width: 120px;"
onclick="searchFromGridTitle('', this.innerText, '', '');"
>납부자주소
</th>
<th class="cmn" style="width: 120px;"
onclick="searchFromGridTitle('', this.innerText, '', '');"
>거주상태
</th>
<th class="cmn" style="width: 120px;"
onclick="searchFromGridTitle('', this.innerText, '', '');"
>이전고지정보
</th>
<th class="cmn" style="width: 120px;"
onclick="searchFromGridTitle('', this.innerText, '', '');"
>과세키
</th>
<th class="cmn" style="width: 120px;"
onclick="searchFromGridTitle('', this.innerText, '', '');"
>이전시군구
</th>
<th class="cmn dummy-th"></th>
</template>
<template id="row--${pageName}">
<tr data-key="{CRDN_ID}">
<td class="cmn text-center" onclick="{onclick}" ondblclick="{ondblclick}">{ROW_NUM}</td>
<td class="cmn text-center">
<input type="checkbox" class="form-check-input" value="{CRDN_ID}"
onchange="integralSearchControl.select('{CRDN_ID}', this.checked);">
</td>
<td class="cmn text-center" onclick="{onclick}" ondblclick="{ondblclick}"
>{}</td>
<td class="cmn text-center" onclick="{onclick}" ondblclick="{ondblclick}"
>{}</td>
<td class="cmn text-center" onclick="{onclick}" ondblclick="{ondblclick}"
>{}</td>
<td class="cmn text-start" onclick="{onclick}" ondblclick="{ondblclick}"
>{}</td>
<td class="cmn text-center" onclick="{onclick}" ondblclick="{ondblclick}"
>{}</td>
<td class="cmn text-center" onclick="{onclick}" ondblclick="{ondblclick}"
>{}</td>
<td class="cmn text-center" onclick="{onclick}" ondblclick="{ondblclick}"
>{}</td>
<td class="cmn text-start" onclick="{onclick}" ondblclick="{ondblclick}"
>{}</td>
<td class="cmn text-start" onclick="{onclick}" ondblclick="{ondblclick}"
>{}</td>
<td class="cmn text-start" onclick="{onclick}" ondblclick="{ondblclick}"
>{}</td>
<td class="cmn text-end" onclick="{onclick}" ondblclick="{ondblclick}"
>{}</td>
<td class="cmn text-center" onclick="{onclick}" ondblclick="{ondblclick}"
>{}</td>
<td class="cmn text-start" onclick="{onclick}" ondblclick="{ondblclick}"
>{}</td>
<td class="cmn text-center" onclick="{onclick}" ondblclick="{ondblclick}"
>{}</td>
<td class="cmn text-center" onclick="{onclick}" ondblclick="{ondblclick}"
>{}</td>
<td class="cmn text-center" onclick="{onclick}" ondblclick="{ondblclick}"
>{}</td>
<td class="cmn text-center" onclick="{onclick}" ondblclick="{ondblclick}"
>{}</td>
<td class="cmn text-center" onclick="{onclick}" ondblclick="{ondblclick}"
>{}</td>
<td class="cmn text-center" onclick="{onclick}" ondblclick="{ondblclick}"
>{}</td>
<td class="cmn text-center" onclick="{onclick}" ondblclick="{ondblclick}"
>{}</td>
<td class="cmn text-center" onclick="{onclick}" ondblclick="{ondblclick}"
>{}</td>
<td class="cmn text-center" onclick="{onclick}" ondblclick="{ondblclick}"
>{}</td>
<td class="cmn text-center" onclick="{onclick}" ondblclick="{ondblclick}"
>{}</td>
<td class="cmn text-start" onclick="{onclick}" ondblclick="{ondblclick}"
>{}</td>
<td class="cmn text-center" onclick="{onclick}" ondblclick="{ondblclick}"
>{}</td>
<td class="cmn text-center" onclick="{onclick}" ondblclick="{ondblclick}"
>{}</td>
<td class="cmn text-center" onclick="{onclick}" ondblclick="{ondblclick}"
>{}</td>
<td class="cmn text-start" onclick="{onclick}" ondblclick="{ondblclick}"
>{}</td>
<td class="cmn text-start" onclick="{onclick}" ondblclick="{ondblclick}"
>{}</td>
<td class="cmn text-start" onclick="{onclick}" ondblclick="{ondblclick}"
>{}</td>
<td class="cmn text-end" onclick="{onclick}" ondblclick="{ondblclick}"
>{}</td>
<td class="cmn text-center" onclick="{onclick}" ondblclick="{ondblclick}"
>{}</td>
<td class="cmn text-start" onclick="{onclick}" ondblclick="{ondblclick}"
>{}</td>
<td class="cmn text-center" onclick="{onclick}" ondblclick="{ondblclick}"
>{}</td>
<td class="cmn text-center" onclick="{onclick}" ondblclick="{ondblclick}"
>{}</td>
<td class="cmn text-center" onclick="{onclick}" ondblclick="{ondblclick}"
>{}</td>
<td class="cmn text-center" onclick="{onclick}" ondblclick="{ondblclick}"
>{}</td>
<td class="cmn text-center" onclick="{onclick}" ondblclick="{ondblclick}"
>{}</td>
<td class="cmn text-center" onclick="{onclick}" ondblclick="{ondblclick}"
>{}</td>
<td class="cmn text-center" onclick="{onclick}" ondblclick="{ondblclick}"
>{}</td>
<td class="cmn text-center" onclick="{onclick}" ondblclick="{ondblclick}"
>{}</td>
<td class="cmn text-center" onclick="{onclick}" ondblclick="{ondblclick}"
>{}</td>
<td class="cmn text-center" onclick="{onclick}" ondblclick="{ondblclick}"
>{}</td>
<td class="cmn text-center" onclick="{onclick}" ondblclick="{ondblclick}"
>{}</td>
<td class="cmn dummy-td"></td>
</tr>
</template>
<template id="notFound--${pageName}">
<tr class="odd">
<td valign="top" colspan="47" class="dataTables_empty text-center">${prefixName} 정보를 찾지 못했습니다.</td>
</tr>
</template>
Loading…
Cancel
Save