1. 반송현황 수정.

2. 공시송달 현황 수정.
main
JoJH 4 hours ago
parent 3135f7b25a
commit def3fbc181

@ -520,8 +520,8 @@
// 삭제 버튼 클릭 이벤트
$P.fnRemove = (btnTitle) => {
let selected = $P.ctrl.getDataset("selected"); // 선택 자료
// 선택 자료 확인
let selected = $P.ctrl.getDataset("selected");
if (selected.length < 1) {
dialog.alert({
content: "선택하신 " + $P.ctrl.prefixName + " 정보가 없습니다."

@ -47,9 +47,7 @@
</div>
<div class="col-md-12">
<label is="name-label" class="col-form-label bg-lighter pe-2 w-px-120 text-sm-end" for="etcCn">기타내용</label>
</div>
<div class="col-md-12">
<textarea is="id-textarea" class="form-control w-100" name="etcCn" data-map="ETC_CN" rows="3" data-maxlengthb="1000" autocomplete="off"></textarea>
<textarea is="id-textarea" class="form-control w-87" name="etcCn" data-map="ETC_CN" rows="3" data-maxlengthb="1000" autocomplete="off"></textarea>
</div>
</div>
</form>

@ -162,12 +162,12 @@
// URL
$P.prefixUrl = "${prefixUrl}";
// infoDialog 호출 용도(view 조회(편집불가), create 등록, update 수정)
$P.callPurpose = "${callPurpose}";
// datasetControl
$P.ctrl = newSndb01020Control("${pageName}", "[data-doctx=${pageName}]");
// infoDialog 호출 용도(view 조회(편집불가), create 등록, update 수정)
$P.callPurpose = "${callPurpose}";
// main 의 검색 조건을 그대로 유지
$P.ctrl.query = ${mainQuery};
$P.mainQuery = ${mainQuery};
/**************************************************************************
* DataTables 이벤트
@ -316,6 +316,9 @@
// 업무 구분에 따른 URL 설정
$P.ctrl.urls.load = wctx.url("/" + "${taskSeCd}" + $P.prefixUrl + "/020/info.do"); // 조회
$P.ctrl.urls.create = wctx.url("/" + "${taskSeCd}" + $P.prefixUrl + "/020/createList.do"); // 등록
// 검색 조건
$P.ctrl.query = $P.mainQuery;
}
/**************************************************************************

@ -274,12 +274,12 @@
let params = {
btnTitle: $P.ctrl.prefixName + " 상세 정보"
, pageNum: 1 // 페이지 번호
, fetchSize: DEFAULT_FETCH_SIZE // 1번에 조회되는 건수
, callPurpose: "update"
, sggCd: $P.ctrl.getValue("SGG_CD") // 시군구 코드
, taskSeCd: $P.ctrl.getValue("TASK_SE_CD") // 업무 구분 코드
, sndngId: $P.ctrl.getValue("SNDNG_ID") // 발송 ID
, pageNum: 1 // 페이지 번호
, fetchSize: DEFAULT_FETCH_SIZE // 1번에 조회되는 건수
};
$P.ctrl.getInfo(params);

@ -134,12 +134,12 @@
// URL
$P.prefixUrl = "${prefixUrl}";
// infoDialog 호출 용도(view 조회(편집불가), create 등록, update 수정)
$P.callPurpose = "${callPurpose}";
// datasetControl
$P.ctrl = newSndb01040Control("${pageName}", "[data-doctx=${pageName}]");
// infoDialog 호출 용도(view 조회(편집불가), create 등록, update 수정)
$P.callPurpose = "${callPurpose}";
// main 의 검색 조건을 그대로 유지
$P.ctrl.query = ${mainQuery};
$P.mainQuery = ${mainQuery};
/**************************************************************************
* DataTables 이벤트
@ -303,6 +303,9 @@
// 업무 구분에 따른 URL 설정
$P.ctrl.urls.create = wctx.url("/" + "${taskSeCd}" + $P.prefixUrl + "/040/list.do"); // 조회
// 검색 조건
$P.ctrl.query = $P.mainQuery;
}
/**************************************************************************

@ -160,14 +160,12 @@
// URL
$P.prefixUrl = "${prefixUrl}";
// infoDialog 호출 용도(view 조회(편집불가), create 등록, update 수정)
$P.callPurpose = "${callPurpose}";
// 사전통지 일자
$P.advntceYmdInfo = ${advntceYmdInfo};
// datasetControl
$P.ctrl = newSndb01060Control("${pageName}", "[data-doctx=${pageName}]");
// infoDialog 호출 용도(view 조회(편집불가), create 등록, update 수정)
$P.callPurpose = "${callPurpose}";
// main 의 검색 조건을 그대로 유지
$P.ctrl.query = ${mainQuery};
$P.mainQuery = ${mainQuery};
/**************************************************************************
* DataTables 이벤트
@ -321,6 +319,9 @@
// 업무 구분에 따른 URL 설정
$P.ctrl.urls.load = wctx.url("/" + "${taskSeCd}" + $P.prefixUrl + "/060/info.do"); // 조회
$P.ctrl.urls.create = wctx.url("/" + "${taskSeCd}" + $P.prefixUrl + "/060/createList.do"); // 등록
// 검색 조건
$P.ctrl.query = $P.mainQuery;
}
/**************************************************************************

@ -274,12 +274,12 @@
let params = {
btnTitle: $P.ctrl.prefixName + " 상세 정보"
, pageNum: 1 // 페이지 번호
, fetchSize: DEFAULT_FETCH_SIZE // 1번에 조회되는 건수
, callPurpose: "update"
, sggCd: $P.ctrl.getValue("SGG_CD") // 시군구 코드
, taskSeCd: $P.ctrl.getValue("TASK_SE_CD") // 업무 구분 코드
, sndngId: $P.ctrl.getValue("SNDNG_ID") // 발송 ID
, pageNum: 1 // 페이지 번호
, fetchSize: DEFAULT_FETCH_SIZE // 1번에 조회되는 건수
};
$P.ctrl.getInfo(params);

@ -166,12 +166,12 @@
// URL
$P.prefixUrl = "${prefixUrl}";
// infoDialog 호출 용도(view 조회(편집불가), create 등록, update 수정)
$P.callPurpose = "${callPurpose}";
// datasetControl
$P.ctrl = newSndb01080Control("${pageName}", "[data-doctx=${pageName}]");
// infoDialog 호출 용도(view 조회(편집불가), create 등록, update 수정)
$P.callPurpose = "${callPurpose}";
// main 의 검색 조건을 그대로 유지
$P.ctrl.query = ${mainQuery};
$P.mainQuery = ${mainQuery};
/**************************************************************************
* DataTables 이벤트
@ -557,6 +557,9 @@
// 업무 구분에 따른 URL 설정
$P.ctrl.urls.load = wctx.url("/" + "${taskSeCd}" + $P.prefixUrl + "/080/list.do"); // 조회
// 검색 조건
$P.ctrl.query = $P.mainQuery;
}
/**************************************************************************

@ -251,7 +251,7 @@
// URL
$P.prefixUrl = "${prefixUrl}";
// datasetControl
$P.ctrl = newSndb01070Control("${pageName}", "[data-doctx=${pageName}]");
$P.ctrl = newSndb01110Control("${pageName}", "[data-doctx=${pageName}]");
/**************************************************************************
* DataTables 이벤트
@ -329,12 +329,12 @@
url: wctx.url("/" + params.taskSeCd + $P.prefixUrl + "/100/info.do")
, data: params || {}
, success: (resp) => {
let dialogName = "userDialog";
let dialogName = $P.ctrl.prefixed("Dialog");
let dialogId = dialogName + "-" + uuid();
dialog.open({
id: dialogId
, title: "고지서 발송 대상"
, title: params.btnTitle
, size: "lg"
, content: resp
, init: () => {

@ -160,12 +160,12 @@
// URL
$P.prefixUrl = "${prefixUrl}";
// infoDialog 호출 용도(view 조회(편집불가), create 등록, update 수정)
$P.callPurpose = "${callPurpose}";
// datasetControl
$P.ctrl = newSndb01120Control("${pageName}", "[data-doctx=${pageName}]");
// infoDialog 호출 용도(view 조회(편집불가), create 등록, update 수정)
$P.callPurpose = "${callPurpose}";
// main 의 검색 조건을 그대로 유지
$P.ctrl.query = ${mainQuery};
$P.mainQuery = ${mainQuery};
/**************************************************************************
* DataTables 이벤트
@ -470,6 +470,9 @@
// 업무 구분에 따른 URL 설정
$P.ctrl.urls.load = wctx.url("/" + "${taskSeCd}" + $P.prefixUrl + "/120/list.do");
// 검색 조건
$P.ctrl.query = $P.mainQuery;
}
/**************************************************************************

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

@ -1,249 +1,169 @@
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" isELIgnored="false" session="false"%>
<%@ include file="/WEB-INF/jsp/include/taglib.jsp"%>
<c:set var="prefixName" scope="request">공시송달 정보</c:set>
<c:set var="prefixName" scope="request">공시송달 등록</c:set>
<!-- inner page html -->
<div class="content-pop">
<!-- Content -->
<div class="container flex-grow-1 px-0">
<!-- Page Body -->
<div class="card">
<!-- 입력 영역 -->
<form id="frmEdit--${pageName}" name="frmEdit">
<!-- hidden -->
<input type="hidden" id="sggCd--${pageName}" name="sggCd" data-map="SGG_CD" />
<input type="hidden" id="taskSeCd--${pageName}" name="taskSeCd" data-map="TASK_SE_CD" />
<input type="hidden" id="svbtcId--${pageName}" name="svbtcId" data-map="SVBTC_ID" />
<div class="row g-1">
<!-- 총건수 -->
<div class="col-md-12 text-end">
<label for=tnocs" class="w-px-80 bg-lighter pe-2 col-form-label text-sm-end">총건수</label>
<input type="text" class="form-control w-px-80 text-end" id="tnocs" name="tnocs" data-map="TNOCS" readonly />
</div>
<!-- 공시송달 일자 -->
<div class="col-md-12">
<label for="svbtcYmd--${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="svbtcYmd--${pageName}" name="svbtcYmd" data-map="SVBTC_YMD"
data-fmt-type="day" autocomplete="off" title="날짜 선택" maxlength="10" required />
<button type="button" class="bx bx-lg bx-calendar bg-white" id="btnSvbtcYmd--${pageName}"></button>
</div>
<!-- 공시송달 종료 일자 -->
<div class="col-md-12">
<label for="svbtcEndYmd--${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="svbtcEndYmd--${pageName}" name="svbtcEndYmd" data-map="SVBTC_END_YMD"
data-fmt-type="day" autocomplete="off" title="날짜 선택" maxlength="10" required />
<button type="button" class="bx bx-lg bx-calendar bg-white" id="btnSvbtcEndYmd--${pageName}"></button>
</div>
<!-- 문서 번호 -->
<div class="col-md-12">
<label for="docNo--${pageName}" class="w-px-120 bg-lighter pe-2 col-form-label text-sm-end">문서번호</label>
<input type="text" class="form-control w-50" id="docNo--${pageName}" name="docNo" data-map="DOC_NO" autocomplete="off" />
</div>
<!-- 제목 명 -->
<div class="col-md-12">
<label for="ttlNm--${pageName}" class="w-px-120 bg-lighter pe-2 col-form-label text-sm-end">제목</label>
<input type="text" class="form-control w-70" id="ttlNm--${pageName}" name="ttlNm" data-map="TTL_NM" autocomplete="off" />
</div>
<!-- 기타 내용 -->
<div class="col-md-12">
<label for="etcCn--${pageName}" class="w-px-120 bg-lighter pe-2 col-form-label text-sm-end">기타내용</label>
<textarea type="text" class="form-control w-70" id="etcCn--${pageName}" name="etcCn" data-map="ETC_CN" autocomplete="off" rows="3" data-maxlengthb="1000"></textarea>
</div>
</div>
</form>
<!-- 입력 영역 -->
<!-- 업무 버튼 및 건수 표시 -->
<div>
<span class="container-page-btn">
<!-- 업무 버튼 -->
<span class="container-window-btn-right">
<button type="button" class="btn btn-primary w-px-80" id="btnSave--${pageName}" title="저장">
저장
</button>
</span>
</span>
</div> <!-- 업무 버튼 및 건수 표시 -->
</div> <!-- <div class="card"> -->
<!-- Page Body -->
</div> <!-- <div class="container flex-grow-1 px-0"> -->
<!-- Content -->
<div class="content-pop" data-doctx="${pageName}">
<!-- Content -->
<div class="container flex-grow-1 px-0">
<div class="card">
<!-- 입력 영역 -->
<form name="frmEdit">
<!-- hidden -->
<input type="hidden" name="sggCd" data-map="SGG_CD" />
<input type="hidden" name="taskSeCd" data-map="TASK_SE_CD" />
<input type="hidden" name="svbtcId" data-map="SVBTC_ID" />
<div class="row g-1">
<!-- 총건수 -->
<div class="col-md-12 text-end">
<label is="name-label" class="col-form-label bg-lighter pe-2 w-px-120 text-sm-end" for=tnocs" >총건수</label>
<input is="id-input" type="text" class="form-control w-px-120 text-end" name="tnocs" data-map="TNOCS" readonly />
</div>
<div class="col-md-6">
<label is="name-label" class="col-form-label bg-lighter pe-2 w-px-120 text-sm-end">공시송달일자</label>
<span class="form-search-linebox">
<input type="text" class="form-control form-date" name="svbtcYmd" data-map="SVBTC_YMD"
data-fmt-type="day" autocomplete="off" title="시작 날짜 선택" />
<button type="button" class="bx bx-lg bx-calendar bg-white" name="btnSvbtcYmd"></button>
~
<input type="text" class="form-control form-date" name="svbtcEndYmd" data-map="SVBTC_END_YMD"
data-fmt-type="day" autocomplete="off" title="종료 날짜 선택" />
<button type="button" class="bx bx-lg bx-calendar bg-white" name="btnSvbtcEndYmd"></button>
</span>
</div>
<div class="col-md-6">
<label is="name-label" class="col-form-label bg-lighter pe-2 w-px-120 text-sm-end" for="docNo">문서번호</label>
<input is="id-input" type="text" class="form-control w-60" name="docNo" data-map="DOC_NO" utocomplete="off" />
</div>
<div class="col-md-12">
<label is="name-label" class="col-form-label bg-lighter pe-2 w-px-120 text-sm-end" for="ttlNm">제목</label>
<input is="id-input" type="text" class="form-control w-87" name="ttlNm" data-map="TTL_NM" utocomplete="off" />
</div>
<div class="col-md-12">
<label is="name-label" class="col-form-label bg-lighter pe-2 w-px-120 text-sm-end" for="etcCn">기타내용</label>
<textarea is="id-textarea" class="form-control w-87" name="etcCn" data-map="ETC_CN" rows="3" data-maxlengthb="1000" autocomplete="off"></textarea>
</div>
</div>
</form>
<!-- 입력 영역 -->
</div> <!-- <div class="card"> -->
<!-- 업무 버튼 및 건수 표시 -->
<div>
<span class="container-page-btn">
<!-- 업무 버튼 -->
<span class="container-window-btn-right">
<button type="button" class="btn btn-primary w-px-120" name="btnSave" title="저장">
저장
</button>
</span>
</span>
</div>
<!-- 업무 버튼 및 건수 표시 -->
</div> <!-- <div class="container flex-grow-1 px-0"> -->
<!-- Content -->
</div>
<!-- / inner page html <div class="content-pop"> -->
<script>
/**************************************************************************
* Global Variable
**************************************************************************/
pageObject["${pageName}"] = {};
// 공통 코드
var FIM047 = new CommonCodes(${FIM047}, true);
var FIM054 = new CommonCodes(${FIM054}, true);
/**************************************************************************
* script 진입
**************************************************************************/
$(document).ready(function() {
// pageObject
let $P = pageObject["${pageName}"];
// infoDialog 호출 용도(view 조회(편집불가), create 등록, update 수정)
$P.callPurpose = "${callPurpose}";
// FormFields
$P.formFields = new FimsFormFields("#frmEdit--${pageName}");
// main 의 검색 조건을 그대로 유지
$P.mainQuery = ${mainQuery};
/**************************************************************************
* DatasetControl
**************************************************************************/
$P.control = new DatasetControl({
prefix: "svbtc"
, prefixName: "공시송달"
, keymapper: info => info ? info.SVBTC_ID : ""
, dataGetter: obj => obj.${infoPrefix}Info
});
/**************************************************************************
* DatasetControl 이벤트
**************************************************************************/
$P.control.onCurrentChange = (item) => {
if (!item) return;
// Dataset 셋팅
$P.formFields.set($P.control, item);
// 업무구분에 따른 URL 변경
$P.fnSetURL(item.data.TASK_SE_CD);
// 호출용도가 등록이라면..
if ($P.callPurpose == "create") {
let taskSeCd = item.data.TASK_SE_CD;
let sndngSeCd = item.data.SNDNG_SE_CD;
$("#svbtcYmd--${pageName}").datepicker("setDate", new Date());
$("#svbtcEndYmd--${pageName}").datepicker("setDate", DateSupport.getAddDay(15));
if (sndngSeCd == "") {
$("#ttlNm--${pageName}").val(FIM054[taskSeCd].value + " " + "공시송달");
} else {
$("#ttlNm--${pageName}").val(FIM047[sndngSeCd].value.replace("(개별)", "") + " " + "공시송달");
}
}
}
// 저장 callback
$P.control.onSave = (resp) => {
let dialogTitle = $("#" + $P.control.prefix + "Dialog--${openerPageName}").find("h5.modal-title").html();
let showMessage = resp.rtnMsg.replace(/[S]|[F]/g, dialogTitle);
// 메시지 출력
dialog.alert({
content: showMessage
, init: () => { AppSupport.setDialogZindex(); }
, onOK: () => { }
});
if (resp.saved) {
dialog.close($P.control.prefix + "Dialog--${openerPageName}");
}
}
// 저장
$P.control.save = (info) => {
if (!info) return;
let create = ($P.callPurpose == "create");
ajax.post({
url: !create ? $P.control.urls.update : $P.control.urls.create
, data: info || {}
, success: resp => $P.control.onSave(resp)
});
}
/**************************************************************************
* 사용자 함수(function)
**************************************************************************/
// 업무구분에 따른 URL 설정
$P.fnSetURL = (taskSeCd) => {
$P.control.urls.create = wctx.url("/" + taskSeCd + "${infoPrefixUrl}" + "/260/create.do"); // 등록
$P.control.urls.update = wctx.url("/" + taskSeCd + "${infoPrefixUrl}" + "/260/update.do"); // 수정
}
/**************************************************************************
* 버튼 clickEvent
**************************************************************************/
// 저장 버튼 클릭 이벤트
$P.fnSave = () => {
// validate 확인
if (!AppSupport.customValidate($("#frmEdit--${pageName}").find("input, select, textarea"))) return;
// 검색조건과 저장 파라미터 객체를 합친다.
let params = $.extend({}, $P.mainQuery, $P.formFields.get());
dialog.alert({
content: "현재 " + $P.control.prefixName + " 정보를 저장하시겠습니까?"
, init: () => { AppSupport.setDialogZindex(); }
, onOK: () => {
$P.control.save(params);
}
});
}
/**************************************************************************
* 초기 셋팅
**************************************************************************/
// 이벤트 설정
$P.setEvent = () => {
// form-date 항목에서 키보드로 입력시 날짜 포맷팅 적용
$("#frmEdit--${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);
}
});
});
// 버튼 이벤트
$("#btnSave--${pageName}").on("click", () => $P.fnSave()); // 저장
}
// 초기 화면 설정
$P.initForm = () => {
// 달력 초기화
AppSupport.initDatepicker("frmEdit--${pageName}");
$("#svbtcYmd--${pageName}").datepicker("setDate", new Date());
$("#svbtcEndYmd--${pageName}").datepicker("setDate", new Date());
if ($P.callPurpose == "view") { // view
// input 요소들을 disabled
$("#frmEdit--${pageName}").find("input,textarea,select").prop("disabled", true);
// button 요소들을 disabled
$("#btnSvbtcYmd--${pageName}").prop("disabled", true); // 부과제외 일자 달력 버튼
$("#btnSave--${pageName}").prop("disabled", true); // 저장 버튼
}
}
/**************************************************************************
* 최초 실행 함수
**************************************************************************/
// 1. 이벤트 설정
$P.setEvent();
// 2. 초기 화면 설정
$P.initForm();
// 3. Dataset 설정
$P.control.setData([${svbtcInfo}]);
});
LoadScript("sndb01260Script", wctx.url("/webjars/js/fims/sndb/sndb01260.js?ver=${ver}"));
/**************************************************************************
* Global Variable
**************************************************************************/
pageObject["${pageName}"] = newDoctxFinder("${pageName}");
/**************************************************************************
* script 진입
**************************************************************************/
$(document).ready(function() {
// pageObject
let $P = pageObject["${pageName}"];
// URL
$P.prefixUrl = "${prefixUrl}";
// datasetControl
$P.ctrl = newSndb01260Control("${pageName}", "[data-doctx=${pageName}]");
// 공통 코드
$P.FIM047 = new CommonCodes(${FIM047}, true);
$P.FIM054 = new CommonCodes(${FIM054}, true);
// infoDialog 호출 용도(view 조회(편집불가), create 등록, update 수정)
$P.callPurpose = "${callPurpose}";
// main 의 검색 조건을 그대로 유지
$P.mainQuery = ${mainQuery};
/**************************************************************************
* 사용자 함수(function)
**************************************************************************/
/**************************************************************************
* 버튼 clickEvent
**************************************************************************/
// 저장 버튼 클릭 이벤트
$P.fnSave = () => {
// validate 확인
if (!AppSupport.customValidate($P.$findn("frmEdit").find("input,select,textarea"))) return;
dialog.alert({
content: "현재 " + $P.ctrl.prefixName + " 정보를 저장하시겠습니까?"
, init: () => { AppSupport.setDialogZindex(); }
, onOK: () => {
let formFields = new FimsFormFields($P.selectorn("frmEdit")).get();
// 검색조건과 저장 파라미터 객체를 합친다.
let params = $.extend({}, $P.mainQuery, formFields);
$P.ctrl.save(params);
}
});
}
/**************************************************************************
* 초기 셋팅
**************************************************************************/
// 이벤트 설정
$P.setEvent = () => {
// 버튼 이벤트
$P.$findn("btnSave").on("click", () => $P.fnSave()); // 저장
}
// 초기 화면 설정
$P.fnReset = () => {
// 초기화
$P.findn("frmEdit").reset(); // 화면 초기화
AppSupport.initDatepicker($P.findn("frmEdit")); // 달력 초기화
// 기본 데이터 설정
$P.$findn("svbtcYmd").datepicker("setDate", TODAY()); // 공시송달 일자
$P.$findn("svbtcEndYmd").datepicker("setDate", TODAY()); // 공시송달 일자
if ($P.callPurpose == "view") { // view
// input 요소들을 disabled
$P.$findn("frmEdit").find("input,textarea,select").prop("disabled", true);
// button 요소들을 disabled
$P.$findn("btnSvbtcYmd").prop("disabled", true); // 공시송달 일자
$P.$findn("btnSvbtcEndYmd").prop("disabled", true); // 공시송달 일자
$P.$findn("btnSave").prop("disabled", true); // 저장 버튼
}
// 검색 조건
$P.ctrl.query = $P.mainQuery;
}
/**************************************************************************
* 최초 실행 함수
**************************************************************************/
// 1. 이벤트 설정
$P.setEvent();
// 2. 초기 화면 설정
$P.fnReset();
// 3. dataset 설정
$P.ctrl.setData([${Info}]);
});
</script>

