You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

518 lines
26 KiB
Plaintext

<%@ 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>
<!-- Inner page html -->
<div class="content-wrapper" data-doctx="${pageName}">
<!-- Content -->
<div class="container flex-grow-1 px-0">
<!-- Page Body -->
<div class="card wrapper-pop">
<!-- 입력 영역 -->
<form name="frmEdit">
<input type="hidden" name="sggCd" />
<input type="hidden" name="taskSeCd" />
<input type="hidden" name="sndngId" />
</form>
<!-- 입력 영역 -->
<!-- 업무 버튼 및 건수 표시 -->
<div>
<span class="container-page-btn" name="gridButtonArea">
<!-- 건수, 페이지 표시 -->
<div class="d-flex flex-row justify-content-between">
<span is="paging-info" class="dataTables_info" name="dataPagingInfo" role="status" aria-live="polite"></span>
<ul class="pagination pagination-primary" name="dataPaging">
</ul>
</div>
<!-- 업무 버튼 -->
<span class="container-window-btn-right">
<button type="button" class="btn btn-excel w-px-120" name="btnExcel" title="엑셀">엑셀</button>
<button type="button" class="btn btn-primary w-px-120" name="btnLinkNxrpIndivA01" title="세외수입 과태료대장 등록">과태료대장 등록</button>
<button type="button" class="btn btn-primary w-px-120" name="btnLinkNxrpIndivA03" title="세외수입 과태료대장 상세 조회">과태료대장 조회</button>
<button type="button" class="btn btn-primary w-px-120" name="btnCreateSndngLink" title="우편 통합 발송">우편 통합 발송</button>
<button type="button" class="btn btn-primary w-px-120" name="btnPrintAdvntcePdf01" title="사전통지 출력(PDF-A4)">사전통지 출력(PDF-A4)</button>
<button type="button" class="btn btn-primary w-px-120" name="btnPrintAdvntceOutsourcing" title="사전통지 출력(외주파일)">사전통지 출력(외주파일)</button>
<button type="button" class="btn btn-primary w-px-120" name="btnCreateSndbk" title="반송 확인">반송 확인</button>
</span>
</span>
</div> <!-- 업무 버튼 및 건수 표시 -->
<!-- DataTables(그리드) -->
<div class="card-datatable text-nowrap">
<div class="dataTables_wrapper dt-bootstrap5 no-footer">
<div class="table-responsive h-px-400" name="tableRspns">
<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="theadTr" data-search-target="[data-doctx='${pageName}']">
<th class="cmn" style="width: 72px;">No.</th>
<th class="cmn" style="width: 120px;">차량번호</th>
<th class="cmn" style="width: 120px;">발송상태</th>
<th class="cmn" style="width: 160px;">등기번호</th>
<th class="cmn" style="width: 120px;">발송일자</th>
<th class="cmn" style="width: 120px;">발송종료일자</th>
<th class="cmn" style="width: 200px;">수취인</th>
<th class="cmn" style="width: 380px;">주소</th>
<th class="cmn" style="width: 160px;">배달일시</th>
<th class="cmn" style="width: 200px;">미배달사유</th>
<th class="cmn" style="width: 200px;">수령인</th>
<th class="cmn" style="width: 200px;">수령인관계</th>
<th class="cmn" style="width: 160px;">단속일시</th>
<th class="cmn" style="width: 280px;">단속장소</th>
<th class="cmn" style="width: 100px;">회계연도</th>
<th class="cmn" style="width: 100px;">부과번호</th>
<th class="cmn" style="width: 120px;">부과일자</th>
<th class="cmn" style="width: 120px;">납기일자</th>
<th class="cmn" style="width: 120px;">과태료금액</th>
<th class="cmn" style="width: 120px;">본세</th>
<th class="cmn" style="width: 120px;">가산금</th>
<th class="cmn" style="width: 120px;">최종금액</th>
<th class="cmn" style="width: 260px;">등록일시 / 사용자</th>
<th class="cmn" style="width: 260px;">수정일시 / 사용자</th>
</tr>
</thead>
<tbody name="tbodyList">
</tbody>
<template is="curly-brackets" name="tmpltRows">
<tr data-index="{data-index}">
<td class="cmn text-center" onclick ondblclick>{ROW_NUM}</td>
<td class="cmn text-center" onclick ondblclick>{VHRNO}</td>
<td class="cmn text-center" onclick ondblclick>{SNDNG_DTL_STTS_NM}</td>
<td class="cmn text-center" onclick ondblclick>{RG_NO}</td>
<td class="cmn text-center" onclick ondblclick>{SNDNG_YMD}</td>
<td class="cmn text-center" onclick ondblclick>{SNDNG_END_YMD}</td>
<td class="cmn text-start" onclick ondblclick>{RCPN_NM}</td>
<td class="cmn text-start" onclick ondblclick>{RCPN_ZIP}, {RCPN_ADDR} {RCPN_DTL_ADDR}</td>
<td class="cmn text-center" onclick ondblclick>{DLVR_YMD} {DLVR_TM}</td>
<td class="cmn text-start" onclick ondblclick>{UNDLVR_RSN_NM}</td>
<td class="cmn text-start" onclick ondblclick>{ACTL_RCPN_NM}</td>
<td class="cmn text-start" onclick ondblclick>{RCPN_REL_NM}</td>
<td class="cmn text-center" onclick ondblclick>{CRDN_DT}</td>
<td class="cmn text-start" onclick ondblclick>{CRDN_STDG_NM} {CRDN_PLC}</td>
<td class="cmn text-center" onclick ondblclick>{FYR}</td>
<td class="cmn text-center" onclick ondblclick>{LEVY_NO}</td>
<td class="cmn text-center" onclick ondblclick>{LEVY_YMD}</td>
<td class="cmn text-center" onclick ondblclick>{DUDT_YMD}</td>
<td class="cmn text-end" onclick ondblclick>{FFNLG_AMT}</td>
<td class="cmn text-end" onclick ondblclick>{PCPTAX}</td>
<td class="cmn text-end" onclick ondblclick>{ADAMT}</td>
<td class="cmn text-end" onclick ondblclick>{LAST_AMT}</td>
<td class="cmn text-center" onclick ondblclick>{REG_DT} / {RGTR_NM}</td>
<td class="cmn text-center" onclick ondblclick>{MDFCN_DT} / {MDFR_NM}</td>
</tr>
</template>
<template name="tmpltNotFound">
<tr class="odd">
<td valign="top" colspan="31" class="dataTables_empty text-center">${prefixName} 정보를 찾지 못했습니다.</td>
</tr>
</template>
</table>
</div>
</div>
</div> <!-- DataTables(그리드) -->
</div> <!-- <div class="card"> -->
<!-- Page Body -->
</div> <!-- <div class="container flex-grow-1 px-0"> -->
<!-- / Content -->
</div>
<!-- / Inner page html -->
<script>
LoadScript("sndb01080Script", wctx.url("/resources/js/fims/sndb/sndb01080.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 = newSndb01080Control("${pageName}", "[data-doctx=${pageName}]");
// infoDialog 호출 용도(view 조회(편집불가), create 등록, update 수정)
$P.callPurpose = "${callPurpose}";
// main 의 검색 조건을 그대로 유지
$P.mainQuery = ${mainQuery};
/**************************************************************************
* DataTables 이벤트
**************************************************************************/
// dataTable 클릭 이벤트
$P.dataTableClick = (dataIndex) => {
if (!dataIndex) return;
$P.$findn("tbodyList").setCurrentRow(dataIndex);
Apply.toDataset.current($P.ctrl.dataset, dataIndex);
}
// dataTable 더블 클릭 이벤트 - 개별총정보 dialog
$P.dataTableDblClick = (dataIndex) => {
if (!dataIndex) return;
crdnTotalInfo({
callPageName: "${pageName}"
, callPurpose: "view"
, sggCd: $P.ctrl.getValue("SGG_CD")
, taskSeCd: $P.ctrl.getValue("TASK_SE_CD")
, crdnId: $P.ctrl.getValue("CRDN_ID")
});
}
// DataTables에 스크롤이 맨 밑으로 이동했을 때 이벤트
$P.scrollDataList = () => {
// 페이지 증가
$P.ctrl.query.pageNum += 1;
ajax.get({
url: $P.ctrl.urls.load
, headers: { Accept: "application/json; charset=utf-8" } // json
, data: $P.ctrl.query
, success: (resp) => {
if (!$P.ctrl.appendData || $P.ctrl.query.pageNum == 1)
$P.ctrl.setData(resp);
else {
$P.ctrl.addData(resp);
}
}
});
}
/**************************************************************************
* 사용자 함수(function)
**************************************************************************/
// 세외수입 과태료 대장 등록
$P.linkNxrpIndivA01 = (params = {}) => {
<%--
params.download = "xls";
return download.post({
url: wctx.url($P.prefixUrl + "/991/nxrpA01List.do?"),
data: params
});
--%>
ajax.post({
url: wctx.url($P.prefixUrl + "/991/nxrpA01List.do")
, data: params
, success: (resp) => {
let showMessage = resp.rtnMsg.replace(/[S]|[F]/g, params.btnTitle);
dialog.alert({
content: showMessage
, init: () => { AppSupport.setDialogZindex(); }
, onOK: () => { $P.ctrl.reload({all : true}); } // 자료 재조회
});
}
});
}
// 세외수입 과태료 대장 상세 조회
$P.linkNxrpIndivA03 = (params) => {
if (!params) return;
ajax.post({
url: wctx.url($P.prefixUrl + "/991/nxrpA03List.do")
, data: params || {}
, success: (resp) => {
let showMessage = resp.rtnMsg.replace(/[S]|[F]/g, params.btnTitle);
dialog.alert({
content: showMessage
, init: () => { AppSupport.setDialogZindex(); }
, onOK: () => { $P.ctrl.reload({all : true}); } // 자료 재조회
});
}
});
}
// 우편 통합 발송
$P.callbackDate = (obj) => {
if (!obj) return;
let params = {
sggCd: $P.$findn("sggCd").val() // 시군구 코드
, taskSeCd: $P.$findn("taskSeCd").val() // 업무 구분 코드
, sndngId: $P.$findn("sndngId").val() // 발송 ID
, btnTitle: obj.btnTitle // 버튼 title
, sndngYmd: obj.sndngYmd // 발송 일자
, sndngEndYmd: obj.sndngEndYmd // 발송 종료 일자
, postSndngSeCd: obj.postSndngSeCd // 우편 발송 구분 코드 0 일반, 1 등기
};
ajax.post({
url: wctx.url($P.prefixUrl + "/080/createSndngLink.do")
, data: params || {}
, success: (resp) => {
let showMessage = resp.rtnMsg.replace(/[S]|[F]/g, params.btnTitle);
dialog.alert({
content : showMessage
, init: () => { AppSupport.setDialogZindex(); }
, onOK: () => { $P.ctrl.reload({all : true}); } // 자료 재조회
});
}
});
}
// 반송 확인(종적결과 등록)
$P.createSndbk = (params) => {
if (!params) return;
ajax.post({
url: wctx.url($P.prefixUrl + "/230/createSndbkList.do")
, data: params || {}
, success: resp => {
let showMessage = resp.rtnMsg.replace(/[S]|[F]/g, params.btnTitle);
dialog.alert({
content: showMessage
, init: () => { AppSupport.setDialogZindex(); }
, onOK: () => { $P.ctrl.reload({all : true}); } // 자료 재조회
});
}
});
}
/**************************************************************************
* 버튼 clickEvent
**************************************************************************/
// 엑셀 버튼 클릭 이벤트
$P.fnExcel = () => {
if ($P.ctrl.dataset.empty)
return dialog.alert("검색된 " + $P.ctrl.prefixName + " 정보가 없습니다.");
// DataTables(그리드)
$P.ctrl.query.cellDefs =
AppSupport.getCellDefs($P.$findn("theadTr").find("th").not(".dummy-th").not(":eq(0)")
, $($P.findn("tmpltRows").content).find("td").not(".dummy-td").not(":eq(0)")
, FimsSupport.getCellDefsForPrivacyCell);
$P.ctrl.download();
}
// 세외수입 과태료 대장 단속 정보 등록 버튼 이벤트
$P.fnLinkNxrpIndivA01 = (btnTitle) => {
// validate 확인
if (!AppSupport.customValidate($P.$findn("frmEdit").find("input,select,textarea"))) return;
dialog.alert({
content: "세외수입 과태료 대장에 단속 정보를 등록하시겠습니까?"
, init: () => { AppSupport.setDialogZindex(); }
, onOK: () => {
let params = new FimsFormFields($P.selectorn("frmEdit")).get(); // formFields
params.callPurpose = "create"; // 호출 용도
params.btnTitle = btnTitle; // 타이틀
$P.linkNxrpIndivA01(params);
}
});
}
// 세외수입 과태료 대장 상세 조회 버튼 이벤트
$P.fnLinkNxrpIndivA03 = (btnTitle) => {
// validate 확인
if (!AppSupport.customValidate($P.$findn("frmEdit").find("input,select,textarea"))) return;
dialog.alert({
content: "세외수입 과태료 대장을 조회하시겠습니까?"
// , init: () => { AppSupport.setDialogZindex(); }
, onOK: () => {
let params = new FimsFormFields($P.selectorn("frmEdit")).get(); // formFields
params.callPurpose = "update"; // 호출 용도
params.btnTitle = btnTitle; // 타이틀
$P.linkNxrpIndivA03(params);
}
});
}
// 우편통합발송 버튼 이벤트
$P.fnCreateSndngLink = async(btnTitle) => {
// validate 확인
if (!AppSupport.customValidate($P.$findn("frmEdit").find("input,select,textarea"))) return;
let resp = await fetch(wctx.url("/resources/html/inputDateDialog.html"));
let template = await resp.text();
dialog.open({
id : "inputEPostDateDialog"
, title: btnTitle
, size: "md"
, content: template
, init: () => {
AppSupport.setDialogZindex();
$("#divPostSndng").show();
AppSupport.initDatepicker("frmInputDate");
$("#sndngYmd").datepicker("setDate", $P.ctrl.dataset.getValue("SNDNG_YMD"));
$("#sndngEndYmd").datepicker("setDate", $P.ctrl.dataset.getValue("SNDNG_END_YMD"));
},
onOK: () => {
if (!DateSupport.inputDateComparison($("#sndngYmd").val(), $("#sndngEndYmd").val())) return;
$P.callbackDate({
"sndngYmd": $("#sndngYmd").val()
, "sndngEndYmd": $("#sndngEndYmd").val()
, "postSndngSeCd": $("#frmInputDate").find("[name='postSndngSeCd']:checked").val()
});
}
});
}
// 사전통지 출력 버튼 이벤트
$P.fnMakeFileAdvntce = (title, fileType, paper) => {
// validate 확인
if (!AppSupport.customValidate($P.$findn("frmEdit").find("input,select,textarea"))) return;
let submitParam = new FimsFormFields($P.selectorn("frmEdit")).get(); // formFields
let url = "";
let fileTypeName = "";
if (fileType == "pdf") {
// url = wctx.url($P.prefixUrl + "/080/makeAdvntcePdf.do");
url = wctx.url("/preview/prenotice.do");
fileTypeName = "PDF 파일";
} else if (fileType == "outsourcing") {
url = wctx.url($P.prefixUrl + "/080/makeAdvntceOutsourcing.do");
fileTypeName = "외주 요청 파일";
}
let inBrowser = false;
if (fileType == "pdf") {
submitParam.paperSeCd = paper;
inBrowser = true;
}
if (inBrowser) {
var parameter = toQuery(submitParam);
var filenameInHeader = "";
fetch(url + "?" + parameter)
.then((response) => {
var header = response.headers.get('Content-Disposition');
if(!header){
response.json().then((responseJson)=>{
dialog.alert({
content: fileTypeName+" 생성 중 오류가 발생하였습니다."
+"<br/>"
+responseJson.description,
init: () => { AppSupport.setDialogZindex(); }
});
});
new Error("");
}
var parts = header.split(';');
filenameInHeader = decodeURIComponent(parts[1].split('=')[1]);
return response.blob();
})
.then((blob) => {
AppSupport.openPDF(blob, filenameInHeader);
})
.catch(()=>{});
} else {
var parameter = toQuery(submitParam);
document.location.href = url + "?" + parameter;
}
}
// 반송확인 버튼 이벤트
$P.fnCreateSndbk = (btnTitle) => {
// validate 확인
if (!AppSupport.customValidate($P.$findn("frmEdit").find("input,select,textarea"))) return;
dialog.alert({
content: "종적결과를 확인하시겠습니까?"
, onOK: () => {
let params = new FimsFormFields($P.selectorn("frmEdit")).get(); // formFields
params.title = btnTitle; // 버튼 타이틀
$P.createSndbk(params);
}
});
}
/**************************************************************************
* 초기 셋팅
**************************************************************************/
// 이벤트 설정
$P.setEvent = () => {
// 기본 버튼 이벤트
$P.$findn("btnExcel").on("click", () => $P.fnExcel()); // 엑셀
// 버튼 이벤트
$P.$findn("btnLinkNxrpIndivA01").on("click", function() {
$P.fnLinkNxrpIndivA01($P.$findn("btnLinkNxrpIndivA01").attr("title")); // 세외수입 과태료 대장 단속 정보 등록
});
$P.$findn("btnLinkNxrpIndivA03").on("click", function() {
$P.fnLinkNxrpIndivA03($P.$findn("btnLinkNxrpIndivA03").attr("title")); // 세외수입 과태료 대장 단속 정보 상세 조회
});
$P.$findn("btnCreateSndngLink").on("click", function() {
$P.fnCreateSndngLink($P.$findn("btnCreateSndngLink").attr("title")); // 우편 통합 발송
});
$P.$findn("btnPrintAdvntcePdf01").on("click", function() {
$P.fnMakeFileAdvntce($P.$findn("btnPrintAdvntcePdf01").attr("title"), "pdf", "01"); // 사전통지 출력(PDF-A4)
});
$P.$findn("btnPrintAdvntcePdf02").on("click", function() {
$P.fnMakeFileAdvntce($P.$findn("btnPrintAdvntcePdf02").attr("title"), "pdf", "02"); // 사전통지 출력(PDF-Letter)
});
$P.$findn("btnPrintAdvntceOutsourcing").on("click", function() {
$P.fnMakeFileAdvntce($P.$findn("btnPrintAdvntceOutsourcing").attr("title"), "outsourcing"); // 사전통지 출력(외주파일)
});
$P.$findn("btnCreateSndbk").on("click", function() {
$P.fnCreateSndbk($P.$findn("btnCreateSndbk").attr("title")); // 반송 등록
});
// DataTables 스크롤을 위해서 다이얼로그 화면이 생성된 후 Dataset을 설정한다.
let modalId = $(document.querySelector("[data-doctx='${pageName}']")).parents(".modal")[0].id;
$("#" + modalId).on("shown.bs.modal", function (e) {
$P.ctrl.setData( {List: ${List}, Paging :${Paging}} );
});
// DataTables width 변경 조정
Componentization.fnMakeResizableTable($P.findn("tableRspns"));
// DataTables 스크롤 이벤트 생성
Componentization.fnMakeScrollableTable($P.findn("tableRspns"), $P.scrollDataList);
}
// 초기화 이벤트
$P.fnReset = (taskSeCd) => {
// 초기화
$P.findn("frmEdit").reset(); // 화면 초기화
// 기본 데이터 설정
$P.$findn("sggCd").val("${sggCd}"); // 시군구 코드
$P.$findn("taskSeCd").val("${taskSeCd}"); // 업무 구분 코드
$P.$findn("sndngId").val("${sndngId}"); // 발송 ID
<%--
// 업무가 주정차위반(PVS) 또는 전용차로위반(BPV) 이라면..
if ("BPV,PVS,RVS".indexOf("${taskSeCd}") != -1) {
$P.$findn("btnLinkNxrpIndivA01").prop("disabled", true);
$P.$findn("btnLinkNxrpIndivA03").prop("disabled", true);
}
--%>
// 업무 구분에 따른 URL 설정
$P.ctrl.urls.load = wctx.url($P.prefixUrl + "/080/list.do"); // 조회
// 검색 조건
$P.ctrl.query = $P.mainQuery;
}
/**************************************************************************
* 최초 실행 함수
**************************************************************************/
// 1. 이벤트 설정
$P.setEvent();
// 2. 초기 화면 설정
$P.fnReset();
// 3. 보안모드
fn_securityModeToggle($("#securityMode--top").is(":checked"));
});
//# sourceURL=sndb01080-info.jsp
</script>