feat: 부과, 답변 화면단 개발 진행

main
minuk926 2 years ago
parent 11ebea3486
commit 2e4344ac36

@ -27,6 +27,7 @@
<ehcache.version>2.6.11</ehcache.version> <ehcache.version>2.6.11</ehcache.version>
<logback.version>1.1.3</logback.version> <logback.version>1.1.3</logback.version>
<slf4j.version>1.7.25</slf4j.version> <slf4j.version>1.7.25</slf4j.version>
<apache.cxf.version>3.5.5</apache.cxf.version>
<fasterxml.jackson.version>2.13.4</fasterxml.jackson.version> <fasterxml.jackson.version>2.13.4</fasterxml.jackson.version>
<spring.rest-doc.version>2.0.6.RELEASE</spring.rest-doc.version> <spring.rest-doc.version>2.0.6.RELEASE</spring.rest-doc.version>
<snippetsDirectory>${project.build.directory}/generated-snippets</snippetsDirectory> <snippetsDirectory>${project.build.directory}/generated-snippets</snippetsDirectory>
@ -629,6 +630,24 @@
<artifactId>jaxb-runtime</artifactId> <artifactId>jaxb-runtime</artifactId>
<version>2.3.1</version> <version>2.3.1</version>
</dependency> </dependency>
<!-- apache.cxf -->
<dependency>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-rt-frontend-jaxrs</artifactId>
<version>${apache.cxf.version}</version>
</dependency>
<dependency>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-rt-transports-http</artifactId>
<version>${apache.cxf.version}</version>
</dependency>
<dependency>
<groupId>wsdl4j</groupId>
<artifactId>wsdl4j</artifactId>
<version>1.6.2</version>
</dependency>
<!-- <!--
<dependency> <dependency>
<groupId>com.sun.xml.bind</groupId> <groupId>com.sun.xml.bind</groupId>
@ -715,6 +734,10 @@
</plugins> </plugins>
</pluginManagement> </pluginManagement>
<plugins> <plugins>
<!-- EMMA --> <!-- EMMA -->
<plugin> <plugin>
<groupId>org.apache.maven.plugins</groupId> <groupId>org.apache.maven.plugins</groupId>

