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