소스 정리.

main
JoJH 4 days ago
parent 521d2f47e3
commit d3c6878242

@ -91,28 +91,25 @@
<table class="table-layout-fixed dataTable datatables-ajax table table-bordered no-footer" aria-describedby="DataTables_Table_0_info"> <table class="table-layout-fixed dataTable datatables-ajax table table-bordered no-footer" aria-describedby="DataTables_Table_0_info">
<thead class="sticky-thead"> <thead class="sticky-thead">
<tr name="theadTr" data-search-target="[data-doctx='${pageName}']"> <tr name="theadTr" data-search-target="[data-doctx='${pageName}']">
<th class="cmn" style="width: 72px;">No.</th>
<th class="cmn" style="width: 56px;"><input type="checkbox" class="form-check-input" name="gridAllCheckbox" onchange="pageObject['${pageName}'].dataTableCheckbox(this, this.checked);" /></th>
<th class="cmn" style="width: 160px;" onclick="FimsSupport.searchFromGridTitle('USER_ACNT', this.innerText, 'match', 'part');">사용자계정</th>
<th class="cmn" style="width: 160px;" onclick="FimsSupport.searchFromGridTitle('USER_NM', this.innerText, 'match', 'part');">사용자명</th>
<th class="cmn" style="width: 120px;" onclick="FimsSupport.searchFromGridTitle('ENT_SE_CD', this.innerText, 'codeValue', 'FIM088');">기업구분</th>
<th class="cmn" style="width: 200px;" onclick="FimsSupport.searchFromGridTitle('ENT_NM', this.innerText, 'match', 'part');">기업명</th>
<th class="cmn" style="width: 160px;" onclick="FimsSupport.searchFromGridTitle('ENT_REG_NO', this.innerText, 'match', 'part');">법인(사업자)번호</th>
<th class="cmn" style="width: 120px;" onclick="FimsSupport.searchFromGridTitle('RPRSV_NM', this.innerText, 'match', 'part');">대표자명</th>
<th class="cmn" style="width: 160px;" onclick="FimsSupport.searchFromGridTitle('ENT_TELNO', this.innerText, 'match', 'part');">전화번호</th>
<th class="cmn" style="width: 160px;" onclick="FimsSupport.searchFromGridTitle('ENT_FXNO', this.innerText, 'match', 'part');">팩스번호</th>
<th class="cmn" style="width: 240px;" onclick="FimsSupport.searchFromGridTitle('ENT_EML_ADDR', this.innerText, 'match', 'part');">이메일주소</th>
<th class="cmn" style="width: 100px;" onclick="FimsSupport.searchFromGridTitle('ENT_ZIP', this.innerText, 'match', 'part');">우편번호</th>
<th class="cmn" style="width: 280px;" onclick="FimsSupport.searchFromGridTitle('ENT_ADDR', this.innerText, 'match', 'part');">주소</th>
<th class="cmn" style="width: 320px;" onclick="FimsSupport.searchFromGridTitle('ENT_DTL_ADDR', this.innerText, 'match', 'part');">상세주소</th>
<th class="cmn" style="width: 180px;">등록일시</th>
<th class="cmn" style="width: 140px;">등록사용자</th>
<th class="cmn dummy-th"></th>
</tr> </tr>
</thead> </thead>
<template name="tmpltCols">
<th class="cmn" style="width: 72px;">No.</th>
<th class="cmn" style="width: 56px;"><input type="checkbox" class="form-check-input" name="gridAllCheckbox" onchange="pageObject['${pageName}'].dataTableCheckbox(this, this.checked);" /></th>
<th class="cmn" style="width: 160px;" onclick="FimsSupport.searchFromGridTitle('USER_ACNT', this.innerText, 'match', 'part');">사용자계정</th>
<th class="cmn" style="width: 160px;" onclick="FimsSupport.searchFromGridTitle('USER_NM', this.innerText, 'match', 'part');">사용자명</th>
<th class="cmn" style="width: 120px;" onclick="FimsSupport.searchFromGridTitle('ENT_SE_CD', this.innerText, 'codeValue', 'FIM088');">기업구분</th>
<th class="cmn" style="width: 200px;" onclick="FimsSupport.searchFromGridTitle('ENT_NM', this.innerText, 'match', 'part');">기업명</th>
<th class="cmn" style="width: 160px;" onclick="FimsSupport.searchFromGridTitle('ENT_REG_NO', this.innerText, 'match', 'part');">법인(사업자)번호</th>
<th class="cmn" style="width: 120px;" onclick="FimsSupport.searchFromGridTitle('RPRSV_NM', this.innerText, 'match', 'part');">대표자명</th>
<th class="cmn" style="width: 160px;" onclick="FimsSupport.searchFromGridTitle('ENT_TELNO', this.innerText, 'match', 'part');">전화번호</th>
<th class="cmn" style="width: 160px;" onclick="FimsSupport.searchFromGridTitle('ENT_FXNO', this.innerText, 'match', 'part');">팩스번호</th>
<th class="cmn" style="width: 240px;" onclick="FimsSupport.searchFromGridTitle('ENT_EML_ADDR', this.innerText, 'match', 'part');">이메일주소</th>
<th class="cmn" style="width: 100px;" onclick="FimsSupport.searchFromGridTitle('ENT_ZIP', this.innerText, 'match', 'part');">우편번호</th>
<th class="cmn" style="width: 280px;" onclick="FimsSupport.searchFromGridTitle('ENT_ADDR', this.innerText, 'match', 'part');">주소</th>
<th class="cmn" style="width: 320px;" onclick="FimsSupport.searchFromGridTitle('ENT_DTL_ADDR', this.innerText, 'match', 'part');">상세주소</th>
<th class="cmn" style="width: 180px;">등록일시</th>
<th class="cmn" style="width: 140px;">등록사용자</th>
<th class="cmn dummy-th"></th>
</template>
<tbody name="tbodyList"> <tbody name="tbodyList">
</tbody> </tbody>
<template is="curly-brackets" name="tmpltRows"> <template is="curly-brackets" name="tmpltRows">
@ -137,7 +134,7 @@
</tr> </tr>
</template> </template>
<template name="tmpltNotFound"> <template name="tmpltNotFound">
<tr class="cmn"> <tr class="odd">
<td valign="top" colspan="17" class="dataTables_empty text-center">${prefixName} 정보를 찾지 못했습니다.</td> <td valign="top" colspan="17" class="dataTables_empty text-center">${prefixName} 정보를 찾지 못했습니다.</td>
</tr> </tr>
</template> </template>
@ -169,14 +166,10 @@
// pageObject // pageObject
let $P = pageObject["${pageName}"]; let $P = pageObject["${pageName}"];
// URL
$P.prefixUrl = "${prefixUrl}";
// datasetControl // datasetControl
$P.ctrl = newRent01010Control("${pageName}", "[data-doctx=${pageName}]"); $P.ctrl = newRent01010Control("${pageName}", "[data-doctx=${pageName}]");
// paging
$P.pagingSupport = new FimsPagingSupport({
ctrl: $P.ctrl // DatasetControl
, ignoreCtrlPrefix: true // ctrl.prefix 가 있더라도 무시
, linkContainer: "[name='dataPaging']" // <ul class="pagination pagination-primary" name="dataPaging">
});
/************************************************************************** /**************************************************************************
* DataTable 이벤트 * DataTable 이벤트
@ -186,6 +179,7 @@
GRID.checkbox.sync(element, bool); GRID.checkbox.sync(element, bool);
let atLeastOne = GRID.checkbox.countChecked(element) > 0; let atLeastOne = GRID.checkbox.countChecked(element) > 0;
$P.$findn("btnRemove").prop("disabled", !atLeastOne); $P.$findn("btnRemove").prop("disabled", !atLeastOne);
Apply.toDataset.selection($P.ctrl.dataset, element, bool); Apply.toDataset.selection($P.ctrl.dataset, element, bool);
@ -193,7 +187,7 @@
// dataTable 클릭 이벤트 // dataTable 클릭 이벤트
$P.dataTableClick = (dataIndex) => { $P.dataTableClick = (dataIndex) => {
if (dataIndex == "") return; if (!dataIndex) return;
$P.$findn("tbodyList").setCurrentRow(dataIndex); $P.$findn("tbodyList").setCurrentRow(dataIndex);
@ -202,11 +196,15 @@
// dataTable 더블 클릭 이벤트 // dataTable 더블 클릭 이벤트
$P.dataTableDblClick = (dataIndex) => { $P.dataTableDblClick = (dataIndex) => {
// let dataItem = $P.ctrl.dataset.getData(dataIndex, "item"); // dataIndex에 해당 하는 dataItem을 가져온다. if (!dataIndex) return;
// 매핑 ID 가 없다면.. 종료
let mpngId = $P.ctrl.getValue("MPNG_ID");
if (!mpngId) return;
let params = { let params = {
callPurpose: "view" callPurpose: "update"
, mpngId: $P.ctrl.getValue("MPNG_ID") , mpngId: mpngId // 매핑 ID
}; };
$P.ctrl.getInfo(params); $P.ctrl.getInfo(params);
@ -220,19 +218,12 @@
/************************************************************************** /**************************************************************************
* 사용자 함수(function) * 사용자 함수(function)
**************************************************************************/ **************************************************************************/
// URL 설정
$P.setUrl = (prefixUrl) => {
$P.ctrl.urls.load = wctx.url(prefixUrl + "/010/list.do"); // 검색
$P.ctrl.urls.remove = wctx.url(prefixUrl + "/010/removeMpng.do") // 삭제
$P.ctrl.urls.getInfo = wctx.url(prefixUrl + "/020/info.do"); // 상세 정보
}
// 임대기업 매핑 등록 // 임대기업 매핑 등록
$P.createInfo = (params) => { $P.createInfo = (params) => {
if (!params) return; if (!params) return;
ajax.get({ ajax.get({
url: wctx.url("${prefixUrl}" + "/030/main.do") url: wctx.url($P.prefixUrl + "/030/main.do")
, data: params || {} , data: params || {}
, success: (resp) => { , success: (resp) => {
let dialogName = "rentEntDialog"; let dialogName = "rentEntDialog";
@ -260,13 +251,10 @@
**************************************************************************/ **************************************************************************/
// 초기화 버튼 이벤트 // 초기화 버튼 이벤트
$P.fnReset = () => { $P.fnReset = () => {
// 화면 초기화 // 초기화
$P.findn("frmSearch").reset(); $P.findn("frmSearch").reset(); // 화면 초기화
// dataset 초기화 AppSupport.initDatepicker($P.findn("frmSearch")); // 달력 초기화
$P.ctrl.dataset.clear(); AppSupport.initDetailSearchButton($P.findn("frmSearch")); // 상세검색 버튼 화살표
// URL 설정
$P.setUrl("${prefixUrl}");
// input, select 초기화 // input, select 초기화
let searchForm = $P.$findn("frmSearch"); let searchForm = $P.$findn("frmSearch");
@ -276,23 +264,18 @@
searchForm.find("input[type='hidden']").val(""); searchForm.find("input[type='hidden']").val("");
searchForm.find("select").each(function(){ $(this).find("option:eq(0)").prop("selected", true); }); searchForm.find("select").each(function(){ $(this).find("option:eq(0)").prop("selected", true); });
AppSupport.initDatepicker($P.findn("frmSearch")); // 달력 초기화
AppSupport.initDetailSearchButton($P.findn("frmSearch")); // 상세검색 버튼 화살표
// 기본 데이터 설정 // 기본 데이터 설정
$P.$findn("userId").val("${userId}"); // 사용자 ID $P.$findn("userId").val("${userId}"); // 사용자 ID
$P.$findn("schUserAcnt").val("${userAcnt}"); // 사용자 계정 $P.$findn("schUserAcnt").val("${userAcnt}"); // 사용자 계정
$P.$findn("byOutput").val("동적 검색"); // 동적 검색 $P.$findn("byOutput").val("동적 검색"); // 동적 검색
// 그리드 th // dataset 초기화
let colContent = $P.findn("tmpltCols").content; $P.ctrl.dataset.clear();
let cols = $(colContent).find(".cmn");
let colsOuterHTML = "";
cols.each(function() { // URL 설정
colsOuterHTML += this.outerHTML; $P.ctrl.urls.load = wctx.url($P.prefixUrl + "/010/list.do"); // 검색
}); $P.ctrl.urls.remove = wctx.url($P.prefixUrl + "/010/removeMpng.do"); // 삭제
$P.findn("tableRspns").changeColumn(colsOuterHTML); $P.ctrl.urls.getInfo = wctx.url($P.prefixUrl + "/020/info.do"); // 상세 정보
} }
// 검색 버튼 이벤트 // 검색 버튼 이벤트
@ -325,9 +308,10 @@
} }
// 임대기업 매핑 등록 버튼 이벤트 // 임대기업 매핑 등록 버튼 이벤트
$P.fnCreate = () => { $P.fnCreate = (btnTitle) => {
let params = { let params = {
callPurpose: "create" btnTitle: btnTitle // 버튼 title
, callPurpose: "create"
, userId: $P.$findn("userId").val() , userId: $P.$findn("userId").val()
}; };
@ -335,7 +319,7 @@
} }
// 임대기업 매핑 삭제 버튼 이벤트 // 임대기업 매핑 삭제 버튼 이벤트
$P.fnRemove = () => { $P.fnRemove = (btnTitle) => {
let selected = $P.ctrl.getDataset("selected"); // 선택 자료 let selected = $P.ctrl.getDataset("selected"); // 선택 자료
if (selected.length < 1) { if (selected.length < 1) {
@ -351,7 +335,8 @@
content: "선택한 " + selected.length + "건의 " + $P.ctrl.prefixName + " 정보를 삭제하시겠습니까?" content: "선택한 " + selected.length + "건의 " + $P.ctrl.prefixName + " 정보를 삭제하시겠습니까?"
, onOK: () => { , onOK: () => {
let params = { let params = {
callPurpose: "remove" btnTitle: btnTitle // 버튼 title
, callPurpose: "remove"
, mpngIds: selected.map(info => info.MPNG_ID).join(",") , mpngIds: selected.map(info => info.MPNG_ID).join(",")
} }
@ -366,17 +351,20 @@
// 이벤트 설정 // 이벤트 설정
$P.setEvent = () => { $P.setEvent = () => {
// 기본 버튼 이벤트 // 기본 버튼 이벤트
$P.$findn("btnReset").on("click", () => { $P.fnReset() }); // 초기화 $P.$findn("btnReset").on("click", () => $P.fnReset()); // 초기화
$P.$findn("btnSearch").on("click", () => { $P.fnSearchList() }); // 검색 $P.$findn("btnSearch").on("click", () => $P.fnSearchList()); // 검색
$P.$findn("btnExcel").on("click", () => { $P.fnExcel() }); // 엑셀 $P.$findn("btnExcel").on("click", () => $P.fnExcel()); // 엑셀
// 업무 버튼 이벤트 // 업무 버튼 이벤트
$P.$findn("btnCreate").on("click", () => { $P.fnCreate(); }); // 매핑 등록 $P.$findn("btnCreate").on("click", function() {
$P.$findn("btnRemove").on("click", () => { $P.fnRemove(); }); // 매핑 삭제 $P.fnCreate($P.$findn("btnCreate").attr("title")); // 등록
});
$P.$findn("btnRemove").on("click", function() {
$P.fnRemove($P.$findn("btnRemove").attr("title")); // 삭제
});
// DataTables width 변경 조정 // DataTables width 변경 조정
Componentization.fnMakeResizableTable($P.findn("tableRspns")); Componentization.fnMakeResizableTable($P.findn("tableRspns"));
// DataTables 스크롤 이벤트 생성 // DataTables 스크롤 이벤트 생성
Componentization.fnMakeScrollableTable($P.findn("tableRspns"), $P.scrollDataList); Componentization.fnMakeScrollableTable($P.findn("tableRspns"), $P.scrollDataList);
} }

@ -124,21 +124,19 @@
// pageObject // pageObject
let $P = pageObject["${pageName}"]; let $P = pageObject["${pageName}"];
// URL
$P.prefixUrl = "${prefixUrl}";
// infoDialog 호출 용도(view 조회(편집불가), create 등록, update 수정)
$P.callPurpose = "${callPurpose}";
// datasetControl // datasetControl
$P.ctrl = newRent01020Control("${pageName}", "[data-doctx=${pageName}]"); $P.ctrl = newRent01020Control("${pageName}", "[data-doctx=${pageName}]");
// main에서 호출한 파라미터 // main에서 호출한 파라미터
$P.ctrl.query = ${mainQuery}; $P.ctrl.query = ${mainQuery};
// infoDialog 호출 용도(view 조회(편집불가), create 등록, update 수정)
$P.callPurpose = "${callPurpose}";
/************************************************************************** /**************************************************************************
* 사용자 함수(function) * 사용자 함수(function)
**************************************************************************/ **************************************************************************/
// URL 설정
$P.setUrl = (prefixUrl) => {
$P.ctrl.urls.load = wctx.url(prefixUrl + "/020/info.do"); // 상세 정보 조회
$P.ctrl.urls.getInfo = wctx.url(prefixUrl + "/040/info.do"); // 임대기업 상세 정보 조회
}
/************************************************************************** /**************************************************************************
* 버튼 clickEvent * 버튼 clickEvent
@ -149,14 +147,19 @@
$P.findn("frmEdit").reset(); $P.findn("frmEdit").reset();
// URL 설정 // URL 설정
$P.setUrl("${prefixUrl}"); $P.ctrl.urls.load = wctx.url($P.prefixUrl + "/020/info.do"); // 상세 정보 조회
$P.ctrl.urls.getInfo = wctx.url($P.prefixUrl + "/040/info.do"); // 임대기업 상세 정보 조회
} }
// 임대기업 수정 // 임대기업 수정
$P.fnUpdateRentEnt = () => { $P.fnUpdateRentEnt = () => {
// 임대기업 ID 가 없다면.. return
let entId = $P.ctrl.getValue("ENT_ID");
if (!entId) return;
let params = { let params = {
callPurpose: "update" callPurpose: "update"
, entId: $P.ctrl.getValue("ENT_ID") , entId: entId
}; };
$P.ctrl.getInfo(params); $P.ctrl.getInfo(params);
@ -168,7 +171,7 @@
// 이벤트 // 이벤트
$P.setEvent = () => { $P.setEvent = () => {
// 버튼 이벤트 // 버튼 이벤트
$P.$findn("btnUpdateRentEnt").on("click", () => { $P.fnUpdateRentEnt(); }); // 임대기업 수정 $P.$findn("btnUpdateRentEnt").on("click", () => $P.fnUpdateRentEnt()); // 임대기업 수정
} }
/************************************************************************** /**************************************************************************

@ -77,23 +77,20 @@
<table class="table-layout-fixed dataTable datatables-ajax table table-bordered no-footer" aria-describedby="DataTables_Table_0_info"> <table class="table-layout-fixed dataTable datatables-ajax table table-bordered no-footer" aria-describedby="DataTables_Table_0_info">
<thead class="sticky-thead"> <thead class="sticky-thead">
<tr name="theadTr" data-search-target="[data-doctx='${pageName}']"> <tr name="theadTr" data-search-target="[data-doctx='${pageName}']">
<th class="cmn" style="width: 72px;">No.</th>
<th class="cmn" style="width: 56px;"><input type="checkbox" class="form-check-input" name="gridAllCheckbox" onchange="pageObject['${pageName}'].dataTableCheckbox(this, this.checked);" /></th>
<th class="cmn" style="width: 200px;">기업명</th>
<th class="cmn" style="width: 160px;">법인(사업자)번호</th>
<th class="cmn" style="width: 120px;">대표자명</th>
<th class="cmn" style="width: 160px;">전화번호</th>
<th class="cmn" style="width: 160px;">팩스번호</th>
<th class="cmn" style="width: 100px;">우편번호</th>
<th class="cmn" style="width: 280px;">주소</th>
<th class="cmn" style="width: 320px;">상세주소</th>
<th class="cmn" style="width: 180px;">등록일시</th>
<th class="cmn dummy-th"></th>
</tr> </tr>
</thead> </thead>
<template name="tmpltCols">
<th class="cmn" style="width: 72px;">No.</th>
<th class="cmn" style="width: 56px;"><input type="checkbox" class="form-check-input" name="gridAllCheckbox" onchange="pageObject['${pageName}'].dataTableCheckbox(this, this.checked);" /></th>
<th class="cmn" style="width: 200px;">기업명</th>
<th class="cmn" style="width: 160px;">법인(사업자)번호</th>
<th class="cmn" style="width: 120px;">대표자명</th>
<th class="cmn" style="width: 160px;">전화번호</th>
<th class="cmn" style="width: 160px;">팩스번호</th>
<th class="cmn" style="width: 100px;">우편번호</th>
<th class="cmn" style="width: 280px;">주소</th>
<th class="cmn" style="width: 320px;">상세주소</th>
<th class="cmn" style="width: 180px;">등록일시</th>
<th class="cmn dummy-th"></th>
</template>
<tbody name="tbodyList"> <tbody name="tbodyList">
</tbody> </tbody>
<template is="curly-brackets" name="tmpltRows"> <template is="curly-brackets" name="tmpltRows">
@ -113,7 +110,7 @@
</tr> </tr>
</template> </template>
<template name="tmpltNotFound"> <template name="tmpltNotFound">
<tr class="cmn"> <tr class="odd">
<td valign="top" colspan="12" class="dataTables_empty text-center">${prefixName} 정보를 찾지 못했습니다.</td> <td valign="top" colspan="12" class="dataTables_empty text-center">${prefixName} 정보를 찾지 못했습니다.</td>
</tr> </tr>
</template> </template>
@ -143,14 +140,10 @@
// pageObject // pageObject
let $P = pageObject["${pageName}"]; let $P = pageObject["${pageName}"];
// URL
$P.prefixUrl = "${prefixUrl}";
// datasetControl // datasetControl
$P.ctrl = newRent01030Control("${pageName}", "[data-doctx=${pageName}]"); $P.ctrl = newRent01030Control("${pageName}", "[data-doctx=${pageName}]");
// paging
$P.pagingSupport = new FimsPagingSupport({
ctrl: $P.ctrl // DatasetControl
, ignoreCtrlPrefix: true // ctrl.prefix 가 있더라도 무시
, linkContainer: "[name='dataPaging']" // <ul class="pagination pagination-primary" name="dataPaging">
});
/************************************************************************** /**************************************************************************
* DataTable 이벤트 * DataTable 이벤트
@ -160,6 +153,7 @@
GRID.checkbox.sync(element, bool); GRID.checkbox.sync(element, bool);
let atLeastOne = GRID.checkbox.countChecked(element) > 0; let atLeastOne = GRID.checkbox.countChecked(element) > 0;
$P.$findn("btnOK").prop("disabled", !atLeastOne); $P.$findn("btnOK").prop("disabled", !atLeastOne);
$P.$findn("btnRemove").prop("disabled", !atLeastOne); $P.$findn("btnRemove").prop("disabled", !atLeastOne);
@ -168,7 +162,7 @@
// dataTable 클릭 이벤트 // dataTable 클릭 이벤트
$P.dataTableClick = (dataIndex) => { $P.dataTableClick = (dataIndex) => {
if (dataIndex == "") return; if (!dataIndex) return;
$P.$findn("tbodyList").setCurrentRow(dataIndex); $P.$findn("tbodyList").setCurrentRow(dataIndex);
@ -177,9 +171,15 @@
// dataTable 더블 클릭 이벤트 // dataTable 더블 클릭 이벤트
$P.dataTableDblClick = (dataIndex, dataKey) => { $P.dataTableDblClick = (dataIndex, dataKey) => {
if (!dataIndex) return;
// 기업 ID 가 없다면.. 입력
let entId = $P.ctrl.getValue("ENT_ID");
if (!entId) return;
let params = { let params = {
callPurpose: "update" callPurpose: "update"
, entId: $P.ctrl.getValue("ENT_ID") // 기업 ID , entId: entId // 기업 ID
}; };
$P.ctrl.getInfo(params); $P.ctrl.getInfo(params);
@ -193,40 +193,36 @@
/************************************************************************** /**************************************************************************
* 사용자 함수(function) * 사용자 함수(function)
**************************************************************************/ **************************************************************************/
// URL 설정
$P.setUrl = (prefixUrl) => {
$P.ctrl.urls.load = wctx.url(prefixUrl + "/030/list.do"); // 검색
$P.ctrl.urls.create = wctx.url(prefixUrl + "/030/createMpng.do") // 등록
$P.ctrl.urls.remove = wctx.url(prefixUrl + "/030/removeEnt.do") // 삭제
$P.ctrl.urls.getInfo = wctx.url(prefixUrl + "/040/info.do"); // 상세 정보
}
/************************************************************************** /**************************************************************************
* 버튼 clickEvent * 버튼 clickEvent
**************************************************************************/ **************************************************************************/
// 업무 구분 변경 이벤트 // 초기화 버튼 이벤트
$P.fnReset = () => { $P.fnReset = () => {
// 화면 초기화 // 초기화
$P.findn("frmSearch").reset(); $P.findn("frmSearch").reset(); // 화면 초기화
// dataset 초기화
$P.ctrl.dataset.clear();
// URL 설정 // input, select 초기화
$P.setUrl("${prefixUrl}"); let searchForm = $P.$findn("frmSearch");
searchForm.find("input[type='radio']").not("[name='taskSeCd']").prop("checked", false);
searchForm.find("input[type='checkbox']").prop("checked", false);
searchForm.find("input[type='text']").val("");
searchForm.find("input[type='hidden']").val("");
searchForm.find("select").each(function(){ $(this).find("option:eq(0)").prop("selected", true); });
// 기본 데이터 설정 // 기본 데이터 설정
$P.$findn("userId").val("${userId}"); // 사용자 ID $P.$findn("userId").val("${userId}"); // 사용자 ID
$P.$findn("schEntRegNo").val("${schEntRegNo}"); // 기업 등록 번호 $P.$findn("schEntRegNo").val("${schEntRegNo}"); // 기업 등록 번호
// 그리드 th // dataset 초기화
let colContent = $P.findn("tmpltCols").content; $P.ctrl.dataset.clear();
let cols = $(colContent).find(".cmn");
let colsOuterHTML = "";
cols.each(function() { // URL 설정
colsOuterHTML += this.outerHTML; $P.ctrl.urls.load = wctx.url($P.prefixUrl + "/030/list.do"); // 검색
}); $P.ctrl.urls.create = wctx.url($P.prefixUrl + "/030/createMpng.do"); // 등록
$P.findn("tableRspns").changeColumn(colsOuterHTML); $P.ctrl.urls.remove = wctx.url($P.prefixUrl + "/030/removeEnt.do"); // 삭제
$P.ctrl.urls.getInfo = wctx.url($P.prefixUrl + "/040/info.do");; // 상세 정보
} }
// 검색 버튼 클릭 이벤트 // 검색 버튼 클릭 이벤트
@ -284,9 +280,10 @@
} }
// 임대기업 등록 // 임대기업 등록
$P.fnCreate = () => { $P.fnCreate = (btnTitle) => {
let params = { let params = {
callPurpose: "create" btnTitle: btnTitle // 버튼 title
, callPurpose: "create"
, entId: null , entId: null
}; };
@ -294,14 +291,14 @@
} }
// 임대기업 수정 // 임대기업 수정
$P.fnUpdate = () => { $P.fnUpdate = (btnTitle) => {
// 임대기업 ID
let entId = $P.ctrl.getValue("ENT_ID");
// 임대기업 ID 가 없다면.. return // 임대기업 ID 가 없다면.. return
let entId = $P.ctrl.getValue("ENT_ID");
if (!entId) return; if (!entId) return;
let params = { let params = {
callPurpose: "update" btnTitle: btnTitle // 버튼 title
, callPurpose: "update"
, entId: $P.ctrl.getValue("ENT_ID") , entId: $P.ctrl.getValue("ENT_ID")
}; };
@ -309,7 +306,7 @@
} }
// 임대기업 삭제 버튼 클릭 이벤트 // 임대기업 삭제 버튼 클릭 이벤트
$P.fnRemove = () => { $P.fnRemove = (btnTitle) => {
let selected = $P.ctrl.getDataset("selected"); // 선택 자료 let selected = $P.ctrl.getDataset("selected"); // 선택 자료
if (selected.length < 1) { if (selected.length < 1) {
@ -322,7 +319,8 @@
} }
let params = { let params = {
callPurpose: "remove" btnTitle: btnTitle // 버튼 title
, callPurpose: "remove"
, entIds: selected.map(info => info.ENT_ID).join(",") , entIds: selected.map(info => info.ENT_ID).join(",")
}; };
@ -338,22 +336,27 @@
// 이벤트 // 이벤트
$P.setEvent = () => { $P.setEvent = () => {
// 기본 버튼 이벤트 // 기본 버튼 이벤트
$P.$findn("btnReset").on("click", () => { $P.fnReset(); }); // 초기화 $P.$findn("btnReset").on("click", () => $P.fnReset()); // 초기화
$P.$findn("btnSearch").on("click", () => { $P.fnSearchList(); }); // 검색 $P.$findn("btnSearch").on("click", () => $P.fnSearchList()); // 검색
$P.$findn("btnOK").on("click", () => { $P.fnOK(); }); // 선택 확인 $P.$findn("btnOK").on("click", () => $P.fnOK()); // 선택 확인
// input에서 엔터(Enter) 키를 누르면 검색한다. // input에서 엔터(Enter) 키를 누르면 검색한다.
$P.$findn("schEntRegNo").onEnterPress($P.fnSearchList); // 법인(사업자) 번호 $P.$findn("schEntRegNo").onEnterPress($P.fnSearchList); // 법인(사업자) 번호
$P.$findn("schEntNm").onEnterPress($P.fnSearchList); // 기업명 $P.$findn("schEntNm").onEnterPress($P.fnSearchList); // 기업명
// 업무 버튼 이벤트 // 업무 버튼 이벤트
$P.$findn("btnCreate").on("click", () => { $P.fnCreate(); }); // 임대기업 등록 $P.$findn("btnCreate").on("click", function() {
$P.$findn("btnUpdate").on("click", () => { $P.fnUpdate(); }); // 임대기업 수정 $P.fnCreate($P.$findn("btnCreate").attr("title")); // 임대기업 등록
$P.$findn("btnRemove").on("click", () => { $P.fnRemove(); }); // 임대기업 삭제 });
$P.$findn("btnUpdate").on("click", function() {
$P.fnUpdate($P.$findn("btnUpdate").attr("title")); // 임대기업 수정
});
$P.$findn("btnRemove").on("click", function() {
$P.fnRemove($P.$findn("btnRemove").attr("title")); // 임대기업 삭제
});
// DataTable width 변경 조정 // DataTable width 변경 조정
Componentization.fnMakeResizableTable($P.findn("tableRspns")); Componentization.fnMakeResizableTable($P.findn("tableRspns"));
// DataTable 스크롤 이벤트 생성 // DataTable 스크롤 이벤트 생성
Componentization.fnMakeScrollableTable($P.findn("tableRspns"), $P.scrollDataList); Componentization.fnMakeScrollableTable($P.findn("tableRspns"), $P.scrollDataList);
} }

@ -96,20 +96,16 @@
// pageObject // pageObject
let $P = pageObject["${pageName}"]; let $P = pageObject["${pageName}"];
// datasetControl // URL
$P.ctrl = newRent01040Control("${pageName}", "[data-doctx=${pageName}]"); $P.prefixUrl = "${prefixUrl}";
// infoDialog 호출 용도(view 조회(편집불가), create 등록, update 수정) // infoDialog 호출 용도(view 조회(편집불가), create 등록, update 수정)
$P.callPurpose = "${callPurpose}"; $P.callPurpose = "${callPurpose}";
// datasetControl
$P.ctrl = newRent01040Control("${pageName}", "[data-doctx=${pageName}]");
/************************************************************************** /**************************************************************************
* 사용자 함수(function) * 사용자 함수(function)
**************************************************************************/ **************************************************************************/
// URL 설정
$P.setUrl = (prefixUrl) => {
$P.ctrl.urls.create = wctx.url(prefixUrl + "/040/createEnt.do") // 등록
$P.ctrl.urls.update = wctx.url(prefixUrl + "/040/updateEnt.do") // 수정
}
// 우편번호 검색 결과 // 우편번호 검색 결과
$P.callbackSearchAddr = (obj) => { $P.callbackSearchAddr = (obj) => {
$P.$findn("entAddr").val(obj.ADDR); // 주소 $P.$findn("entAddr").val(obj.ADDR); // 주소
@ -126,7 +122,8 @@
$P.findn("frmEdit").reset(); $P.findn("frmEdit").reset();
// URL 설정 // URL 설정
$P.setUrl("${prefixUrl}"); $P.ctrl.urls.create = wctx.url($P.prefixUrl + "/040/createEnt.do"); // 등록
$P.ctrl.urls.update = wctx.url($P.prefixUrl + "/040/updateEnt.do"); // 수정
} }
// 우편번호 검색 // 우편번호 검색
@ -175,10 +172,10 @@
**************************************************************************/ **************************************************************************/
// 이벤트 // 이벤트
$P.setEvent = () => { $P.setEvent = () => {
// 기본 버튼 이벤트 // 기본 버튼 이벤트
$P.$findn("btnZipCode").on("click", () => { $P.fnZipCode() }); // 우편번호 검색 버튼 $P.$findn("btnZipCode").on("click", () => $P.fnZipCode()); // 우편번호 검색 버튼
// 버튼 이벤트 // 버튼 이벤트
$P.$findn("btnSave").on("click", () => { $P.fnSave() }); // 저장 버튼 $P.$findn("btnSave").on("click", () => $P.fnSave()); // 저장 버튼
} }
/************************************************************************** /**************************************************************************

@ -127,30 +127,27 @@
<table class="table-layout-fixed dataTable datatables-ajax table table-bordered no-footer" aria-describedby="DataTables_Table_0_info"> <table class="table-layout-fixed dataTable datatables-ajax table table-bordered no-footer" aria-describedby="DataTables_Table_0_info">
<thead class="sticky-thead"> <thead class="sticky-thead">
<tr name="theadTr" data-search-target="[data-doctx='${pageName}']"> <tr name="theadTr" data-search-target="[data-doctx='${pageName}']">
<th class="cmn" style="width: 72px;">No.</th>
<th class="cmn" style="width: 56px;"><input type="checkbox" class="form-check-input" name="gridAllCheckbox" onchange="pageObject['${pageName}'].dataTableCheckbox(this, this.checked);" /></th>
<th class="cmn" style="width: 160px;">업무구분</th>
<th class="cmn" style="width: 160px;">대상여부</th>
<th class="cmn" style="width: 180px;" onclick="FimsSupport.searchFromGridTitle('CRDN_YMD', this.innerText, 'ymd', '');">단속일시</th>
<th class="cmn" style="width: 160px;" onclick="FimsSupport.searchFromGridTitle('VHRNO', this.innerText, 'match', 'part');">자동차등록번호</th>
<th class="cmn" style="width: 120px;" onclick="FimsSupport.searchFromGridTitle('RTPYR_SE_CD', this.innerText, 'codeValue', 'FIM011');">납부자구분</th>
<th class="cmn" style="width: 160px;" onclick="FimsSupport.searchFromGridTitle('RTPYR_NO', this.innerText, 'ymd', '');">납부자번호</th>
<th class="cmn" style="width: 200px;" onclick="FimsSupport.searchFromGridTitle('RTPYR_NM', this.innerText, 'match', 'part');">납부자명</th>
<th class="cmn" style="width: 120px;" onclick="FimsSupport.searchFromGridTitle('CRDN_STDG_NM', this.innerText, 'match', 'part');">단속법정동</th>
<th class="cmn" style="width: 280px;" onclick="FimsSupport.searchFromGridTitle('CRDN_PLC', this.innerText, 'match', 'part');">단속장소</th>
<th class="cmn" style="width: 160px;" onclick="FimsSupport.searchFromGridTitle('VLTN_ARTCL', this.innerText, 'match', 'part');">위반항목</th>
<th class="cmn" style="width: 120px;" onclick="FimsSupport.searchFromGridTitle('FFNLG_CRDN_AMT', this.innerText, 'match', 'part');">단속원금</th>
<th class="cmn" style="width: 160px;" onclick="FimsSupport.searchFromGridTitle('CRDN_STTS_CD', this.innerText, 'codeValue', 'FIM010');">처리상태</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> </tr>
</thead> </thead>
<template name="tmpltCols">
<th class="cmn" style="width: 72px;">No.</th>
<th class="cmn" style="width: 56px;"><input type="checkbox" class="form-check-input" name="gridAllCheckbox" onchange="pageObject['${pageName}'].dataTableCheckbox(this, this.checked);" /></th>
<th class="cmn" style="width: 160px;">업무구분</th>
<th class="cmn" style="width: 160px;">대상여부</th>
<th class="cmn" style="width: 180px;" onclick="FimsSupport.searchFromGridTitle('CRDN_YMD', this.innerText, 'ymd', '');">단속일시</th>
<th class="cmn" style="width: 160px;" onclick="FimsSupport.searchFromGridTitle('VHRNO', this.innerText, 'match', 'part');">자동차등록번호</th>
<th class="cmn" style="width: 120px;" onclick="FimsSupport.searchFromGridTitle('RTPYR_SE_CD', this.innerText, 'codeValue', 'FIM011');">납부자구분</th>
<th class="cmn" style="width: 160px;" onclick="FimsSupport.searchFromGridTitle('RTPYR_NO', this.innerText, 'ymd', '');">납부자번호</th>
<th class="cmn" style="width: 200px;" onclick="FimsSupport.searchFromGridTitle('RTPYR_NM', this.innerText, 'match', 'part');">납부자명</th>
<th class="cmn" style="width: 120px;" onclick="FimsSupport.searchFromGridTitle('CRDN_STDG_NM', this.innerText, 'match', 'part');">단속법정동</th>
<th class="cmn" style="width: 280px;" onclick="FimsSupport.searchFromGridTitle('CRDN_PLC', this.innerText, 'match', 'part');">단속장소</th>
<th class="cmn" style="width: 160px;" onclick="FimsSupport.searchFromGridTitle('VLTN_ARTCL', this.innerText, 'match', 'part');">위반항목</th>
<th class="cmn" style="width: 120px;" onclick="FimsSupport.searchFromGridTitle('FFNLG_CRDN_AMT', this.innerText, 'match', 'part');">단속원금</th>
<th class="cmn" style="width: 160px;" onclick="FimsSupport.searchFromGridTitle('CRDN_STTS_CD', this.innerText, 'codeValue', 'FIM010');">처리상태</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>
</template>
<tbody name="tbodyList"> <tbody name="tbodyList">
</tbody> </tbody>
<template is="curly-brackets" name="tmpltRows"> <template is="curly-brackets" name="tmpltRows">
@ -180,7 +177,7 @@
</tr> </tr>
</template> </template>
<template name="tmpltNotFound"> <template name="tmpltNotFound">
<tr class="cmn"> <tr class="odd">
<td valign="top" colspan="19" class="dataTables_empty text-center">${prefixName} 정보를 찾지 못했습니다.</td> <td valign="top" colspan="19" class="dataTables_empty text-center">${prefixName} 정보를 찾지 못했습니다.</td>
</tr> </tr>
</template> </template>
@ -212,14 +209,10 @@
// pageObject // pageObject
let $P = pageObject["${pageName}"]; let $P = pageObject["${pageName}"];
// URL
$P.prefixUrl = "${prefixUrl}";
// datasetControl // datasetControl
$P.ctrl = newRent02010Control("${pageName}", "[data-doctx=${pageName}]"); $P.ctrl = newRent02010Control("${pageName}", "[data-doctx=${pageName}]");
// paging
$P.pagingSupport = new FimsPagingSupport({
ctrl: $P.ctrl // DatasetControl
, ignoreCtrlPrefix: true // ctrl.prefix 가 있더라도 무시
, linkContainer: "[name='dataPaging']" // <ul class="pagination pagination-primary" name="dataPaging">
});
/************************************************************************** /**************************************************************************
* DataTable 이벤트 * DataTable 이벤트
@ -240,7 +233,7 @@
// dataTable 클릭 이벤트 // dataTable 클릭 이벤트
$P.dataTableClick = (dataIndex) => { $P.dataTableClick = (dataIndex) => {
if (dataIndex == "") return; if (!dataIndex) return;
$P.$findn("tbodyList").setCurrentRow(dataIndex); $P.$findn("tbodyList").setCurrentRow(dataIndex);
@ -249,19 +242,25 @@
// dataTable 더블 클릭 이벤트 // dataTable 더블 클릭 이벤트
$P.dataTableDblClick = (dataIndex) => { $P.dataTableDblClick = (dataIndex) => {
if (!dataIndex) return;
// 단속 ID 가 없다면.. 종료
let crdnId = $P.ctrl.getValue("CRDN_ID");
if (!crdnId) return;
let callPurpose = "view"; let callPurpose = "view";
let trgtSttsNm = $P.ctrl.getValue("TRGT_STTS_NM"); let trgtSttsNm = $P.ctrl.getValue("TRGT_STTS_NM");
// 호출 용도를 구분한다. // 호출 용도를 구분한다.
if (trgtSttsNm == "계약서등록") { if (trgtSttsNm == "계약서등록") {
callPurpose = "update"; callPurpose = "update";
} else if (trgtSttsNm == "기타(세외수입)") { } else {
callPurpose = "update"; callPurpose = "view";
} }
let params = { let params = {
callPurpose: callPurpose callPurpose: callPurpose
, crdnId: $P.ctrl.getValue("CRDN_ID") , crdnId: crdnId
}; };
$P.ctrl.getInfo(params); $P.ctrl.getInfo(params);
@ -275,13 +274,6 @@
/************************************************************************** /**************************************************************************
* 사용자 함수(function) * 사용자 함수(function)
**************************************************************************/ **************************************************************************/
// URL 설정
$P.setUrl = (prefixUrl) => {
$P.ctrl.urls.load = wctx.url(prefixUrl + "/010/list.do"); // 검색
$P.ctrl.urls.remove = wctx.url(prefixUrl + "/010/removeLsctMpng.do"); // 삭제
$P.ctrl.urls.getInfo = wctx.url(prefixUrl + "/020/info.do"); // 상세 정보
}
// 임대계약서 등록 // 임대계약서 등록
$P.createInfo = (params) => { $P.createInfo = (params) => {
if (!params) return; if (!params) return;
@ -332,7 +324,6 @@
$P.fnReset = () => { $P.fnReset = () => {
// 초기화 // 초기화
$P.findn("frmSearch").reset(); // 화면 초기화 $P.findn("frmSearch").reset(); // 화면 초기화
$P.ctrl.dataset.clear(); // dataset 초기화
AppSupport.initDatepicker($P.findn("frmSearch")); // 달력 초기화 AppSupport.initDatepicker($P.findn("frmSearch")); // 달력 초기화
AppSupport.initDetailSearchButton($P.findn("frmSearch")); // 상세검색 버튼 화살표 AppSupport.initDetailSearchButton($P.findn("frmSearch")); // 상세검색 버튼 화살표
@ -350,25 +341,20 @@
// $P.$findn("schCrdnYmdTo").datepicker("setDate", TODAY()); // 단속 일자 종료 // $P.$findn("schCrdnYmdTo").datepicker("setDate", TODAY()); // 단속 일자 종료
$P.$findn("byOutput").val("동적 검색"); // 동적 검색 $P.$findn("byOutput").val("동적 검색"); // 동적 검색
// dataset 초기화
$P.ctrl.dataset.clear();
// URL 설정 // URL 설정
$P.setUrl("${prefixUrl}"); $P.ctrl.urls.load = wctx.url($P.prefixUrl + "/010/list.do"); // 검색
$P.ctrl.urls.remove = wctx.url($P.prefixUrl + "/010/removeLsctMpng.do"); // 삭제
$P.ctrl.urls.getInfo = wctx.url($P.prefixUrl + "/020/info.do"); // 상세 정보
// 버튼 설정 // Tab 버튼 설정
$($P.find(".nav-link.active")).removeClass("active"); // 기존의 활성화된 탭에서 active 클래스 제거 $($P.find(".nav-link.active")).removeClass("active"); // 기존의 활성화된 탭에서 active 클래스 제거
$P.$findn("tabItem0").addClass("active"); // 새로운 탭에 active 클래스 추가 $P.$findn("tabItem0").addClass("active"); // 새로운 탭에 active 클래스 추가
let tabName = $P.$findn("tabMain").find("button.active").text().trim(); let tabName = $P.$findn("tabMain").find("button.active").text().trim();
$P.setButton(tabName); $P.setButton(tabName);
// 그리드 th
let colContent = $P.findn("tmpltCols").content;
let cols = $(colContent).find(".cmn");
let colsOuterHTML = "";
cols.each(function() {
colsOuterHTML += this.outerHTML;
});
$P.findn("tableRspns").changeColumn(colsOuterHTML);
} }
// 검색 // 검색
@ -494,17 +480,20 @@
// 이벤트 설정 // 이벤트 설정
$P.setEvent = () => { $P.setEvent = () => {
// 기본 버튼 이벤트 // 기본 버튼 이벤트
$P.$findn("btnReset").on("click", () => { $P.fnReset() }); // 초기화 $P.$findn("btnReset").on("click", () => $P.fnReset()); // 초기화
$P.$findn("btnSearch").on("click", () => { $P.fnSearchList() }); // 검색 $P.$findn("btnSearch").on("click", () => $P.fnSearchList()); // 검색
$P.$findn("btnExcel").on("click", () => { $P.fnExcel() }); // 엑셀 $P.$findn("btnExcel").on("click", () => $P.fnExcel()); // 엑셀
// 업무 버튼 이벤트 // 업무 버튼 이벤트
$P.$findn("btnCreate").on("click", () => { $P.fnCreate(); }); // 등록 $P.$findn("btnCreate").on("click", function() {
$P.$findn("btnRemove").on("click", () => { $P.fnRemove(); }); // 삭제 $P.fnCreate($P.$findn("btnCreate").attr("title")); // 등록
});
$P.$findn("btnRemove").on("click", function() {
$P.fnRemove($P.$findn("btnRemove").attr("title")); // 삭제
});
// DataTables width 변경 조정 // DataTables width 변경 조정
Componentization.fnMakeResizableTable($P.findn("tableRspns")); Componentization.fnMakeResizableTable($P.findn("tableRspns"));
// DataTables 스크롤 이벤트 생성 // DataTables 스크롤 이벤트 생성
Componentization.fnMakeScrollableTable($P.findn("tableRspns"), $P.scrollDataList); Componentization.fnMakeScrollableTable($P.findn("tableRspns"), $P.scrollDataList);
} }

@ -182,25 +182,19 @@
$P.$findn("photoMainWrapper").addClass("w-px-1050 min-w-px-640"); $P.$findn("photoMainWrapper").addClass("w-px-1050 min-w-px-640");
// URL
$P.prefixUrl = "${prefixUrl}";
// infoDialog 호출 용도(view 조회(편집불가), create 등록, update 수정)
$P.callPurpose = "${callPurpose}";
// datasetControl // datasetControl
$P.ctrl = newRent02020Control("${pageName}", "[data-doctx=${pageName}]"); $P.ctrl = newRent02020Control("${pageName}", "[data-doctx=${pageName}]");
// 단속 사진 // 단속 사진
$P.existFileArr = []; $P.existFileArr = [];
$P.localUploadArr = []; $P.localUploadArr = [];
// infoDialog 호출 용도(view 조회(편집불가), create 등록, update 수정)
$P.callPurpose = "${callPurpose}";
// URL
$P.prefixUrl = "${prefixUrl}";
/************************************************************************** /**************************************************************************
* 사용자 함수(function) * 사용자 함수(function)
**************************************************************************/ **************************************************************************/
// URL 설정
$P.setUrl = (prefixUrl) => {
$P.ctrl.urls.load = wctx.url(prefixUrl + "/020/info.do") // 검색
$P.ctrl.urls.getInfo = wctx.url(prefixUrl + "/040/info.do"); // 임대차계약 상세 정보 조회
}
// 임대차계약 첨부 파일 조회 // 임대차계약 첨부 파일 조회
$P.fnSearchFileList = (lsctId) => { $P.fnSearchFileList = (lsctId) => {
let tableFileList = $P.findn("fileList"); // table element 찾기 let tableFileList = $P.findn("fileList"); // table element 찾기
@ -259,7 +253,8 @@
$P.findn("frmEdit").reset(); $P.findn("frmEdit").reset();
// URL 설정 // URL 설정
$P.setUrl($P.prefixUrl); $P.ctrl.urls.load = wctx.url($P.prefixUrl + "/020/info.do") // 검색
$P.ctrl.urls.getInfo = wctx.url($P.prefixUrl + "/040/info.do"); // 임대차계약 상세 정보 조회
// //
if ($P.callPurpose == "view") { if ($P.callPurpose == "view") {
@ -286,7 +281,7 @@
// 이벤트 // 이벤트
$P.setEvent = () => { $P.setEvent = () => {
// 버튼 이벤트 // 버튼 이벤트
$P.$findn("btnUpdateLsct").on("click", () => { $P.fnUpdateLsct(); }); // 임대차계약 수정 $P.$findn("btnUpdateLsct").on("click", () => $P.fnUpdateLsct()); // 임대차계약 수정
} }
/************************************************************************** /**************************************************************************

@ -193,22 +193,18 @@
// pageObject // pageObject
let $P = pageObject["${pageName}"]; let $P = pageObject["${pageName}"];
// URL
$P.prefixUrl = "${prefixUrl}";
// infoDialog 호출 용도(view 조회(편집불가), create 등록, update 수정)
$P.callPurpose = "${callPurpose}";
// datasetControl // datasetControl
$P.ctrl = newRent02040Control("${pageName}", "[data-doctx=${pageName}]"); $P.ctrl = newRent02040Control("${pageName}", "[data-doctx=${pageName}]");
// 파일 리스트 // 파일 리스트
$P.fileListArr = new Array(); $P.fileListArr = new Array();
// infoDialog 호출 용도(view 조회(편집불가), create 등록, update 수정)
$P.callPurpose = "${callPurpose}";
/************************************************************************** /**************************************************************************
* 사용자 함수(function) * 사용자 함수(function)
**************************************************************************/ **************************************************************************/
// URL 설정
$P.setUrl = (prefixUrl) => {
$P.ctrl.urls.create = wctx.url(prefixUrl + "/040/createLsct.do") // 등록
$P.ctrl.urls.update = wctx.url(prefixUrl + "/040/updateLsct.do") // 수정
}
// 우편번호 검색 결과 // 우편번호 검색 결과
$P.callbackSearchAddr = (obj) => { $P.callbackSearchAddr = (obj) => {
$P.$findn("hirerAddr").val(obj.ADDR); // 주소 $P.$findn("hirerAddr").val(obj.ADDR); // 주소
@ -356,19 +352,19 @@
**************************************************************************/ **************************************************************************/
// 업무 구분 변경 이벤트 // 업무 구분 변경 이벤트
$P.fnReset = (initSearchYN) => { $P.fnReset = (initSearchYN) => {
// 화면 초기화 // 초기화
$P.findn("frmEdit").reset(); $P.findn("frmEdit").reset(); // 화면 초기화
AppSupport.initDatepicker($P.findn("frmEdit")); // 달력 초기화
// URL 설정
$P.setUrl("${prefixUrl}");
// 기본 데이터 설정 // 기본 데이터 설정
$P.$findn("entId").val("${entId}"); $P.$findn("entId").val("${entId}");
$P.$findn("crdnId").val("${crdnId}"); $P.$findn("crdnId").val("${crdnId}");
AppSupport.initDatepicker($P.findn("frmEdit")); // 달력 초기화
$P.$findn("ctrtBgngYmd").datepicker("setDate", TODAY()); // 계약 시작 일자 $P.$findn("ctrtBgngYmd").datepicker("setDate", TODAY()); // 계약 시작 일자
$P.$findn("ctrtEndYmd").datepicker("setDate", TODAY()); // 계약 종료 일자 $P.$findn("ctrtEndYmd").datepicker("setDate", TODAY()); // 계약 종료 일자
// URL 설정
$P.ctrl.urls.create = wctx.url($P.prefixUrl + "/040/createLsct.do"); // 등록
$P.ctrl.urls.update = wctx.url($P.prefixUrl + "/040/updateLsct.do"); // 수정
} }
// 우편번호 검색 // 우편번호 검색
@ -455,10 +451,10 @@
}); });
// 기본 버튼 이벤트 // 기본 버튼 이벤트
$P.$findn("btnZipCode").on("click", () => { $P.fnZipCode() }); // 우편번호 검색 버튼 클릭 이벤트 $P.$findn("btnZipCode").on("click", () => $P.fnZipCode()); // 우편번호 검색 버튼 클릭 이벤트
// 버튼 이벤트
$P.$findn("btnAddFile").on("click", () => $P.$findn("uploadFiles").trigger("click")); // 파일 등록 버튼 클릭 이벤트 $P.$findn("btnAddFile").on("click", () => $P.$findn("uploadFiles").trigger("click")); // 파일 등록 버튼 클릭 이벤트
$P.$findn("btnSave").on("click", () => { $P.fnSave() }); // 저장 버튼 클릭 이벤트 // 버튼 이벤트
$P.$findn("btnSave").on("click", () => $P.fnSave()); // 저장 버튼 클릭 이벤트
} }
/************************************************************************** /**************************************************************************

@ -139,41 +139,38 @@
<table class="table-layout-fixed dataTable datatables-ajax table table-bordered no-footer" aria-describedby="DataTables_Table_0_info"> <table class="table-layout-fixed dataTable datatables-ajax table table-bordered no-footer" aria-describedby="DataTables_Table_0_info">
<thead class="sticky-thead"> <thead class="sticky-thead">
<tr name="theadTr" data-search-target="[data-doctx='${pageName}']"> <tr name="theadTr" data-search-target="[data-doctx='${pageName}']">
</tr>
</thead>
<template name="tmpltCols">
<th class="cmn" style="width: 72px;">No.</th>
<th class="cmn" style="width: 56px;"><input type="checkbox" class="form-check-input" name="gridAllCheckbox" onchange="pageObject['${pageName}'].dataTableCheckbox(this, this.checked);" /></th>
<th class="cmn" style="width: 160px;">업무구분</th>
<th class="cmn" style="width: 120px;">대상여부</th>
<th class="cmn" style="width: 180px;" onclick="FimsSupport.searchFromGridTitle('DMND_DT', this.innerText, 'ymd', '');">요청일시</th>
<th class="cmn" style="width: 160px;" onclick="FimsSupport.searchFromGridTitle('RQSTR_NM', this.innerText, 'match', 'perfect');">요청자</th>
<th class="cmn" style="width: 160px;" onclick="FimsSupport.searchFromGridTitle('CHG_APRV_STTS', this.innerText, 'codeValue', 'CMN010');">승인상태</th>
<th class="cmn" style="width: 180px;" onclick="FimsSupport.searchFromGridTitle('CHG_APRV_DT', this.innerText, 'ymd', '');">승인일시</th>
<th class="cmn" style="width: 160px;" onclick="FimsSupport.searchFromGridTitle('CHG_AUTZR_NM', this.innerText, 'match', 'perfect');">승인자</th>
<th class="cmn" style="width: 160px;" onclick="FimsSupport.searchFromGridTitle('CHG_APRV_RSN', this.innerText, 'match', 'part');">승인사유</th>
<th class="cmn" style="width: 200px;" onclick="FimsSupport.searchFromGridTitle('ENT_NM', this.innerText, 'match', 'part');">기업명</th>
<th class="cmn" style="width: 160px;" onclick="FimsSupport.searchFromGridTitle('ENT_REG_NO', this.innerText, 'match', 'part');">법인(사업자)번호</th>
<th class="cmn" style="width: 180px;" onclick="FimsSupport.searchFromGridTitle('CRDN_YMD', this.innerText, 'ymd', '');">단속일시</th>
<th class="cmn" style="width: 160px;" onclick="FimsSupport.searchFromGridTitle('VHRNO', this.innerText, 'match', 'part');">자동차등록번호</th>
<th class="cmn" style="width: 180px;" onclick="FimsSupport.searchFromGridTitle('CTRT_BGNG_DT', this.innerText, 'ymd', '');">계약시작일시</th>
<th class="cmn" style="width: 180px;" onclick="FimsSupport.searchFromGridTitle('CTRT_END_DT', this.innerText, 'ymd', '');">계약종료일시</th>
<th class="cmn" style="width: 100px;" onclick="FimsSupport.searchFromGridTitle('HIRER_SE_CD', this.innerText, 'codeValue', 'FIM089');">임차인구분</th>
<th class="cmn" style="width: 160px;" onclick="FimsSupport.searchFromGridTitle('HIRER_REG_NO', this.innerText, 'match', 'part');">임차인번호</th>
<th class="cmn" style="width: 200px;" onclick="FimsSupport.searchFromGridTitle('HIRER_NM', this.innerText, 'match', 'part');">임차인명</th>
<th class="cmn" style="width: 160px;" onclick="FimsSupport.searchFromGridTitle('HIRER_TELNO', this.innerText, 'match', 'part');">전화번호</th>
<th class="cmn" style="width: 160px;" onclick="FimsSupport.searchFromGridTitle('HIRER_MBL_TELNO', this.innerText, 'match', 'part');">휴대전화번호</th>
<th class="cmn" style="width: 120px;" onclick="FimsSupport.searchFromGridTitle('CRDN_STDG_NM', this.innerText, 'match', 'part');">단속법정동</th>
<th class="cmn" style="width: 280px;" onclick="FimsSupport.searchFromGridTitle('CRDN_PLC', this.innerText, 'match', 'part');">단속장소</th>
<th class="cmn" style="width: 120px;" onclick="FimsSupport.searchFromGridTitle('FFNLG_CRDN_AMT', this.innerText, 'match', 'part');">단속원금</th>
<th class="cmn" style="width: 160px;" onclick="FimsSupport.searchFromGridTitle('CRDN_STTS_CD', this.innerText, 'codeValue', 'FIM010');">처리상태</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>
</template>
<th class="cmn" style="width: 72px;">No.</th>
<th class="cmn" style="width: 56px;"><input type="checkbox" class="form-check-input" name="gridAllCheckbox" onchange="pageObject['${pageName}'].dataTableCheckbox(this, this.checked);" /></th>
<th class="cmn" style="width: 160px;">업무구분</th>
<th class="cmn" style="width: 120px;">대상여부</th>
<th class="cmn" style="width: 180px;" onclick="FimsSupport.searchFromGridTitle('DMND_DT', this.innerText, 'ymd', '');">요청일시</th>
<th class="cmn" style="width: 160px;" onclick="FimsSupport.searchFromGridTitle('RQSTR_NM', this.innerText, 'match', 'perfect');">요청자</th>
<th class="cmn" style="width: 160px;" onclick="FimsSupport.searchFromGridTitle('CHG_APRV_STTS', this.innerText, 'codeValue', 'CMN010');">승인상태</th>
<th class="cmn" style="width: 180px;" onclick="FimsSupport.searchFromGridTitle('CHG_APRV_DT', this.innerText, 'ymd', '');">승인일시</th>
<th class="cmn" style="width: 160px;" onclick="FimsSupport.searchFromGridTitle('CHG_AUTZR_NM', this.innerText, 'match', 'perfect');">승인자</th>
<th class="cmn" style="width: 160px;" onclick="FimsSupport.searchFromGridTitle('CHG_APRV_RSN', this.innerText, 'match', 'part');">승인사유</th>
<th class="cmn" style="width: 200px;" onclick="FimsSupport.searchFromGridTitle('ENT_NM', this.innerText, 'match', 'part');">기업명</th>
<th class="cmn" style="width: 160px;" onclick="FimsSupport.searchFromGridTitle('ENT_REG_NO', this.innerText, 'match', 'part');">법인(사업자)번호</th>
<th class="cmn" style="width: 180px;" onclick="FimsSupport.searchFromGridTitle('CRDN_YMD', this.innerText, 'ymd', '');">단속일시</th>
<th class="cmn" style="width: 160px;" onclick="FimsSupport.searchFromGridTitle('VHRNO', this.innerText, 'match', 'part');">자동차등록번호</th>
<th class="cmn" style="width: 180px;" onclick="FimsSupport.searchFromGridTitle('CTRT_BGNG_DT', this.innerText, 'ymd', '');">계약시작일시</th>
<th class="cmn" style="width: 180px;" onclick="FimsSupport.searchFromGridTitle('CTRT_END_DT', this.innerText, 'ymd', '');">계약종료일시</th>
<th class="cmn" style="width: 100px;" onclick="FimsSupport.searchFromGridTitle('HIRER_SE_CD', this.innerText, 'codeValue', 'FIM089');">임차인구분</th>
<th class="cmn" style="width: 160px;" onclick="FimsSupport.searchFromGridTitle('HIRER_REG_NO', this.innerText, 'match', 'part');">임차인번호</th>
<th class="cmn" style="width: 200px;" onclick="FimsSupport.searchFromGridTitle('HIRER_NM', this.innerText, 'match', 'part');">임차인명</th>
<th class="cmn" style="width: 160px;" onclick="FimsSupport.searchFromGridTitle('HIRER_TELNO', this.innerText, 'match', 'part');">전화번호</th>
<th class="cmn" style="width: 160px;" onclick="FimsSupport.searchFromGridTitle('HIRER_MBL_TELNO', this.innerText, 'match', 'part');">휴대전화번호</th>
<th class="cmn" style="width: 120px;" onclick="FimsSupport.searchFromGridTitle('CRDN_STDG_NM', this.innerText, 'match', 'part');">단속법정동</th>
<th class="cmn" style="width: 280px;" onclick="FimsSupport.searchFromGridTitle('CRDN_PLC', this.innerText, 'match', 'part');">단속장소</th>
<th class="cmn" style="width: 120px;" onclick="FimsSupport.searchFromGridTitle('FFNLG_CRDN_AMT', this.innerText, 'match', 'part');">단속원금</th>
<th class="cmn" style="width: 160px;" onclick="FimsSupport.searchFromGridTitle('CRDN_STTS_CD', this.innerText, 'codeValue', 'FIM010');">처리상태</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>
</thead>
<tbody name="tbodyList"> <tbody name="tbodyList">
</tbody> </tbody>
<template is="curly-brackets" name="tmpltRows"> <template is="curly-brackets" name="tmpltRows">
@ -211,7 +208,7 @@
</tr> </tr>
</template> </template>
<template name="tmpltNotFound"> <template name="tmpltNotFound">
<tr class="cmn"> <tr class="odd">
<td valign="top" colspan="30" class="dataTables_empty text-center">${prefixName} 정보를 찾지 못했습니다.</td> <td valign="top" colspan="30" class="dataTables_empty text-center">${prefixName} 정보를 찾지 못했습니다.</td>
</tr> </tr>
</template> </template>
@ -243,14 +240,10 @@
// pageObject // pageObject
let $P = pageObject["${pageName}"]; let $P = pageObject["${pageName}"];
// URL
$P.prefixUrl = "${prefixUrl}";
// datasetControl // datasetControl
$P.ctrl = newRent02050Control("${pageName}", "[data-doctx=${pageName}]"); $P.ctrl = newRent02050Control("${pageName}", "[data-doctx=${pageName}]");
// paging
$P.pagingSupport = new FimsPagingSupport({
ctrl: $P.ctrl // DatasetControl
, ignoreCtrlPrefix: true // ctrl.prefix 가 있더라도 무시
, linkContainer: "[name='dataPaging']" // <ul class="pagination pagination-primary" name="dataPaging">
});
/************************************************************************** /**************************************************************************
* DataTable 이벤트 * DataTable 이벤트
@ -273,7 +266,7 @@
// dataTable 클릭 이벤트 // dataTable 클릭 이벤트
$P.dataTableClick = (dataIndex) => { $P.dataTableClick = (dataIndex) => {
if (dataIndex == "") return; if (!dataIndex) return;
$P.$findn("tbodyList").setCurrentRow(dataIndex); $P.$findn("tbodyList").setCurrentRow(dataIndex);
@ -282,9 +275,15 @@
// dataTable 더블 클릭 이벤트 // dataTable 더블 클릭 이벤트
$P.dataTableDblClick = (dataIndex) => { $P.dataTableDblClick = (dataIndex) => {
if (!dataIndex) return;
// 임대차계약 매핑 ID 가 없다면.. 종료
let lsctMpngId = $P.ctrl.getValue("LSCT_MPNG_ID");
if (!lsctMpngId) return;
let params = { let params = {
callPurpose: "view" callPurpose: "view"
, lsctMpngId: $P.ctrl.getValue("LSCT_MPNG_ID") , lsctMpngId: lsctMpngId
}; };
$P.ctrl.getInfo(params); $P.ctrl.getInfo(params);
@ -298,14 +297,6 @@
/************************************************************************** /**************************************************************************
* 사용자 함수(function) * 사용자 함수(function)
**************************************************************************/ **************************************************************************/
// URL 설정
$P.setUrl = (prefixUrl) => {
$P.ctrl.urls.load = wctx.url(prefixUrl + "/050/list.do"); // 검색
$P.ctrl.urls.create = wctx.url(prefixUrl + "/050/createAprv.do") // 승인 요청
$P.ctrl.urls.remove = wctx.url(prefixUrl + "/050/removeAprv.do") // 승인 요청 취소
$P.ctrl.urls.getInfo = wctx.url(prefixUrl + "/060/info.do"); // 상세 정보
}
// 버튼 설정 // 버튼 설정
$P.setButton = (tabName) => { $P.setButton = (tabName) => {
// tab // tab
@ -328,7 +319,6 @@
$P.fnReset = () => { $P.fnReset = () => {
// 초기화 // 초기화
$P.findn("frmSearch").reset(); // 화면 초기화 $P.findn("frmSearch").reset(); // 화면 초기화
$P.ctrl.dataset.clear(); // dataset 초기화
AppSupport.initDatepicker($P.findn("frmSearch")); // 달력 초기화 AppSupport.initDatepicker($P.findn("frmSearch")); // 달력 초기화
AppSupport.initDetailSearchButton($P.findn("frmSearch")); // 상세검색 버튼 화살표 AppSupport.initDetailSearchButton($P.findn("frmSearch")); // 상세검색 버튼 화살표
@ -346,20 +336,16 @@
$P.$findn("schCrdnYmdTo").datepicker("setDate", TODAY()); // 단속 일자 종료 $P.$findn("schCrdnYmdTo").datepicker("setDate", TODAY()); // 단속 일자 종료
$P.$findn("byOutput").val("동적 검색"); // 동적 검색 $P.$findn("byOutput").val("동적 검색"); // 동적 검색
// URL 설정 // dataset 초기화
$P.setUrl("${prefixUrl}"); $P.ctrl.dataset.clear();
// 그리드 th
let colContent = $P.findn("tmpltCols").content;
let cols = $(colContent).find(".cmn");
let colsOuterHTML = "";
cols.each(function() { // URL 설정
colsOuterHTML += this.outerHTML; $P.ctrl.urls.load = wctx.url($P.prefixUrl + "/050/list.do"); // 검색
}); $P.ctrl.urls.create = wctx.url($P.prefixUrl + "/050/createAprv.do"); // 승인 요청
$P.findn("tableRspns").changeColumn(colsOuterHTML); $P.ctrl.urls.remove = wctx.url($P.prefixUrl + "/050/removeAprv.do"); // 승인 요청 취소
$P.ctrl.urls.getInfo = wctx.url($P.prefixUrl + "/060/info.do"); // 상세 정보
// 버튼 설정 // Tab 버튼 설정
$($P.find(".nav-link.active")).removeClass("active"); // 기존의 활성화된 탭에서 active 클래스 제거 $($P.find(".nav-link.active")).removeClass("active"); // 기존의 활성화된 탭에서 active 클래스 제거
$P.$findn("tabItem0").addClass("active"); // 새로운 탭에 active 클래스 추가 $P.$findn("tabItem0").addClass("active"); // 새로운 탭에 active 클래스 추가
@ -498,9 +484,9 @@
// 이벤트 설정 // 이벤트 설정
$P.setEvent = () => { $P.setEvent = () => {
// 기본 버튼 이벤트 // 기본 버튼 이벤트
$P.$findn("btnReset").on("click", () => { $P.fnReset() }); // 초기화 $P.$findn("btnReset").on("click", () => $P.fnReset()); // 초기화
$P.$findn("btnSearch").on("click", () => { $P.fnSearchList() }); // 검색 $P.$findn("btnSearch").on("click", () => $P.fnSearchList()); // 검색
$P.$findn("btnExcel").on("click", () => { $P.fnExcel() }); // 엑셀 $P.$findn("btnExcel").on("click", () => $P.fnExcel()); // 엑셀
// 업무 버튼 이벤트 // 업무 버튼 이벤트
$P.$findn("btnCreate").on("click", () => { $P.$findn("btnCreate").on("click", () => {

@ -195,21 +195,18 @@
// pageObject // pageObject
let $P = pageObject["${pageName}"]; let $P = pageObject["${pageName}"];
// URL
$P.prefixUrl = "${prefixUrl}";
// infoDialog 호출 용도(view 조회(편집불가), create 등록, update 수정)
$P.callPurpose = "${callPurpose}";
// datasetControl // datasetControl
$P.ctrl = newRent02060Control("${pageName}", "[data-doctx=${pageName}]"); $P.ctrl = newRent02060Control("${pageName}", "[data-doctx=${pageName}]");
// 파일 리스트 // 파일 리스트
$P.fileListArr = new Array(); $P.fileListArr = new Array();
// infoDialog 호출 용도(view 조회(편집불가), create 등록, update 수정)
$P.callPurpose = "${callPurpose}";
/************************************************************************** /**************************************************************************
* 사용자 함수(function) * 사용자 함수(function)
**************************************************************************/ **************************************************************************/
// URL 설정
$P.setUrl = (prefixUrl) => {
$P.ctrl.urls.load = wctx.url(prefixUrl + "/060/list.do") // 검색
}
// 첨부파일 조회 // 첨부파일 조회
$P.fnSearchFileList = (lsctId) => { $P.fnSearchFileList = (lsctId) => {
let tableFileList = $P.findn("fileList"); // table element 찾기 let tableFileList = $P.findn("fileList"); // table element 찾기
@ -268,7 +265,7 @@
$P.findn("frmEdit").reset(); $P.findn("frmEdit").reset();
// URL 설정 // URL 설정
$P.setUrl("${prefixUrl}"); $P.ctrl.urls.load = wctx.url($P.prefixUrl + "/060/list.do"); // 검색
} }
/************************************************************************** /**************************************************************************

@ -215,14 +215,10 @@
// pageObject // pageObject
let $P = pageObject["${pageName}"]; let $P = pageObject["${pageName}"];
// URL
$P.prefixUrl = "${prefixUrl}";
// datasetControl // datasetControl
$P.ctrl = newRent03010Control("${pageName}", "[data-doctx=${pageName}]"); $P.ctrl = newRent03010Control("${pageName}", "[data-doctx=${pageName}]");
// paging
$P.pagingSupport = new FimsPagingSupport({
ctrl: $P.ctrl // DatasetControl
, ignoreCtrlPrefix: true // ctrl.prefix 가 있더라도 무시
, linkContainer: "[name='dataPaging']" // <ul class="pagination pagination-primary" name="dataPaging">
});
/************************************************************************** /**************************************************************************
* DataTable 이벤트 * DataTable 이벤트
@ -238,7 +234,7 @@
// dataTable 클릭 이벤트 // dataTable 클릭 이벤트
$P.dataTableClick = (dataIndex) => { $P.dataTableClick = (dataIndex) => {
if (dataIndex == "") return; if (!dataIndex) return;
$P.$findn("tbodyList").setCurrentRow(dataIndex); $P.$findn("tbodyList").setCurrentRow(dataIndex);
@ -247,6 +243,8 @@
// dataTable 더블 클릭 이벤트 // dataTable 더블 클릭 이벤트
$P.dataTableDblClick = (dataIndex) => { $P.dataTableDblClick = (dataIndex) => {
if (!dataIndex) return;
// //
let params = { let params = {
callPageName: "${pageName}" callPageName: "${pageName}"
@ -267,24 +265,17 @@
/************************************************************************** /**************************************************************************
* 사용자 함수(function) * 사용자 함수(function)
**************************************************************************/ **************************************************************************/
// URL 설정
$P.setUrl = (prefixUrl) => {
$P.ctrl.urls.load = wctx.url(prefixUrl + "/010/list.do"); // 검색
$P.ctrl.urls.getInfo = wctx.url(prefixUrl + "/020/info.do"); // 상세 정보
}
/************************************************************************** /**************************************************************************
* 버튼 clickEvent * 버튼 clickEvent
**************************************************************************/ **************************************************************************/
// 초기화 // 초기화
$P.fnReset = () => { $P.fnReset = () => {
// 화면 초기화 // 초기화
$P.findn("frmSearch").reset(); $P.findn("frmSearch").reset(); // 화면 초기화
// dataset 초기화 AppSupport.initDatepicker($P.findn("frmSearch")); // 달력 초기화
$P.ctrl.dataset.clear(); AppSupport.initDetailSearchButton($P.findn("frmSearch")); // 상세검색 버튼 화살표
// URL 설정
$P.setUrl("${prefixUrl}");
// input, select 초기화 // input, select 초기화
let searchForm = $P.$findn("frmSearch"); let searchForm = $P.$findn("frmSearch");
@ -293,15 +284,19 @@
searchForm.find("input[type='hidden']").val(""); searchForm.find("input[type='hidden']").val("");
searchForm.find("select").each(function(){ $(this).find("option:eq(0)").prop("selected", true); }); searchForm.find("select").each(function(){ $(this).find("option:eq(0)").prop("selected", true); });
AppSupport.initDatepicker($P.findn("frmSearch")); // 달력 초기화
AppSupport.initDetailSearchButton($P.findn("frmSearch")); // 상세검색 버튼 화살표
// 기본 데이터 설정 // 기본 데이터 설정
$P.$findn("schCrdnYmdFrom").datepicker("setDate", "2024-06-01"); // 단속 일자 시작 $P.$findn("schCrdnYmdFrom").datepicker("setDate", "2024-06-01"); // 단속 일자 시작
$P.$findn("schCrdnYmdTo").datepicker("setDate", TODAY()); // 단속 일자 종료 $P.$findn("schCrdnYmdTo").datepicker("setDate", TODAY()); // 단속 일자 종료
$P.$findn("schVhrno").val("12보3663"); // 자동차등록번호 $P.$findn("schVhrno").val("12보3663"); // 자동차등록번호
$P.$findn("byOutput").val("동적 검색"); // 동적 검색 $P.$findn("byOutput").val("동적 검색"); // 동적 검색
// dataset 초기화
$P.ctrl.dataset.clear();
// URL 설정
$P.ctrl.urls.load = wctx.url($P.prefixUrl + "/010/list.do"); // 검색
$P.ctrl.urls.getInfo = wctx.url($P.prefixUrl + "/020/info.do"); // 상세 정보
// 그리드 th // 그리드 th
let colContent = $P.findn("tmpltCols").content; let colContent = $P.findn("tmpltCols").content;
let cols = $(colContent).find(".cmn"); let cols = $(colContent).find(".cmn");
@ -355,13 +350,12 @@
// 이벤트 설정 // 이벤트 설정
$P.setEvent = () => { $P.setEvent = () => {
// 기본 버튼 이벤트 // 기본 버튼 이벤트
$P.$findn("btnReset").on("click", () => { $P.fnReset() }); // 초기화 $P.$findn("btnReset").on("click", () => $P.fnReset()); // 초기화
$P.$findn("btnSearch").on("click", () => { $P.fnSearchList() }); // 검색 $P.$findn("btnSearch").on("click", () => $P.fnSearchList()); // 검색
$P.$findn("btnExcel").on("click", () => { $P.fnExcel() }); // 엑셀 $P.$findn("btnExcel").on("click", () => $P.fnExcel()); // 엑셀
// DataTables width 변경 조정 // DataTables width 변경 조정
Componentization.fnMakeResizableTable($P.findn("tableRspns")); Componentization.fnMakeResizableTable($P.findn("tableRspns"));
// DataTables 스크롤 이벤트 생성 // DataTables 스크롤 이벤트 생성
Componentization.fnMakeScrollableTable($P.findn("tableRspns"), $P.scrollDataList); Componentization.fnMakeScrollableTable($P.findn("tableRspns"), $P.scrollDataList);
} }

@ -61,18 +61,26 @@
<label is="name-label" class="col-form-label bg-lighter pe-2 w-px-120 text-sm-end" for="rtpyrNm">납부자명</label> <label is="name-label" class="col-form-label bg-lighter pe-2 w-px-120 text-sm-end" for="rtpyrNm">납부자명</label>
<input is="id-input" type="text" class="form-control w-40" name="rtpyrNm" data-map="RTPYR_NM" readonly /> <input is="id-input" type="text" class="form-control w-40" name="rtpyrNm" data-map="RTPYR_NM" readonly />
</div> </div>
<div class="col-md-4"> <div class="col-md-6">
<label is="name-label" class="col-form-label bg-lighter pe-2 w-px-120 text-sm-end" for="levyPcptax">부과금액</label> <label is="name-label" class="col-form-label bg-lighter pe-2 w-px-120 text-sm-end" for="ffnlgAmt">과태료금액</label>
<input is="id-input" type="text" class="form-control w-40" name="levyPcptax" data-map="LEVY_PCPTAX" data-fmt-type="number" readonly /> <input is="id-input" type="text" class="form-control w-40" name="ffnlgAmt" data-map="FFNLG_AMT" data-fmt-type="number" readonly />
</div>
<div class="col-md-4">
<label is="name-label" class="col-form-label bg-lighter pe-2 w-px-120 text-sm-end" for="levyAdamt">부과가산금</label>
<input is="id-input" type="text" class="form-control w-40" name="levyAdamt" data-map="LEVY_ADAMT" data-fmt-type="number" readonly />
</div> </div>
<div class="col-md-4"> <div class="col-md-6">
<label is="name-label" class="col-form-label bg-lighter pe-2 w-px-120 text-sm-end" for="sumAmt">미납금액</label> <label is="name-label" class="col-form-label bg-lighter pe-2 w-px-120 text-sm-end" for="advntceAmt">사전감경금액</label>
<input is="id-input" type="text" class="form-control w-40 fw-bold text-red" name="sumAmt" data-map="SUM_AMT" data-fmt-type="number" readonly /> <input is="id-input" type="text" class="form-control w-40" name="advntceAmt" data-map="ADVNTCE_AMT" data-fmt-type="number" readonly />
</div> </div>
<!-- <div class="col-md-4"> -->
<!-- <label is="name-label" class="col-form-label bg-lighter pe-2 w-px-120 text-sm-end" for="levyPcptax">부과금액</label> -->
<!-- <input is="id-input" type="text" class="form-control w-40" name="levyPcptax" data-map="LEVY_PCPTAX" data-fmt-type="number" readonly /> -->
<!-- </div> -->
<!-- <div class="col-md-4"> -->
<!-- <label is="name-label" class="col-form-label bg-lighter pe-2 w-px-120 text-sm-end" for="levyAdamt">부과가산금</label> -->
<!-- <input is="id-input" type="text" class="form-control w-40" name="levyAdamt" data-map="LEVY_ADAMT" data-fmt-type="number" readonly /> -->
<!-- </div> -->
<!-- <div class="col-md-4"> -->
<!-- <label is="name-label" class="col-form-label bg-lighter pe-2 w-px-120 text-sm-end" for="sumAmt">미납금액</label> -->
<!-- <input is="id-input" type="text" class="form-control w-40 fw-bold text-red" name="sumAmt" data-map="SUM_AMT" data-fmt-type="number" readonly /> -->
<!-- </div> -->
</div> <!-- <div class="row g-1"> --> </div> <!-- <div class="row g-1"> -->
</div> <!-- <div class="card"> --> </div> <!-- <div class="card"> -->
</form> </form>
@ -207,14 +215,14 @@
$P.$findn("photoMainWrapper").addClass("w-px-1050 min-w-px-640"); $P.$findn("photoMainWrapper").addClass("w-px-1050 min-w-px-640");
// datasetControl // URL
$P.ctrl = newRent03020Control("${pageName}", "[data-doctx=${pageName}]"); $P.prefixUrl = "${prefixUrl}";
// infoDialog 호출한 pageName // infoDialog 호출한 pageName
$P.callPageName = "${callPageName}"; $P.callPageName = "${callPageName}";
// infoDialog 호출 용도(view 조회(편집불가), create 등록, update 수정) // infoDialog 호출 용도(view 조회(편집불가), create 등록, update 수정)
$P.callPurpose = "${callPurpose}"; $P.callPurpose = "${callPurpose}";
// URL // datasetControl
$P.prefixUrl = "${prefixUrl}"; $P.ctrl = newRent03020Control("${pageName}", "[data-doctx=${pageName}]");
// 자료 이동을 위한 자료의 Index. 0부터 시작. // 자료 이동을 위한 자료의 Index. 0부터 시작.
$P.curDataIndex; $P.curDataIndex;
// 단속 사진 // 단속 사진

@ -21,6 +21,12 @@ function newRent01010Control(pageName, doctx="[data-doctx='rent01010']") {
// 검색 조건 // 검색 조건
ctrl.query = { pageNum: 1, fetchSize: DEFAULT_FETCH_SIZE }; // 1 페이지당 자료 건수 index.jsp에서 확인 ctrl.query = { pageNum: 1, fetchSize: DEFAULT_FETCH_SIZE }; // 1 페이지당 자료 건수 index.jsp에서 확인
// paging
ctrl.pagingSupport = new FimsPagingSupport({
ctrl: ctrl // DatasetControl
, ignoreCtrlPrefix: true // ctrl.prefix 가 있더라도 무시
, linkContainer: "[name='dataPaging']" // <ul class="pagination pagination-primary" name="dataPaging">
});
/************************************************************************** /**************************************************************************
* DatasetControl Events * DatasetControl Events
@ -31,22 +37,13 @@ function newRent01010Control(pageName, doctx="[data-doctx='rent01010']") {
let dataList = ctrl.dataset; let dataList = ctrl.dataset;
let empty = dataList.empty; 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 let replacer = (str, dataItem) => str
.replace(/{onclick}/gi, "pageObject['" + pageName + "'].dataTableClick('{data-index}');") .replace(/{onclick}/gi, "pageObject['" + pageName + "'].dataTableClick('{data-index}');")
.replace(/{ondblclick}/gi, "pageObject['" + pageName + "'].dataTableDblClick('{data-index}');"); .replace(/{ondblclick}/gi, "pageObject['" + pageName + "'].dataTableDblClick('{data-index}');");
let trs = empty ? let trs = empty ?
[ctrl.find("[name='tmpltNotFound']").content.querySelector(".cmn").outerHTML] [ctrl.find("[name='tmpltNotFound']").innerHTML]
: dataList.inStrings(foundTr.outerHTML, replacer); : dataList.inStrings(ctrl.find("[name='tmpltRows']").innerHTML, replacer);
let noMore = (dataList.length >= obj["Paging"]?.totalSize); // 전체 건수 let noMore = (dataList.length >= obj["Paging"]?.totalSize); // 전체 건수
let initScroll = (ctrl.query.pageNum < 2); let initScroll = (ctrl.query.pageNum < 2);
@ -62,7 +59,7 @@ function newRent01010Control(pageName, doctx="[data-doctx='rent01010']") {
$(ctrl.find("[name='gridAllCheckbox']")).prop("checked", false); $(ctrl.find("[name='gridAllCheckbox']")).prop("checked", false);
// dataTables(그리드)에 페이지 표시 pagingInfo // dataTables(그리드)에 페이지 표시 pagingInfo
pageObject[pageName].pagingSupport.setPagingInfo(obj); ctrl.pagingSupport.setPagingInfo(obj);
}; };
// 현재 선택 자료 변경 이벤트 // 현재 선택 자료 변경 이벤트

@ -21,6 +21,12 @@ function newRent01030Control(pageName, doctx="[data-doctx='rent01030']") {
// 검색 조건 // 검색 조건
ctrl.query = { pageNum: 1, fetchSize: DEFAULT_FETCH_SIZE }; // 1 페이지당 자료 건수 index.jsp에서 확인 ctrl.query = { pageNum: 1, fetchSize: DEFAULT_FETCH_SIZE }; // 1 페이지당 자료 건수 index.jsp에서 확인
// paging
ctrl.pagingSupport = new FimsPagingSupport({
ctrl: ctrl // DatasetControl
, ignoreCtrlPrefix: true // ctrl.prefix 가 있더라도 무시
, linkContainer: "[name='dataPaging']" // <ul class="pagination pagination-primary" name="dataPaging">
});
/************************************************************************** /**************************************************************************
* DatasetControl Events * DatasetControl Events
@ -31,22 +37,13 @@ function newRent01030Control(pageName, doctx="[data-doctx='rent01030']") {
let dataList = ctrl.dataset; let dataList = ctrl.dataset;
let empty = dataList.empty; 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 let replacer = (str, dataItem) => str
.replace(/{onclick}/gi, "pageObject['" + pageName + "'].dataTableClick('{data-index}');") .replace(/{onclick}/gi, "pageObject['" + pageName + "'].dataTableClick('{data-index}');")
.replace(/{ondblclick}/gi, "pageObject['" + pageName + "'].dataTableDblClick('{data-index}');"); .replace(/{ondblclick}/gi, "pageObject['" + pageName + "'].dataTableDblClick('{data-index}');");
let trs = empty ? let trs = empty ?
[ctrl.find("[name='tmpltNotFound']").content.querySelector(".cmn").outerHTML] [ctrl.find("[name='tmpltNotFound']").innerHTML]
: dataList.inStrings(foundTr.outerHTML, replacer); : dataList.inStrings(ctrl.find("[name='tmpltRows']").innerHTML, replacer);
let noMore = (dataList.length >= obj["Paging"]?.totalSize); // 전체 건수 let noMore = (dataList.length >= obj["Paging"]?.totalSize); // 전체 건수
let initScroll = (ctrl.query.pageNum < 2); let initScroll = (ctrl.query.pageNum < 2);
@ -62,7 +59,7 @@ function newRent01030Control(pageName, doctx="[data-doctx='rent01030']") {
$(ctrl.find("[name='gridAllCheckbox']")).prop("checked", false); $(ctrl.find("[name='gridAllCheckbox']")).prop("checked", false);
// dataTables(그리드)에 페이지 표시 pagingInfo // dataTables(그리드)에 페이지 표시 pagingInfo
pageObject[pageName].pagingSupport.setPagingInfo(obj); ctrl.pagingSupport.setPagingInfo(obj);
}; };
// 현재 선택 자료 변경 이벤트 // 현재 선택 자료 변경 이벤트

@ -26,6 +26,12 @@ function newRent02010Control(pageName, doctx="[data-doctx='rent02010']") {
// 검색 조건 // 검색 조건
ctrl.query = { pageNum: 1, fetchSize: DEFAULT_FETCH_SIZE }; // 1 페이지당 자료 건수 index.jsp에서 확인 ctrl.query = { pageNum: 1, fetchSize: DEFAULT_FETCH_SIZE }; // 1 페이지당 자료 건수 index.jsp에서 확인
// paging
ctrl.pagingSupport = new FimsPagingSupport({
ctrl: ctrl // DatasetControl
, ignoreCtrlPrefix: true // ctrl.prefix 가 있더라도 무시
, linkContainer: "[name='dataPaging']" // <ul class="pagination pagination-primary" name="dataPaging">
});
/************************************************************************** /**************************************************************************
* DatasetControl Events * DatasetControl Events
@ -36,22 +42,13 @@ function newRent02010Control(pageName, doctx="[data-doctx='rent02010']") {
let dataList = ctrl.dataset; let dataList = ctrl.dataset;
let empty = dataList.empty; 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 let replacer = (str, dataItem) => str
.replace(/{onclick}/gi, "pageObject['" + pageName + "'].dataTableClick('{data-index}');") .replace(/{onclick}/gi, "pageObject['" + pageName + "'].dataTableClick('{data-index}');")
.replace(/{ondblclick}/gi, "pageObject['" + pageName + "'].dataTableDblClick('{data-index}');"); .replace(/{ondblclick}/gi, "pageObject['" + pageName + "'].dataTableDblClick('{data-index}');");
let trs = empty ? let trs = empty ?
[ctrl.find("[name='tmpltNotFound']").content.querySelector(".cmn").outerHTML] [ctrl.find("[name='tmpltNotFound']").innerHTML]
: dataList.inStrings(foundTr.outerHTML, replacer); : dataList.inStrings(ctrl.find("[name='tmpltRows']").innerHTML, replacer);
let noMore = (dataList.length >= obj["Paging"]?.totalSize); // 전체 건수 let noMore = (dataList.length >= obj["Paging"]?.totalSize); // 전체 건수
let initScroll = (ctrl.query.pageNum < 2); let initScroll = (ctrl.query.pageNum < 2);
@ -67,7 +64,7 @@ function newRent02010Control(pageName, doctx="[data-doctx='rent02010']") {
$(ctrl.find("[name='gridAllCheckbox']")).prop("checked", false); $(ctrl.find("[name='gridAllCheckbox']")).prop("checked", false);
// dataTables(그리드)에 페이지 표시 pagingInfo // dataTables(그리드)에 페이지 표시 pagingInfo
pageObject[pageName].pagingSupport.setPagingInfo(obj); ctrl.pagingSupport.setPagingInfo(obj);
}; };
// 현재 선택 자료 변경 이벤트 // 현재 선택 자료 변경 이벤트

@ -28,6 +28,12 @@ function newRent02050Control(pageName, doctx="[data-doctx='rent02050']") {
// 검색 조건 // 검색 조건
ctrl.query = { pageNum: 1, fetchSize: DEFAULT_FETCH_SIZE }; // 1 페이지당 자료 건수 index.jsp에서 확인 ctrl.query = { pageNum: 1, fetchSize: DEFAULT_FETCH_SIZE }; // 1 페이지당 자료 건수 index.jsp에서 확인
// paging
ctrl.pagingSupport = new FimsPagingSupport({
ctrl: ctrl // DatasetControl
, ignoreCtrlPrefix: true // ctrl.prefix 가 있더라도 무시
, linkContainer: "[name='dataPaging']" // <ul class="pagination pagination-primary" name="dataPaging">
});
/************************************************************************** /**************************************************************************
* DatasetControl Events * DatasetControl Events
@ -38,22 +44,13 @@ function newRent02050Control(pageName, doctx="[data-doctx='rent02050']") {
let dataList = ctrl.dataset; let dataList = ctrl.dataset;
let empty = dataList.empty; 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 let replacer = (str, dataItem) => str
.replace(/{onclick}/gi, "pageObject['" + pageName + "'].dataTableClick('{data-index}');") .replace(/{onclick}/gi, "pageObject['" + pageName + "'].dataTableClick('{data-index}');")
.replace(/{ondblclick}/gi, "pageObject['" + pageName + "'].dataTableDblClick('{data-index}');"); .replace(/{ondblclick}/gi, "pageObject['" + pageName + "'].dataTableDblClick('{data-index}');");
let trs = empty ? let trs = empty ?
[ctrl.find("[name='tmpltNotFound']").content.querySelector(".cmn").outerHTML] [ctrl.find("[name='tmpltNotFound']").innerHTML]
: dataList.inStrings(foundTr.outerHTML, replacer); : dataList.inStrings(ctrl.find("[name='tmpltRows']").innerHTML, replacer);
let noMore = (dataList.length >= obj["Paging"]?.totalSize); // 전체 건수 let noMore = (dataList.length >= obj["Paging"]?.totalSize); // 전체 건수
let initScroll = (ctrl.query.pageNum < 2); let initScroll = (ctrl.query.pageNum < 2);
@ -69,7 +66,7 @@ function newRent02050Control(pageName, doctx="[data-doctx='rent02050']") {
$(ctrl.find("[name='gridAllCheckbox']")).prop("checked", false); $(ctrl.find("[name='gridAllCheckbox']")).prop("checked", false);
// dataTables(그리드)에 페이지 표시 pagingInfo // dataTables(그리드)에 페이지 표시 pagingInfo
pageObject[pageName].pagingSupport.setPagingInfo(obj); ctrl.pagingSupport.setPagingInfo(obj);
}; };
// 현재 선택 자료 변경 이벤트 // 현재 선택 자료 변경 이벤트

@ -10,9 +10,6 @@ function newRent03010Control(pageName, doctx="[data-doctx='rent03010']") {
, urls: { , urls: {
load: "/list.do" load: "/list.do"
, getInfo: "/info.do" , getInfo: "/info.do"
, create: "/create.do"
, update: "/update.do"
, remove: "/remove.do"
} }
, formats: { , formats: {
CRDN_DT: datetimeFormat CRDN_DT: datetimeFormat
@ -29,6 +26,12 @@ function newRent03010Control(pageName, doctx="[data-doctx='rent03010']") {
// 검색 조건 // 검색 조건
ctrl.query = { pageNum: 1, fetchSize: DEFAULT_FETCH_SIZE }; // 1 페이지당 자료 건수 index.jsp에서 확인 ctrl.query = { pageNum: 1, fetchSize: DEFAULT_FETCH_SIZE }; // 1 페이지당 자료 건수 index.jsp에서 확인
// paging
ctrl.pagingSupport = new FimsPagingSupport({
ctrl: ctrl // DatasetControl
, ignoreCtrlPrefix: true // ctrl.prefix 가 있더라도 무시
, linkContainer: "[name='dataPaging']" // <ul class="pagination pagination-primary" name="dataPaging">
});
/************************************************************************** /**************************************************************************
* DatasetControl Events * DatasetControl Events
@ -70,7 +73,7 @@ function newRent03010Control(pageName, doctx="[data-doctx='rent03010']") {
$(ctrl.find("[name='gridAllCheckbox']")).prop("checked", false); $(ctrl.find("[name='gridAllCheckbox']")).prop("checked", false);
// dataTables(그리드)에 페이지 표시 pagingInfo // dataTables(그리드)에 페이지 표시 pagingInfo
pageObject[pageName].pagingSupport.setPagingInfo(obj); ctrl.pagingSupport.setPagingInfo(obj);
}; };
// 현재 선택 자료 변경 이벤트 // 현재 선택 자료 변경 이벤트

Loading…
Cancel
Save