개별총정보 - 발송반송 소스 수정.

main
JoJH 1 week ago
parent e347e80350
commit a1bf65c613

@ -34,7 +34,7 @@
<div class="table-responsive ox-scroll oy-scroll h-px-300" name="tableRspnsSndngDtl">
<table class="table-layout-fixed dataTable datatables-ajax table table-bordered no-footer" aria-describedby="DataTables_Table_0_info">
<thead class="sticky-thead">
<tr name="theadTrSndngDtl">
<tr name="theadTrSndngDtl" data-search-target="[data-doctx='${pageName}']">
<th class="cmn sorting" style="width: 120px" data-field="SNDNG_DTL_STTS_NM">발송상태</th>
<th class="cmn sorting" style="width: 100px" data-field="SNDNG_RCVMT_NM">수납</th>
<th class="cmn sorting" style="width: 100px" data-field="DIV_KB_NM">취급구분</th>
@ -65,7 +65,7 @@
<tbody name="tbodySndngDtlList">
</tbody>
<template is="curly-brackets" name="tmpltSndngDtlRows">
<tr data-key="SNDNG_DTL_ID">
<tr data-key="{data-index}">
<td class="text-center" onclick>{SNDNG_DTL_STTS_NM}</td>
<td class="text-center" onclick>{SNDNG_RCVMT_NM}</td>
<td class="text-center" onclick>{DIV_KB_NM}</td>
@ -152,7 +152,7 @@
<div class="table-responsive ox-scroll oy-scroll h-px-250" name="tableRspnsSvbtc">
<table class="table-layout-fixed dataTable datatables-ajax table table-bordered no-footer" aria-describedby="DataTables_Table_0_info">
<thead class="sticky-thead">
<tr name="theadTrSvbtc">
<tr name="theadTrSvbtc" data-search-target="[data-doctx='${pageName}']">
<th class="cmn sorting" style="width: 140px" data-field="SNDNG_SE_NM">발송구분</th>
<th class="cmn sorting" style="width: 120px" data-field="SNDNG_YMD">발송일자</th>
<th class="cmn sorting" style="width: 120px" data-field="SVBTC_YMD">공시송달일자</th>
@ -168,7 +168,7 @@
<tbody name="tbodySvbtcList">
</tbody>
<template is="curly-brackets" name="tmpltSvbtcRows">
<tr data-key="SNDNG_DTL_ID">
<tr data-key="{data-index}">
<td class="text-center" onclick>{SNDNG_SE_NM}</td>
<td class="text-center" onclick>{SNDNG_YMD}</td>
<td class="text-center" onclick>{SVBTC_YMD}</td>
@ -183,7 +183,7 @@
</template>
<template name="tmpltNotFoundSvbtc">
<tr class="odd">
<td valign="top" colspan="9" class="dataTables_empty text-center">공시송달 정보를 찾지 못했습니다.</td>
<td valign="top" colspan="10" class="dataTables_empty text-center">공시송달 정보를 찾지 못했습니다.</td>
</tr>
</template>
</table>
@ -198,6 +198,8 @@
</div> <!-- <div class="content-pop"> -->
<script>
LoadScript("sprt02040Script", wctx.url("/webjars/js/fims/sprt/sprt02040.js?ver=${ver}"));
/**************************************************************************
* Global Variable
**************************************************************************/
@ -210,198 +212,28 @@
// pageObject
let $P = pageObject["${pageName}"];
// FormFields
$P.formFields = new FimsFormFields($P.selectorn("frmEditSndngDtl"));
/**************************************************************************
* DatasetControl
**************************************************************************/
// 발송 상세 정보 DatasetControl
$P.ctrlSndngDtl = new DatasetControl({
prefix: "sndngDtl"
, prefixName: "발송반송"
, keymapper: info => info ? info.SNDNG_DTL_ID : ""
, dataGetter: obj => obj.sndngDtls
, appendData: true
, formats: {
SNDNG_YMD: dateFormat
, DUDT_YMD: dateFormat
, SUM_AMT: numberFormat
, DLVR_YMD: dateFormat
, DLVR_TM: timeFormat
, REG_DT: datetimeFormat
, MDFCN_DT: datetimeFormat
}
});
// 공시송달 정보 DatasetControl
$P.ctrlSvbtc = new DatasetControl({
prefix: "svbtc"
, prefixName: "공시송달"
, keymapper: info => info ? info.SNDNG_DTL_ID : ""
, dataGetter: obj => obj.svbtcDtls
, appendData: true
, formats: {
SNDNG_YMD: dateFormat
, SVBTC_YMD: dateFormat
, REG_DT: datetimeFormat
}
});
/**************************************************************************
* 발송 상세 DatasetControl 이벤트
**************************************************************************/
// Dataset 변경 이벤트
$P.ctrlSndngDtl.onDatasetChange = (obj, option) => {
$P.renderSndngDtlList();
};
// 현재 선택 자료 변경 이벤트
$P.ctrlSndngDtl.onCurrentChange = (item) => {
if (!item) return;
let key = item.data.SNDNG_DTL_ID;
$P.$findn("tbodySndngDtlList").setCurrentRow(key);
// 가상계좌번호
let vrActno = Array.from({length: 20}, (x, i) => {
let no = i + 1
, bank = "BANK_NM" + (no > 1 ? no : "")
, account = "VR_ACTNO" + (no > 1 ? no : "");
return [bank, account]
})
.map(entry => {
let bank = item.data[entry[0]]
, account = item.data[entry[1]];
return bank ? bank + " " + account : null;
})
.filter(txt => txt != null)
.join("\n");
$P.$findn("vrActno").val(vrActno); // 가상 계좌번호
}
// 개별 반송 dialog
$P.ctrlSndngDtl.getInfo = (params) => {
if (!params) return;
ajax.get({
url: wctx.url("/" + params.taskSeCd + "/sndb/sndb01/230/info.do")
, data: params || {}
, success: (resp) => {
let dialogName = "sndbkDialog";
let dialogId = dialogName + "-" + uuid();
dialog.open({
id: dialogId
, title: params.btnTitle
, size: "md"
, content: resp
, init: () => {
$("#" + dialogId).attr("name", dialogName);
$("#" + dialogId).attr("data-ref-doctx", "${pageName}");
AppSupport.setDialogZindex();
}
, onClose: () => { $P.fnRefreshDataInfo(); } // 자료 재조회
});
}
});
}
// 개별 반송 삭제 callback
$P.ctrlSndngDtl.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) { $P.fnRefreshDataInfo(); } // 자료 재조회
}
});
}
// 개별 반송 삭제
$P.ctrlSndngDtl.remove = (params) => {
if (!params) return;
ajax.post({
url: wctx.url("/" + params.taskSeCd + "/sndb/sndb01/220/remove.do")
, data: params || {}
, success: (resp) => {
$P.ctrlSndngDtl.onRemove(params, resp);
}
});
}
/**************************************************************************
* 공시송달 DatasetControl 이벤트
**************************************************************************/
// Dataset 변경
$P.ctrlSvbtc.onDatasetChange = (obj, option) => {
$P.renderSvbtcList();
}
// 현재 선택 자료 변경 이벤트
$P.ctrlSvbtc.onCurrentChange = (item) => {
if (!item) return;
let key = item.data.SNDNG_DTL_ID;
$P.$findn("tbodySvbtcList").setCurrentRow(key);
}
/**************************************************************************
* DataTables 이벤트
**************************************************************************/
// DataTables에 click, dbclick 이벤트
$P.renderSndngDtlList = (totalSize, option) => {
let sndngDtlList = $P.ctrlSndngDtl.dataset;
let empty = sndngDtlList.empty;
let trs = empty ? [$P.findn("tmpltNotFoundSndngDtl").innerHTML] :
sndngDtlList.inStrings($P.findn("tmpltSndngDtlRows").innerHTML
, (str, dataItem) => str
.replace(/{onclick}/gi, "pageObject['${pageName}'].ctrlSndngDtl.setCurrent('" + dataItem.getValue("SNDNG_DTL_ID") + "');")
);
$P.$findn("tbodySndngDtlList").html(trs.join());
}
// 공시송달 정보 DataTables에 click 이벤트
$P.renderSvbtcList = (totalSize, option) => {
let svbtcList = $P.ctrlSvbtc.dataset;
let empty = svbtcList.empty;
let trs = empty ? [$P.findn("tmpltNotFoundSvbtc").innerHTML] :
svbtcList.inStrings($P.findn("tmpltSvbtcRows").innerHTML
, (str, dataItem) => str
.replace(/{onclick}/gi, "pageObject['${pageName}'].ctrlSvbtc.setCurrent('" + dataItem.getValue("SNDNG_DTL_ID") + "');")
);
$P.$findn("tbodySvbtcList").html(trs.join());
}
// URL
$P.prefixUrl = "${prefixUrl}"
// datasetControl
$P.ctrlSndngDtl = newSprt02040ControlSD("${pageName}", "[data-doctx=${pageName}]", "${pageNameMain}");
$P.ctrlSvbtc = newSprt02040ControlSV("${pageName}", "[data-doctx=${pageName}]", "${pageNameMain}");
/**************************************************************************
* 사용자 함수(function)
**************************************************************************/
// 자료 재조회
$P.fnRefreshDataInfo = () => {
let crdnId = pageObject["${mainPageName}"].mainCtrl.getValue("CRDN_ID"); // 단속 ID
// 정보 새로고침
$P.fnRefresh = () => {
let ctrlMain = pageObject["${pageNameMain}"].ctrlMain;
// 단속 ID 가 없다면.. return
let crdnId = ctrlMain.getValue("CRDN_ID"); // 단속 ID
if (!crdnId) return;
let params = {
callPurpose: "refresh"
, sggCd: pageObject["${mainPageName}"].mainCtrl.getValue("SGG_CD")
, taskSeCd: pageObject["${mainPageName}"].mainCtrl.getValue("TASK_SE_CD")
, crdnId: pageObject["${mainPageName}"].mainCtrl.getValue("CRDN_ID")
, sggCd: ctrlMain.getValue("SGG_CD")
, taskSeCd: ctrlMain.getValue("TASK_SE_CD")
, crdnId: ctrlMain.getValue("CRDN_ID")
, delYn: "N"
};
@ -412,15 +244,16 @@
, success: (resp) => {
// 초기화
$P.findn("frmEditSndngDtl").reset(); // 화면 초기화
$P.ctrlSndngDtl.dataset.clear(); // 발송 상세 Dataset 초기화
$P.ctrlSndngDtl.dataset.clear(); // 발송상세 Dataset 초기화
$P.ctrlSvbtc.dataset.clear(); // 공시송달 Dataset 초기화
// sprt02010-main 단속 정보
pageObject["${pageNameMain}"].mainControl.setData([resp.totalInfo]);
// Dataset 셋팅
$P.ctrlSndngDtl.setData(resp.sndngDtls); // 발송 이력 정보
$P.ctrlSvbtc.setData(resp.svbtcDtls); // 공시송달 이력 정보
// 발송 이력 정보
$P.ctrlSndngDtl.setData(resp.sndngDtls);
// 공시송달 이력 정보
$P.ctrlSvbtc.setData(resp.svbtcDtls);
}
});
}
@ -430,12 +263,12 @@
**************************************************************************/
// 개별 반송 등록
$P.fnCreateSndbk = (btnTitle) => {
// 발송상세 ID 가 없다면.. return
let sndngDtlId = $P.ctrlSndngDtl.getValue("SNDNG_DTL_ID"); // 발송 상세 ID
let undlvrRsnNm = $P.ctrlSndngDtl.getValue("UNDLVR_RSN_NM"); // 미배달 사유 명
if (!sndngDtlId) return;
// 발송상세ID 가 없다면.. return
if (typeof sndngDtlId == "undefined" || sndngDtlId == null || sndngDtlId == "") return;
// 미배달 사유 확인
let undlvrRsnNm = $P.ctrlSndngDtl.getValue("UNDLVR_RSN_NM"); // 미배달 사유 명
if (undlvrRsnNm != "" ) {
dialog.alert({
content: "미배달 사유가 " + undlvrRsnNm + " (으)로 반송 등록 되어 있습니다."
@ -465,8 +298,8 @@
let params = {
callPurpose: "create"
, btnTitle: btnTitle
, sggCd: $P.ctrlSndngDtl.getValue("SGG_CD") // 시군구 코드
, taskSeCd: $P.ctrlSndngDtl.getValue("TASK_SE_CD") // 업무 구분 코드
, sggCd: ctrlMain.getValue("SGG_CD") // 시군구 코드
, taskSeCd: ctrlMain.getValue("TASK_SE_CD") // 업무 구분 코드
, sndngDtlId: $P.ctrlSndngDtl.getValue("SNDNG_DTL_ID") // 발송 상세 ID
, delYn: "N"
};
@ -476,9 +309,8 @@
// 개별 반송 수정
$P.fnUpdateSndbk = (btnTitle) => {
let sndngDtlId = $P.ctrlSndngDtl.getValue("SNDNG_DTL_ID"); // 발송 상세 ID
// 발송상세ID 가 없다면.. return
let sndngDtlId = $P.ctrlSndngDtl.getValue("SNDNG_DTL_ID"); // 발송 상세 ID
if (!sndngDtlId) return;
// 미배달 사유 코드
@ -512,13 +344,14 @@
// 개별 반송 삭제
$P.fnRemoveSndbk = (btnTitle) => {
// 발송상세ID 가 없다면.. return
let sndngDtlId = $P.ctrlSndngDtl.getValue("SNDNG_DTL_ID"); // 발송 상세 ID
if (!sndngDtlId) return;
// 발송상세 상태코드 확인 (FIM050 - 05:반송)
let sndngDtlSttsCd = $P.ctrlSndngDtl.getValue("SNDNG_DTL_STTS_CD"); // 발송 상세 상태 코드
let sndngDtlSttsNm = $P.ctrlSndngDtl.getValue("SNDNG_DTL_STTS_NM"); // 발송 상세 상태 명
// 발송상세ID 가 없다면.. return
if (typeof sndngDtlId == "undefined" || sndngDtlId == null || sndngDtlId == "") return;
// 발송상세 상태코드 확인 (FIM050 - 05:반송)
if (sndngDtlSttsCd != "05") {
dialog.alert({
content: "[" + btnTitle + "]" + " 작업은 발송상세 상태가 '반송' 자료만 처리 가능합니다."
@ -586,11 +419,12 @@
}
// 초기 화면 설정
$P.initForm = () => {
// 초기화
$P.findn("frmEditSndngDtl").reset(); // 화면 초기화
$P.ctrlSndngDtl.dataset.clear(); // 발송 상세 Dataset 초기화
$P.ctrlSvbtc.dataset.clear(); // 공시송달 Dataset 초기화
$P.fnReset = () => {
// 화면 초기화
$P.findn("frmEditSndngDtl").reset();
// Dataset 초기화
$P.ctrlSndngDtl.dataset.clear(); // 발송상세
$P.ctrlSvbtc.dataset.clear(); // 공시송달
// 화면 호출(callPurpose)이 view라면 버튼 비활성화 disabled = true
if (pageObject["${pageNameMain}"].callPurpose == "view") {
@ -611,10 +445,10 @@
$P.setEvent();
// 2. 초기 화면 설정
$P.initForm();
$P.fnReset();
// 3. Dataset 설정
$P.ctrlSndngDtl.setData(${sndngDtls}); // 발송 이력
$P.ctrlSndngDtl.setData(${sndngDtls}); // 발송상세 이력
$P.ctrlSvbtc.setData(${svbtcDtls}); // 공시송달 이력
});

@ -1,4 +1,4 @@
function newSprt02040ControlSndngDtl(pageName, doctx="[data-doctx='sprt02040']") {
function newSprt02040ControlSD(pageName, doctx="[data-doctx='sprt02040']", mainPageName="sprt02010") {
let ctrlSndngDtl = new DatasetControl({
doctx: doctx
, prefix: "sndngDtl"
@ -10,9 +10,6 @@ function newSprt02040ControlSndngDtl(pageName, doctx="[data-doctx='sprt02040']")
, urls: {
load: "/list.do"
, getInfo: "/info.do"
, create: "/create.do"
, update: "/update.do"
, remove: "/remove.do"
}
, formats: {
SNDNG_YMD: dateFormat
@ -34,32 +31,15 @@ function newSprt02040ControlSndngDtl(pageName, doctx="[data-doctx='sprt02040']")
let dataList = ctrlSndngDtl.dataset;
let empty = dataList.empty;
// 업무별 dataTables(그리드) tr, td
let foundContent = ctrlSndngDtl.find("[name='tmpltRows']").content;
let foundTr = $(foundContent).find("tr")[0].cloneNode(false);
let foundTds = $(foundContent).find(".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}');");
.replace(/{onclick}/gi, "pageObject['" + pageName + "'].ctrlSndngDtl.setCurrent('{data-index}');")
let trs = empty ?
[ctrlSndngDtl.find("[name='tmpltNotFound']").content.querySelector(".cmn").outerHTML]
: dataList.inStrings(foundTr.outerHTML, replacer);
let noMore = (dataList.length >= obj["Paging"]?.totalSize); // 전체 건수
let initScroll = (ctrlSndngDtl.query.pageNum < 2);
if (option != null && option.reloaded) {
initScroll = false;
}
[ctrlSndngDtl.find("[name='tmpltNotFoundSndngDtl']").innerHTML]
: dataList.inStrings(ctrlSndngDtl.find("[name='tmpltSndngDtlRows']").innerHTML, replacer);
// dataTables(그리드)에 자료 표시 td
ctrlSndngDtl.find("[name='tableRspns']").changeContent(trs.join(), initScroll, noMore);
$(ctrlSndngDtl.find("[name='tbodySndngDtlList']")).html(trs.join());
};
// 현재 선택 자료 변경 이벤트
@ -102,7 +82,7 @@ function newSprt02040ControlSndngDtl(pageName, doctx="[data-doctx='sprt02040']")
dialog.open({
id: dialogId
, title: params.btnTitle
, size: ctrl.infoSize
, size: ctrlSndngDtl.infoSize
, content: resp
, init: () => {
$("#" + dialogId).attr("name", dialogName);
@ -110,7 +90,7 @@ function newSprt02040ControlSndngDtl(pageName, doctx="[data-doctx='sprt02040']")
AppSupport.setDialogZindex();
}
, onClose: () => { ctrlSndngDtl.refresh(); } // 정보 새로고침
, onClose: () => { pageObject[pageName].fnRefresh(); } // 정보 새로고침
});
}
});
@ -126,7 +106,7 @@ function newSprt02040ControlSndngDtl(pageName, doctx="[data-doctx='sprt02040']")
, init: () => { AppSupport.setDialogZindex(); }
, onOK: () => { }
, onClose: () => {
if (resp.saved) { ctrlSndngDtl.refresh(); } // 정보 새로고침
if (resp.saved) { pageObject[pageName].fnRefresh(); } // 정보 새로고침
}
});
}
@ -139,44 +119,58 @@ function newSprt02040ControlSndngDtl(pageName, doctx="[data-doctx='sprt02040']")
url: wctx.url("/" + params.taskSeCd + "/sndb/sndb01/220/remove.do")
, data: params || {}
, success: (resp) => {
ctrl.onRemove(params, resp);
ctrlSndngDtl.onRemove(params, resp);
}
});
}
// 정보 새로고침
ctrlSndngDtl.refresh = () => {
let ctrlMain = pageObject[mainPageName].ctrlMain;
let crdnId = ctrlMain.getValue("CRDN_ID"); // 단속 ID
return ctrlSndngDtl;
}
function newSprt02040ControlSV(pageName, doctx="[data-doctx='sprt02040']", mainPageName="sprt02010") {
let ctrlSvbtc = new DatasetControl({
doctx: doctx
, prefix: "svbtc"
, prefixName: "공시송달"
, dataGetter: obj => obj["svbtcDtls"]
, keys: ["SNDNG_DTL_ID"]
, appendData: true
, infoSize: "md"
, urls: {
load: "/list.do"
, getInfo: "/info.do"
}
, formats: {
SNDNG_YMD: dateFormat
, SVBTC_YMD: dateFormat
, REG_DT: datetimeFormat
}
});
// 단속 ID 가 없다면.. return
if (!crdnId) return;
/**************************************************************************
* DatasetControl Events
**************************************************************************/
// Dataset 변경 이벤트
ctrlSvbtc.onDatasetChange = (obj, option) => {
// 데이터 셋
let dataList = ctrlSvbtc.dataset;
let empty = dataList.empty;
let params = {
callPurpose: "refresh"
, sggCd: ctrlMain.getValue("SGG_CD")
, taskSeCd: ctrlMain.getValue("TASK_SE_CD")
, crdnId: ctrlMain.getValue("CRDN_ID")
, delYn: "N"
};
let replacer = (str, dataItem) => str
.replace(/{onclick}/gi, "pageObject['" + pageName + "'].ctrlSvbtc.setCurrent('{data-index}');")
ajax.get({
url: wctx.url("/" + params.taskSeCd + "/sprt/sprt02/040/info.do")
, headers: { Accept: "application/json; charset=utf-8" } // json
, data: params || {}
, success: (resp) => {
// 초기화
ctrlSndngDtl.find("[name='frmEditSndngDtl']").reset(); // 화면 초기화
ctrlSndngDtl.dataset.clear(); // Dataset 초기화
let trs = empty ?
[ctrlSvbtc.find("[name='tmpltNotFoundSvbtc']").innerHTML]
: dataList.inStrings(ctrlSvbtc.find("[name='tmpltSvbtcRows']").innerHTML, replacer);
// sprt02010-main 단속 정보
ctrlMain.setData([resp.totalInfo]);
// dataTables(그리드)에 자료 표시 td
$(ctrlSvbtc.find("[name='tbodySvbtcList']")).html(trs.join());
};
// 발송 이력 정보
ctrlSndngDtl.setData(resp.sndngDtls);
}
});
}
// 현재 선택 자료 변경 이벤트
ctrlSvbtc.onCurrentChange = (item) => {
Apply.fromDataset.currentRow(ctrlSvbtc.dataset, item, ctrlSvbtc.find("[name='tbodySvbtcList']"));
};
return ctrlSndngDtl;
return ctrlSvbtc;
}

Loading…
Cancel
Save