@ -23,7 +23,7 @@ public class FimsCrackdownDTO {
// CCTV 연계 key // CCTV 연계 key
private String extrlRegltCntcId; private String extrlRegltCntcId;
private String violtDtlsNm;
// 시민신고 interface // 시민신고 interface
private String dutyIdV; private String dutyIdV;
private String pcdTelV; private String pcdTelV;
@ -46,6 +46,11 @@ public class FimsCrackdownDTO {
private String adres; private String adres;
private String detailAdres; private String detailAdres;
private String legaldongCode; private String legaldongCode;
// 서손
private String erppId;
private String erppSeCode;
private String erppResnDetail;
} }
@EqualsAndHashCode(callSuper = true) @EqualsAndHashCode(callSuper = true)
@ -73,6 +78,7 @@ public class FimsCrackdownDTO {
private String interfaceSeqN; private String interfaceSeqN;
// 민원심사 상세 key // 민원심사 상세 key
private String ctznSttemntDetailSn; private String ctznSttemntDetailSn;
private String regltProcessSttusCode;
private FimsCrackdownDTO.Info infoDTO; private FimsCrackdownDTO.Info infoDTO;
//private FimsCrackdownDTO.Info infoDTO; //private FimsCrackdownDTO.Info infoDTO;

@ -48,8 +48,11 @@ public class FimsCrackDownMgtController {
ModelAndView mav = new ModelAndView(); ModelAndView mav = new ModelAndView();
// 단속정보 // 단속정보
mav.addAllObjects(service.findCrackdownInfo(dto)); mav.addAllObjects(service.findCrackdownInfo(dto));
if(Objects.equals(FimsConst.RegltProcessSttusCode.CRACKDOWN_INIT.getCode(), dto.getRegltProcessSttusCode())) {
mav.addObject("pageTitle", "초기자료 편집"); mav.addObject("pageTitle", "초기자료 편집");
}else if(Objects.equals(FimsConst.RegltProcessSttusCode.CRACKDOWN.getCode(), dto.getRegltProcessSttusCode())) {
mav.addObject("pageTitle", "과태료 시스템 등록");
}
FimsConst.RegltSeCode regltSeCodeEnum = null; FimsConst.RegltSeCode regltSeCodeEnum = null;
for (FimsConst.RegltSeCode e : FimsConst.RegltSeCode.values()) { for (FimsConst.RegltSeCode e : FimsConst.RegltSeCode.values()) {
if (e.getCode().equals(dto.getRegltSeCode())) { if (e.getCode().equals(dto.getRegltSeCode())) {
@ -95,6 +98,19 @@ public class FimsCrackDownMgtController {
return mav; return mav;
} }
@RequestMapping(value = "/cmmImposePopup")
public ModelAndView cmmImposePopup(final String bizDiv){
ModelAndView mav = new ModelAndView(FimsConst.FIMS_JSP_BASE_PATH +"cmm/cmmImposePopup.popup");
mav.addObject("pageTitle", "과태료 시스템 등록");
//mav.addObject("bizDiv", bizDiv);
//if(bizDiv.equals(FimsConst.PopupWorkDiv.ENLIGHT.getCode())) {
// mav.addObject("txtTitle", FimsConst.PopupWorkDiv.ENLIGHT.getDesc());
//}else {
// mav.addObject("txtTitle", FimsConst.PopupWorkDiv.DISALLOW.getDesc());
//}
mav.addObject("txtTitle", "과태료 시스템 등록");
return mav;
}
@RequestMapping(value = "/findCrackdownInfos") @RequestMapping(value = "/findCrackdownInfos")
public ModelAndView findCrackdownInfos(@RequestParam final Map<String,Object> paraMap) { public ModelAndView findCrackdownInfos(@RequestParam final Map<String,Object> paraMap) {

@ -134,6 +134,10 @@ public class EcNatlNewspaperService implements IEcNatlNewspaperService {
dtl.setCtznSttemntDetailProcessSttus(FimsConst.CtznStmtDtlStsCode.ACCEPTANCE.getCode()); dtl.setCtznSttemntDetailProcessSttus(FimsConst.CtznStmtDtlStsCode.ACCEPTANCE.getCode());
ctznSttemntMapper.insertEcCtznSttemntDetail(dtl); ctznSttemntMapper.insertEcCtznSttemntDetail(dtl);
// 위반내역 코드와 매핑을 위해 '횡단보도 불법 주정차' -> 횡단보도, '소화전 불법 주정차' -> 소화전 으로
//String violtDtlsNm = Checks.isNotEmpty(dtl.getVioltDtlsNm()) ? dtl.getVioltDtlsNm().split(" ")[0] : "";
String violtDtlsNm = dtl.getVioltDtlsNm();
// 단속데이타 생성을 위한 DTO set // 단속데이타 생성을 위한 DTO set
CtznStmtDTO.Request reqDTO = CtznStmtDTO.Request CtznStmtDTO.Request reqDTO = CtznStmtDTO.Request
.builder() .builder()
@ -144,7 +148,7 @@ public class EcNatlNewspaperService implements IEcNatlNewspaperService {
.ctznSttemntDetailSn(dtl.getCtznSttemntDetailSn()) .ctznSttemntDetailSn(dtl.getCtznSttemntDetailSn())
.regltId(dtl.getRegltId()) .regltId(dtl.getRegltId())
.regltProcessSttusCode(FimsConst.RegltProcessSttusCode.CRACKDOWN_INIT.getCode()) .regltProcessSttusCode(FimsConst.RegltProcessSttusCode.CRACKDOWN_INIT.getCode())
.violtDtlsNm(dtl.getVioltDtlsNm()) .violtDtlsNm(violtDtlsNm)
.registSeCode(FimsConst.RegistSeCode.AUTO_REGIST.getCode()) .registSeCode(FimsConst.RegistSeCode.AUTO_REGIST.getCode())
.register(getUserInfo().getUniqId()) .register(getUserInfo().getUniqId())
.build(); .build();

@ -62,6 +62,7 @@
, trp.adres , trp.adres
, trp.detail_adres , trp.detail_adres
, trp.legaldong_code -- 법정동 코드 , trp.legaldong_code -- 법정동 코드
, IF(trr.reglt_se_code = '09', tecsd.violt_dtls_nm, teerc.violt_dtls_nm) AS violtDtlsNm -- 위반내용
FROM tb_rt_reglt trr FROM tb_rt_reglt trr
LEFT JOIN tb_ec_extrl_reglt_cntc teerc LEFT JOIN tb_ec_extrl_reglt_cntc teerc
ON trr.reglt_id = teerc.reglt_id ON trr.reglt_id = teerc.reglt_id
@ -72,7 +73,7 @@
LEFT JOIN tb_ec_esb_interface teei LEFT JOIN tb_ec_esb_interface teei
ON tecs.interface_seq_n = teei.interface_seq_n ON tecs.interface_seq_n = teei.interface_seq_n
LEFT JOIN tb_rt_erpp tre LEFT JOIN tb_rt_erpp tre
ON tecs.regist_dt = tre.regist_dt ON trr.reglt_id = tre.reglt_id
LEFT JOIN tb_rt_payer trp LEFT JOIN tb_rt_payer trp
ON trr.payer_id = trp.payer_id ON trr.payer_id = trp.payer_id
</sql> </sql>
@ -83,8 +84,13 @@
<include refid="sqlRtReglt"/> <include refid="sqlRtReglt"/>
<where> <where>
<if test='regltProcessSttusCode != null and regltProcessSttusCode != ""'> <if test='regltProcessSttusCode != null and regltProcessSttusCode != ""'>
<if test='regltProcessSttusCode eq "NON-INIT"'>
AND trr.reglt_process_sttus_code != '01'
</if>
<if test='regltProcessSttusCode != "NON-INIT"'>
AND trr.reglt_process_sttus_code = #{regltProcessSttusCode} AND trr.reglt_process_sttus_code = #{regltProcessSttusCode}
</if> </if>
</if>
<if test='sch_date_opt eq "regltDe"'> <if test='sch_date_opt eq "regltDe"'>
AND trr.reglt_de BETWEEN #{sch_date_from} AND #{sch_date_to} AND trr.reglt_de BETWEEN #{sch_date_from} AND #{sch_date_to}
</if> </if>

@ -241,15 +241,18 @@
, SUBSTR(ecsd.reglt_de_time, 9) -- 단속 시작 시간 , SUBSTR(ecsd.reglt_de_time, 9) -- 단속 시작 시간
, SUBSTR(ecsd.reglt_de_time, 9) -- 단속 종료 시간 , SUBSTR(ecsd.reglt_de_time, 9) -- 단속 종료 시간
, '' -- 위반 법규 코드 : FIXME : 코드 확인 필요 , '' -- 위반 법규 코드 : FIXME : 코드 확인 필요
, (SELECT tgt.code , (SELECT tgt.mapng_code
FROM xit_cmmn_detail_code tgt FROM tb_cmm_code_mapng tgt
WHERE tgt.code_id = 'FIM004' WHERE tgt.transr_code_nm = #{violtDtlsNm}
AND tgt.code_nm = #{violtDtlsNm}
) -- FIXME: 매핑테이블 정의후 반영 (위반 내역 코드) ) -- FIXME: 매핑테이블 정의후 반영 (위반 내역 코드)
, '' -- 위반 내역 기타 내용 , '' -- 위반 내역 기타 내용
, ecsd.reglt_place , ecsd.reglt_place
, '1' -- 위반 횟수 , '1' -- 위반 횟수
, '' -- 위반 법정동 코드 , (SELECT tgt.legaldong_code
FROM tb_cmm_legaldong tgt
WHERE tgt.legaldong_nm = null
limit 1
)
, '' -- 특변단속구역 코드 , '' -- 특변단속구역 코드
, ecsd.gps_x , ecsd.gps_x
, ecsd.gps_y , ecsd.gps_y
@ -267,7 +270,7 @@
JOIN tb_cmm_file_detail tcfd JOIN tb_cmm_file_detail tcfd
ON tcfm.job_se_code = #{jobSeCode} ON tcfm.job_se_code = #{jobSeCode}
AND tcfm.file_job_id = CONCAT(#{interfaceSeqN}, #{ctznSttemntDetailSn}) AND tcfm.file_job_id = CONCAT(#{interfaceSeqN}, #{ctznSttemntDetailSn})
AND tcfm.file_mastr_id = tcfd.file_mastr_id) -- 이미지 매수 FIXME: 매핑테이블 정의후 반영 (위반 내역 코드) AND tcfm.file_mastr_id = tcfd.file_mastr_id) -- 이미지 매수
, ecsd.vhcle_no , ecsd.vhcle_no
, #{regltProcessSttusCode} -- 단속:10, 서손:11 , #{regltProcessSttusCode} -- 단속:10, 서손:11
, #{registSeCode} , #{registSeCode}
@ -280,6 +283,7 @@
AND ecsd.interface_seq_n = ecs.interface_seq_n AND ecsd.interface_seq_n = ecs.interface_seq_n
</insert> </insert>
<insert id="insertRtErppFromCtznStmt"> <insert id="insertRtErppFromCtznStmt">
/* ec-ctzn-sttemnt-mysql-mapper|insertRtErppFromCtznStmt-시민신고 서손 생성|julim */ /* ec-ctzn-sttemnt-mysql-mapper|insertRtErppFromCtznStmt-시민신고 서손 생성|julim */
<selectKey resultType="string" keyProperty="erppId" order="BEFORE"> <selectKey resultType="string" keyProperty="erppId" order="BEFORE">

@ -177,10 +177,9 @@
WHERE tgt.code_id = 'FIM005' WHERE tgt.code_id = 'FIM005'
AND tgt.code_nm = #{violtLrgNm} AND tgt.code_nm = #{violtLrgNm}
) -- 위반 법규 코드 : FIXME : 코드 확인 필요 ) -- 위반 법규 코드 : FIXME : 코드 확인 필요
, (SELECT tgt.code , (SELECT tgt.mapng_code
FROM xit_cmmn_detail_code tgt FROM tb_cmm_code_mapng tgt
WHERE tgt.code_id = 'FIM004' WHERE tgt.transr_code_nm = #{violtDtlsNm}
AND tgt.code_nm = #{violtDtlsNm}
) -- FIXME: 매핑테이블 정의후 반영 (위반 내역 코드) ) -- FIXME: 매핑테이블 정의후 반영 (위반 내역 코드)
, '' -- 위반 내역 기타 내용 , '' -- 위반 내역 기타 내용
, #{regltPlace} -- reglt_place , #{regltPlace} -- reglt_place
@ -190,10 +189,9 @@
WHERE tgt.legaldong_nm = #{regltDongNm} WHERE tgt.legaldong_nm = #{regltDongNm}
limit 1 limit 1
) -- 위반 법정동 코드 ) -- 위반 법정동 코드
, (SELECT tgt.code , (SELECT tgt.mapng_code
FROM xit_cmmn_detail_code tgt FROM tb_cmm_code_mapng tgt
WHERE tgt.code_id = 'FIM005' WHERE tgt.transr_code_nm = #{regltSpeclZoneNm}
AND tgt.code_nm = #{regltSpeclZoneNm}
) -- 특변단속구역 코드 ) -- 특변단속구역 코드
, gps_x , gps_x
, gps_y , gps_y
@ -211,7 +209,7 @@
JOIN tb_cmm_file_detail tcfd JOIN tb_cmm_file_detail tcfd
ON tcfm.job_se_code = #{jobSeCode} ON tcfm.job_se_code = #{jobSeCode}
AND tcfm.file_job_id = #{extrlRegltCntcId} AND tcfm.file_job_id = #{extrlRegltCntcId}
AND tcfm.file_mastr_id = tcfd.file_mastr_id) -- 이미지 매수 FIXME: 매핑테이블 정의후 반영 (위반 내역 코드) AND tcfm.file_mastr_id = tcfd.file_mastr_id) -- 이미지 매수
, vhcle_no , vhcle_no
, #{regltProcessSttusCode} -- 단속:10, 서손:11 , #{regltProcessSttusCode} -- 단속:10, 서손:11
, #{registSeCode} , #{registSeCode}

@ -43,10 +43,7 @@ Date Author Description
} }
</style> </style>
<c:set var="isUpdate" value="${!empty infoDTO.regltId}"/> <c:set var="isImpose" value='${infoDTO.regltProcessSttusCode eq "10"}'/>
<c:set var="bizName" value="주민 신고"/>
<div class="popup" style="min-width: 100px;"> <div class="popup" style="min-width: 100px;">
<div class="popup_inner inner_02"> <div class="popup_inner inner_02">
@ -249,9 +246,14 @@ Date Author Description
<img src="/resources/images/btn/double_next.png"/> <img src="/resources/images/btn/double_next.png"/>
</button> </button>
</div> </div>
<c:if test="${!isImpose}">
<a href="#" class="btn blue" id="btnImposeTgt">부과대상</a> <a href="#" class="btn blue" id="btnImposeTgt">부과대상</a>
<a href="#" class="btn blue" id="btnEnlight">계도처리</a> <a href="#" class="btn blue" id="btnEnlight">계도처리</a>
<a href="#" class="btn blue" id="btnDisallow">서손처리</a> <a href="#" class="btn blue" id="btnDisallow">서손처리</a>
</c:if>
<c:if test="${isImpose}">
<a href="#" class="btn blue" id="btnImpose">부과</a>
</c:if>
<a href="#" id='btnClose' class="btn lightgray">닫기</a> <a href="#" id='btnClose' class="btn lightgray">닫기</a>
</div> </div>
@ -294,7 +296,7 @@ Date Author Description
); );
cmmImgDownload('#imgList', res.attchFiles, fnPopupBiz.pagePopup, true, '60px'); cmmImgDownload('#imgList', res.attchFiles, fnPopupBiz.pagePopup, true, '60px');
window.opener.pageNav.reloadNav($('#prev'), $('#next'), $('span#totCnt')) window.opener.ARR_NAV[window.opener.CUR_TAB_IDX].reloadNav($('#prev'), $('#next'), $('span#totCnt'))
fnPopupBiz.resetDisplay(res.ctznDTO?.cvplRceptNo); fnPopupBiz.resetDisplay(res.ctznDTO?.cvplRceptNo);
setFormData(document.querySelector('#frm'), {...res.ctznDTO, ...res.payerDTO, ...res.infoDTO}); setFormData(document.querySelector('#frm'), {...res.ctznDTO, ...res.payerDTO, ...res.infoDTO});
@ -513,13 +515,14 @@ Date Author Description
* event * event
**************************************************************************/ **************************************************************************/
$(() => { $(() => {
$(window).on("unload", function (e) { // $(window).on("unload", function (e) {
window.opener?.unblockUI(); // window.opener?.unblockUI();
window.opener?.callbackSearch(); // window.opener?.callbackSearch();
return null; // return null;
}); // });
$("#btnClose").on('click', () => { $("#btnClose").on('click', () => {
window.opener?.callbackSearch();
window.close() window.close()
}); });
@ -556,27 +559,29 @@ Date Author Description
} }
}); });
/* $('#btnImpose').on('click', (e) => {
$('#btnEnlight').on('click', () => { alert('과태료 시스템 인터페이스(세올)');
fnPopupBiz.saveEnlight(); // let saveData = fnPopupBiz.getSaveData();
//
// cmmAjax({
// url: '/fims/biz/cmm/saveImposeTgt.do'
// ,contentType: 'application/json'
// ,data: JSON.stringify(saveData)
// })
}); });
$('#btnDisallow').on('click', () => {
fnPopupBiz.saveDisallow();
});
*/
$('#btnRemove').on('click', () => { $('#btnRemove').on('click', () => {
fnPopupBiz.remove(); fnPopupBiz.remove();
}); });
$('#prev').on('click', () => { $('#prev').on('click', () => {
window.opener.pageNav.onClickNavBtn('prev', (gridInfo) => { window.opener.ARR_NAV[window.opener.CUR_TAB_IDX].onClickNavBtn('prev', (gridInfo) => {
fnPopupBiz.search(gridInfo.curRowData) fnPopupBiz.search(gridInfo.curRowData)
}); });
}) })
$('#next').on('click', () => { $('#next').on('click', () => {
window.opener.pageNav.onClickNavBtn('next', (gridInfo) => { window.opener.ARR_NAV[window.opener.CUR_TAB_IDX].onClickNavBtn('next', (gridInfo) => {
fnPopupBiz.search(gridInfo.curRowData); fnPopupBiz.search(gridInfo.curRowData);
}); });
}); });
@ -591,7 +596,7 @@ Date Author Description
fnPopupBiz.downloadImg(); fnPopupBiz.downloadImg();
fnPopupBiz.resetDisplay('${ctznDTO.cvplRceptNo}'); fnPopupBiz.resetDisplay('${ctznDTO.cvplRceptNo}');
window.opener.pageNav.reloadNav($('#prev'), $('#next'), $('span#totCnt')) window.opener.ARR_NAV[window.opener.CUR_TAB_IDX].reloadNav($('#prev'), $('#next'), $('span#totCnt'))
}); });
</script> </script>

