parent
3135f7b25a
commit
def3fbc181
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>
|
||||
|
@ -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…
Reference in New Issue