feat: 단속현황 관리 진행

main
minuk926 2 years ago
parent 43ab8d0edf
commit 9c620de322

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

@ -38,6 +38,7 @@ Date Author Description
<div id="tabs_0"> <div id="tabs_0">
<div class="w_fix01 gridGroup"> <div class="w_fix01 gridGroup">
<p class="title deco_01">위반정보</p> <p class="title deco_01">위반정보</p>
<%--
<table class="basics_F mTB_01"> <table class="basics_F mTB_01">
<colgroup> <colgroup>
<col style="width: 5%;"/> <col style="width: 5%;"/>
@ -88,7 +89,6 @@ Date Author Description
<fmt:parseDate value="${regltDTO.registDt}" var="registDt" pattern="yyyyMMddHHmmss"/> <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> <input type="text" name="registDt" value='<fmt:formatDate value="${registDt}" pattern="yyyy-MM-dd HH:mm:ss"/>' readonly>
</td> </td>
</tr> </tr>
</table> </table>
<table class="basics_F mTB_01"> <table class="basics_F mTB_01">
@ -110,7 +110,7 @@ Date Author Description
</td> </td>
<td>시군구</td> <td>시군구</td>
<td> <td>
<input type="text" name="" value="<%--${regltDTO.signgu_code}--%>"> <input type="text" name="" value="">
</td> </td>
<td>법정동</td> <td>법정동</td>
<td> <td>
@ -154,6 +154,86 @@ Date Author Description
</td> </td>
</tr> </tr>
</table> </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> <%--<p class="title deco_01 mT_02">소유주 정보</p>
<table class="basics_F mTB_01 mT_02"> <table class="basics_F mTB_01 mT_02">
<colgroup> <colgroup>
@ -196,14 +276,15 @@ Date Author Description
</tr> </tr>
</table>--%> </table>--%>
</div> </div>
<div class="topBtnArea-a" style="/*width: 900px;*/ min-width: 420px; width:75%;"> <div class="w_fix01 gridGroup" style="width:0px; min-width:300px!important;">
<ul class="btnList" <%--style="margin-top: -24px;"--%>> <p class="title deco_01">위반사진</p>
<li> <div id="imgList"></div>
<%@include file="/WEB-INF/jsp/framework/biz-popup-btn.jsp" %> <div>
</li> <img id="uploadImage"/>
</ul> </div>
</div> </div>
</div> </div>
<%@include file="/WEB-INF/jsp/framework/biz-popup-tab-btn.jsp" %>
<div id="tabs_1" style="display: flex;"> <div id="tabs_1" style="display: flex;">
<div class="w_fix02 gridGroup mR_01"> <div class="w_fix02 gridGroup mR_01">
<p class="title deco_01">진술내역</p> <p class="title deco_01">진술내역</p>
@ -431,7 +512,9 @@ Date Author Description
</div><!--row --> </div><!--row -->
</form> </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; let orgData;
@ -444,6 +527,28 @@ Date Author Description
* Biz function * Biz function
******************************* */ ******************************* */
const fnBiz = { 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: () => { add: () => {
if (!fnBiz.validate()) return; if (!fnBiz.validate()) return;
@ -506,6 +611,19 @@ Date Author Description
$('#btnRemove').on('click', () => { $('#btnRemove').on('click', () => {
fnBiz.remove(); 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(); initGrid();
$("#popupTabs").tabs({active : 0}); $("#popupTabs").tabs({active : 0});
orgData = $('form').serialize(); orgData = $('form').serialize();
downloadImgParam = {regltId: '${regltDTO.regltId}', regltSeCode: '${regltDTO.regltSeCode}'};
fnBiz.downloadImg();
window.opener.pageNav.reloadNav($('#prev'), $('#next'), $('span#totCnt'))
}); });
</script> </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="Y" checked>단속</label>
<label><input type="radio" name="regltYn" value="N">미처리</label> <label><input type="radio" name="regltYn" value="N">미처리</label>
</li> </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> <li>
<span class="flr"> <span class="flr">
<a href="#" class="btn blue" id="btnSearch" title="연계파일등록">검색</a> <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> <a href="#" class="btn darkgray" id="btnRegist" title="연계파일등록">연계파일처리</a>
</span> </span>
</li> </li>
</ul> </ul>
</fieldset> </fieldset>
</div> </div>
@ -61,11 +86,12 @@ Date Author Description
<div id="grid"></div> <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"> <script type="text/javaScript">
/************************************************************************** /**************************************************************************
* Global Variable * Global Variable
**************************************************************************/ **************************************************************************/
popup = null;
let GRID = null; let GRID = null;
var callbackSearch = () => fnBiz.search(); var callbackSearch = () => fnBiz.search();
var pageNav = null; var pageNav = null;
@ -84,7 +110,7 @@ Date Author Description
switch (flag) { switch (flag) {
case "detail": case "detail":
url = fimsApiUrl.POPUP_RT_REGLT_TOTAL; url = fimsApiUrl.POPUP_RT_REGLT_TOTAL;
popOption = {width: 1000, height:800}; popOption = {width: 1200, height:900};
popTitle = "개별총정보"; popTitle = "개별총정보";
break; break;
case "file": case "file":
@ -132,22 +158,15 @@ Date Author Description
const initGrid = () => { const initGrid = () => {
const gridColumns = [ const gridColumns = [
{ {
header: '시스템구분', header: '단속일',
name: 'sysCode', name: 'regltDe',
minWidth: 120, width: 80,
sortable: false, sortable: false,
align: 'center', align: 'center',
formatter: 'listItemText', formatter({value}) {
//TODO: 편집불가인 경우 disabled: true??? return setDateFmt(value); //
//editable: false,
disabled: true,
editor: {
type: "select",
options: {
listItems: ComboCodeData.sysCode
} }
}, },
},
{ {
header: '단속구분', header: '단속구분',
name: 'regltSeCode', name: 'regltSeCode',
@ -166,73 +185,106 @@ Date Author Description
}, },
}, },
{ {
header: '차량번호', header: '단속시간',
name: 'vhcleNo', name: 'regltBeginTime',
minWidth: 70, width: 80,
sortable: false,
align: 'center'
},
{
header: '단속일자',
name: 'regltDe',
minWidth: 80,
sortable: false, sortable: false,
align: 'center', align: 'center',
formatter({value}) { formatter({value}) {
return setDateFmt(value); return setTimeFmt(value); //
} }
}, },
{ {
header: '처리상태', header: '차량번호',
name: 'extrlRegltCntcProcessSttus', name: 'vhcleNo',
minWidth: 80, minWidth: 100,
sortable: false,
align: 'center',
formatter({value}){
return setDateFmt(value);
}
},
{
header: '단속Id',
name: 'regltId',
minWidth: 120,
sortable: false, sortable: false,
align: 'center', align: 'center',
renderer: { renderer: {
type: CustomButtonRenderer, type: CustomButtonRenderer,
options: { options: {
formatter: (props)=>{ formatter: (props)=>{
const rowData = props.grid.getRow(props.rowKey);
if(rowData.regltId){
return { return {
formatter: rowData.regltId formatter: props.grid.getRow(props.rowKey).vhcleNo
,element: "text" ,element: "text"
} }
} }
}
,eventFunction: fnBiz.onClickGrid ,eventFunction: fnBiz.onClickGrid
,eventType: "click" ,eventType: "click"
} }
} }
}, },
{
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: '등록일시', header: '등록일시',
name: 'registDt', name: 'registDt',
minWidth: 130, minWidth: 150,
sortable: false, sortable: false,
align: 'center', align: 'center',
formatter({value}) { formatter({value}) {
return setDateTimeFmt(value); return setDateTimeFmt(value); //
} }
}, },
{ {
header: '외부연계키', header: '최종처리일시',
name: 'extrlRegltCntcId', name: 'last_process_dt',
minWidth: 100, minWidth: 150,
sortable: true, sortable: false,
sortingType: 'desc',
align: 'center', align: 'center',
formatter({value}) {
return setDateTimeFmt(value);
}
} }
]; ];
@ -242,6 +294,9 @@ Date Author Description
columns: gridColumns, columns: gridColumns,
columnOptions: { columnOptions: {
frozenCount: 5 frozenCount: 5
},
pageOptions: {
perPage: 5
} }
}; };
@ -249,17 +304,37 @@ Date Author Description
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_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) => { 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; const gridInfo = pageNav?.gridInfo;
if(gridInfo && gridInfo?.pageMove) { if(gridInfo && gridInfo?.pageMove) {
const datas = res.data?.contents.map(d => { 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.resetGrid(res, datas, (pagiNavigation)=>{
pageNav = pagiNavigation; pageNav = pagiNavigation;
@ -273,6 +348,8 @@ Date Author Description
* initialize * initialize
**************************************************************************/ **************************************************************************/
$(document).ready(function(){ $(document).ready(function(){
$('#sch_date_from').datepicker('setDate', DateUtil.getDateDay(-364).date);
$('#sch_date_to').datepicker('setDate', new Date());
initGrid(); initGrid();
}); });

@ -38,7 +38,7 @@ Date Author Description
</div> </div>
</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"> <script type="text/javaScript">
/************************************************************************** /**************************************************************************
* Global Variable * Global Variable

Loading…
Cancel
Save