diff --git a/src/main/webapp/WEB-INF/jsp/fims/rent/rent02010-main.jsp b/src/main/webapp/WEB-INF/jsp/fims/rent/rent02010-main.jsp
index 176aab7c..7cb8381b 100644
--- a/src/main/webapp/WEB-INF/jsp/fims/rent/rent02010-main.jsp
+++ b/src/main/webapp/WEB-INF/jsp/fims/rent/rent02010-main.jsp
@@ -389,6 +389,7 @@
// 검색 조건
$P.ctrl.query = new FimsFormFields($P.selectorn("frmSearch")).get(); // 검색 조건
$P.ctrl.query.fetchSize = DEFAULT_FETCH_SIZE; // 한번에 조회되는 자료 건수
+ $P.ctrl.query.ffnlgSysInqYn = "Y"; // 과태료 시스템 조회 여부
$P.ctrl.query.delYn = "N"; // 삭제 여부
// 날짜 차이 계산
diff --git a/src/main/webapp/WEB-INF/jsp/fims/rent/rent03010-main.jsp b/src/main/webapp/WEB-INF/jsp/fims/rent/rent03010-main.jsp
new file mode 100644
index 00000000..8ac62996
--- /dev/null
+++ b/src/main/webapp/WEB-INF/jsp/fims/rent/rent03010-main.jsp
@@ -0,0 +1,344 @@
+<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" isELIgnored="false" session="false"%>
+<%@ include file="/WEB-INF/jsp/include/taglib.jsp"%>
+
+단속조회 및 납부안내
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/main/webapp/WEB-INF/jsp/fims/rent/rent03020-info.jsp b/src/main/webapp/WEB-INF/jsp/fims/rent/rent03020-info.jsp
new file mode 100644
index 00000000..6e8bd2e8
--- /dev/null
+++ b/src/main/webapp/WEB-INF/jsp/fims/rent/rent03020-info.jsp
@@ -0,0 +1,449 @@
+<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" isELIgnored="false" session="false"%>
+<%@ include file="/WEB-INF/jsp/include/taglib.jsp"%>
+
+단속조회 및 납부안내 상세 정보
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ No. |
+ 파일번호 |
+ 파일이름 |
+ 파일크기 |
+ 다운로드 |
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/main/webapp/resources/js/fims/rent/rent03010.js b/src/main/webapp/resources/js/fims/rent/rent03010.js
new file mode 100644
index 00000000..0765b1c4
--- /dev/null
+++ b/src/main/webapp/resources/js/fims/rent/rent03010.js
@@ -0,0 +1,113 @@
+function newRent03010Control(pageName, doctx="[data-doctx='rent03010']") {
+ let ctrl = new DatasetControl({
+ doctx: doctx
+ , prefix: "crdn"
+ , prefixName: "단속"
+ , dataGetter: obj => obj["List"]
+ , keys: ["CRDN_ID"]
+ , appendData: true
+ , infoSize: "xl"
+ , urls: {
+ load: "/list.do"
+ , getInfo: "/info.do"
+ , create: "/create.do"
+ , update: "/update.do"
+ , remove: "/remove.do"
+ }
+ , formats: {
+ CHG_DMND_DT: datetimeFormat
+ , CHG_APRV_DT: datetimeFormat
+ , CRDN_DT: datetimeFormat
+ , FFNLG_CRDN_AMT: numberFormat
+ , REG_DT: datetimeFormat
+ , MDFCN_DT: datetimeFormat
+ }
+ });
+
+ // 검색 조건
+ ctrl.query = { pageNum: 1, fetchSize: DEFAULT_FETCH_SIZE }; // 1 페이지당 자료 건수 index.jsp에서 확인
+
+ /**************************************************************************
+ * DatasetControl Events
+ **************************************************************************/
+ // Dataset 변경 이벤트
+ ctrl.onDatasetChange = (obj, option) => {
+ // 데이터 셋
+ let dataList = ctrl.dataset;
+ let empty = dataList.empty;
+
+ // 업무별 dataTables(그리드) tr, td
+ let foundContent = ctrl.find("[name='tmpltRows']").content;
+ let foundTr = $(foundContent).find("tr")[0].cloneNode(false);
+ let foundTds = $(foundContent).find(".cmn");
+
+ foundTds.each(function() {
+ foundTr.appendChild(this.cloneNode(true));
+ });
+
+ let replacer = (str, dataItem) => str
+ .replace(/{onclick}/gi, "pageObject['" + pageName + "'].dataTableClick('{data-index}');")
+ .replace(/{ondblclick}/gi, "pageObject['" + pageName + "'].dataTableDblClick('{data-index}');");
+
+ let trs = empty ?
+ [ctrl.find("[name='tmpltNotFound']").content.querySelector(".cmn").outerHTML]
+ : dataList.inStrings(foundTr.outerHTML, replacer);
+
+ let noMore = (dataList.length >= obj["Paging"]?.totalSize); // 전체 건수
+ let initScroll = (ctrl.query.pageNum < 2);
+
+ if (option != null && option.reloaded) {
+ initScroll = false;
+ }
+
+ // dataTables(그리드)에 자료 표시 td
+ ctrl.find("[name='tableRspns']").changeContent(trs.join(), initScroll, noMore);
+
+ // checkbox 체크 해제
+ $(ctrl.find("[name='gridAllCheckbox']")).prop("checked", false);
+
+ // dataTables(그리드)에 페이지 표시 pagingInfo
+ pageObject[pageName].pagingSupport.setPagingInfo(obj);
+ };
+
+ // 현재 선택 자료 변경 이벤트
+ ctrl.onCurrentChange = (item) => {
+ Apply.fromDataset.currentRow(ctrl.dataset, item, ctrl.find("[name='tbodyList']"));
+ };
+
+ // 선택(체크) 변경 이벤트
+ ctrl.onSelectionChange = (selectedArr) => {
+ // gridCheckbox
+ Apply.fromDataset.gridCheckbox(ctrl.dataset, ctrl.find("[name='tbodyList']"), 1, selectedArr);
+ };
+
+ // 상세 정보 dialog
+ ctrl.getInfo = (params) => {
+ if (!params) return;
+
+ ajax.get({
+ url: ctrl.urls.getInfo
+ , data: params || {}
+ , success: (resp) => {
+ let dialogName = ctrl.prefixed("Dialog");
+ let dialogId = dialogName + "-" + uuid();
+
+ dialog.open({
+ id: dialogId
+ , title: ctrl.prefixName + " 정보"
+ , size: ctrl.infoSize
+ , content: resp
+ , init: () => {
+ $("#" + dialogId).attr("name", dialogName);
+ $("#" + dialogId).attr("data-ref-doctx", pageName);
+
+ AppSupport.setDialogZindex();
+ }
+ , onClose: () => { }
+ });
+ }
+ });
+ }
+
+ return ctrl;
+}
diff --git a/src/main/webapp/resources/js/fims/rent/rent03020.js b/src/main/webapp/resources/js/fims/rent/rent03020.js
new file mode 100644
index 00000000..7273c0ad
--- /dev/null
+++ b/src/main/webapp/resources/js/fims/rent/rent03020.js
@@ -0,0 +1,89 @@
+function newRent03020Control(pageName, doctx="[data-doctx='rent03020']") {
+ let ctrl = new DatasetControl({
+ doctx: doctx
+ , prefix: "crdn"
+ , prefixName: "단속"
+ , dataGetter: obj => obj["Info"]
+ , keys: ["CRDN_ID"]
+ , infoSize: "lg"
+ , urls: {
+ load: "/list.do"
+ , getInfo: "/info.do"
+ }
+ });
+
+ /**************************************************************************
+ * DatasetControl Events
+ **************************************************************************/
+ // 현재 선택 자료 변경 이벤트
+ ctrl.onCurrentChange = (item) => {
+ if (!item) return;
+
+ // 건수를 표시한다.
+ pageObject[pageName].fnChangeCountStatus();
+
+ // 화면에 단속 Dataset 셋팅
+ let formFields = new FimsFormFields(ctrl.selector("[name='frmEdit']"));
+ formFields.set(ctrl, item);
+
+ // 화면에 임대차계약 Dataset 셋팅
+ let formFields2 = new FimsFormFields(ctrl.selector("[name='frmEditLsct']"));
+ formFields2.set(ctrl, item);
+
+ let fileKey = item.data.LSCT_ID;
+ if (fileKey != null) {
+ pageObject[pageName].fnSearchFileList(fileKey);
+ }
+ };
+
+ // 상세 정보 dialog
+ ctrl.getInfo = (params) => {
+ if (!params) return;
+
+ ajax.get({
+ url: ctrl.urls.getInfo
+ , data: params || {}
+ , success: (resp) => {
+ let dialogName = ctrl.prefixed("Dialog");
+ let dialogId = dialogName + "-" + uuid();
+
+ dialog.open({
+ id: dialogId
+ , title: "임대차계약 상세 정보"
+ , size: ctrl.infoSize
+ , content: resp
+ , init: () => {
+ $("#" + dialogId).attr("name", dialogName);
+ $("#" + dialogId).attr("data-ref-doctx", pageName);
+
+ AppSupport.setDialogZindex();
+ }
+ , onClose: () => { }
+ });
+ }
+ });
+ }
+
+ // 재 조회 -> 1건일때 reload 사용시 오류 발생. 배열이 아니여서 발생.. 한실장님에게 수정 요청
+ ctrl.refresh = (query) => {
+ if (query) {
+ ctrl.query = query;
+ }
+
+ ajax.get({
+ url: ctrl.urls.load
+ , headers: { Accept: "application/json; charset=utf-8" } // json
+ , data: ctrl.query
+ , success: (resp) => {
+ // 초기화
+ ctrl.find("[name='frmEdit']").reset(); // 화면 초기화
+ ctrl.dataset.clear(); // Dataset 초기화
+
+ // Dataset 셋팅
+ ctrl.setData([resp.Info]); // 정보
+ }
+ });
+ }
+
+ return ctrl;
+}