1. 테이블데이터 스크롤링 처리 방식 수정.

main
jjh 11 months ago
parent 3f01f3dd8b
commit a1e319ab84

@ -1,5 +1,6 @@
package cokr.xit.fims.cmmn.service.bean; package cokr.xit.fims.cmmn.service.bean;
import java.text.SimpleDateFormat;
import java.util.List; import java.util.List;
import javax.annotation.Resource; import javax.annotation.Resource;
@ -111,22 +112,29 @@ public class CrdnSttsHstryBean extends AbstractComponent {
*/ */
public boolean createHstryUpdateCrdnSttsCd(CrdnSttsHstry crdnSttsHstry) { public boolean createHstryUpdateCrdnSttsCd(CrdnSttsHstry crdnSttsHstry) {
// 변수 선언 // 변수 선언
boolean retSuccess = false; // DB 처리 결과 boolean rtnScs = false; // DB 처리 결과
// 사용 여부
if (crdnSttsHstry.getUseYN() == null) { if (crdnSttsHstry.getUseYN() == null) {
crdnSttsHstry.setUseYN("Y"); crdnSttsHstry.setUseYN("Y");
} }
// 단속 상태 변경 일시
if (crdnSttsHstry.getCrdnSttsChgDt() == null) {
// 현재 날짜 구하기
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyyMMddHHmmss");
crdnSttsHstry.setCrdnSttsChgDt(dateFormat.format(System.currentTimeMillis()));
}
// 단속상태이력(TB_CRDN_STTS_HSTRY) 대장을 등록 한다. // 단속상태이력(TB_CRDN_STTS_HSTRY) 대장을 등록 한다.
retSuccess = crdnSttsHstryMapper.insert(crdnSttsHstry); rtnScs = crdnSttsHstryMapper.insert(crdnSttsHstry);
if (!retSuccess) { if (!rtnScs) {
// 예외를 발생시켜서 오류메세지를 보내고 Database 롤백.. // 예외를 발생시켜서 오류메세지를 보내고 Database 롤백..
throw new RuntimeException("단속상태이력 대장 등록에 실패하였습니다."); throw new RuntimeException("단속상태이력 대장 등록에 실패하였습니다.");
} }
// 단속(TB_CRDN) 대장을 수정 한다. // 단속(TB_CRDN) 대장을 수정 한다.
retSuccess = crdnSttsHstryMapper.updateCrdn(crdnSttsHstry); rtnScs = crdnSttsHstryMapper.updateCrdn(crdnSttsHstry);
if (!retSuccess) { if (!rtnScs) {
// 예외를 발생시켜서 오류메세지를 보내고 Database 롤백.. // 예외를 발생시켜서 오류메세지를 보내고 Database 롤백..
throw new RuntimeException("단속상태이력 정보 등록 중 오류가 발생하였습니다."); throw new RuntimeException("단속상태이력 정보 등록 중 오류가 발생하였습니다.");
} }
@ -143,7 +151,7 @@ public class CrdnSttsHstryBean extends AbstractComponent {
*/ */
public boolean removeHstryUpdateCrdnSttsCd(String crdnId, String crdnSttsCd, String deleteSttsCd, boolean insertBfrSttsYn) { public boolean removeHstryUpdateCrdnSttsCd(String crdnId, String crdnSttsCd, String deleteSttsCd, boolean insertBfrSttsYn) {
// 변수 선언 // 변수 선언
boolean retSuccess = false; // DB 처리 결과 boolean rtnScs = false; // DB 처리 결과
// 단속 ID에 해당하는 단속상태코드의 단속상태이력(TB_CRDN_STTS_HSTRY) 대장을 조회 한다. // 단속 ID에 해당하는 단속상태코드의 단속상태이력(TB_CRDN_STTS_HSTRY) 대장을 조회 한다.
DataObject crdnSttsHstryInfo = crdnSttsHstryMapper.selectCrdnSttsHstryInfo(crdnId, crdnSttsCd, "Y"); DataObject crdnSttsHstryInfo = crdnSttsHstryMapper.selectCrdnSttsHstryInfo(crdnId, crdnSttsCd, "Y");
@ -158,8 +166,8 @@ public class CrdnSttsHstryBean extends AbstractComponent {
crdnSttsHstry.setSttsHstryId(crdnSttsHstryInfo.string("STTS_HSTRY_ID")); crdnSttsHstry.setSttsHstryId(crdnSttsHstryInfo.string("STTS_HSTRY_ID"));
crdnSttsHstry.setUseYN("N"); crdnSttsHstry.setUseYN("N");
retSuccess = crdnSttsHstryMapper.update(crdnSttsHstry); rtnScs = crdnSttsHstryMapper.update(crdnSttsHstry);
if (!retSuccess) { if (!rtnScs) {
throw new RuntimeException("단속상태이력 대장에 이력 수정에 실패하였습니다."); // 예외를 발생시켜서 DB Rollback throw new RuntimeException("단속상태이력 대장에 이력 수정에 실패하였습니다."); // 예외를 발생시켜서 DB Rollback
} }
} }
@ -180,8 +188,8 @@ public class CrdnSttsHstryBean extends AbstractComponent {
opnnSttsHstry.setSttsHstryId(crdnSttsHstryInfo.string("STTS_HSTRY_ID")); opnnSttsHstry.setSttsHstryId(crdnSttsHstryInfo.string("STTS_HSTRY_ID"));
opnnSttsHstry.setUseYN("N"); opnnSttsHstry.setUseYN("N");
retSuccess = crdnSttsHstryMapper.update(opnnSttsHstry); rtnScs = crdnSttsHstryMapper.update(opnnSttsHstry);
if (!retSuccess) { if (!rtnScs) {
throw new RuntimeException("단속상태이력 대장에 의견제출접수 이력 수정에 실패하였습니다."); // 예외를 발생시켜서 DB Rollback throw new RuntimeException("단속상태이력 대장에 의견제출접수 이력 수정에 실패하였습니다."); // 예외를 발생시켜서 DB Rollback
} }
} }
@ -194,8 +202,8 @@ public class CrdnSttsHstryBean extends AbstractComponent {
deleteSttsHstry.setCrdnSttsCd(deleteSttsCd); deleteSttsHstry.setCrdnSttsCd(deleteSttsCd);
deleteSttsHstry.setUseYN("N"); deleteSttsHstry.setUseYN("N");
retSuccess = crdnSttsHstryMapper.insert(deleteSttsHstry); rtnScs = crdnSttsHstryMapper.insert(deleteSttsHstry);
if (!retSuccess) { if (!rtnScs) {
throw new RuntimeException("삭제 단속상태이력 정보 등록 중 오류가 발생하였습니다."); // 예외를 발생시켜서 DB Rollback throw new RuntimeException("삭제 단속상태이력 정보 등록 중 오류가 발생하였습니다."); // 예외를 발생시켜서 DB Rollback
} }
} }
@ -211,8 +219,8 @@ public class CrdnSttsHstryBean extends AbstractComponent {
crdnSttsHstry.setCrdnSttsChgDt(crdnSttsHstryInfo.string("BFR_STTS_CHG_DT")); crdnSttsHstry.setCrdnSttsChgDt(crdnSttsHstryInfo.string("BFR_STTS_CHG_DT"));
crdnSttsHstry.setUseYN("Y"); crdnSttsHstry.setUseYN("Y");
retSuccess = createHstryUpdateCrdnSttsCd(crdnSttsHstry); rtnScs = createHstryUpdateCrdnSttsCd(crdnSttsHstry);
if (!retSuccess) { if (!rtnScs) {
throw new RuntimeException("단속상태이력 정보 등록 중 오류가 발생하였습니다."); // 예외를 발생시켜서 DB Rollback throw new RuntimeException("단속상태이력 정보 등록 중 오류가 발생하였습니다."); // 예외를 발생시켜서 DB Rollback
} }
} }

@ -1,5 +1,6 @@
package cokr.xit.fims.levy.service.bean; package cokr.xit.fims.levy.service.bean;
import java.text.SimpleDateFormat;
import java.util.List; import java.util.List;
import javax.annotation.Resource; import javax.annotation.Resource;
@ -103,15 +104,15 @@ public class LevyBean extends AbstractComponent {
*/ */
public String createRductLevyList(LevyQuery req) { public String createRductLevyList(LevyQuery req) {
// 변수 선언 // 변수 선언
String retMessage = "[F] "; // 처리 결과 메시지 String rtnMsg = "[F] "; // 처리 결과 메시지
// 최초 조회 // 최초 조회
List<DataObject> rductLevyTrgtList = levyMapper.selectRductLevyTrgtList(req); List<DataObject> rductLevyTrgtList = levyMapper.selectRductLevyTrgtList(req);
// 조회 건수와 등록 대상 건수 확인 // 조회 건수와 등록 대상 건수 확인
if (!req.getTnocs().equals(rductLevyTrgtList.get(0).string("TNOCS"))) { if (!req.getTnocs().equals(rductLevyTrgtList.get(0).string("TNOCS"))) {
retMessage = "[F] 조회된 총건수와 감경부과 등록 대상건수가 다릅니다."; rtnMsg = "[F] 조회된 총건수와 감경부과 등록 대상건수가 다릅니다.";
return retMessage; return rtnMsg;
} }
// 총 페이지 건수 확인 // 총 페이지 건수 확인
@ -133,16 +134,16 @@ public class LevyBean extends AbstractComponent {
levy.setFrstDudtYmd(req.getDudtYmd()); // 최초 납기 일자 levy.setFrstDudtYmd(req.getDudtYmd()); // 최초 납기 일자
levy.setDudtYmd(req.getDudtYmd()); // 납기 일자 levy.setDudtYmd(req.getDudtYmd()); // 납기 일자
retMessage = createRductLevy(levy); rtnMsg = createRductLevy(levy);
if (retMessage.contains("[F]")) { if (rtnMsg.contains("[F]")) {
throw new RuntimeException(retMessage); throw new RuntimeException(rtnMsg);
} }
} }
} }
retMessage = "[S] 작업이 정상 처리 되었습니다."; rtnMsg = "[S] 작업이 정상 처리 되었습니다.";
return retMessage; return rtnMsg;
} }
/** . /** .
@ -154,8 +155,8 @@ public class LevyBean extends AbstractComponent {
*/ */
public String createRductLevy(Levy levy) { public String createRductLevy(Levy levy) {
// 변수 선언 // 변수 선언
boolean retSuccess = false; // DB 처리 결과 boolean rtnScs = false; // DB 처리 결과
String retMessage = "[F] "; // 처리 결과 메시지 String rtnMsg = "[F] "; // 처리 결과 메시지
// 사용자 정보 // 사용자 정보
ManagedUser managedUser = (ManagedUser)currentUser().getUser(); ManagedUser managedUser = (ManagedUser)currentUser().getUser();
@ -185,9 +186,9 @@ public class LevyBean extends AbstractComponent {
} else { } else {
levy.setFyr(null); // 회계연도 levy.setFyr(null); // 회계연도
levy.setLevyNo(null); // 부과 번호 levy.setLevyNo(null); // 부과 번호
levy.setLevyYmd(null); // 부과 일자 // levy.setLevyYmd(null); // 부과 일자
levy.setFrstDudtYmd(null); // 최초 납기 일자 // levy.setFrstDudtYmd(null); // 최초 납기 일자
levy.setDudtYmd(null); // 납기 일자 // levy.setDudtYmd(null); // 납기 일자
levy.setFfnlgAmt(crdnInfo.number("FFNLG_AMT").intValue()); // 과태료 금액 levy.setFfnlgAmt(crdnInfo.number("FFNLG_AMT").intValue()); // 과태료 금액
levy.setLevyPcptax(crdnInfo.number("FFNLG_AMT").intValue()); // 부과 본세 levy.setLevyPcptax(crdnInfo.number("FFNLG_AMT").intValue()); // 부과 본세
levy.setSumAmt(crdnInfo.number("FFNLG_AMT").intValue()); // 합계 금액 levy.setSumAmt(crdnInfo.number("FFNLG_AMT").intValue()); // 합계 금액
@ -225,38 +226,42 @@ public class LevyBean extends AbstractComponent {
levy.setMngItem6(crdnInfo.string("CRDN_ID")); // 관리 아이템6 levy.setMngItem6(crdnInfo.string("CRDN_ID")); // 관리 아이템6
levy.setLevySttsNm("부과"); // 부과 상태 명 levy.setLevySttsNm("부과"); // 부과 상태 명
retSuccess = levyMapper.insert(levy); rtnScs = levyMapper.insert(levy);
if (!retSuccess) { if (!rtnScs) {
// 예외를 발생시켜서 오류메세지를 보내고 DB Rollback // 예외를 발생시켜서 오류메세지를 보내고 DB Rollback
throw new RuntimeException("감경부과 대장 등록에 실패하였습니다."); throw new RuntimeException("감경부과 대장 등록에 실패하였습니다.");
} }
// 현재 날짜 구하기
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyyMMddHHmmss");
// 단속상태이력(TB_CRDN_STTS_HSTRY) // 단속상태이력(TB_CRDN_STTS_HSTRY)
CrdnSttsHstry crdnSttsHstry = new CrdnSttsHstry(); CrdnSttsHstry crdnSttsHstry = new CrdnSttsHstry();
crdnSttsHstry.setCrdnId(crdnInfo.string("CRDN_ID")); // 단속 ID crdnSttsHstry.setCrdnId(crdnInfo.string("CRDN_ID")); // 단속 ID
crdnSttsHstry.setBfrSttsCd(crdnInfo.string("CRDN_STTS_CD")); // 단속 상태 코드 crdnSttsHstry.setBfrSttsCd(crdnInfo.string("CRDN_STTS_CD")); // 이전 단속 상태 코드
crdnSttsHstry.setBfrSttsChgDt(crdnInfo.string("CRDN_STTS_CHG_DT")); // 단소 상태 변경 일시 crdnSttsHstry.setBfrSttsChgDt(crdnInfo.string("CRDN_STTS_CHG_DT")); // 이전 단속 상태 변경 일시
crdnSttsHstry.setCrdnSttsCd("23"); // 단속상태코드(FIM010) - 감경부과 crdnSttsHstry.setCrdnSttsCd("23"); // 단속 상태 코드(FIM010) - 감경부과
crdnSttsHstry.setCrdnSttsChgDt(dateFormat.format(System.currentTimeMillis())); // 단속 상태 변경 일시
crdnSttsHstry.setTaskDtlId(levy.getLevyId()); // 부과 ID crdnSttsHstry.setTaskDtlId(levy.getLevyId()); // 부과 ID
if (crdnInfo.number("CRDN_STTS_CD").intValue() >= 1 && crdnInfo.number("CRDN_STTS_CD").intValue() <= 22 ) { if (crdnInfo.number("CRDN_STTS_CD").intValue() >= 1 && crdnInfo.number("CRDN_STTS_CD").intValue() <= 22 ) {
// 단속 상태 이력(TB_CRDN_STTS_HSTRY) 대장에 등록하고, 단속(TB_CRDN) 대장을 수정한다. // 단속 상태 이력(TB_CRDN_STTS_HSTRY) 대장에 등록하고, 단속(TB_CRDN) 대장을 수정한다.
retSuccess = crdnSttsHstryBean.createHstryUpdateCrdnSttsCd(crdnSttsHstry); rtnScs = crdnSttsHstryBean.createHstryUpdateCrdnSttsCd(crdnSttsHstry);
if (!retSuccess) { if (!rtnScs) {
throw new RuntimeException("감경부과 등록 중 단속 대장의 단속상태 변경에 실패하였습니다."); // 예외를 발생시켜서 DB Rollback throw new RuntimeException("감경부과 등록 중 단속 대장의 단속상태 변경에 실패하였습니다."); // 예외를 발생시켜서 DB Rollback
} }
} else { } else {
// 단속상태이력(TB_CRDN_STTS_HSTRY) 대장을 등록 한다. // 단속상태이력(TB_CRDN_STTS_HSTRY) 대장을 등록 한다.
retSuccess = crdnSttsHstryBean.create(crdnSttsHstry); rtnScs = crdnSttsHstryBean.create(crdnSttsHstry);
if (!retSuccess) { if (!rtnScs) {
throw new RuntimeException("감경부과 등록 중 단속 대장의 단속상태 변경에 실패하였습니다."); // 예외를 발생시켜서 DB Rollback throw new RuntimeException("감경부과 등록 중 단속 대장의 단속상태 변경에 실패하였습니다."); // 예외를 발생시켜서 DB Rollback
} }
} }
retMessage = "[S] 작업이 정상 처리 되었습니다."; rtnMsg = "[S] 작업이 정상 처리 되었습니다.";
return retMessage; return rtnMsg;
} }
/** , , . /** , , .
@ -268,18 +273,18 @@ public class LevyBean extends AbstractComponent {
*/ */
public String updateRductLevyYmd(Levy levy) { public String updateRductLevyYmd(Levy levy) {
// 변수 선언 // 변수 선언
boolean retSuccess = false; // DB 처리 결과 boolean rtnScs = false; // DB 처리 결과
String retMessage = "[F] "; // 처리 결과 메시지 String rtnMsg = "[F] "; // 처리 결과 메시지
retSuccess = levyMapper.updateRductLevyYmd(levy); rtnScs = levyMapper.updateRductLevyYmd(levy);
if (!retSuccess) { if (!rtnScs) {
// 예외를 발생시켜서 오류메세지를 보내고 DB Rollback // 예외를 발생시켜서 오류메세지를 보내고 DB Rollback
throw new RuntimeException("부과 대장에 사전 감경부과 일자 정보 수정에 실패하였습니다."); throw new RuntimeException("부과 대장에 사전 감경부과 일자 정보 수정에 실패하였습니다.");
} }
retMessage = "[S] 작업이 정상 처리 되었습니다."; rtnMsg = "[S] 작업이 정상 처리 되었습니다.";
return retMessage; return rtnMsg;
} }
/** . /** .
@ -291,18 +296,18 @@ public class LevyBean extends AbstractComponent {
*/ */
public String updateRcvmtAmt(Levy levy) { public String updateRcvmtAmt(Levy levy) {
// 변수 선언 // 변수 선언
boolean retSuccess = false; // DB 처리 결과 boolean rtnScs = false; // DB 처리 결과
String retMessage = "[F] "; // 처리 결과 메시지 String rtnMsg = "[F] "; // 처리 결과 메시지
retSuccess = levyMapper.updateRcvmtAmt(levy); rtnScs = levyMapper.updateRcvmtAmt(levy);
if (!retSuccess) { if (!rtnScs) {
// 예외를 발생시켜서 오류메세지를 보내고 DB Rollback // 예외를 발생시켜서 오류메세지를 보내고 DB Rollback
throw new RuntimeException("부과 대장에 수납금액 정보 수정에 실패하였습니다."); throw new RuntimeException("부과 대장에 수납금액 정보 수정에 실패하였습니다.");
} }
retMessage = "[S] 작업이 정상 처리 되었습니다."; rtnMsg = "[S] 작업이 정상 처리 되었습니다.";
return retMessage; return rtnMsg;
} }
/** . /** .

@ -106,8 +106,10 @@ public class Levy01Controller extends ApplicationController {
rductLevyYmdInfo.put("TNOCS", req.getTnocs()); rductLevyYmdInfo.put("TNOCS", req.getTnocs());
rductLevyYmdInfo.put("GRAMT", req.getGramt()); rductLevyYmdInfo.put("GRAMT", req.getGramt());
return mav.addObject("pageName", "levy01020") return mav
.addObject("levyQuery", json ? req : toJson(req)) .addObject("pageName", "levy01020")
.addObject("callPurpose", req.getCallPurpose()) // 호출 용도
.addObject("levyQuery", json ? req : toJson(req)) // Query
.addObject("rductLevyYmdInfo", json ? rductLevyYmdInfo : toJson(rductLevyYmdInfo)) .addObject("rductLevyYmdInfo", json ? rductLevyYmdInfo : toJson(rductLevyYmdInfo))
; ;
} }
@ -121,9 +123,9 @@ public class Levy01Controller extends ApplicationController {
*/ */
public ModelAndView createReductionLevyList(LevyQuery req) { public ModelAndView createReductionLevyList(LevyQuery req) {
boolean saved = false; boolean saved = false;
String retMessage = levyService.createRductLevyList(req); String rtnMsg = levyService.createRductLevyList(req);
if (retMessage.contains("[S]")) { if (rtnMsg.contains("[S]")) {
saved = true; saved = true;
} else { } else {
saved = false; saved = false;
@ -131,7 +133,7 @@ public class Levy01Controller extends ApplicationController {
return new ModelAndView("jsonView") return new ModelAndView("jsonView")
.addObject("saved", saved) .addObject("saved", saved)
.addObject("retMessage", retMessage); .addObject("rtnMsg", rtnMsg);
} }
/** (levy/levy01030-main) . /** (levy/levy01030-main) .

@ -124,6 +124,9 @@
<option value="mdfr">수정자</option> <option value="mdfr">수정자</option>
</select> </select>
<input type="text" class="form-control" id="schDetailRgtrNm--${pageName}" name="schDetailRgtrNm" /> <input type="text" class="form-control" id="schDetailRgtrNm--${pageName}" name="schDetailRgtrNm" />
<button type="button" class="btn btn-sm btn-outline-dark" id="btnFindUser--${pageName}" title="사용자 검색" onclick="fnFindUser${pageName}();">
검색
</button>
</div> </div>
</div> </div>
</div> </div>
@ -439,7 +442,7 @@
}); });
}); });
// DataTables width 변경 조정 // DataTables width 변경 조정 업무별 그리드가 존재 한다면.. crdn06010-main.jsp 참고
$("#DataTables_Table_0--${pageName}").find("th").resizable( {handles : "e"} ); $("#DataTables_Table_0--${pageName}").find("th").resizable( {handles : "e"} );
// DataTables 스크롤 이벤트 생성 // DataTables 스크롤 이벤트 생성

@ -13,7 +13,7 @@
<div> <div>
<!-- 상단 버튼 --> <!-- 상단 버튼 -->
<div class="container-page-btn"> <div class="container-page-btn">
<button type="button" class="btn btn-outline-dark w-px-120" id="btnReset--${pageName}" title="초기화" onclick="fnReset${pageName}();"> <button type="button" class="btn btn-outline-dark w-px-120" id="btnReset--${pageName}" title="초기화" onclick="fnResetAndChangeBiz${pageName}();">
초기화 초기화
</button> </button>
<span class="container-window-btn-right"> <span class="container-window-btn-right">
@ -77,7 +77,7 @@
<input type="text" class="form-control" id="byOutput--${pageName}" value="동적 검색" readonly /> <input type="text" class="form-control" id="byOutput--${pageName}" value="동적 검색" readonly />
<input type="hidden" id="mainOption--${pageName}" name="mainOption" /> <input type="hidden" id="mainOption--${pageName}" name="mainOption" />
<input type="hidden" id="subOption--${pageName}" name="subOption" /> <input type="hidden" id="subOption--${pageName}" name="subOption" />
<input type="text" class="form-control w-px-300" id="term--${pageName}" name="term" /> <input type="text" class="form-control w-px-300" id="term--${pageName}" name="term" autocomplete="off" />
<!-- 상세 검색조건 버튼 --> <!-- 상세 검색조건 버튼 -->
<span class="flr"> <span class="flr">
<button type="button" class="btn btn-open-detail" data-bs-toggle="collapse" data-bs-target="#searchDetail--${pageName}"> <button type="button" class="btn btn-open-detail" data-bs-toggle="collapse" data-bs-target="#searchDetail--${pageName}">
@ -114,6 +114,9 @@
<option value="mdfr">단속 수정자</option> <option value="mdfr">단속 수정자</option>
</select> </select>
<input type="text" class="form-control" id="schDetailCrdnRgtrNm--${pageName}" name="schDetailCrdnRgtrNm" /> <input type="text" class="form-control" id="schDetailCrdnRgtrNm--${pageName}" name="schDetailCrdnRgtrNm" />
<button type="button" class="btn btn-sm btn-outline-dark" id="btnFindUser--${pageName}" title="사용자 검색" onclick="fnFindUser${pageName}();">
검색
</button>
</div> </div>
</div> </div>
</div> </div>
@ -132,7 +135,7 @@
</div> </div>
<span class="container-window-btn-right"> <span class="container-window-btn-right">
<!-- 업무 버튼 --> <!-- 업무 버튼 -->
<button type="button" class="btn btn-primary w-px-120" id="btnRductLevyInfo--${pageName}" title="감경부과 등록" onclick="fnRductLevyInfo${pageName}();"> <button type="button" class="btn btn-primary w-px-120" id="btnCreate--${pageName}" title="감경부과 등록" onclick="fnCreate${pageName}();">
감경부과 등록 감경부과 등록
</button> </button>
</span> </span>
@ -246,10 +249,8 @@
, keymapper : info => info ? info.CRDN_ID : "" , keymapper : info => info ? info.CRDN_ID : ""
, dataGetter : obj => obj.rductLevyTrgtList , dataGetter : obj => obj.rductLevyTrgtList
, appendData : true , appendData : true
, untilPageNum : 0 // 현재 페이지 번호
, tableRenderComplete : false // dataTables 에 자료 추가 완료 여부 , tableRenderComplete : false // dataTables 에 자료 추가 완료 여부
, urls : {
getInfo : wctx.url("/sprt/sprt02/010/main.do") // 개별총정보
}
, formats : { , formats : {
CRDN_YMD_TM : datetimeFormat CRDN_YMD_TM : datetimeFormat
, CVLCPT_RCPT_YMD : dateFormat , CVLCPT_RCPT_YMD : dateFormat
@ -266,7 +267,7 @@
**************************************************************************/ **************************************************************************/
// Dataset 변경 이벤트 // Dataset 변경 이벤트
${pageName}Control.onDatasetChange = obj => { ${pageName}Control.onDatasetChange = obj => {
renderList${pageName}(); renderList${pageName}(obj.${infoPrefix}Total);
$("#paging--${pageName}").setPagingInfo({ $("#paging--${pageName}").setPagingInfo({
list : ${pageName}Control.dataset list : ${pageName}Control.dataset
@ -277,7 +278,7 @@
, func : "${pageName}Control.load({index})" , func : "${pageName}Control.load({index})"
}); });
${pageName}Control.tableRenderComplete = true; // dataTables 에 자료 추가 완료 ${pageName}Control.tableRenderComplete = true; // dataTables 에 자료 추가 완료
}; };
// 현재 선택 자료 변경 이벤트 // 현재 선택 자료 변경 이벤트
@ -289,34 +290,40 @@
$("#tbody--${pageName}").setCurrentRow(key); $("#tbody--${pageName}").setCurrentRow(key);
}; };
// 개별총정보 dialog // 부과 정보 dialog
${pageName}Control.getInfo = (crdnId) => { ${pageName}Control.getInfo = (params) => {
if (!crdnId) return; if (!params) return;
let params = { let dialogTitle = "";
callControlName : "${pageName}Control"
, crdnId : crdnId if (params.callPurpose == "create") {
dialogTitle = ${pageName}Control.prefixName + " 등록";
} else if (params.callPurpose == "update") {
dialogTitle = ${pageName}Control.prefixName + " 수정";
} else {
dialogTitle = ${pageName}Control.prefixName + " 정보";
} }
ajax.get({ ajax.get({
url : ${pageName}Control.urls.getInfo url : wctx.url("/" + params.taskSeCd + ${pageName}PrefixUrl + "/020/info.do")
, data : params || {} , data : params || {}
, success : resp => { , success : resp => {
dialog.open({ dialog.open({
id : "totalInfoMainDialog" id : ${pageName}Control.prefixed("Dialog")
, title : "개별총정보" , title : dialogTitle
, content : resp , content : resp
, size : "xxl" , size : ${pageName}Control.infoSize
, onClose : () => { refreshList${pageName}(); } // 자료 재조회
}); });
} }
}); });
} }
/************************************************************************** /**************************************************************************
* * DataTables 이벤트
**************************************************************************/ **************************************************************************/
// DataTables에 click, dbclick 이벤트 // DataTables에 click, dbclick 이벤트
renderList${pageName} = () => { renderList${pageName} = (totalSize) => {
let ${infoPrefix}List = ${pageName}Control.dataset; let ${infoPrefix}List = ${pageName}Control.dataset;
let empty = ${infoPrefix}List.empty; let empty = ${infoPrefix}List.empty;
@ -326,116 +333,70 @@
document.getElementById("${infoPrefix}Row--${pageName}").innerHTML, <%-- from template#${infoPrefix}Row --%> document.getElementById("${infoPrefix}Row--${pageName}").innerHTML, <%-- from template#${infoPrefix}Row --%>
(str, dataItem) => str (str, dataItem) => str
.replace(/{onclick}/gi, "${pageName}Control.setCurrent('" + dataItem.getValue("CRDN_ID") + "');") .replace(/{onclick}/gi, "${pageName}Control.setCurrent('" + dataItem.getValue("CRDN_ID") + "');")
.replace(/{ondblclick}/gi, "${pageName}Control.getInfo('" + dataItem.getValue("CRDN_ID") + "');") .replace(/{ondblclick}/gi, "getTotalInfo${pageName}('" + dataItem.getValue("CRDN_ID") + "');")
); );
$("#tbody--${pageName}").html(trs.join()); let noMore = (totalSize == ${infoPrefix}List.length);
let initScroll = (${pageName}Control.query.pageNum < 2) && (${pageName}Control.untilPageNum == 0);
$("#table-responsive--${pageName}")[0].changeContent(trs.join(), initScroll, noMore);
if (${pageName}Control.untilPageNum != 0) {
${pageName}Control.query.fetchSize = ${pageName}Control.defaultFetchSize;
${pageName}Control.query.pageNum = ${pageName}Control.untilPageNum;
${pageName}Control.untilPageNum = 0;
}
// checkbox 체크 해제
$("th input[type='checkbox']").prop("checked", false); $("th input[type='checkbox']").prop("checked", false);
//보안모드 //보안모드
fn_securityModeToggle($("#securityMode--top").is(":checked")); fn_securityModeToggle($("#securityMode--top").is(":checked"));
} }
// 부과 정보 dialog -> callback 추가 // DataTables에 스크롤이 맨 밑으로 이동했을 때 이벤트
getRductLevyInfo${pageName} = (params) => { scrollDataList${pageName} = () => {
if (!params) return; ${pageName}Control.tableRenderComplete = false; // dataTables 에 자료 추가 false
${pageName}Control.load(${pageName}Control.query.pageNum + 1);
}
/**************************************************************************
* 사용자 함수(function)
**************************************************************************/
// 개별총정보 dialog
getTotalInfo${pageName} = (crdnId) => {
if (typeof crdnId == "undefined" || crdnId == null || crdnId == "") return;
let params = {
callControlName : "${pageName}Control"
, sggCd : $("#sggCd--${pageName}").val()
, taskSeCd : $("input[name=taskSeCd]:checked").val()
, crdnId : crdnId
}
ajax.get({ ajax.get({
url : wctx.url("/" + params.taskSeCd + ${pageName}PrefixUrl + "/020/info.do") url : wctx.url(params.taskSeCd + "/sprt/sprt02/010/main.do")
, data : params || {} , data : params
, success : resp => { , success : resp => {
dialog.open({ dialog.open({
id : "rductLevyDialog" id : "totalInfoMainDialog"
, title : ${pageName}Control.prefixName + " 정보" , title : "개별총정보"
, content : resp , content : resp
, size : ${pageName}Control.infoSize , size : "xxl"
, init : () => { } , init : () => { }
, onClose : () => { ${pageName}Control.load(${pageName}Control.query.pageNum); } // callback , onClose : () => { }
}); });
} }
}); });
} }
/************************************************************************** // 검색 자료 재조회
* 초기 설정 refreshList${pageName} = () => {
**************************************************************************/ ${pageName}Control.untilPageNum = ${pageName}Control.query.pageNum;
// 초기화 ${pageName}Control.query.fetchSize = ${pageName}Control.defaultFetchSize * ${pageName}Control.query.pageNum;
initForm${pageName} = () => {
// 화면 초기화
$("#frmSearch--${pageName}")[0].reset();
// dataset 초기화
${pageName}Control.dataset.clear();
}
// 이벤트
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 ((el[0].scrollHeight - el.scrollTop() + VERTICAL_SCROLL_HEIGHT) <= el.outerHeight()) {
${pageName}Control.tableRenderComplete = false; // dataTables 에 자료 추가 완료
${pageName}Control.load(${pageName}Control.query.pageNum + 1);
}
});
}
// 화면 초기값 설정
setForm${pageName} = (taskSeCd) => {
// 업무 구분 코드
$("#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}");
$("#schCrdnYmdFrom--${pageName}").datepicker("setDate", DateUtil.getDateDay(-465).date);
$("#schCrdnYmdTo--${pageName}").datepicker("setDate", new Date());
// DataTables width 변경 조정 ${pageName}Control.load(1);
$("#DataTables_Table_0--${pageName}").find("th").resizable( {handles : "e"} );
}
// URL 설정
setURL${pageName} = (taskSeCd) => {
${pageName}Control.urls.load = wctx.url("/" + taskSeCd + ${pageName}PrefixUrl + "/010/list.do"); // 조회
${pageName}Control.urls.getInfo = wctx.url("/" + taskSeCd + "/sprt/sprt02/010/main.do"); // 개별총정보
} }
/************************************************************************** /**************************************************************************
@ -443,24 +404,19 @@
**************************************************************************/ **************************************************************************/
// 업무 구분 변경 // 업무 구분 변경
fnResetAndChangeBiz${pageName} = (taskSeCd) => { fnResetAndChangeBiz${pageName} = (taskSeCd) => {
// 초기화
initForm${pageName}();
// 업무 구분 코드 // 업무 구분 코드
if (typeof taskSeCd == "undefined" || taskSeCd == null || taskSeCd == "") { if (typeof taskSeCd == "undefined" || taskSeCd == null || taskSeCd == "") {
taskSeCd = $("#layout-navbar input[name='taskSeCd']:checked").val(); taskSeCd = $("#layout-navbar input[name='taskSeCd']:checked").val();
} }
// 화면 초기값 설정 // 초기 기본 설정
setForm${pageName}(taskSeCd); initForm${pageName}(taskSeCd);
// URL 설정 // URL 설정
setURL${pageName}(taskSeCd); setURL${pageName}(taskSeCd);
}
// 초기화 버튼 이벤트 // 기본 데이터 설정
fnReset${pageName} = () => { setFormData${pageName}();
fnResetAndChangeBiz${pageName}();
} }
// 검색 버튼 이벤트 // 검색 버튼 이벤트
@ -468,11 +424,10 @@
// 검색조건 // 검색조건
${pageName}Control.query = ${pageName}Fields.get(); ${pageName}Control.query = ${pageName}Fields.get();
${pageName}Control.query.fetchSize = FETCH_XS; // 한번에 조회되는 자료 건수 FETCH_XS = 30 ${pageName}Control.query.fetchSize = ${pageName}Control.defaultFetchSize; // 한번에 조회되는 자료 건수 FETCH_XS = 30
${pageName}Control.query.delYn = "N"; // 삭제 여부 ${pageName}Control.query.delYn = "N"; // 삭제 여부
${pageName}Control.query.crdnDelYn = "N"; // 단속 대장 삭제 여부
${pageName}Control.load(); ${pageName}Control.load(1);
} }
// 엑셀 버튼 이벤트 // 엑셀 버튼 이벤트
@ -481,38 +436,102 @@
} }
// 사용자 조회 버튼 이벤트 // 사용자 조회 버튼 이벤트
fnUser${pageName} = () => { fnFindUser${pageName} = () => {
} }
// 감경부과등록 버튼 이벤트 // 감경부과등록 버튼 이벤트
fnRductLevyInfo${pageName} = () => { fnCreate${pageName} = () => {
let params = ${pageName}Control.query; let params = ${pageName}Control.query;
params.callPurpose = "create"; params.callPurpose = "create";
params.tnocs = ${pageName}Control.dataset.getValue("TNOCS"); params.tnocs = ${pageName}Control.dataset.getValue("TNOCS");
params.gramt = ${pageName}Control.dataset.getValue("GRAMT"); params.gramt = ${pageName}Control.dataset.getValue("GRAMT");
getRductLevyInfo${pageName}(params); ${pageName}Control.getInfo(params);
}
/**************************************************************************
* 초기 설정
**************************************************************************/
// 이벤트
setEvent${pageName} = () => {
// 동적검색에서 엔터(Enter) 키를 누르면 검색한다.
$("#term--${pageName}").keypress(function(e) {
if (e.keyCode == 13) {
fnSearchList${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}");
$("#schCrdnYmdFrom--${pageName}").datepicker("setDate", DateUtil.getDateDay(-465).date);
$("#schCrdnYmdTo--${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"); // 조회
}
// 기본 데이터 설정
setFormData${pageName} = () => {
// ${pageName}Control 설정
${pageName}Control.defaultFetchSize = FETCH_XS; // 1 페이지당 조회되는 자료 건수 index.jsp에서 확인 FETCH_XS = 30
} }
/************************************************************************** /**************************************************************************
* script 진입 * script 진입
**************************************************************************/ **************************************************************************/
$(document).ready(function() { $(document).ready(function() {
// 기본 데이터 설정
$("#sggCd--${pageName}").val("${sggCd}"); // 시군구 코드
// 이벤트 설정 // 이벤트 설정
setEvent${pageName}(); setEvent${pageName}();
// 보안모드 // 시군구 코드 설정
fn_securityModeToggle($("#securityMode--top").is(":checked")); $("#sggCd--${pageName}").val("${sggCd}");
// 업무 구분 설정 // 업무 구분 설정
let defaultBizValue = $("#layout-navbar input[name='taskSeCd']:checked").val(); let defaultBizValue = $("#layout-navbar input[name='taskSeCd']:checked").val();
$("#frmSearch--${pageName} input[name='taskSeCd'][value='" + defaultBizValue + "']").prop("checked", true); $("#frmSearch--${pageName} input[name='taskSeCd'][value='" + defaultBizValue + "']").prop("checked", true);
// 보안모드
fn_securityModeToggle($("#securityMode--top").is(":checked"));
// 화면 초기 설정 및 업무 구분 변경 // 화면 초기 설정 및 업무 구분 변경
fnResetAndChangeBiz${pageName}(defaultBizValue); fnResetAndChangeBiz${pageName}(defaultBizValue);
}); });

@ -20,8 +20,8 @@
<!-- 총건수 --> <!-- 총건수 -->
<div class="col-md-12"> <div class="col-md-12">
<label for="tnocs--${pageName}" class="w-px-120 bg-lighter pe-2 col-form-label text-sm-end">총 건수/금액</label> <label for="tnocs--${pageName}" class="w-px-120 bg-lighter pe-2 col-form-label text-sm-end">총 건수/금액</label>
<input type="text" class="form-control w-px-80 text-end" id="tnocs--${pageName}" name="tnocs" data-map="TNOCS" readonly /> <input type="text" class="form-control w-px-80 text-end" id="tnocs--${pageName}" name="tnocs" data-map="TNOCS" />
<input type="text" class="form-control w-px-140 text-end" id="gramt--${pageName}" name="gramt" data-map="GRAMT" readonly /> <input type="text" class="form-control w-px-140 text-end" id="gramt--${pageName}" name="gramt" data-map="GRAMT" />
</div> </div>
<!-- 회계연도 --> <!-- 회계연도 -->
<div class="col-md-12"> <div class="col-md-12">
@ -33,14 +33,14 @@
<label for="levyYmd--${pageName}" class="w-px-120 bg-lighter pe-2 col-form-label text-sm-end required">부과일자</label> <label for="levyYmd--${pageName}" class="w-px-120 bg-lighter pe-2 col-form-label text-sm-end required">부과일자</label>
<input type="text" class="form-control form-date" id="levyYmd--${pageName}" name="levyYmd" data-map="LEVY_YMD" <input type="text" class="form-control form-date" id="levyYmd--${pageName}" name="levyYmd" data-map="LEVY_YMD"
data-fmt-type="day" autocomplete="off" title="날짜 선택" maxlength="10" required /> data-fmt-type="day" autocomplete="off" title="날짜 선택" maxlength="10" required />
<button type="button" class="bx bx-sm bx-calendar bg-white"></button> <button type="button" class="bx bx-sm bx-calendar bg-white" id="btnLevyYmd--${pageName}"></button>
</div> </div>
<!-- 납기 일자 --> <!-- 납기 일자 -->
<div class="col-md-12"> <div class="col-md-12">
<label for="dudtYmd--${pageName}" class="w-px-120 bg-lighter pe-2 col-form-label text-sm-end required">납기일자</label> <label for="dudtYmd--${pageName}" class="w-px-120 bg-lighter pe-2 col-form-label text-sm-end required">납기일자</label>
<input type="text" class="form-control form-date" id="dudtYmd--${pageName}" name="dudtYmd" data-map="DUDT_YMD" <input type="text" class="form-control form-date" id="dudtYmd--${pageName}" name="dudtYmd" data-map="DUDT_YMD"
data-fmt-type="day" autocomplete="off" title="날짜 선택" maxlength="10" required /> data-fmt-type="day" autocomplete="off" title="날짜 선택" maxlength="10" required />
<button type="button" class="bx bx-sm bx-calendar bg-white"></button> <button type="button" class="bx bx-sm bx-calendar bg-white" id="btnDudtYmd--${pageName}"></button>
</div> </div>
</div> </div>
</form> <!-- /입력 영역 --> </form> <!-- /입력 영역 -->
@ -68,6 +68,8 @@
**************************************************************************/ **************************************************************************/
// URL // URL
var ${pageName}PrefixUrl = "/levy/levy01"; var ${pageName}PrefixUrl = "/levy/levy01";
// infoDialog 호출 용도(view 조회(편집불가), create 등록, update 수정)
var ${pageName}CallPurpose = "${callPurpose}";
// FormFields // FormFields
var ${pageName}Fields = new FimsFormFields("#frmEdit--${pageName}"); var ${pageName}Fields = new FimsFormFields("#frmEdit--${pageName}");
// main 의 검색 조건을 그대로 유지 // main 의 검색 조건을 그대로 유지
@ -77,7 +79,7 @@
* DatasetControl * DatasetControl
**************************************************************************/ **************************************************************************/
var ${pageName}Control = new DatasetControl({ var ${pageName}Control = new DatasetControl({
prefix : "rductLevy" prefix : "rductLevyTrgt"
, prefixName : "감경부과" , prefixName : "감경부과"
, keymapper : info => info ? info.CRDN_ID : "" , keymapper : info => info ? info.CRDN_ID : ""
, dataGetter : obj => obj.rductLevyInfo , dataGetter : obj => obj.rductLevyInfo
@ -99,6 +101,7 @@
// 업무구분에 따른 url 변경 // 업무구분에 따른 url 변경
${pageName}Control.urls.create = wctx.url(item.data.TASK_SE_CD + ${pageName}PrefixUrl + "/020/createRductLevyList.do"); ${pageName}Control.urls.create = wctx.url(item.data.TASK_SE_CD + ${pageName}PrefixUrl + "/020/createRductLevyList.do");
// ${pageName}Control.urls.update = wctx.url(item.data.TASK_SE_CD + ${pageName}PrefixUrl + "/020/updateRductLevyList.do");
} }
/************************************************************************** /**************************************************************************
@ -107,7 +110,7 @@
// 저장 callback // 저장 callback
${pageName}Control.onSave = (resp) => { ${pageName}Control.onSave = (resp) => {
let dialogTitle = $("#" + ${pageName}Control.prefix + "Dialog").find("h5.modal-title").html(); let dialogTitle = $("#" + ${pageName}Control.prefix + "Dialog").find("h5.modal-title").html();
let showMessage = resp.retMessage.replace(/[S]|[F]/g, dialogTitle); let showMessage = resp.rtnMsg.replace(/[S]|[F]/g, dialogTitle);
dialog.alert(showMessage); dialog.alert(showMessage);
@ -121,14 +124,36 @@
if (!info) return; if (!info) return;
let params = $.extend({}, ${pageName}Query, info); // 객체를 합친다. let params = $.extend({}, ${pageName}Query, info); // 객체를 합친다.
let create = (${pageName}CallPurpose == "create");
ajax.post({ ajax.post({
url : info.taskSeCd + ${pageName}PrefixUrl + "/020/createRductLevyList.do" url : !create ? ${pageName}Control.urls.update : ${pageName}Control.urls.create
, data : params , data : params
, success : resp => ${pageName}Control.onSave(resp) , success : resp => ${pageName}Control.onSave(resp)
}); });
} }
/**************************************************************************
* 사용자 함수(function)
**************************************************************************/
/**************************************************************************
* 버튼 clickEvent
**************************************************************************/
// 저장 버튼 클릭 이벤트
fnSave${pageName} = () => {
// validate 확인
if (!customValidate($("#frmEdit--${pageName}").find("input, select, textarea"))) return;
dialog.alert({
content : "현재 " + ${pageName}Control.prefixName + " 정보를 저장하시겠습니까?"
, onOK : () => {
${pageName}Control.save(${pageName}Fields.get());
}
});
}
/************************************************************************** /**************************************************************************
* 초기 셋팅 * 초기 셋팅
**************************************************************************/ **************************************************************************/
@ -155,8 +180,11 @@
}); });
} }
// 검색조건 초기값 셋팅 // 화면 초기 설정
setForm${pageName} = () => { initForm${pageName} = () => {
// 화면 초기화
$("#frmEdit--${pageName}")[0].reset();
// 달력 초기화 // 달력 초기화
initDatepicker("frmEdit--${pageName}"); initDatepicker("frmEdit--${pageName}");
@ -164,20 +192,23 @@
$("#dudtYmd--${pageName}").datepicker("setDate", new Date()); $("#dudtYmd--${pageName}").datepicker("setDate", new Date());
} }
/************************************************************************** // 기본 데이터 설정
* 버튼 click Event setFormData${pageName} = () => {
**************************************************************************/ $("#tnocs--${pageName}").prop("readonly", true); // 총건수
// 저장 버튼 클릭 이벤트 $("#gramt--${pageName}").prop("readonly", true); // 총금액
fnSave${pageName} = () => {
// validate 확인 if (${pageName}CallPurpose == "view") {
if (!customValidate($("#frmEdit--${pageName}").find("input, select, textarea"))) return; // input 요소들을 disabled
$("#frmEdit--${pageName}").find("input,textarea,select").prop("disabled", true);
dialog.alert({ // button 요소들을 disabled
content : "현재 " + ${pageName}Control.prefixName + " 정보를 저장하시겠습니까?" $("#btnLevyYmd--${pageName}").prop("disabled", true); // 부과 일자 버튼
, onOK : () => { $("#btnDudtYmd--${pageName}").prop("disabled", true); // 납기 일자 버튼
${pageName}Control.save(${pageName}Fields.get()); $("#btnSave--${pageName}").prop("disabled", true); // 저장 버튼
} } else if (${pageName}CallPurpose == "create") {
}); //
} else if (${pageName}CallPurpose == "update") {
//
}
} }
/************************************************************************** /**************************************************************************
@ -187,11 +218,14 @@
// 이벤트 설정 // 이벤트 설정
setEvent${pageName}(); setEvent${pageName}();
// 화면 초기 설정 // 초기 기본 설정
setForm${pageName}(); initForm${pageName}();
// Dataset 셋팅 // Dataset 설정
${pageName}Control.setData([${rductLevyYmdInfo}]); ${pageName}Control.setData([${rductLevyYmdInfo}]);
// 기본 데이터 설정
setFormData${pageName}();
}); });
</script> </script>

@ -13,7 +13,7 @@
<div> <div>
<!-- 상단 버튼 --> <!-- 상단 버튼 -->
<div class="container-page-btn"> <div class="container-page-btn">
<button type="button" class="btn btn-outline-dark w-px-120" id="btnReset--${pageName}" title="초기화" onclick="fnReset${pageName}();"> <button type="button" class="btn btn-outline-dark w-px-120" id="btnReset--${pageName}" title="초기화" onclick="fnResetAndChangeBiz${pageName}();">
초기화 초기화
</button> </button>
<span class="container-window-btn-right"> <span class="container-window-btn-right">
@ -143,16 +143,6 @@
<!-- 상세 조건 --> <!-- 상세 조건 -->
<div id="searchDetail--${pageName}" class="container-search container-search-detail collapse"> <div id="searchDetail--${pageName}" class="container-search container-search-detail collapse">
<div class="row g-1"> <div class="row g-1">
<!-- 진술자명 -->
<div class="col-6">
<label class="form-label fw-bold form-search-title text-end">진술자명</label>
<input type="text" class="form-control w-px-150" id="schSttrNm--${pageName}" name="schSttrNm" />
</div>
<!-- 납부자명 -->
<div class="col-6">
<label class="form-label fw-bold form-search-title text-end">납부자명</label>
<input type="text" class="form-control w-px-150" id="schRtpyrNm--${pageName}" name="schRtpyrNm" />
</div>
<!-- 등록일자, 수정일자 --> <!-- 등록일자, 수정일자 -->
<div class="col-6"> <div class="col-6">
<select class="form-select text-center" id="schDetailRegDtOpt--${pageName}" name="schDetailRegDtOpt"> <select class="form-select text-center" id="schDetailRegDtOpt--${pageName}" name="schDetailRegDtOpt">
@ -176,6 +166,9 @@
<option value="mdfr">수정자</option> <option value="mdfr">수정자</option>
</select> </select>
<input type="text" class="form-control" id="schDetailRgtrNm--${pageName}" name="schDetailRgtrNm" /> <input type="text" class="form-control" id="schDetailRgtrNm--${pageName}" name="schDetailRgtrNm" />
<button type="button" class="btn btn-sm btn-outline-dark" id="btnFindUser--${pageName}" title="사용자 검색" onclick="fnFindUser${pageName}();">
검색
</button>
</div> </div>
</div> </div>
</div> </div>
@ -371,10 +364,8 @@
, keymapper : info => info ? info.LEVY_ID : "" , keymapper : info => info ? info.LEVY_ID : ""
, dataGetter : obj => obj.levyList , dataGetter : obj => obj.levyList
, appendData : true , appendData : true
, untilPageNum : 0 // 현재 페이지 번호
, tableRenderComplete : false // dataTables 에 자료 추가 완료 여부 , tableRenderComplete : false // dataTables 에 자료 추가 완료 여부
, urls : {
getInfo : wctx.url("/sprt/sprt02/010/main.do") // 개별총정보
}
, formats : { , formats : {
LEVY_YMD : dateFormat LEVY_YMD : dateFormat
, FRST_DUDT_YMD : dateFormat , FRST_DUDT_YMD : dateFormat
@ -403,7 +394,7 @@
**************************************************************************/ **************************************************************************/
// Dataset 변경 // Dataset 변경
${pageName}Control.onDatasetChange = obj => { ${pageName}Control.onDatasetChange = obj => {
renderList${pageName}(); renderList${pageName}(obj.${infoPrefix}Total);
$("#paging--${pageName}").setPagingInfo({ $("#paging--${pageName}").setPagingInfo({
list : ${pageName}Control.dataset list : ${pageName}Control.dataset
@ -438,17 +429,79 @@
}); });
}; };
// 부과 정보 dialog
${pageName}Control.getInfo = (params) => {
if (!params) return;
let dialogTitle = "";
if (params.callPurpose == "create") {
dialogTitle = ${pageName}Control.prefixName + " 등록";
} else if (params.callPurpose == "update") {
dialogTitle = ${pageName}Control.prefixName + " 수정";
} else {
dialogTitle = ${pageName}Control.prefixName + " 정보";
}
}
/**************************************************************************
* DataTables 이벤트
**************************************************************************/
// DataTables에 click, dbclick 이벤트
renderList${pageName} = (totalSize) => {
let ${infoPrefix}List = ${pageName}Control.dataset;
let empty = ${infoPrefix}List.empty;
let trs = empty ?
[document.getElementById("${infoPrefix}NotFound--${pageName}").innerHTML] : <%-- from template#${infoPrefix}NotFound --%>
${infoPrefix}List.inStrings(
document.getElementById("${infoPrefix}Row--${pageName}").innerHTML, <%-- from template#${infoPrefix}Row --%>
(str, dataItem) => str
.replace(/{onclick}/gi, "${pageName}Control.setCurrent('" + dataItem.getValue("LEVY_ID") + "');")
.replace(/{ondblclick}/gi, "getTotalInfo${pageName}('" + dataItem.getValue("CRDN_ID") + "');")
);
let noMore = (totalSize == ${infoPrefix}List.length);
let initScroll = (${pageName}Control.query.pageNum < 2) && (${pageName}Control.untilPageNum == 0);
$("#table-responsive--${pageName}")[0].changeContent(trs.join(), initScroll, noMore);
if (${pageName}Control.untilPageNum != 0) {
${pageName}Control.query.fetchSize = ${pageName}Control.defaultFetchSize;
${pageName}Control.query.pageNum = ${pageName}Control.untilPageNum;
${pageName}Control.untilPageNum = 0;
}
// checkbox 체크 해제
$("th input[type='checkbox']").prop("checked", false);
//보안모드
fn_securityModeToggle($("#securityMode--top").is(":checked"));
}
// DataTables에 스크롤이 맨 밑으로 이동했을 때 이벤트
scrollDataList${pageName} = () => {
${pageName}Control.tableRenderComplete = false; // dataTables 에 자료 추가 false
${pageName}Control.load(${pageName}Control.query.pageNum + 1);
}
/**************************************************************************
* 사용자 함수(function)
**************************************************************************/
// 개별총정보 dialog // 개별총정보 dialog
${pageName}Control.getInfo = (crdnId) => { getTotalInfo${pageName} = (crdnId) => {
if (typeof crdnId == "undefined" || crdnId == null || crdnId == "") return; if (typeof crdnId == "undefined" || crdnId == null || crdnId == "") return;
let params = { let params = {
callControlName : "${pageName}Control" callControlName : "${pageName}Control"
, sggCd : $("#sggCd--${pageName}").val()
, taskSeCd : $("input[name=taskSeCd]:checked").val()
, crdnId : crdnId , crdnId : crdnId
} }
ajax.get({ ajax.get({
url : ${pageName}Control.urls.getInfo url : wctx.url(params.taskSeCd + "/sprt/sprt02/010/main.do")
, data : params , data : params
, success : resp => { , success : resp => {
dialog.open({ dialog.open({
@ -456,49 +509,74 @@
, title : "개별총정보" , title : "개별총정보"
, content : resp , content : resp
, size : "xxl" , size : "xxl"
, init : () => { }
, onClose : () => { }
}); });
} }
}); });
} }
// 검색 자료 재조회
refreshList${pageName} = () => {
${pageName}Control.untilPageNum = ${pageName}Control.query.pageNum;
${pageName}Control.query.fetchSize = ${pageName}Control.defaultFetchSize * ${pageName}Control.query.pageNum;
${pageName}Control.load(1);
}
/************************************************************************** /**************************************************************************
* * 버튼 clickEvent
**************************************************************************/ **************************************************************************/
// DataTables에 click, dbclick 이벤트 // 업무 구분 변경
renderList${pageName} = () => { fnResetAndChangeBiz${pageName} = (taskSeCd) => {
let ${infoPrefix}List = ${pageName}Control.dataset; // 업무 구분 코드
let empty = ${infoPrefix}List.empty; if (typeof taskSeCd == "undefined" || taskSeCd == null || taskSeCd == "") {
taskSeCd = $("#layout-navbar input[name='taskSeCd']:checked").val();
}
let trs = empty ? // 초기 기본 설정
[document.getElementById("${infoPrefix}NotFound--${pageName}").innerHTML] : <%-- from template#${infoPrefix}NotFound --%> initForm${pageName}(taskSeCd);
${infoPrefix}List.inStrings(
document.getElementById("${infoPrefix}Row--${pageName}").innerHTML, <%-- from template#${infoPrefix}Row --%>
(str, dataItem) => str
.replace(/{onclick}/gi, "${pageName}Control.setCurrent('" + dataItem.getValue("LEVY_ID") + "');")
.replace(/{ondblclick}/gi, "${pageName}Control.getInfo('" + dataItem.getValue("CRDN_ID") + "');")
);
$("#tbody--${pageName}").html(trs.join()); // URL 설정
$("th input[type='checkbox']").prop("checked", false); setURL${pageName}(taskSeCd);
//보안모드 // 기본 데이터 설정
fn_securityModeToggle($("#securityMode--top").is(":checked")); setFormData${pageName}();
} }
/************************************************************************** // 검색 버튼 이벤트
* 초기 셋팅 fnSearchList${pageName} = () => {
**************************************************************************/ // 검색조건
// 초기화 ${pageName}Control.query = ${pageName}Fields.get();
initForm${pageName} = () => {
// 화면 초기화 ${pageName}Control.query.fetchSize = ${pageName}Control.defaultFetchSize; // 한번에 조회되는 자료 건수 FETCH_XS = 30
$("#frmSearch--${pageName}")[0].reset(); ${pageName}Control.query.delYn = "N"; // 삭제 여부
// dataset 초기화 ${pageName}Control.load(1);
${pageName}Control.dataset.clear();
} }
// 엑셀 버튼 이벤트
fnExcel${pageName} = () => {
}
// 사용자 조회 버튼 이벤트
fnFindUser${pageName} = () => {
}
/**************************************************************************
* 초기 설정
**************************************************************************/
// 이벤트 // 이벤트
setEvent${pageName} = () => { setEvent${pageName} = () => {
// 동적검색에서 엔터(Enter) 키를 누르면 검색한다.
$("#term--${pageName}").keypress(function(e) {
if (e.keyCode == 13) {
fnSearchList${pageName}();   
}    
});
// form-date 항목에서 키보드로 입력시 날짜 포맷팅 적용 // form-date 항목에서 키보드로 입력시 날짜 포맷팅 적용
$("#frmSearch--${pageName}").find(".form-date").each(function() { $("#frmSearch--${pageName}").find(".form-date").each(function() {
$(this).on("input", function() { $(this).on("input", function() {
@ -512,40 +590,20 @@
}); });
}); });
// DataTables width 변경 조정 // DataTables width 변경 조정 업무별 그리드가 존재 한다면.. crdn06010-main.jsp 참고
$("#DataTables_Table_0--${pageName}").find("th").resizable( {handles : "e"} ); $("#DataTables_Table_0--${pageName}").find("th").resizable( {handles : "e"} );
// DataTables 스크롤 이벤트 // DataTables 스크롤 이벤트 생성
$("#table-responsive--${pageName}").scroll(function() { fnMakeScrollableTable($("#table-responsive--${pageName}")[0], scrollDataList${pageName});
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");
if (itemsCnt >= totCnt) {
return;
}
if ((el[0].scrollHeight - el.scrollTop() + VERTICAL_SCROLL_HEIGHT) <= el.outerHeight()) {
${pageName}Control.tableRenderComplete = false; // dataTables 에 자료 추가 완료
${pageName}Control.load(${pageName}Control.query.pageNum + 1);
}
});
} }
// 화면 초기값 셋팅 // 화면 초기 설정
setForm${pageName} = (taskSeCd) => { initForm${pageName} = (taskSeCd) => {
// 화면 초기화
$("#frmSearch--${pageName}")[0].reset();
// 업무 구분 코드 // 업무 구분 코드
$("#frmSearch--${pageName} input[name='taskSeCd'][value='" + taskSeCd + "']").prop("checked", true); $("#frmSearch--${pageName} input[name='taskSeCd'][value='" + taskSeCd + "']").prop("checked", true);
// 최고 관리자 경우 업무구분을 선택할 수 있도록 하자. // 최고 관리자 경우 업무구분을 선택할 수 있도록 하자.
$("#frmSearch--${pageName} input[name='taskSeCd']").each(function(i) { $("#frmSearch--${pageName} input[name='taskSeCd']").each(function(i) {
$(this).prop("disabled", "true"); $(this).prop("disabled", "true");
@ -563,67 +621,32 @@
// URL 설정 // URL 설정
setURL${pageName} = (taskSeCd) => { setURL${pageName} = (taskSeCd) => {
${pageName}Control.urls.load = wctx.url("/" + taskSeCd + ${pageName}PrefixUrl + "/050/list.do"); // 조회 ${pageName}Control.urls.load = wctx.url(taskSeCd + ${pageName}PrefixUrl + "/050/list.do"); // 조회
}
/**************************************************************************
* 버튼 clickEvent
**************************************************************************/
// 업무 구분 변경
fnResetAndChangeBiz${pageName} = (taskSeCd) => {
// 초기화
initForm${pageName}();
// 업무 구분 코드
if (typeof taskSeCd == "undefined" || taskSeCd == null || taskSeCd == "") {
taskSeCd = $("#layout-navbar input[name='taskSeCd']:checked").val();
}
// 화면 초기값 설정
setForm${pageName}(taskSeCd);
// URL 설정
setURL${pageName}(taskSeCd);
}
// 초기화 버튼 이벤트
fnReset${pageName} = () => {
fnResetAndChangeBiz${pageName}();
}
// 검색 버튼 이벤트
fnSearchList${pageName} = () => {
// 검색조건
${pageName}Control.query = ${pageName}Fields.get();
${pageName}Control.query.fetchSize = FETCH_XS; // 한번에 조회되는 자료 건수 FETCH_XS = 30
${pageName}Control.query.delYn = "N"; // 삭제 여부
${pageName}Control.load();
} }
// 엑셀 버튼 이벤트 // 기본 데이터 설정
fnExcel${pageName} = () => { setFormData${pageName} = () => {
// ${pageName}Control 설정
${pageName}Control.defaultFetchSize = FETCH_XS; // 1 페이지당 조회되는 자료 건수 index.jsp에서 확인 FETCH_XS = 30
} }
/************************************************************************** /**************************************************************************
* script 진입 * script 진입
**************************************************************************/ **************************************************************************/
$(document).ready(function() { $(document).ready(function() {
// 기본 데이터 설정
$("#sggCd--${pageName}").val("${sggCd}"); // 시군구 코드
// 이벤트 설정 // 이벤트 설정
setEvent${pageName}(); setEvent${pageName}();
// 보안모드 // 시군구 코드 설정
fn_securityModeToggle($("#securityMode--top").is(":checked")); $("#sggCd--${pageName}").val("${sggCd}");
// 업무 구분 설정 // 업무 구분 설정
let defaultBizValue = $("#layout-navbar input[name='taskSeCd']:checked").val(); let defaultBizValue = $("#layout-navbar input[name='taskSeCd']:checked").val();
$("#frmSearch--${pageName} input[name='taskSeCd'][value='" + defaultBizValue + "']").prop("checked", true); $("#frmSearch--${pageName} input[name='taskSeCd'][value='" + defaultBizValue + "']").prop("checked", true);
// 보안모드
fn_securityModeToggle($("#securityMode--top").is(":checked"));
// 화면 초기 설정 및 업무 구분 변경 // 화면 초기 설정 및 업무 구분 변경
fnResetAndChangeBiz${pageName}(defaultBizValue); fnResetAndChangeBiz${pageName}(defaultBizValue);
}); });

@ -293,7 +293,7 @@ $(document).ready(function(){
var trs = empty ? notFound : rductList.inStrings(found,replacer); var trs = empty ? notFound : rductList.inStrings(found,replacer);
var noMore = (total == rductList.length); var noMore = (total == rductList.length);
var initScroll = ($P.rductControl.query.pageNum < 2) && ($P.rductControl.untilPageNum == 0); var initScroll = ($P.rductControl.query.pageNum < 2) && ($P.rductControl.untilPageNum == 0);
$("#table-responsive--${pageName}")[0].changeContent(trs.join(), initScroll, noMore); $("#table-responsive--${pageName}")[0].changeContent(trs.join(), initScroll, noMore);
//보안모드 //보안모드
@ -321,7 +321,7 @@ $(document).ready(function(){
**************************************************************************/ **************************************************************************/
$('#btnReset--${pageName}').on('click', () => $P.fnReset()); $('#btnReset--${pageName}').on('click', () => $P.fnReset());
$('#btnSearch--${pageName}').on('click', () => $P.searchRductList()); $('#btnSearch--${pageName}').on('click', () => $P.searchRductList());
fnMakeScrollableTable($("#table-responsive--${pageName}")[0], $P.scrollRductList); fnMakeScrollableTable($("#table-responsive--${pageName}")[0], $P.scrollRductList);
/************************************************************************** /**************************************************************************

Loading…
Cancel
Save