@ -545,7 +545,7 @@ Date Author Description
var imageEditorPopup = (flag, params) => fnPopupBiz.pagePopup(flag, params); var imageEditorPopup = (flag, params) => fnPopupBiz.pagePopup(flag, params);
var callbackReloadImage = () => fnPopupBiz.downloadImg(); var callbackReloadImage = () => fnPopupBiz.downloadImg();
let orgData; let orgData;
const ARR_INSTANCE = [null,null,null,null,null]; const ARR_GRID = [null,null,null,null,null];
let CUR_TAB_SEQ = 0; let CUR_TAB_SEQ = 0;
//var callbackSearch = () => fnPopupBiz.search(); //var callbackSearch = () => fnPopupBiz.search();
@ -822,19 +822,19 @@ Date Author Description
minBodyHeight: 250, minBodyHeight: 250,
bodyHeight: 250, bodyHeight: 250,
}); });
ARR_INSTANCE[0] = TuiGrid.of(tab0Options, tab0Datasource, (res) => { ARR_GRID[0] = TuiGrid.of(tab0Options, tab0Datasource, (res) => {
ARR_TOTCNT[0] = res.data.pagination.totalCount; ARR_TOTCNT[0] = res.data.pagination.totalCount;
}); });
ARR_INSTANCE[1] = TuiGrid.of(tab1Options, tab0Datasource, (res) => { ARR_GRID[1] = TuiGrid.of(tab1Options, tab0Datasource, (res) => {
ARR_TOTCNT[1] = res.data.pagination.totalCount; ARR_TOTCNT[1] = res.data.pagination.totalCount;
}); });
ARR_INSTANCE[2] = TuiGrid.of(tab2Options, tab0Datasource, (res) => { ARR_GRID[2] = TuiGrid.of(tab2Options, tab0Datasource, (res) => {
ARR_TOTCNT[2] = res.data.pagination.totalCount; ARR_TOTCNT[2] = res.data.pagination.totalCount;
}); });
ARR_INSTANCE[3] = TuiGrid.of(tab3Options, tab0Datasource, (res) => { ARR_GRID[3] = TuiGrid.of(tab3Options, tab0Datasource, (res) => {
ARR_TOTCNT[3] = res.data.pagination.totalCount; ARR_TOTCNT[3] = res.data.pagination.totalCount;
}); });
ARR_INSTANCE[4] = TuiGrid.of(tab4Options, tab0Datasource, (res) => { ARR_GRID[4] = TuiGrid.of(tab4Options, tab0Datasource, (res) => {
ARR_TOTCNT[4] = res.data.pagination.totalCount; ARR_TOTCNT[4] = res.data.pagination.totalCount;
}); });
//tab 클릭 이벤트 //tab 클릭 이벤트
@ -843,7 +843,7 @@ Date Author Description
var tabbb = $('#popupTabs').children('div').not($('#tabs_'+tab)); var tabbb = $('#popupTabs').children('div').not($('#tabs_'+tab));
$('#tabs_'+tab).show(500); $('#tabs_'+tab).show(500);
$('#sch_tab_id').val(tab); $('#sch_tab_id').val(tab);
//ARR_INSTANCE[tab].refreshLayout(); //ARR_GRID[tab].refreshLayout();
});*/ });*/
} }

