고지서 발송 현황 수정.

main
jjh 5 months ago
parent c94f77487d
commit 21651e5754

@ -32,6 +32,7 @@ import cokr.xit.fims.cmmn.OutsourcingStngQuery;
import cokr.xit.fims.cmmn.dao.OtptStngMapper;
import cokr.xit.fims.cmmn.hwp.format.SvbtcList;
import cokr.xit.fims.cmmn.pdf.print.format.Advntce;
import cokr.xit.fims.cmmn.pdf.print.format.Nht;
import cokr.xit.fims.cmmn.service.bean.OutsourcingStngBean;
import cokr.xit.fims.cmmn.service.bean.StngBean;
import cokr.xit.fims.cmmn.xls.FormatMaker;
@ -90,9 +91,8 @@ public class Sndb01Controller extends ApplicationController {
, getAdvanceNoticeSendingDetailInfo = "/080/info.do" // 사전통지 발송 현황 상세 화면
, getAdvanceNoticeSendingDetailList = "/080/list.do" // 사전통지 발송 현황 상세 목록 조회
, createSendingLink = "/080/createSndngLink.do" // 사전통지 발송 현황 상세 목록의 우편통합 발송 연계 등록
, makeAdvanceNoticePdf = "/080/makePdf.do" // 사전통지 발송 현황 사전통지서 출력(PDF)
, makeAdvanceNoticeOutsourcing = "/080/makeOutsourcing.do" // 사전통지 발송 현황 사전통지서 출력(외주파일)
, createAdvanceNoticeSendBackList = "/080/createSndbkList.do" // 사전통지 발송 상세 목록의 반송 확인(등록)
, makeAdvanceNoticePdf = "/080/makeAdvntcePdf.do" // 사전통지 발송 현황 사전통지서 출력(PDF)
, makeAdvanceNoticeOutsourcing = "/080/makeAdvntceOutsourcing.do" // 사전통지 발송 현황 사전통지서 출력(외주파일)
, noticeSheetTargetMain = "/090/main.do" // 고지서 발송 대상 메인 화면
, getNoticeSheetTargetList = "/090/list.do" // 고지서 발송 대상 목록 조회
, getNoticeSheetTargetInfo = "/100/info.do" // 고지서 발송 대상 조회
@ -102,6 +102,9 @@ public class Sndb01Controller extends ApplicationController {
, removeNoticeSheetSending = "/110/remove.do" // 고지서 발송 현황 삭제
, getNoticeSheetSendingDetailInfo = "/120/info.do" // 고지서 발송 현황 화면
, getNoticeSheetSendingDetailList = "/120/list.do" // 고지서 발송 현황 상세 목록 조회
, makeNoticeSheetPdf = "/120/makeNhtPdf.do" // 고지서 발송 현황 사전통지서 출력(PDF)
, makeNoticeSheetOutsourcing = "/120/makeNhtOutsourcing.do" // 고지서 발송 현황 사전통지서 출력(외주파일)
, sendingDetailInfo = "/210/info.do" // 수기 반송 등록 상세
, getSendingDetailList = "/210/list.do" // 수기 반송 등록 조회
@ -109,6 +112,7 @@ public class Sndb01Controller extends ApplicationController {
, getSendBackList = "/220/list.do" // 반송 현황 목록 조회
, removeSendBack = "/220/remove.do" // 반송 삭제
, getSendBackInfo = "/230/info.do" // 반송 정보 조회
, createSendBackList = "/230/createSndbkList.do" // 사전통지 발송 상세 목록의 반송 확인(등록)
, createSendBack = "/230/create.do" // 반송 등록
, updateSendBack = "/230/update.do" // 반송 수정
, serviceByPublicNoticeMain = "/240/main.do" // 공시송달 현황 메인 화면
@ -842,23 +846,6 @@ public class Sndb01Controller extends ApplicationController {
}
}
/** (sndb/sndb01/090-main) .
* @return /sndb/sndb01/090-main
*/
@ -971,10 +958,6 @@ public class Sndb01Controller extends ApplicationController {
@Task
@RequestMapping(name="고지서 발송 대상 상세 화면", value=METHOD_URL.getNoticeSheetTargetInfo)
public ModelAndView getNoticeSheetTargetInfo(HttpServletRequest hReq, SndbQuery req) {
// ModelAndView mav = getWarningTargetList(req);
// mav.setViewName("fims/sndb/sndb01100-info");
ModelAndView mav = new ModelAndView("fims/sndb/sndb01100-info");
return mav
@ -996,7 +979,7 @@ public class Sndb01Controller extends ApplicationController {
* }</code></pre>
*/
@Task
@RequestMapping(name="고지서 발송 등록", value=METHOD_URL.createNoticeSheetSendingList)
@RequestMapping(name="고지서 발송 대장 등록", value=METHOD_URL.createNoticeSheetSendingList)
public ModelAndView createNoticeSheetSendingList(SndbQuery req, Sndng sndng) {
boolean saved = false;
String rtnMsg = sndngService.createNhtSndngList(req, sndng);
@ -1021,7 +1004,7 @@ public class Sndb01Controller extends ApplicationController {
* }</code></pre>
*/
@Task
@RequestMapping(name="발송 대장 삭제", value=METHOD_URL.removeNoticeSheetSending)
@RequestMapping(name="고지서 발송 대장 삭제", value=METHOD_URL.removeNoticeSheetSending)
public ModelAndView removeNoticeSheetSending(Sndng sndng) {
boolean saved = false;
String rtnMsg = "";
@ -1064,13 +1047,16 @@ public class Sndb01Controller extends ApplicationController {
ManagedUser managedUser = (ManagedUser)currentUser().getUser();
// View(jsp)에서 사용할 공통코드를 조회
Map<String, List<CommonCode>> commonCodes = getCodesOf("FIM054");
Map<String, List<CommonCode>> commonCodes = getCodesOf("FIM047", "FIM054", "FIM067");
return mav.addObject("pageName", "sndb01110") // View(jsp)에서 사용할 id 뒤에 붙일 suffix
return mav
.addObject("pageName", "sndb01110") // View(jsp)에서 사용할 id 뒤에 붙일 suffix
.addObject("infoPrefix", "nhtSndng") // prefix
.addObject("infoPrefixUrl", CLASS_URL) // prefixUrl
.addObject("sggCd", managedUser.getOrgID()) // 시군구 코드(SGG_CD)
.addObject("taskListForSgg", stngBean.filterTaskSectionCodeForSgg(commonCodes.get("FIM054"))) // 시군구에서 사용하는 업무 목록
.addObject("FIM047List", commonCodes.get("FIM047")) // 발송 구분 코드(SNDNG_SE_CD)
.addObject("FIM067List", commonCodes.get("FIM067")) // 발송 등록 구분 코드(SNDNG_REG_SE_CD)
;
}
@ -1357,6 +1343,30 @@ public class Sndb01Controller extends ApplicationController {
}
}
/** .
* @param sndngDtl
* @return jsonView
* <pre><code> {
* "saved": true, false
* }</code></pre>
*/
@Task
@RequestMapping(name="발송상세 목록의 반송 정보 등록", value=METHOD_URL.createSendBackList)
public ModelAndView createSendBackList(SndbQuery req) {
boolean saved = false;
String rtnMsg = sndngDtlService.createSndbkList(req);
if (rtnMsg.contains("[S]")) {
saved = true;
} else {
saved = false;
}
return new ModelAndView("jsonView")
.addObject("saved", saved)
.addObject("rtnMsg", rtnMsg);
}
/** .
* @param sndngDtl
* @return jsonView
@ -1937,8 +1947,8 @@ public class Sndb01Controller extends ApplicationController {
* @return PDF
*/
@Task
@RequestMapping(name="사전통지발송 현황 사전통지서 pdf 파일 생성", value=METHOD_URL.makeAdvanceNoticePdf)
public ModelAndView makeAdvanceNoticePdf(FimsPrintOption printOption, SndbQuery req) {
@RequestMapping(name="사전통지서 pdf 파일 생성", value=METHOD_URL.makeAdvanceNoticePdf)
public ModelAndView makeAdvanceNoticePdf(SndbQuery req, FimsPrintOption printOption) {
ModelAndView mav = new ModelAndView("downloadView");
List<DataObject> list = sndngDtlService.getSndngTrgtDtlIds(req);
@ -2034,8 +2044,8 @@ public class Sndb01Controller extends ApplicationController {
* @return
*/
@Task
@RequestMapping(name="사전통지발송 현황 사전통지서 외주 파일 생성", value=METHOD_URL.makeAdvanceNoticeOutsourcing)
public ModelAndView makeAdvanceNoticeOutsourcing(FimsPrintOption printOption, SndbQuery req) {
@RequestMapping(name="사전통지서 외주 파일 생성", value=METHOD_URL.makeAdvanceNoticeOutsourcing)
public ModelAndView makeAdvanceNoticeOutsourcing(SndbQuery req, FimsPrintOption printOption) {
ModelAndView mav = new ModelAndView("downloadView");
String taskSeCd = "";
@ -2110,28 +2120,175 @@ public class Sndb01Controller extends ApplicationController {
return mav;
}
/** .
* @param sndngDtl
* @return jsonView
* <pre><code> {
* "saved": true, false
* }</code></pre>
/** PDF .
* @return PDF
*/
@Task
@RequestMapping(name="발송상세 목록의 반송 정보 등록", value=METHOD_URL.createAdvanceNoticeSendBackList)
public ModelAndView createAdvanceNoticeSendBackList(SndbQuery req) {
boolean saved = false;
String rtnMsg = sndngDtlService.createSndbkList(req);
@RequestMapping(name="고지서 pdf 파일 생성", value=METHOD_URL.makeNoticeSheetPdf)
public ModelAndView makeNoticeSheetPdf(SndbQuery req, FimsPrintOption printOption) {
// 고지서 출력 대상 자료 조회
List<DataObject> list = sndngDtlService.getSndngTrgtDtlIds(req);
if (rtnMsg.contains("[S]")) {
saved = true;
String[] crdnIds = new String[list.size()];
for (int iLoop = 0; iLoop < list.size(); iLoop++) {
crdnIds[iLoop] = list.get(iLoop).string("CRDN_ID");
}
UserInfo userInfo = currentUser();
fimsOgdpBean.initUserInfo(userInfo);
ModelAndView mav = new ModelAndView("downloadView");
// 단속 대장 조회
SprtQuery sprtQuery = new SprtQuery();
sprtQuery.setCrdnIds(crdnIds);
List<DataObject>dataObjectList = integrationSearchMapper.selectIntegrationDataList(sprtQuery);
for (int i=0; i < dataObjectList.size(); i++) {
DataObject dataObject = dataObjectList.get(i);
String crdnId = dataObject.string("CRDN_ID");
FileQuery fileQuery = new FileQuery();
fileQuery.setInfoType(Crdn.INF_TYPE);
fileQuery.setInfoKeys(crdnId);
List<DataObject> fileInfoList = fileBean.getFileList(fileQuery);
if (fileInfoList != null && fileInfoList.size() > 0) {
for (int j=0; j<fileInfoList.size(); j++) {
dataObject.set("CRDN_PHOTO"+(j+1), fileInfoList.get(j).string("URL"));
dataObject.set("CRDN_PHOTO"+(j+1)+"KEY", fileInfoList.get(j).string("FILE_ID"));
List<DataObject> mosSet = mediaBean.getMosaicList(fileInfoList.get(j).string("FILE_ID"));
if (mosSet != null && !mosSet.isEmpty()) {
dataObject.set("MOS"+fileInfoList.get(j).string("FILE_ID"), mosSet);
}
}
}
}
Print print = new Print();
print.setPrintRequestUserInfo(userInfo);
//출력물 기본 설정
OtptStngQuery otptStngQuery = new OtptStngQuery();
String paperSeCd = printOption.getPaperSeCd();
String taskSeCd = printOption.getTaskSeCd();
otptStngQuery.setSggCd((String)userInfo.getInfo().get("sggCd"));
otptStngQuery.setTaskSeCd(taskSeCd);
otptStngQuery.setSndngSeCd("03");
otptStngQuery.setPaperSeCd(paperSeCd);
DataObject otptBscStng = otptStngMapper.selectOtptBscStng(otptStngQuery);
if(otptBscStng == null) {
otptBscStng = new DataObject();
}
//출력 요소별 설정
List<DataObject> otptArtclStngList = otptStngMapper.selectOtptArtclStngList(otptStngQuery);
DataObject sggStngInfo = stngBean.getStng("sgg");
DataObject deptStngInfo = stngBean.getStng("dept");
//
Map<String, String> globalVariable = printOption.getGlobalVariable();
if(globalVariable == null) {
globalVariable = new HashMap<String, String>();
}
globalVariable.put("offcsFilePath", sggStngInfo.string("OFFCS_FILE_PATH"));
globalVariable.put("logoFilePath", sggStngInfo.string("LOGO_FILE_PATH"));
globalVariable.put("instAddr", sggStngInfo.string("INST_ADDR"));
globalVariable.put("instDaddr", sggStngInfo.string("INST_DADDR"));
globalVariable.put("instZip", sggStngInfo.string("INST_ZIP"));
globalVariable.put("deptTelno", deptStngInfo.string("DEPT_TELNO"));
globalVariable.put("deptFxno", deptStngInfo.string("DEPT_FXNO"));
if(!otptBscStng.string("BCRN_IMG_PATH").equals("")) {
globalVariable.put("bcrnImgPath", otptBscStng.string("BCRN_IMG_PATH"));
}
printOption.setGlobalVariable(globalVariable);
Nht pdfFormat = new Nht(print,printOption,otptBscStng,otptArtclStngList,paperSeCd,dataObjectList);
Map<String, Object> result = pdfFormat.makeFile();
mav.addAllObjects(result);
return mav;
}
/** txt, .
* @return
*/
@Task
@RequestMapping(name="고지서 외주 파일 생성", value=METHOD_URL.makeNoticeSheetOutsourcing)
public ModelAndView makeNoticeSheetOutsourcing(SndbQuery req, FimsPrintOption printOption) {
// 고지서 출력 대상 자료 조회
List<DataObject> list = sndngDtlService.getSndngTrgtDtlIds(req);
String[] crdnIds = new String[list.size()];
for (int iLoop = 0; iLoop < list.size(); iLoop++) {
crdnIds[iLoop] = list.get(iLoop).string("CRDN_ID");
}
UserInfo userInfo = currentUser();
fimsOgdpBean.initUserInfo(userInfo);
ModelAndView mav = new ModelAndView("downloadView");
String taskSeCd = req.getTaskSeCd();
// 단속 대장 조회
SprtQuery sprtQuery = new SprtQuery();
sprtQuery.setCrdnIds(crdnIds);
List<DataObject> dataObjectList = integrationSearchMapper.selectIntegrationDataList(sprtQuery);
for (int i=0; i < dataObjectList.size(); i++) {
DataObject dataObject = dataObjectList.get(i);
if (taskSeCd.equals("")) {
taskSeCd = dataObject.string("TASK_SE_CD");
}
FileQuery fileQuery = new FileQuery();
fileQuery.setInfoType(Crdn.INF_TYPE);
fileQuery.setInfoKeys(dataObject.string("CRDN_ID"));
List<DataObject> fileInfoList = fileBean.getFileList(fileQuery);
if (fileInfoList != null) {
int crdnPhotoCnt = fileInfoList.size();
for (int j=0; j < fileInfoList.size(); j++) {
DataObject fileInfo = fileInfoList.get(j);
dataObject.set("CRDN_PHOTO"+(j+1), fileInfo.string("FILE_PATH"));
dataObject.set("CRDN_PHOTO"+(j+1)+"KEY", fileInfo.string("FILE_ID"));
List<DataObject> mosSet = mediaBean.getMosaicList(fileInfo.string("FILE_ID"));
if (mosSet != null) {
for (int k=0; k < mosSet.size(); k++) {
dataObject.set("MOS"+fileInfo.string("FILE_ID"), mosSet);
}
}
}
dataObject.set("CRDN_PHOTO_CNT", crdnPhotoCnt);
} else {
saved = false;
dataObject.set("CRDN_PHOTO_CNT", 0);
}
}
return new ModelAndView("jsonView")
.addObject("saved", saved)
.addObject("rtnMsg", rtnMsg);
ManagedUser currentUser = (ManagedUser) currentUser().getUser();
String sggCd = currentUser.getOrgID();
OutsourcingStngQuery stngQuery = new OutsourcingStngQuery();
stngQuery.setSggCd(sggCd);
stngQuery.setTaskSeCd(taskSeCd);
stngQuery.setSndngSeCd("03");
List<DataObject> printStngItems = outsourcingStngBean.getArtclStngList(stngQuery);
OutsourcingFileMaker osMaker = new OutsourcingFileMaker("고지서", printOption, printStngItems, dataObjectList);
Map<String, Object> result = osMaker.makeFile();
mav.addAllObjects(result);
return mav;
}
/** .

@ -291,7 +291,6 @@
</div> <!-- <div class="wrapper-list"> -->
</div> <!-- <div class="card"> -->
<!-- Page Body -->
</div> <!-- <div class="container-xxl flex-grow-1 px-0"> -->
<!-- Content -->

@ -217,7 +217,6 @@
</div> <!-- <div class="wrapper-list"> -->
</div> <!-- <div class="card"> -->
<!-- Page Body -->
</div> <!-- <div class="container-xxl flex-grow-1 px-0"> -->
<!-- Content -->
@ -324,6 +323,7 @@
let params = {
title: $P.control.prefixName + " 상세 정보" // 타이틀
, callPurpose: "view" // 호출 용도
, fetchSize: $P.control.defaultFetchSize // 한번에 조회되는 자료 건수
, pageNum: 1 // 페이지 번호
, sggCd: $("#sggCd--${pageName}").val() // 시군구 코드
, taskSeCd: $("#frmSearch--${pageName} input[name='taskSeCd']:checked").val() // 업무 구분 코드

@ -24,13 +24,12 @@
엑셀
</button>
</span>
</div>
<!-- / 상단 버튼 -->
</div> <!-- 상단 버튼 -->
<!-- 검색 조건 영역 -->
<form id="frmSearch--${pageName}" name="frmSearch">
<!-- hidden -->
<input type="hidden" id="sggCd--${pageName}" name="sggCd" data-map="SGG_CD" />
<input type="hidden" id="sggCd--${pageName}" name="sggCd" />
<!-- 메인 조건 -->
<div class="container-search">
@ -265,7 +264,6 @@
</div> <!-- <div class="wrapper-list"> -->
</div> <!-- <div class="card"> -->
<!-- Page Body -->
</div> <!-- <div class="container-xxl flex-grow-1 px-0"> -->
<!-- / Content -->

@ -29,7 +29,7 @@
<!-- 검색 조건 영역 -->
<form id="frmSearch--${pageName}" name="frmSearch">
<!-- hidden -->
<input type="hidden" id="sggCd--${pageName}" name="sggCd" data-map="SGG_CD" />
<input type="hidden" id="sggCd--${pageName}" name="sggCd" />
<!-- 메인 조건 -->
<div class="container-search">
@ -217,7 +217,6 @@
</div> <!-- <div class="wrapper-list"> -->
</div> <!-- <div class="card"> -->
<!-- Page Body -->
</div> <!-- <div class="container-xxl flex-grow-1 px-0"> -->
<!-- Content -->
@ -301,7 +300,6 @@
$("#tbody--${pageName} input[type='checkbox']").each(function() {
let checkbox = $(this);
checkbox.prop("checked", keys.includes(checkbox.val()));
});
@ -325,6 +323,7 @@
let params = {
title: $P.control.prefixName + " 상세 정보" // 타이틀
, callPurpose: "view" // 호출 용도
, fetchSize: $P.control.defaultFetchSize // 한번에 조회되는 자료 건수
, pageNum: 1 // 페이지 번호
, sggCd: $("#sggCd--${pageName}").val() // 시군구 코드
, taskSeCd: $("#frmSearch--${pageName} input[name='taskSeCd']:checked").val() // 업무 구분 코드
@ -340,6 +339,7 @@
, title: params.title
, content: resp
, size: $P.control.infoSize
, init: () => { setDialogZindex(); }
});
}
});

@ -135,7 +135,7 @@
</template>
<template id="${infoPrefix}NotFound--${pageName}">
<tr class="odd">
<td valign="top" colspan="30" class="dataTables_empty text-center">${prefixName} 정보를 찾지 못했습니다.</td>
<td valign="top" colspan="31" class="dataTables_empty text-center">${prefixName} 정보를 찾지 못했습니다.</td>
</tr>
</template>
</table>
@ -372,12 +372,12 @@
});
}
// 종적결과 등록
// // 반송 확인(종적결과 등록)
$P.createSndbk = (params) => {
if (!params) return;
ajax.post({
url: wctx.url("/" + params.taskSeCd + "${infoPrefixUrl}" + "/080/createSndbkList.do")
url: wctx.url("/" + params.taskSeCd + "${infoPrefixUrl}" + "/230/createSndbkList.do")
, data: params || {}
, success: resp => {
let showMessage = resp.rtnMsg.replace(/[S]|[F]/g, params.title);
@ -507,10 +507,10 @@
let fileTypeName = "";
if (fileType == "pdf") {
url = wctx.url("/" + submitParam.taskSeCd + "${infoPrefixUrl}" + "/080/makePdf.do");
url = wctx.url("/" + submitParam.taskSeCd + "${infoPrefixUrl}" + "/080/makeAdvntcePdf.do");
fileTypeName = "PDF 파일";
} else if (fileType == "outsourcing") {
url = wctx.url("/" + submitParam.taskSeCd + "${infoPrefixUrl}" + "/080/makeOutsourcing.do");
url = wctx.url("/" + submitParam.taskSeCd + "${infoPrefixUrl}" + "/080/makeAdvntceOutsourcing.do");
fileTypeName = "외주 요청 파일";
}
@ -648,7 +648,7 @@
$P.control.query = $P.mainQuery;
// 업무구분에 따른 URL 설정
$P.control.urls.load = wctx.url("/" + $P.mainQuery.taskSeCd + "${infoPrefixUrl}" + "/080/list.do"); // 조회
$P.control.urls.load = wctx.url("/" + $P.mainQuery.taskSeCd + "${infoPrefixUrl}" + "/080/list.do"); // 검색
}
/**************************************************************************

@ -7,6 +7,7 @@
<div class="content-wrapper">
<!-- Content -->
<div class="container-xxl flex-grow-1 px-0">
<!-- Page Body -->
<div class="card">
<div class="wrapper-list">
@ -23,8 +24,7 @@
엑셀
</button>
</span>
</div>
<!-- / 상단 버튼 -->
</div> <!-- 상단 버튼 -->
<!-- 검색 조건 영역 -->
<form id="frmSearch--${pageName}" name="frmSearch">
@ -36,7 +36,7 @@
<div class="row g-1">
<!-- 업무구분 -->
<div class="col-12">
<span class="form-label fw-bold form-search-title">업무구분</span>
<span class="form-label fw-bold form-search-title w-px-120 text-end">업무구분</span>
<span class="form-search-linebox">
<c:forEach items="${taskListForSgg}" var="item">
<label>
@ -49,7 +49,7 @@
</div>
<!-- 발송일자 -->
<div class="col-6">
<span class="form-label fw-bold form-search-title">발송일자</span>
<label class="form-label fw-bold form-search-title w-px-120 text-end" for="schSndngYmdFrom--${pageName}">발송일자</label>
<span class="form-search-linebox">
<input type="text" class="form-control form-date" id="schSndngYmdFrom--${pageName}" name="schSndngYmdFrom"
data-fmt-type="day" title="시작 날짜 선택" />
@ -60,13 +60,33 @@
<button type="button" class="bx bx-sm bx-calendar bg-white"></button>
</span>
</div>
<!-- 발송 등록 구분 코드 -->
<div class="col-6">
<label class="form-label fw-bold form-search-title w-px-120 text-end" for="schSndngRegSeCd--${pageName}">등록구분</label>
<select class="form-select w-px-80" id="schSndngRegSeCd--${pageName}" name="schSndngRegSeCd">
<option value="">전체</option>
<c:forEach items="${FIM067List}" var="item">
<option value="${item.code}">${item.value}</option>
</c:forEach>
</select>
</div>
<!-- 발송 구분 코드 -->
<div class="col-6">
<label class="form-label fw-bold form-search-title w-px-120 text-end" for="schSndngSeCd--${pageName}">발송구분</label>
<select class="form-select w-px-160" id="schSndngSeCd--${pageName}" name="schSndngSeCd">
<option value="">전체</option>
<c:forEach items="${FIM047List}" var="item">
<option value="${item.code}">${item.value}</option>
</c:forEach>
</select>
</div>
<!-- 동적검색 -->
<div class="col-6">
<input type="hidden" id="by--${pageName}" name="by" />
<input type="text" class="form-control" id="byOutput--${pageName}" value="동적 검색" readonly />
<input type="text" class="form-control fw-bold w-px-120 text-end" id="byOutput--${pageName}" value="동적 검색" readonly />
<input type="hidden" id="mainOption--${pageName}" name="mainOption" />
<input type="hidden" id="subOption--${pageName}" name="subOption" />
<input type="text" class="form-control w-px-300" id="term--${pageName}" name="term" />
<input type="text" class="form-control w-px-400" id="term--${pageName}" name="term" autocomplete="off" />
<!-- 상세 검색조건 버튼 -->
<span class="flr">
<button type="button" class="btn btn-open-detail" data-bs-toggle="collapse" data-bs-target="#searchDetail--${pageName}">
@ -76,14 +96,14 @@
</span>
</div>
</div>
</div> <!-- / 메인 조건 -->
</div> <!-- 메인 조건 -->
<!-- 상세 조건 -->
<div id="searchDetail--${pageName}" class="container-search container-search-detail collapse">
<div class="row g-1">
<!-- 등록일자, 수정일자 -->
<div class="col-6">
<select class="form-select text-center" id="schRegDateOpt--${pageName}" name="schRegDateOpt">
<select class="form-select w-px-120 text-center" id="schRegDateOpt--${pageName}" name="schRegDateOpt">
<option value="regDt">등록일자</option>
<option value="mdfcnDt">수정일자</option>
</select>
@ -99,20 +119,18 @@
</div>
<!-- 등록자명, 수정자명 -->
<div class="col-6">
<select class="form-select text-center" id="schRgtrOpt--${pageName}" name="schRgtrOpt">
<select class="form-select w-px-120 text-center" id="schRgtrOpt--${pageName}" name="schRgtrOpt">
<option value="rgtr">등록자</option>
<option value="mdfr">수정자</option>
</select>
<input type="hidden" id="schRgtrCd--${pageName}" name="schRgtrCd" />
<input type="text" class="form-control" id="schRgtrNm--${pageName}" name="schRgtrNm" />
<button type="button" class="btn btn-sm btn-outline-dark" id="btnFindUser--${pageName}" title="사용자 검색">
검색
</button>
<input type="text" class="form-control w-px-160" id="schRgtrNm--${pageName}" name="schRgtrNm" />
<button type="button" class="btn btn-sm btn-outline-dark" id="btnFindUser--${pageName}" title="사용자 검색">검색</button>
</div>
</div>
</div> <!-- / 상세 조건 -->
</div> <!-- 상세 조건 -->
</form>
<!-- / 검색 조건 영역 -->
<!-- 검색 조건 영역 -->
<!-- 업무 버튼 및 건수 표시 -->
<div>
@ -123,18 +141,17 @@
<ul class="pagination pagination-primary" id="paging--${pageName}">
</ul>
</div>
<span class="container-window-btn-right">
<!-- 업무 버튼 -->
<button type="button" class="btn btn-primary w-px-120" id="btnCreateNhtSndng--${pageName}" title="고지서 발송 등록">
<span class="container-window-btn-right">
<button type="button" class="btn btn-primary w-px-120" id="btnCreate--${pageName}" title="고지서 발송 등록">
발송 등록
</button>
<button type="button" class="btn btn-primary w-px-120" id="btnRemoveNhtSndng--${pageName}" title="고지서 발송 삭제">
<button type="button" class="btn btn-primary w-px-120" id="btnRemove--${pageName}" title="고지서 발송 삭제">
발송 삭제
</button>
</span>
</span>
</div>
<!-- / 업무 버튼 및 건수 표시 -->
</div> <!-- 업무 버튼 및 건수 표시 -->
<!-- DataTables(그리드) -->
<div class="card-datatable text-nowrap">
@ -154,6 +171,7 @@
<th class="cmn" style="width: 56px;"><input type="checkbox" class="form-check-input" id="gridAllCheckbox--${pageName}" onchange="pageObject['${pageName}'].control.select(this.checked);" /></th>
<th class="cmn" style="width: 160px;" onclick="searchFromGridTitle('TASK_SE_CD', this.innerText, 'codeValue', 'FIM054');">업무구분</th>
<th class="cmn" style="width: 100px;" onclick="searchFromGridTitle('SNDNG_REG_SE_CD', this.innerText, 'codeValue', 'FIM067');">등록구분</th>
<th class="cmn" style="width: 160px;" onclick="searchFromGridTitle('SNDNG_SE_CD', this.innerText, 'codeValue', 'FIM067');">발송구분</th>
<th class="cmn" style="width: 160px;" onclick="searchFromGridTitle('VLTN_ARTCL', this.innerText, 'match', 'part');">위반항목</th>
<th class="cmn" style="width: 120px;" onclick="searchFromGridTitle('SNDNG_YMD', this.innerText, 'ymd', '');">발송일자</th>
<th class="cmn" style="width: 120px;" onclick="searchFromGridTitle('SNDNG_END_YMD', this.innerText, 'ymd', '');">납기일자</th>
@ -173,6 +191,7 @@
<td class="cmn text-center"><input type="checkbox" class="form-check-input" name="gridCheckbox" value="{SNDNG_ID}" onchange="pageObject['${pageName}'].control.select('{SNDNG_ID}', this.checked);" /></td>
<td class="cmn text-center" onclick="{onclick}" ondblclick="{ondblclick}">{TASK_SE_NM}</td>
<td class="cmn text-center" onclick="{onclick}" ondblclick="{ondblclick}">{SNDNG_REG_SE_NM}</td>
<td class="cmn text-center" onclick="{onclick}" ondblclick="{ondblclick}">{SNDNG_SE_NM}</td>
<td class="cmn text-start" onclick="{onclick}" ondblclick="{ondblclick}">{VLTN_ARTCL}</td>
<td class="cmn text-center" onclick="{onclick}" ondblclick="{ondblclick}">{SNDNG_YMD}</td>
<td class="cmn text-center" onclick="{onclick}" ondblclick="{ondblclick}">{SNDNG_END_YMD}</td>
@ -189,30 +208,30 @@
</template>
<template id="${infoPrefix}NotFound--${pageName}">
<tr class="bpv">
<td valign="top" colspan="16" class="dataTables_empty text-center">${prefixName} 정보를 찾지 못했습니다.</td>
<td valign="top" colspan="17" class="dataTables_empty text-center">${prefixName} 정보를 찾지 못했습니다.</td>
</tr>
<tr class="dpv">
<td valign="top" colspan="16" class="dataTables_empty text-center">${prefixName} 정보를 찾지 못했습니다.</td>
<td valign="top" colspan="17" class="dataTables_empty text-center">${prefixName} 정보를 찾지 못했습니다.</td>
</tr>
<tr class="eca">
<td valign="top" colspan="16" class="dataTables_empty text-center">${prefixName} 정보를 찾지 못했습니다.</td>
<td valign="top" colspan="17" class="dataTables_empty text-center">${prefixName} 정보를 찾지 못했습니다.</td>
</tr>
<tr class="pvs">
<td valign="top" colspan="16" class="dataTables_empty text-center">${prefixName} 정보를 찾지 못했습니다.</td>
<td valign="top" colspan="17" class="dataTables_empty text-center">${prefixName} 정보를 찾지 못했습니다.</td>
</tr>
<tr class="pes">
<td valign="top" colspan="16" class="dataTables_empty text-center">${prefixName} 정보를 찾지 못했습니다.</td>
<td valign="top" colspan="17" class="dataTables_empty text-center">${prefixName} 정보를 찾지 못했습니다.</td>
</tr>
</template>
</table>
</div>
</div>
</div>
<!-- / DataTables(그리드) -->
</div> <!-- DataTables(그리드) -->
</div> <!-- <div class="wrapper-list"> -->
</div> <!-- <div class="card"> -->
<!-- Page Body -->
</div> <!-- <div class="container-xxl flex-grow-1 px-0"> -->
<!-- / Content -->
<!-- Content -->
<div class="content-backdrop fade"></div>
</div>
@ -229,10 +248,8 @@
**************************************************************************/
$(document).ready(function() {
// pageObject
var $P = pageObject["${pageName}"];
let $P = pageObject["${pageName}"];
// URL
$P.PrefixUrl = "/sndb/sndb01";
// FormFields
$P.formFields = new FimsFormFields("#frmSearch--${pageName}");
@ -242,10 +259,10 @@
$P.control = new DatasetControl({
prefix: "nhtSndng"
, prefixName: "고지서 발송 현황"
, infoSize: "xxl"
, keymapper: info => info ? info.SNDNG_ID : ""
, dataGetter: obj => obj.${infoPrefix}List
, appendData: true
, infoSize: "xxl"
, formats: {
SNDNG_YMD: dateFormat
, SNDNG_END_YMD: dateFormat
@ -258,8 +275,8 @@
// $P.control 설정
$P.control.defaultFetchSize = FETCH_XS; // 1 페이지당 조회되는 자료 건수 index.jsp에서 확인 FETCH_XS = 30
$P.control.untilPageNum = 0; // 현재 페이지 번호
$P.control.tableRenderComplete = false; // dataTables 에 자료 추가 완료 여부
$P.control.beforeCurrent = null;
$P.control.tableRenderComplete = false; // dataTables 에 자료 추가 완료 여부
/**************************************************************************
* DatasetControl 이벤트
@ -296,12 +313,11 @@
$("#tbody--${pageName} input[type='checkbox']").each(function() {
let checkbox = $(this);
checkbox.prop("checked", keys.includes(checkbox.val()));
});
// 삭제 버튼
$("#btnRemoveNhtSndng--${pageName}").prop("disabled", keys.length < 1);
$("#btnRemove--${pageName}").prop("disabled", keys.length < 1);
// DataTables(그리드) 전체 선택(checkbox)
if (keys.length < 1) {
@ -313,24 +329,30 @@
}
};
// 발송 상세
// 상세정보 dialog
$P.control.getInfo = (sndngId) => {
if (typeof sndngId == "undefined" || sndngId == null || sndngId == "") return;
let params = $P.control.query;
params.callPurpose = "view"; // 호출 용도
params.pageNum = 1; // 페이지 번호
params.sndngId = sndngId; // 발송 ID
let params = {
title: $P.control.prefixName + " 상세 정보" // 타이틀
, callPurpose: "view" // 호출 용도
, fetchSize: $P.control.defaultFetchSize // 한번에 조회되는 자료 건수
, pageNum: 1 // 페이지 번호
, sggCd: $("#sggCd--${pageName}").val() // 시군구 코드
, taskSeCd: $("#frmSearch--${pageName} input[name='taskSeCd']:checked").val() // 업무 구분 코드
, sndngId: sndngId // 발송 ID
}
ajax.get({
url: $P.control.urls.getInfo
, data: params
url: wctx.url("/" + params.taskSeCd + "${infoPrefixUrl}" + "/120/info.do") + "?openerPageName=${pageName}"
, data: params || {}
, success: resp => {
dialog.open({
id: $P.control.prefixed("DtlDialog")
, title: "고지서 발송 상세 내용"
id: $P.control.prefixed("DtlDialog--${pageName}")
, title: params.title
, content: resp
, size: $P.control.infoSize
, init: () => { setDialogZindex(); }
});
}
});
@ -338,18 +360,17 @@
// 삭제 callback
$P.control.onRemove = (resp) => {
let btnTitle = $("#btnRemoveNhtSndng--${pageName}").attr("title");
let btnTitle = $("#btnRemove--${pageName}").attr("title");
let showMessage = resp.rtnMsg.replace(/[S]|[F]/g, btnTitle);
// 메시지 출력
dialog.alert({
content: showMessage
, init: () => { setDialogZindex(); }
, onOK: () => { }
});
if (resp.saved) {
$P.refreshList();
}
if (resp.saved) { $P.fnRefreshList(); } // 자료 재조회
}
// 삭제
@ -357,7 +378,7 @@
if (!params) return;
ajax.post({
url: $P.control.urls.remove
url: wctx.url("/" + params.taskSeCd + "${infoPrefixUrl}" + "/110/remove.do")
, data: params
, success: resp => $P.control.onRemove(resp)
});
@ -417,47 +438,34 @@
/**************************************************************************
* 사용자 함수(function)
**************************************************************************/
// callback 사용자 검색
$P.callbackFindUser = (userId, userNm) => {
$("#schRgtrCd--${pageName}").val(userId); // 사용자 ID
$("#schRgtrNm--${pageName}").val(userNm); // 사용자 명
}
// 검색 자료 재조회
$P.fnRefreshList = () => {
$P.control.untilPageNum = $P.control.query.pageNum;
$P.control.query.fetchSize = $P.control.defaultFetchSize * $P.control.query.pageNum;
// 사용자 검색
$P.getFindUser = () => {
let params = {
openerPageName : "${pageName}"
, callbackFuncName : "pageObject['${pageName}']['callbackFindUser']"
$P.control.load(1);
}
ajax.get({
url: wctx.url("/user/user02/010/main.do")
, data: params || {}
, success: resp => {
dialog.open({
id: "userDialog"
, title: "사용자 검색"
, content: resp
, size: "lg"
});
}
});
// 사용자검색 callback
$P.callbackFindUser = (userId, userNm) => {
$("#schRgtrCd--${pageName}").val(userId); // 사용자 ID
$("#schRgtrNm--${pageName}").val(userNm); // 사용자 명
}
// 신규 등록 dialog -> callback 추가
// 발송 등록 dialog -> callback 추가
$P.getNhtSndngInfo = (params) => {
if (!params) return;
ajax.get({
url: wctx.url("/" + params.taskSeCd + $P.PrefixUrl + "/100/info.do")
url: wctx.url("/" + params.taskSeCd + "${infoPrefixUrl}" + "/100/info.do") + "?openerPageName=${pageName}"
, data: params || {}
, success: resp => {
dialog.open({
id: "nhtTrgtDialog"
id: "nhtTrgtDialog--${pageName}"
, title: "고지서 발송 대상"
, content: resp
, size: "lg"
, onClose: () => { }
, init: () => { setDialogZindex(); }
});
}
});
@ -465,28 +473,18 @@
// 삭제사유 callback
$P.callbackRsn = (obj) => {
// 선택 자료
let selected = $P.control.dataset.getKeys("selected");
if (selected.length < 1) return;
// 서버에 전송할 data(파라미터) 생성
let params = {};
let selected = $P.control.dataset.getKeys("selected");
params.sndngIds = selected.join(","); // Ids
params[$P.control.prefixed("Ids")] = selected.join(","); // IDs
params.sggCd = $("#sggCd--${pageName}").val(); // 시군구 코드
params.taskSeCd = $("#frmSearch--${pageName} input[name='taskSeCd']:checked").val(); // 업무 구분 코드
params.delRsn = obj.reason; // 삭제 사유
$P.control.remove(params);
}
// 검색 자료 재조회
$P.refreshList = () => {
$P.control.untilPageNum = $P.control.query.pageNum;
$P.control.query.fetchSize = $P.control.defaultFetchSize * $P.control.query.pageNum;
$P.control.load(1);
}
/**************************************************************************
* 버튼 clickEvent
**************************************************************************/
@ -498,9 +496,7 @@
}
// 초기 기본 설정
$P.initForm();
// 기본 데이터 설정
$P.initData(taskSeCd);
$P.initForm(taskSeCd);
// 업무 구분별 설정
$P.setTask(taskSeCd);
@ -508,6 +504,28 @@
$P.control.dataset.clear();
}
// 사용자검색 버튼 클릭 이벤트
$P.fnGetFindUser = () => {
let params = {
openerPageName: "${pageName}"
, callbackFuncName: "pageObject['${pageName}']['callbackFindUser']"
}
ajax.get({
url: wctx.url("/user/user02/010/main.do")
, data: params || {}
, success: resp => {
dialog.open({
id: "userDialog"
, title: "사용자 검색"
, content: resp
, size: "lg"
, init: () => { setDialogZindex(); }
});
}
});
}
// 검색 버튼 이벤트
$P.fnSearchList = () => {
// 검색조건
@ -525,6 +543,7 @@
if ($P.control.dataset.empty) {
dialog.alert({
content: "검색된 자료가 없습니다."
, init: () => { setDialogZindex(); }
, onOK: () => { }
});
return;
@ -538,11 +557,6 @@
$P.control.download();
}
// 사용자 조회 버튼 이벤트
$P.fnFindUser = () => {
$P.getFindUser();
}
// 등록 버튼 이벤트
$P.fnCreate = (title) => {
let params = {
@ -560,7 +574,14 @@
// 선택 자료
let selected = $P.control.dataset.getKeys("selected");
if (selected.length < 1) return;
if (selected.length < 1) {
dialog.alert({
content: "선택하신 " + $P.control.prefixName + " 정보가 없습니다."
, init: () => { setDialogZindex(); }
, onOK: () => { }
});
return;
}
// 삭제 메세지 확인
dialog.alert({
@ -572,7 +593,7 @@
dialog.open({
id: "inputDelRsnDialog"
, title: "삭제"
, title: title
, size: "lg"
, content: template
, init: () => { setDialogZindex(); }
@ -615,13 +636,12 @@
});
});
// 고지서 발송 등록 버튼 이벤트
$("#btnCreateNhtSndng--${pageName}").on("click", function() {
$P.fnCreate($(this).attr("title"));
// 업무 버튼 이벤트
$("#btnCreate--${pageName}").on("click", function() {
$P.fnCreate($(this).attr("title")); // 고지서 발송 등록
});
// 고지서 발송 삭제 버튼 이벤트
$("#btnRemoveNhtSndng--${pageName}").on("click", function() {
$P.fnRemove($(this).attr("title"));
$("#btnRemove--${pageName}").on("click", function() {
$P.fnRemove($(this).attr("title")); // 고지서 발송 삭제
});
// DataTables width 변경 조정
@ -632,7 +652,7 @@
}
// 초기 화면 설정
$P.initForm = () => {
$P.initForm = (taskSeCd) => {
// 화면 초기화
$("#frmSearch--${pageName}")[0].reset();
@ -649,55 +669,33 @@
$(this).prop("disabled", "true");
});
// 달력 초기화
initDatepicker("frmSearch--${pageName}");
$("#schSndngYmdFrom--${pageName}").datepicker("setDate", new Date());
$("#schSndngYmdTo--${pageName}").datepicker("setDate", new Date());
// 동적 검색
$("#byOutput--${pageName}").val("동적 검색");
// 사용자 이름
$("#schRgtrNm--${pageName}").prop("readonly", true);
}
// 기본 데이터 설정
$P.initData = (taskSeCd) => {
// 시군구 코드
$("#sggCd--${pageName}").val("${sggCd}");
// 업무 구분 코드
$("#frmSearch--${pageName} input[name='taskSeCd'][value='" + taskSeCd + "']").prop("checked", true);
// 일자
$("#sggCd--${pageName}").val("${sggCd}"); // 시군구 코드
$("#frmSearch--${pageName} input[name='taskSeCd'][value='" + taskSeCd + "']").prop("checked", true); // 업무 구분 코드
initDatepicker("frmSearch--${pageName}"); // 달력 초기화
$("#schSndngYmdFrom--${pageName}").datepicker("setDate", DateUtil.getDateDay(-7).date);
$("#schSndngYmdTo--${pageName}").datepicker("setDate", new Date());
$("#byOutput--${pageName}").val("동적 검색"); // 동적 검색
$("#schRgtrNm--${pageName}").prop("readonly", true); // 사용자 이름
}
// 업무 구분별 설정
$P.setTask = (taskSeCd) => {
let clsForTask = taskSeCd.toLowerCase();
// 업무구분에 따른 URL 설정
$P.control.urls.load = wctx.url("/" + taskSeCd + "${infoPrefixUrl}" + "/110/list.do"); // 검색
// 업무별 조회조건
renderForTask("frmSearch--${pageName}", clsForTask);
renderForTask("frmSearch--${pageName}", taskSeCd.toLowerCase());
// 업무별 그리드 th
let colContent = document.getElementById("${infoPrefix}Col--${pageName}").content;
let cols = $(colContent).find("." + clsForTask + ",.cmn");
let cols = $(colContent).find("." + taskSeCd.toLowerCase() + ",.cmn");
let colsOuterHTML = "";
cols.each(function() {
colsOuterHTML += this.outerHTML;
});
$("#table-responsive--${pageName}")[0].changeColumn(colsOuterHTML);
// URL 설정
$P.setURL(taskSeCd);
}
// 업무구분에 따른 URL 설정
$P.setURL = (taskSeCd) => {
$P.control.urls.load = wctx.url("/" + taskSeCd + $P.PrefixUrl + "/110/list.do"); // 검색
$P.control.urls.remove = wctx.url("/" + taskSeCd + $P.PrefixUrl + "/110/remove.do"); // 삭제
$P.control.urls.getInfo = wctx.url("/" + taskSeCd + $P.PrefixUrl + "/120/info.do"); // 고지서 세부 내용
}
/**************************************************************************

@ -4,16 +4,17 @@
<c:set var="prefixName" scope="request">고지서 발송 현황 상세 정보</c:set>
<!-- inner page html -->
<div class="content-wrapper">
<div class="content-pop">
<!-- Content -->
<div class="container flex-grow-1 px-0">
<!-- Page Body -->
<div class="card">
<div class="wrapper-pop">
<!-- 입력 영역 -->
<form id="frmEdit--${pageName}" name="frmEdit">
<input type="hidden" id="sndngId--${pageName}" name="sndngId" />
</form> <!-- /입력 영역 -->
<input type="hidden" id="sndngId--${pageName}" name="sndngId" data-map="SNDNG_ID" />
</form>
<!-- 입력 영역 -->
<!-- 업무 버튼 및 건수 표시 -->
<div>
@ -24,19 +25,19 @@
<ul class="pagination pagination-primary" id="paging--${pageName}">
</ul>
</div>
<span class="container-window-btn-right">
<!-- 업무 버튼 -->
<span class="container-window-btn-right">
<button type="button" class="btn btn-excel w-px-120" id="btnExcel--${pageName}" title="엑셀 저장">
엑셀 저장
</button>
<button type="button" class="btn btn-primary w-px-120" id="btnPrintNhtOutsourcing--${pageName}" title="파일 출력">
파일 출력
</button>
<button type="button" class="btn btn-primary w-px-120" id="btnPrintNhtPdf01--${pageName}" title="고지서 출력(PDF-A4)">
고지서 출력(PDF-A4)
</button>
<button type="button" class="btn btn-primary w-px-120" id="btnPrintNhtPdf02--${pageName}" title="고지서 출력(PDF-Letter)">
고지서서 출력(PDF-Letter)
고지서 출력(PDF-Letter)
</button>
<button type="button" class="btn btn-primary w-px-120" id="btnPrintNhtOutsourcing--${pageName}" title="고지서 출력(외주파일)">
고지서 출력(외주파일)
</button>
<button type="button" class="btn btn-primary w-px-120" id="btnRemoveDpcnData--${pageName}" title="중복자료 삭제">
중복자료 삭제
@ -46,7 +47,7 @@
</button>
</span>
</span>
</div> <!-- / 업무 버튼 및 건수 표시 -->
</div> <!-- 업무 버튼 및 건수 표시 -->
<!-- DataTables(그리드) -->
<div class="card-datatable text-nowrap">
@ -134,11 +135,13 @@
</table>
</div>
</div>
</div>
<!-- / DataTables(그리드) -->
</div> <!-- <div class="wrapper-list"> -->
</div> <!-- DataTables(그리드) -->
</div> <!-- <div class="card"> -->
</div> <!-- / Content <div class="container flex-grow-1 px-0"> -->
<!-- Page Body -->
<span id="tempArea--${pageName}" hidden></span>
</div> <!-- <div class="container flex-grow-1 px-0"> -->
<!-- Content -->
</div>
<!-- / inner page html <div class="content-wrapper"> -->
@ -153,10 +156,8 @@
**************************************************************************/
$(document).ready(function() {
// pageObject
var $P = pageObject["${pageName}"];
let $P = pageObject["${pageName}"];
// URL
$P.PrefixUrl = "/sndb/sndb01";
// infoDialog 호출 용도(view 조회(편집불가), create 등록, update 수정)
$P.callPurpose = "${callPurpose}";
// FormFields
@ -169,7 +170,7 @@
**************************************************************************/
$P.control = new DatasetControl({
prefix: "nhtSndngDtl"
, prefixName : "발송 상세"
, prefixName: "고지서 발송 상세"
, keymapper: info => info ? info.SNDNG_DTL_ID : ""
, dataGetter: obj => obj.${infoPrefix}List
, appendData: true
@ -180,6 +181,8 @@
, LEVY_YMD: dateFormat
, DUDT_YMD: dateFormat
, FFNLG_AMT: numberFormat
, PCPTAX: numberFormat
, ADAMT: numberFormat
, SUM_AMT: numberFormat
, REG_DT: datetimeFormat
, MDFCN_DT: datetimeFormat
@ -188,8 +191,8 @@
// $P.control 설정
$P.control.defaultFetchSize = FETCH_XS; // 1 페이지당 조회되는 자료 건수 index.jsp에서 확인 FETCH_XS = 30
$P.control.untilPageNum = 0; // 현재 페이지 번호
$P.control.tableRenderComplete = false; // dataTables 에 자료 추가 완료 여부
$P.control.beforeCurrent = null;
$P.control.tableRenderComplete = false; // dataTables 에 자료 추가 완료 여부
/**************************************************************************
* DatasetControl 이벤트
@ -258,19 +261,15 @@
$P.control.load($P.control.query.pageNum + 1);
}
/**************************************************************************
* 사용자 함수(function)
**************************************************************************/
// 개별총정보 dialog
// DataTables에 더블 클릭시 개별총정보 dialog
$P.getTotalInfo = (crdnId) => {
if (typeof crdnId == "undefined" || crdnId == null || crdnId == "") return;
let params = {
callControlName: "pageObject['${pageName}'].control"
, callPurpose : "view"
, crdnId : crdnId
, sggCd: $P.control.dataset.getValue("SGG_CD")
, taskSeCd: $P.control.dataset.getValue("TASK_SE_CD")
, crdnId: crdnId
}
ajax.get({
@ -287,9 +286,15 @@
});
}
// 고지서 출력
$P.print = (params) => {
if (!params) return;
/**************************************************************************
* 사용자 함수(function)
**************************************************************************/
// 검색 자료 재조회
$P.fnRefreshList = () => {
$P.control.untilPageNum = $P.control.query.pageNum;
$P.control.query.fetchSize = $P.control.defaultFetchSize * $P.control.query.pageNum;
$P.control.load(1);
}
// 반송 확인(종적결과 등록)
@ -297,15 +302,15 @@
if (!params) return;
ajax.post({
url: wctx.url("/" + params.taskSeCd + "${infoPrefixUrl}" + "/210/createList.do")
url: wctx.url("/" + params.taskSeCd + "${infoPrefixUrl}" + "/230/createSndbkList.do")
, data: params || {}
, success: resp => {
// S 또는 F 를 버튼 title 로 변경하여 메시지 출력
let showMessage = resp.rtnMsg.replace(/[S]|[F]/g, $("#btnCreateSndbk--${pageName}").attr("title"));
let showMessage = resp.rtnMsg.replace(/[S]|[F]/g, params.title);
dialog.alert({
content: showMessage
, onOK: () => { }
, init: () => { setDialogZindex(); }
, onOK: () => { $P.fnRefreshList(); } // 자료 재조회
});
}
});
@ -319,50 +324,55 @@
if ($P.control.dataset.empty) {
dialog.alert({
content: "검색된 자료가 없습니다."
, init: () => { setDialogZindex(); }
, onOK: () => { }
});
return;
}
// DataTables(그리드)
let cellDefs = getCellDefs($("#theadTr--${pageName} th").not(".dummy-th")
, $($("#${infoPrefix}Row--${pageName}")[0].content).find("td").not(".dummy-td"));
let cellDefs = getCellDefs($("#theadTr--${pageName} th").not(".dummy-th").not(":eq(0)")
, $($("#${infoPrefix}Row--${pageName}")[0].content).find("td").not(".dummy-td").not(":eq(0)"));
$P.control.query.cellDefs = cellDefs;
$P.control.download();
}
// 파일 출력 및 고지서출력
// 고지서 출력 버튼 이벤트
$P.fnMakeFileNht = (title, fileType, paper) => {
//
// validate 확인
if (!customValidate($("#frmEdit--${pageName}").find("input, select, textarea"))) return;
let submitParam = {
sggCd: $P.control.dataset.getValue("SGG_CD") // 시군구 코드
, taskSeCd: $P.control.dataset.getValue("TASK_SE_CD") // 업무 구분 코드
, sndngId: $P.control.dataset.getValue("SNDNG_ID") // 발송 ID
};
let url = "";
let fileTypeName = "";
if (fileType == "pdf") {
url = wctx.url("/sprt/sprt01/150/makeNhtPdf.do");
url = wctx.url("/" + submitParam.taskSeCd + "${infoPrefixUrl}" + "/120/makeNhtPdf.do");
fileTypeName = "PDF 파일";
} else if (fileType == "outsourcing") {
url = wctx.url("/sprt/sprt01/150/makeNhtOutsourcing.do");
url = wctx.url("/" + submitParam.taskSeCd + "${infoPrefixUrl}" + "/120/makeNhtOutsourcing.do");
fileTypeName = "외주 요청 파일";
}
let params = {
crdnIds : $P.control.dataset.getValue("CRDN_ID") // 단속 ID
, taskSeCd : $P.control.dataset.getValue("TASK_SE_CD") // 업무 구분
};
let inBrowser = false;
if (fileType == "pdf") {
params.paperSeCd = paper;
submitParam.paperSeCd = paper;
inBrowser = true;
}
if (inBrowser) {
let parameter = toQuery(params);
let filenameInHeader = "";
var parameter = toQuery(submitParam);
var filenameInHeader = "";
fetch(url + "?" + parameter)
.then((response) => {
let header = response.headers.get('Content-Disposition');
var header = response.headers.get('Content-Disposition');
if(!header){
response.json().then((responseJson)=>{
dialog.alert({
@ -374,9 +384,8 @@
});
new Error("");
}
let parts = header.split(';');
var parts = header.split(';');
filenameInHeader = decodeURIComponent(parts[1].split('=')[1]);
return response.blob();
})
.then((blob) => {
@ -384,7 +393,7 @@
})
.catch(()=>{});
} else {
let parameter = toQuery(params);
var parameter = toQuery(submitParam);
document.location.href = url + "?" + parameter;
}
}
@ -402,7 +411,11 @@
dialog.alert({
content: "종적결과를 확인하시겠습니까?"
, onOK: () => {
$P.createSndbk($P.mainQuery);
// 파리미터 설정
let params = $P.mainQuery; // mainQuery
params.title = title; // 타이틀
$P.createSndbk(params);
}
});
}
@ -415,25 +428,21 @@
// 기본 버튼 이벤트
$("#btnExcel--${pageName}").on("click", () => $P.fnExcel()); // 엑셀
// 파일 출력 버튼 이벤트
$("#btnPrintNhtOutsourcing--${pageName}").on("click", function() {
$P.fnMakeFileNht($(this).attr("title"), "outsourcing")
});
// 고지서 출력 버튼 이벤트
// 업무 버튼 이벤트
$("#btnPrintNhtPdf01--${pageName}").on("click", function() {
$P.fnMakeFileNht($(this).attr("title"), "pdf", "01");
$P.fnMakeFileNht($(this).attr("title"), "pdf", "01"); // 고지서 출력(PDF-A4)
});
// 고지서 출력 버튼 이벤트
$("#btnPrintNhtPdf02--${pageName}").on("click", function() {
$P.fnMakeFileNht($(this).attr("title"), "pdf", "01");
$P.fnMakeFileNht($(this).attr("title"), "pdf", "01"); // 고지서 출력(PDF-Letter)
});
$("#btnPrintNhtOutsourcing--${pageName}").on("click", function() {
$P.fnMakeFileNht($(this).attr("title"), "outsourcing") // 고지서 출력(외주파일)
});
// 중복자료 삭제 버튼 이벤트
$("#btnRemoveDpcnData--${pageName}").on("click", function() {
$P.fnRemoveDpcnData();
$P.fnRemoveDpcnData($(this).attr("title")); // 중복자료 삭제
});
// 반송 등록 버튼 이벤트
$("#btnCreateSndbk--${pageName}").on("click", function() {
$P.fnCreateSndbk();
$P.fnCreateSndbk($(this).attr("title")); // 반송 등록
});
// DataTables width 변경 조정
@ -443,7 +452,7 @@
fnMakeScrollableTable($("#table-responsive--${pageName}")[0], $P.scrollDataList);
// DataTables 스크롤을 위해서 다이얼로그 화면이 생성된 후 Dataset을 설정한다.
$("#${infoPrefix}Dialog").on("shown.bs.modal", function (e) {
$("#${infoPrefix}Dialog--${openerPageName}").on("shown.bs.modal", function (e) {
$P.control.setData({
${infoPrefix}List: ${nhtSndngDtlList}
, ${infoPrefix}Start: ${nhtSndngDtlStart}
@ -468,15 +477,11 @@
$("#sndngId--${pageName}").val($P.control.dataset.getValue("SNDNG_ID"));
// 검색 조건 설정
$P.control.defaultFetchSize = $P.mainQuery.fetchSize;
$P.control.query = $P.mainQuery;
// URL 설정
$P.setURL($P.mainQuery.taskSeCd);
}
// 업무구분에 따른 URL 설정
$P.setURL = (taskSeCd) => {
$P.control.urls.load = wctx.url("/" + taskSeCd + $P.PrefixUrl + "/100/list.do"); // 검색
$P.control.urls.load = wctx.url("/" + $P.mainQuery.taskSeCd + "${infoPrefixUrl}" + "/120/list.do"); // 검색
}
/**************************************************************************

@ -313,7 +313,6 @@
</div> <!-- <div class="wrapper-list"> -->
</div> <!-- <div class="card"> -->
<!-- Page Body -->
</div> <!-- <div class="container-xxl flex-grow-1 px-0"> -->
<!-- Content -->
@ -327,13 +326,6 @@
**************************************************************************/
pageObject["${pageName}"] = {};
// 공통 코드
var FIM004 = new CommonCodes(${FIM004}, true); // 주정차위반 내역 코드
var FIM005 = new CommonCodes(${FIM005}, true); // 전용차로위반 내역 코드
var FIM006 = new CommonCodes(${FIM006}, true); // 장애인주차위반 내역 코드
var FIM061 = new CommonCodes(${FIM061}, true); // 전기차 충전구역 및 충전방해 위반 코드
var FIM064 = new CommonCodes(${FIM064}, true); // 화물자동차 밤샘주차 위반 코드
/**************************************************************************
* script 진입
**************************************************************************/
@ -794,29 +786,6 @@
// 업무별 조회조건
renderForTask("frmSearch--${pageName}", taskSeCd.toLowerCase());
// 업무에 따른 위반 내용
let vltnCode = [];
if (taskSeCd == "PVS") { // 주정차 위반
vltnCode = FIM004.list();
} else if (taskSeCd == "BPV") { // 전용차로 위반
vltnCode = FIM005.list();
} else if (taskSeCd == "DPV") { // 장애인 전용
vltnCode = FIM006.list();
} else if (taskSeCd == "ECA") { // 전기차 주차 위반
vltnCode = FIM061.list();
} else if (taskSeCd == "PES") { // 밤샘 주차 위반
vltnCode = FIM064.list();
} else {
return;
}
// 위반 항목
$("#schVltnCd--${pageName}").empty();
$("#schVltnCd--${pageName}").append("<option value=''>" + "전체" + "</option>");
$(vltnCode).each(function(index, item) {
$("#schVltnCd--${pageName}").append("<option value='" + vltnCode[index].code +"'>" + vltnCode[index].value + "</option>");
})
// 업무별 그리드 th
let colContent = document.getElementById("${infoPrefix}Col--${pageName}").content;
let cols = $(colContent).find("." + taskSeCd.toLowerCase() + ",.cmn");

@ -315,6 +315,7 @@
let params = {
title: $P.control.prefixName + " 상세 정보" // 타이틀
, callPurpose: "view" // 호출 용도
, fetchSize: $P.control.defaultFetchSize // 한번에 조회되는 자료 건수
, pageNum: 1 // 페이지 번호
, sggCd: $("#sggCd--${pageName}").val() // 시군구 코드
, taskSeCd: $("#frmSearch--${pageName} input[name='taskSeCd']:checked").val() // 업무 구분 코드

Loading…
Cancel
Save