feat: 단속현황 관리 진행

main
minuk926 2 years ago
parent 43ab8d0edf
commit 9c620de322

@ -135,9 +135,9 @@ public class EcNatlNewspaperService implements IEcNatlNewspaperService {
// 단속 데이타 생성
ctznSttemntMapper.insertRtRegltFromCtznStmt(
CtznStmtDTO.Request.builder()
//.inputSeCode(FimsConst.InputSeCode.CITIZEN.getCode())
//.regltSeCode(FimsConst.RegltSeCode.CITIZEN.getCode())
//.jobSeCode(FimsConst.FileJobSeCode.NATL_NEWS_PAPER_RCV.getCode())
.inputSeCode(FimsConst.InputSeCode.CITIZEN.getCode())
.regltSeCode(FimsConst.RegltSeCode.CITIZEN.getCode())
.jobSeCode(FimsConst.FileJobSeCode.NATL_NEWS_PAPER_RCV.getCode())
.interfaceSeqN(dtl.getInterfaceSeqN())
.ctznSttemntDetailSn(dtl.getCtznSttemntDetailSn())
.regltId(dtl.getRegltId())

@ -38,6 +38,7 @@ Date Author Description
<div id="tabs_0">
<div class="w_fix01 gridGroup">
<p class="title deco_01">위반정보</p>
<%--
<table class="basics_F mTB_01">
<colgroup>
<col style="width: 5%;"/>
@ -88,7 +89,6 @@ Date Author Description
<fmt:parseDate value="${regltDTO.registDt}" var="registDt" pattern="yyyyMMddHHmmss"/>
<input type="text" name="registDt" value='<fmt:formatDate value="${registDt}" pattern="yyyy-MM-dd HH:mm:ss"/>' readonly>
</td>
</tr>
</table>
<table class="basics_F mTB_01">
@ -110,7 +110,7 @@ Date Author Description
</td>
<td>시군구</td>
<td>
<input type="text" name="" value="<%--${regltDTO.signgu_code}--%>">
<input type="text" name="" value="">
</td>
<td>법정동</td>
<td>
@ -154,6 +154,86 @@ Date Author Description
</td>
</tr>
</table>
--%>
<table class="tbl03">
<caption><c:out value="${bizName}"/> 상세</caption>
<colgroup>
<col style="width: 13%;"/>
<col style="width: 20%;"/>
<col style="width: 13%;"/>
<col style="width: 20%;"/>
<col style="width: 13%;"/>
<col style="width: 20%;"/>
</colgroup>
<tbody>
<tr>
<th>기관코드</th>
<td><code:select id="insttCode" name="insttCode" codeId="XIT025" defaultSelect="${regltDTO.insttCode}" title="기관코드" cls="selectBoxTotal" alt="기관코드"/></td>
<th>과태료코드</th>
<td><code:select id="sysCode" name="sysCode" codeId="FIM001" defaultSelect="${regltDTO.sysCode}" title="과태료코드" cls="selectBoxTotal" alt="과태료코드"/></td>
<th>단속구분</th>
<td><code:select id="regltSeCode" name="regltSeCode" codeId="FIM002" defaultSelect="${regltDTO.regltSeCode}" title="단속구분코드" cls="selectBoxTotal" alt="단속구분코드"/></td>
</tr>
<tr>
<th>차량번호</th>
<td><input type="text" id="vhcleNo" name="vhcleNo" value="${regltDTO.vhcleNo }"></td>
<th>단속일자</th>
<td><input type="text" id="regltDe" name="regltDe" value="${regltDTO.regltDe }"></td>
<th>입력구분</th>
<td><code:select id="violtDtlsCode" name="violtDtlsCode" codeId="FIM004" defaultSelect="${regltDTO.violtDtlsCode}" title="위반내역코드" cls="selectBoxTotal" alt="위반내역코드"/></td>
</tr>
<tr>
<th>단속장소</th>
<td colspan=""><input type="text" id="regltPlace" name="regltPlace" value="${regltDTO.regltPlace }"></td>
<th>단속시작시간</th>
<td colspan=""><input type="text" id="regltBeginTime" name="regltBeginTime" value="${regltDTO.regltBeginTime }"></td>
<th>단속종료시간</th>
<td><input type="text" id="regltEndTime" name="regltEndTime" value="${regltDTO.regltEndTime }"></td>
</tr>
<tr>
<th>위반법규</th>
<td><code:select id="violtLrgCode" name="violtLrgCode" codeId="WEB002" defaultSelect="${regltDTO.violtLrgCode}" title="위반내역코드" cls="selectBoxTotal" alt="위반내역코드"/></td>
<th>위반내역</th>
<td><code:select id="violtDtlsCode" name="violtDtlsCode" codeId="FIM004" defaultSelect="${regltDTO.violtDtlsCode}" title="위반내역코드" cls="selectBoxTotal" alt="위반내역코드"/></td>
<th>위반횟수</th>
<td colspan=""><input type="text" id="violtCo" name="violtCo" value="${regltDTO.violtCo }"></td>
</tr>
<tr>
<th>감경금액</th>
<td><input type="text" id="redutionAmount" name="redutionAmount" value="${regltDTO.redutionAmount}"></td>
<th>감경후 금액</th>
<td colspan=""><input type="text" id="redutionAftAmount" name="redutionAftAmount" value="${regltDTO.redutionAftAmount}"></td>
<th>수납금액</th>
<td><input type="text" id="rcivAmount" name="rcivAmount" value="${regltDTO.rcivAmount}"></td>
</tr>
<tr>
<th>감액</th>
<td><input type="text" id="rdcamt" name="rdcamt" value="${regltDTO.rdcamt}"></td>
<th>가산금</th>
<td><input type="text" id="adamt" name="adamt" value="${regltDTO.adamt}"></td>
<td colspan="2"></td>
</tr>
<tr>
<th>특이사항</th>
<td colspan="5"><textarea id="spcmntMatter" name="spcmntMatter" value="${regltDTO.spcmntMatter}"></textarea></td>
</tr>
<tr>
<th>처리상태</th>
<td><code:select id="regltProcessSttusCode" name="regltProcessSttusCode" codeId="FIM010" defaultSelect="${regltDTO.regltProcessSttusCode}" title="단속처리상태" cls="selectBoxTotal" alt="단속처리상태"/></td>
<th>등록일시</th>
<td><input type="text" id="registDt" name="registDt" value="${regltDTO.registDt}"></td>
<th>등록자</th>
<td><input type="text" id="register" name="register" value="${regltDTO.register}"></td>
</tr>
<tr>
<th>최종처리일시</th>
<td><input type="text" id="lastProcessDt" name="lastProcessDt" value="${regltDTO.lastProcessDt}"></td>
<th>최종처리자</th>
<td colspan=""><input type="text" id="lastOpetr" name="lastOpetr" value="${regltDTO.lastOpetr}"></td>
</tr>
</tbody>
</table>
<%--<p class="title deco_01 mT_02">소유주 정보</p>
<table class="basics_F mTB_01 mT_02">
<colgroup>
@ -196,14 +276,15 @@ Date Author Description
</tr>
</table>--%>
</div>
<div class="topBtnArea-a" style="/*width: 900px;*/ min-width: 420px; width:75%;">
<ul class="btnList" <%--style="margin-top: -24px;"--%>>
<li>
<%@include file="/WEB-INF/jsp/framework/biz-popup-btn.jsp" %>
</li>
</ul>
<div class="w_fix01 gridGroup" style="width:0px; min-width:300px!important;">
<p class="title deco_01">위반사진</p>
<div id="imgList"></div>
<div>
<img id="uploadImage"/>
</div>
</div>
</div>
<%@include file="/WEB-INF/jsp/framework/biz-popup-tab-btn.jsp" %>
<div id="tabs_1" style="display: flex;">
<div class="w_fix02 gridGroup mR_01">
<p class="title deco_01">진술내역</p>
@ -431,7 +512,9 @@ Date Author Description
</div><!--row -->
</form>
<script type="text/javaScript" language="javascript" defer="defer">
<script type="text/javascript" src="${pageContext.request.contextPath}/resources/framework/js/cmm/cmmDownloadImg.js"></script>
<script type="text/javaScript">
//전역변수선언
let orgData;
@ -444,6 +527,28 @@ Date Author Description
* Biz function
******************************* */
const fnBiz = {
search: (params) => {
cmmAjax({
showSuccessMsg: false
,url: fimsApiUrl.FIND_RT_REGLT_INFO_AND_ATTCH_FILES
,data: params
,success: (res) => {
cmmImgDownload('#imgList', res.attchFiles, true);
window.opener.pageNav.reloadNav($('#prev'), $('#next'), $('span#totCnt'))
setFormData(document.querySelector('form'), res.dto);
}
})
}
,downloadImg: () => {
cmmAjax({
showSuccessMsg: false
,url: fimsApiUrl.FIND_RT_REGLT_ATTCH_FILES
,data: downloadImgParam
,success: (res) => {
cmmImgDownload('#imgList', res.data?.contents, true);
}
})
},
add: () => {
if (!fnBiz.validate()) return;
@ -506,6 +611,19 @@ Date Author Description
$('#btnRemove').on('click', () => {
fnBiz.remove();
});
$('#prev').on('click', () => {
window.opener.pageNav.onClickNavBtn('prev', (gridInfo) => {
fnBiz.search(gridInfo.curRowData)
});
})
$('#next').on('click', () => {
window.opener.pageNav.onClickNavBtn('next', (gridInfo) => {
fnBiz.search(gridInfo.curRowData);
});
});
});
@ -662,6 +780,11 @@ Date Author Description
initGrid();
$("#popupTabs").tabs({active : 0});
orgData = $('form').serialize();
downloadImgParam = {regltId: '${regltDTO.regltId}', regltSeCode: '${regltDTO.regltSeCode}'};
fnBiz.downloadImg();
window.opener.pageNav.reloadNav($('#prev'), $('#next'), $('span#totCnt'))
});
</script>