@ -0,0 +1,112 @@
<%--
================================================================================
File : /fims/biz/cmm/cmmEnlightDisallowPopup.jsp
Name : 서손 / 계도 처리 팝업 - 단속관리>단속현황관리
Auth : lim.jong.uk
Date : 2022-02-03
Desc : 서손 / 계도 처리 팝업
================================================================================
Date Author Description
================================================================================
================================================================================
--%>
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ include file="/WEB-INF/jsp/framework/taglibs.jsp"%>
<style>
#regltProcessSttusCode {
width: 29%;
color: #2a48ff;
background-color: #d8e7ff;
font-weight: bold;
}
#registSeCode {
color: #2a48ff;
background-color: #d8e7ff;
}
.act_bg_color {
background-color: #d8e7ff; !important;
}
.bg_red_color {
background-color: darkred;
}
select[name=imageSeCode] {
width: 68%;
}
select[name=vhctyAsortCode] {
width: 30%;
}
select[name=payerSeCode] {
width: 25%;
}
</style>
<div class="popup" style="min-width: 100px;">
<div class="popup_inner" style="flex-direction: column">
<p class="pop_title" id="txtTitle">${txtTitle}</p>
<form>
<table class="tbl03">
<caption>위반정보 상세</caption>
<colgroup>
<col style="width: 20%;"/>
<col/>
</colgroup>
<tbody>
<tr>
<th>대상건수</th>
<td>
<input type="text" name="tgtCnt" title="대상건수" readonly/>
</td>
</tr>
</tbody>
</table>
</form>
<div class="popup_btn">
<div class="flr p_flr">
<a href="#" class="btn blue" id="btnSave">처리</a>
<a href="#" id='btnClose' class="btn lightgray">닫기</a>
</div>
</div>
</div>
</div>
<script defer type="text/javaScript">
/**************************************************************************
* Global Variable
**************************************************************************/
/* *******************************
* Biz function
******************************* */
const fnPopupBiz = {
}
/**************************************************************************
* event
**************************************************************************/
$(() => {
$("#btnClose").on('click', () => {
window.close()
});
$("#btnSave").on('click', () => {
alert(JSON.stringify(window.opener.IMPOSE_DATA))
window.close()
});
})
/**************************************************************************
* initialize
**************************************************************************/
$(document).ready(function(){
$('input[name=tgtCnt]').val(window.opener.IMPOSE_DATA.length);
});
</script>