@ -1,4 +1,4 @@
function newSndb01070Control(pageName, doctx="[data-doctx='sndb01070']") {
function newSndb01110Control(pageName, doctx="[data-doctx='sndb01110']") {
let ctrl = new DatasetControl({
doctx: doctx
, prefix: "nhtSndng"

@ -0,0 +1,152 @@
function newSndb01220Control(pageName, doctx="[data-doctx='sndb01220']") {
let ctrl = new DatasetControl({
doctx: doctx
, prefix: "sndbk"
, prefixName: "반송"
, dataGetter: obj => obj["List"]
, keys: ["SNDNG_DTL_ID"]
, appendData: true
, infoSize: "xxl"
, urls: {
load: "/list.do"
, getInfo: "/info.do"
, remove: "/remove.do"
}
, formats: {
DLVR_YMD: dateFormat
, DLVR_TM: timeFormat
, SNDNG_YMD: dateFormat
, CRDN_YMD_TM: datetimeFormat
, FFNLG_AMT: numberFormat
, PCPTAX: numberFormat
, ADAMT: numberFormat
, REG_DT: datetimeFormat
, MDFCN_DT: datetimeFormat
}
});
// 검색 조건
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
**************************************************************************/
// Dataset 변경 이벤트
ctrl.onDatasetChange = (obj, option) => {
// 데이터 셋
let dataList = ctrl.dataset;
let empty = dataList.empty;
let clsForTask = $(ctrl.find("[name='frmSearch']")).find("[name='taskSeCd']:checked").val().toLowerCase();
// 업무별 dataTables(그리드) tr, td
let foundContent = ctrl.find("[name='tmpltRows']").content;
let foundTr = $(foundContent).find("tr")[0].cloneNode(false);
let foundTds = $(foundContent).find("." + clsForTask + ",.cmn");
foundTds.each(function() {
foundTr.appendChild(this.cloneNode(true));
});
let replacer = (str, dataItem) => str
.replace(/{onclick}/gi, "pageObject['" + pageName + "'].dataTableClick('{data-index}');")
.replace(/{ondblclick}/gi, "pageObject['" + pageName + "'].dataTableDblClick('{data-index}');");
let trs = empty ?
[ctrl.find("[name='tmpltNotFound']").content.querySelector("." + clsForTask + ",.cmn").outerHTML]
: dataList.inStrings(foundTr.outerHTML, replacer);
let noMore = (dataList.length >= obj["Paging"]?.totalSize); // 전체 건수
let initScroll = (ctrl.query.pageNum < 2);
if (option != null && option.reloaded) {
initScroll = false;
}
// dataTables(그리드)에 자료 표시 td
ctrl.find("[name='tableRspns']").changeContent(trs.join(), initScroll, noMore);
// checkbox 체크 해제
$(ctrl.find("[name='gridAllCheckbox']")).prop("checked", false);
// dataTables(그리드)에 페이지 표시 pagingInfo
ctrl.pagingSupport.setPagingInfo(obj);
// 보안모드
fn_securityModeToggle($("#securityMode--top").is(":checked"));
};
// 현재 선택 자료 변경 이벤트
ctrl.onCurrentChange = (item) => {
Apply.fromDataset.currentRow(ctrl.dataset, item, ctrl.find("[name='tbodyList']"));
};
// 선택(체크) 변경 이벤트
ctrl.onSelectionChange = (selectedArr) => {
// gridCheckbox
Apply.fromDataset.gridCheckbox(ctrl.dataset, ctrl.find("[name='tbodyList']"), 1, selectedArr);
// gridButton
Apply.fromDataset.gridButton(ctrl.dataset, ctrl.find("[name='btnCreateSlctnSndngLink']"), selectedArr); // 선택 대상 통합우편 발송 버튼
};
// 상세 정보 dialog
ctrl.getInfo = (params) => {
if (!params) return;
ajax.get({
url: ctrl.urls.getInfo
, data: params || {}
, success: (resp) => {
let dialogName = ctrl.prefixed("Dialog");
let dialogId = dialogName + "-" + uuid();
dialog.open({
id: dialogId
, title: params.btnTitle
, size: ctrl.infoSize
, content: resp
, init: () => {
$("#" + dialogId).attr("name", dialogName);
$("#" + dialogId).attr("data-ref-doctx", pageName);
AppSupport.setDialogZindex();
}
, onClose: () => { ctrl.reload({all : true}); } // 자료 재조회
});
}
});
}
// 삭제 callback
ctrl.onRemove = (params, resp) => {
let showMessage = resp.rtnMsg.replace(/[S]|[F]/g, params.btnTitle);
// 메시지 출력
dialog.alert({
content: showMessage
, init: () => { AppSupport.setDialogZindex(); }
, onOK: () => { }
, onClose: () => {
if (resp.saved) { ctrl.reload({ all: true }); } // 자료 재조회
}
});
}
// 삭제
ctrl.remove = (params) => {
if (!params) return;
ajax.post({
url: ctrl.urls.remove
, data: params || {}
, success: (resp) => { ctrl.onRemove(params, resp); }
});
}
return ctrl;
}

@ -0,0 +1,149 @@
function newSndb01240Control(pageName, doctx="[data-doctx='sndb01240']") {
let ctrl = new DatasetControl({
doctx: doctx
, prefix: "svbtc"
, prefixName: "공시송달"
, dataGetter: obj => obj["List"]
, keys: ["SVBTC_ID"]
, appendData: true
, infoSize: "xxl"
, urls: {
load: "/list.do"
, getInfo: "/info.do"
, remove: "/remove.do"
}
, formats: {
SVBTC_YMD: dateFormat
, SVBTC_END_YMD: dateFormat
, TNOCS: numberFormat
, GRAMT: numberFormat
, REG_DT: datetimeFormat
, MDFCN_DT: datetimeFormat
}
});
// 검색 조건
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
**************************************************************************/
// Dataset 변경 이벤트
ctrl.onDatasetChange = (obj, option) => {
// 데이터 셋
let dataList = ctrl.dataset;
let empty = dataList.empty;
let clsForTask = $(ctrl.find("[name='frmSearch']")).find("[name='taskSeCd']:checked").val().toLowerCase();
// 업무별 dataTables(그리드) tr, td
let foundContent = ctrl.find("[name='tmpltRows']").content;
let foundTr = $(foundContent).find("tr")[0].cloneNode(false);
let foundTds = $(foundContent).find("." + clsForTask + ",.cmn");
foundTds.each(function() {
foundTr.appendChild(this.cloneNode(true));
});
let replacer = (str, dataItem) => str
.replace(/{onclick}/gi, "pageObject['" + pageName + "'].dataTableClick('{data-index}');")
.replace(/{ondblclick}/gi, "pageObject['" + pageName + "'].dataTableDblClick('{data-index}');");
let trs = empty ?
[ctrl.find("[name='tmpltNotFound']").content.querySelector("." + clsForTask + ",.cmn").outerHTML]
: dataList.inStrings(foundTr.outerHTML, replacer);
let noMore = (dataList.length >= obj["Paging"]?.totalSize); // 전체 건수
let initScroll = (ctrl.query.pageNum < 2);
if (option != null && option.reloaded) {
initScroll = false;
}
// dataTables(그리드)에 자료 표시 td
ctrl.find("[name='tableRspns']").changeContent(trs.join(), initScroll, noMore);
// checkbox 체크 해제
$(ctrl.find("[name='gridAllCheckbox']")).prop("checked", false);
// dataTables(그리드)에 페이지 표시 pagingInfo
ctrl.pagingSupport.setPagingInfo(obj);
// 보안모드
fn_securityModeToggle($("#securityMode--top").is(":checked"));
};
// 현재 선택 자료 변경 이벤트
ctrl.onCurrentChange = (item) => {
Apply.fromDataset.currentRow(ctrl.dataset, item, ctrl.find("[name='tbodyList']"));
};
// 선택(체크) 변경 이벤트
ctrl.onSelectionChange = (selectedArr) => {
// gridCheckbox
Apply.fromDataset.gridCheckbox(ctrl.dataset, ctrl.find("[name='tbodyList']"), 1, selectedArr);
// gridButton
Apply.fromDataset.gridButton(ctrl.dataset, ctrl.find("[name='btnRemove']"), selectedArr); // 선택 대상 통합우편 발송 버튼
};
// 상세 정보 dialog
ctrl.getInfo = (params) => {
if (!params) return;
ajax.get({
url: ctrl.urls.getInfo
, data: params || {}
, success: (resp) => {
let dialogName = ctrl.prefixed("Dialog");
let dialogId = dialogName + "-" + uuid();
dialog.open({
id: dialogId
, title: params.btnTitle
, size: ctrl.infoSize
, content: resp
, init: () => {
$("#" + dialogId).attr("name", dialogName);
$("#" + dialogId).attr("data-ref-doctx", pageName);
AppSupport.setDialogZindex();
}
, onClose: () => { ctrl.reload({all : true}); } // 자료 재조회
});
}
});
}
// 삭제 callback
ctrl.onRemove = (params, resp) => {
let showMessage = resp.rtnMsg.replace(/[S]|[F]/g, params.btnTitle);
// 메시지 출력
dialog.alert({
content: showMessage
, init: () => { AppSupport.setDialogZindex(); }
, onOK: () => { }
, onClose: () => {
if (resp.saved) { ctrl.reload({ all: true }); } // 자료 재조회
}
});
}
// 삭제
ctrl.remove = (params) => {
if (!params) return;
ajax.post({
url: ctrl.urls.remove
, data: params || {}
, success: (resp) => { ctrl.onRemove(params, resp); }
});
}
return ctrl;
}

@ -0,0 +1,114 @@
function newSndb01250Control(pageName, doctx="[data-doctx='sndb01250']") {
let ctrl = new DatasetControl({
doctx: doctx
, prefix: "svbtcDtl"
, prefixName: "공시송달 상세 정보"
, dataGetter: obj => obj["List"]
, keys: ["SNDNG_DTL_ID"]
, appendData: true
, urls: {
load: "/list.do"
}
, formats: {
SVBTC_YMD: dateFormat
, SVBTC_END_YMD: dateFormat
, SNDNG_YMD: dateFormat
, SNDNG_END_YMD: dateFormat
, DLVR_YMD: dateFormat
, LEVY_YMD: dateFormat
, DUDT_YMD: dateFormat
, FFNLG_AMT: numberFormat
, PCPTAX: numberFormat
, ADAMT: numberFormat
, REG_DT: datetimeFormat
, MDFCN_DT: datetimeFormat
}
});
// 검색 조건
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
**************************************************************************/
ctrl.onDatasetChange = (obj, option) => {
// 데이터 셋
let dataList = ctrl.dataset;
let empty = dataList.empty;
let replacer = (str, dataItem) => str
.replace(/{onclick}/gi, "pageObject['" + pageName + "'].dataTableClick('{data-index}');")
.replace(/{ondblclick}/gi, "pageObject['" + pageName + "'].dataTableDblClick('{data-index}');");
let trs = empty ?
[ctrl.find("[name='tmpltNotFound']").innerHTML]
: dataList.inStrings(ctrl.find("[name='tmpltRows']").innerHTML, replacer);
let noMore = (dataList.length >= obj["Paging"]?.totalSize); // 전체 건수
let initScroll = (ctrl.query.pageNum < 2);
if (option != null && option.reloaded) {
initScroll = false;
}
// dataTables(그리드)에 자료 표시 td
ctrl.find("[name='tableRspns']").changeContent(trs.join(), initScroll, noMore);
// checkbox 체크 해제
$(ctrl.find("[name='gridAllCheckbox']")).prop("checked", false);
// dataTables(그리드)에 페이지 표시 pagingInfo
ctrl.pagingSupport.setPagingInfo(obj);
// 보안모드
fn_securityModeToggle($("#securityMode--top").is(":checked"));
};
// 현재 선택 자료 변경 이벤트
ctrl.onCurrentChange = (item) => {
Apply.fromDataset.currentRow(ctrl.dataset, item, ctrl.find("[name='tbodyList']"));
};
// 선택(체크) 변경 이벤트
ctrl.onSelectionChange = (selectedArr) => {
// gridCheckbox
Apply.fromDataset.gridCheckbox(ctrl.dataset, ctrl.find("[name='tbodyList']"), 1, selectedArr);
// gridButton
Apply.fromDataset.gridButton(ctrl.dataset, ctrl.find("[name='btnPrintHwp']"), selectedArr); // 한글파일 출력 버튼
Apply.fromDataset.gridButton(ctrl.dataset, ctrl.find("[name='btnRemove']"), selectedArr); // 공시송달 삭제 버튼
};
// 삭제 callback
ctrl.onRemove = (params, resp) => {
let showMessage = resp.rtnMsg.replace(/[S]|[F]/g, params.btnTitle);
// 메시지 출력
dialog.alert({
content: showMessage
, init: () => { AppSupport.setDialogZindex(); }
, onOK: () => { }
, onClose: () => {
if (resp.saved) { ctrl.reload({ all: true }); } // 자료 재조회
}
});
}
// 삭제
ctrl.remove = (params) => {
if (!params) return;
ajax.post({
url: ctrl.urls.remove
, data: params || {}
, success: (resp) => { ctrl.onRemove(params, resp); }
});
}
return ctrl;
}

@ -0,0 +1,79 @@
function newSndb01260Control(pageName, doctx="[data-doctx='sndb01260']") {
let ctrl = new DatasetControl({
doctx: doctx
, prefix: "svbtc"
, prefixName: "공시송달"
, dataGetter: obj => obj["Info"]
, keys: ["SVBTC_ID"]
, urls: {
create: "/create.do"
, update: "/update.do"
}
});
/**************************************************************************
* DatasetControl Events
**************************************************************************/
// 현재 선택 자료 변경 이벤트
ctrl.onCurrentChange = (item) => {
if (!item) return;
// 화면에 단속 Dataset 셋팅
let formFields = new FimsFormFields(ctrl.selector("[name='frmEdit']"));
formFields.set(ctrl, item);
// 업무구분에 따른 URL 변경
ctrl.urls.create = wctx.url("/" + item.data.TASK_SE_CD + pageObject[pageName].prefixUrl + "/260/create.do"); // 등록
ctrl.urls.update = wctx.url("/" + item.data.TASK_SE_CD + pageObject[pageName].prefixUrl + "/260/update.do"); // 수정
// 등록이라면..
if (!item.data.SVBTC_ID) {
let taskSeCd = item.data.TASK_SE_CD;
let sndngSeCd = item.data.SNDNG_SE_CD;
let ttlNm = "";
// 공시송달일자
$(ctrl.find("[name='svbtcYmd']")).datepicker("setDate", TODAY());
$(ctrl.find("[name='svbtcEndYmd']")).datepicker("setDate", DateSupport.getAddDay(15));
if (sndngSeCd) {
ttlNm = pageObject[pageName].FIM047[sndngSeCd].value.replace("(개별)", "") + " 공시송달";
} else {
ttlNm = "공시송달";
}
$(ctrl.find("[name='ttlNm']")).val(ttlNm);
}
}
// 저장 callback
ctrl.onSave = (params, resp) => {
let modalId = $(document.querySelector(doctx)).parents(".modal")[0].id;
let dialogTitle = $("#" + modalId).find("h5.modal-title").html();
let showMessage = resp.rtnMsg.replace(/[S]|[F]/g, dialogTitle);
// 메시지 출력
dialog.alert({
content: showMessage
, init: () => { AppSupport.setDialogZindex(); }
, onOK: () => { }
, onClose: () => {
if (resp.saved) { dialog.close(modalId); }
}
});
}
// 저장
ctrl.save = (params) => {
if (!params) return;
let create = (!params.svbtcId);
ajax.post({
url: !create ? ctrl.urls.update : ctrl.urls.create
, data: params || {}
, success: (resp) => { ctrl.onSave(params, resp); }
});
}
return ctrl;
}
Loading…
Cancel
Save