diff --git a/src/main/webapp/WEB-INF/jsp/fims/epst/epst01010-main.jsp b/src/main/webapp/WEB-INF/jsp/fims/epst/epst01010-main.jsp index 56b59dcc..eee992e2 100644 --- a/src/main/webapp/WEB-INF/jsp/fims/epst/epst01010-main.jsp +++ b/src/main/webapp/WEB-INF/jsp/fims/epst/epst01010-main.jsp @@ -292,8 +292,6 @@ var ${pageName}PrefixUrl = "/epst/epst01"; // FormFields var ${pageName}Fields = new FimsFormFields("#frmSearch--${pageName}"); - // 시군구 코드(SGG_CD) - var ${pageName}sggCd = "${sggCd}"; /************************************************************************** * DatasetControl @@ -305,7 +303,8 @@ , keymapper : info => info ? info.CON_KEY : "" , dataGetter : obj => obj.epostRcptRegList , appendData : true - , tableRenderComplete : false // dataTables 에 자료 추가 완료 여부 + , untilPageNum : 0 // 현재 페이지 번호 + , tableRenderComplete : false // dataTables 에 자료 추가 완료 여부 , formats : { SEND_DATE : dateFormat , RCEPT_YMD : dateFormat @@ -320,7 +319,7 @@ **************************************************************************/ // Dataset 변경 이벤트 ${pageName}Control.onDatasetChange = obj => { - renderList${pageName}(); + renderList${pageName}(obj.${infoPrefix}Total); $("#paging--${pageName}").setPagingInfo({ list : ${pageName}Control.dataset @@ -331,7 +330,7 @@ , func : "${pageName}Control.load({index})" }); - ${pageName}Control.tableRenderComplete = true; // dataTables 에 자료 추가 완료 + ${pageName}Control.tableRenderComplete = true; // dataTables 에 자료 추가 true }; // 현재 선택 자료 변경 이벤트 @@ -401,7 +400,11 @@ dialog.alert(showMessage); if (resp.saved) { - ${pageName}Control._load(); + // 자료 재조회 + ${pageName}Control.untilPageNum = ${pageName}Control.query.pageNum; + ${pageName}Control.query.fetchSize = ${pageName}Control.defaultFetchSize * ${pageName}Control.query.pageNum; + + ${pageName}Control.load(1); } } @@ -424,10 +427,10 @@ } /************************************************************************** - * + * DataTables 이벤트 **************************************************************************/ // DataTables에 click, dbclick 이벤트 - renderList${pageName} = () => { + renderList${pageName} = (totalSize) => { let ${infoPrefix}List = ${pageName}Control.dataset; let empty = ${infoPrefix}List.empty; @@ -440,95 +443,29 @@ .replace(/{ondblclick}/gi, "${pageName}Control.getInfo('update', '" + dataItem.getValue("CON_KEY") + "');") ); - $("#tbody--${pageName}").html(trs.join()); - $("th input[type='checkbox']").prop("checked", false); +// $("#tbody--${pageName}").html(trs.join()); + let noMore = (totalSize == ${infoPrefix}List.length); + let initScroll = (${pageName}Control.query.pageNum < 2) && (${pageName}Control.untilPageNum == 0); - //보안모드 - fn_securityModeToggle($("#securityMode--top").is(":checked")); - } + $("#table-responsive--${pageName}")[0].changeContent(trs.join(), initScroll, noMore); - /************************************************************************** - * 초기 셋팅 - **************************************************************************/ - // 이벤트 - 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); - } - }); - }); - - // DataTables width 변경 조정 업무별 그리드가 존재 한다면.. crdn06010-main.jsp 참고 - $("#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 (${pageName}Control.untilPageNum != 0) { + ${pageName}Control.query.fetchSize = ${pageName}Control.defaultFetchSize; + ${pageName}Control.query.pageNum = ${pageName}Control.untilPageNum; + ${pageName}Control.untilPageNum = 0; + } - if ((el[0].scrollHeight - el.scrollTop() + VERTICAL_SCROLL_HEIGHT) <= el.outerHeight()) { - ${pageName}Control.tableRenderComplete = false; // dataTables 에 자료 추가 완료 + $("th input[type='checkbox']").prop("checked", false); - ${pageName}Control.load(${pageName}Control.query.pageNum + 1); - } - }); + //보안모드 + fn_securityModeToggle($("#securityMode--top").is(":checked")); } - // 초기 기본 설정 - initForm${pageName} = (taskSeCd) => { - // 화면 초기화 - $("#frmSearch--${pageName}")[0].reset(); - - // 시군구 코드 - $("#sggCd--${pageName}").val(${pageName}sggCd); - - // 업무 구분 코드 - $("#frmSearch--${pageName} input[name='taskSeCd'][value='" + taskSeCd + "']").prop("checked", true); - // 최고 관리자 경우 업무구분을 선택할 수 있도록 하자. - $("#frmSearch--${pageName} input[name='taskSeCd']").each(function(i) { - $(this).prop("disabled", "true"); - }); - - // 달력 초기화 - initDatepicker("frmSearch--${pageName}"); - $("#schSendDateFrom--${pageName}").datepicker("setDate", DateUtil.getDateDay(-1365).date); - $("#schSendDateTo--${pageName}").datepicker("setDate", new Date()); - - // dataset 초기화 - ${pageName}Control.dataset.clear(); - } + // DataTables에 스크롤이 맨 밑으로 이동했을 때 이벤트 + scrollDataList${pageName} = () => { + ${pageName}Control.tableRenderComplete = false; // dataTables 에 자료 추가 false - // URL 설정 - setURL${pageName} = (taskSeCd) => { - ${pageName}Control.urls.load = wctx.url("/" + taskSeCd + ${pageName}PrefixUrl + "/010/list.do"); // 조회 - ${pageName}Control.urls.remove = wctx.url("/" + taskSeCd + ${pageName}PrefixUrl + "/010/remove.do"); // 삭제 - ${pageName}Control.urls.getInfo = wctx.url("/" + taskSeCd + ${pageName}PrefixUrl + "/020/info.do"); // 정보 - } - - // 기본 데이터 설정 - setForm${pageName} = () => { - // 전체 탭에 datatable 설정 - $("#tabEpostRcpt0").html($("#datatable--${pageName}")); + ${pageName}Control.load(${pageName}Control.query.pageNum + 1); } /************************************************************************** @@ -556,8 +493,8 @@ // 검색조건 ${pageName}Control.query = ${pageName}Fields.get(); - ${pageName}Control.query.fetchSize = FETCH_XS; // 한번에 조회되는 자료 건수 FETCH_XS = 30 - ${pageName}Control.query.delYn = "Y"; // 삭제여부 - Y + ${pageName}Control.query.fetchSize = ${pageName}Control.defaultFetchSize; // 1 페이지당 조회되는 자료 건수 + ${pageName}Control.query.delYn = "N"; // 삭제 여부 // 탭 선택에 따른 우편 처리 상태(POST_PROC_STT) 설정. if (clickTab == "tab1") { // 발송대기 @@ -588,7 +525,7 @@ // } - ${pageName}Control.load(); + ${pageName}Control.load(1); } // 엑셀 버튼 이벤트 @@ -669,17 +606,16 @@ ${pageName}Control.getInfo("create"); } - // 전자우편 안내문 수정 버튼 이벤트 + // 발송 취소 버튼 이벤트 fnUpdate${pageName} = () => { - let conKey = ${pageName}Control.dataset.getValue("CON_KEY"); + // 자료 재조회 + ${pageName}Control.untilPageNum = ${pageName}Control.query.pageNum; + ${pageName}Control.query.fetchSize = ${pageName}Control.defaultFetchSize * ${pageName}Control.query.pageNum; - // 전자우편 안내문 ID 가 없다면.. return - if (typeof conKey == "undefined" || conKey == null || conKey == "") return; - - ${pageName}Control.getInfo("update", conKey); + ${pageName}Control.load(1); } - // 전자우편 안내문 삭제 버튼 이벤트 + // 발송 삭제 버튼 이벤트 fnRemove${pageName} = () => { dialog.alert({ content : "선택한 전자우편 안내문 정보를 삭제하시겠습니까?" @@ -689,6 +625,68 @@ }); } + /************************************************************************** + * 초기 셋팅 + **************************************************************************/ + // 이벤트 + 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); + } + }); + }); + + // DataTables width 변경 조정 업무별 그리드가 존재 한다면.. crdn06010-main.jsp 참고 + $("#DataTables_Table_0--${pageName}").find("th").resizable( {handles : "e"} ); + + // DataTables 스크롤 이벤트 생성 + fnMakeScrollableTable($("#table-responsive--${pageName}")[0], scrollDataList${pageName}); + } + + // 초기 기본 설정 + initForm${pageName} = (taskSeCd) => { + // 화면 초기화 + $("#frmSearch--${pageName}")[0].reset(); + + // 업무 구분 코드 + $("#frmSearch--${pageName} input[name='taskSeCd'][value='" + taskSeCd + "']").prop("checked", true); + // 최고 관리자 경우 업무구분을 선택할 수 있도록 하자. + $("#frmSearch--${pageName} input[name='taskSeCd']").each(function(i) { + $(this).prop("disabled", "true"); + }); + + // 달력 초기화 + initDatepicker("frmSearch--${pageName}"); + $("#schSendDateFrom--${pageName}").datepicker("setDate", DateUtil.getDateDay(-1365).date); + $("#schSendDateTo--${pageName}").datepicker("setDate", new Date()); + + // dataset 초기화 + ${pageName}Control.dataset.clear(); + } + + // URL 설정 + setURL${pageName} = (taskSeCd) => { + ${pageName}Control.urls.load = wctx.url("/" + taskSeCd + ${pageName}PrefixUrl + "/010/list.do"); // 조회 + ${pageName}Control.urls.remove = wctx.url("/" + taskSeCd + ${pageName}PrefixUrl + "/010/remove.do"); // 삭제 + ${pageName}Control.urls.getInfo = wctx.url("/" + taskSeCd + ${pageName}PrefixUrl + "/020/info.do"); // 정보 + } + + // 기본 데이터 설정 + setForm${pageName} = () => { + // ${pageName}Control 설정 + ${pageName}Control.defaultFetchSize = FETCH_XS; // 1 페이지당 조회되는 자료 건수 index.jsp에서 확인 FETCH_XS = 30 + + // 첫번째 "전체" 탭에 datatable 설정 + $("#tabEpostRcpt0").html($("#datatable--${pageName}")); + } + /************************************************************************** * script 진입 **************************************************************************/ @@ -699,6 +697,9 @@ // 보안모드 fn_securityModeToggle($("#securityMode--top").is(":checked")); + // 시군구 코드 + $("#sggCd--${pageName}").val("${sggCd}"); + // 업무 구분 설정 let defaultBizValue = $("#layout-navbar input[name='taskSeCd']:checked").val(); $("#frmSearch--${pageName} input[name='taskSeCd'][value='" + defaultBizValue + "']").prop("checked", true);