@ -0,0 +1,502 @@
<%--
================================================================================
File : /fims/biz/rt/rtCrackdownExtrInterfaceMgtForm.jsp
Name : 외부자료연계 - 단속관리>단속현황관리
Auth : lim.jong.uk
Date : 2022-01-26
Desc : 단속현황관리 외부자료 연계탭
================================================================================
Date Author Description
================================================================================
================================================================================
--%>
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>
<%@ include file="/WEB-INF/jsp/framework/taglibs.jsp" %>
<style>
#regltProcessSttusCode1 {
width: 29%;
color: #2a48ff;
background-color: #d3dfff;
font-weight: bold;
padding-left: 6px;
font-size: 11px;
}
</style>
<form id="frmSearch1" name="frmSearch1">
<div class="search">
<div class="detail_02" style="display: block;">
<p class="box_title">상세검색</p>
<ul class="detailGroup_02">
<select id="sch_date_opt1" name="sch_date_opt1" class="selectBox">
<option value="regltDe">단속일자</option>
<option value="registDt">등록일자</option>
</select>
<span class="cal-box">
<input id="sch_date_from1" class="inputText cal" name="sch_date_from1" type="text" title="시작 날짜 선택">
<button type="button" name="sch_date_from1" class="calendar"><span class="ico far fa-calendar-alt">
<img style="width:18px;" src="${ctx}/resources/biz/content/images/common/main/calendar.png"/><em>달력</em></span>
</button>
~
<input id="sch_date_to1" class="inputText cal" name="sch_date_to1" type="text" title="종료 날짜 선택" placeholder="날짜를 선택하세요">
<button type="button" name="sch_date_to1" class="calendar"><span class="ico far fa-calendar-alt">
<img style="width:18px;" src="${ctx}/resources/biz/content/images/common/main/calendar.png"/><em>달력</em></span>
</button>
</span>
<code:select id="regltProcessSttusCode1" name="regltProcessSttusCode1" codeId="FIM010" defaultSelect="10" title="단속처리상태" cls="selectBoxTotal act_color" alt="단속처리상태" disabled="false"/>
<br/>
<label class="title">시스템구분</label>
<code:radio codeId="FIM001" id="sysCode1" name="sysCode1" defaultSelect='${sessionScope.XitLoginSession.orgnztId}' onclick="fnTab0Biz.search()" cls="radioBox" alt="시스템구분"/>
<br/>
<label class="title">단속구분</label>
<code:radio type="CMM_ETC2" id="regltSeCode1" name="regltSeCode1" codeId="FIM002" onclick="fnTab1Biz.search()" cls="radioBox" alt="단속구분" />
<!-- 데이타 확인 여부 : 차종분류코드가 있는지 여부로 판별 -->
<!--
<select id="cnfmYn" name="cnfmYn" title="확인여부" class="selectBox">
<option value="">전체</option>
<option value="Y">확인</option>
<option value="N" selected>미확인</option>
</select>
-->
<br/>
<select id="sch_opt1" name="sch_opt1" class="selectBox">
<option value="vhcleNo1">차량번호</option>
</select>
<input type="text" id="sch_word1" name="sch_word1" value="">
<span class="flr">
<a href="#" class="btn blue" id="btnSearch1" title="연계파일등록">검색</a>
<!-- <button type="button" class="btnSearch" id="btnSearch" name="btnSearch">검색</button>-->
<a href="#" class="btn darkgray" id="btnRegist1" title="연계파일등록">연계파일처리</a>
</span>
</ul>
</div>
</div>
</form>
<!-- //검색 -->
<div class="page_btn">
<span class="fll">
<div class="list clearfix" id="totCnt">전체 ㅣ <span></span></div>
</span>
<!--
<span class="flr">
<a href="#" class="btn darkgray" id="btnRegist" title="연계파일등록">연계파일처리</a>
</span>
-->
</div>
<!-- //버튼 및 페이지정보 -->
<!-- 데이터 출력 -->
<div id="grid_t1"></div>
<%--<script type="text/javascript" src="${pageContext.request.contextPath}/resources/biz/common/js/popupPageNavigation.js" defer></script>--%>
<script type="text/javaScript">
/**************************************************************************
* Global Variable
**************************************************************************/
popup = null;
let GRID11 = null;
let curClickColName1;
var callbackSearch1 = () => fnTab1Biz.search();
var pageNav1 = null;
/* *******************************
* Biz function
******************************* */
const fnTab1Biz = {
search: () => {
//TODO:: 검색버튼 클릭시 1st page 검색 이동
GRID1.getPagination().movePageTo(1);
}
,pagePopup: function(flag, params){
let url;
let popTitle;
let popOption;
switch (flag) {
case "total":
url = fimsApiUrl.POPUP_CRACKDOWN_TOTAL;
popOption = {width: 1200, height:900};
popTitle = "개별총정보";
break;
case "detail":
url = fimsApiUrl.POPUP_CRACKDOWN_EDIT;
popOption = {width: 1200, height:900};
popTitle = "정보 변경";
break;
case "file":
url = fimsApiUrl.POPUP_EXTR_CRACKDOWN_FILE_SEL;
popOption = {width: 900, height:750};
popTitle = "외부연계 데이타 선택";
break;
default:
break;
}
<%--
$.blockUI({message: '' ,css: {width: '100%', height: '100%'}
//모달창 외부 클릭시 닫기
,onOverlayClick: () => {
$.unblockUI();
popup?.self?.close();
}
});
--%>
popup = CmmPopup.open(url, params, popOption, popTitle);
}
,onClickGrid: function(props){
const selColumn = props.columnInfo.name;
curClickColName1 = selColumn;
switch (selColumn){
case 'vhcleNo':
const gridDatas = GRID1.store.data.rawData.map(d => {
return {regltSeCode: d.regltSeCode, regltId: d.regltId}
})
pageNav1 = new PageNavigation(GRID1, gridDatas, props.rowKey);
fnTab1Biz.pagePopup('total', pageNav1.gridInfo.curRowData);
break;
case 'cvplRceptNo':
const rowDatas = GRID1.store.data.rawData.map(d => {
return {regltSeCode: d.regltSeCode, regltId: d.regltId}
})
pageNav1 = new PageNavigation(GRID1, rowDatas, props.rowKey);
fnTab1Biz.pagePopup('detail', pageNav1.gridInfo.curRowData);
break;
default:
break;
}
}
};
/**************************************************************************
* event
**************************************************************************/
$(() => {
$('in').change(() => fnTab1Biz.search());
$('#btnSearch1').on('click', () => fnTab1Biz.search());
$('#btnRegist1').on('click', () => {
fnTab1Biz.pagePopup('file');
});
});
/* *******************************
* Grid
******************************* */
const initTab1Grid = () => {
const gridColumns = [
{
header: '등록구분',
name: 'registSeCode',
minWidth: 60,
sortable: false,
align: 'center',
formatter: 'listItemText',
disabled: true,
editor: {
type: "select",
options: {
listItems: ComboCodeData.registSeCode
}
},
},
{
header: '접수번호',
name: 'cvplRceptNo',
minWidth: 120,
sortable: false,
align: 'center',
renderer: {
type: CustomButtonRenderer,
options: {
formatter: (props)=>{
const rowData = props.grid.getRow(props.rowKey);
return {
formatter: rowData.regltSeCode === '09' ? rowData.cvplRceptNo : rowData.extrlRegltCntcId
,element: "text"
}
}
,eventFunction: fnTab1Biz.onClickGrid
,eventType: "click"
}
}
},
{
header: '차량번호',
name: 'vhcleNo',
minWidth: 100,
sortable: false,
align: 'center',
renderer: {
type: CustomButtonRenderer,
options: {
formatter: (props)=>{
return {
formatter: props.grid.getRow(props.rowKey).vhcleNo
,element: "text"
}
}
,eventFunction: fnTab1Biz.onClickGrid
,eventType: "click"
}
}
},
{
header: '신고자',
name: 'cvplApplcntNm',
minWidth: 80,
sortable: false,
align: 'center'
},
{
header: '신고방법',
name: 'regltSeCode',
minWidth: 100,
sortable: false,
align: 'center',
formatter: 'listItemText',
//TODO: 편집불가인 경우 disabled: true???
//editable: false,
disabled: true,
editor: {
type: "select",
options: {
listItems: [...ComboCodeData.regltSeCode]
}
},
},
{
header: '위반내용',
name: 'violtDtlsNm',
minWidth: 80,
sortable: false,
align: 'center',
},
//FIXME : 위반내용 코드로 대치해야
// {
// header: '위반내용',
// name: 'violtDtlsCode',
// minWidth: 80,
// sortable: false,
// align: 'center',
// formatter: 'listItemText',
// disabled: true,
// editor: {
// type: "select",
// options: {
// listItems: ComboCodeData.violtDtlsCode
// }
// },
// },
{
header: '담당자',
name: 'dutyIdV',
minWidth: 80,
sortable: false,
align: 'center'
},
{
header: '전화번호',
name: 'pcdTelV',
minWidth: 80,
sortable: false,
align: 'center'
},
{
header: '접수일자',
name: 'cvplRceptDt',
minWidth: 80,
sortable: false,
align: 'center',
formatter({value}) {
return setDateFmt(value); //
}
},
{
header: '처리기한',
name: 'cvplProcessPd',
minWidth: 80,
sortable: false,
align: 'center',
formatter({value}) {
return setDateFmt(value); //
}
},
{
header: '위반일시',
name: 'regltDeTime',
minWidth: 120,
sortable: false,
align: 'center',
formatter({value}) {
return setDateTimeFmt(value); //
}
},
{
header: '첨부',
name: 'imageSeCode',
minWidth: 60,
sortable: false,
align: 'center',
formatter: 'listItemText',
disabled: true,
editor: {
type: "select",
options: {
listItems: ComboCodeData.imageSeCode
}
},
},
{
header: '사진',
name: 'imageNmrs',
minWidth: 50,
sortable: false,
align: 'center',
},
{
header: '서손사유',
name: 'erppResnDetail', //erppSeCode
width: 80,
sortable: false,
align: 'center',
},
{
header: '특기사항',
name: 'spcmntMatter',
width: 80,
sortable: false,
align: 'center',
},
/*
{
header: '위반장소',
name: 'regltPlace',
minWidth: 200,
sortable: false,
//align: 'center'
},
{
header: '처리상태',
name: 'regltProcessSttusCode',
minWidth: 80,
sortable: false,
align: 'center',
formatter: 'listItemText',
//TODO: 편집불가인 경우 disabled: true???
//editable: false,
disabled: true,
editor: {
type: "select",
options: {
listItems: ComboCodeData.regltProcessSttusCode
}
},
},
{
header: '수납금액',
name: 'rcivAmount',
minWidth: 100,
sortable: false,
align: 'right'
},
{
header: '위반횟수',
name: 'violtCo',
minWidth: 80,
sortable: false,
align: 'right'
},
{
header: '등록일시',
name: 'registDt',
minWidth: 150,
sortable: false,
align: 'center',
formatter({value}) {
return setDateTimeFmt(value); //
}
},
{
header: '최종처리일시',
name: 'last_process_dt',
minWidth: 150,
sortable: false,
align: 'center',
formatter({value}) {
return setDateTimeFmt(value);
}
}
*/
];
const gridOptions = {
el: 'grid_t1',
rowHeaders: ['rowNum'],
columns: gridColumns,
columnOptions: {
frozenCount: 5
}
,pageOptions: {
perPage: 1000
}
};
const gridDatasource = {
//initialRequest: true, // 화면 load시 조회 안함 - default
api: {
readData: {
url: fimsApiUrl.FIND_CRACKDOWNS
,serializer: (params) => {
const param = {
sch_date_opt: $('#sch_date_opt1').val()
,sch_date_from: $('#sch_date_from1').val()
,sch_date_to: $('#sch_date_to1').val()
,[$('#sch_opt1').val()]: $('#sch_word1').val()
,sysCode: $('input:radio[name=sysCode1]:checked').val()
,regltSeCode: $('input:radio[name=regltSeCode1]:checked').val()
,regltProcessSttusCode: $('#regltProcessSttusCode1').val()
//,cnfmYn: $('input[name=regltYn]:checked').val()
,cnfmYn: $('#cnfmYn1').val()
}
return getPageParam(param, params);
}
}
}
};
GRID1 = TuiGrid.of(gridOptions, gridDatasource, (res) => {
const gridInfo = pageNav1?.gridInfo;
if(gridInfo && gridInfo?.pageMove) {
const datas = res.data?.contents.map(d => {
return {regltId: d.regltId, regltSeCode: d.regltSeCode}
});
pageNav1.resetGrid(res, datas, (pagiNavigation)=>{
pageNav1 = pagiNavigation;
if(curClickColName1 === 'vhcleNo') fnTab1Biz.pagePopup('total', pageNav1.gridInfo.curRowData);
else fnTab1Biz.pagePopup('detail', pageNav1.gridInfo.curRowData);
})
}
});
};
/**************************************************************************
* initialize
**************************************************************************/
$(document).ready(function(){
$('#sch_date_from1').datepicker('setDate', DateUtil.getDateDay(-5475).date);
$('#sch_date_to1').datepicker('setDate', new Date());
initTab1Grid();
});
</script>

