사전통지 발송 현황 수정.

main
jjh 11 months ago
parent 853c8826eb
commit 432b99025f

@ -84,8 +84,7 @@ public interface SndngService {
* @param req
* @return
*/
List<DataObject> getAdvntceSndngDtls(SndbQuery req);
List<DataObject> getAdvntceSndngDtlList(SndbQuery req);

@ -81,15 +81,14 @@ public class SndngServiceBean extends AbstractServiceBean implements SndngServic
}
@Override
public List<DataObject> getAdvntceSndngDtls(SndbQuery req) {
return sndngDtlBean.getSndngDtls(req);
public List<DataObject> getAdvntceSndngDtlList(SndbQuery req) {
return sndngDtlBean.getSndngDtlList(req);
}
@Override
public List<DataObject> getSndbkList(SndbQuery req) {
return sndngBean.getSndbkList(req);

@ -59,7 +59,7 @@ public class Sndb01Controller extends ApplicationController {
, advanceNoticeSendingMain = "/070/main.do" // 사전통지 발송 현황 메인 화면
, getAdvanceNoticeSendingList = "/070/list.do" // 사전통지 발송 대상 목록 조회
, getAdvanceNoticeSendingInfo = "/080/info.do" // 사전통지 발송 상세 대장 조회
, getAdvanceNoticeSendingDetailsList= "/080/list.do" // 사전통지 발송 상세 대장 조회
@ -320,8 +320,8 @@ public class Sndb01Controller extends ApplicationController {
, Map.entry("납기일자", xlsx.format(o -> xlsx.str2date(o.get("SNDNG_END_YMD"))).style(dateYMD))
, Map.entry("총건수", xlsx.style("TNOCS", numeric))
, Map.entry("총금액", xlsx.style("GRAMT", numeric))
, Map.entry("제목", "TTL_NM")
, Map.entry("문서번호", "DOC_NO")
, Map.entry("제목", "TTL_NM")
, Map.entry("등록일시", xlsx.format(o -> xlsx.str2datetime(o.get("REG_DT"))).style(dateDT))
, Map.entry("등록사용자", xlsx.style("RGTR_NM", center))
, Map.entry("수정일시", xlsx.format(o -> xlsx.str2datetime(o.get("MDFCN_DT"))).style(dateDT))
@ -550,9 +550,56 @@ public class Sndb01Controller extends ApplicationController {
* }</code></pre>
*/
public ModelAndView getAdvanceNoticeSendingList(SndbQuery req) {
if (!"xls".equals(req.getDownload())) {
List<?> result = sndngService.getAdvntceSndngList(setFetchSize(req));
return setCollectionInfo(new ModelAndView("jsonView"), result, "advntceSndng");
} else {
// 현재 날짜 구하기
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyyMMddHHmmss");
String dateTime = dateFormat.format(System.currentTimeMillis());
ArrayList<CellDef> cellDefs = fromJson(req.getCellDefs(), new TypeReference<ArrayList<CellDef>>() {});
XLSWriter xlsx = new XLSWriter()
.setFilename("사전통지발송현황" + "_목록_" + dateTime + ".xlsx")
.worksheet(0);
// CellStyle 지정은 여기에서..
CellStyle center = xlsx.cellStyle(Styler.CENTER); // 가운데 정렬
CellStyle numeric = xlsx.n_nn0(); // 숫자 3자리 콤마(,)
CellStyle dateYMD = xlsx.yyyy_mm_dd(); // 연월일
CellStyle dateDT = xlsx.yyyy_mm_dd_hh_mm_ss(); // 연월일+시간
List<DataObject> list = sndngService.getAdvntceSndngList(req.setFetchSize(0));
CellDef.setValues(cellDefs, Map.ofEntries(
Map.entry("업무구분", xlsx.style("TASK_SE_NM", center))
, Map.entry("등록구분", xlsx.style("SNDNG_REG_SE_NM", center))
, Map.entry("위반항목", "VLTN_ARTCL")
, Map.entry("발송일자", xlsx.format(o -> xlsx.str2date(o.get("SNDNG_YMD"))).style(dateYMD))
, Map.entry("납기일자", xlsx.format(o -> xlsx.str2date(o.get("SNDNG_END_YMD"))).style(dateYMD))
, Map.entry("총건수", xlsx.style("TNOCS", numeric))
, Map.entry("총금액", xlsx.style("GRAMT", numeric))
, Map.entry("문서번호", "DOC_NO")
, Map.entry("제목", "TTL_NM")
, Map.entry("등록일시", xlsx.format(o -> xlsx.str2datetime(o.get("REG_DT"))).style(dateDT))
, Map.entry("등록사용자", xlsx.style("RGTR_NM", center))
, Map.entry("수정일시", xlsx.format(o -> xlsx.str2datetime(o.get("MDFCN_DT"))).style(dateDT))
, Map.entry("수정사용자", xlsx.style("MDFR_NM", center))
)
);
xlsx.cell(0, 0)
.value("사전통지 발송 현황", center)
.merge(0, cellDefs.size() - 1)
.cell(3, 0)
.rowValues(CellDef.header(cellDefs, () -> CmmnUtil.headerStyle(xlsx)))
.cell(4, 0)
.values(list, CellDef.values(cellDefs));
return new ModelAndView("xlsView")
.addObject("xls", xlsx);
}
}
/** - (sndb/sndb01/080-info) .
@ -563,20 +610,85 @@ public class Sndb01Controller extends ApplicationController {
* }</pre>
*/
public ModelAndView getAdvanceNoticeSendingInfo(SndbQuery req) {
List<?> sndngDtls = sndngService.getAdvntceSndngDtls(req);
boolean json = jsonResponse();
//
ModelAndView mav = getAdvanceNoticeSendingDetailsList(req);
ModelAndView mav = new ModelAndView(json ? "jsonView" : "fims/sndb/sndb01080-info");
mav.setViewName("fims/sndb/sndb01080-info");
return mav.addObject("pageName", "sndb01080")
.addObject("sggCd", req.getSggCd())
.addObject("taskSeCd", req.getTaskSeCd())
.addObject("advntceSndngDtl", json ? sndngDtls : toJson(sndngDtls)) // 사전통지 발송 현황 세부내용
return mav
.addObject("pageName", "sndb01080")
.addObject("query", toJson(req))
.addObject("advntceSndngDtlList", toJson(mav.getModel().get("advntceSndngDtlList")))
;
}
/** .<br />
* {@link SndngService#getSndngList(SndngQuery)}
* @param req
* @return jsonView
* <pre><code> {
* "sndngList": [ ]
* "sndngStart":
* "sndngFetch":
* "sndngTotal":
* }</code></pre>
*/
public ModelAndView getAdvanceNoticeSendingDetailsList(SndbQuery req) {
if (!"xls".equals(req.getDownload())) {
List<?> result = sndngService.getAdvntceSndngDtlList(setFetchSize(req));
return setCollectionInfo(new ModelAndView("jsonView"), result, "advntceSndngDtl");
} else {
// 현재 날짜 구하기
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyyMMddHHmmss");
String dateTime = dateFormat.format(System.currentTimeMillis());
ArrayList<CellDef> cellDefs = fromJson(req.getCellDefs(), new TypeReference<ArrayList<CellDef>>() {});
XLSWriter xlsx = new XLSWriter()
.setFilename("사전통지발송상세" + "_목록_" + dateTime + ".xlsx")
.worksheet(0);
// CellStyle 지정은 여기에서..
CellStyle center = xlsx.cellStyle(Styler.CENTER); // 가운데 정렬
CellStyle numeric = xlsx.n_nn0(); // 숫자 3자리 콤마(,)
CellStyle dateYMD = xlsx.yyyy_mm_dd(); // 연월일
CellStyle dateDT = xlsx.yyyy_mm_dd_hh_mm_ss(); // 연월일+시간
List<DataObject> list = sndngService.getAdvntceSndngDtlList(req.setFetchSize(0));
CellDef.setValues(cellDefs, Map.ofEntries(
Map.entry("발송상태", xlsx.style("SNDNG_DTL_STTS_NM", center))
, Map.entry("등기번호", xlsx.style("RG_NO", center))
, Map.entry("발송일자", xlsx.format(o -> xlsx.str2date(o.get("SNDNG_YMD"))).style(dateYMD))
, Map.entry("납기일자", xlsx.format(o -> xlsx.str2date(o.get("SNDNG_END_YMD"))).style(dateYMD))
, Map.entry("납부자명", "RTPYR_NM")
, Map.entry("납부자번호", xlsx.style("RTPYR_BRDT", center))
, Map.entry("우편번호", xlsx.style("RTPYR_ZIP", center))
, Map.entry("주소", "RTPYR_ADDR")
, Map.entry("상세주소", "RTPYR_DTL_ADDR")
, Map.entry("단속일시", xlsx.style("CRDN_DT", center))
, Map.entry("차량번호", "VHRNO")
, Map.entry("단속장소", "CRDN_PLC")
, Map.entry("과태료금액", xlsx.style("FFNLG_AMT", numeric))
, Map.entry("등록일시", xlsx.format(o -> xlsx.str2datetime(o.get("REG_DT"))).style(dateDT))
, Map.entry("등록사용자", xlsx.style("RGTR_NM", center))
, Map.entry("수정일시", xlsx.format(o -> xlsx.str2datetime(o.get("MDFCN_DT"))).style(dateDT))
, Map.entry("수정사용자", xlsx.style("MDFR_NM", center))
)
);
xlsx.cell(0, 0)
.value("사전통지 발송 상세", center)
.merge(0, cellDefs.size() - 1)
.cell(3, 0)
.rowValues(CellDef.header(cellDefs, () -> CmmnUtil.headerStyle(xlsx)))
.cell(4, 0)
.values(list, CellDef.values(cellDefs));
return new ModelAndView("xlsView")
.addObject("xls", xlsx);
}
}

@ -589,6 +589,13 @@ public class DpvController {
return super.getAdvanceNoticeSendingInfo(req);
}
@Override
@RequestMapping(name="사전통지 발송 현황 상세 조회", value=METHOD_URL.getAdvanceNoticeSendingDetailsList)
public ModelAndView getAdvanceNoticeSendingDetailsList(SndbQuery req) {
return super.getAdvanceNoticeSendingDetailsList(req);
}

@ -85,7 +85,6 @@
<sql id="selectList">
SELECT SD.SNDNG_DTL_ID /* 발송 상세 ID */
, SD.SVBTC_ID /* 공시송달 ID */
, SD.CRDN_ID /* 단속 ID */
, SD.SVBTC_ID /* 공시송달 ID */
, SD.MTCHG_ID /* 매칭 ID */
@ -171,7 +170,6 @@
, S.DEPT_CD /* 부서 코드 */
, S.TASK_SE_CD /* 업무 구분 코드 */
, S.SNDNG_REG_SE_CD /* 발송 등록 구분 코드 */
, S.SNDNG_SE_CD /* 발송 구분 코드 */
, S.LEVY_BGNG_YMD /* 부과 시작 일자 */
, S.LEVY_END_YMD /* 부과 종료 일자 */
, S.TTL_NM /* 제목 명 */
@ -191,7 +189,22 @@
<select id="selectSndngDtlList" parameterType="map" resultType="dataobject">/* 발송 상세 목록 조회(sndngDtlMapper.selectSndngDtlList) */
<include refid="utility.paging-prefix" />
<include refid="selectList" />
<where></where>
<where>
<if test="sndngDtlIDs != null">
AND SD.SNDNG_DTL_ID IN ( /* 발송 상세 IDs */
<foreach collection="sndngDtlIDs" item="sndngDtlId" separator=","> #{sndngDtlId} </foreach>
)
</if>
<if test="sndngDtlId != null">
AND SD.SNDNG_DTL_ID = #{sndngDtlId} /* 발송 상세 ID */
</if>
<if test="sndngId != null">
AND SD.SNDNG_ID = #{sndngId} /* 발송 ID */
</if>
<if test="crdnId != null">
AND SD.CRDN_ID = #{crdnId} /* 단속 ID */
</if>
</where>
<include refid="utility.orderBy" />
<include refid="utility.paging-suffix" />
</select>

@ -109,7 +109,7 @@
<!-- 납부자명 -->
<div class="col-6">
<label class="form-label fw-bold form-search-title text-end">납부자명</label>
<input type="text" class="form-control w-px-160" id="schRtpyrNm--${pageName}" name="schRtpyrNm"autocomplete="off" />
<input type="text" class="form-control w-px-160" id="schRtpyrNm--${pageName}" name="schRtpyrNm" autocomplete="off" />
</div>
<!-- 동적검색 -->
<div class="col-6">
@ -543,9 +543,6 @@
// 기본 데이터 설정
setFormData${pageName}(taskSeCd);
// URL 설정
setURL${pageName}(taskSeCd);
}
// 검색 버튼 이벤트
@ -694,6 +691,9 @@
// 화면 데이터 설정
$("#sggCd--${pageName}").val("${sggCd}"); // 시군구 코드
$("#frmSearch--${pageName} input[name='taskSeCd'][value='" + taskSeCd + "']").prop("checked", true); // 업무 구분
// URL 설정
setURL${pageName}(taskSeCd);
}
// URL 설정

@ -572,6 +572,15 @@
// 계고장 발송 대상 등록 버튼 이벤트
fnWrngTrgtInfo${pageName} = () => {
if (${pageName}Control.dataset.empty) {
dialog.alert({
content : "검색된 자료가 없습니다."
, onOK : () => { }
});
return;
}
let params = ${pageName}Control.query;
params.callPurpose = "create";

@ -20,7 +20,7 @@
<!-- 문서 번호 -->
<div class="col-md-4">
<label for="docNo--${pageName}" class="w-px-120 bg-lighter pe-2 col-form-label text-sm-end">문서번호</label>
<input type="text" class="form-control w-55" id="docNo--${pageName}" name="docNo" />
<input type="text" class="form-control w-55" id="docNo--${pageName}" name="docNo" autocomplete="off" />
</div>
<!-- 발송 일자 -->
<div class="col-md-4">
@ -39,12 +39,12 @@
<!-- 제목 명 -->
<div class="col-md-12">
<label for="ttlNm--${pageName}" class="w-px-120 bg-lighter pe-2 col-form-label text-sm-end">제목</label>
<input type="text" class="form-control w-87" id="ttlNm--${pageName}" name="ttlNm" />
<input type="text" class="form-control w-87" id="ttlNm--${pageName}" name="ttlNm" autocomplete="off" />
</div>
<!-- 기타 내용 -->
<div class="col-md-12">
<label for="etcCn--${pageName}" class="w-px-120 bg-lighter pe-2 col-form-label text-sm-end">기타내용</label>
<textarea type="text" class="form-control w-87" id="etcCn--${pageName}" name="etcCn" rows="2" data-maxlengthb="1000"></textarea>
<textarea type="text" class="form-control w-87" id="etcCn--${pageName}" name="etcCn" rows="2" data-maxlengthb="1000" autocomplete="off"></textarea>
</div>
</div> <!-- <div class="row g-1"> -->
</form> <!-- /입력 영역 -->
@ -345,14 +345,14 @@
// 기본 데이터 설정
setFormData${pageName} = () => {
//
$("#tnocs--${pageName}").val(${pageName}Control.dataset.getValue("TNOCS")); // 총건수
$("#gramt--${pageName}").val(${pageName}Control.dataset.getValue("GRAMT")); // 총금액
// 발송 종료 일자
$("#sndngEndYmd--${pageName}").val("");
$("#sndngEndYmd--${pageName}").prop("disabled", true);
$("#divSndngEndYmd--${pageName}").hide();
// 제목
$("#docNo--${pageName}").val("계고장 발송");
}
// 업무구분에 따른 url 설정

@ -13,7 +13,7 @@
<div>
<!-- 상단 버튼 -->
<div class="container-page-btn">
<button type="button" class="btn btn-outline-dark" id="btnReset--${pageName}" title="초기화" onclick="fnReset${pageName}();">
<button type="button" class="btn btn-outline-dark w-px-120" id="btnReset--${pageName}" title="초기화" onclick="fnResetAndChangeBiz${pageName}();">
초기화
</button>
<span class="container-window-btn-right">
@ -146,8 +146,8 @@
<th class="cmn" style="width: 120px;" onclick="searchFromGridTitle('SNDNG_END_YMD', this.innerText, 'ymd', '');">납기일자</th>
<th class="cmn" style="width: 100px;" onclick="searchFromGridTitle('TNOCS', this.innerText, 'match', 'part');">총건수</th>
<th class="cmn" style="width: 140px;" onclick="searchFromGridTitle('GRAMT', this.innerText, 'match', 'part');">총금액</th>
<th class="cmn" style="width: 280px;" onclick="searchFromGridTitle('TTL_NM', this.innerText, 'match', 'part');">제목</th>
<th class="cmn" style="width: 200px;" onclick="searchFromGridTitle('DOC_NO', this.innerText, 'match', 'part');">문서번호</th>
<th class="cmn" style="width: 320px;" onclick="searchFromGridTitle('TTL_NM', this.innerText, 'match', 'part');">제목</th>
<th class="cmn" style="width: 180px;">등록일시</th>
<th class="cmn" style="width: 140px;">등록사용자</th>
<th class="cmn" style="width: 180px;">수정일시</th>
@ -167,8 +167,8 @@
<td class="cmn text-center" onclick="{onclick}" ondblclick="{ondblclick}">{SNDNG_END_YMD}</td>
<td class="cmn text-end" onclick="{onclick}" ondblclick="{ondblclick}">{TNOCS}</td>
<td class="cmn text-end" onclick="{onclick}" ondblclick="{ondblclick}">{GRAMT}</td>
<td class="cmn text-start" onclick="{onclick}" ondblclick="{ondblclick}">{TTL_NM}</td>
<td class="cmn text-start" onclick="{onclick}" ondblclick="{ondblclick}">{DOC_NO}</td>
<td class="cmn text-start" onclick="{onclick}" ondblclick="{ondblclick}">{TTL_NM}</td>
<td class="cmn text-center" onclick="{onclick}" ondblclick="{ondblclick}">{REG_DT}</td>
<td class="cmn text-center" onclick="{onclick}" ondblclick="{ondblclick}">{RGTR_NM}</td>
<td class="cmn text-center" onclick="{onclick}" ondblclick="{ondblclick}">{MDFCN_DT}</td>

@ -223,10 +223,10 @@
}
// 출력
printWrng${pageName} = (info) => {
if (!info) return;
printWrng${pageName} = (params) => {
if (!params) return;
info.delYN = "N"; // 삭제 여부
params.delYN = "N"; // 삭제 여부
// ajax.post({
// url : !create ? ${pageName}Control.urls.update : ${pageName}Control.urls.create
@ -280,12 +280,10 @@
// 달력 초기화
initDatepicker("frmEdit--${pageName}");
}
// 기본 데이터 설정
setFormData${pageName} = () => {
//
$("#sggCd--${pageName}").val(${sggCd}); // 시군구 코드
$("#taskSeCd--${pageName}").val(${taskSeCd}); // 업무 구분 코드
}

@ -536,6 +536,15 @@
// 사전통지 발송 대상 등록 버튼 이벤트
fnAdvntceTrgtInfo${pageName} = () => {
if (${pageName}Control.dataset.empty) {
dialog.alert({
content : "검색된 자료가 없습니다."
, onOK : () => { }
});
return;
}
let params = ${pageName}Control.query;
params.callPurpose = "create";
@ -635,7 +644,7 @@
// 달력 초기화
initDatepicker("frmSearch--${pageName}");
$("#schCrdnYmdFrom--${pageName}").datepicker("setDate", DateUtil.getDateDay(-365).date);
$("#schCrdnYmdFrom--${pageName}").datepicker("setDate", DateUtil.getDateDay(-7).date);
$("#schCrdnYmdTo--${pageName}").datepicker("setDate", new Date());
// 업무별 조회조건

@ -20,7 +20,7 @@
<!-- 문서 번호 -->
<div class="col-md-4">
<label for="docNo--${pageName}" class="w-px-120 bg-lighter pe-2 col-form-label text-sm-end">문서번호</label>
<input type="text" class="form-control w-55" id="docNo--${pageName}" name="docNo" />
<input type="text" class="form-control w-55" id="docNo--${pageName}" name="docNo" autocomplete="off" />
</div>
<!-- 발송 일자 -->
<div class="col-md-4">
@ -39,12 +39,12 @@
<!-- 제목 명 -->
<div class="col-md-12">
<label for="ttlNm--${pageName}" class="w-px-120 bg-lighter pe-2 col-form-label text-sm-end">제목</label>
<input type="text" class="form-control w-87" id="ttlNm--${pageName}" name="ttlNm" />
<input type="text" class="form-control w-87" id="ttlNm--${pageName}" name="ttlNm" autocomplete="off" />
</div>
<!-- 기타 내용 -->
<div class="col-md-12">
<label for="etcCn--${pageName}" class="w-px-120 bg-lighter pe-2 col-form-label text-sm-end">기타내용</label>
<textarea type="text" class="form-control w-87" id="etcCn--${pageName}" name="etcCn" rows="2" data-maxlengthb="1000"></textarea>
<textarea type="text" class="form-control w-87" id="etcCn--${pageName}" name="etcCn" rows="2" data-maxlengthb="1000" autocomplete="off"></textarea>
</div>
</div> <!-- <div class="row g-1"> -->
</form> <!-- /입력 영역 -->
@ -350,6 +350,7 @@
$("#gramt--${pageName}").val(${pageName}Control.dataset.getValue("GRAMT")); // 총금액
$("#sndngYmd--${pageName}").val(${pageName}AdvntceYmdInfo.LEVY_YMD_MASK); // 발송일자
$("#sndngEndYmd--${pageName}").val(${pageName}AdvntceYmdInfo.DUDT_YMD_MASK); // 납기일자
$("#docNo--${pageName}").val("사전통지 발송"); // 제목
}
// 업무구분에 따른 url 설정

@ -13,7 +13,7 @@
<div>
<!-- 상단 버튼 -->
<div class="container-page-btn">
<button type="button" class="btn btn-outline-dark" id="btnReset--${pageName}" title="초기화" onclick="fnReset${pageName}();">
<button type="button" class="btn btn-outline-dark w-px-120" id="btnReset--${pageName}" title="초기화" onclick="fnResetAndChangeBiz${pageName}();">
초기화
</button>
<span class="container-window-btn-right">
@ -111,8 +111,7 @@
</button>
</div>
</div>
</div>
<!-- / 상세 조건 -->
</div> <!-- / 상세 조건 -->
</form>
<!-- / 검색 조건 영역 -->
@ -148,8 +147,8 @@
<th class="cmn" style="width: 120px;" onclick="searchFromGridTitle('SNDNG_END_YMD', this.innerText, 'ymd', '');">납기일자</th>
<th class="cmn" style="width: 100px;" onclick="searchFromGridTitle('TNOCS', this.innerText, 'match', 'part');">총건수</th>
<th class="cmn" style="width: 140px;" onclick="searchFromGridTitle('GRAMT', this.innerText, 'match', 'part');">총금액</th>
<th class="cmn" style="width: 280px;" onclick="searchFromGridTitle('TTL_NM', this.innerText, 'match', 'part');">제목</th>
<th class="cmn" style="width: 200px;" onclick="searchFromGridTitle('DOC_NO', this.innerText, 'match', 'part');">문서번호</th>
<th class="cmn" style="width: 320px;" onclick="searchFromGridTitle('TTL_NM', this.innerText, 'match', 'part');">제목</th>
<th class="cmn" style="width: 180px;">등록일시</th>
<th class="cmn" style="width: 140px;">등록사용자</th>
<th class="cmn" style="width: 180px;">수정일시</th>
@ -169,8 +168,8 @@
<td class="cmn text-center" onclick="{onclick}" ondblclick="{ondblclick}">{SNDNG_END_YMD}</td>
<td class="cmn text-end" onclick="{onclick}" ondblclick="{ondblclick}">{TNOCS}</td>
<td class="cmn text-end" onclick="{onclick}" ondblclick="{ondblclick}">{GRAMT}</td>
<td class="cmn text-start" onclick="{onclick}" ondblclick="{ondblclick}">{TTL_NM}</td>
<td class="cmn text-start" onclick="{onclick}" ondblclick="{ondblclick}">{DOC_NO}</td>
<td class="cmn text-start" onclick="{onclick}" ondblclick="{ondblclick}">{TTL_NM}</td>
<td class="cmn text-center" onclick="{onclick}" ondblclick="{ondblclick}">{REG_DT}</td>
<td class="cmn text-center" onclick="{onclick}" ondblclick="{ondblclick}">{RGTR_NM}</td>
<td class="cmn text-center" onclick="{onclick}" ondblclick="{ondblclick}">{MDFCN_DT}</td>
@ -179,7 +178,19 @@
</tr>
</template>
<template id="${infoPrefix}NotFound--${pageName}">
<tr class="odd">
<tr class="bpv">
<td valign="top" colspan="15" class="dataTables_empty text-center">${prefixName} 정보를 찾지 못했습니다.</td>
</tr>
<tr class="dpv">
<td valign="top" colspan="15" class="dataTables_empty text-center">${prefixName} 정보를 찾지 못했습니다.</td>
</tr>
<tr class="eca">
<td valign="top" colspan="15" class="dataTables_empty text-center">${prefixName} 정보를 찾지 못했습니다.</td>
</tr>
<tr class="pvs">
<td valign="top" colspan="15" class="dataTables_empty text-center">${prefixName} 정보를 찾지 못했습니다.</td>
</tr>
<tr class="tpv">
<td valign="top" colspan="15" class="dataTables_empty text-center">${prefixName} 정보를 찾지 못했습니다.</td>
</tr>
</template>
@ -234,7 +245,7 @@
**************************************************************************/
// Dataset 변경 이벤트
${pageName}Control.onDatasetChange = obj => {
renderList${pageName}();
renderList${pageName}(obj.${infoPrefix}Total);
$("#paging--${pageName}").setPagingInfo({
list : ${pageName}Control.dataset
@ -261,12 +272,10 @@
${pageName}Control.getInfo = (sndngId) => {
if (typeof sndngId == "undefined" || sndngId == null || sndngId == "") return;
let params = {
callPurpose : "view"
, sggCd : ${pageName}Control.dataset.getValue("SGG_CD") // 시군구 코드
, taskSeCd : ${pageName}Control.dataset.getValue("TASK_SE_CD") // 업무 구분 코드
, sndngId : sndngId // 발송 ID
};
let params = ${pageName}Control.query;
params.callPurpose = "view";
params.sndngId = sndngId;
ajax.get({
url : ${pageName}Control.urls.getInfo
@ -283,106 +292,123 @@
}
/**************************************************************************
*
* DataTables 이벤트
**************************************************************************/
// DataTables에 click, dbclick 이벤트
renderList${pageName} = () => {
renderList${pageName} = (totalSize) => {
let ${infoPrefix}List = ${pageName}Control.dataset;
let empty = ${infoPrefix}List.empty;
let clsForTask = $("#frmSearch--${pageName} input[name='taskSeCd']:checked").val();
if (typeof clsForTask == "undefined" || clsForTask == null || clsForTask == "") {
clsForTask = $("#layout-navbar input[name='taskSeCd']:checked").val().toLowerCase();
} else {
clsForTask = clsForTask.toLowerCase();
}
// 업무별 그리드 td
let foundContent = document.getElementById("${infoPrefix}Row--${pageName}").content;
let foundTr = $(foundContent).find("tr")[0].cloneNode(false);
let foundTds = $(foundContent).find("." + clsForTask + ",.cmn");
foundTds.each(function() {
foundTr.appendChild(this.cloneNode(true));
});
let trs = empty ?
[document.getElementById("${infoPrefix}NotFound--${pageName}").innerHTML] : <%-- from template#${infoPrefix}NotFound --%>
[document.getElementById("${infoPrefix}NotFound--${pageName}").content.querySelector("." + clsForTask + ",.cmn").outerHTML] :
${infoPrefix}List.inStrings(
document.getElementById("${infoPrefix}Row--${pageName}").innerHTML, <%-- from template#${infoPrefix}Row --%>
foundTr.outerHTML,
(str, dataItem) => str
.replace(/{onclick}/gi, "${pageName}Control.setCurrent('" + dataItem.getValue("SNDNG_ID") + "');")
.replace(/{ondblclick}/gi, "${pageName}Control.getInfo('" + dataItem.getValue("SNDNG_ID") + "');")
);
$("#tbody--${pageName}").html(trs.join());
let noMore = (totalSize == ${infoPrefix}List.length);
let initScroll = (${pageName}Control.query.pageNum < 2) && (${pageName}Control.untilPageNum == 0);
$("#table-responsive--${pageName}")[0].changeContent(trs.join(), initScroll, noMore);
if (${pageName}Control.untilPageNum != 0) {
${pageName}Control.query.fetchSize = ${pageName}Control.defaultFetchSize;
${pageName}Control.query.pageNum = ${pageName}Control.untilPageNum;
${pageName}Control.untilPageNum = 0;
}
// checkbox 체크 해제
$("th input[type='checkbox']").prop("checked", false);
//보안모드
fn_securityModeToggle($("#securityMode--top").is(":checked"));
}
/**************************************************************************
* 초기 셋팅
**************************************************************************/
// 초기화
initForm${pageName} = () => {
// 화면 초기화
$("#frmSearch--${pageName}")[0].reset();
// DataTables에 스크롤이 맨 밑으로 이동했을 때 이벤트
scrollDataList${pageName} = () => {
${pageName}Control.tableRenderComplete = false; // dataTables 에 자료 추가 false
// dataset 초기화
${pageName}Control.dataset.clear();
${pageName}Control.load(${pageName}Control.query.pageNum + 1);
}
// 이벤트
setEvent${pageName} = () => {
// form-date 항목에서 키보드로 입력시 날짜 포맷팅 적용
$("#frmSearch--${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);
/**************************************************************************
* 사용자 함수(function)
**************************************************************************/
// callback 사용자 검색
callbackFindUser${pageName} = (userId, userNm) => {
$("#schRgtrCd--${pageName}").val(userId); // 사용자 ID
$("#schRgtrNm--${pageName}").val(userNm); // 사용자 명
}
});
});
// DataTables width 변경 조정
$("#DataTables_Table_0--${pageName}").find("th").resizable( {handles : "e"} );
// DataTables 스크롤 이벤트
$("#table-responsive--${pageName}").scroll(function() {
let el = $(this);
// 사용자 검색
getFindUser${pageName} = () => {
let params = {
callbackFuncName : "callbackFindUser${pageName}"
}
if (el.scrollTop() == 0) {
return;
ajax.get({
url : wctx.url("/user/user02/010/main.do")
, data : params || {}
, success : resp => {
dialog.open({
id : "userDialog"
, title : "사용자 검색"
, content : resp
, size : "lg"
});
}
if (!${pageName}Control.tableRenderComplete) {
return;
});
}
let itemsCnt = ${pageName}Control.dataset._items.length;
let totCnt = ${pageName}Control.dataset.getValue("TOT_CNT"); // let totCnt = ${pageName}Control.dataset.getCurrent("item").data.TOT_CNT;
// 개별총정보 dialog
getTotalInfo${pageName} = (crdnId) => {
if (typeof crdnId == "undefined" || crdnId == null || crdnId == "") return;
if (itemsCnt >= totCnt) {
return;
let params = {
callControlName : "${pageName}Control"
, sggCd : $("#sggCd--${pageName}").val()
, taskSeCd : $("input[name=taskSeCd]:checked").val()
, crdnId : crdnId
}
if ((el[0].scrollHeight - el.scrollTop() + VERTICAL_SCROLL_HEIGHT) <= el.outerHeight()) {
${pageName}Control.tableRenderComplete = false; // dataTables 에 자료 추가 완료
${pageName}Control.load(${pageName}Control.query.pageNum + 1);
}
ajax.get({
url : wctx.url(params.taskSeCd + "/sprt/sprt02/010/main.do")
, data : params
, success : resp => {
dialog.open({
id : "totalInfoMainDialog"
, title : "개별총정보"
, content : resp
, size : "xxl"
});
}
// 화면 초기값 셋팅
setForm${pageName} = (taskSeCd) => {
// 업무 구분 코드
$("#frmSearch--${pageName} input[name='taskSeCd'][value='" + taskSeCd + "']").prop("checked", true);
// 최고 관리자 경우 업무구분을 선택할 수 있도록 하자.
$("#frmSearch--${pageName} input[name='taskSeCd']").each(function(i) {
$(this).prop("disabled", "true");
});
// 달력 초기화
initDatepicker("frmSearch--${pageName}");
$("#schSndngYmdFrom--${pageName}").datepicker("setDate", DateUtil.getDateDay(-365).date);
$("#schSndngYmdTo--${pageName}").datepicker("setDate", new Date());
}
// URL 설정
setURL${pageName} = (taskSeCd) => {
${pageName}Control.urls.load = wctx.url("/" + taskSeCd + ${pageName}PrefixUrl + "/070/list.do"); // 조회
${pageName}Control.urls.getInfo = wctx.url("/" + taskSeCd + ${pageName}PrefixUrl + "/080/info.do"); // 사전통지 세부내용
// 검색 자료 재조회
refreshList${pageName} = () => {
${pageName}Control.untilPageNum = ${pageName}Control.query.pageNum;
${pageName}Control.query.fetchSize = ${pageName}Control.defaultFetchSize * ${pageName}Control.query.pageNum;
${pageName}Control.load(1);
}
/**************************************************************************
@ -390,62 +416,140 @@
**************************************************************************/
// 업무 구분 변경
fnResetAndChangeBiz${pageName} = (taskSeCd) => {
// 초기화
initForm${pageName}();
// 업무 구분 코드
if (typeof taskSeCd == "undefined" || taskSeCd == null || taskSeCd == "") {
taskSeCd = $("#layout-navbar input[name='taskSeCd']:checked").val();
}
// 화면 초기값 설정
setForm${pageName}(taskSeCd);
// 초기 기본 설정
initForm${pageName}();
// 기본 데이터 설정
setFormData${pageName}(taskSeCd);
// URL 설정
setURL${pageName}(taskSeCd);
}
// 초기화 버튼 이벤트
fnReset${pageName} = () => {
fnResetAndChangeBiz${pageName}();
}
// 검색 버튼 이벤트
fnSearchList${pageName} = () => {
// 검색조건
${pageName}Control.query = ${pageName}Fields.get();
${pageName}Control.query.fetchSize = FETCH_XS; // 한번에 조회되는 자료 건수 FETCH_XS = 30
${pageName}Control.query.fetchSize = ${pageName}Control.defaultFetchSize; // 한번에 조회되는 자료 건수
${pageName}Control.query.sndngSeCd = "02"; // 발송 구분 코드 - 02 사전통지
${pageName}Control.query.delYn = "N"; // 삭제 여부
${pageName}Control.query.delYN = "N"; // 삭제 여부
${pageName}Control.load();
${pageName}Control.load(1);
}
// 엑셀 버튼 이벤트
fnExcel${pageName} = () => {
if (${pageName}Control.dataset.empty) {
dialog.alert({
content : "검색된 자료가 없습니다."
, onOK : () => { }
});
return;
}
// DataTables(그리드)
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)"));
${pageName}Control.query.cellDefs = cellDefs;
${pageName}Control.download();
}
// 사용자 조회 버튼 이벤트
fnFindUser${pageName} = () => {
getFindUser${pageName}();
}
/**************************************************************************
* script 진입
* 초기 셋팅
**************************************************************************/
$(document).ready(function() {
// 이벤트
setEvent${pageName} = () => {
// 동적검색에서 엔터(Enter) 키를 누르면 검색한다.
$("#term--${pageName}").keypress(function(e) {
if (e.keyCode == 13) {
fnSearchList${pageName}();   
}    
});
// form-date 항목에서 키보드로 입력시 날짜 포맷팅 적용
$("#frmSearch--${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);
}
});
});
// DataTables width 변경 조정
$("#DataTables_Table_0--${pageName}").find("th").resizable( {handles : "e"} );
// DataTables 스크롤 이벤트 생성
fnMakeScrollableTable($("#table-responsive--${pageName}")[0], scrollDataList${pageName});
}
// 화면 초기 설정
initForm${pageName} = () => {
// 화면 초기화
$("#frmSearch--${pageName}")[0].reset();
// 최고 관리자 경우 업무구분을 선택할 수 있도록 하자.
$("#frmSearch--${pageName} input[name='taskSeCd']").each(function(i) {
$(this).prop("disabled", "true");
});
// 달력 초기화
initDatepicker("frmSearch--${pageName}");
$("#schSndngYmdFrom--${pageName}").datepicker("setDate", DateUtil.getDateDay(-7).date);
$("#schSndngYmdTo--${pageName}").datepicker("setDate", new Date());
// 사용자 이름
$("#schRgtrNm--${pageName}").prop("readonly", true);
// dataset 초기화
${pageName}Control.dataset.clear();
}
// 기본 데이터 설정
setFormData${pageName} = (taskSeCd) => {
// ${pageName}Control 설정
${pageName}Control.defaultFetchSize = FETCH_XS; // 1 페이지당 조회되는 자료 건수 index.jsp에서 확인 FETCH_XS = 30
// 화면 데이터 설정
$("#sggCd--${pageName}").val("${sggCd}"); // 시군구 코드
$("#frmSearch--${pageName} input[name='taskSeCd'][value='" + taskSeCd + "']").prop("checked", true); // 업무 구분
}
// URL 설정
setURL${pageName} = (taskSeCd) => {
${pageName}Control.urls.load = wctx.url(taskSeCd + ${pageName}PrefixUrl + "/070/list.do"); // 조회
${pageName}Control.urls.getInfo = wctx.url(taskSeCd + ${pageName}PrefixUrl + "/080/info.do"); // 사전통지 세부내용
}
/**************************************************************************
* script 진입
**************************************************************************/
$(document).ready(function() {
// 이벤트 설정
setEvent${pageName}();
// 보안모드
fn_securityModeToggle($("#securityMode--top").is(":checked"));
// 업무 구분 설정
let defaultBizValue = $("#layout-navbar input[name='taskSeCd']:checked").val();
$("#frmSearch--${pageName} input[name='taskSeCd'][value='" + defaultBizValue + "']").prop("checked", true);
// 화면 초기 설정 및 업무 구분 변경
fnResetAndChangeBiz${pageName}(defaultBizValue);
fnResetAndChangeBiz${pageName}($("#layout-navbar input[name='taskSeCd']:checked").val());
});
</script>

@ -17,8 +17,17 @@
<!-- 업무 버튼 및 건수 표시 -->
<div>
<span class="container-page-btn">
<!-- 건수, 페이지 표시 -->
<div class="d-flex flex-row justify-content-between">
<label class="dataTables_info" id="paging--${pageName}PagingInfo" role="status" aria-live="polite"></label>
<ul class="pagination pagination-primary" id="paging--${pageName}">
</ul>
</div>
<span class="container-window-btn-right">
<!-- 업무 버튼 -->
<button type="button" class="btn btn-excel w-px-120" id="btnExcel--${pageName}" title="엑셀 저장" onclick="fnList${pageName}();">
검색
</button>
<button type="button" class="btn btn-excel w-px-120" id="btnExcel--${pageName}" title="엑셀 저장" onclick="fnExcel${pageName}();">
엑셀 저장
</button>
@ -48,14 +57,11 @@
<!-- DataTables(그리드) -->
<div class="card-datatable text-nowrap">
<div class="dataTables_wrapper dt-bootstrap5 no-footer" id="DataTables_Table_0_wrapper--${pageName}">
<div class="table-responsive" id="table-responsive--${pageName}" style="overflow-x:scroll; height:400px; overflow-y:scroll;" >
<div class="table-responsive" id="table-responsive--${pageName}" style="overflow-x:scroll; height:460px; overflow-y:scroll;" >
<table class="table-layout-fixed dataTable datatables-ajax table table-bordered no-footer" id="DataTables_Table_0--${pageName}" aria-describedby="DataTables_Table_0_info">
<thead class="sticky-thead">
<tr id="theadTr--${pageName}"
data-by="by--${pageName}" data-by-output="byOutput--${pageName}" data-main-option="mainOption--${pageName}" data-sub-option="subOption--${pageName}">
<th class="cmn hidden" style="width: 56px;">
<input type="checkbox" class="form-check-input" onchange="${pageName}Control.select(this.checked);">
</th>
<th class="cmn" style="width: 120px;">발송상태</th>
<th class="cmn" style="width: 200px;">등기번호</th>
<th class="cmn" style="width: 120px;">발송일자</th>
@ -68,7 +74,7 @@
<th class="cmn" style="width: 180px;">단속일시</th>
<th class="cmn" style="width: 140px;">차량번호</th>
<th class="cmn" style="width: 280px;">단속장소</th>
<th class="cmn" style="width: 120px;">단속금액</th>
<th class="cmn" style="width: 120px;">과태료금액</th>
<th class="cmn" style="width: 180px;">등록일시</th>
<th class="cmn" style="width: 140px;">등록사용자</th>
<th class="cmn" style="width: 180px;">수정일시</th>
@ -80,9 +86,6 @@
</tbody>
<template id="${infoPrefix}Row--${pageName}">
<tr data-key="{SNDNG_DTL_ID}">
<td class="cmn text-center hidden">
<input type="checkbox" class="form-check-input" value="{SNDNG_DTL_ID}" onchange="${pageName}Control.select('{SNDNG_DTL_ID}', this.checked);">
</td>
<td class="cmn text-center" onclick="{onclick}" ondblclick="{ondblclick}">{SNDNG_DTL_STTS_NM}</td>
<td class="cmn text-center" onclick="{onclick}" ondblclick="{ondblclick}">{RG_NO}</td>
<td class="cmn text-center" onclick="{onclick}" ondblclick="{ondblclick}">{SNDNG_YMD}</td>
@ -125,8 +128,12 @@
**************************************************************************/
// URL
var ${pageName}PrefixUrl = "/sndb/sndb01";
// infoDialog 호출 용도(view 조회(편집불가), create 등록, update 수정)
var ${pageName}CallPurpose = "${callPurpose}";
// FormFields
var ${pageName}Fields = new FimsFormFields("#frmEdit--${pageName}");
// main 의 검색 조건을 그대로 유지
var ${pageName}Query = ${query};
/**************************************************************************
* DatasetControl
@ -137,10 +144,8 @@
, keymapper : info => info ? info.SNDNG_DTL_ID : ""
, dataGetter : obj => obj.advntceSndngDtlList
, appendData : true
, untilPageNum : 0 // 현재 페이지 번호
, tableRenderComplete : false // dataTables 에 자료 추가 완료 여부
, urls : {
getInfo : wctx.url("/sprt/sprt02/010/main.do") // 개별총정보
}
, formats : {
SNDNG_YMD : dateFormat
, SNDNG_END_YMD : dateFormat
@ -155,12 +160,16 @@
**************************************************************************/
// Dataset 변경 이벤트
${pageName}Control.onDatasetChange = obj => {
renderList${pageName}();
${pageName}Control.select(true); // 전체 선택 되도록..
if (obj.length > 0) {
}
renderList${pageName}(obj.${infoPrefix}Total);
$("#paging--${pageName}").setPagingInfo({
list : ${pageName}Control.dataset
, prefix : "paging--${pageName}"
, start : obj.${infoPrefix}Start
, totalSize : obj.${infoPrefix}Total
, fetchSize : obj.${infoPrefix}Fetch
, func : "${pageName}Control.load({index})"
});
${pageName}Control.tableRenderComplete = true; // dataTables 에 자료 추가 완료
};
@ -174,44 +183,8 @@
$("#tbody--${pageName}").setCurrentRow(key);
};
// 선택(체크) 변경 이벤트
${pageName}Control.onSelectionChange = selected => {
let ${infoPrefix}List = ${pageName}Control.dataset;
let keys = selected.map(e => ${infoPrefix}List.getKey(e));
$("#tbody--${pageName} input[type='checkbox']").each(function() {
let checkbox = $(this);
checkbox.prop("checked", keys.includes(checkbox.val()));
});
};
// 개별총정보 dialog
${pageName}Control.getInfo = (crdnId) => {
if (typeof crdnId == "undefined" || crdnId == null || crdnId == "") return;
let params = {
callControlName : "${pageName}Control"
, callPurpose : "view"
, crdnId : crdnId
}
ajax.get({
url : ${pageName}Control.urls.getInfo
, data : params
, success : resp => {
dialog.open({
id : "totalInfoMainDialog"
, title : "개별총정보"
, content : resp
, size : "xxl"
});
}
});
}
/**************************************************************************
*
* DataTables 이벤트
**************************************************************************/
// 단속 ID
getCrdnKeys = (status) => {
@ -223,7 +196,7 @@
}
// DataTables에 click, dbclick 이벤트
renderList${pageName} = () => {
renderList${pageName} = (totalSize) => {
let ${infoPrefix}List = ${pageName}Control.dataset;
let empty = ${infoPrefix}List.empty;
@ -233,16 +206,63 @@
document.getElementById("${infoPrefix}Row--${pageName}").innerHTML, <%-- from template#${infoPrefix}Row --%>
(str, dataItem) => str
.replace(/{onclick}/gi, "${pageName}Control.setCurrent('" + dataItem.getValue("SNDNG_DTL_ID") + "');")
.replace(/{ondblclick}/gi, "${pageName}Control.getInfo('" + dataItem.getValue("CRDN_ID") + "');")
.replace(/{ondblclick}/gi, "getTotalInfo${pageName}('" + dataItem.getValue("CRDN_ID") + "');")
);
$("#tbody--${pageName}").html(trs.join());
let noMore = (totalSize == ${infoPrefix}List.length);
let initScroll = (${pageName}Control.query.pageNum < 2) && (${pageName}Control.untilPageNum == 0);
$("#table-responsive--${pageName}")[0].changeContent(trs.join(), initScroll, noMore);
if (${pageName}Control.untilPageNum != 0) {
${pageName}Control.query.fetchSize = ${pageName}Control.defaultFetchSize;
${pageName}Control.query.pageNum = ${pageName}Control.untilPageNum;
${pageName}Control.untilPageNum = 0;
}
// checkbox 체크 해제
$("th input[type='checkbox']").prop("checked", false);
//보안모드
fn_securityModeToggle($("#securityMode--top").is(":checked"));
}
// DataTables에 스크롤이 맨 밑으로 이동했을 때 이벤트
scrollDataList${pageName} = () => {
${pageName}Control.tableRenderComplete = false; // dataTables 에 자료 추가 false
${pageName}Control.load(${pageName}Control.query.pageNum + 1);
}
/**************************************************************************
* 사용자 함수(function)
**************************************************************************/
// 개별총정보 dialog
getTotalInfo${pageName} = (crdnId) => {
if (typeof crdnId == "undefined" || crdnId == null || crdnId == "") return;
let params = {
callControlName : "${pageName}Control"
, callPurpose : "view"
, sggCd : $("#sggCd--${pageName}").val()
, taskSeCd : $("#taskSeCd--${pageName}").val()
, crdnId : crdnId
}
ajax.get({
url : wctx.url(params.taskSeCd + "/sprt/sprt02/010/main.do")
, data : params
, success : resp => {
dialog.open({
id : "totalInfoMainDialog"
, title : "개별총정보"
, content : resp
, size : "xxl"
});
}
});
}
// 세외수입 등록
createNxrpLink${pageName} = (params) => {
// 선택된 자료의 ID 추가
@ -310,6 +330,19 @@
});
}
// 사전통지 출력
printAdvntce${pageName} = (params) => {
if (!params) return;
params.delYN = "N"; // 삭제 여부
// ajax.post({
// url : !create ? ${pageName}Control.urls.update : ${pageName}Control.urls.create
// , data : params
// , success : resp => ${pageName}Control.onSave(resp)
// });
}
// 종적결과 등록
createSndbk${pageName} = (params) => {
// 선택된 자료의 발송 상세 ID 추가
@ -344,34 +377,42 @@
});
}
/**************************************************************************
* 초기 셋팅
**************************************************************************/
// 이벤트
setEvent${pageName} = () => {
// 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);
}
});
});
// 검색 자료 재조회
refreshList${pageName} = () => {
${pageName}Control.untilPageNum = ${pageName}Control.query.pageNum;
${pageName}Control.query.fetchSize = ${pageName}Control.defaultFetchSize * ${pageName}Control.query.pageNum;
// DataTables width 변경 조정
$("#DataTables_Table_0--${pageName}").find("th").resizable( {handles : "e"} );
${pageName}Control.load(1);
}
/**************************************************************************
* 버튼 clickEvent
**************************************************************************/
//
fnList${pageName} = () => {
${pageName}Control.query = ${pageName}Query;
${pageName}Control.load(1);
}
// 엑셀 저장
fnExcel${pageName} = () => {
if (${pageName}Control.dataset.empty) {
dialog.alert({
content : "검색된 자료가 없습니다."
, onOK : () => { }
});
return;
}
// DataTables(그리드)
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)"));
${pageName}Control.query.cellDefs = cellDefs;
${pageName}Control.download();
}
// 세외수입 등록
@ -387,7 +428,7 @@
});
}
// 매치정보 등록
// 매치정보 작성
fnUpdateNxrpMtchg${pageName} = () => {
// validate 확인
if (!customValidate($("#frmEdit--${pageName}").find("input, select, textarea"))) return;
@ -422,10 +463,18 @@
// 사전통지 출력
fnPrintAdvntce${pageName} = () => {
// validate 확인
if (!customValidate($("#frmEdit--${pageName}").find("input, select, textarea"))) return;
dialog.alert({
content : ${pageName}Control.prefixName + " 정보를 출력하시겠습니까?"
, onOK : () => {
printAdvntce${pageName}(${pageName}Fields.get());
}
});
}
// 반송(종적결과) 확인
// 반송 확인
fnCreateSndbk${pageName} = () => {
// validate 확인
if (!customValidate($("#frmEdit--${pageName}").find("input, select, textarea"))) return;
@ -447,21 +496,83 @@
}
/**************************************************************************
* script 진입
* 초기 셋팅
**************************************************************************/
$(document).ready(function() {
// 기본 데이터
$("#sggCd--${pageName}").val("${sggCd}"); // 시군구 코드
$("#taskSeCd--${pageName}").val("${taskSeCd}"); // 업무 구분 코드
// 이벤트
setEvent${pageName} = () => {
// form-date 항목에서 키보드로 입력시 날짜 포맷팅 적용
$("#frmEdit--${pageName}").find(".form-date").each(function() {
$(this).on("input", function() {
let value = this.value.replaceAll("-", "");
// 보안모드
fn_securityModeToggle($("#securityMode--top").is(":checked"));
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);
}
});
});
// DataTables width 변경 조정
$("#DataTables_Table_0--${pageName}").find("th").resizable( {handles : "e"} );
// DataTables 스크롤 이벤트 생성
fnMakeScrollableTable($("#table-responsive--${pageName}")[0], scrollDataList${pageName});
}
// 화면 초기 설정
initForm${pageName} = () => {
// 화면 초기화
$("#frmEdit--${pageName}")[0].reset();
// dataset 초기화
${pageName}Control.dataset.clear();
}
// 기본 데이터 설정
setFormData${pageName} = () => {
let sggCd = ${pageName}Query.sggCd;
let taskSeCd = ${pageName}Query.taskSeCd;
$("#sggCd--${pageName}").val(sggCd); // 시군구 코드
$("#taskSeCd--${pageName}").val(taskSeCd); // 업무 구분 코드
// 검색 조건 설정
${pageName}Control.defaultFetchSize = ${pageName}Query.fetchSize;
${pageName}Control.query = ${pageName}Query;
// URL 설정
setURL${pageName}(taskSeCd);
}
// 업무구분에 따른 url 설정
setURL${pageName} = (taskSeCd) => {
${pageName}Control.urls.load = wctx.url(taskSeCd + ${pageName}PrefixUrl + "/080/list.do"); // 조회
}
/**************************************************************************
* script 진입
**************************************************************************/
$(document).ready(function() {
// 이벤트 설정
setEvent${pageName}();
// Dataset 셋팅 - 화면이 열리면서 조회하는 경우 addData 하여 자료를 추가
${pageName}Control.addData(${advntceSndngDtl});
// 화면 초기화
initForm${pageName}();
//
${pageName}Control.setData({
${infoPrefix}List : ${advntceSndngDtlList}
, ${infoPrefix}Start : ${advntceSndngDtlStart}
, ${infoPrefix}Fetch : ${advntceSndngDtlFetch}
, ${infoPrefix}Total : ${advntceSndngDtlTotal}
});
// 기본 데이터 설정
setFormData${pageName}();
// 보안모드
fn_securityModeToggle($("#securityMode--top").is(":checked"));
});
</script>

Loading…
Cancel
Save