@ -28,16 +28,41 @@ Date Author Description
<label><input type="radio" name="regltYn" value="Y" checked>단속</label>
<label><input type="radio" name="regltYn" value="N">미처리</label>
</li>
<li>
<span class="title"><label style="padding-right: 26px;">조회일자 :</label></span>
<select id="sch_date_opt" name="sch_date_opt" class="selectBox">
<option value="regltDe">단속일자</option>
<option value="registDt">등록일자</option>
</select>
</li>
<li>
<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>
</li>
<li style="padding-bottom:10px; padding-left: 10px;">
<span class="title">상태 : </span>
<select id="sch_opt" name="sch_opt" class="selectBox">
<option value="vhcleNo">차량번호</option>
</select>
<input type="text" id="sch_word" name="sch_word" value="">
</li>
<li>
<span class="flr">
<a href="#" class="btn blue" id="btnSearch" title="연계파일등록">검색</a>
<!-- <button type="button" class="btnSearch" id="btnSearch" name="btnSearch">검색</button>-->
<!-- <button type="button" class="btnSearch" id="btnSearch" name="btnSearch">검색</button>-->
<a href="#" class="btn darkgray" id="btnRegist" title="연계파일등록">연계파일처리</a>
</span>
</li>
</ul>
</fieldset>
</div>
@ -61,11 +86,12 @@ Date Author Description
<div id="grid"></div>
<script type="text/javascript" src="${pageContext.request.contextPath}/resources/biz/common/js/popupPageNavigation.js" defer></script>
<%--<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 GRID = null;
var callbackSearch = () => fnBiz.search();
var pageNav = null;
@ -84,7 +110,7 @@ Date Author Description
switch (flag) {
case "detail":
url = fimsApiUrl.POPUP_RT_REGLT_TOTAL;
popOption = {width: 1000, height:800};
popOption = {width: 1200, height:900};
popTitle = "개별총정보";
break;
case "file":
@ -132,21 +158,14 @@ Date Author Description
const initGrid = () => {
const gridColumns = [
{
header: '시스템구분',
name: 'sysCode',
minWidth: 120,
header: '단속일',
name: 'regltDe',
width: 80,
sortable: false,
align: 'center',
formatter: 'listItemText',
//TODO: 편집불가인 경우 disabled: true???
//editable: false,
disabled: true,
editor: {
type: "select",
options: {
listItems: ComboCodeData.sysCode
}
},
formatter({value}) {
return setDateFmt(value); //
}
},
{
header: '단속구분',
@ -166,48 +185,28 @@ Date Author Description
},
},
{
header: '차량번호',
name: 'vhcleNo',
minWidth: 70,
sortable: false,
align: 'center'
},
{
header: '단속일자',
name: 'regltDe',
minWidth: 80,
sortable: false,
align: 'center',
formatter({value}){
return setDateFmt(value);
}
},
{
header: '처리상태',
name: 'extrlRegltCntcProcessSttus',
minWidth: 80,
header: '단속시간',
name: 'regltBeginTime',
width: 80,
sortable: false,
align: 'center',
formatter({value}){
return setDateFmt(value);
formatter({value}) {
return setTimeFmt(value); //
}
},
{
header: '단속Id',
name: 'regltId',
minWidth: 120,
header: '차량번호',
name: 'vhcleNo',
minWidth: 100,
sortable: false,
align: 'center',
renderer: {
type: CustomButtonRenderer,
options: {
formatter: (props)=>{
const rowData = props.grid.getRow(props.rowKey);
if(rowData.regltId){
return {
formatter: rowData.regltId
,element: "text"
}
return {
formatter: props.grid.getRow(props.rowKey).vhcleNo
,element: "text"
}
}
,eventFunction: fnBiz.onClickGrid
@ -215,24 +214,77 @@ Date Author Description
}
}
},
{
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: 'violtLrgCode',
// minWidth: 200,
// sortable: false,
// //align: 'center'
// },
// {
// header: '위반내역',
// name: 'violtDtlsCode',
// minWidth: 200,
// sortable: false,
// //align: 'center'
// },
{
header: '등록일시',
name: 'registDt',
minWidth: 130,
minWidth: 150,
sortable: false,
align: 'center',
formatter({value}){
return setDateTimeFmt(value);
formatter({value}) {
return setDateTimeFmt(value); //
}
},
{
header: '외부연계키',
name: 'extrlRegltCntcId',
minWidth: 100,
sortable: true,
sortingType: 'desc',
header: '최종처리일시',
name: 'last_process_dt',
minWidth: 150,
sortable: false,
align: 'center',
formatter({value}) {
return setDateTimeFmt(value);
}
}
];
@ -242,6 +294,9 @@ Date Author Description
columns: gridColumns,
columnOptions: {
frozenCount: 5
},
pageOptions: {
perPage: 5
}
};
@ -249,17 +304,37 @@ Date Author Description
initialRequest: true, // 화면 load시 조회 안함 - default
api: {
readData: {
url: fimsApiUrl.FIND_CCTV_EC_EXTRL_REGLT_CNTCS
,serializer: (params) => fnAddPageInfo(document.frmSearch, params)
// url: fimsApiUrl.FIND_CCTV_EC_EXTRL_REGLT_CNTCS
// ,serializer: (params) => fnAddPageInfo(document.frmSearch, params)
url: fimsApiUrl.FIND_RT_REGLTS
,serializer: (params) => {
const param = {
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()
}
return getPageParam(param, params);
}
}
}
};
GRID = TuiGrid.of(gridOptions, gridDatasource, (res) => {
// const gridInfo = pageNav?.gridInfo;
// if(gridInfo && gridInfo?.pageMove) {
// const datas = res.data?.contents.map(d => {
// return {extrlRegltCntcId: d.extrlRegltCntcId, regltSeCode: d.regltSeCode, regltId: d.regltId}
// });
// pageNav.resetGrid(res, datas, (pagiNavigation)=>{
// pageNav = pagiNavigation;
// fnBiz.pagePopup('detail', pageNav.gridInfo.curRowData);
// })
// }
const gridInfo = pageNav?.gridInfo;
if(gridInfo && gridInfo?.pageMove) {
const datas = res.data?.contents.map(d => {
return {extrlRegltCntcId: d.extrlRegltCntcId, regltSeCode: d.regltSeCode, regltId: d.regltId}
return {regltId: d.regltId, regltSeCode: d.regltSeCode}
});
pageNav.resetGrid(res, datas, (pagiNavigation)=>{
pageNav = pagiNavigation;
@ -273,6 +348,8 @@ Date Author Description
* initialize
**************************************************************************/
$(document).ready(function(){
$('#sch_date_from').datepicker('setDate', DateUtil.getDateDay(-364).date);
$('#sch_date_to').datepicker('setDate', new Date());
initGrid();
});

@ -38,7 +38,7 @@ Date Author Description
</div>
</div>
<%--<script type="text/javascript" src="${pageContext.request.contextPath}/resources/biz/common/js/popupPageNavigation.js" defer></script>--%>
<script type="text/javascript" src="${pageContext.request.contextPath}/resources/biz/common/js/popupPageNavigation.js" defer></script>
<script type="text/javaScript">
/**************************************************************************
* Global Variable

Loading…
Cancel
Save