@ -282,6 +282,22 @@ Date Author Description
sortable: false, sortable: false,
align: 'center', align: 'center',
}, },
//FIXME : 위반내용 코드로 대치해야
// {
// header: '위반내용',
// name: 'violtDtlsCode',
// minWidth: 80,
// sortable: false,
// align: 'center',
// formatter: 'listItemText',
// disabled: true,
// editor: {
// type: "select",
// options: {
// listItems: ComboCodeData.violtDtlsCode
// }
// },
// },
{ {
header: '담당자', header: '담당자',
name: 'dutyIdV', name: 'dutyIdV',
@ -439,13 +455,15 @@ Date Author Description
}; };
const gridDatasource = { const gridDatasource = {
initialRequest: true, // 화면 load시 조회 안함 - default //initialRequest: true, // 화면 load시 조회 안함 - default
api: { api: {
readData: { readData: {
// url: fimsApiUrl.FIND_CCTV_EC_EXTRL_REGLT_CNTCS // url: fimsApiUrl.FIND_CCTV_EC_EXTRL_REGLT_CNTCS
// ,serializer: (params) => fnAddPageInfo(document.frmSearch, params) // ,serializer: (params) => fnAddPageInfo(document.frmSearch, params)
url: fimsApiUrl.FIND_CRACKDOWNS url: fimsApiUrl.FIND_CRACKDOWNS
,serializer: (params) => { ,serializer: (params) => {
console.log($('input:radio[name=sysCode]:checked').val())
//alert($('input:radio[name=sysCode]:checked').val())
const param = { const param = {
sch_date_opt: $('#sch_date_opt').val() sch_date_opt: $('#sch_date_opt').val()
,sch_date_from: $('#sch_date_from').val() ,sch_date_from: $('#sch_date_from').val()
@ -457,6 +475,7 @@ Date Author Description
//,cnfmYn: $('input[name=regltYn]:checked').val() //,cnfmYn: $('input[name=regltYn]:checked').val()
,cnfmYn: $('#cnfmYn').val() ,cnfmYn: $('#cnfmYn').val()
} }
console.log(param)
return getPageParam(param, params); return getPageParam(param, params);
} }
} }

@ -17,25 +17,94 @@ Date Author Description
<div id="tabs"> <div id="tabs">
<ul> <ul>
<li><a href="#tabs_0" id="0">단속초기자료</a></li> <li><a href="#tabs_0" id="0">단속초기자료</a></li>
<li><a href="#tabs_1" id="1">처리상태별</a></li> <li><a href="#tabs_1" id="1">부과</a></li>
<li><a href="#tabs_2" id="2">발송/반송</a></li> <li><a href="#tabs_2" id="2">답변</a></li>
<li><a href="#tabs_3" id="3">현황조회</a></li> <%-- <li><a href="#tabs_3" id="3">현황조회</a></li>--%>
</ul> </ul>
<!-- tab 공통 -->
<form id="frmSearch" name="frmSearch">
<div class="search">
<div class="detail_02" style="display: block;">
<fieldset>
<legend>test</legend>
<p class="box_title">상세검색</p>
<ul class="detailGroup_02">
<select id="sch_date_opt" name="sch_date_opt" class="selectBox">
<option value="regltDe">단속일자</option>
<option value="registDt">등록일자</option>
</select>
<span class="cal-box">
<input id="sch_date_from" class="inputText cal" name="sch_date_from" type="text" title="시작 날짜 선택">
<button type="button" name="sch_date_from" class="calendar"><span class="ico far fa-calendar-alt">
<img style="width:18px;" src="${ctx}/resources/biz/content/images/common/main/calendar.png"/><em>달력</em></span>
</button>
~
<input id="sch_date_to" class="inputText cal" name="sch_date_to" type="text" title="종료 날짜 선택" placeholder="날짜를 선택하세요">
<button type="button" name="sch_date_to" class="calendar"><span class="ico far fa-calendar-alt">
<img style="width:18px;" src="${ctx}/resources/biz/content/images/common/main/calendar.png"/><em>달력</em></span>
</button>
</span>
<code:select id="regltProcessSttusCode" name="regltProcessSttusCode" codeId="FIM010" defaultSelect="01" title="단속처리상태" cls="selectBoxTotal act_color" alt="단속처리상태" disabled="false"/>
<br/>
<label class="title">시스템구분</label>
<code:radio codeId="FIM001" id="sysCode" name="sysCode" defaultSelect='${sessionScope.XitLoginSession.orgnztId}' onclick="fnBiz.search()" cls="radioBox" alt="시스템구분"/>
<br/>
<label class="title">단속구분</label>
<code:radio type="CMM_ETC2" id="regltSeCode" name="regltSeCode" codeId="FIM002" onclick="fnBiz.search()" cls="radioBox" alt="단속구분" />
<!-- 데이타 확인 여부 : 차종분류코드가 있는지 여부로 판별 -->
<!--
<select id="cnfmYn" name="cnfmYn" title="확인여부" class="selectBox">
<option value="">전체</option>
<option value="Y">확인</option>
<option value="N" selected>미확인</option>
</select>
-->
<br/>
<select id="sch_opt" name="sch_opt" class="selectBox">
<option value="vhcleNo">차량번호</option>
</select>
<input type="text" id="sch_word" name="sch_word" value="">
<span class="flr">
<a href="#" class="btn blue" id="btnSearch" title="연계파일등록">검색</a>
<!-- <button type="button" class="btnSearch" id="btnSearch" name="btnSearch">검색</button>-->
<a href="#" class="btn darkgray" id="btnExtrRegist" title="연계파일등록">연계파일처리</a>
</span>
</ul>
</fieldset>
</div>
</div>
</form>
<!-- //검색 -->
<div class="page_btn">
<span class="fll">
<div class="list clearfix" id="totCnt">전체 ㅣ <span></span></div>
<span class="flr">
<a href="#" class="btn blue" id="btnImpose" title="부과(세올연계)">부과</a>
</span>
</span>
</div>
<!-- tab 공통 -->
<div id="tabs_0" style="flex-direction: column"> <div id="tabs_0" style="flex-direction: column">
<div id="tabs_t0"> <div id="tabs_t0">
<%@include file="/WEB-INF/jsp/fims/biz/rt/rtCrackdownExtrInterfaceMgtForm.jsp" %> <div id="grid"></div>
<%-- <jsp:include page="/WEB-INF/jsp/fims/biz/rt/rtCrackdownExtrInterfaceMgtForm.jsp" flush="true"/>--%>
</div> </div>
</div> </div>
<div id="tabs_1"> <div id="tabs_1">
<div id="tabs_t1"></div> <div id="tabs_t1">
<div id="grid_t1"></div>
</div>
</div> </div>
<div id="tabs_2"> <div id="tabs_2">
<div id="tabs_t2"></div> <div id="tabs_t2">
<div id="grid_t2"></div>
</div> </div>
<div id="tabs_3">
<div id="tabs_t3"></div>
</div> </div>
</div> </div>
</div> </div>
@ -45,40 +114,394 @@ Date Author Description
/************************************************************************** /**************************************************************************
* Global Variable * Global Variable
**************************************************************************/ **************************************************************************/
let CUR_TAB_IDX = 0; var CUR_TAB_IDX = 0;
let ARR_TOTCNT = 0; var ARR_GRID = [];
//let orgData; var ARR_NAV = [];
//let downloadImgParam; var IMPOSE_DATA;
//var callbackSearch = () => fnBiz.search();
//var callbackReloadImage = () => fnBiz.downloadImg(); let ARR_TOTCNT = [0, 0];
let ARR_PRC_STS_CODE = ['01', '10']
popup = null;
let curClickColName;
var callbackSearch = () => fnBiz.search();
/******************************* /*******************************
* Biz function * Biz function
*******************************/ *******************************/
// tab 전체
const fnBiz = {
search: () => {
//TODO:: 검색버튼 클릭시 1st page 검색 이동
//ARR_GRID[CUR_TAB_IDX].getPagination().movePageTo(1);
ARR_GRID[CUR_TAB_IDX].reloadData();
//ARR_GRID[CUR_TAB_IDX].refreshLayout()
}
,tabChangReload: () => {
ARR_GRID[CUR_TAB_IDX].refreshLayout()
}
,getParams: () => {
return {
sch_date_opt: $('#sch_date_opt').val()
,sch_date_from: $('#sch_date_from').val()
,sch_date_to: $('#sch_date_to').val()
,[$('#sch_opt').val()]: $('#sch_word').val()
,sysCode: $('input:radio[name=sysCode]:checked').val()
,regltSeCode: $('input:radio[name=regltSeCode]:checked').val()
,regltProcessSttusCode: CUR_TAB_IDX === 2 ? 'NON-INIT' : $('#regltProcessSttusCode').val()
//,cnfmYn: $('input[name=regltYn]:checked').val()
,cnfmYn: $('#cnfmYn').val()
}
}
,pagePopup: function(flag, params){
let url;
let popTitle;
let popOption;
switch (flag) {
case "total":
url = fimsApiUrl.POPUP_CRACKDOWN_TOTAL;
popOption = {width: 1200, height:900};
popTitle = "개별총정보";
break;
case "detail":
url = fimsApiUrl.POPUP_CRACKDOWN_EDIT;
popOption = {width: 1200, height:900};
popTitle = "정보 변경";
break;
case "file":
url = fimsApiUrl.POPUP_EXTR_CRACKDOWN_FILE_SEL;
popOption = {width: 900, height:750};
popTitle = "외부연계 데이타 선택";
break;
case "impose":
url = fimsApiUrl.POPUP_IMPOSE;
popOption = {width: 500, height: 400};
popTitle = "과태료 시스템 등록";
break;
default:
break;
}
popup = CmmPopup.open(url, params, popOption, popTitle);
}
,onClickGrid: function(props){
const selColumn = props.columnInfo.name;
curClickColName = selColumn;
switch (selColumn){
case 'vhcleNo':
const gridDatas = ARR_GRID[CUR_TAB_IDX].store.data.rawData.map(d => {
return {regltSeCode: d.regltSeCode, regltId: d.regltId, regltProcessSttusCode: d.regltProcessSttusCode}
})
ARR_NAV[CUR_TAB_IDX] = new PageNavigation(ARR_GRID[CUR_TAB_IDX], gridDatas, props.rowKey);
fnBiz.pagePopup('total', ARR_NAV[CUR_TAB_IDX].gridInfo.curRowData);
break;
case 'cvplRceptNo':
const rowDatas = ARR_GRID[CUR_TAB_IDX].store.data.rawData.map(d => {
return {regltSeCode: d.regltSeCode, regltId: d.regltId, regltProcessSttusCode: d.regltProcessSttusCode}
})
ARR_NAV[CUR_TAB_IDX] = new PageNavigation(ARR_GRID[CUR_TAB_IDX], rowDatas, props.rowKey);
fnBiz.pagePopup('detail', ARR_NAV[CUR_TAB_IDX].gridInfo.curRowData);
break;
default:
break;
}
}
,resetBtn: function() {
switch(CUR_TAB_IDX){
case 0:
$('#btnExtrRegist').show();
$('#regltProcessSttusCode').show();
$('input:radio[name=regltSeCode]').prop('disabled', false);
break;
case 1:
$('#btnExtrRegist').hide();
$('#regltProcessSttusCode').show();
$('input:radio[name=regltSeCode]').prop('disabled', false);
break;
case 2:
$('#btnExtrRegist').hide();
$('#regltProcessSttusCode').hide();
$('input:radio[name=regltSeCode]').val('09').prop('checked', true);
$('input:radio[name=regltSeCode]').prop('disabled', true);
break;
}
}
};
const fnTab0Biz = {
};
/************************************************************************** /**************************************************************************
* event * event
**************************************************************************/ **************************************************************************/
$(() => { $(() => {
$("#tabs").on("click", "li", function () { $("#tabs").on("click", "li", function () {
// CUR_TAB_IDX = parseInt($("#tabs .ui-tabs-active a").attr("id")); CUR_TAB_IDX = parseInt($("#tabs .ui-tabs-active a").attr("id"));
// $('span#totCnt').text(ARR_TOTCNT[CUR_TAB_IDX]); $('#totCnt span').text(ARR_TOTCNT[CUR_TAB_IDX]);
// $('#regltProcessSttusCode').val(ARR_PRC_STS_CODE[CUR_TAB_IDX]).prop('selected', true);
// if(ARR_INSTANCE[CUR_TAB_IDX]) ARR_INSTANCE[CUR_TAB_IDX].refreshLayout();
if(ARR_GRID[CUR_TAB_IDX]) ARR_GRID[CUR_TAB_IDX].refreshLayout();
fnBiz.resetBtn();
}); });
$('#btnSearch').on('click', () => fnBiz.search());
$('#btnExtrRegist').on('click', () => {
fnBiz.pagePopup('file');
});
$('#btnImpose').on('click', () => {
const arrChecks = ARR_GRID[CUR_TAB_IDX].getCheckedRows();
if(arrChecks.length === 0){
alert('부과 처리 대상을 먼저 선택해 주세요');
return false;
}
IMPOSE_DATA = arrChecks.map((row) => {
return {
regltId: row.regltId
,cvplRceptNo: row.cvplRceptNo
}
})
fnBiz.pagePopup('impose');
});
}); });
/* ******************************* /* *******************************
* Grid * Grid
******************************* */ ******************************* */
const gridColumns = [
{
header: '등록구분',
name: 'registSeCode',
minWidth: 60,
sortable: false,
align: 'center',
formatter: 'listItemText',
disabled: true,
editor: {
type: "select",
options: {
listItems: ComboCodeData.registSeCode
}
},
},
{
header: '접수번호',
name: 'cvplRceptNo',
minWidth: 120,
sortable: false,
align: 'center',
renderer: {
type: CustomButtonRenderer,
options: {
formatter: (props)=>{
const rowData = props.grid.getRow(props.rowKey);
return {
formatter: rowData.regltSeCode === '09' ? rowData.cvplRceptNo : rowData.extrlRegltCntcId
,element: "text"
}
}
,eventFunction: fnBiz.onClickGrid
,eventType: "click"
}
}
},
{
header: '차량번호',
name: 'vhcleNo',
minWidth: 100,
sortable: false,
align: 'center',
renderer: {
type: CustomButtonRenderer,
options: {
formatter: (props)=>{
return {
formatter: props.grid.getRow(props.rowKey).vhcleNo
,element: "text"
}
}
,eventFunction: fnBiz.onClickGrid
,eventType: "click"
}
}
},
{
header: '신고자',
name: 'cvplApplcntNm',
minWidth: 80,
sortable: false,
align: 'center'
},
{
header: '신고방법',
name: 'regltSeCode',
minWidth: 100,
sortable: false,
align: 'center',
formatter: 'listItemText',
disabled: true,
editor: {
type: "select",
options: {
listItems: [...ComboCodeData.regltSeCode]
}
},
},
{
header: '위반내용',
name: 'violtDtlsNm',
minWidth: 80,
sortable: false,
align: 'center',
},
{
header: '담당자',
name: 'dutyIdV',
minWidth: 80,
sortable: false,
align: 'center'
},
{
header: '전화번호',
name: 'pcdTelV',
minWidth: 80,
sortable: false,
align: 'center'
},
{
header: '접수일자',
name: 'cvplRceptDt',
minWidth: 80,
sortable: false,
align: 'center',
formatter({value}) {
return setDateFmt(value); //
}
},
{
header: '처리기한',
name: 'cvplProcessPd',
minWidth: 80,
sortable: false,
align: 'center',
formatter({value}) {
return setDateFmt(value); //
}
},
{
header: '위반일시',
name: 'regltDeTime',
minWidth: 120,
sortable: false,
align: 'center',
formatter({value}) {
return setDateTimeFmt(value); //
}
},
{
header: '첨부',
name: 'imageSeCode',
minWidth: 60,
sortable: false,
align: 'center',
formatter: 'listItemText',
disabled: true,
editor: {
type: "select",
options: {
listItems: ComboCodeData.imageSeCode
}
},
},
{
header: '사진',
name: 'imageNmrs',
minWidth: 50,
sortable: false,
align: 'center',
},
{
header: '서손사유',
name: 'erppResnDetail', //erppSeCode
width: 80,
sortable: false,
align: 'center',
},
{
header: '특기사항',
name: 'spcmntMatter',
width: 80,
sortable: false,
align: 'center',
},
{
header: '',
name: 'regltProcessSttusCode',
hidden: true
}
];
const gridOptions = {
el: 'grid',
rowHeaders: ['rowNum'],
columns: gridColumns,
columnOptions: {
frozenCount: 5
}
,pageOptions: {
perPage: 1000
}
};
const gridDatasource = {
//initialRequest: true, // 화면 load시 조회 안함 - default
api: {
readData: {
url: fimsApiUrl.FIND_CRACKDOWNS
,serializer: (params) => {
return getPageParam(fnBiz.getParams(), params);
}
}
}
};
const gridResposeSet = (res, idx) => {
ARR_TOTCNT[idx] = res.data.pagination.totalCount;
$('#totCnt span').text(ARR_TOTCNT[idx]);
const gridInfo = ARR_NAV[idx]?.gridInfo;
if(gridInfo && gridInfo?.pageMove) {
const datas = res.data?.contents.map(d => {
return {regltId: d.regltId, regltSeCode: d.regltSeCode, regltProcessSttusCode: d.regltProcessSttusCode}
});
ARR_NAV[idx].resetGrid(res, datas, (pagiNavigation)=>{
ARR_NAV[idx] = pagiNavigation;
if(curClickColName === 'vhcleNo') fnBiz.pagePopup('total', ARR_NAV[idx].gridInfo.curRowData);
else fnBiz.pagePopup('detail', ARR_NAV[idx].gridInfo.curRowData);
})
}
}
const initGrid = () => {
ARR_GRID[0] = TuiGrid.of(gridOptions, gridDatasource, (res) => gridResposeSet(res, 0))
ARR_GRID[1] = TuiGrid.of({...gridOptions, el: 'grid_t1', rowHeaders: ['checkbox','rowNum']}, gridDatasource, (res) => gridResposeSet(res, 1))
ARR_GRID[2] = TuiGrid.of({...gridOptions, el: 'grid_t2', rowHeaders: ['checkbox','rowNum']}, gridDatasource, (res) => gridResposeSet(res, 2))
};
/************************************************************************** /**************************************************************************
* initialize * initialize
**************************************************************************/ **************************************************************************/
$(document).ready(function(){ $(document).ready(function(){
$('#sch_date_from').datepicker('setDate', DateUtil.getDateDay(-5475).date);
$('#sch_date_to').datepicker('setDate', new Date());
CUR_TAB_IDX = 0;
$('#btnImpose').hide();
$("#tabs").tabs({active : CUR_TAB_IDX}); $("#tabs").tabs({active : CUR_TAB_IDX});
initGrid();
}); });
</script> </script>

@ -123,6 +123,17 @@
<url-pattern>*.ajax</url-pattern> <url-pattern>*.ajax</url-pattern>
</servlet-mapping> </servlet-mapping>
<!-- Ubi Report Servlet -->
<servlet>
<servlet-name>cxf</servlet-name>
<servlet-class>org.apache.cxf.transport.servlet.CXFServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>cxf</servlet-name>
<url-pattern>/service/*</url-pattern>
</servlet-mapping>
<!-- Ubi Report Servlet --> <!-- Ubi Report Servlet -->
<servlet> <servlet>
<servlet-name>UbiServer</servlet-name> <servlet-name>UbiServer</servlet-name>

@ -8,6 +8,7 @@ const fimsApiUrl = {
,POPUP_CRACKDOWN_EDIT: '/fims/biz/cmm/cmmFimsCrackdownEditPopup.do' //단속 정보 편집 팝업 ,POPUP_CRACKDOWN_EDIT: '/fims/biz/cmm/cmmFimsCrackdownEditPopup.do' //단속 정보 편집 팝업
,POPUP_EXTR_CRACKDOWN_FILE_SEL: '/fims/biz/cmm/cmmCrackdownRcvFilePopup.do' //CCTV 외부연계 데이타 선택 ,POPUP_EXTR_CRACKDOWN_FILE_SEL: '/fims/biz/cmm/cmmCrackdownRcvFilePopup.do' //CCTV 외부연계 데이타 선택
,POPUP_ENLIGHT_DISALLOW: '/fims/biz/cmm/cmmEnlightDisallowPopup.do' //서손 / 계도 처리 popup ,POPUP_ENLIGHT_DISALLOW: '/fims/biz/cmm/cmmEnlightDisallowPopup.do' //서손 / 계도 처리 popup
,POPUP_IMPOSE: '/fims/biz/cmm/cmmImposePopup.do' //과태료시스템등록 popup
,FIND_CRACKDOWN_INFO: '/fims/biz/cmm/findCrackdownInfoAndAttchFiles.do' //단속현황-개별총정보 위반정보탭 조회 ,FIND_CRACKDOWN_INFO: '/fims/biz/cmm/findCrackdownInfoAndAttchFiles.do' //단속현황-개별총정보 위반정보탭 조회
,FIND_CRACKDOWNS: '/fims/biz/cmm/findCrackdownInfos.do' //단속현황-외부연계자료목록 ,FIND_CRACKDOWNS: '/fims/biz/cmm/findCrackdownInfos.do' //단속현황-외부연계자료목록
/** /**

@ -2,6 +2,7 @@
class PageNavigation { class PageNavigation {
grid = null; grid = null;
pageNav = null;
// 현재 gridData 목록 // 현재 gridData 목록
gridInfo = { gridInfo = {
@ -42,6 +43,7 @@ class PageNavigation {
,pageMove: null ,pageMove: null
,next: null ,next: null
} }
this.pageNav = this;
this.grid = GRID; this.grid = GRID;
}; };
@ -53,10 +55,10 @@ class PageNavigation {
*/ */
resetGrid(res, gridDatas, callback) { resetGrid(res, gridDatas, callback) {
this.grid.resetData(res.data?.contents); this.grid.resetData(res.data?.contents);
if (this.gridInfo.next) pageNav = new PageNavigation(this.grid, gridDatas, 0); if (this.gridInfo.next) this.pageNav = new PageNavigation(this.grid, gridDatas, 0);
else pageNav = new PageNavigation(this.grid, gridDatas, this.gridInfo.perPage - 1); else this.pageNav = new PageNavigation(this.grid, gridDatas, this.gridInfo.perPage - 1);
callback(pageNav) callback(this.pageNav)
} }
/** /**
* 팝업창의 prev, next 버튼 클릭후 정보 갱신을 위해 호출 * 팝업창의 prev, next 버튼 클릭후 정보 갱신을 위해 호출

Loading…
Cancel
Save