no message
parent
b0abe401b7
commit
1296b69490
@ -1,220 +0,0 @@
|
||||
<%--
|
||||
================================================================================
|
||||
File : /fims/biz/cmm/cmmCtznComplaintHistPopup.jsp
|
||||
Name : 단속현황 시민 민원 이력 팝업 - 단속관리>초기자료 편집
|
||||
Auth : lim.jong.uk
|
||||
Date : 2023-03-20
|
||||
Desc : 단속현황 시민 민원 이력 팝업
|
||||
================================================================================
|
||||
Date Author Description
|
||||
================================================================================
|
||||
================================================================================
|
||||
--%>
|
||||
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
|
||||
<%@ include file="/WEB-INF/jsp/include/taglib.jsp"%>
|
||||
<%@ include file="/WEB-INF/jsp/include/fims/taglib.jsp"%>
|
||||
|
||||
<div class="popup" style="min-width: 100px;">
|
||||
<div class="container-window1" style="flex-direction: column; max-width: 900px;">
|
||||
<p class="container-window-header2">차량 [<span id="vhrno" name="vhrno" style="padding-left: 5px; padding-right: 5px; color:darkred;"></span>] 단속 내역
|
||||
</p>
|
||||
|
||||
<div class="container-page-btn">
|
||||
<span>
|
||||
<div class="clearfix" id="totCnt">전체 ㅣ <span></span></div>
|
||||
</span>
|
||||
</div>
|
||||
|
||||
<div id="grid"></div>
|
||||
<div class="d-flex flex-row p-3 justify-content-between">
|
||||
<label id="grid1PagingInfo" class="dataTables_info" role="status" aria-live="polite"></label>
|
||||
<ul id="grid1Paging" class="pagination pagination-primary"></ul>
|
||||
</div>
|
||||
|
||||
<div class="container-window-btn2">
|
||||
<span class="container-window-btn-right">
|
||||
<a href="#" id='btnClose' class="btn btn-lightgray">닫기</a>
|
||||
</span>
|
||||
</div>
|
||||
</div><!--row -->
|
||||
</div>
|
||||
<script type="text/javaScript">
|
||||
/**************************************************************************
|
||||
* Global Variable
|
||||
**************************************************************************/
|
||||
let GRID = null;
|
||||
|
||||
let $$Control = new FimsDatasetControl({
|
||||
prefix:"aaa",
|
||||
prefixName:"ㅁㅁㅁ",
|
||||
infoSize:"xl",
|
||||
urls : {
|
||||
load : fimsApiUrl.FIND_RT_REGLT_CAR_CRACKDOWN_CNT
|
||||
},
|
||||
keymapper:info => info ? info.SOME_KEY : "",
|
||||
dataGetter:obj => obj.data.contents
|
||||
});
|
||||
|
||||
$$Control.onDatasetChange = obj => {
|
||||
let pagination = obj.data.pagination;
|
||||
|
||||
if(obj.data.pagination){
|
||||
$$Control._paginationInfo.totalSize = pagination.totalSize;
|
||||
$$Control._paginationInfo.pageNum = pagination.pageNum;
|
||||
} else {
|
||||
$$Control._paginationInfo.totalSize = obj.count;
|
||||
}
|
||||
|
||||
$$Control.totalCountSetting(obj);
|
||||
|
||||
render$$List(obj.data);
|
||||
|
||||
if($$Control._paginationInfo.paging && $$Control._paginationInfo.pagingType == "nav"){
|
||||
let start = 0;
|
||||
if(pagination.pageNum > 1 && pagination.totalPage > 1 && pagination.totalSize > $$Control._paginationInfo.fetchSize){
|
||||
start = $$Control._paginationInfo.fetchSize * (pagination.pageNum - 1);
|
||||
}
|
||||
$("#grid1Paging").setPaging({
|
||||
list: $$Control.dataset,
|
||||
prefix: "grid1",
|
||||
start: start,
|
||||
totalSize: pagination.totalSize,
|
||||
fetchSize: $$Control._paginationInfo.fetchSize,
|
||||
func: "$$$Control.load({index})",
|
||||
});
|
||||
}
|
||||
};
|
||||
|
||||
function search$$s(){
|
||||
$$Control.query = {vhrno: '${param.vhrno}', crdnId: '${param.crdnId}', crdnSeCd: '${param.crdnSeCd}'};
|
||||
GRID.clear();
|
||||
$$Control.load(1);
|
||||
}
|
||||
|
||||
function render$$List(data) {
|
||||
if($$Control._paginationInfo.paging && $$Control._paginationInfo.pagingType == "nav"){
|
||||
GRID.clear();
|
||||
}
|
||||
GRID.appendRows(data.contents);
|
||||
}
|
||||
|
||||
/* *******************************
|
||||
* Biz function
|
||||
******************************* */
|
||||
|
||||
|
||||
/**************************************************************************
|
||||
* event
|
||||
**************************************************************************/
|
||||
$(() => {
|
||||
$("#btnClose").on('click', () => {
|
||||
window.close()
|
||||
});
|
||||
});
|
||||
|
||||
/* ******************************
|
||||
* Grid
|
||||
****************************** */
|
||||
const initPopupGrid = () => {
|
||||
const gridColumns = [
|
||||
{
|
||||
header: '단속구분',
|
||||
name: 'crdnSeCd',
|
||||
minWidth: 100,
|
||||
//editor: 'text',
|
||||
sortable: false,
|
||||
align: 'center',
|
||||
formatter: 'listItemText',
|
||||
disabled: true,
|
||||
editor: {
|
||||
type: "select",
|
||||
options: {
|
||||
listItems: [...ComboCodeData.crdnSeCd]
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
header: '위반일시',
|
||||
name: 'crdnYmdTime',
|
||||
minWidth: 120,
|
||||
sortable: false,
|
||||
align: 'center',
|
||||
formatter({value}) {
|
||||
return StrDateTimeFormat.format(value); //
|
||||
}
|
||||
},
|
||||
{
|
||||
header: '단속장소',
|
||||
name: 'crdnPlc',
|
||||
minWidth: 150,
|
||||
sortable: false
|
||||
},
|
||||
{
|
||||
header: '위반내역',
|
||||
name: 'violtDtlsCode',
|
||||
minWidth: 150,
|
||||
//editor: 'text',
|
||||
sortable: false,
|
||||
align: 'center',
|
||||
formatter: 'listItemText',
|
||||
disabled: true,
|
||||
editor: {
|
||||
type: "select",
|
||||
options: {
|
||||
listItems: [...ComboCodeData.violtDtlsCode]
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
header: '위도',
|
||||
name: 'gpsX',
|
||||
minWidth: 120,
|
||||
//editor: 'text',
|
||||
sortable: false,
|
||||
},
|
||||
{
|
||||
header: '경도',
|
||||
name: 'gpsY',
|
||||
minWidth: 120,
|
||||
//editor: 'text',
|
||||
sortable: false,
|
||||
},
|
||||
{
|
||||
header: '등록일시',
|
||||
name: 'regDt',
|
||||
minWidth: 120,
|
||||
//editor: 'text',
|
||||
sortable: true,
|
||||
align: 'center',
|
||||
formatter({value}) {
|
||||
return StrDateTimeFormat.format(value);
|
||||
}
|
||||
}
|
||||
];
|
||||
|
||||
const gridOptions = {
|
||||
el: 'grid',
|
||||
minBodyHeight: 250,
|
||||
bodyHeight: 250, //[선택]Grid 높이 (number(단위: px)|'auto'|'fitToParent')
|
||||
rowHeaders: ['rowNum'],
|
||||
columns: gridColumns,
|
||||
columnOptions: {
|
||||
frozenCount: 3
|
||||
},
|
||||
|
||||
paginationInfoRef : $$Control._paginationInfo
|
||||
};
|
||||
|
||||
GRID = TuiGrid.of(gridOptions);
|
||||
};
|
||||
|
||||
|
||||
/**************************************************************************
|
||||
* initialize
|
||||
**************************************************************************/
|
||||
$(document).ready(function(){
|
||||
$('#vhrno').html('${param.vhrno}')
|
||||
initPopupGrid();
|
||||
});
|
||||
|
||||
</script>
|
@ -1,367 +0,0 @@
|
||||
<%--
|
||||
================================================================================
|
||||
File : /fims/biz/cmm/cmmCrackdownRcvFilePopup.jsp
|
||||
Name : 외부연계파일 처리 - 단속관리>단속현황관리>외부자료연계탭>연계파일처리
|
||||
Auth : lim.jong.uk
|
||||
Date : 2022-01-20
|
||||
Desc : 외부연계파일 처리
|
||||
================================================================================
|
||||
Date Author Description
|
||||
================================================================================
|
||||
================================================================================
|
||||
--%>
|
||||
<%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
|
||||
<%@ include file="/WEB-INF/jsp/include/taglib.jsp" %>
|
||||
<%@ include file="/WEB-INF/jsp/include/fims/taglib.jsp" %>
|
||||
|
||||
<div class="popup" style="min-width: 100%;">
|
||||
<div class="container-window1" style="flex-direction: column; max-width: 800px;">
|
||||
<p class="container-window-header2">외부 연계 자료 선택</p>
|
||||
<form name="frmSearch" id="frmSearch">
|
||||
<div class="container-search">
|
||||
<table>
|
||||
<caption>검색조건</caption>
|
||||
<colgroup>
|
||||
<col style="width: 30%"/>
|
||||
<col/>
|
||||
<col/>
|
||||
<col/>
|
||||
<col/>
|
||||
<col/>
|
||||
<col/>
|
||||
</colgroup>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td>
|
||||
<code:select type="CMM_ETC2" id="crdnSeCd" name="crdnSeCd" grpId="FIM002" defaultSelect="01"
|
||||
onchange="fnBiz.onComboChange()" title="단속구분코드" cls="form-select" alt="단속구분코드" />
|
||||
</td>
|
||||
<td colspan="6">
|
||||
<input id="folder" type="file" webkitdirectory multiple="false"/>
|
||||
<input id="busInstallDirPath" name="dirPath" type="text" size="400" value="<c:out value='${busInstallDirPath}'/>" title="버스장착형데이타경로" style="display: none; width: 100%" readonly/>
|
||||
<input id="ctznDirPath" name="dirPath" type="text" size="400" value="<c:out value='${ctznDirPath}'/>" title="시민신고" style="display: none; width: 100%" readonly/>
|
||||
<span id="warnMsg" style="color: red; font-weight: bold; display: inline-block">동일한 데이타 선택시 중복 처리될수 있습니다.</span>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</form>
|
||||
<div class="container-window-btn1">
|
||||
<span>
|
||||
<div class="clearfix" id="totCnt">전체 ㅣ <span>0</span></div>
|
||||
</span>
|
||||
<%-- <div class="container-window-btn1">--%>
|
||||
<span class="flr">
|
||||
<a href="#" class="btn btn-blue" id="btnRegist">파일 처리</a>
|
||||
<a href="#" id="btnClose" class="btn btn-lightgray">닫기</a>
|
||||
</span>
|
||||
</div>
|
||||
|
||||
<div id="grid"></div>
|
||||
<div class="d-flex flex-row p-3 justify-content-between">
|
||||
<label id="grid1PagingInfo" class="dataTables_info" role="status" aria-live="polite"></label>
|
||||
<ul id="grid1Paging" class="pagination pagination-primary"></ul>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<!-- //popup -->
|
||||
|
||||
<script type="text/javaScript">
|
||||
/**************************************************************************
|
||||
* Global Variable
|
||||
**************************************************************************/
|
||||
let GRID = null;
|
||||
let arrFiles = [];
|
||||
|
||||
let $$Control = new FimsDatasetControl({
|
||||
prefix:"aaa",
|
||||
prefixName:"ㅁㅁㅁ",
|
||||
infoSize:"xl",
|
||||
urls : {
|
||||
load : fimsApiUrl.FIND_RCV_PATH_FILES
|
||||
},
|
||||
keymapper:info => info ? info.SOME_KEY : "",
|
||||
dataGetter:obj => obj.data.contents
|
||||
});
|
||||
|
||||
$$Control.onDatasetChange = obj => {
|
||||
let pagination = obj.data.pagination;
|
||||
|
||||
if(obj.data.pagination){
|
||||
$$Control._paginationInfo.totalSize = pagination.totalSize;
|
||||
$$Control._paginationInfo.pageNum = pagination.pageNum;
|
||||
} else {
|
||||
$$Control._paginationInfo.totalSize = obj.count;
|
||||
}
|
||||
|
||||
$$Control.totalCountSetting(obj);
|
||||
|
||||
render$$List(obj.data);
|
||||
|
||||
if($$Control._paginationInfo.paging && $$Control._paginationInfo.pagingType == "nav"){
|
||||
let start = 0;
|
||||
if(pagination.pageNum > 1 && pagination.totalPage > 1 && pagination.totalSize > $$Control._paginationInfo.fetchSize){
|
||||
start = $$Control._paginationInfo.fetchSize * (pagination.pageNum - 1);
|
||||
}
|
||||
$("#grid1Paging").setPaging({
|
||||
list: $$Control.dataset,
|
||||
prefix: "grid1",
|
||||
start: start,
|
||||
totalSize: pagination.totalSize,
|
||||
fetchSize: $$Control._paginationInfo.fetchSize,
|
||||
func: "$$$Control.load({index})",
|
||||
});
|
||||
}
|
||||
};
|
||||
|
||||
function search$$s(){
|
||||
$$Control.query = {"dirPath": $('#dirPath').val()};
|
||||
GRID.clear();
|
||||
$$Control.load(1);
|
||||
}
|
||||
|
||||
function render$$List(data) {
|
||||
if($$Control._paginationInfo.paging && $$Control._paginationInfo.pagingType == "nav"){
|
||||
GRID.clear();
|
||||
}
|
||||
GRID.appendRows(data.contents);
|
||||
}
|
||||
|
||||
/* *******************************
|
||||
* Biz function
|
||||
******************************* */
|
||||
const fnBiz = {
|
||||
getParams: function(){
|
||||
if($('#crdnSeCd').val() === '07') {
|
||||
return {dirPath: $('#busInstallDirPath').val()};
|
||||
}else if($('#crdnSeCd').val() === '09') {
|
||||
return {dirPath: $('#ctznDirPath').val()};
|
||||
}
|
||||
return {};
|
||||
}
|
||||
,fileSelect: (e) => {
|
||||
//const output = document.querySelector("ul");
|
||||
arrFiles = [];
|
||||
const files = e.target.files;
|
||||
const arrFile = [];
|
||||
|
||||
for (let i=0; i<files.length; i++) {
|
||||
// const item = document.createElement("li");
|
||||
// item.innerHTML = files[i].webkitRelativePath;
|
||||
// output.appendChild(item);
|
||||
arrFile.push({
|
||||
filePath: '',
|
||||
fileNm: files[i].name,
|
||||
fileType: files[i].type,
|
||||
fileSize: files[i].size,
|
||||
//lastModified: files[i].lastModified
|
||||
lastModified: files[i].lastModifiedDate
|
||||
})
|
||||
arrFiles.push(files[i]);
|
||||
}
|
||||
GRID.resetData(arrFile);
|
||||
$('#totCnt span').text(arrFile.length);
|
||||
}
|
||||
,add: () => {
|
||||
const arrChecks = GRID.getData();
|
||||
|
||||
if(arrChecks.length===0) {
|
||||
alert("등록[변경]할 데이타가 없습니다.");
|
||||
return false;
|
||||
}
|
||||
|
||||
if(confirm("등록 하시겠습니까?")) {
|
||||
const crdnSeCd = $('#crdnSeCd').val();
|
||||
if(crdnSeCd !== '07' && crdnSeCd !== '09') {
|
||||
|
||||
const formData = new FormData();
|
||||
arrFiles.forEach((f)=> {
|
||||
formData.append("files", f)
|
||||
})
|
||||
|
||||
$.ajax({
|
||||
type: 'post'
|
||||
, enctype: "multipart/form-data"
|
||||
<%--, url: '<c:url value="/fims/biz/ec/saveCctvCrackdownDatas.do"/>'--%>
|
||||
, url: fimsApiUrl.SAVE_CCTV_EC_EXTRL_REGLT_CNTCS
|
||||
, data: formData
|
||||
, processData: false
|
||||
, contentType: false
|
||||
, success: (res) => {
|
||||
if (res) {
|
||||
alert(res.message);
|
||||
search$$s();
|
||||
}
|
||||
}
|
||||
, error: (xhr, status, err) => {
|
||||
}
|
||||
})
|
||||
|
||||
}else {
|
||||
const data = {
|
||||
filePath: crdnSeCd === '07' ? $('#busInstallDirPath').val() : $('#ctznDirPath').val()
|
||||
,fileInfoList: arrChecks.map((row) => {
|
||||
return {fileNm: row.fileNm, fileType: row.fileType, fileSize: row.fileSize}
|
||||
})
|
||||
}
|
||||
cmmAjax({
|
||||
url: crdnSeCd === '07' ? fimsApiUrl.SAVE_BUS_INSTALL_EC_EXTRL_REGLT_CNTC : fimsApiUrl.SAVE_EC_NATL_NEWS_PAPER
|
||||
,data: JSON.stringify(data)
|
||||
,contentType: 'application/json; charset=utf-8'
|
||||
,success: () => {
|
||||
search$$s();
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
}
|
||||
,onComboChange: () => {
|
||||
$('#totCnt span').text(0);
|
||||
|
||||
if($('#crdnSeCd').val() === '07') {
|
||||
$('#folder')
|
||||
.css('display', 'none')
|
||||
.attr('disabled', true);
|
||||
$('#busInstallDirPath')
|
||||
.css('display', 'inline-block')
|
||||
.attr('disabled', false);
|
||||
$('#ctznDirPath')
|
||||
.css('display', 'none')
|
||||
.attr('disabled', true);
|
||||
$('#warnMsg').css('display', 'none')
|
||||
.attr('disabled', true);
|
||||
search$$s();
|
||||
|
||||
}else if($('#crdnSeCd').val() === '09'){
|
||||
$('#folder')
|
||||
.css('display', 'none')
|
||||
.attr('disabled', true);
|
||||
$('#busInstallDirPath')
|
||||
.css('display', 'none')
|
||||
.attr('disabled', true);
|
||||
$('#ctznDirPath')
|
||||
.css('display', 'inline-block')
|
||||
.attr('disabled', false);
|
||||
$('#warnMsg').css('display', 'none')
|
||||
.attr('disabled', true);
|
||||
search$$s();
|
||||
|
||||
}else{
|
||||
$('#folder')
|
||||
.css('display', 'inline-block')
|
||||
.attr('disabled', false);
|
||||
$('#busInstallDirPath')
|
||||
.css('display', 'none')
|
||||
.attr('disabled', true);
|
||||
$('#ctznDirPath')
|
||||
.css('display', 'none')
|
||||
.attr('disabled', true);
|
||||
$('#warnMsg').css('display', 'inline-block')
|
||||
.attr('disabled', false);
|
||||
GRID.resetData([]);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**************************************************************************
|
||||
* event
|
||||
**************************************************************************/
|
||||
$(() => {
|
||||
$(window).on("unload", function (e) {
|
||||
window.opener?.unblockUI();
|
||||
window.opener?.callbackSearch();
|
||||
return null;
|
||||
});
|
||||
|
||||
$("#btnClose").on('click', () => {
|
||||
window.close()
|
||||
});
|
||||
|
||||
$('#folder').on('change', function(e) {
|
||||
//document.getElementById("folder").select();
|
||||
//document.selection.clear();
|
||||
fnBiz.fileSelect(e)
|
||||
});
|
||||
|
||||
$('#btnSearch').on('click', () => search$$s());
|
||||
|
||||
$('#btnRegist').on('click', () => {
|
||||
fnBiz.add();
|
||||
});
|
||||
|
||||
});
|
||||
|
||||
/* *******************************
|
||||
* Grid
|
||||
******************************* */
|
||||
const initGrid = () => {
|
||||
const gridColumns = [
|
||||
{
|
||||
header: '경로',
|
||||
name: 'filePath',
|
||||
hidden: true
|
||||
},
|
||||
{
|
||||
header: '이름',
|
||||
name: 'fileNm',
|
||||
width: 420,
|
||||
//minWidth: 250,
|
||||
sortingType: 'desc',
|
||||
sortable: true,
|
||||
filter: 'select' //fiter 옵션(select/text/number/date/.. 등이 있으며 설정방법은 상이하므로 사이트 참조)
|
||||
},
|
||||
{
|
||||
header: '타입',
|
||||
name: 'fileType',
|
||||
width: 30,
|
||||
align: 'center',
|
||||
sortable: true,
|
||||
},
|
||||
{
|
||||
header: '크기',
|
||||
name: 'fileSize',
|
||||
width: 80,
|
||||
sortable: true,
|
||||
align: 'right',
|
||||
formatter({value}){
|
||||
return new Intl.NumberFormat('ko').format(value);
|
||||
}
|
||||
},
|
||||
{
|
||||
header: '생성일시',
|
||||
name: 'lastModified',
|
||||
width: 120,
|
||||
sortable: true,
|
||||
align: 'center',
|
||||
formatter({value}){
|
||||
//return StrDateTimeFormat.format(value);
|
||||
return value;
|
||||
}
|
||||
}
|
||||
];
|
||||
|
||||
const gridOptions = {
|
||||
el: 'grid',
|
||||
rowHeaders: ['rowNum'],
|
||||
columns: gridColumns,
|
||||
columnOptions: {
|
||||
frozenCount: 1
|
||||
},
|
||||
bodyHeight: 400,
|
||||
|
||||
paginationInfoRef : $$Control._paginationInfo
|
||||
};
|
||||
|
||||
GRID = TuiGrid.of(gridOptions);
|
||||
}
|
||||
|
||||
/**************************************************************************
|
||||
* initialize
|
||||
**************************************************************************/
|
||||
$(document).ready(function(){
|
||||
initGrid();
|
||||
$("#crdnSeCd option[value='09']").attr("disabled","disabled");
|
||||
});
|
||||
</script>
|
@ -1,199 +0,0 @@
|
||||
<%@ page import="cokr.xit.fims.biz.FimsConst" %><%--
|
||||
================================================================================
|
||||
File : /fims/biz/cmm/cmmCtznAnswerPreviewPopup.jsp
|
||||
Name : 답변내용 미리 보기 - 단속관리>단속현황관리>답변처리 탭
|
||||
Auth : lim.jong.uk
|
||||
Date : 2022-02-06
|
||||
Desc : 답변내용 미리 보기 팝업
|
||||
================================================================================
|
||||
Date Author Description
|
||||
================================================================================
|
||||
================================================================================
|
||||
--%>
|
||||
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
|
||||
<%@ include file="/WEB-INF/jsp/include/taglib.jsp"%>
|
||||
<%@ include file="/WEB-INF/jsp/include/fims/taglib.jsp"%>
|
||||
|
||||
<c:set var="ansSeCodeImpose" value="<%= FimsConst.AnswerSeCode.IMPOSE.getCode() %>"/>
|
||||
<c:set var="ansSeCodeDisallow" value="<%= FimsConst.AnswerSeCode.DISALLOW.getCode() %>"/>
|
||||
<c:set var="ansSeCodeEnlight" value="<%= FimsConst.AnswerSeCode.ENLIGHT.getCode() %>"/>
|
||||
|
||||
<div class="popup" style="min-width: 100px;">
|
||||
<div class="container-window1" style="flex-direction: column">
|
||||
<p class="container-window-header2" id="txtTitle">${txtTitle}<span style='font-weight: normal; padding-left: 20px; color:darkred;' id="ansInfo"></span></p>
|
||||
<form>
|
||||
<input type="hidden" name="interfaceSeqN"/>
|
||||
<table class="table-03">
|
||||
<caption>답변미리보기</caption>
|
||||
<colgroup>
|
||||
<col style="width: 100%;"/>
|
||||
<col/>
|
||||
</colgroup>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td colspan="2">
|
||||
<textarea id="cvlcptPrcsRsltCn" name='cvlcptPrcsRsltCn' cols="130" rows="20"></textarea>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</form>
|
||||
<div class="container-window-btn1">
|
||||
<div class="container-window-btn-right">
|
||||
<button type="button" id="double_prev" name="double_prev" class="btn btn-sm btn-pagination">
|
||||
<i class="fa-solid fa-angles-left"></i>
|
||||
</button>
|
||||
<button type="button" id="prev" name="prev" class="btn btn-sm btn-pagination">
|
||||
<i class="fa-solid fa-angle-left"></i>
|
||||
</button>
|
||||
<span id="totCnt" style="padding: 0 10px;"></span>
|
||||
<button type="button" id="next" name="next" class="btn btn-sm btn-pagination">
|
||||
<i class="fa-solid fa-angle-right"></i>
|
||||
</button>
|
||||
<button type="button" id="double_next" name="double_next" class="btn btn-sm btn-pagination">
|
||||
<i class="fa-solid fa-angles-right"></i>
|
||||
</button>
|
||||
<a href="#" class="btn btn-blue" id="btnSave">변경</a>
|
||||
<a href="#" id='btnClose' class="btn btn-lightgray">닫기</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<script defer type="text/javaScript">
|
||||
|
||||
/**************************************************************************
|
||||
* Global Variable
|
||||
**************************************************************************/
|
||||
let orgData;
|
||||
|
||||
/* *******************************
|
||||
* Biz function
|
||||
******************************* */
|
||||
const fnPopupBiz = {
|
||||
search: (params) => {
|
||||
cmmAjax({
|
||||
showSuccessMsg: false
|
||||
,url: fimsApiUrl.FIND_CTZN_ANS_INFO
|
||||
,data: params
|
||||
,success: (res) => {
|
||||
let navObj = {};
|
||||
if(window.opener.ARR_NAV != null){
|
||||
navObj = window.opener.ARR_NAV[window.opener.CUR_TAB_IDX];
|
||||
} else {
|
||||
navObj = window.opener.pageNav;
|
||||
}
|
||||
navObj.reloadNav($('#prev'), $('#next'), $('span#totCnt'));
|
||||
|
||||
fnPopupBiz.setAnsDataInfo(params);
|
||||
|
||||
const data = res.data?.contents;
|
||||
if(data){
|
||||
let formFields = new FimsFormFields("form");
|
||||
formFields.set(data);
|
||||
|
||||
orgData = $('form').serialize();
|
||||
}
|
||||
|
||||
//TODO : 답변대기인 경우 템플릿 조회로 진행하도록 반영(변경 버튼 숨김)
|
||||
//
|
||||
// const ansTxts = [];
|
||||
// if(!data){
|
||||
// ansTxts.push('답변 불가');
|
||||
// }else{
|
||||
// ansTxts.push(data.prface);
|
||||
// ansTxts.push(data.answerCn)
|
||||
// ansTxts.push(data.tlface)
|
||||
// }
|
||||
//$('#ansPreviewTxt').text(ansTxts.join('\n\n'));
|
||||
}
|
||||
})
|
||||
}
|
||||
,setAnsDataInfo: (param) => {
|
||||
let ansDiv = '';
|
||||
let resnNm = '';
|
||||
let ansInfoTxt = param.vhrno + ' [ ';
|
||||
if(param.answerSeCode === '${ansSeCodeImpose}'){
|
||||
ansInfoTxt += '부과 ]';
|
||||
} else if(param.answerSeCode === '${ansSeCodeDisallow}'){
|
||||
ansInfoTxt += '불수용(서손)';
|
||||
resnNm = ComboCodeData.disallowAnswerSeCode.filter(d => d.value === param.resnCode)[0]?.text;
|
||||
ansInfoTxt += resnNm ? ' : ' + resnNm + ' ]' : ' ]';
|
||||
}
|
||||
else if(param.answerSeCode === '${ansSeCodeEnlight}') {
|
||||
ansInfoTxt += '계도';
|
||||
resnNm = ComboCodeData.disallowAnswerSeCode.filter(d => d.value === param.resnCode)[0]?.text;
|
||||
ansInfoTxt += resnNm ? ' : ' + resnNm + ' ]' : ' ]';
|
||||
}
|
||||
|
||||
$('#ansInfo').text(ansInfoTxt);
|
||||
}
|
||||
}
|
||||
|
||||
/**************************************************************************
|
||||
* event
|
||||
**************************************************************************/
|
||||
$(() => {
|
||||
|
||||
$("#btnClose").on('click', () => {
|
||||
window.close()
|
||||
});
|
||||
$("#btnSave").on('click', () => {
|
||||
if(orgData === $('form').serialize()){
|
||||
alert('변경된 내용이 없습니다.');
|
||||
return false;
|
||||
}
|
||||
|
||||
cmmBizAjax('modify',{
|
||||
url: fimsApiUrl.MODIFY_CTZN_ANS_TXT
|
||||
,data: $('form').serialize()
|
||||
// ,data: {
|
||||
// interfaceSeqN: $('input[name=interfaceSeqN]').val()
|
||||
// ,cvlcptPrcsRsltCn: $('textarea[name=cvlcptPrcsRsltCn]').val()
|
||||
// }
|
||||
})
|
||||
});
|
||||
$('#prev').on('click', () => {
|
||||
let navObj = {};
|
||||
if(window.opener.ARR_NAV != null){
|
||||
navObj = window.opener.ARR_NAV[window.opener.CUR_TAB_IDX];
|
||||
} else {
|
||||
navObj = window.opener.pageNav;
|
||||
}
|
||||
|
||||
navObj.onClickNavBtn('prev', (gridInfo) => {
|
||||
fnPopupBiz.search(gridInfo.curRowData)
|
||||
});
|
||||
|
||||
})
|
||||
|
||||
$('#next').on('click', () => {
|
||||
let navObj = {};
|
||||
if(window.opener.ARR_NAV != null){
|
||||
navObj = window.opener.ARR_NAV[window.opener.CUR_TAB_IDX];
|
||||
} else {
|
||||
navObj = window.opener.pageNav;
|
||||
}
|
||||
|
||||
navObj.onClickNavBtn('next', (gridInfo) => {
|
||||
fnPopupBiz.search(gridInfo.curRowData);
|
||||
});
|
||||
});
|
||||
})
|
||||
|
||||
/**************************************************************************
|
||||
* initialize
|
||||
**************************************************************************/
|
||||
$(document).ready(function(){
|
||||
const param = {
|
||||
tmplatId: '${param.tmplatId}'
|
||||
,answerSeCode: '${param.answerSeCode}'
|
||||
,resnCode: '${param.resnCode}'
|
||||
,interfaceSeqN: '${param.interfaceSeqN}'
|
||||
,vhrno: '${param.vhrno}'
|
||||
}
|
||||
//fnPopupBiz.setAnsDataInfo(param);
|
||||
fnPopupBiz.search(param);
|
||||
});
|
||||
|
||||
</script>
|
@ -1,308 +0,0 @@
|
||||
<%--
|
||||
================================================================================
|
||||
File : /fims/biz/cmm/cmmCtznComplaintHistPopup.jsp
|
||||
Name : 단속현황 시민 민원 이력 팝업 - 단속관리>초기자료 편집
|
||||
Auth : lim.jong.uk
|
||||
Date : 2023-03-20
|
||||
Desc : 단속현황 시민 민원 이력 팝업
|
||||
================================================================================
|
||||
Date Author Description
|
||||
================================================================================
|
||||
================================================================================
|
||||
--%>
|
||||
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
|
||||
<%@ include file="/WEB-INF/jsp/include/taglib.jsp"%>
|
||||
<%@ include file="/WEB-INF/jsp/include/fims/taglib.jsp"%>
|
||||
|
||||
<div class="popup" style="min-width: 100px;">
|
||||
<div class="container-window2" style="max-width: 800px;">
|
||||
<p class="container-window-header2">
|
||||
민원 이력
|
||||
</p>
|
||||
|
||||
<div class="container-fix05">
|
||||
<div class="container-fix04 card">
|
||||
<div class="card-header card-header-line">
|
||||
<div class="card-title fw-bold">개별자료 민원 등록내역</div>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
<div id="grid_cplnt"></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="container-fix04 card">
|
||||
<div class="card-header card-header-line">
|
||||
<div class="card-title fw-bold">차량번호 민원 등록내역</div>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
<div id="grid_vhrno_cplnt"></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="container-fix05">
|
||||
<div class="container-fix04 card mt-3">
|
||||
<div class="card-header card-header-line">
|
||||
<div class="card-title fw-bold">민원 내용</div>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
<textarea id="content0" name="content0" cols="0" rows="5" style="overflow-y: scroll; width:100%;"></textarea>
|
||||
</div>
|
||||
</div>
|
||||
<div class="container-fix04 card mt-3">
|
||||
<div class="card-header card-header-line">
|
||||
<div class="card-title fw-bold">차량번호 민원 내용</div>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
<textarea id="content1" name="content1" cols="0" rows="5" style="overflow-y: scroll; width:100%;"></textarea>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="container-window-btn1">
|
||||
<div class="container-window-btn-right">
|
||||
<span>
|
||||
<a href="#" id='btnClose' class="btn btn-lightgray">닫기</a>
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
</div><!--row -->
|
||||
</div>
|
||||
<script type="text/javaScript">
|
||||
|
||||
let $$Control = new FimsDatasetControl({
|
||||
prefix:"aaa",
|
||||
prefixName:"ㅁㅁㅁ",
|
||||
infoSize:"xl",
|
||||
urls : {
|
||||
load : fimsApiUrl.FIND_CTZN_STTEMNT_CMPLT
|
||||
},
|
||||
keymapper:info => info ? info.SOME_KEY : "",
|
||||
dataGetter:obj => obj.data.contents
|
||||
});
|
||||
|
||||
$$Control.onDatasetChange = obj => {
|
||||
let pagination = obj.data.pagination;
|
||||
|
||||
if(obj.data.pagination){
|
||||
$$Control._paginationInfo.totalSize = pagination.totalSize;
|
||||
$$Control._paginationInfo.pageNum = pagination.pageNum;
|
||||
} else {
|
||||
$$Control._paginationInfo.totalSize = obj.count;
|
||||
}
|
||||
|
||||
$$Control.totalCountSetting(obj);
|
||||
|
||||
render$$List(obj.data);
|
||||
|
||||
if($$Control._paginationInfo.paging && $$Control._paginationInfo.pagingType == "nav"){
|
||||
let start = 0;
|
||||
if(pagination.pageNum > 1 && pagination.totalPage > 1 && pagination.totalSize > $$Control._paginationInfo.fetchSize){
|
||||
start = $$Control._paginationInfo.fetchSize * (pagination.pageNum - 1);
|
||||
}
|
||||
$("#grid1Paging").setPaging({
|
||||
list: $$Control.dataset,
|
||||
prefix: "grid_cplnt",
|
||||
start: start,
|
||||
totalSize: pagination.totalSize,
|
||||
fetchSize: $$Control._paginationInfo.fetchSize,
|
||||
func: "$$$Control.load({index})",
|
||||
});
|
||||
}
|
||||
};
|
||||
|
||||
function search$$s(){
|
||||
|
||||
$$Control.query = {gubun: 0, rtpyrId: '${param.rtpyrId}', crdnId: '${param.crdnId}'};
|
||||
$2$Control.query = {gubun: 1, vhrno: '${param.vhrno}'};
|
||||
|
||||
ARR_TAP_GRID[0].clear();
|
||||
ARR_TAP_GRID[1].clear();
|
||||
|
||||
$$Control.load(1);
|
||||
$2$Control.load(1);
|
||||
}
|
||||
|
||||
function render$$List(data) {
|
||||
if($$Control._paginationInfo.paging && $$Control._paginationInfo.pagingType == "nav"){
|
||||
ARR_TAP_GRID[0].clear();
|
||||
}
|
||||
ARR_TAP_GRID[0].appendRows(data.contents);
|
||||
}
|
||||
|
||||
let $2$Control = new FimsDatasetControl({
|
||||
prefix:"aaa",
|
||||
prefixName:"",
|
||||
infoSize:"xl",
|
||||
urls : {
|
||||
load : fimsApiUrl.FIND_CTZN_STTEMNT_CMPLT
|
||||
},
|
||||
keymapper:info => info ? info.SOME_KEY : "",
|
||||
dataGetter:obj => obj.data.contents
|
||||
});
|
||||
|
||||
$2$Control.onDatasetChange = obj => {
|
||||
let pagination = obj.data.pagination;
|
||||
|
||||
if(obj.data.pagination){
|
||||
$2$Control._paginationInfo.totalSize = pagination.totalSize;
|
||||
$2$Control._paginationInfo.pageNum = pagination.pageNum;
|
||||
} else {
|
||||
$2$Control._paginationInfo.totalSize = obj.count;
|
||||
}
|
||||
|
||||
$2$Control.totalCountSetting(obj);
|
||||
|
||||
render$2$List(obj.data);
|
||||
|
||||
if($2$Control._paginationInfo.paging && $2$Control._paginationInfo.pagingType == "nav"){
|
||||
let start = 0;
|
||||
if(pagination.pageNum > 1 && pagination.totalPage > 1 && pagination.totalSize > $2$Control._paginationInfo.fetchSize){
|
||||
start = $2$Control._paginationInfo.fetchSize * (pagination.pageNum - 1);
|
||||
}
|
||||
$("#grid2Paging").setPaging({
|
||||
list: $2$Control.dataset,
|
||||
prefix: "grid_vhrno_cplnt",
|
||||
start: start,
|
||||
totalSize: pagination.totalSize,
|
||||
fetchSize: $2$Control._paginationInfo.fetchSize,
|
||||
func: "$$$2Control.load({index})",
|
||||
});
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
function render$2$List(data) {
|
||||
if($2$Control._paginationInfo.paging && $2$Control._paginationInfo.pagingType == "nav"){
|
||||
ARR_TAP_GRID[1].clear();
|
||||
}
|
||||
ARR_TAP_GRID[1].appendRows(data.contents);
|
||||
}
|
||||
/**************************************************************************
|
||||
* Global Variable
|
||||
**************************************************************************/
|
||||
// 민원 등록 이력 / 차량 번호 민원 등록 이력
|
||||
const ARR_TAP_GRID = [null,null];
|
||||
const ARR_TAP_TOTCNT = [0, 0];
|
||||
let CUR_TAB_SEQ = 0;
|
||||
|
||||
|
||||
/* *******************************
|
||||
* Biz function
|
||||
******************************* */
|
||||
const fnPopupBiz = {
|
||||
onCplntHisClickGrid: (props) => {
|
||||
const rowData = props.grid.getRow(props.rowKey);
|
||||
if(props.grid.el.id === 'grid_cplnt'){
|
||||
$('#content0').val(rowData.content);
|
||||
}else{
|
||||
$('#content1').val(rowData.content);
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
/**************************************************************************
|
||||
* event
|
||||
**************************************************************************/
|
||||
$(() => {
|
||||
$("#btnClose").on('click', () => {
|
||||
window.close()
|
||||
});
|
||||
});
|
||||
|
||||
/* ******************************
|
||||
* Grid
|
||||
****************************** */
|
||||
const initPopupGrid = () => {
|
||||
const vhrnoCplntHisColumns = [
|
||||
{
|
||||
header: '내용',
|
||||
name: 'content',
|
||||
minWidth: 150,
|
||||
//editor: 'text',
|
||||
sortable: false,
|
||||
align: 'center',
|
||||
renderer: {
|
||||
type: CustomButtonRenderer,
|
||||
options: {
|
||||
formatter: (props)=>{
|
||||
return {
|
||||
formatter: props.grid.getRow(props.rowKey).content
|
||||
,element: "text"
|
||||
}
|
||||
}
|
||||
,eventFunction: fnPopupBiz.onCplntHisClickGrid
|
||||
,eventType: "click"
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
header: '차량번호',
|
||||
name: 'vhrno',
|
||||
minWidth: 90,
|
||||
//editor: 'text',
|
||||
sortable: false,
|
||||
align: 'center'
|
||||
},
|
||||
{
|
||||
header: '등록일시',
|
||||
name: 'regDt',
|
||||
minWidth: 120,
|
||||
//editor: 'text',
|
||||
sortable: true,
|
||||
align: 'center',
|
||||
formatter({value}) {
|
||||
return StrDateTimeFormat.format(value);
|
||||
}
|
||||
|
||||
},
|
||||
{
|
||||
header: '등록자',
|
||||
name: 'rgtr',
|
||||
minWidth: 120,
|
||||
//editor: 'text',
|
||||
sortable: false,
|
||||
align: 'center'
|
||||
}
|
||||
];
|
||||
|
||||
const cplntHisColumns = vhrnoCplntHisColumns.filter((_, index) => index !== 1 );
|
||||
|
||||
|
||||
const gridOptions = {
|
||||
minBodyHeight: 200,
|
||||
bodyHeight: 200, //[선택]Grid 높이 (number(단위: px)|'auto'|'fitToParent')
|
||||
rowHeaders: ['rowNum']
|
||||
};
|
||||
|
||||
// 민원 등록 내역
|
||||
ARR_TAP_GRID[0] = TuiGrid.of({
|
||||
...gridOptions,
|
||||
el: 'grid_cplnt',
|
||||
columns: cplntHisColumns,
|
||||
paginationInfoRef : $$Control._paginationInfo
|
||||
});
|
||||
|
||||
// 차량 번호 민원 등록 내역
|
||||
ARR_TAP_GRID[1] = TuiGrid.of({
|
||||
...gridOptions,
|
||||
el: 'grid_vhrno_cplnt',
|
||||
columns: vhrnoCplntHisColumns,
|
||||
paginationInfoRef : $2$Control._paginationInfo
|
||||
});
|
||||
};
|
||||
|
||||
|
||||
/**************************************************************************
|
||||
* initialize
|
||||
**************************************************************************/
|
||||
$(document).ready(function(){
|
||||
initPopupGrid();
|
||||
const param = {
|
||||
crdnId: '${param.crdnId}'
|
||||
,rtpyrId: '${param.rtpyrId}'
|
||||
,vhrno: '${param.vhrno}'
|
||||
};
|
||||
|
||||
search$$s();
|
||||
|
||||
});
|
||||
|
||||
</script>
|
@ -1,160 +0,0 @@
|
||||
<%--
|
||||
================================================================================
|
||||
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/include/taglib.jsp"%>
|
||||
<%@ include file="/WEB-INF/jsp/include/fims/taglib.jsp"%>
|
||||
|
||||
<style>
|
||||
#crdnSttsCd {
|
||||
width: 29%;
|
||||
color: #2a48ff;
|
||||
background-color: #d8e7ff;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
#crdnRegSeCd {
|
||||
color: #2a48ff;
|
||||
background-color: #d8e7ff;
|
||||
}
|
||||
|
||||
.act_bg_color {
|
||||
background-color: #d8e7ff; !important;
|
||||
}
|
||||
.bg_red_color {
|
||||
background-color: darkred;
|
||||
}
|
||||
|
||||
select[name=ffnlgCarmdlCd] {
|
||||
width: 30%;
|
||||
}
|
||||
select[name=rtpyrSeCd] {
|
||||
width: 25%;
|
||||
}
|
||||
</style>
|
||||
|
||||
<c:set var="isUpdate" value="${!empty infoDTO.crdnId}"/>
|
||||
|
||||
<c:set var="bizName" value="주민 신고"/>
|
||||
|
||||
|
||||
<div class="popup" style="min-width: 100px;">
|
||||
<div class="container-window1" style="flex-direction: column">
|
||||
<p class="container-window-header2" id="txtTitle">${txtTitle}</p>
|
||||
<form>
|
||||
<table class="table-03">
|
||||
<caption>위반정보 상세</caption>
|
||||
<colgroup>
|
||||
<col style="width: 20%;"/>
|
||||
<col/>
|
||||
</colgroup>
|
||||
<tbody>
|
||||
<tr id="t">
|
||||
<th>처리일</th>
|
||||
<td>
|
||||
<span class="form-search-linebox">
|
||||
<input type="text" id="processDt" name="processDt" style="width: 50%" class="form-control form-date" title="처리일 선택" placeholder="날짜를 선택하세요">
|
||||
<button type="button" class="bx bx-calendar bg-white"></button>
|
||||
</span>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>처리사유</th>
|
||||
<td>
|
||||
<code:select id="enlightResnCode" name="enlightResnCode" grpId="FIM025" defaultSelect="00" title="계도사유" cls="form-select" alt="계도사유"/>
|
||||
<code:select id="levyExclRsnCd" name="levyExclRsnCd" grpId="FIM021" title="서손구분" defaultSelect="01" cls="form-select" alt="서손구분"/>
|
||||
</td>
|
||||
</tr>
|
||||
<tr id="trErpp">
|
||||
<th>특기사항</th>
|
||||
<td>
|
||||
<input type="text" id='etcCn' name="etcCn" />
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</form>
|
||||
<div class="container-window-btn1">
|
||||
<div class="container-window-btn-right">
|
||||
<a href="#" class="btn btn-blue" id="btnSave">처리</a>
|
||||
<a href="#" id='btnClose' class="btn btn-lightgray">닫기</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<script defer type="text/javaScript">
|
||||
|
||||
/**************************************************************************
|
||||
* Global Variable
|
||||
**************************************************************************/
|
||||
let bizDiv;
|
||||
|
||||
/* *******************************
|
||||
* Biz function
|
||||
******************************* */
|
||||
const fnPopupBiz = {
|
||||
changeTag: () => {
|
||||
if(bizDiv ==='ENLIGHT'){
|
||||
$('#enlightResnCode').show();
|
||||
$('#levyExclRsnCd').hide();
|
||||
$('#trErpp').hide();
|
||||
}else{
|
||||
$('#enlightResnCode').hide();
|
||||
$('#levyExclRsnCd').show();
|
||||
$('#trErpp').show();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**************************************************************************
|
||||
* event
|
||||
**************************************************************************/
|
||||
$(() => {
|
||||
|
||||
$("#btnClose").on('click', () => {
|
||||
window.close()
|
||||
});
|
||||
|
||||
$("#btnSave").on('click', () => {
|
||||
if(bizDiv ==='ENLIGHT'){
|
||||
window.opener.callbackEnlightErpp({
|
||||
bizDiv
|
||||
,processDt: $('#processDt').val().replaceAll('-','')
|
||||
,enlightResnCode: $('#enlightResnCode').val()
|
||||
,levyExclRsnCd: ''
|
||||
,etcCn: ''
|
||||
})
|
||||
}else{
|
||||
window.opener.callbackEnlightErpp({
|
||||
bizDiv
|
||||
,processDt: $('#processDt').val().replaceAll('-','')
|
||||
,enlightResnCode: ''
|
||||
,levyExclRsnCd: $('#levyExclRsnCd').val()
|
||||
,etcCn: $('#etcCn').val()
|
||||
})
|
||||
}
|
||||
window.close()
|
||||
});
|
||||
})
|
||||
|
||||
/**************************************************************************
|
||||
* initialize
|
||||
**************************************************************************/
|
||||
$(document).ready(function(){
|
||||
$('#processDt').datepicker('setDate', new Date());
|
||||
bizDiv = '${bizDiv}';
|
||||
fnPopupBiz.changeTag();
|
||||
|
||||
});
|
||||
|
||||
</script>
|
@ -1,834 +0,0 @@
|
||||
<%@ page import="cokr.xit.fims.biz.FimsConst" %><%--
|
||||
================================================================================
|
||||
File : /fims/biz/cmm/cmmCrackdownEditPopup.jsp
|
||||
Name : 단속 데이타 처리 - 단속관리>단속현황관리
|
||||
Auth : lim.jong.uk
|
||||
Date : 2022-01-20
|
||||
Desc : 단속 데이타 처리 팝업
|
||||
================================================================================
|
||||
Date Author Description
|
||||
================================================================================
|
||||
================================================================================
|
||||
--%>
|
||||
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
|
||||
<%@ include file="/WEB-INF/jsp/include/taglib.jsp"%>
|
||||
<%@ include file="/WEB-INF/jsp/include/fims/taglib.jsp"%>
|
||||
<c:set var="citizen" value="<%= FimsConst.CrdnSeCd.CITIZEN.getCode() %>"/>
|
||||
|
||||
<style>
|
||||
|
||||
#crdnRegSeCd {
|
||||
color: #2a48ff;
|
||||
background-color: #d8e7ff;
|
||||
}
|
||||
|
||||
.act_bg_color {
|
||||
background-color: #d8e7ff; !important;
|
||||
}
|
||||
.bg_red_color {
|
||||
background-color: darkred;
|
||||
}
|
||||
|
||||
|
||||
/* 단속 건수 */
|
||||
.empCls {
|
||||
color: #2a48ff;
|
||||
background-color: #d8e7ff;
|
||||
}
|
||||
</style>
|
||||
|
||||
<div class="popup" style="min-width: 100px;">
|
||||
<div class="container-window1 flex-row">
|
||||
<div class="container-fix09 card">
|
||||
<div class="card-header card-header-line">
|
||||
<div id="txtTitle" class="card-title fw-bold"></div>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
<form id="frm">
|
||||
<input type="hidden" name="crdnId" />
|
||||
<input type="hidden" name="fileLinkId" />
|
||||
<input type="hidden" name="interfaceSeqN" />
|
||||
<input type="hidden" name="rtpyrId" />
|
||||
<table class="table-03 col-12">
|
||||
<caption>위반정보 상세</caption>
|
||||
<colgroup>
|
||||
<col style="width: 12%;"/>
|
||||
<col style="width: 39%;"/>
|
||||
<col style="width: 12%;"/>
|
||||
<col style="width: 39%;"/>
|
||||
</colgroup>
|
||||
<tbody>
|
||||
<tr>
|
||||
<th>시스템구분</th>
|
||||
<td>
|
||||
<code:select id="sysSeCd" name="sysSeCd" grpId="FIM001" title="시스템구분" cls="form-select" alt="시스템구분" disabled="true"/>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>등록구분</th>
|
||||
<td>
|
||||
<code:select id="crdnRegSeCd" name="crdnRegSeCd" grpId="FIM026" title="단속자료등록구분" cls="form-select" alt="단속자료등록구분"/>
|
||||
</td>
|
||||
<th>자료출처</th>
|
||||
<td>
|
||||
<code:select id="crdnSeCd" name="crdnSeCd" grpId="FIM002" title="자료출처" cls="form-select" alt="자료출처" disabled="true"/>
|
||||
</td>
|
||||
</tr>
|
||||
<tr id="t">
|
||||
<th>위반일</th>
|
||||
<td>
|
||||
<span class="form-search-linebox">
|
||||
<input type="text" data-fmt-type="day" id="crdnYmd" name="crdnYmd"
|
||||
class="form-control form-date w-form-date" title="위반일 선택"
|
||||
placeholder="날짜를 선택하세요">
|
||||
<button type="button" class="bx bx-calendar bg-white"></button>
|
||||
</span>
|
||||
</td>
|
||||
<th>위반시간</th>
|
||||
<td>
|
||||
<input type="text" data-fmt-type="time" name="crdnBgngTm" class="act_bg_color" />
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>사진건수</th>
|
||||
<td>
|
||||
<div class="d-flex gap-1">
|
||||
<input type="text" name="atchFileCnt" data-fmt-type="number" class="w-px-50" />
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>GPS위도</th>
|
||||
<td>
|
||||
<input type="text" name="gpsX" readonly>
|
||||
</td>
|
||||
<th>GPS경도</th>
|
||||
<td>
|
||||
<input type="text" name="gpsY" readonly>
|
||||
</td>
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<th>처리상태</th>
|
||||
<td>
|
||||
<code:select id="trsmCd" name="trsmCd" grpId="FIM010" title="처리상태" cls="form-select" alt="처리상태" disabled="true"/>
|
||||
</td>
|
||||
</tr>
|
||||
<tr id="ctzn1">
|
||||
<th>신고자</th>
|
||||
<td>
|
||||
<input type="text" name="cvlcptAplcntNm" />
|
||||
</td>
|
||||
<th>연락처</th>
|
||||
<td>
|
||||
<input type="text" name="cvlcptAplcntMoblphonNo" />
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr id="ctzn2">
|
||||
<th>신고내용</th>
|
||||
<td colspan="3">
|
||||
<textarea type="text" name="cvlcptAplyCn" col="180" rows="5"></textarea>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<th>위반장소</th>
|
||||
<td colspan="3">
|
||||
<input type="text" name="crdnPlc" />
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>위반내역</th>
|
||||
<td colspan="3">
|
||||
<input type="text" name="vltnCn" />' readonly>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>시군구명</th>
|
||||
<td>
|
||||
<input type="text" name="sggNm" />
|
||||
</td>
|
||||
<th>법정동명</th>
|
||||
<td>
|
||||
<input type="text" name="crdnStdgNm" class="act_bg_color"/>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<th>접수일</th>
|
||||
<td>
|
||||
<input type="text" data-fmt-type="day" name="cvlcptRcptYmd" />
|
||||
</td>
|
||||
<th>답변기한</th>
|
||||
<td>
|
||||
<span class="form-search-linebox">
|
||||
<input type="text" data-fmt-type="day" name="cvlcptPrcsPrnmntYmd"
|
||||
class="form-control form-date w-form-date" title="답변기한 선택" placeholder="날짜를 선택하세요">
|
||||
<button type="button" class="bx bx-calendar bg-white"></button>
|
||||
</span>
|
||||
</td>
|
||||
</tr>
|
||||
<tr><td colspan="4" style="padding-bottom: 10px"></td></tr>
|
||||
<tr>
|
||||
<th>
|
||||
<label class="required">차량번호</label>
|
||||
</th>
|
||||
<td>
|
||||
<input type="text" name="vhrno" style="width: 50%" class="act_bg_color"/>
|
||||
<a href="javascript:void(0);" id="vhcleSearch">
|
||||
<i class="bx bx-search"></i>
|
||||
</a>
|
||||
<a href="javascript:fnPopupBiz.goCarCrackdownCntPopup()">
|
||||
<em id="crackdown" class="empCls">단속횟수: <span id="vhrnoCnt"></span> 회</em>
|
||||
</a>
|
||||
</td>
|
||||
<th>면제차량여부</th>
|
||||
<td>
|
||||
<input type="text" name="" style="width: 50%" readonly/>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>특기사항</th>
|
||||
<td colspan="3">
|
||||
<input type="text" name="etcCn" style="width: 70%" readonly/>
|
||||
<%-- <em id="minwon" class="empCls">민원등록: <span id="minwonCnt"></span> 회</em>--%>
|
||||
<a href="javascript:fnPopupBiz.goMinwonPopup()"><em id="minwon" class="empCls">민원등록이력: <span id="minwonCnt"></span> 회</em></a>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>소유자(차종)</th>
|
||||
<td>
|
||||
<div class="d-flex gap-1">
|
||||
<input type="text" name="rtpyrNm" />
|
||||
<code:select id="ffnlgCarmdlCd" name="ffnlgCarmdlCd" grpId="FIM009" title="차종" cls="form-select w-form-select" alt="차종"/>
|
||||
</div>
|
||||
</td>
|
||||
<th>주민번호(구분)</th>
|
||||
<td>
|
||||
<div class="d-flex gap-1">
|
||||
<code:select id="rtpyrSeCd" name="rtpyrSeCd" grpId="FIM011" title="납부자구분" cls="form-select w-form-select" alt="납부자구분"/>
|
||||
<privacy:input id="rtpyrNo" name="rtpyrNo" />
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>특별단속구역</th>
|
||||
<td>
|
||||
<code:select id="crdnSpareaCd" name="crdnSpareaCd" grpId="FIM007" title="특별단속구역" cls="form-select" alt="단속처리상태"/>
|
||||
</td>
|
||||
<th>위반내용</th>
|
||||
<td>
|
||||
<code:select id="violtDtlsCode" name="violtDtlsCode" grpId="FIM004" title="위반내용" cls="form-select" alt="위반내용"/>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>우편번호(주소)</th>
|
||||
<td colspan="3">
|
||||
<input type="text" name="zip" style="width: 30%" readonly/>
|
||||
<a href="javascript:void(0);" id="addrSearch">
|
||||
<i class="bx bx-search"></i>
|
||||
</a>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>주소</th>
|
||||
<td colspan="3">
|
||||
<input type="text" name="adres" style="width: 65%" readonly/>
|
||||
<input type="text" name="daddr" style="width: 33%" />
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>차량명칭/색상</th>
|
||||
<td>
|
||||
<input type="text" name="vhclNm" style="width:65%" readonly/>
|
||||
<input type="text" name="vhcleColor" value="" style="width:33%" readonly/>
|
||||
</td>
|
||||
<th>차대번호</th>
|
||||
<td>
|
||||
<input type="text" name="vin" />
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>등록일시</th>
|
||||
<td>
|
||||
<input type="text" name="regDt" readonly>
|
||||
</td>
|
||||
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</form>
|
||||
<div class="container-window-btn1">
|
||||
<div id="pageNavDiv" class="container-window-btn-right">
|
||||
<button type="button" id="double_prev" name="double_prev" class="btn btn-sm btn-pagination">
|
||||
<i class="fa-solid fa-angles-left"></i>
|
||||
</button>
|
||||
<button type="button" id="prev" name="prev" class="btn btn-sm btn-pagination">
|
||||
<i class="fa-solid fa-angle-left"></i>
|
||||
</button>
|
||||
<span id="totCnt" style="padding: 0 10px;"></span>
|
||||
<button type="button" id="next" name="next" class="btn btn-sm btn-pagination">
|
||||
<i class="fa-solid fa-angle-right"></i>
|
||||
</button>
|
||||
<button type="button" id="double_next" name="double_next" class="btn btn-sm btn-pagination">
|
||||
<i class="fa-solid fa-angles-right"></i>
|
||||
</button>
|
||||
</div>
|
||||
<a href="#" class="btn btn-blue" id="btnInst">등록</a>
|
||||
<c:if test="${!isImpose}">
|
||||
<a href="#" class="btn btn-blue" id="btnImposeTgt">부과대상</a>
|
||||
<a href="#" class="btn btn-blue" id="btnEnlight">계도처리</a>
|
||||
<a href="#" class="btn btn-blue" id="btnDisallow">서손처리</a>
|
||||
</c:if>
|
||||
<c:if test="${isImpose}">
|
||||
<a href="#" class="btn btn-blue" id="btnImpose">부과</a>
|
||||
</c:if>
|
||||
<a href="#" id='btnClose' class="btn btn-lightgray">닫기</a>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="container-fix09 card" style="width:0px; min-width:300px!important;">
|
||||
<div class="card-header card-header-line">
|
||||
<div class="card-title fw-bold">위반사진</div>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
<div id="imgList"></div>
|
||||
<div>
|
||||
<img id="uploadImage"/>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<script type="text/javascript" src="${pageContext.request.contextPath}/resources/js/fims/framework/cmm/cmmDownloadImg.js"></script>
|
||||
<script type="text/javaScript">
|
||||
|
||||
/**************************************************************************
|
||||
* Global Variable
|
||||
**************************************************************************/
|
||||
var fnCallbackZipSearch = (obj) => fnPopupBiz.setZipSearch(obj, document.querySelector('#frm'));
|
||||
var imageEditorPopup = (flag, params) => fnPopupBiz.pagePopup(flag, params);
|
||||
var callbackReloadImage = () => fnPopupBiz.downloadImg();
|
||||
var callbackEnlightErpp = (data) => fnPopupBiz.callbackEnlightErpp(data);
|
||||
|
||||
let formFields = new FimsFormFields("#frm");
|
||||
let orgData;
|
||||
let callPopup;
|
||||
let isCtzn = false;
|
||||
let imgPk = '';
|
||||
let crdnSeCd = '';
|
||||
|
||||
let schParam = null;
|
||||
let extnlCarUrl = '${extnlCarUrl}';
|
||||
|
||||
let $$Control = new FimsDatasetControl({
|
||||
prefix:"aaa",
|
||||
prefixName:"ㅁㅁㅁ",
|
||||
infoSize:"xl",
|
||||
urls : {
|
||||
imageEditor : frwkApiUrl.POPUP_PAINTWEB_IMG_EDITOR,
|
||||
imageView : frwkApiUrl.POPUP_IMG_VIEW,
|
||||
callEnlightErppPopup : fimsApiUrl.POPUP_ENLIGHT_DISALLOW,
|
||||
minwonPopup : fimsApiUrl.POPUP_CTZN_CMPLNT_HIST,
|
||||
carCrackdownCntPopup : fimsApiUrl.POPUP_CAR_CRACKDOWN_CNT
|
||||
},
|
||||
keymapper:info => info ? info.SOME_KEY : "",
|
||||
dataGetter:obj => obj.data.contents
|
||||
});
|
||||
|
||||
/* *******************************
|
||||
* Biz function
|
||||
******************************* */
|
||||
const fnPopupBiz = {
|
||||
search: (params) => {
|
||||
cmmAjax({
|
||||
showSuccessMsg: false
|
||||
,url: fimsApiUrl.FIND_CRACKDOWN_INFO
|
||||
,data: params
|
||||
,success: (res) => {
|
||||
let dataKey = '';
|
||||
let curId = res.infoDTO.crdnId;
|
||||
let vhrnoCnt = 0;
|
||||
crdnSeCd = res.infoDTO.crdnSeCd;
|
||||
|
||||
if(crdnSeCd === '${citizen}'){
|
||||
isCtzn = true;
|
||||
imgPk = res.infoDTO.interfaceSeqN;
|
||||
dataKey = imgPk + ' - ' + res.infoDTO.interfaceSeqN;
|
||||
}else{
|
||||
isCtzn = false;
|
||||
imgPk = res.infoDTO.fileLinkId;
|
||||
dataKey = imgPk;
|
||||
}
|
||||
|
||||
let crdnSeNm = "";
|
||||
if(crdnSeCd != null && crdnSeCd != ""){
|
||||
crdnSeNm = ComboCodeData.crdnSeCd.filter(d => d.value === crdnSeCd)[0].text;
|
||||
}
|
||||
$('#txtTitle').html(crdnSeNm + ' [ ' + dataKey + ' ]');
|
||||
|
||||
fnPopupBiz.showCrackdownVhrnoCnt(res.infoDTO.vhrnoCnt);
|
||||
fnPopupBiz.showMinwonCnt(res.infoDTO.minwonCnt);
|
||||
schParam = {
|
||||
crdnId: res.infoDTO?.crdnId,
|
||||
crdnSeCd: res.infoDTO?.crdnSeCd,
|
||||
rtpyrId: res.infoDTO.rtpyrId,
|
||||
vhrno: res.infoDTO.vhrno
|
||||
}
|
||||
|
||||
cmmImgDownload('#imgList', res.attchFiles, fnPopupBiz.pagePopup, true, '60px',
|
||||
() => ''
|
||||
);
|
||||
|
||||
let navObj = {};
|
||||
if(window.opener.ARR_NAV != null){
|
||||
navObj = window.opener.ARR_NAV[window.opener.CUR_TAB_IDX];
|
||||
} else {
|
||||
navObj = window.opener.pageNav;
|
||||
}
|
||||
navObj.reloadNav($('#prev'), $('#next'), $('span#totCnt'));
|
||||
|
||||
fnPopupBiz.resetDisplay(res.ctznDTO?.cvlcptRcptNo);
|
||||
|
||||
let formFields = new FimsFormFields("#frm");
|
||||
formFields.set({...res.ctznDTO, ...res.rtpyrDTO, ...res.infoDTO});
|
||||
|
||||
orgData = $('form').serialize();
|
||||
}
|
||||
})
|
||||
}
|
||||
,downloadImg: () => {
|
||||
cmmAjax({
|
||||
showSuccessMsg: false
|
||||
,url: isCtzn? fimsApiUrl.FIND_EC_NATL_NEWS_PAPER_ATTCH_FILES : fimsApiUrl.FIND_EC_EXTRL_REGLT_CNTC_ATTCH_FILES
|
||||
,data: isCtzn? {interfaceSeqN: imgPk} : {fileLinkId: imgPk, crdnSeCd: crdnSeCd}
|
||||
,success: (res) => {
|
||||
cmmImgDownload('#imgList', res.data?.contents, fnPopupBiz.pagePopup, true);
|
||||
}
|
||||
})
|
||||
}
|
||||
,pagePopup: function(flag, params) {
|
||||
let url;
|
||||
let popTitle;
|
||||
let popOption;
|
||||
switch (flag) {
|
||||
//FIXME: 이미지에디터 팝업 width, height는 952, 800으로 fix
|
||||
// paintweb config의 imageWidth, imageHeight, viewportWidth, viewPortHeight 와 같이 연관
|
||||
case "imageEditor":
|
||||
popOption = {width: 952, height: 800, resizable:false,scrollbars:'no'};
|
||||
popTitle = "이미지 에디터";
|
||||
window.opener.popup = CmmPopup.open($$Control.urls[flag], params, popOption, popTitle);
|
||||
break;
|
||||
case "imageView":
|
||||
popOption = {width: 950, height: 750, resizable:false,scrollbars:'no'};
|
||||
popTitle = "이미지 보기";
|
||||
window.opener.popup = CmmPopup.open($$Control.urls[flag], params, popOption, popTitle);
|
||||
break;
|
||||
case "callEnlightErppPopup":
|
||||
popOption = {width: 500, height: 400};
|
||||
popTitle = "계도 / 서손 처리";
|
||||
callPopup = CmmPopup.open($$Control.urls[flag], params, popOption, popTitle);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
,setZipSearch: function(zipObj, tgtObj){
|
||||
//FIXME : 소유자 정보에 필요한 내용 추가 필요 - 법정동, 빌딩명, 주소구분 등
|
||||
// hidden 필드로 추가도 함께
|
||||
tgtObj.adres.value = zipObj.roadAddrPart1;
|
||||
tgtObj.zip.value = zipObj.zipNo;
|
||||
//tgtObj.zip_view.value = zipObj.zipNo;
|
||||
tgtObj.daddr.value = zipObj.roadAddrPart2 + ' ' + zipObj.addrDetail;
|
||||
|
||||
}
|
||||
,resetDisplay: (cvlcptRcptNo) => {
|
||||
if(cvlcptRcptNo){
|
||||
//$('tr[id*=cctv]').hide();
|
||||
$('tr[id*=ctzn]').show();
|
||||
|
||||
} else{
|
||||
//$('tr[id*=cctv]').show();
|
||||
$('tr[id*=ctzn]').hide();
|
||||
}
|
||||
}
|
||||
,findCarNo: () => {
|
||||
if(!$('input[name=vhrno]').val()){
|
||||
alert('먼처 차량번호를 입력해 주세요.');
|
||||
$('input[name=vhrno]').focus();
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
///////////////////////////////////////////////////
|
||||
// FIXME :: 차적조회 연계
|
||||
///////////////////////////////////////////////////
|
||||
|
||||
/*
|
||||
owner_mber_no(회원번호:주민/법인번호), vin:차대번호, vhrno: 차량번호 중 1개 필수
|
||||
levy_stdde: 부과기준일(yyyyMMdd)
|
||||
*/
|
||||
const param = {
|
||||
owner_mber_no: '',
|
||||
vin: $('input[name=vin]').val(),
|
||||
vhrno: $('input[name=vhrno]').val(),
|
||||
levy_stdde: '20220122'
|
||||
}
|
||||
|
||||
let url = extnlCarUrl + '/api/v1/car/findCar';
|
||||
cmmApiCall({
|
||||
url
|
||||
, data: JSON.stringify(param)
|
||||
, success: (res) => {
|
||||
alert('차적조회 결과 : \n' + JSON.stringify(res));
|
||||
///////////////////////////////////////////////////
|
||||
// FIXME :: 차적조회 연계 완료후 binding 필요
|
||||
///////////////////////////////////////////////////
|
||||
$('input[name=vhclNm]').val(res.cnm);
|
||||
$('input[name=vhcleColor]').val(res.color_nm);
|
||||
|
||||
cmmAjax({
|
||||
showSuccessMsg: false
|
||||
, url: fimsApiUrl.FIND_CRACKDOWN_VHRNO_CNT
|
||||
, data: {vhrno: $('input[name=vhrno]').val()}
|
||||
, success: (res) => {
|
||||
fnPopupBiz.showCrackdownVhrnoCnt(res.data?.contents);
|
||||
}
|
||||
})
|
||||
|
||||
|
||||
}
|
||||
})
|
||||
|
||||
}
|
||||
,callbackEnlightErpp: (data) => {
|
||||
//if(!fnPopupBiz.validate()) return false;
|
||||
|
||||
let saveData = fnPopupBiz.getSaveData(data);
|
||||
let url;
|
||||
let confirmMsg;
|
||||
if(data.bizDiv ==='ENLIGHT'){
|
||||
url = '/fims/biz/cmm/saveEnlight.do';
|
||||
confirmMsg = '계도'
|
||||
|
||||
}else{
|
||||
const erppDTO = {
|
||||
crdnId: saveData.crdnId
|
||||
, levyExclYmd:data.processDt
|
||||
, levyExclRsnCd: data.levyExclRsnCd
|
||||
, etcCn: data.etcCn
|
||||
}
|
||||
saveData = {...saveData, erppDTO: erppDTO}
|
||||
url = '/fims/biz/cmm/saveDisallow.do';
|
||||
confirmMsg = '불수용(서손)'
|
||||
}
|
||||
|
||||
//if(!confirm(confirmMsg + ' 처리 하시겠습니까?')) return false;
|
||||
cmmAjax({
|
||||
url: url
|
||||
,contentType: 'application/json'
|
||||
,data: JSON.stringify(saveData)
|
||||
,success: (res) => {
|
||||
let navObj = {};
|
||||
if(window.opener.ARR_NAV != null){
|
||||
navObj = window.opener.ARR_NAV[window.opener.CUR_TAB_IDX];
|
||||
} else {
|
||||
navObj = window.opener.pageNav;
|
||||
}
|
||||
|
||||
navObj.onClickNavBtn('next', (gridInfo) => {
|
||||
fnPopupBiz.search(gridInfo.curRowData);
|
||||
});
|
||||
|
||||
}
|
||||
})
|
||||
}
|
||||
,getSaveData: (data) => {
|
||||
|
||||
const infoDTO = {
|
||||
crdnId: $('input[name=crdnId]').val()
|
||||
,fileLinkId: $('input[name=fileLinkId]').val()
|
||||
,interfaceSeqN: $('input[name=interfaceSeqN]').val()
|
||||
,crdnSeCd: $('select[name=crdnSeCd]').val()
|
||||
,crdnRegSeCd: $('select[name=crdnRegSeCd]').val()
|
||||
,crdnYmd: $('input[name=crdnYmd]').val().replaceAll('-','')
|
||||
,crdnBgngTm: $('input[name=crdnBgngTm]').val()
|
||||
,sysSeCd: $('select[name=sysSeCd]').val()
|
||||
,atchFileCnt: $('input[name=atchFileCnt]').val()
|
||||
,crdnPlc: $('input[name=crdnPlc]').val()
|
||||
|
||||
//시군군 추가
|
||||
|
||||
,crdnStdgNm: $('input[name=crdnStdgNm]').val()
|
||||
,vhrno: $('input[name=vhrno]').val()
|
||||
|
||||
//면제차량 여부 추가 : $('input:checkbox[name=sysSeCd]:checked').val()
|
||||
|
||||
,etcCn: $('input[name=etcCn]').val()
|
||||
,ffnlgCarmdlCd: $('select[name=ffnlgCarmdlCd]').val()
|
||||
,crdnSpareaCd: $('select[name=crdnSpareaCd]').val()
|
||||
,violtDtlsCode: $('select[name=violtDtlsCode]').val()
|
||||
,vhclNm: $('input[name=vhclNm]').val()
|
||||
,vin: $('input[name=vin]').val()
|
||||
,enlightProcessDe: data?.processDt
|
||||
,enlightResnCode: data?.enlightResnCode
|
||||
}
|
||||
|
||||
const ctznDTO = {
|
||||
interfaceSeqN: $('input[name=interfaceSeqN]').val()
|
||||
,cvlcptAplcntNm: $('input[name=cvlcptAplcntNm]').val()
|
||||
,cvlcptAplcntMoblphonNo: $('input[name=cvlcptAplcntMoblphonNo]').val()
|
||||
,cvlcptAplyCn: $('input[name=cvlcptAplyCn]').val()
|
||||
,cvlcptRcptYmd: $('input[name=cvlcptRcptYmd]').val()
|
||||
,cvlcptPrcsPrnmntYmd: $('input[name=cvlcptPrcsPrnmntYmd]').val()
|
||||
,cvlcptAplyCn: $('input[name=cvlcptAplyCn]').val()
|
||||
}
|
||||
|
||||
const rtpyrDTO = {
|
||||
rtpyrId: $('input[name=rtpyrId]').val()
|
||||
,rtpyrSeCd: $('input[name=rtpyrSeCd]').val()
|
||||
,rtpyrNm: $('input[name=rtpyrNm]').val()
|
||||
,rtpyrNo: $('input[name=rtpyrNo]').val()
|
||||
,zip: $('input[name=zip]').val()
|
||||
,adres: $('input[name=adres]').val()
|
||||
,daddr: $('input[name=daddr]').val()
|
||||
}
|
||||
|
||||
return {
|
||||
crdnId: $('input[name=crdnId]').val()
|
||||
,fileLinkId: $('input[name=fileLinkId]').val()
|
||||
,interfaceSeqN: $('input[name=interfaceSeqN]').val()
|
||||
,crdnSeCd: $('select[name=crdnSeCd]').val()
|
||||
,infoDTO
|
||||
,ctznDTO
|
||||
,rtpyrDTO
|
||||
}
|
||||
|
||||
}
|
||||
,validate: () => {
|
||||
if(orgData === $('form').serialize()){
|
||||
alert('변경된 내용이 없습니다.');
|
||||
return false;
|
||||
}
|
||||
if(!$('input[name=vhrno]').val()){
|
||||
alert('차량번호는 필수 입니다.');
|
||||
$('input[name=vhrno]').focus();
|
||||
return false;
|
||||
}
|
||||
if(!$('input[name=vin]').val()){
|
||||
if(!confirm('차대 번호가 입력되지 않았습니다.\n계속 하시겠습니까?')){
|
||||
$('input[name=vin]').focus();
|
||||
return false;
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
,add: () => {
|
||||
if (!fnPopupBiz.validate()) return;
|
||||
|
||||
cmmBizAjax('add', {
|
||||
url: fimsApiUrl.ADD_RT_REGLT
|
||||
, data: formFields.get()
|
||||
})
|
||||
}
|
||||
,modify: () => {
|
||||
/*if (!fnBiz.validate()) return;*/
|
||||
|
||||
cmmBizAjax('modify', {
|
||||
url: fimsApiUrl.MODIFY_RT_REGLT
|
||||
,data: $("#frm").serialize()
|
||||
});
|
||||
}
|
||||
,remove: () => {
|
||||
$("input[name=useYn]").val('N');
|
||||
cmmBizAjax('remove', {
|
||||
url: fimsApiUrl.REMOVE_RT_REGLT
|
||||
,data: $("#frm").serialize()
|
||||
});
|
||||
}
|
||||
,erpp: (fileLinkId) => {
|
||||
const data = {
|
||||
fileLinkId
|
||||
,crdnSeCd: ''
|
||||
}
|
||||
if(!confirm('서손 처리 하시겠습니까?')) return false;
|
||||
cmmAjax({
|
||||
url: fimsApiUrl.SAVE_EC_EXTRL_REGLT_CNTC_RT_ERPP
|
||||
,data: $.param(data)
|
||||
})
|
||||
}
|
||||
|
||||
// 차량 단속 건수 표시
|
||||
,showCrackdownVhrnoCnt: (cnt) => {
|
||||
if(cnt > 0) {
|
||||
$('#vhrnoCnt').html(cnt);
|
||||
$('#crackdown').show();
|
||||
}else{
|
||||
$('#crackdown').hide();
|
||||
}
|
||||
}
|
||||
|
||||
// 민원 건수 표시
|
||||
,showMinwonCnt: (cnt) => {
|
||||
if(cnt > 0) {
|
||||
$('#minwonCnt').html(cnt);
|
||||
$('#minwon').show();
|
||||
}else{
|
||||
$('#minwon').hide();
|
||||
}
|
||||
}
|
||||
|
||||
,goMinwonPopup: () => {
|
||||
const url = fimsApiUrl.POPUP_CTZN_CMPLNT_HIST;
|
||||
const popOption = {width: 800, height:600};
|
||||
const popTitle = "민원 내역 조회";
|
||||
const params = {crdnId: schParam.crdnId, rtpyrId: schParam.rtpyrId, vhrno:schParam.vhrno}
|
||||
const p = CmmPopup.open($$Control.urls.minwonPopup, params, popOption, popTitle);
|
||||
}
|
||||
|
||||
,goCarCrackdownCntPopup: () => {
|
||||
const url = fimsApiUrl.POPUP_CAR_CRACKDOWN_CNT;
|
||||
const popOption = {width: 900, height:600};
|
||||
const popTitle = "민원 내역 조회";
|
||||
const params = {crdnId: schParam.crdnId, rtpyrId: schParam.rtpyrId, vhrno:schParam.vhrno}
|
||||
const p = CmmPopup.open($$Control.urls.carCrackdownCntPopup, params, popOption, popTitle);
|
||||
}
|
||||
};
|
||||
|
||||
/**************************************************************************
|
||||
* event
|
||||
**************************************************************************/
|
||||
$(() => {
|
||||
|
||||
|
||||
$("#btnClose").on('click', () => {
|
||||
|
||||
window.opener?.callbackSearch();
|
||||
|
||||
if ( self !== top ) {
|
||||
parent.$("#cmmModal").find(".btn-close").trigger("click");
|
||||
} else {
|
||||
window.close();
|
||||
}
|
||||
|
||||
});
|
||||
|
||||
$("#btnInst").on('click', () => {
|
||||
fnPopupBiz.add();
|
||||
});
|
||||
|
||||
|
||||
$('#addrSearch').on('click', () => CmmPopup.zipPopup());
|
||||
|
||||
$('#vhcleSearch').on('click', () => {
|
||||
fnPopupBiz.findCarNo();
|
||||
|
||||
});
|
||||
|
||||
$('#btnImposeTgt').on('click', (e) => {
|
||||
if(!fnPopupBiz.validate()) return false;
|
||||
|
||||
let saveData = fnPopupBiz.getSaveData();
|
||||
|
||||
cmmAjax({
|
||||
url: '/fims/biz/cmm/saveImposeTgt.do'
|
||||
,contentType: 'application/json'
|
||||
,data: JSON.stringify(saveData)
|
||||
})
|
||||
});
|
||||
|
||||
$('#btnEnlight, #btnDisallow').on('click', (e) => {
|
||||
if(!fnPopupBiz.validate()) return false;
|
||||
|
||||
const id = e.target.id;
|
||||
let bizDiv;
|
||||
switch(id){
|
||||
case 'btnEnlight':
|
||||
fnPopupBiz.pagePopup('callEnlightErppPopup', {bizDiv: 'ENLIGHT'})
|
||||
break;
|
||||
|
||||
case 'btnDisallow':
|
||||
fnPopupBiz.pagePopup('callEnlightErppPopup', {bizDiv: 'DISALLOW'})
|
||||
break;
|
||||
default:
|
||||
return false;
|
||||
}
|
||||
});
|
||||
|
||||
$('#btnImpose').on('click', (e) => {
|
||||
alert('과태료 시스템 인터페이스(세올)');
|
||||
|
||||
});
|
||||
|
||||
$('#btnRemove').on('click', () => {
|
||||
fnPopupBiz.remove();
|
||||
});
|
||||
|
||||
$('#prev').on('click', () => {
|
||||
let navObj = {};
|
||||
if(window.opener.ARR_NAV != null){
|
||||
navObj = window.opener.ARR_NAV[window.opener.CUR_TAB_IDX];
|
||||
} else {
|
||||
navObj = window.opener.pageNav;
|
||||
}
|
||||
|
||||
navObj.onClickNavBtn('prev', (gridInfo) => {
|
||||
fnPopupBiz.search(gridInfo.curRowData)
|
||||
});
|
||||
|
||||
})
|
||||
|
||||
$('#next').on('click', () => {
|
||||
let navObj = {};
|
||||
if(window.opener.ARR_NAV != null){
|
||||
navObj = window.opener.ARR_NAV[window.opener.CUR_TAB_IDX];
|
||||
} else {
|
||||
navObj = window.opener.pageNav;
|
||||
}
|
||||
|
||||
navObj.onClickNavBtn('next', (gridInfo) => {
|
||||
fnPopupBiz.search(gridInfo.curRowData);
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
/**************************************************************************
|
||||
* initialize
|
||||
**************************************************************************/
|
||||
$(document).ready(function(){
|
||||
|
||||
if('${param.crdnId}' != ""){
|
||||
|
||||
fnPopupBiz.search({
|
||||
crdnId: '${param.crdnId}'
|
||||
,crdnSeCd: '${param.crdnSeCd}'
|
||||
,crdnSttsCd: '${param.crdnSttsCd}'
|
||||
});
|
||||
|
||||
$("#btnInst").hide();
|
||||
} else {
|
||||
$("#pageNavDiv").hide();
|
||||
$("#btnImposeTgt").hide();
|
||||
$("#btnEnlight").hide();
|
||||
$("#btnDisallow").hide();
|
||||
|
||||
$("#btnInst").show();
|
||||
|
||||
$("#crdnRegSeCd").val("20");
|
||||
$("#crdnRegSeCd").attr("disabled","disabled");
|
||||
|
||||
$("#crdnSeCd").removeAttr("disabled");
|
||||
$("#sysSeCd").removeAttr("disabled");
|
||||
|
||||
}
|
||||
|
||||
});
|
||||
|
||||
</script>
|
File diff suppressed because it is too large
Load Diff
@ -1,130 +0,0 @@
|
||||
<%--
|
||||
================================================================================
|
||||
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/include/taglib.jsp"%>
|
||||
<%@ include file="/WEB-INF/jsp/include/fims/taglib.jsp"%>
|
||||
|
||||
<style>
|
||||
#crdnSttsCd {
|
||||
width: 29%;
|
||||
color: #2a48ff;
|
||||
background-color: #d8e7ff;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
#crdnRegSeCd {
|
||||
color: #2a48ff;
|
||||
background-color: #d8e7ff;
|
||||
}
|
||||
|
||||
.act_bg_color {
|
||||
background-color: #d8e7ff; !important;
|
||||
}
|
||||
.bg_red_color {
|
||||
background-color: darkred;
|
||||
}
|
||||
|
||||
select[name=ffnlgCarmdlCd] {
|
||||
width: 30%;
|
||||
}
|
||||
select[name=rtpyrSeCd] {
|
||||
width: 25%;
|
||||
}
|
||||
</style>
|
||||
|
||||
<div class="popup" style="min-width: 100px;">
|
||||
<div class="container-window1" style="flex-direction: column">
|
||||
<p class="container-window-header2" id="txtTitle">${txtTitle}</p>
|
||||
<form>
|
||||
<table class="table-03">
|
||||
<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="container-window-btn1">
|
||||
<div class="container-window-btn-right">
|
||||
<a href="#" class="btn btn-blue" id="btnSave">처리</a>
|
||||
<a href="#" id='btnClose' class="btn 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', () => {
|
||||
if(!confirm('과태료 단속사진을 전송(부과처리) 하시겠습니까?')) return false;
|
||||
cmmAjax({
|
||||
url: fimsApiUrl.SEND_CRACKDOWN_PHOTO_FILE_TO_NTRI
|
||||
,showSuccessMsg: false
|
||||
,contentType: 'application/json'
|
||||
,data: JSON.stringify(window.opener.IMPOSE_DATA)
|
||||
,success: (res) => {
|
||||
const data = res.data?.contents;
|
||||
if(data.errorList.length == 0){
|
||||
alert(data.successCnt + '건 처리 완료 했습니다.');
|
||||
}else{
|
||||
const msg = JSON.stringify(data.errorList).replaceAll("\"vhrno\"", "차량번호")
|
||||
.replaceAll("\"fullFilePath\"", "미존재파일")
|
||||
.replaceAll("\"orginlFileNm\"", "원본파일명")
|
||||
alert('처리 : ' + data.successCnt + ' 건');
|
||||
alert('에러['+ data.errorList.length + ' 건] : ' + msg);
|
||||
}
|
||||
}
|
||||
})
|
||||
|
||||
//window.close()
|
||||
});
|
||||
})
|
||||
|
||||
/**************************************************************************
|
||||
* initialize
|
||||
**************************************************************************/
|
||||
$(document).ready(function(){
|
||||
$('input[name=tgtCnt]').val(window.opener.IMPOSE_DATA.length);
|
||||
|
||||
});
|
||||
|
||||
</script>
|
@ -1,736 +0,0 @@
|
||||
<%--
|
||||
================================================================================
|
||||
File : /fims/biz/cmm/cmmIntegratedSearchForm.jsp
|
||||
Name : 통합조회
|
||||
Auth : 이범준
|
||||
Date : 2023-04-19
|
||||
Desc : 통합조회 메인 화면
|
||||
================================================================================
|
||||
Date Author Description
|
||||
================================================================================
|
||||
================================================================================
|
||||
--%>
|
||||
<%@ page import="cokr.xit.fims.biz.FimsConst" %>
|
||||
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
|
||||
<%@ include file="/WEB-INF/jsp/include/taglib.jsp"%>
|
||||
<%@ include file="/WEB-INF/jsp/include/fims/taglib.jsp"%>
|
||||
|
||||
<c:set var="ctznTmplatId" value="<%= FimsConst.TmplatId.CTZN.getCode() %>"/>
|
||||
<c:set var="ansSeCodeImpose" value="<%= FimsConst.AnswerSeCode.IMPOSE.getCode() %>"/>
|
||||
<c:set var="ansSeCodeDisallow" value="<%= FimsConst.AnswerSeCode.DISALLOW.getCode() %>"/>
|
||||
<c:set var="ansSeCodeEnlight" value="<%= FimsConst.AnswerSeCode.ENLIGHT.getCode() %>"/>
|
||||
|
||||
<div>
|
||||
<div class="container-window-btn1 mt-0">
|
||||
<button type="button" class="btn btn-outline-dark">엑셀저장</button>
|
||||
<button type="button" class="btn btn-darkgray" id="" title="">민원관리</button>
|
||||
<button type="button" class="btn btn-darkgray" id="" title="">문자전송</button>
|
||||
<button type="button" class="btn btn-darkgray" id="" title="">내역서출력</button>
|
||||
<button type="button" class="btn btn-darkgray" id="" title="">고지서출력</button>
|
||||
<button type="button" class="btn btn-darkgray" id="" title="">압류해제조서 출력</button>
|
||||
<button type="button" class="btn btn-darkgray" id="" title="">납부확인서 출력</button>
|
||||
<button type="button" class="btn btn-darkgray" id="" title="">교부청구서 출력</button>
|
||||
<button type="button" class="btn btn-darkgray" id="" title="닫기">닫기</button>
|
||||
</div>
|
||||
|
||||
<input type="hidden" id="schOpt$fastSearch" value="${schOpt}" />
|
||||
<input type="hidden" id="schWord$fastSearch" value="${schWord}" />
|
||||
|
||||
<form id="frmSearch" name="frmSearch">
|
||||
<div class="container-search">
|
||||
<div class="row">
|
||||
<div class="col-11">
|
||||
<div class="row">
|
||||
<div class="col-4">
|
||||
<span class="form-search-linebox">
|
||||
<label class="form-label fw-bold form-search-title">부서명</label>
|
||||
<select id="" name="" class="form-select">
|
||||
<option value="">주차관리과</option>
|
||||
</select>
|
||||
<input type="checkbox" id="" name="" value="Y" class="form-check-input" />전체
|
||||
</span>
|
||||
</div>
|
||||
<div class="col-4">
|
||||
<span class="form-search-linebox">
|
||||
<label class="form-label fw-bold form-search-title">시스템구분</label>
|
||||
<code:select id="sysSeCd" name="sysSeCd" defaultSelect='${sessionScope.XitLoginSession.orgId}'
|
||||
grpId="FIM001" title="단속처리상태" cls="form-select" alt="시스템구분" />
|
||||
<input type="checkbox" id="" name="" value="Y" class="form-check-input" />전체
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-4">
|
||||
<span class="form-search-linebox">
|
||||
<label class="form-label fw-bold form-search-title">차량번호</label>
|
||||
</span>
|
||||
<input type="text" id="vhrno" name="vhrno" class="form-control" value="" />
|
||||
</div>
|
||||
<div class="col-4">
|
||||
<span class="form-search-linebox">
|
||||
<label class="form-label fw-bold form-search-title">납부자명</label>
|
||||
</span>
|
||||
<input type="text" id="rtpyrNm" name="rtpyrNm" class="form-control" value="" />
|
||||
</div>
|
||||
<div class="col-4">
|
||||
<span class="form-search-linebox">
|
||||
<label class="form-label fw-bold form-search-title">납부자번호</label>
|
||||
</span>
|
||||
<input type="text" id="rtpyrNo" name="rtpyrNo" class="form-control" value="" />
|
||||
</div>
|
||||
<div class="col-4">
|
||||
<span class="form-search-linebox">
|
||||
<label class="form-label fw-bold form-search-title">고지번호</label>
|
||||
</span>
|
||||
<input type="text" id="" name="" class="form-control" value="" />
|
||||
</div>
|
||||
<div class="col-4">
|
||||
<span class="form-search-linebox">
|
||||
<label class="form-label fw-bold form-search-title">전자납부번호</label>
|
||||
</span>
|
||||
<input type="text" id="" name="" class="form-control" value="" />
|
||||
</div>
|
||||
<div class="col-4">
|
||||
<span class="form-search-linebox">
|
||||
<label class="form-label fw-bold form-search-title">신고인명</label>
|
||||
</span>
|
||||
<input type="text" id="petitionerNm" name="petitionerNm" class="form-control" value="" />
|
||||
</div>
|
||||
<div class="col-12">
|
||||
<span class="flr">
|
||||
<button type="button" class="btn btn-open-detail btn-sm" data-bs-toggle="collapse" data-bs-target="#searchDetail">
|
||||
<i class="bx bx-chevron-down"></i>
|
||||
상세조회조건
|
||||
</button>
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-1 d-flex align-items-center justify-content-center">
|
||||
<button type="button" class="btn btn-search btn-square h-px-75" id="btnSearch" title="검색">검색</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div id="searchDetail" class="container-search container-search-detail collapse">
|
||||
<div class="row">
|
||||
<div class="col-12">
|
||||
<select id="schDateOpt" name="schDateOpt" class="form-select">
|
||||
<option value="crdnYmd">단속일자</option>
|
||||
<option value="regDt">등록일자</option>
|
||||
</select>
|
||||
<span class="form-search-linebox">
|
||||
<input id="schDateFrom" class="form-control form-date" data-fmt-type="day" name="schDateFrom" type="text" title="시작 날짜 선택">
|
||||
<button type="button" class="bx bx-calendar bg-white"></button>
|
||||
~
|
||||
<input id="schDateTo" class="form-control form-date" data-fmt-type="day" name="schDateTo" type="text" title="종료 날짜 선택">
|
||||
<button type="button" class="bx bx-calendar bg-white"></button>
|
||||
</span>
|
||||
<code:select id="crdnSttsCd" name="crdnSttsCd"
|
||||
grpId="FIM010" defaultSelect="01" title="단속처리상태" cls="form-select" alt="단속처리상태" disabled="false"/>
|
||||
</div>
|
||||
<div class="col-12">
|
||||
<label class="form-label fw-bold form-search-title">단속구분</label>
|
||||
<span class="form-search-linebox">
|
||||
<code:radio type="CMM_ETC2" id="crdnSeCd" name="crdnSeCd" grpId="FIM002"
|
||||
onclick="search$$s()" cls="form-check-input" alt="단속구분" />
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
|
||||
<div>
|
||||
<span class="container-page-btn bg-yellow">
|
||||
<span class="fw-bold">단속, 부과내역</span>
|
||||
<span class="container-window-btn-right">
|
||||
<div id="totCnt">전체 ㅣ <span></span></div>
|
||||
</span>
|
||||
</span>
|
||||
</div>
|
||||
|
||||
|
||||
<div id="tabsa" class="nav-align-top mt-3">
|
||||
<ul class="nav nav-tabs">
|
||||
<li class="nav-item">
|
||||
<button id="a0" type="button" class="nav-link active" data-bs-toggle="tab" data-bs-target="#tabContenta0">전체</button>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<button id="a1" type="button" class="nav-link" data-bs-toggle="tab" data-bs-target="#tabContenta0">단속</button>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<button id="a2" type="button" class="nav-link" data-bs-toggle="tab" data-bs-target="#tabContenta0">사전통보</button>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<button id="a3" type="button" class="nav-link" data-bs-toggle="tab" data-bs-target="#tabContenta0">의견제출</button>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<button id="a4" type="button" class="nav-link" data-bs-toggle="tab" data-bs-target="#tabContenta0">부과</button>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<button id="a5" type="button" class="nav-link" data-bs-toggle="tab" data-bs-target="#tabContenta0">체납</button>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<div class="tab-content">
|
||||
<div id="tabContenta0" style="flex-direction: column" class="tab-pane fade show active">
|
||||
<div id="tabs_ta0">
|
||||
<div id="grida"></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="bg-yellowgreen">비고</div>
|
||||
|
||||
<div>
|
||||
<span class="container-page-btn bg-yellow">
|
||||
<span class="fw-bold">수납, 기타내역</span>
|
||||
<span class="container-window-btn-right">
|
||||
<div id="totCnt2">전체 ㅣ <span></span></div>
|
||||
</span>
|
||||
</span>
|
||||
</div>
|
||||
|
||||
<div id="tabsb" class="nav-align-top mt-3">
|
||||
<ul class="nav nav-tabs">
|
||||
<li class="nav-item">
|
||||
<button id="b0" type="button" class="nav-link active" data-bs-toggle="tab" data-bs-target="#tabContentb0">전체</button>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<button id="b1" type="button" class="nav-link" data-bs-toggle="tab" data-bs-target="#tabContentb0">수납</button>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<button id="b2" type="button" class="nav-link" data-bs-toggle="tab" data-bs-target="#tabContentb0">결손</button>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<button id="b3" type="button" class="nav-link" data-bs-toggle="tab" data-bs-target="#tabContentb0">기타</button>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<div class="tab-content">
|
||||
<div id="tabContentb0" style="flex-direction: column" class="tab-pane fade show active">
|
||||
<div id="tabs_tb0">
|
||||
<div id="gridb"></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="bg-yellowgreen">비고</div>
|
||||
</div>
|
||||
|
||||
<script defer type="text/javascript" src="${pageContext.request.contextPath}/resources/js/fims/biz/common/popupPageNavigation.js"></script>
|
||||
<script type="text/javaScript">
|
||||
/**************************************************************************
|
||||
* Global Variable
|
||||
**************************************************************************/
|
||||
/**
|
||||
* tab index : 0 부터 시작
|
||||
* @type {number}
|
||||
*/
|
||||
var CUR_TAB_IDX = 0;
|
||||
/**
|
||||
* tui-grid array
|
||||
* @type {*[]}
|
||||
*/
|
||||
var ARR_GRID = [];
|
||||
/**
|
||||
* PageNavigation
|
||||
* @type {*[]}
|
||||
*/
|
||||
var ARR_NAV = [];
|
||||
|
||||
/**
|
||||
* 부과대상 데이타 배열
|
||||
* 단속ID, 접수번호
|
||||
* @type {Array<{crdnId: string, cvlcptRcptNo: string}>}
|
||||
*/
|
||||
var IMPOSE_DATA;
|
||||
|
||||
/**
|
||||
* 그리드 목록 총 건수
|
||||
* @type {number[]}
|
||||
*/
|
||||
let ARR_TOTCNT = [0, 0, 0];
|
||||
/**
|
||||
* 단속진행 상태
|
||||
* 01 - 초기등록
|
||||
* 10 - 부과대상
|
||||
* @type {string[]}
|
||||
*/
|
||||
let ARR_PRC_STS_CODE = ['01', '10']
|
||||
|
||||
|
||||
/**
|
||||
* 팝업 객체
|
||||
* @type {null}
|
||||
*/
|
||||
popup = null;
|
||||
/**
|
||||
*
|
||||
*/
|
||||
let popupDiv;
|
||||
/**
|
||||
*
|
||||
*/
|
||||
var callbackSearch = () => search$$s();
|
||||
|
||||
let $$Control = new FimsDatasetControl({
|
||||
prefix:"aaa",
|
||||
prefixName:"ㅁㅁㅁ",
|
||||
infoSize:"xl",
|
||||
urls : {
|
||||
load : "fimsApiUrl"
|
||||
},
|
||||
keymapper:info => info ? info.SOME_KEY : "",
|
||||
dataGetter:obj => obj.data.contents
|
||||
});
|
||||
|
||||
$$Control.onDatasetChange = obj => {
|
||||
let pagination = obj.data.pagination;
|
||||
|
||||
if(obj.data.pagination){
|
||||
$$Control._paginationInfo.totalSize = pagination.totalSize;
|
||||
$$Control._paginationInfo.pageNum = pagination.pageNum;
|
||||
} else {
|
||||
$$Control._paginationInfo.totalSize = obj.count;
|
||||
}
|
||||
|
||||
$$Control.totalCountSetting(obj);
|
||||
|
||||
render$$List(obj.data);
|
||||
|
||||
if($$Control._paginationInfo.paging && $$Control._paginationInfo.pagingType == "nav"){
|
||||
let start = 0;
|
||||
if(pagination.pageNum > 1 && pagination.totalPage > 1 && pagination.totalSize > $$Control._paginationInfo.fetchSize){
|
||||
start = $$Control._paginationInfo.fetchSize * (pagination.pageNum - 1);
|
||||
}
|
||||
$("#grid1Paging").setPaging({
|
||||
list: $$Control.dataset,
|
||||
prefix: "grid1",
|
||||
start: start,
|
||||
totalSize: pagination.totalSize,
|
||||
fetchSize: $$Control._paginationInfo.fetchSize,
|
||||
func: "$$$Control.load({index})",
|
||||
});
|
||||
}
|
||||
};
|
||||
|
||||
function search$$s(){
|
||||
$$Control.query = fnBiz.getParams();
|
||||
GRID.clear();
|
||||
$$Control.load(1);
|
||||
}
|
||||
|
||||
function render$$List(data) {
|
||||
if($$Control._paginationInfo.paging && $$Control._paginationInfo.pagingType == "nav"){
|
||||
GRID.clear();
|
||||
}
|
||||
GRID.appendRows(data.contents);
|
||||
}
|
||||
/*******************************
|
||||
* Biz function
|
||||
*******************************/
|
||||
// tab 전체
|
||||
const fnBiz = {
|
||||
tabChangReload: () => {
|
||||
ARR_GRID[CUR_TAB_IDX].refreshLayout()
|
||||
}
|
||||
,getParams: () => {
|
||||
|
||||
return {
|
||||
schDateOpt: $('#schDateOpt').val()
|
||||
,schDateFrom: $('#schDateFrom').val()
|
||||
,schDateTo: $('#schDateTo').val()
|
||||
,[$('#schOpt').val()]: $('#schWord').val()
|
||||
,sysSeCd: $('input:radio[name=sysSeCd]:checked').val()
|
||||
,crdnSeCd: CUR_TAB_IDX === 2 ? '09' : $('input:radio[name=crdnSeCd]:checked').val()
|
||||
,crdnSttsCd: CUR_TAB_IDX === 2 ? 'NON-INIT' : $('#crdnSttsCd').val()
|
||||
,ctznAnsYn: $('input:radio[name=ctznAnsYn]:checked').val()
|
||||
,vhrno : $("#vhrno").val()
|
||||
,rtpyrNm : $("#rtpyrNm").val()
|
||||
,rtpyrNo : $("#rtpyrNo").val()
|
||||
,petitionerNm : $("#petitionerNm").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 "edit":
|
||||
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;
|
||||
case "answerPreview":
|
||||
url = fimsApiUrl.POPUP_CTZN_ANS_PREVIEW;
|
||||
popOption = {width: 600, height: 620};
|
||||
popTitle = "답변 내용 미리 보기";
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
popup = CmmPopup.openModal(url, params, popOption, popTitle);
|
||||
}
|
||||
,onClickGrid: function(props){
|
||||
const selColumn = props.columnInfo.name;
|
||||
switch (selColumn){
|
||||
case 'cvlcptRcptNo':
|
||||
popupDiv = 'edit';
|
||||
const rowDatas = ARR_GRID[CUR_TAB_IDX].store.data.rawData.map(d => {
|
||||
return {crdnSeCd: d.crdnSeCd, crdnId: d.crdnId, crdnSttsCd: d.crdnSttsCd}
|
||||
})
|
||||
ARR_NAV[CUR_TAB_IDX] = new PageNavigation(ARR_GRID[CUR_TAB_IDX], rowDatas, props.rowKey);
|
||||
|
||||
fnBiz.pagePopup(popupDiv, ARR_NAV[CUR_TAB_IDX].gridInfo.curRowData);
|
||||
|
||||
$(".tooltip").remove();
|
||||
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
,resetBtn: function() {
|
||||
switch(CUR_TAB_IDX){
|
||||
case 0:
|
||||
$('#btnExtrRegist').show();
|
||||
$('#divImpose').hide();
|
||||
$('#divAnswer').hide();
|
||||
$('#ansDiv').hide();
|
||||
$('#crdnSttsCd').show();
|
||||
$('#fldCrdnSeCd').show();
|
||||
break;
|
||||
case 1:
|
||||
$('#btnExtrRegist').hide();
|
||||
$('#divImpose').show();
|
||||
$('#divAnswer').hide();
|
||||
$('#ansDiv').hide();
|
||||
$('#crdnSttsCd').show();
|
||||
$('#fldCrdnSeCd').show();
|
||||
break;
|
||||
case 2:
|
||||
$('#btnExtrRegist').hide();
|
||||
$('#divImpose').hide();
|
||||
$('#divAnswer').show();
|
||||
$('#ansDiv').show();
|
||||
$('#crdnSttsCd').show();
|
||||
$('#fldCrdnSeCd').hide();
|
||||
break;
|
||||
}
|
||||
}
|
||||
,onDblClickGrid: function (idx) {
|
||||
|
||||
ARR_GRID[idx].off('dblclick');
|
||||
|
||||
ARR_GRID[idx].on('dblclick', function (props) {
|
||||
popupDiv = 'total';
|
||||
const rowDatas = ARR_GRID[idx].store.data.rawData.map(d => {
|
||||
return {crdnSeCd: d.crdnSeCd, crdnId: d.crdnId, crdnSttsCd: d.crdnSttsCd}
|
||||
})
|
||||
ARR_NAV[idx] = new PageNavigation(ARR_GRID[idx], rowDatas, props.rowKey);
|
||||
fnBiz.pagePopup(popupDiv, ARR_NAV[idx].gridInfo.curRowData);
|
||||
});
|
||||
}
|
||||
,getAnswerSeCode: (stsCode) => {
|
||||
|
||||
let answerSeCode;
|
||||
switch(stsCode){
|
||||
// 부과
|
||||
case '10':
|
||||
case '20':
|
||||
answerSeCode = '${ansSeCodeImpose}';
|
||||
break;
|
||||
// 서손
|
||||
case '11':
|
||||
answerSeCode = '${ansSeCodeDisallow}';
|
||||
break;
|
||||
// 계도
|
||||
case '12':
|
||||
answerSeCode = '${ansSeCodeEnlight}';
|
||||
break;
|
||||
}
|
||||
return answerSeCode;
|
||||
}
|
||||
};
|
||||
|
||||
/**************************************************************************
|
||||
* event
|
||||
**************************************************************************/
|
||||
|
||||
$(() => {
|
||||
$("#tabs").on("click", "li", function () {
|
||||
|
||||
CUR_TAB_IDX = $("#tabs .nav-link.active").attr("id");
|
||||
|
||||
$('#totCnt span').text(ARR_TOTCNT[CUR_TAB_IDX]);
|
||||
|
||||
if(ARR_GRID[CUR_TAB_IDX]) {
|
||||
ARR_GRID[CUR_TAB_IDX].refreshLayout();
|
||||
}
|
||||
fnBiz.resetBtn();
|
||||
|
||||
});
|
||||
|
||||
$('#btnSearch').on('click', () => search$$s());
|
||||
|
||||
$('#btnExtrRegist').on('click', () => {
|
||||
fnBiz.pagePopup('file');
|
||||
});
|
||||
|
||||
|
||||
|
||||
});
|
||||
|
||||
/* *******************************
|
||||
* Grid
|
||||
******************************* */
|
||||
const gridColumns = [
|
||||
{
|
||||
header: '등록구분',
|
||||
name: 'crdnRegSeCd',
|
||||
minWidth: 50,
|
||||
sortable: false,
|
||||
align: 'center',
|
||||
formatter: 'listItemText',
|
||||
disabled: true,
|
||||
editor: {
|
||||
type: "select",
|
||||
options: {
|
||||
listItems: ComboCodeData.crdnRegSeCd
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
header: '접수번호',
|
||||
name: 'cvlcptRcptNo',
|
||||
minWidth: 130,
|
||||
sortable: false,
|
||||
align: 'center',
|
||||
renderer: {
|
||||
type: CustomButtonRenderer,
|
||||
options: {
|
||||
formatter: (props)=>{
|
||||
const rowData = props.grid.getRow(props.rowKey);
|
||||
return {
|
||||
formatter: rowData.crdnSeCd === '09' ? rowData.cvlcptRcptNo : rowData.fileLinkId
|
||||
,element: "text"
|
||||
,dataAttrs : {
|
||||
bsToggle: "tooltip",
|
||||
bsOffset: "0,4",
|
||||
bsPlacement: "top",
|
||||
bsHtml: "true"
|
||||
}
|
||||
,attrs : {
|
||||
title : "<i class='bx bx-window bx-xs'></i> <span>단속현황 정보</span>"
|
||||
}
|
||||
}
|
||||
}
|
||||
,eventFunction: fnBiz.onClickGrid
|
||||
,eventType: "click"
|
||||
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
header: '차량번호',
|
||||
name: 'vhrno',
|
||||
minWidth: 80,
|
||||
sortable: false,
|
||||
align: 'center'
|
||||
|
||||
},
|
||||
{
|
||||
header: '신고자',
|
||||
name: 'cvlcptAplcntNm',
|
||||
minWidth: 80,
|
||||
sortable: false,
|
||||
align: 'center'
|
||||
},
|
||||
|
||||
{
|
||||
header: '신고방법',
|
||||
name: 'crdnSeCd',
|
||||
minWidth: 100,
|
||||
sortable: false,
|
||||
align: 'center',
|
||||
formatter: 'listItemText',
|
||||
disabled: true,
|
||||
editor: {
|
||||
type: "select",
|
||||
options: {
|
||||
listItems: [...ComboCodeData.crdnSeCd]
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
header: '위반내용',
|
||||
name: 'vltnCn',
|
||||
minWidth: 120,
|
||||
sortable: false,
|
||||
align: 'center'
|
||||
},
|
||||
{
|
||||
header: '주민번호(전체)',
|
||||
name: 'rtpyrNo',
|
||||
minWidth: 110,
|
||||
sortable: false,
|
||||
align: 'center',
|
||||
className: "privacy"
|
||||
},
|
||||
{
|
||||
header: '주민번호(마스킹)',
|
||||
name: 'rtpyrNoMask',
|
||||
minWidth: 110,
|
||||
sortable: false,
|
||||
align: 'center',
|
||||
className: "privacy-mask"
|
||||
},
|
||||
{
|
||||
header: '담당자',
|
||||
name: 'dutyIdV',
|
||||
minWidth: 80,
|
||||
sortable: false,
|
||||
align: 'center'
|
||||
},
|
||||
{
|
||||
header: '전화번호',
|
||||
name: 'pcdTelV',
|
||||
minWidth: 80,
|
||||
sortable: false,
|
||||
align: 'center'
|
||||
},
|
||||
{
|
||||
header: '접수일자',
|
||||
name: 'cvlcptRcptYmd',
|
||||
minWidth: 80,
|
||||
sortable: false,
|
||||
align: 'center',
|
||||
formatter({value}) {
|
||||
return StrDateFormat.format(value); //
|
||||
}
|
||||
},
|
||||
{
|
||||
header: '처리기한',
|
||||
name: 'cvlcptPrcsPrnmntDt',
|
||||
minWidth: 80,
|
||||
sortable: false,
|
||||
align: 'center',
|
||||
formatter({value}) {
|
||||
return StrDateFormat.format(value); //
|
||||
}
|
||||
},
|
||||
{
|
||||
header: '위반일시',
|
||||
name: 'crdnYmdTime',
|
||||
minWidth: 120,
|
||||
sortable: false,
|
||||
align: 'center',
|
||||
formatter({value}) {
|
||||
return StrDateTimeFormat.format(value); //
|
||||
}
|
||||
},
|
||||
{
|
||||
header: '사진건수',
|
||||
name: 'atchFileCnt',
|
||||
minWidth: 40,
|
||||
sortable: false,
|
||||
align: 'center'
|
||||
},
|
||||
{
|
||||
header: '특기사항',
|
||||
name: 'etcCn',
|
||||
width: 80,
|
||||
sortable: false,
|
||||
align: 'center'
|
||||
},
|
||||
{
|
||||
header: '서손사유',
|
||||
name: 'etcCn', //levyExclRsnCd
|
||||
width: 80,
|
||||
sortable: false,
|
||||
align: 'center'
|
||||
},
|
||||
{
|
||||
header: '',
|
||||
name: 'crdnSttsCd',
|
||||
hidden: true
|
||||
},
|
||||
{
|
||||
header: '서손ID',
|
||||
name: 'levyExclId',
|
||||
hidden: true
|
||||
},
|
||||
{
|
||||
header: '소유자ID',
|
||||
name: 'rtpyrId',
|
||||
hidden: true
|
||||
},
|
||||
{
|
||||
header: '서손사유코드',
|
||||
name: 'levyExclRsnCd',
|
||||
hidden: true
|
||||
},
|
||||
{
|
||||
header: 'interfaceSeqN',
|
||||
name: 'interfaceSeqN',
|
||||
hidden: true
|
||||
}
|
||||
];
|
||||
const gridOptions = {
|
||||
el : 'grida',
|
||||
rowHeaders : ['rowNum'],
|
||||
columns : gridColumns,
|
||||
columnOptions : {
|
||||
frozenCount: 6
|
||||
},
|
||||
bodyHeight: 150,
|
||||
minBodyHeight : 150,
|
||||
|
||||
paginationInfoRef : $$Control._paginationInfo
|
||||
};
|
||||
|
||||
const initGrid = () => {
|
||||
ARR_GRID[0] = TuiGrid.of(gridOptions);
|
||||
|
||||
const options = $.extend(gridOptions, gridOptions.columns[1].renderer = null, true);
|
||||
ARR_GRID[1] = TuiGrid.of({...options, el: 'gridb', rowHeaders: ['checkbox','rowNum']});
|
||||
};
|
||||
|
||||
function fn_fastSearch(){
|
||||
let fastSearchOpt = document.getElementById("schOpt$fastSearch").value;
|
||||
let fastSearchWord = document.getElementById("schWord$fastSearch").value;
|
||||
$("[name='"+fastSearchOpt +"']").val(fastSearchWord);
|
||||
|
||||
search$$s();
|
||||
}
|
||||
/**************************************************************************
|
||||
* initialize
|
||||
**************************************************************************/
|
||||
$(document).ready(function(){
|
||||
$('#schDateFrom').datepicker('setDate', DateUtil.getDateDay(-5475).date);
|
||||
$('#schDateTo').datepicker('setDate', new Date());
|
||||
CUR_TAB_IDX = 0;
|
||||
fnBiz.resetBtn();
|
||||
initGrid();
|
||||
|
||||
if(document.getElementById("schOpt$fastSearch").value != "" && document.getElementById("schWord$fastSearch").value != ""){
|
||||
fn_fastSearch();
|
||||
}
|
||||
});
|
||||
</script>
|
@ -1,209 +0,0 @@
|
||||
<%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
|
||||
<%@ include file="/WEB-INF/jsp/include/taglib.jsp" %>
|
||||
<%@ include file="/WEB-INF/jsp/include/fims/taglib.jsp" %>
|
||||
|
||||
<c:set var="bizName" value="주민 신고 답변"/>
|
||||
<c:set var="isUpdate" value="${!empty ansDTO.sysSeCd}"/>
|
||||
|
||||
<div class="popup" style="min-width: 100%;">
|
||||
<div class="container-window1" style="max-width: 900px;">
|
||||
<p class="container-window-header2">
|
||||
<c:out value="${bizName}"/>(<c:out value="${ansDTO.interfaceSeqN}"/>)
|
||||
</p>
|
||||
<form name="frmStmt" id="frmStmt">
|
||||
<input type="hidden" name="interfaceSeqN" value='<c:out value="${ansDTO.interfaceSeqN}"/>'>
|
||||
<table class="table-03">
|
||||
<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>
|
||||
<c:if test="${isUpdate}">
|
||||
<code:select id="sggCd" name="sggCd" grpId="XIT025" defaultSelect="${ansDTO.sggCd}" title="기관코드" cls="form-select" alt="기관코드" disabled="true"/>
|
||||
</c:if>
|
||||
<c:if test="${!isUpdate}">
|
||||
<input type="text" name="ancCodeV" value='<c:out value="${ansDTO.ancCodeV}"/>' readonly>
|
||||
</c:if>
|
||||
</td>
|
||||
<th>시스템코드</th>
|
||||
<td>
|
||||
<c:if test="${isUpdate}">
|
||||
<code:select id="sysSeCd" name="sysSeCd" grpId="FIM001" defaultSelect="${ansDTO.sysSeCd}" title="시스템코드" cls="form-select" alt="시스템코드" disabled="true"/>
|
||||
</c:if>
|
||||
<c:if test="${!isUpdate}">
|
||||
<input type="text" name="sysGubunC" value='<c:out value="${ansDTO.sysGubunC}"/>' readonly>
|
||||
</c:if>
|
||||
</td>
|
||||
<th>처리완료일시</th>
|
||||
<td>
|
||||
<fmt:parseDate value="${ansDTO.cvlcptPrcsCmptnDt}" var="cvlcptPrcsCmptnDt" pattern="yyyyMMddHHmmss"/>
|
||||
<input type="text" name="cvlcptPrcsCmptnDt" value="<fmt:formatDate value="${cvlcptPrcsCmptnDt}" pattern="yyyy-MM-dd HH:mm:ss"/>" readonly>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<th>민원구분</th>
|
||||
<td>
|
||||
<code:select id="cvlcptAplySeCd" name="cvlcptAplySeCd" grpId="FIM016" defaultSelect="${ansDTO.cvlcptAplySeCd}" title="민원구분" cls="form-select" alt="민원구분" disabled="true"/>
|
||||
</td>
|
||||
<th>민원신청번호</th>
|
||||
<td>
|
||||
<input type="text" name="cvlcptAplyNo" value='<c:out value="${ansDTO.cvlcptAplyNo}"/>' readonly>
|
||||
</td>
|
||||
<th>민원접수번호</th>
|
||||
<td>
|
||||
<input type="text" name="cvlcptRcptNo" value='<c:out value="${ansDTO.cvlcptRcptNo}"/>' readonly>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<th>처리부서코드</th>
|
||||
<td>
|
||||
<input type="text" name="prcsDeptCode" value='<c:out value="${ansDTO.prcsDeptCode}"/>' readonly>
|
||||
</td>
|
||||
<th>처리부서</th>
|
||||
<td>
|
||||
<input type="text" name="cvlcptPrcsDeptnm" value='<c:out value="${ansDTO.cvlcptPrcsDeptnm}"/>' readonly>
|
||||
</td>
|
||||
<th>담당자</th>
|
||||
<td>
|
||||
<input type="text" name="chargerNm" value='<c:out value="${ansDTO.chargerNm}"/>' readonly>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>담당자 이메일</th>
|
||||
<td>
|
||||
<input type="text" name="chargerEmail" value='<c:out value="${ansDTO.chargerEmail}"/>' readonly>
|
||||
</td>
|
||||
<th>담당자 전화</th>
|
||||
<td colspan="3">
|
||||
<input type="text" name="chargerTlphonNo" value='<c:out value="${ansDTO.chargerTlphonNo}"/>' readonly>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>처리결과</th>
|
||||
<td colspan="5">
|
||||
<textarea name="cvlcptPrcsRsltCn" col="120" rows="12"><c:out value="${ansDTO.cvlcptPrcsRsltCn}"/></textarea>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>민원요지</th>
|
||||
<td colspan="5">
|
||||
<textarea name="cvlcptGist" rows="2"><c:out value="${ansDTO.cvlcptGist}"/></textarea>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>민원처리요약</th>
|
||||
<td colspan="5">
|
||||
<textarea name="cvlcptPrcsSumry" rows="2"><c:out value="${ansDTO.cvlcptPrcsSumry}"/></textarea>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</form>
|
||||
|
||||
<div class="container-window-btn1">
|
||||
<span>
|
||||
<a href="#" class="btn btn-blue" id="btnRegist">저장</a>
|
||||
<a href="#" id="btnClose" class="btn btn-lightgray">닫기</a>
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<!-- //popup -->
|
||||
|
||||
<script type="text/javascript" src="${pageContext.request.contextPath}/resources/js/fims/framework/cmm/cmmDownloadImg.js" defer></script>
|
||||
<script type="text/javascript">
|
||||
/**************************************************************************
|
||||
* Global Variable
|
||||
**************************************************************************/
|
||||
let orgData;
|
||||
|
||||
/* *******************************
|
||||
* Biz function
|
||||
******************************* */
|
||||
const fnBiz = {
|
||||
save: () => {
|
||||
let confirmMsg = '답변 처리 하시겠습니까?';
|
||||
const fileName = $('input[name=interfaceSeqN]').val()+'.xml';
|
||||
|
||||
if(${isUpdate}) {
|
||||
if(!fnBiz.validate()) return false;
|
||||
confirmMsg = '답변을 변경 처리 하시겠습니까?';
|
||||
}
|
||||
if(!confirm(confirmMsg)) return false;
|
||||
cmmAjax({
|
||||
showSuccessMsg: false
|
||||
<%--,url: '<c:url value="/fims/biz/ec/saveCtznStmtAns.do"/>'--%>
|
||||
,url: fimsApiUrl.SAVE_EC_CTZN_STMT_ANSWER
|
||||
,data: $('#frmStmt').serialize()
|
||||
,success: (res) => {
|
||||
const data = {fileFullPath: res.data?.contents, fileName};
|
||||
|
||||
<%--fetch('<c:url value="/framework/biz/cmm/file/downloadFromFileFullPath.do"/>'--%>
|
||||
fetch(frwkApiUrl.DOWNLOAD_BY_FILE_PATH
|
||||
,{
|
||||
method: 'post'
|
||||
,body: JSON.stringify(data)
|
||||
}
|
||||
)
|
||||
.then(response => response.blob())
|
||||
.then(blob => {
|
||||
if (confirm('답변 파일을 다운로드 하시겠습니까?')) {
|
||||
downloadFile(blob, fileName);
|
||||
return true;
|
||||
}else{
|
||||
window.close();
|
||||
}
|
||||
});
|
||||
}
|
||||
})
|
||||
}
|
||||
,validate: () => {
|
||||
if(orgData === $('form').serialize()){
|
||||
alert('변경된 내용이 없습니다.');
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
};
|
||||
|
||||
/**************************************************************************
|
||||
* event
|
||||
**************************************************************************/
|
||||
$(() => {
|
||||
$(window).on("unload", function (e) {
|
||||
window.opener?.unblockUI();
|
||||
window.opener?.callbackSearch();
|
||||
return null;
|
||||
});
|
||||
|
||||
$("#btnClose").on('click', () => {
|
||||
window.close()
|
||||
});
|
||||
|
||||
$('#btnRegist').on('click', () => {
|
||||
fnBiz.save();
|
||||
})
|
||||
});
|
||||
|
||||
/**************************************************************************
|
||||
* initialize
|
||||
**************************************************************************/
|
||||
$(document).ready(function () {
|
||||
orgData = $('form').serialize();
|
||||
});
|
||||
|
||||
|
||||
</script>
|
||||
|
||||
|
@ -1,299 +0,0 @@
|
||||
<%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
|
||||
<%@ include file="/WEB-INF/jsp/include/taglib.jsp" %>
|
||||
<%@ include file="/WEB-INF/jsp/include/fims/taglib.jsp" %>
|
||||
|
||||
<%--rcvXmlDTO--%>
|
||||
<c:set var="files" value="${attchFiles}"/>
|
||||
<c:set var="bizName" value="주민 신고 데이타"/>
|
||||
|
||||
<div class="popup" style="min-width: 100px;">
|
||||
<div class="container-window2" style="max-width: 1000px;">
|
||||
<p class="container-window-header2">
|
||||
<c:out value="${bizName}"/>(<c:out value="${rcvXmlDTO.interfaceSeqN}"/>) 상세
|
||||
</p>
|
||||
|
||||
<%--@elvariable id="boardMaster" type="validator"--%>
|
||||
<form>
|
||||
<table class="table-03">
|
||||
<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>
|
||||
<input type="text" name="sysGubunC" value="<c:out value="${rcvXmlDTO.sysGubunC}"/>" readonly>
|
||||
</td>
|
||||
<th>송신기관</th>
|
||||
<td>
|
||||
<input type="text" name="ancCodeV" value="<c:out value="${rcvXmlDTO.ancCodeV}"/>" readonly>
|
||||
</td>
|
||||
<th>민원구분</th>
|
||||
<td>
|
||||
<input type="text" name="petiGubunC" value="<c:out value="${rcvXmlDTO.petiGubunC}"/>" readonly>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>민원기관</th>
|
||||
<td>
|
||||
<input type="text" name="petiAncCodeV" value="<c:out value="${rcvXmlDTO.petiAncCodeV}"/>" readonly>
|
||||
</td>
|
||||
<th>민원신청번호</th>
|
||||
<td>
|
||||
<input type="text" name="petiNoC" value="<c:out value="${rcvXmlDTO.petiNoC}"/>" readonly>
|
||||
</td>
|
||||
<th>민원접수번호</th>
|
||||
<td>
|
||||
<input type="text" name="civilNoC" value="<c:out value="${rcvXmlDTO.civilNoC}"/>" readonly>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>민원신청인</th>
|
||||
<td>
|
||||
<input type="text" name="peterNameV" value="<c:out value="${rcvXmlDTO.peterNameV}"/>" readonly>
|
||||
</td>
|
||||
<th>신청인우편번호</th>
|
||||
<td>
|
||||
<input type="text" name="zipCodeC" value="<c:out value="${rcvXmlDTO.zipCodeC}"/>" readonly>
|
||||
</td>
|
||||
<th>신청인주소</th>
|
||||
<td>
|
||||
<input type="text" name="addressV" value="<c:out value="${rcvXmlDTO.addressV}"/>" readonly>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>신청인메일</th>
|
||||
<td>
|
||||
<input type="text" name="emailV" value="<c:out value="${rcvXmlDTO.emailV}"/>" readonly>
|
||||
</td>
|
||||
<th>신청인핸드폰</th>
|
||||
<td>
|
||||
<input type="text" name="celNoV" value="<c:out value="${rcvXmlDTO.celNoV}"/>" readonly>
|
||||
</td>
|
||||
<th>신청인전화</th>
|
||||
<td>
|
||||
<input type="text" name="telNoV" value="<c:out value="${rcvXmlDTO.telNoV}"/>" readonly>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>민원신청제목</th>
|
||||
<td colspan="5">
|
||||
<input type="text" name="petiTitleV" value="<c:out value="${rcvXmlDTO.petiTitleV}"/>" readonly>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>민원신청내용</th>
|
||||
<td colspan="5">
|
||||
<textarea name="petiReasonL" rows="10" readonly><c:out value="${rcvXmlDTO.petiReasonL}" /></textarea>
|
||||
<%-- <textarea name="petiReasonL" rows="10" readonly><c:out value="${rcvXmlDTO.petiReasonL}" escapeXml="true"/></textarea>--%>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>공개여부</th>
|
||||
<td>
|
||||
<input type="text" name="openYnC" value="<c:out value="${rcvXmlDTO.openYnC}"/>" readonly>
|
||||
</td>
|
||||
<th>민원신청일시</th>
|
||||
<td>
|
||||
<fmt:parseDate value="${rcvXmlDTO.petiRegD}" var="petiRegD" pattern="yyyyMMddHHmmss"/>
|
||||
<input type="text" name="petiRegD" value="<fmt:formatDate value="${petiRegD}" pattern="yyyy-MM-dd HH:mm:ss"/>" readonly>
|
||||
</td>
|
||||
<th>파일첨부여부</th>
|
||||
<td>
|
||||
<input type="text" name="petiReasonAttachYnC" value="<c:out value="${rcvXmlDTO.petiReasonAttachYnC}"/>" readonly>
|
||||
</td>
|
||||
</tr>
|
||||
<%--
|
||||
<tr>
|
||||
<th>첨부파일크기</th>
|
||||
<td>
|
||||
<input type="text" name="petiFileSizeN" value='<fmt:formatNumber value="${rcvXmlDTO.petiFileSizeN}" pattern="#,###"/>' readonly>
|
||||
</td>
|
||||
<th>첨부파일명1</th>
|
||||
<td>
|
||||
<input type="text" name="petiFilePath1V" value="<c:out value="${rcvXmlDTO.petiFilePath1V}"/>" readonly>
|
||||
</td>
|
||||
<th>첨부파일명2</th>
|
||||
<td>
|
||||
<input type="text" name="petiFilePath2V" value="<c:out value="${rcvXmlDTO.petiFilePath2V}"/>" readonly>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>첨부파일명3</th>
|
||||
<td>
|
||||
<input type="text" name="petiFilePath3V" value="<c:out value="${rcvXmlDTO.petiFilePath3V}"/>" readonly>
|
||||
</td>
|
||||
<th>첨부파일명4</th>
|
||||
<td>
|
||||
<input type="text" name="petiFilePath4V" value="<c:out value="${rcvXmlDTO.petiFilePath4V}"/>" readonly>
|
||||
</td>
|
||||
<th>첨부파일명5</th>
|
||||
<td>
|
||||
<input type="text" name="petiFilePath5V" value="<c:out value="${rcvXmlDTO.petiFilePath5V}"/>" readonly>
|
||||
</td>
|
||||
</tr>
|
||||
--%>
|
||||
<tr>
|
||||
<th>등록일시</th>
|
||||
<td>
|
||||
<fmt:parseDate value="${rcvXmlDTO.regD}" var="regD" pattern="yyyyMMddHHmmss"/>
|
||||
<input type="text" name="petiRegD" value="<fmt:formatDate value="${regD}" pattern="yyyy-MM-dd HH:mm:ss"/>" readonly>
|
||||
</td>
|
||||
<th>송신여부</th>
|
||||
<td>
|
||||
<input type="text" name="sendYnC" value="<c:out value="${rcvXmlDTO.sendYnC}"/>" readonly>
|
||||
</td>
|
||||
<th>송신일시</th>
|
||||
<td>
|
||||
<fmt:parseDate value="${rcvXmlDTO.sendD}" var="sendD" pattern="yyyyMMddHHmmss"/>
|
||||
<input type="text" name="petiRegD" value="<fmt:formatDate value="${sendD}" pattern="yyyy-MM-dd HH:mm:ss"/>" readonly>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>적용일시</th>
|
||||
<td>
|
||||
<fmt:parseDate value="${rcvXmlDTO.applyD}" var="applyD" pattern="yyyyMMddHHmmss"/>
|
||||
<input type="text" name="applyD" value="<fmt:formatDate value="${applyD}" pattern="yyyy-MM-dd HH:mm:ss"/>" readonly>
|
||||
</td>
|
||||
<th>완료구분</th>
|
||||
<td>
|
||||
<input type="text" name="applyGubunC" value="<c:out value="${rcvXmlDTO.applyGubunC}"/>" readonly>
|
||||
</td>
|
||||
<th>처리구분1</th>
|
||||
<td>
|
||||
<input type="text" name="pcdGubunV" value="<c:out value="${rcvXmlDTO.pcdGubunV}"/>" readonly>
|
||||
</td>
|
||||
</tr>
|
||||
<%--
|
||||
<tr>
|
||||
<th>처리구분2</th>
|
||||
<td>
|
||||
<input type="text" name="pcdGubun2V" value="<c:out value="${rcvXmlDTO.pcdGubun2V}"/>" readonly>
|
||||
</td>
|
||||
<th>처리구분3</th>
|
||||
<td>
|
||||
<input type="text" name="pcdGubun3V" value="<c:out value="${rcvXmlDTO.pcdGubun3V}"/>" readonly>
|
||||
</td>
|
||||
<th>인터페이스ID</th>
|
||||
<td>
|
||||
<input type="text" name="ifid" value="<c:out value="${rcvXmlDTO.ifid}"/>" readonly>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>소스기관코드</th>
|
||||
<td>
|
||||
<input type="text" name="srcorgcd" value="<c:out value="${rcvXmlDTO.srcorgcd}"/>" readonly>
|
||||
</td>
|
||||
<th>타겟기관코드</th>
|
||||
<td>
|
||||
<input type="text" name="tgtorgcd" value="<c:out value="${rcvXmlDTO.tgtorgcd}"/>" readonly>
|
||||
</td>
|
||||
<th>인터페이스ID</th>
|
||||
<td>
|
||||
<input type="text" name="ifid" value="<c:out value="${rcvXmlDTO.ifid}"/>" readonly>
|
||||
</td>
|
||||
</tr>
|
||||
--%>
|
||||
</tbody>
|
||||
</table>
|
||||
</form>
|
||||
<div class="draggable" id="imgList" style="display: flex; flex-direction: column; align-items: center"></div>
|
||||
<div class="container-window-btn1">
|
||||
<span class="container-window-btn-right">
|
||||
<a href="#" id="btnClose" class="btn btn-lightgray">닫기</a>
|
||||
</span>
|
||||
</div>
|
||||
<!-- //등록버튼 -->
|
||||
</div>
|
||||
</div>
|
||||
<!-- //popup -->
|
||||
|
||||
<script type="text/javascript" src="${pageContext.request.contextPath}/resources/js/fims/framework/cmm/cmmDownloadImg.js" defer></script>
|
||||
<script type="text/javascript">
|
||||
/**************************************************************************
|
||||
* Global Variable
|
||||
**************************************************************************/
|
||||
let $$Control = new FimsDatasetControl({
|
||||
prefix:"aaa",
|
||||
prefixName:"ㅁㅁㅁ",
|
||||
infoSize:"xl",
|
||||
urls : {
|
||||
imageView : frwkApiUrl.POPUP_IMG_VIEW
|
||||
},
|
||||
keymapper:info => info ? info.SOME_KEY : "",
|
||||
dataGetter:obj => obj.data.contents
|
||||
});
|
||||
|
||||
// let orgData;
|
||||
|
||||
|
||||
/* *******************************
|
||||
* Biz function
|
||||
******************************* */
|
||||
const fnBiz = {
|
||||
downloadImg: () => {
|
||||
|
||||
cmmAjax({
|
||||
showSuccessMsg: false
|
||||
<%--,url: '<c:url value="/fims/biz/ec/findNatlNewspaperAttchFiles.do"/>' --%>
|
||||
,url: fimsApiUrl.FIND_EC_NATL_NEWS_PAPER_ATTCH_FILES
|
||||
,data: {interfaceSeqN: '${interfaceSeqN}'}
|
||||
,success: (res) => {
|
||||
cmmImgDownload('#imgList', res.data?.contents, fnBiz.pagePopup);
|
||||
}
|
||||
})
|
||||
}
|
||||
,pagePopup: function(flag, params) {
|
||||
let url;
|
||||
let popTitle;
|
||||
let popOption;
|
||||
switch (flag) {
|
||||
case "imageView":
|
||||
popOption = {width: 950, height: 750, resizable:false, scrollbars:'no'};
|
||||
popTitle = "이미지 보기";
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
window.opener.popup = CmmPopup.open($$Control.urls[flag], params, popOption, popTitle);
|
||||
//var w = window.open("/imageEditor.do", "", "width=800,height=650,top=0px,left=200px,status=,resizable=false,scrollbars=no");
|
||||
},
|
||||
viewImg: () => {
|
||||
|
||||
|
||||
}
|
||||
};
|
||||
|
||||
/**************************************************************************
|
||||
* event
|
||||
**************************************************************************/
|
||||
$(() => {
|
||||
$('img').on('click', () => {
|
||||
fnBiz.viewImg()
|
||||
});
|
||||
|
||||
$(window).on("unload", function (e) {
|
||||
window.opener?.unblockUI();
|
||||
window.opener?.callbackSearch();
|
||||
return null;
|
||||
});
|
||||
|
||||
$("#btnClose").on('click', () => {
|
||||
window.close()
|
||||
});
|
||||
});
|
||||
|
||||
/**************************************************************************
|
||||
* initialize
|
||||
**************************************************************************/
|
||||
$(document).ready(function () {
|
||||
// orgData = $('form').serialize();
|
||||
fnBiz.downloadImg();
|
||||
});
|
||||
</script>
|
@ -1,762 +0,0 @@
|
||||
<%--
|
||||
* <pre>
|
||||
* description :
|
||||
*
|
||||
* packageName :
|
||||
* fileName : rtAnswerTargetDataForm.jsp
|
||||
* author : 이범준
|
||||
* date : 2023-05-30
|
||||
* ======================================================================
|
||||
* 변경일 변경자 변경 내용
|
||||
* ----------------------------------------------------------------------
|
||||
* 2023-05-30 이범준 최초 생성
|
||||
*
|
||||
* </pre>
|
||||
--%>
|
||||
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
|
||||
<%@ include file="/WEB-INF/jsp/include/taglib.jsp"%>
|
||||
<%@ include file="/WEB-INF/jsp/include/fims/taglib.jsp"%>
|
||||
|
||||
<%@ page import="cokr.xit.fims.biz.FimsConst" %>
|
||||
<c:set var="ctznTmplatId" value="<%= FimsConst.TmplatId.CTZN.getCode() %>"/>
|
||||
<c:set var="ansSeCodeImpose" value="<%= FimsConst.AnswerSeCode.IMPOSE.getCode() %>"/>
|
||||
<c:set var="ansSeCodeDisallow" value="<%= FimsConst.AnswerSeCode.DISALLOW.getCode() %>"/>
|
||||
<c:set var="ansSeCodeEnlight" value="<%= FimsConst.AnswerSeCode.ENLIGHT.getCode() %>"/>
|
||||
|
||||
<div>
|
||||
<div class="container-page-btn">
|
||||
<button type="button" class="btn btn-outline-dark">초기화</button>
|
||||
<span class="container-window-btn-right">
|
||||
|
||||
</span>
|
||||
</div>
|
||||
|
||||
<!-- tab 공통 -->
|
||||
<form id="frmSearch" name="frmSearch">
|
||||
<div class="container-search">
|
||||
<div class="row">
|
||||
<div class="col-11">
|
||||
<div class="row">
|
||||
<div class="col-12">
|
||||
<label class="form-label fw-bold form-search-title">시스템구분</label>
|
||||
<span class="form-search-linebox">
|
||||
<code:radio grpId="FIM001" id="sysSeCd" name="sysSeCd" defaultSelect='${sessionScope.XitLoginSession.orgId}'
|
||||
onclick="search$$s()" cls="form-check-input" alt="시스템구분"/>
|
||||
</span>
|
||||
</div>
|
||||
<div class="col-12">
|
||||
<select id="schDateOpt" name="schDateOpt" class="form-select">
|
||||
<option value="crdnYmd">단속일자</option>
|
||||
<option value="regDt">등록일자</option>
|
||||
</select>
|
||||
<span class="form-search-linebox">
|
||||
<input id="schDateFrom" class="form-control form-date" data-fmt-type="day" name="schDateFrom" type="text" title="시작 날짜 선택">
|
||||
<button type="button" class="bx bx-calendar bg-white"></button>
|
||||
~
|
||||
<input id="schDateTo" class="form-control form-date" data-fmt-type="day" name="schDateTo" type="text" title="종료 날짜 선택">
|
||||
<button type="button" class="bx bx-calendar bg-white"></button>
|
||||
</span>
|
||||
|
||||
</div>
|
||||
<div class="col-12">
|
||||
<label class="form-label fw-bold form-search-title">단속구분</label>
|
||||
<span class="form-search-linebox">
|
||||
<code:radio type="CMM_ETC2" id="crdnSeCd" name="crdnSeCd" grpId="FIM002"
|
||||
onclick="search$$s()" cls="form-check-input" alt="단속구분" />
|
||||
</span>
|
||||
|
||||
</div>
|
||||
<div class="col-12">
|
||||
<label class="form-label fw-bold form-search-title">자료상태</label>
|
||||
<code:select id="crdnSttsCd" name="crdnSttsCd"
|
||||
grpId="FIM010" defaultSelect="01" title="단속처리상태" cls="form-select" alt="단속처리상태" disabled="false"/>
|
||||
<select id="schOpt" name="schOpt" class="form-select">
|
||||
<option value="vhrno">차량번호</option>
|
||||
</select>
|
||||
<input type="text" id="schWord" name="schWord" class="form-control" value="" />
|
||||
|
||||
|
||||
<span class="flr">
|
||||
<button type="button" class="btn btn-open-detail btn-sm" data-bs-toggle="collapse" data-bs-target="#searchDetail">
|
||||
<i class="bx bx-chevron-down"></i>
|
||||
상세조회조건
|
||||
</button>
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-1 d-flex align-items-center justify-content-center">
|
||||
<button type="button" class="btn btn-search btn-square h-px-75" id="btnSearch" title="검색">검색</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div id="searchDetail" class="container-search container-search-detail collapse">
|
||||
상세조회조건
|
||||
</div>
|
||||
</form>
|
||||
|
||||
<div>
|
||||
<span class="container-page-btn">
|
||||
<div id="totCnt">전체 ㅣ <span></span></div>
|
||||
<span class="container-window-btn-right">
|
||||
선택 | n건
|
||||
<a href="#" class="btn btn-blue" id="btnAnswerPreview" title="답변내용미리보기">답변내용미리보기</a>
|
||||
<a href="#" class="btn btn-blue" id="btnAnswer" title="답변등록">선택자료 답변등록</a>
|
||||
<a href="#" class="btn btn-blue" id="" title="">복사등록 원본자료 없음</a>
|
||||
<a href="#" class="btn btn-blue" id="" title="">민원내용 원본</a>
|
||||
<a href="#" class="btn btn-blue" id="" title="">개별답변완료로 수정</a>
|
||||
<a href="#" class="btn btn-blue" id="" title="">표지정보 조회</a>
|
||||
</span>
|
||||
</span>
|
||||
</div>
|
||||
|
||||
<div class="container-search">
|
||||
<div class="row">
|
||||
<div class="col-12">
|
||||
<span class="me-5">결과내재검색</span>
|
||||
<label class="form-label fw-bold form-search-title">클릭한 항목</label>
|
||||
<input type="text" id="" name="" class="form-control" value="" />
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="tabs" class="nav-align-top mt-3">
|
||||
<ul class="nav nav-tabs">
|
||||
<li class="nav-item">
|
||||
<button id="0" type="button" class="nav-link active" data-bs-toggle="tab" data-bs-target="#tabContent0">전체</button>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<button id="1" type="button" class="nav-link" data-bs-toggle="tab" data-bs-target="#tabContent0">부분1</button>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<button id="2" type="button" class="nav-link" data-bs-toggle="tab" data-bs-target="#tabContent0">부분2</button>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<button id="3" type="button" class="nav-link" data-bs-toggle="tab" data-bs-target="#tabContent0">부분3</button>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<div class="tab-content">
|
||||
<div id="tabContent0" style="flex-direction: column" class="tab-pane fade show active">
|
||||
<div id="tabs_t0"></div>
|
||||
</div>
|
||||
<div id="tabContent1" class="tab-pane fade">
|
||||
<div id="tabs_t1"></div>
|
||||
</div>
|
||||
<div id="tabContent2" class="tab-pane fade">
|
||||
<div id="tabs_t2"></div>
|
||||
</div>
|
||||
</div>
|
||||
<div id="grid"></div>
|
||||
<div class="d-flex flex-row p-3 justify-content-between">
|
||||
<label id="grid1PagingInfo" class="dataTables_info" role="status" aria-live="polite"></label>
|
||||
<ul id="grid1Paging" class="pagination pagination-primary"></ul>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<script defer type="text/javascript" src="${pageContext.request.contextPath}/resources/js/fims/biz/common/popupPageNavigation.js"></script>
|
||||
<script type="text/javaScript">
|
||||
/**************************************************************************
|
||||
* Global Variable
|
||||
**************************************************************************/
|
||||
/**
|
||||
* tab index : 0 부터 시작
|
||||
* @type {number}
|
||||
*/
|
||||
var CUR_TAB_IDX = 0;
|
||||
/**
|
||||
* tui-grid array
|
||||
* @type {*[]}
|
||||
*/
|
||||
var GRID = {};
|
||||
/**
|
||||
* PageNavigation
|
||||
* @type {*[]}
|
||||
*/
|
||||
var pageNav = {};
|
||||
|
||||
/**
|
||||
* 부과대상 데이타 배열
|
||||
* 단속ID, 접수번호
|
||||
* @type {Array<{crdnId: string, cvlcptRcptNo: string}>}
|
||||
*/
|
||||
var IMPOSE_DATA;
|
||||
|
||||
/**
|
||||
* 단속진행 상태
|
||||
* 01 - 초기등록
|
||||
* 10 - 부과대상
|
||||
* @type {string[]}
|
||||
*/
|
||||
let ARR_PRC_STS_CODE = ['01', '10']
|
||||
|
||||
|
||||
/**
|
||||
* 팝업 객체
|
||||
* @type {null}
|
||||
*/
|
||||
popup = null;
|
||||
/**
|
||||
*
|
||||
*/
|
||||
let popupDiv;
|
||||
/**
|
||||
*
|
||||
*/
|
||||
var callbackSearch = () => search$$s();
|
||||
|
||||
|
||||
let $$Control = new FimsDatasetControl({
|
||||
prefix:"initData",
|
||||
prefixName:"초기자료",
|
||||
infoSize:"xl",
|
||||
urls : {
|
||||
load : fimsApiUrl.FIND_CRACKDOWNS
|
||||
},
|
||||
keymapper:info => info ? info.CRACKDOWN_KEY : "",
|
||||
dataGetter:obj => obj.data.contents
|
||||
});
|
||||
$$Control._paginationInfo.pagingType = "scroll";
|
||||
$$Control._paginationInfo.fetchSize = 50;
|
||||
$$Control._paginationInfo.scrollFuncName = scroll$$s;
|
||||
|
||||
$$Control.onDatasetChange = obj => {
|
||||
let pagination = obj.data.pagination;
|
||||
|
||||
if(obj.data.pagination){
|
||||
$$Control._paginationInfo.totalSize = pagination.totalSize;
|
||||
$$Control._paginationInfo.pageNum = pagination.pageNum;
|
||||
} else {
|
||||
$$Control._paginationInfo.totalSize = obj.count;
|
||||
}
|
||||
|
||||
$$Control.totalCountSetting(obj);
|
||||
|
||||
render$$List(obj.data);
|
||||
|
||||
if($$Control._paginationInfo.paging && $$Control._paginationInfo.pagingType == "nav"){
|
||||
let start = 0;
|
||||
if(pagination.pageNum > 1 && pagination.totalPage > 1 && pagination.totalSize > $$Control._paginationInfo.fetchSize){
|
||||
start = $$Control._paginationInfo.fetchSize * (pagination.pageNum - 1);
|
||||
}
|
||||
$("#grid1Paging").setPaging({
|
||||
list: $$Control.dataset,
|
||||
prefix: "grid1",
|
||||
start: start,
|
||||
totalSize: pagination.totalSize,
|
||||
fetchSize: $$Control._paginationInfo.fetchSize,
|
||||
func: "$$$Control.load({index})",
|
||||
});
|
||||
}
|
||||
};
|
||||
|
||||
function search$$s(){
|
||||
$$Control.query = fnBiz.getParams();
|
||||
GRID.clear();
|
||||
$$Control.load(1);
|
||||
}
|
||||
|
||||
function scroll$$s(){
|
||||
$$Control.load($$Control._paginationInfo.pageNum + 1, "more");
|
||||
}
|
||||
|
||||
function render$$List(data) {
|
||||
if($$Control._paginationInfo.paging && $$Control._paginationInfo.pagingType == "nav"){
|
||||
GRID.clear();
|
||||
}
|
||||
GRID.appendRows(data.contents);
|
||||
}
|
||||
|
||||
/*******************************
|
||||
* Biz function
|
||||
*******************************/
|
||||
// tab 전체
|
||||
const fnBiz = {
|
||||
getParams: () => {
|
||||
|
||||
return {
|
||||
schDateOpt: $('#schDateOpt').val()
|
||||
,schDateFrom: $('#schDateFrom').val()
|
||||
,schDateTo: $('#schDateTo').val()
|
||||
,[$('#schOpt').val()]: $('#schWord').val()
|
||||
,sysSeCd: $('input:radio[name=sysSeCd]:checked').val()
|
||||
,crdnSeCd: CUR_TAB_IDX === 2 ? '09' : $('input:radio[name=crdnSeCd]:checked').val()
|
||||
,crdnSttsCd: CUR_TAB_IDX === 2 ? 'NON-INIT' : $('#crdnSttsCd').val()
|
||||
,ctznAnsYn: $('input:radio[name=ctznAnsYn]:checked').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 "edit":
|
||||
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;
|
||||
case "answerPreview":
|
||||
url = fimsApiUrl.POPUP_CTZN_ANS_PREVIEW;
|
||||
popOption = {width: 600, height: 620};
|
||||
popTitle = "답변 내용 미리 보기";
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
popup = CmmPopup.openModal(url, params, popOption, popTitle);
|
||||
}
|
||||
,onClickGrid: function(props){
|
||||
const selColumn = props.columnInfo.name;
|
||||
switch (selColumn){
|
||||
case 'cvlcptRcptNo':
|
||||
popupDiv = 'edit';
|
||||
const rowDatas = GRID.store.data.rawData.map(d => {
|
||||
return {crdnSeCd: d.crdnSeCd, crdnId: d.crdnId, crdnSttsCd: d.crdnSttsCd}
|
||||
})
|
||||
pageNav = new PageNavigation(GRID, rowDatas, props.rowKey);
|
||||
|
||||
fnBiz.pagePopup(popupDiv, pageNav.gridInfo.curRowData);
|
||||
|
||||
$(".tooltip").remove();
|
||||
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
,resetBtn: function() {
|
||||
switch(CUR_TAB_IDX){
|
||||
case 0:
|
||||
$('#btnExtrRegist').show();
|
||||
$('#divImpose').hide();
|
||||
$('#divAnswer').hide();
|
||||
$('#ansDiv').hide();
|
||||
$('#crdnSttsCd').show();
|
||||
$('#fldCrdnSeCd').show();
|
||||
break;
|
||||
case 1:
|
||||
$('#btnExtrRegist').hide();
|
||||
$('#divImpose').show();
|
||||
$('#divAnswer').hide();
|
||||
$('#ansDiv').hide();
|
||||
$('#crdnSttsCd').show();
|
||||
$('#fldCrdnSeCd').show();
|
||||
break;
|
||||
case 2:
|
||||
$('#btnExtrRegist').hide();
|
||||
$('#divImpose').hide();
|
||||
$('#divAnswer').show();
|
||||
$('#ansDiv').show();
|
||||
$('#crdnSttsCd').show();
|
||||
$('#fldCrdnSeCd').hide();
|
||||
break;
|
||||
}
|
||||
}
|
||||
,onDblClickGrid: function (props) {
|
||||
popupDiv = 'total';
|
||||
const rowDatas = GRID.store.data.rawData.map(d => {
|
||||
return {crdnSeCd: d.crdnSeCd, crdnId: d.crdnId, crdnSttsCd: d.crdnSttsCd}
|
||||
});
|
||||
|
||||
pageNav = new PageNavigation(GRID, rowDatas, props.rowKey);
|
||||
fnBiz.pagePopup(popupDiv, pageNav.gridInfo.curRowData);
|
||||
}
|
||||
,getAnswerSeCode: (stsCode) => {
|
||||
/*
|
||||
,{value: '10', text: '부과대상'}
|
||||
,{value: '11', text: '서손'}
|
||||
,{value: '12', text: '계도'}
|
||||
,{value: '20', text: '부과'}
|
||||
*/
|
||||
let answerSeCode;
|
||||
switch(stsCode){
|
||||
// 부과
|
||||
case '10':
|
||||
case '20':
|
||||
answerSeCode = '${ansSeCodeImpose}';
|
||||
break;
|
||||
// 서손
|
||||
case '11':
|
||||
answerSeCode = '${ansSeCodeDisallow}';
|
||||
break;
|
||||
// 계도
|
||||
case '12':
|
||||
answerSeCode = '${ansSeCodeEnlight}';
|
||||
break;
|
||||
}
|
||||
return answerSeCode;
|
||||
}
|
||||
};
|
||||
|
||||
/**************************************************************************
|
||||
* event
|
||||
**************************************************************************/
|
||||
|
||||
$(() => {
|
||||
$("#tabs").on("click", "li", function () {
|
||||
|
||||
CUR_TAB_IDX = parseInt($("#tabs .nav-link.active").attr("id"));
|
||||
|
||||
});
|
||||
|
||||
$('#btnSearch').on('click', () => search$$s());
|
||||
|
||||
$('#btnMenualRegist').on('click', () => {
|
||||
fnBiz.pagePopup('edit', {});
|
||||
});
|
||||
|
||||
$('#btnExtrRegist').on('click', () => {
|
||||
fnBiz.pagePopup('file');
|
||||
});
|
||||
|
||||
$('#btnImpose').on('click', () => {
|
||||
const arrChecks = GRID.getCheckedRows();
|
||||
if(arrChecks.length === 0){
|
||||
alert('부과 처리 대상을 먼저 선택해 주세요');
|
||||
return false;
|
||||
}
|
||||
IMPOSE_DATA = arrChecks.map((row) => {
|
||||
const extnlInterfaceId = row.crdnSeCd === '09' ? row.interfaceSeqN : row.fileLinkId
|
||||
return {
|
||||
crdnId: row.crdnId
|
||||
,crdnSeCd: row.crdnSeCd
|
||||
,extnlInterfaceId
|
||||
,vhrno: row.vhrno
|
||||
,cvlcptRcptNo: row.cvlcptRcptNo
|
||||
}
|
||||
})
|
||||
fnBiz.pagePopup('impose');
|
||||
});
|
||||
|
||||
$('#btnAnswerPreview').on('click', () => {
|
||||
if(GRID.store.data.rawData.length == 0){
|
||||
alert('대상 데이타가 존재하지 않습니다.');
|
||||
return false;
|
||||
}
|
||||
|
||||
const arrChecks = GRID.getCheckedRows();
|
||||
let rowKey;
|
||||
if(arrChecks.length > 0){
|
||||
rowKey = arrChecks[0].rowKey;
|
||||
} else {
|
||||
rowKey = GRID.store.data.rawData[0]?.rowKey;
|
||||
}
|
||||
const rowDatas = GRID.store.data.rawData.map(d => {
|
||||
return {tmplatId: '${ctznTmplatId}', answerSeCode: fnBiz.getAnswerSeCode(d.crdnSttsCd), resnCode: d.levyExclRsnCd, interfaceSeqN: d.interfaceSeqN, vhrno: d.vhrno}
|
||||
})
|
||||
|
||||
popupDiv = 'answerPreview';
|
||||
NAV = new PageNavigation(GRID, rowDatas, rowKey);
|
||||
fnBiz.pagePopup(popupDiv, pageNav.gridInfo.curRowData);
|
||||
});
|
||||
|
||||
$('#btnAnswer').on('click', () => {
|
||||
const arrChecks = GRID.getCheckedRows();
|
||||
if(arrChecks.length === 0){
|
||||
alert('답변 처리할 대상을 먼저 선택해 주세요');
|
||||
return false;
|
||||
}
|
||||
const arrData = arrChecks.map((row) => {
|
||||
return {
|
||||
interfaceSeqN: row.interfaceSeqN
|
||||
}
|
||||
})
|
||||
|
||||
// 중복제거
|
||||
const datas = arrData.reduce(function(acc, current) {
|
||||
if (acc.findIndex(({ interfaceSeqN }) => interfaceSeqN === current.interfaceSeqN) === -1) {
|
||||
acc.push(current.interfaceSeqN);
|
||||
}
|
||||
return acc;
|
||||
}, []);
|
||||
|
||||
cmmAjax({
|
||||
url: fimsApiUrl.ADD_CTZN_ANS_LIST
|
||||
,contentType: 'application/json'
|
||||
,data: JSON.stringify(datas)
|
||||
,success: (res) => {
|
||||
|
||||
}
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
|
||||
/* *******************************
|
||||
* Grid
|
||||
******************************* */
|
||||
const gridColumns = [
|
||||
{
|
||||
header: '등록구분',
|
||||
name: 'crdnRegSeCd',
|
||||
minWidth: 50,
|
||||
sortable: false,
|
||||
align: 'center',
|
||||
formatter({value}) {
|
||||
return (new CodeFormat(ComboCodeData.crdnRegSeCd)).format(value);
|
||||
}
|
||||
},
|
||||
{
|
||||
header: '접수번호',
|
||||
name: 'cvlcptRcptNo',
|
||||
minWidth: 130,
|
||||
sortable: false,
|
||||
align: 'center',
|
||||
renderer: {
|
||||
type: CustomButtonRenderer,
|
||||
options: {
|
||||
formatter: (props)=>{
|
||||
const rowData = props.grid.getRow(props.rowKey);
|
||||
return {
|
||||
formatter: rowData.crdnSeCd === '09' ? rowData.cvlcptRcptNo : rowData.fileLinkId
|
||||
,element: "text"
|
||||
,dataAttrs : {
|
||||
bsToggle: "tooltip",
|
||||
bsOffset: "0,4",
|
||||
bsPlacement: "top",
|
||||
bsHtml: "true"
|
||||
}
|
||||
,attrs : {
|
||||
title : "<i class='bx bx-window bx-xs'></i> <span>단속현황 정보</span>"
|
||||
}
|
||||
}
|
||||
}
|
||||
,eventFunction: fnBiz.onClickGrid
|
||||
,eventType: "click"
|
||||
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
{
|
||||
header: '차량번호',
|
||||
name: 'vhrno',
|
||||
minWidth: 80,
|
||||
sortable: false,
|
||||
align: 'center'
|
||||
},
|
||||
{
|
||||
header: '신고자',
|
||||
name: 'cvlcptAplcntNm',
|
||||
minWidth: 80,
|
||||
sortable: false,
|
||||
align: 'center'
|
||||
},
|
||||
|
||||
{
|
||||
header: '단속구분(신고방법)',
|
||||
name: 'crdnSeCd',
|
||||
minWidth: 100,
|
||||
sortable: false,
|
||||
align: 'center',
|
||||
formatter: 'listItemText',
|
||||
disabled: true,
|
||||
editor: {
|
||||
type: "select",
|
||||
options: {
|
||||
listItems: [...ComboCodeData.crdnSeCd]
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
header: '위반내용',
|
||||
name: 'vltnCn',
|
||||
minWidth: 120,
|
||||
sortable: false,
|
||||
align: 'center'
|
||||
},
|
||||
{
|
||||
header: '주민번호(전체)',
|
||||
name: 'rtpyrNo',
|
||||
minWidth: 110,
|
||||
sortable: false,
|
||||
align: 'center',
|
||||
className: "privacy"
|
||||
},
|
||||
{
|
||||
header: '주민번호(마스킹)',
|
||||
name: 'rtpyrNoMask',
|
||||
minWidth: 110,
|
||||
sortable: false,
|
||||
align: 'center',
|
||||
className: "privacy-mask"
|
||||
},
|
||||
{
|
||||
header: '담당자',
|
||||
name: 'dutyIdV',
|
||||
minWidth: 80,
|
||||
sortable: false,
|
||||
align: 'center'
|
||||
},
|
||||
{
|
||||
header: '전화번호',
|
||||
name: 'pcdTelV',
|
||||
minWidth: 80,
|
||||
sortable: false,
|
||||
align: 'center'
|
||||
},
|
||||
{
|
||||
header: '접수일자',
|
||||
name: 'cvlcptRcptYmd',
|
||||
minWidth: 80,
|
||||
sortable: false,
|
||||
align: 'center',
|
||||
formatter({value}) {
|
||||
return StrDateFormat.format(value); //
|
||||
}
|
||||
},
|
||||
{
|
||||
header: '처리기한',
|
||||
name: 'cvlcptPrcsPrnmntDt',
|
||||
minWidth: 80,
|
||||
sortable: false,
|
||||
align: 'center',
|
||||
formatter({value}) {
|
||||
return StrDateFormat.format(value); //
|
||||
}
|
||||
},
|
||||
{
|
||||
header: '위반일시',
|
||||
name: 'crdnYmdTime',
|
||||
minWidth: 120,
|
||||
sortable: false,
|
||||
align: 'center',
|
||||
formatter({value}) {
|
||||
return StrDateTimeFormat.format(value); //
|
||||
}
|
||||
},
|
||||
{
|
||||
header: '사진건수',
|
||||
name: 'atchFileCnt',
|
||||
minWidth: 40,
|
||||
sortable: false,
|
||||
align: 'center'
|
||||
},
|
||||
{
|
||||
header: '특기사항',
|
||||
name: 'etcCn',
|
||||
width: 80,
|
||||
sortable: false,
|
||||
align: 'center'
|
||||
},
|
||||
{
|
||||
header: '서손사유',
|
||||
name: 'etcCn', //levyExclRsnCd
|
||||
width: 80,
|
||||
sortable: false,
|
||||
align: 'center'
|
||||
},
|
||||
{
|
||||
header: '수납금액',
|
||||
name: 'rcvmtAmt',
|
||||
minWidth: 100,
|
||||
sortable: false,
|
||||
align: 'right'
|
||||
},
|
||||
{
|
||||
header: '위반횟수',
|
||||
name: 'vltnNmtm',
|
||||
minWidth: 80,
|
||||
sortable: false,
|
||||
align: 'right'
|
||||
},
|
||||
{
|
||||
header: '위반장소',
|
||||
name: 'crdnPlc',
|
||||
minWidth: 200,
|
||||
sortable: false
|
||||
},
|
||||
{
|
||||
header: '처리상태명',
|
||||
name: 'crdnSttsNm',
|
||||
hidden: true
|
||||
},
|
||||
{
|
||||
header: '등록일시',
|
||||
name: 'regDt',
|
||||
minWidth: 150,
|
||||
sortable: false,
|
||||
align: 'center',
|
||||
formatter({value}) {
|
||||
return StrDateTimeFormat.format(value); //
|
||||
}
|
||||
},
|
||||
{
|
||||
header: '최종처리일시',
|
||||
name: 'mdfcnDt',
|
||||
minWidth: 150,
|
||||
sortable: false,
|
||||
align: 'center',
|
||||
formatter({value}) {
|
||||
return StrDateTimeFormat.format(value);
|
||||
}
|
||||
},
|
||||
{
|
||||
header: '',
|
||||
name: 'crdnSttsCd',
|
||||
hidden: true
|
||||
},
|
||||
{
|
||||
header: '서손ID',
|
||||
name: 'levyExclId',
|
||||
hidden: true
|
||||
},
|
||||
{
|
||||
header: '소유자ID',
|
||||
name: 'rtpyrId',
|
||||
hidden: true
|
||||
},
|
||||
{
|
||||
header: '서손사유코드',
|
||||
name: 'levyExclRsnCd',
|
||||
hidden: true
|
||||
},
|
||||
{
|
||||
header: 'interfaceSeqN',
|
||||
name: 'interfaceSeqN',
|
||||
hidden: true
|
||||
}
|
||||
];
|
||||
const gridOptions = {
|
||||
el: 'grid',
|
||||
rowHeaders: ['rowNum'],
|
||||
columns: gridColumns,
|
||||
columnOptions: {
|
||||
frozenCount: 6
|
||||
},
|
||||
paginationInfoRef : $$Control._paginationInfo
|
||||
};
|
||||
|
||||
const initGrid = () => {
|
||||
GRID = TuiGrid.of(gridOptions);
|
||||
GRID.on('dblclick', function (props) { fnBiz.onDblClickGrid(props); });
|
||||
};
|
||||
|
||||
/**************************************************************************
|
||||
* initialize
|
||||
**************************************************************************/
|
||||
$(document).ready(function(){
|
||||
$('#schDateFrom').datepicker('setDate', DateUtil.getDateDay(-5475).date);
|
||||
$('#schDateTo').datepicker('setDate', new Date());
|
||||
CUR_TAB_IDX = 0;
|
||||
fnBiz.resetBtn();
|
||||
initGrid();
|
||||
});
|
||||
</script>
|
@ -1,758 +0,0 @@
|
||||
<%--
|
||||
* <pre>
|
||||
* description :
|
||||
*
|
||||
* packageName :
|
||||
* fileName : rtAnswerWaitDataForm.jsp
|
||||
* author : 이범준
|
||||
* date : 2023-05-30
|
||||
* ======================================================================
|
||||
* 변경일 변경자 변경 내용
|
||||
* ----------------------------------------------------------------------
|
||||
* 2023-05-30 이범준 최초 생성
|
||||
*
|
||||
* </pre>
|
||||
--%>
|
||||
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
|
||||
<%@ include file="/WEB-INF/jsp/include/taglib.jsp"%>
|
||||
<%@ include file="/WEB-INF/jsp/include/fims/taglib.jsp"%>
|
||||
|
||||
<%@ page import="cokr.xit.fims.biz.FimsConst" %>
|
||||
<c:set var="ctznTmplatId" value="<%= FimsConst.TmplatId.CTZN.getCode() %>"/>
|
||||
<c:set var="ansSeCodeImpose" value="<%= FimsConst.AnswerSeCode.IMPOSE.getCode() %>"/>
|
||||
<c:set var="ansSeCodeDisallow" value="<%= FimsConst.AnswerSeCode.DISALLOW.getCode() %>"/>
|
||||
<c:set var="ansSeCodeEnlight" value="<%= FimsConst.AnswerSeCode.ENLIGHT.getCode() %>"/>
|
||||
|
||||
<div>
|
||||
<div class="container-page-btn">
|
||||
<button type="button" class="btn btn-outline-dark">초기화</button>
|
||||
<span class="container-window-btn-right">
|
||||
|
||||
</span>
|
||||
</div>
|
||||
|
||||
<!-- tab 공통 -->
|
||||
<form id="frmSearch" name="frmSearch">
|
||||
<div class="container-search">
|
||||
<div class="row">
|
||||
<div class="col-11">
|
||||
<div class="row">
|
||||
<div class="col-12">
|
||||
<label class="form-label fw-bold form-search-title">시스템구분</label>
|
||||
<span class="form-search-linebox">
|
||||
<code:radio grpId="FIM001" id="sysSeCd" name="sysSeCd" defaultSelect='${sessionScope.XitLoginSession.orgId}'
|
||||
onclick="search$$s()" cls="form-check-input" alt="시스템구분"/>
|
||||
</span>
|
||||
</div>
|
||||
<div class="col-12">
|
||||
<select id="schDateOpt" name="schDateOpt" class="form-select">
|
||||
<option value="crdnYmd">단속일자</option>
|
||||
<option value="regDt">등록일자</option>
|
||||
</select>
|
||||
<span class="form-search-linebox">
|
||||
<input id="schDateFrom" class="form-control form-date" data-fmt-type="day" name="schDateFrom" type="text" title="시작 날짜 선택">
|
||||
<button type="button" class="bx bx-calendar bg-white"></button>
|
||||
~
|
||||
<input id="schDateTo" class="form-control form-date" data-fmt-type="day" name="schDateTo" type="text" title="종료 날짜 선택">
|
||||
<button type="button" class="bx bx-calendar bg-white"></button>
|
||||
</span>
|
||||
|
||||
</div>
|
||||
<div class="col-12">
|
||||
<label class="form-label fw-bold form-search-title">단속구분</label>
|
||||
<span class="form-search-linebox">
|
||||
<code:radio type="CMM_ETC2" id="crdnSeCd" name="crdnSeCd" grpId="FIM002"
|
||||
onclick="search$$s()" cls="form-check-input" alt="단속구분" />
|
||||
</span>
|
||||
|
||||
</div>
|
||||
<div class="col-12">
|
||||
<label class="form-label fw-bold form-search-title">자료상태</label>
|
||||
<code:select id="crdnSttsCd" name="crdnSttsCd"
|
||||
grpId="FIM010" defaultSelect="01" title="단속처리상태" cls="form-select" alt="단속처리상태" disabled="false"/>
|
||||
<select id="schOpt" name="schOpt" class="form-select">
|
||||
<option value="vhrno">차량번호</option>
|
||||
</select>
|
||||
<input type="text" id="schWord" name="schWord" class="form-control" value="" />
|
||||
|
||||
|
||||
<span class="flr">
|
||||
<button type="button" class="btn btn-open-detail btn-sm" data-bs-toggle="collapse" data-bs-target="#searchDetail">
|
||||
<i class="bx bx-chevron-down"></i>
|
||||
상세조회조건
|
||||
</button>
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-1 d-flex align-items-center justify-content-center">
|
||||
<button type="button" class="btn btn-search btn-square h-px-75" id="btnSearch" title="검색">검색</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div id="searchDetail" class="container-search container-search-detail collapse">
|
||||
상세조회조건
|
||||
</div>
|
||||
</form>
|
||||
|
||||
<div>
|
||||
<span class="container-page-btn">
|
||||
<div id="totCnt">전체 ㅣ <span></span></div>
|
||||
<span class="container-window-btn-right">
|
||||
선택 | n건
|
||||
<a href="#" class="btn btn-blue" id="" title="업무처리1">민원내용원본</a>
|
||||
<a href="#" class="btn btn-blue" id="" title="업무처리2">답변내용 미리보기</a>
|
||||
</span>
|
||||
</span>
|
||||
</div>
|
||||
|
||||
<div class="container-search">
|
||||
<div class="row">
|
||||
<div class="col-12">
|
||||
<span class="me-5">결과내재검색</span>
|
||||
<label class="form-label fw-bold form-search-title">클릭한 항목</label>
|
||||
<input type="text" id="" name="" class="form-control" value="" />
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="tabs" class="nav-align-top mt-3">
|
||||
<ul class="nav nav-tabs">
|
||||
<li class="nav-item">
|
||||
<button id="0" type="button" class="nav-link active" data-bs-toggle="tab" data-bs-target="#tabContent0">전체</button>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<button id="1" type="button" class="nav-link" data-bs-toggle="tab" data-bs-target="#tabContent0">부분1</button>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<button id="2" type="button" class="nav-link" data-bs-toggle="tab" data-bs-target="#tabContent0">부분2</button>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<button id="3" type="button" class="nav-link" data-bs-toggle="tab" data-bs-target="#tabContent0">부분3</button>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<div class="tab-content">
|
||||
<div id="tabContent0" style="flex-direction: column" class="tab-pane fade show active">
|
||||
<div id="tabs_t0"></div>
|
||||
</div>
|
||||
<div id="tabContent1" class="tab-pane fade">
|
||||
<div id="tabs_t1"></div>
|
||||
</div>
|
||||
<div id="tabContent2" class="tab-pane fade">
|
||||
<div id="tabs_t2"></div>
|
||||
</div>
|
||||
</div>
|
||||
<div id="grid"></div>
|
||||
<div class="d-flex flex-row p-3 justify-content-between">
|
||||
<label id="grid1PagingInfo" class="dataTables_info" role="status" aria-live="polite"></label>
|
||||
<ul id="grid1Paging" class="pagination pagination-primary"></ul>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<script defer type="text/javascript" src="${pageContext.request.contextPath}/resources/js/fims/biz/common/popupPageNavigation.js"></script>
|
||||
<script type="text/javaScript">
|
||||
/**************************************************************************
|
||||
* Global Variable
|
||||
**************************************************************************/
|
||||
/**
|
||||
* tab index : 0 부터 시작
|
||||
* @type {number}
|
||||
*/
|
||||
var CUR_TAB_IDX = 0;
|
||||
/**
|
||||
* tui-grid array
|
||||
* @type {*[]}
|
||||
*/
|
||||
var GRID = {};
|
||||
/**
|
||||
* PageNavigation
|
||||
* @type {*[]}
|
||||
*/
|
||||
var pageNav = {};
|
||||
|
||||
/**
|
||||
* 부과대상 데이타 배열
|
||||
* 단속ID, 접수번호
|
||||
* @type {Array<{crdnId: string, cvlcptRcptNo: string}>}
|
||||
*/
|
||||
var IMPOSE_DATA;
|
||||
|
||||
/**
|
||||
* 단속진행 상태
|
||||
* 01 - 초기등록
|
||||
* 10 - 부과대상
|
||||
* @type {string[]}
|
||||
*/
|
||||
let ARR_PRC_STS_CODE = ['01', '10']
|
||||
|
||||
|
||||
/**
|
||||
* 팝업 객체
|
||||
* @type {null}
|
||||
*/
|
||||
popup = null;
|
||||
/**
|
||||
*
|
||||
*/
|
||||
let popupDiv;
|
||||
/**
|
||||
*
|
||||
*/
|
||||
var callbackSearch = () => search$$s();
|
||||
|
||||
|
||||
let $$Control = new FimsDatasetControl({
|
||||
prefix:"initData",
|
||||
prefixName:"초기자료",
|
||||
infoSize:"xl",
|
||||
urls : {
|
||||
load : fimsApiUrl.FIND_CRACKDOWNS
|
||||
},
|
||||
keymapper:info => info ? info.CRACKDOWN_KEY : "",
|
||||
dataGetter:obj => obj.data.contents
|
||||
});
|
||||
$$Control._paginationInfo.pagingType = "scroll";
|
||||
$$Control._paginationInfo.fetchSize = 50;
|
||||
$$Control._paginationInfo.scrollFuncName = scroll$$s;
|
||||
|
||||
$$Control.onDatasetChange = obj => {
|
||||
let pagination = obj.data.pagination;
|
||||
|
||||
if(obj.data.pagination){
|
||||
$$Control._paginationInfo.totalSize = pagination.totalSize;
|
||||
$$Control._paginationInfo.pageNum = pagination.pageNum;
|
||||
} else {
|
||||
$$Control._paginationInfo.totalSize = obj.count;
|
||||
}
|
||||
|
||||
$$Control.totalCountSetting(obj);
|
||||
|
||||
render$$List(obj.data);
|
||||
|
||||
if($$Control._paginationInfo.paging && $$Control._paginationInfo.pagingType == "nav"){
|
||||
let start = 0;
|
||||
if(pagination.pageNum > 1 && pagination.totalPage > 1 && pagination.totalSize > $$Control._paginationInfo.fetchSize){
|
||||
start = $$Control._paginationInfo.fetchSize * (pagination.pageNum - 1);
|
||||
}
|
||||
$("#grid1Paging").setPaging({
|
||||
list: $$Control.dataset,
|
||||
prefix: "grid1",
|
||||
start: start,
|
||||
totalSize: pagination.totalSize,
|
||||
fetchSize: $$Control._paginationInfo.fetchSize,
|
||||
func: "$$$Control.load({index})",
|
||||
});
|
||||
}
|
||||
};
|
||||
|
||||
function search$$s(){
|
||||
$$Control.query = fnBiz.getParams();
|
||||
GRID.clear();
|
||||
$$Control.load(1);
|
||||
}
|
||||
|
||||
function scroll$$s(){
|
||||
$$Control.load($$Control._paginationInfo.pageNum + 1, "more");
|
||||
}
|
||||
|
||||
function render$$List(data) {
|
||||
if($$Control._paginationInfo.paging && $$Control._paginationInfo.pagingType == "nav"){
|
||||
GRID.clear();
|
||||
}
|
||||
GRID.appendRows(data.contents);
|
||||
}
|
||||
|
||||
/*******************************
|
||||
* Biz function
|
||||
*******************************/
|
||||
// tab 전체
|
||||
const fnBiz = {
|
||||
getParams: () => {
|
||||
|
||||
return {
|
||||
schDateOpt: $('#schDateOpt').val()
|
||||
,schDateFrom: $('#schDateFrom').val()
|
||||
,schDateTo: $('#schDateTo').val()
|
||||
,[$('#schOpt').val()]: $('#schWord').val()
|
||||
,sysSeCd: $('input:radio[name=sysSeCd]:checked').val()
|
||||
,crdnSeCd: CUR_TAB_IDX === 2 ? '09' : $('input:radio[name=crdnSeCd]:checked').val()
|
||||
,crdnSttsCd: CUR_TAB_IDX === 2 ? 'NON-INIT' : $('#crdnSttsCd').val()
|
||||
,ctznAnsYn: $('input:radio[name=ctznAnsYn]:checked').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 "edit":
|
||||
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;
|
||||
case "answerPreview":
|
||||
url = fimsApiUrl.POPUP_CTZN_ANS_PREVIEW;
|
||||
popOption = {width: 600, height: 620};
|
||||
popTitle = "답변 내용 미리 보기";
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
popup = CmmPopup.openModal(url, params, popOption, popTitle);
|
||||
}
|
||||
,onClickGrid: function(props){
|
||||
const selColumn = props.columnInfo.name;
|
||||
switch (selColumn){
|
||||
case 'cvlcptRcptNo':
|
||||
popupDiv = 'edit';
|
||||
const rowDatas = GRID.store.data.rawData.map(d => {
|
||||
return {crdnSeCd: d.crdnSeCd, crdnId: d.crdnId, crdnSttsCd: d.crdnSttsCd}
|
||||
})
|
||||
pageNav = new PageNavigation(GRID, rowDatas, props.rowKey);
|
||||
|
||||
fnBiz.pagePopup(popupDiv, pageNav.gridInfo.curRowData);
|
||||
|
||||
$(".tooltip").remove();
|
||||
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
,resetBtn: function() {
|
||||
switch(CUR_TAB_IDX){
|
||||
case 0:
|
||||
$('#btnExtrRegist').show();
|
||||
$('#divImpose').hide();
|
||||
$('#divAnswer').hide();
|
||||
$('#ansDiv').hide();
|
||||
$('#crdnSttsCd').show();
|
||||
$('#fldCrdnSeCd').show();
|
||||
break;
|
||||
case 1:
|
||||
$('#btnExtrRegist').hide();
|
||||
$('#divImpose').show();
|
||||
$('#divAnswer').hide();
|
||||
$('#ansDiv').hide();
|
||||
$('#crdnSttsCd').show();
|
||||
$('#fldCrdnSeCd').show();
|
||||
break;
|
||||
case 2:
|
||||
$('#btnExtrRegist').hide();
|
||||
$('#divImpose').hide();
|
||||
$('#divAnswer').show();
|
||||
$('#ansDiv').show();
|
||||
$('#crdnSttsCd').show();
|
||||
$('#fldCrdnSeCd').hide();
|
||||
break;
|
||||
}
|
||||
}
|
||||
,onDblClickGrid: function (props) {
|
||||
popupDiv = 'total';
|
||||
const rowDatas = GRID.store.data.rawData.map(d => {
|
||||
return {crdnSeCd: d.crdnSeCd, crdnId: d.crdnId, crdnSttsCd: d.crdnSttsCd}
|
||||
});
|
||||
|
||||
pageNav = new PageNavigation(GRID, rowDatas, props.rowKey);
|
||||
fnBiz.pagePopup(popupDiv, pageNav.gridInfo.curRowData);
|
||||
}
|
||||
,getAnswerSeCode: (stsCode) => {
|
||||
/*
|
||||
,{value: '10', text: '부과대상'}
|
||||
,{value: '11', text: '서손'}
|
||||
,{value: '12', text: '계도'}
|
||||
,{value: '20', text: '부과'}
|
||||
*/
|
||||
let answerSeCode;
|
||||
switch(stsCode){
|
||||
// 부과
|
||||
case '10':
|
||||
case '20':
|
||||
answerSeCode = '${ansSeCodeImpose}';
|
||||
break;
|
||||
// 서손
|
||||
case '11':
|
||||
answerSeCode = '${ansSeCodeDisallow}';
|
||||
break;
|
||||
// 계도
|
||||
case '12':
|
||||
answerSeCode = '${ansSeCodeEnlight}';
|
||||
break;
|
||||
}
|
||||
return answerSeCode;
|
||||
}
|
||||
};
|
||||
|
||||
/**************************************************************************
|
||||
* event
|
||||
**************************************************************************/
|
||||
|
||||
$(() => {
|
||||
$("#tabs").on("click", "li", function () {
|
||||
|
||||
CUR_TAB_IDX = parseInt($("#tabs .nav-link.active").attr("id"));
|
||||
|
||||
});
|
||||
|
||||
$('#btnSearch').on('click', () => search$$s());
|
||||
|
||||
$('#btnMenualRegist').on('click', () => {
|
||||
fnBiz.pagePopup('edit', {});
|
||||
});
|
||||
|
||||
$('#btnExtrRegist').on('click', () => {
|
||||
fnBiz.pagePopup('file');
|
||||
});
|
||||
|
||||
$('#btnImpose').on('click', () => {
|
||||
const arrChecks = GRID.getCheckedRows();
|
||||
if(arrChecks.length === 0){
|
||||
alert('부과 처리 대상을 먼저 선택해 주세요');
|
||||
return false;
|
||||
}
|
||||
IMPOSE_DATA = arrChecks.map((row) => {
|
||||
const extnlInterfaceId = row.crdnSeCd === '09' ? row.interfaceSeqN : row.fileLinkId
|
||||
return {
|
||||
crdnId: row.crdnId
|
||||
,crdnSeCd: row.crdnSeCd
|
||||
,extnlInterfaceId
|
||||
,vhrno: row.vhrno
|
||||
,cvlcptRcptNo: row.cvlcptRcptNo
|
||||
}
|
||||
})
|
||||
fnBiz.pagePopup('impose');
|
||||
});
|
||||
|
||||
$('#btnAnswerPreview').on('click', () => {
|
||||
if(GRID.store.data.rawData.length == 0){
|
||||
alert('대상 데이타가 존재하지 않습니다.');
|
||||
return false;
|
||||
}
|
||||
|
||||
const arrChecks = GRID.getCheckedRows();
|
||||
let rowKey;
|
||||
if(arrChecks.length > 0){
|
||||
rowKey = arrChecks[0].rowKey;
|
||||
} else {
|
||||
rowKey = GRID.store.data.rawData[0]?.rowKey;
|
||||
}
|
||||
const rowDatas = GRID.store.data.rawData.map(d => {
|
||||
return {tmplatId: '${ctznTmplatId}', answerSeCode: fnBiz.getAnswerSeCode(d.crdnSttsCd), resnCode: d.levyExclRsnCd, interfaceSeqN: d.interfaceSeqN, vhrno: d.vhrno}
|
||||
})
|
||||
|
||||
popupDiv = 'answerPreview';
|
||||
NAV = new PageNavigation(GRID, rowDatas, rowKey);
|
||||
fnBiz.pagePopup(popupDiv, pageNav.gridInfo.curRowData);
|
||||
});
|
||||
|
||||
$('#btnAnswer').on('click', () => {
|
||||
const arrChecks = GRID.getCheckedRows();
|
||||
if(arrChecks.length === 0){
|
||||
alert('답변 처리할 대상을 먼저 선택해 주세요');
|
||||
return false;
|
||||
}
|
||||
const arrData = arrChecks.map((row) => {
|
||||
return {
|
||||
interfaceSeqN: row.interfaceSeqN
|
||||
}
|
||||
})
|
||||
|
||||
// 중복제거
|
||||
const datas = arrData.reduce(function(acc, current) {
|
||||
if (acc.findIndex(({ interfaceSeqN }) => interfaceSeqN === current.interfaceSeqN) === -1) {
|
||||
acc.push(current.interfaceSeqN);
|
||||
}
|
||||
return acc;
|
||||
}, []);
|
||||
|
||||
cmmAjax({
|
||||
url: fimsApiUrl.ADD_CTZN_ANS_LIST
|
||||
,contentType: 'application/json'
|
||||
,data: JSON.stringify(datas)
|
||||
,success: (res) => {
|
||||
|
||||
}
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
|
||||
/* *******************************
|
||||
* Grid
|
||||
******************************* */
|
||||
const gridColumns = [
|
||||
{
|
||||
header: '등록구분',
|
||||
name: 'crdnRegSeCd',
|
||||
minWidth: 50,
|
||||
sortable: false,
|
||||
align: 'center',
|
||||
formatter({value}) {
|
||||
return (new CodeFormat(ComboCodeData.crdnRegSeCd)).format(value);
|
||||
}
|
||||
},
|
||||
{
|
||||
header: '접수번호',
|
||||
name: 'cvlcptRcptNo',
|
||||
minWidth: 130,
|
||||
sortable: false,
|
||||
align: 'center',
|
||||
renderer: {
|
||||
type: CustomButtonRenderer,
|
||||
options: {
|
||||
formatter: (props)=>{
|
||||
const rowData = props.grid.getRow(props.rowKey);
|
||||
return {
|
||||
formatter: rowData.crdnSeCd === '09' ? rowData.cvlcptRcptNo : rowData.fileLinkId
|
||||
,element: "text"
|
||||
,dataAttrs : {
|
||||
bsToggle: "tooltip",
|
||||
bsOffset: "0,4",
|
||||
bsPlacement: "top",
|
||||
bsHtml: "true"
|
||||
}
|
||||
,attrs : {
|
||||
title : "<i class='bx bx-window bx-xs'></i> <span>단속현황 정보</span>"
|
||||
}
|
||||
}
|
||||
}
|
||||
,eventFunction: fnBiz.onClickGrid
|
||||
,eventType: "click"
|
||||
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
{
|
||||
header: '차량번호',
|
||||
name: 'vhrno',
|
||||
minWidth: 80,
|
||||
sortable: false,
|
||||
align: 'center'
|
||||
},
|
||||
{
|
||||
header: '신고자',
|
||||
name: 'cvlcptAplcntNm',
|
||||
minWidth: 80,
|
||||
sortable: false,
|
||||
align: 'center'
|
||||
},
|
||||
|
||||
{
|
||||
header: '단속구분(신고방법)',
|
||||
name: 'crdnSeCd',
|
||||
minWidth: 100,
|
||||
sortable: false,
|
||||
align: 'center',
|
||||
formatter: 'listItemText',
|
||||
disabled: true,
|
||||
editor: {
|
||||
type: "select",
|
||||
options: {
|
||||
listItems: [...ComboCodeData.crdnSeCd]
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
header: '위반내용',
|
||||
name: 'vltnCn',
|
||||
minWidth: 120,
|
||||
sortable: false,
|
||||
align: 'center'
|
||||
},
|
||||
{
|
||||
header: '주민번호(전체)',
|
||||
name: 'rtpyrNo',
|
||||
minWidth: 110,
|
||||
sortable: false,
|
||||
align: 'center',
|
||||
className: "privacy"
|
||||
},
|
||||
{
|
||||
header: '주민번호(마스킹)',
|
||||
name: 'rtpyrNoMask',
|
||||
minWidth: 110,
|
||||
sortable: false,
|
||||
align: 'center',
|
||||
className: "privacy-mask"
|
||||
},
|
||||
{
|
||||
header: '담당자',
|
||||
name: 'dutyIdV',
|
||||
minWidth: 80,
|
||||
sortable: false,
|
||||
align: 'center'
|
||||
},
|
||||
{
|
||||
header: '전화번호',
|
||||
name: 'pcdTelV',
|
||||
minWidth: 80,
|
||||
sortable: false,
|
||||
align: 'center'
|
||||
},
|
||||
{
|
||||
header: '접수일자',
|
||||
name: 'cvlcptRcptYmd',
|
||||
minWidth: 80,
|
||||
sortable: false,
|
||||
align: 'center',
|
||||
formatter({value}) {
|
||||
return StrDateFormat.format(value); //
|
||||
}
|
||||
},
|
||||
{
|
||||
header: '처리기한',
|
||||
name: 'cvlcptPrcsPrnmntDt',
|
||||
minWidth: 80,
|
||||
sortable: false,
|
||||
align: 'center',
|
||||
formatter({value}) {
|
||||
return StrDateFormat.format(value); //
|
||||
}
|
||||
},
|
||||
{
|
||||
header: '위반일시',
|
||||
name: 'crdnYmdTime',
|
||||
minWidth: 120,
|
||||
sortable: false,
|
||||
align: 'center',
|
||||
formatter({value}) {
|
||||
return StrDateTimeFormat.format(value); //
|
||||
}
|
||||
},
|
||||
{
|
||||
header: '사진건수',
|
||||
name: 'atchFileCnt',
|
||||
minWidth: 40,
|
||||
sortable: false,
|
||||
align: 'center'
|
||||
},
|
||||
{
|
||||
header: '특기사항',
|
||||
name: 'etcCn',
|
||||
width: 80,
|
||||
sortable: false,
|
||||
align: 'center'
|
||||
},
|
||||
{
|
||||
header: '서손사유',
|
||||
name: 'etcCn', //levyExclRsnCd
|
||||
width: 80,
|
||||
sortable: false,
|
||||
align: 'center'
|
||||
},
|
||||
{
|
||||
header: '수납금액',
|
||||
name: 'rcvmtAmt',
|
||||
minWidth: 100,
|
||||
sortable: false,
|
||||
align: 'right'
|
||||
},
|
||||
{
|
||||
header: '위반횟수',
|
||||
name: 'vltnNmtm',
|
||||
minWidth: 80,
|
||||
sortable: false,
|
||||
align: 'right'
|
||||
},
|
||||
{
|
||||
header: '위반장소',
|
||||
name: 'crdnPlc',
|
||||
minWidth: 200,
|
||||
sortable: false
|
||||
},
|
||||
{
|
||||
header: '처리상태명',
|
||||
name: 'crdnSttsNm',
|
||||
hidden: true
|
||||
},
|
||||
{
|
||||
header: '등록일시',
|
||||
name: 'regDt',
|
||||
minWidth: 150,
|
||||
sortable: false,
|
||||
align: 'center',
|
||||
formatter({value}) {
|
||||
return StrDateTimeFormat.format(value); //
|
||||
}
|
||||
},
|
||||
{
|
||||
header: '최종처리일시',
|
||||
name: 'mdfcnDt',
|
||||
minWidth: 150,
|
||||
sortable: false,
|
||||
align: 'center',
|
||||
formatter({value}) {
|
||||
return StrDateTimeFormat.format(value);
|
||||
}
|
||||
},
|
||||
{
|
||||
header: '',
|
||||
name: 'crdnSttsCd',
|
||||
hidden: true
|
||||
},
|
||||
{
|
||||
header: '서손ID',
|
||||
name: 'levyExclId',
|
||||
hidden: true
|
||||
},
|
||||
{
|
||||
header: '소유자ID',
|
||||
name: 'rtpyrId',
|
||||
hidden: true
|
||||
},
|
||||
{
|
||||
header: '서손사유코드',
|
||||
name: 'levyExclRsnCd',
|
||||
hidden: true
|
||||
},
|
||||
{
|
||||
header: 'interfaceSeqN',
|
||||
name: 'interfaceSeqN',
|
||||
hidden: true
|
||||
}
|
||||
];
|
||||
const gridOptions = {
|
||||
el: 'grid',
|
||||
rowHeaders: ['rowNum'],
|
||||
columns: gridColumns,
|
||||
columnOptions: {
|
||||
frozenCount: 6
|
||||
},
|
||||
paginationInfoRef : $$Control._paginationInfo
|
||||
};
|
||||
|
||||
const initGrid = () => {
|
||||
GRID = TuiGrid.of(gridOptions);
|
||||
GRID.on('dblclick', function (props) { fnBiz.onDblClickGrid(props); });
|
||||
};
|
||||
|
||||
/**************************************************************************
|
||||
* initialize
|
||||
**************************************************************************/
|
||||
$(document).ready(function(){
|
||||
$('#schDateFrom').datepicker('setDate', DateUtil.getDateDay(-5475).date);
|
||||
$('#schDateTo').datepicker('setDate', new Date());
|
||||
CUR_TAB_IDX = 0;
|
||||
fnBiz.resetBtn();
|
||||
initGrid();
|
||||
});
|
||||
</script>
|
@ -1,306 +0,0 @@
|
||||
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
|
||||
<%@ include file="/WEB-INF/jsp/include/taglib.jsp" %>
|
||||
<%@ include file="/WEB-INF/jsp/include/fims/taglib.jsp" %>
|
||||
<form name="frmSearch" id="frmSearch">
|
||||
<div class="container-search">
|
||||
<table>
|
||||
<caption>검색조건</caption>
|
||||
<colgroup>
|
||||
<col style="width: 8%;"/>
|
||||
<col style="width: 20%;"/>
|
||||
<col style="width: 8%;"/>
|
||||
<col style="width: 40%;"/>
|
||||
<col/>
|
||||
<col/>
|
||||
<col/>
|
||||
</colgroup>
|
||||
<tbody>
|
||||
<tr>
|
||||
<th scope="row" nowrap>
|
||||
<label for="tmplatNm" class="required">템플릿명 :</label>
|
||||
</th>
|
||||
<td>
|
||||
<input title="템플릿명" id="tmplatNm" name="tmplatNm" type="text" size="35" maxlength="35" >
|
||||
</td>
|
||||
<th scope="row" nowrap>
|
||||
<label for="answerSeCode">답변 구분명 :</label>
|
||||
</th>
|
||||
<td>
|
||||
<select id="answerSeCode" name="answerSeCode" title="답변 구분명" onchange="fnBiz.onSearchChange()">
|
||||
<option value="">전체</option>
|
||||
<option value="FIM025">계도</option>
|
||||
<option value="FIM021">서손</option>
|
||||
</select>
|
||||
<select style="width: 40%" name="ctgrId" id="ctgrId" class="select" title="계도코드" onchange="fnBiz.onSearchCodeChange(this)">
|
||||
<option value="">전체</option>
|
||||
<c:forEach var="result" items="${codeList25}" varStatus="status">
|
||||
<option value='<c:out value="${result.code}"/>' ><c:out value="${result.code_val}"/></option>
|
||||
</c:forEach>
|
||||
</select>
|
||||
<select style="width: 40%" name="ctgrId1" id="ctgrId1" class="select" title="서손코드" onchange="fnBiz.onSearchCodeChange(this)">
|
||||
<option value="">전체</option>
|
||||
<c:forEach var="result" items="${codeList21}" varStatus="status">
|
||||
<option value='<c:out value="${result.code}"/>' ><c:out value="${result.code_val}"/></option>
|
||||
</c:forEach>
|
||||
</select>
|
||||
<input type="hidden" id="resnCode" name="resnCode" value="">
|
||||
</td>
|
||||
<td rowspan="2">
|
||||
<button type="button" id="btnSearch" class="btn btn-search" title="검색">검색</button>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</form>
|
||||
<!-- //검색 -->
|
||||
|
||||
<div class="container-page-btn">
|
||||
<span>
|
||||
<div class="clearfix" id="totCnt">전체 ㅣ <span></span></div>
|
||||
</span>
|
||||
<span class="flr">
|
||||
<a href="#" class="btn btn-darkgray" id="btnRegist" title="권한등록">등록</a>
|
||||
</span>
|
||||
</div>
|
||||
<!-- //버튼 및 페이지정보 -->
|
||||
|
||||
<!-- 데이터 출력 -->
|
||||
<div id="grid"></div>
|
||||
<div class="d-flex flex-row p-3 justify-content-between">
|
||||
<label id="grid1PagingInfo" class="dataTables_info" role="status" aria-live="polite"></label>
|
||||
<ul id="grid1Paging" class="pagination pagination-primary"></ul>
|
||||
</div>
|
||||
|
||||
<script type="text/javaScript">
|
||||
/**************************************************************************
|
||||
* Global Variable
|
||||
**************************************************************************/
|
||||
let GRID = null;
|
||||
var callbackSearch = () => search$$s();
|
||||
|
||||
let $$Control = new FimsDatasetControl({
|
||||
prefix:"aaa",
|
||||
prefixName:"ㅁㅁㅁ",
|
||||
infoSize:"xl",
|
||||
urls : {
|
||||
load : frwkApiUrl.FIND_ANS_TMPLS,
|
||||
getInfo : frwkApiUrl.POPUP_ANS_TMPLS
|
||||
},
|
||||
keymapper:info => info ? info.SOME_KEY : "",
|
||||
dataGetter:obj => obj.data.contents
|
||||
});
|
||||
|
||||
$$Control.onDatasetChange = obj => {
|
||||
let pagination = obj.data.pagination;
|
||||
|
||||
if(obj.data.pagination){
|
||||
$$Control._paginationInfo.totalSize = pagination.totalSize;
|
||||
$$Control._paginationInfo.pageNum = pagination.pageNum;
|
||||
} else {
|
||||
$$Control._paginationInfo.totalSize = obj.count;
|
||||
}
|
||||
|
||||
$$Control.totalCountSetting(obj);
|
||||
|
||||
render$$List(obj.data);
|
||||
|
||||
if($$Control._paginationInfo.paging && $$Control._paginationInfo.pagingType == "nav"){
|
||||
let start = 0;
|
||||
if(pagination.pageNum > 1 && pagination.totalPage > 1 && pagination.totalSize > $$Control._paginationInfo.fetchSize){
|
||||
start = $$Control._paginationInfo.fetchSize * (pagination.pageNum - 1);
|
||||
}
|
||||
$("#grid1Paging").setPaging({
|
||||
list: $$Control.dataset,
|
||||
prefix: "grid1",
|
||||
start: start,
|
||||
totalSize: pagination.totalSize,
|
||||
fetchSize: $$Control._paginationInfo.fetchSize,
|
||||
func: "$$$Control.load({index})",
|
||||
});
|
||||
}
|
||||
};
|
||||
|
||||
function search$$s(){
|
||||
let formFields = new FimsFormFields("#frmSearch");
|
||||
$$Control.query = formFields.get();
|
||||
GRID.clear();
|
||||
$$Control.load(1);
|
||||
}
|
||||
|
||||
function render$$List(data) {
|
||||
if($$Control._paginationInfo.paging && $$Control._paginationInfo.pagingType == "nav"){
|
||||
GRID.clear();
|
||||
}
|
||||
GRID.appendRows(data.contents);
|
||||
}
|
||||
|
||||
/* *******************************
|
||||
* Biz function
|
||||
******************************* */
|
||||
const fnBiz = {
|
||||
pagePopup: function(flag, params){
|
||||
let popTitle;
|
||||
let popOption = {width: 950, height:600};
|
||||
switch (flag) {
|
||||
case "add": //등록
|
||||
popTitle = "공통 답변 템플릿 등록";
|
||||
break;
|
||||
case "detail": //상세
|
||||
popTitle = "공통 답변 템플릿 상세";
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
$.blockUI({message: '' ,css: {width: '100%', height: '100%'}
|
||||
//모달창 외부 클릭시 닫기
|
||||
,onOverlayClick: () => {
|
||||
$.unblockUI();
|
||||
popup.self.close();
|
||||
}
|
||||
});
|
||||
CmmPopup.open($$Control.urls.getInfo, params, popOption, popTitle);
|
||||
}
|
||||
,onClickGrid: function(props){
|
||||
const rowData = props.grid.getRow(props.rowKey);
|
||||
fnBiz.pagePopup('detail', rowData);
|
||||
}
|
||||
,onSearchChange: () => {
|
||||
if($('#answerSeCode').val() === ''){
|
||||
$("input[name=resnCode]").val('');
|
||||
$('select[name="ctgrId"]')
|
||||
.css('display', 'none')
|
||||
.attr('disabled', true);
|
||||
$('select[name="ctgrId1"]')
|
||||
.css('display', 'none')
|
||||
.attr('disabled', true);
|
||||
}else if($('#answerSeCode').val() === 'FIM025'){
|
||||
$('select[name="ctgrId"]')
|
||||
.css('display', 'inline-block')
|
||||
.attr('disabled', false);
|
||||
$('select[name="ctgrId1"]')
|
||||
.css('display', 'none')
|
||||
.attr('disabled', true);
|
||||
}else if($('#answerSeCode').val() === 'FIM021'){
|
||||
$('select[name="ctgrId"]')
|
||||
.css('display', 'none')
|
||||
.attr('disabled', true);
|
||||
$('select[name="ctgrId1"]')
|
||||
.css('display', 'inline-block')
|
||||
.attr('disabled', false);
|
||||
}
|
||||
}
|
||||
,onSearchCodeChange: (e) => {
|
||||
$("input[name=resnCode]").val($(e).val());
|
||||
}
|
||||
}
|
||||
|
||||
/**************************************************************************
|
||||
* event
|
||||
**************************************************************************/
|
||||
$(() => {
|
||||
$('#btnSearch').on('click', () => search$$s());
|
||||
|
||||
$('#btnRegist').on('click', () => {
|
||||
fnBiz.pagePopup('add', {});
|
||||
});
|
||||
|
||||
});
|
||||
|
||||
/* *******************************
|
||||
* Grid
|
||||
******************************* */
|
||||
const initGrid = () => {
|
||||
const gridColumns = [
|
||||
{
|
||||
header: '템플릿',
|
||||
name: 'tmplatNm',
|
||||
minWidth: 170,
|
||||
sortable: true,
|
||||
sortingType: 'desc',
|
||||
renderer: {
|
||||
type: CustomButtonRenderer,
|
||||
options: {
|
||||
formatter: (props) => {
|
||||
return {
|
||||
formatter: props.grid.getRow(props.rowKey).tmplatNm + "-" + props.grid.getRow(props.rowKey).answerSeCodeNm + "-" + props.grid.getRow(props.rowKey).resnCodeNm
|
||||
,element : "text"
|
||||
}
|
||||
}
|
||||
,eventFunction: fnBiz.onClickGrid
|
||||
,eventType: "click"
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
header: '답변 구분',
|
||||
name: 'answerSeCodeNm',
|
||||
minWidth: 80,
|
||||
sortable: false,
|
||||
align: 'center'
|
||||
},
|
||||
{
|
||||
header: '사유',
|
||||
name: 'resnCodeNm',
|
||||
minWidth: 120,
|
||||
sortable: false,
|
||||
align: 'center'
|
||||
},
|
||||
{
|
||||
header: '답변여부',
|
||||
name: 'answerYn',
|
||||
minWidth: 80,
|
||||
sortable: false,
|
||||
align: 'center'
|
||||
},
|
||||
{
|
||||
header: '삭제여부',
|
||||
name: 'delYn',
|
||||
minWidth: 80,
|
||||
sortable: false,
|
||||
align: 'center'
|
||||
},
|
||||
{
|
||||
header: '작성자',
|
||||
name: 'rgtrNm',
|
||||
minWidth: 80,
|
||||
sortable: false,
|
||||
align: 'center'
|
||||
},
|
||||
{
|
||||
header: '작성일시',
|
||||
name: 'regDt',
|
||||
minWidth: 120,
|
||||
sortable: false,
|
||||
align: 'center',
|
||||
formatter({value}){
|
||||
return StrDateTimeFormat.format(value);
|
||||
}
|
||||
}
|
||||
];
|
||||
|
||||
const gridOptions = {
|
||||
el: 'grid',
|
||||
rowHeaders: ['rowNum'],
|
||||
columns: gridColumns,
|
||||
|
||||
paginationInfoRef : $$Control._paginationInfo
|
||||
};
|
||||
|
||||
|
||||
GRID = TuiGrid.of(gridOptions);
|
||||
}
|
||||
|
||||
/**************************************************************************
|
||||
* initialize
|
||||
**************************************************************************/
|
||||
$(document).ready(function(){
|
||||
initGrid();
|
||||
$('select[name="ctgrId"]')
|
||||
.css('display', 'none')
|
||||
.attr('disabled', true);
|
||||
$('select[name="ctgrId1"]')
|
||||
.css('display', 'none')
|
||||
.attr('disabled', true);
|
||||
});
|
||||
</script>
|
@ -1,435 +0,0 @@
|
||||
<%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
|
||||
<%@ include file="/WEB-INF/jsp/include/taglib.jsp" %>
|
||||
<%@ include file="/WEB-INF/jsp/include/fims/taglib.jsp" %>
|
||||
|
||||
<%@ taglib prefix="validator" uri="http://www.springmodules.org/tags/commons-validator" %>
|
||||
|
||||
<c:set var="isUpdate" value="${!empty cmmAnsTmpl.tmplatId}"/>
|
||||
<c:set var="bizName" value="공통 답변 템플릿"/>
|
||||
|
||||
<script type="text/javascript" src="<c:url value="/framework/util/validator.do"/>"></script>
|
||||
<validator:javascript formName="cmmAnsTmpl" staticJavascript="false" xhtml="true" cdata="false"/>
|
||||
|
||||
<div class="popup" style="min-width: 100px;">
|
||||
<div class="container-window2" style="max-width: 800px;">
|
||||
<%@include file="/WEB-INF/jsp/include/fims/title-biz-popup.jsp" %>
|
||||
|
||||
<%--@elvariable id="cmmAnsTmpl" type="validator"--%>
|
||||
<form:form modelAttribute="cmmAnsTmpl" name="cmmAnsTmpl">
|
||||
<form:input path="resnCode" type="hidden"/>
|
||||
<form:input path="tmplatNm" type="hidden"/>
|
||||
<table class="table-03">
|
||||
<caption><c:out value="${bizName}"/> 등록 / 변경</caption>
|
||||
<colgroup>
|
||||
<col style="width: 15%;"/>
|
||||
<col style="width: 35%;"/>
|
||||
<col style="width: 15%;"/>
|
||||
<col style="width: 35%;"/>
|
||||
</colgroup>
|
||||
<tbody>
|
||||
<tr>
|
||||
<th scope="row" nowrap>
|
||||
<label for="tmplatId" class="required">템플릿 유형</label>
|
||||
</th>
|
||||
<td colspan="3">
|
||||
<select id="tmplatId" name="tmplatId" title="템플릿 유형"
|
||||
<c:choose>
|
||||
<c:when test="${isUpdate}">
|
||||
onFocus='this.initialSelect = this.selectedIndex;' onChange='this.selectedIndex = this.initialSelect;' style='background-color:#ababab'
|
||||
</c:when>
|
||||
<c:otherwise>
|
||||
onchange="fnBiz.onInitChange()"
|
||||
</c:otherwise>
|
||||
</c:choose>
|
||||
>
|
||||
<option value="">선택</option>
|
||||
<c:forEach var="result" items="${codeList23}" varStatus="status">
|
||||
<option <c:if test="${cmmAnsTmpl.tmplatId == result.code}">selected="selected"</c:if> value='<c:out value="${result.code}"/>' ><c:out value="${result.code_val}"/></option>
|
||||
</c:forEach>
|
||||
</select>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th scope="row" nowrap>
|
||||
<label for="answerSeCode" class="required">답변 구분명</label>
|
||||
</th>
|
||||
<td>
|
||||
<select id="answerSeCode" name="answerSeCode" title="답변 구분명"
|
||||
<c:choose>
|
||||
<c:when test="${isUpdate}">
|
||||
onFocus='this.initialSelect = this.selectedIndex;' onChange='this.selectedIndex = this.initialSelect;' style='background-color:#ababab'
|
||||
</c:when>
|
||||
<c:otherwise>
|
||||
onchange="fnBiz.onSearchChange()"
|
||||
</c:otherwise>
|
||||
</c:choose>
|
||||
>
|
||||
<option value="">선택</option>
|
||||
<option <c:if test="${cmmAnsTmpl.answerSeCode == 'FIM028'}">selected="selected"</c:if> value="FIM028">부과 답변</option>
|
||||
<option <c:if test="${cmmAnsTmpl.answerSeCode == 'FIM025'}">selected="selected"</c:if> value="FIM025">계도</option>
|
||||
<option <c:if test="${cmmAnsTmpl.answerSeCode == 'FIM021'}">selected="selected"</c:if> value="FIM021">서손</option>
|
||||
</select>
|
||||
</td>
|
||||
<th scope="row" nowrap>
|
||||
<label for="ctgrId1" class="required">사유</label>
|
||||
</th>
|
||||
<td>
|
||||
<p></p>
|
||||
<select name="ctgrId1" id="ctgrId1" class="select" title="부과코드"
|
||||
<c:choose>
|
||||
<c:when test="${isUpdate && cmmAnsTmpl.answerSeCode == 'FIM028'}">
|
||||
onFocus='this.initialSelect = this.selectedIndex;' onChange='this.selectedIndex = this.initialSelect;' style='background-color:#ababab'
|
||||
</c:when>
|
||||
<c:when test="${isUpdate && cmmAnsTmpl.answerSeCode != 'FIM028'}">
|
||||
style="display:none;"
|
||||
</c:when>
|
||||
<c:otherwise>
|
||||
onchange="fnBiz.onSearchCodeChange(this)"
|
||||
</c:otherwise>
|
||||
</c:choose>
|
||||
>
|
||||
<option value="">전체</option>
|
||||
<c:forEach var="result" items="${codeList28}" varStatus="status">
|
||||
<option <c:if test="${cmmAnsTmpl.resnCode == result.code}">selected="selected"</c:if> value='<c:out value="${result.code}"/>' ><c:out value="${result.code_val}"/></option>
|
||||
</c:forEach>
|
||||
</select>
|
||||
|
||||
<select name="ctgrId2" id="ctgrId2" class="select" title="서손코드"
|
||||
<c:choose>
|
||||
<c:when test="${isUpdate && cmmAnsTmpl.answerSeCode == 'FIM025'}">
|
||||
onFocus='this.initialSelect = this.selectedIndex;' onChange='this.selectedIndex = this.initialSelect;' style='background-color:#ababab'
|
||||
</c:when>
|
||||
<c:when test="${isUpdate && cmmAnsTmpl.answerSeCode != 'FIM025'}">
|
||||
style="display:none;"
|
||||
</c:when>
|
||||
<c:otherwise>
|
||||
onchange="fnBiz.onSearchCodeChange(this)"
|
||||
</c:otherwise>
|
||||
</c:choose>
|
||||
>
|
||||
<option value="">전체</option>
|
||||
<c:forEach var="result" items="${codeList25}" varStatus="status">
|
||||
<option <c:if test="${cmmAnsTmpl.resnCode == result.code}">selected="selected"</c:if> value='<c:out value="${result.code}"/>' ><c:out value="${result.code_val}"/></option>
|
||||
</c:forEach>
|
||||
</select>
|
||||
|
||||
<select name="ctgrId3" id="ctgrId3" class="select" title="계도코드"
|
||||
<c:choose>
|
||||
<c:when test="${isUpdate && cmmAnsTmpl.answerSeCode == 'FIM021'}">
|
||||
onFocus='this.initialSelect = this.selectedIndex;' onChange='this.selectedIndex = this.initialSelect;' style='background-color:#ababab'
|
||||
</c:when>
|
||||
<c:when test="${isUpdate && cmmAnsTmpl.answerSeCode != 'FIM021'}">
|
||||
style="display:none;"
|
||||
</c:when>
|
||||
<c:otherwise>
|
||||
onchange="fnBiz.onSearchCodeChange(this)"
|
||||
</c:otherwise>
|
||||
</c:choose>
|
||||
>
|
||||
<option value="">전체</option>
|
||||
<c:forEach var="result" items="${codeList21}" varStatus="status">
|
||||
<option <c:if test="${cmmAnsTmpl.resnCode == result.code}">selected="selected"</c:if> value='<c:out value="${result.code}"/>' ><c:out value="${result.code_val}"/></option>
|
||||
</c:forEach>
|
||||
</select>
|
||||
</td>
|
||||
</tr>
|
||||
<tr class="prfaceTr">
|
||||
<th scope="row" nowrap>
|
||||
<label for="prface" class="required">머리말</label>
|
||||
</th>
|
||||
<td colspan="3">
|
||||
<form:textarea path="prface" cols="75" rows="4" title="머리말"/>
|
||||
<form:errors path="prface" />
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th scope="row" nowrap>
|
||||
<label for="answerCn" class="required">답변 내용</label>
|
||||
</th>
|
||||
<td colspan="3">
|
||||
<form:textarea path="answerCn" cols="75" rows="4" title="답변내용"/>
|
||||
<form:errors path="answerCn" />
|
||||
</td>
|
||||
</tr>
|
||||
<tr class="tlfaceTr">
|
||||
<th scope="row" nowrap>
|
||||
<label for="tlface" class="required">꼬리말</label>
|
||||
</th>
|
||||
<td colspan="3">
|
||||
<form:textarea path="tlface" cols="75" rows="4" title="꼬리말"/>
|
||||
<form:errors path="tlface" />
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</form:form>
|
||||
<table class="table-02" style="white-space:normal;">
|
||||
<caption>민원 답변내용 미리보기</caption>
|
||||
<colgroup>
|
||||
<col style="width: 15%;"/>
|
||||
<col style="width: 35%;"/>
|
||||
<col style="width: 15%;"/>
|
||||
<col style="width: 35%;"/>
|
||||
</colgroup>
|
||||
<tbody>
|
||||
<td colspan="4">
|
||||
<textarea id="ansPreview" cols="70" rows="17" readonly></textarea>
|
||||
</td>
|
||||
</tbody>
|
||||
</table>
|
||||
<div class="other_btn" style="position:absolute; bottom:0px;">
|
||||
<span class="other_btn_02"> [매크로 문자 삽입]:
|
||||
<a href="#" class="btn btn-blue" id="btnKey" onclick="fnBiz.onMacroInsert(this);">일련번호</a>
|
||||
<a href="#" class="btn btn-blue" id="btnPhone" onclick="fnBiz.onMacroInsert(this);">전화번호</a>
|
||||
<a href="#" class="btn btn-blue" id="btnCar" onclick="fnBiz.onMacroInsert(this);">차량번호</a>
|
||||
</span>
|
||||
<span class="other_btn_03"> [미리보기]:
|
||||
<a href="#" class="btn btn-green" id="btnPreview">미리보기</a>
|
||||
</span>
|
||||
</div>
|
||||
<%@include file="/WEB-INF/jsp/include/fims/btns-biz-popup-use.jsp" %>
|
||||
<!-- //등록버튼 -->
|
||||
</div>
|
||||
</div>
|
||||
<!-- //popup -->
|
||||
|
||||
<script type="text/javascript">
|
||||
/**************************************************************************
|
||||
* Global Variable
|
||||
**************************************************************************/
|
||||
let orgData;
|
||||
let tAreaSelect = null;
|
||||
|
||||
/* *******************************
|
||||
* Biz function
|
||||
******************************* */
|
||||
const fnBiz = {
|
||||
add: () => {
|
||||
if (!fnBiz.validate()) return;
|
||||
|
||||
cmmBizAjax('add', {
|
||||
url: frwkApiUrl.SAVE_ANS_TMPLS
|
||||
, data: $('form').serialize()
|
||||
})
|
||||
}
|
||||
,modify: () => {
|
||||
if (!fnBiz.validate()) return;
|
||||
|
||||
//머리말, 꼬리말 변경 사항 없어도 Update - 추후 작업 필요할 경우 비교 처리 필요.
|
||||
cmmBizAjax('modify', {
|
||||
url: frwkApiUrl.MODIFY_ANS_TMPLS
|
||||
, data: $('form').serialize()
|
||||
});
|
||||
}
|
||||
,remove: () => {
|
||||
cmmBizAjax('remove', {
|
||||
url: frwkApiUrl.MODIFY_ANS_TMPLS
|
||||
, data: $('form').serialize()
|
||||
});
|
||||
}
|
||||
,validate: () => {
|
||||
if(orgData === $('form').serialize()){
|
||||
alert('변경된 내용이 없습니다.');
|
||||
return false;
|
||||
}
|
||||
if(!validateCmmAnsTmpl(document.getElementById("cmmAnsTmpl"))) return false;
|
||||
|
||||
const answerSeCode = $('#answerSeCode').val();
|
||||
if($("input[name=resnCode]").val() === '') {
|
||||
alert('사유는 필수 입력입니다.');
|
||||
if(answerSeCode === 'FIM028') $('#ctgrId1').focus();
|
||||
if(answerSeCode === 'FIM025') $('#ctgrId2').focus();
|
||||
if(answerSeCode === 'FIM021') $('#ctgrId3').focus();
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
,onInitChange: () => {
|
||||
const tmplatId = $('#tmplatId').val();
|
||||
if(tmplatId === ''){
|
||||
$('#answerSeCode').val('');
|
||||
$('#ctgrId1').val('');
|
||||
$('#ctgrId2').val('');
|
||||
$('#ctgrId3').val('');
|
||||
$('.prfaceTr').css('display', 'none');
|
||||
$('.tlfaceTr').css('display', 'none');
|
||||
fnBiz.onSearchChange();
|
||||
}else{
|
||||
$('#tmplatNm').val($('#tmplatId option:checked').text());
|
||||
cmmAjax({
|
||||
url: frwkApiUrl.FIND_ANS_TMPLS
|
||||
, data: {tmplatId: tmplatId}
|
||||
, type: "GET"
|
||||
, showSuccessMsg: false
|
||||
, success: (res) => {
|
||||
if(res.data.contents.length > 0){
|
||||
document.getElementById("prface").value = res.data.contents[0].prface;
|
||||
document.getElementById("tlface").value = res.data.contents[0].tlface;
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
,onSearchChange: () => {
|
||||
if($('#answerSeCode').val() === ''){
|
||||
$("input[name=resnCode]").val('');
|
||||
$('select[name="ctgrId1"]')
|
||||
.css('display', 'none')
|
||||
.attr('disabled', true);
|
||||
$('select[name="ctgrId2"]')
|
||||
.css('display', 'none')
|
||||
.attr('disabled', true);
|
||||
$('select[name="ctgrId3"]')
|
||||
.css('display', 'none')
|
||||
.attr('disabled', true);
|
||||
}else{
|
||||
if($('#tmplatId').val() === ''){
|
||||
alert('템플릿 유형을 먼저 선택해주세요.');
|
||||
$('#answerSeCode').val('');
|
||||
document.getElementById("tmplatId").focus();
|
||||
return false;
|
||||
}else if($('#answerSeCode').val() === 'FIM028'){
|
||||
$('select[name="ctgrId1"]')
|
||||
.css('display', 'inline-block')
|
||||
.attr('disabled', false);
|
||||
$('select[name="ctgrId2"]')
|
||||
.css('display', 'none')
|
||||
.attr('disabled', true);
|
||||
$('select[name="ctgrId3"]')
|
||||
.css('display', 'none')
|
||||
.attr('disabled', true);
|
||||
$('.prfaceTr').css('display', 'table-row');
|
||||
$('.tlfaceTr').css('display', 'table-row');
|
||||
}else if($('#answerSeCode').val() === 'FIM025'){
|
||||
$('select[name="ctgrId1"]')
|
||||
.css('display', 'none')
|
||||
.attr('disabled', true);
|
||||
$('select[name="ctgrId2"]')
|
||||
.css('display', 'inline-block')
|
||||
.attr('disabled', false);
|
||||
$('select[name="ctgrId3"]')
|
||||
.css('display', 'none')
|
||||
.attr('disabled', true);
|
||||
$('.prfaceTr').css('display', 'none');
|
||||
$('.tlfaceTr').css('display', 'none');
|
||||
}else if($('#answerSeCode').val() === 'FIM021'){
|
||||
$('select[name="ctgrId1"]')
|
||||
.css('display', 'none')
|
||||
.attr('disabled', true);
|
||||
$('select[name="ctgrId2"]')
|
||||
.css('display', 'none')
|
||||
.attr('disabled', true);
|
||||
$('select[name="ctgrId3"]')
|
||||
.css('display', 'inline-block')
|
||||
.attr('disabled', false);
|
||||
$('.prfaceTr').css('display', 'none');
|
||||
$('.tlfaceTr').css('display', 'none');
|
||||
}
|
||||
}
|
||||
}
|
||||
,onSearchCodeChange: (e) => {
|
||||
$("input[name=resnCode]").val($(e).val());
|
||||
}
|
||||
,onMacroInsert: (e) => {
|
||||
if(tAreaSelect === null){
|
||||
alert("텍스트 영역을 먼저 선택한 후에 눌러주세요.");
|
||||
return false;
|
||||
}else{
|
||||
const selectPos = tAreaSelect.line;
|
||||
const txtArea = document.getElementById(tAreaSelect.id);
|
||||
const beforeTxt = txtArea.value.substring(0, selectPos);
|
||||
const afterTxt = txtArea.value.substring(selectPos, txtArea.value.length);
|
||||
let addTxt = '';
|
||||
|
||||
if(e.id === 'btnKey') addTxt = "[" + $('#'+e.id).text() + "]";
|
||||
if(e.id === 'btnPhone') addTxt = "[" + $('#'+e.id).text() + "]";
|
||||
if(e.id === 'btnCar') addTxt = "[" + $('#'+e.id).text() + "]";
|
||||
txtArea.value = beforeTxt + addTxt + afterTxt;
|
||||
|
||||
txtArea.selectionStart = selectPos + addTxt.length;
|
||||
txtArea.selectionEnd = selectPos + addTxt.length;
|
||||
txtArea.focus();
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
/**************************************************************************
|
||||
* event
|
||||
**************************************************************************/
|
||||
$(() => {
|
||||
$(window).on("unload", function (e) {
|
||||
window.opener?.unblockUI();
|
||||
return null;
|
||||
});
|
||||
|
||||
$("#btnClose").on('click', () => {
|
||||
window.opener?.unblockUI();
|
||||
window.close()
|
||||
});
|
||||
|
||||
$('#btnRegist').on('click', () => {
|
||||
fnBiz.add();
|
||||
});
|
||||
|
||||
$('#btnModify').on('click', () => {
|
||||
fnBiz.modify();
|
||||
});
|
||||
|
||||
$('#btnRemove').on('click', () => {
|
||||
fnBiz.remove();
|
||||
});
|
||||
|
||||
$('#btnPreview').on('click', (e) => {
|
||||
const btnPre = e.target;
|
||||
if(btnPre.text === '미리보기'){
|
||||
$('.table-03').css('display', 'none');
|
||||
$('.table-02').css('display', '');
|
||||
$('.other_btn_02').css('display', 'none');
|
||||
$('.container-window-btn2').css('display', 'none');
|
||||
btnPre.text = '입력화면';
|
||||
const pTxt = document.getElementById("prface").value + '\r\n \r\n' + document.getElementById("answerCn").value + '\r\n \r\n' + document.getElementById("tlface").value;
|
||||
document.getElementById("ansPreview").value = pTxt.replaceAll('[일련번호]', '123456').replaceAll('[차량번호]', '11가1234').replaceAll('[전화번호]', '010-1234-5678');
|
||||
}else{
|
||||
$('.table-03').css('display', '');
|
||||
$('.table-02').css('display', 'none');
|
||||
$('.other_btn_02').css('display', '');
|
||||
$('.container-window-btn2').css('display', '');
|
||||
btnPre.text = '미리보기';
|
||||
document.getElementById("ansPreview").value = "";
|
||||
}
|
||||
});
|
||||
|
||||
$('#prface').on('blur', (e) => {
|
||||
tAreaSelect = null;
|
||||
tAreaSelect = {id:e.target.id, line:$(e.target).prop("selectionStart")};
|
||||
});
|
||||
|
||||
$('#answerCn').on('blur', (e) => {
|
||||
tAreaSelect = null;
|
||||
tAreaSelect = {id:e.target.id, line:$(e.target).prop("selectionStart")};
|
||||
});
|
||||
|
||||
$('#tlface').on('blur', (e) => {
|
||||
tAreaSelect = null;
|
||||
tAreaSelect = {id:e.target.id, line:$(e.target).prop("selectionStart")};
|
||||
});
|
||||
});
|
||||
|
||||
/**************************************************************************
|
||||
* initialize
|
||||
**************************************************************************/
|
||||
$(document).ready(function () {
|
||||
orgData = $('form').serialize();
|
||||
$('.table-02').css('display', 'none');
|
||||
<c:if test="${!isUpdate}">
|
||||
fnBiz.onInitChange();
|
||||
</c:if>
|
||||
<c:if test="${isUpdate}">
|
||||
if($('#answerSeCode').val() != 'FIM028'){
|
||||
$('.prfaceTr').css('display', 'none');
|
||||
$('.tlfaceTr').css('display', 'none');
|
||||
}
|
||||
</c:if>
|
||||
});
|
||||
</script>
|
@ -1,20 +0,0 @@
|
||||
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
|
||||
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
|
||||
<%@ taglib prefix="ui" uri="http://egovframework.gov/ctl/ui"%>
|
||||
<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %>
|
||||
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags"%>
|
||||
<table>
|
||||
<c:forEach var="fileVO" items="${fileList}" varStatus="status">
|
||||
<tr>
|
||||
<td></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<img src='<c:url value='/_cmmn_/file/getImage.do'/>?atchFileId=<c:out value="${fileVO.atchFileId}"/>&fileSn=<c:out value="${fileVO.fileSn}"/>' width="640" alt="파일보기링크" />
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
</tr>
|
||||
</c:forEach>
|
||||
</table>
|
@ -1,61 +0,0 @@
|
||||
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
|
||||
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
|
||||
<%@ taglib prefix="ui" uri="http://egovframework.gov/ctl/ui"%>
|
||||
<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %>
|
||||
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags"%>
|
||||
<script type="text/javascript">
|
||||
function fn_egov_downFile(atchFileId, fileSn){
|
||||
window.open("<c:url value='/_cmmn_/file/Download.do?atchFileId="+atchFileId+"&fileSn="+fileSn+"'/>");
|
||||
}
|
||||
|
||||
function fn_egov_deleteFile(atchFileId, fileSn) {
|
||||
if(!confirm('삭제하시겠습니까?'))
|
||||
return false;
|
||||
|
||||
forms = document.getElementsByTagName("form");
|
||||
|
||||
for (var i = 0; i < forms.length; i++) {
|
||||
if (typeof(forms[i].atchFileId) != "undefined" &&
|
||||
typeof(forms[i].fileSn) != "undefined" &&
|
||||
typeof(forms[i].fileListCnt) != "undefined") {
|
||||
form = forms[i];
|
||||
}
|
||||
}
|
||||
//form = document.forms[0];
|
||||
form.atchFileId.value = atchFileId;
|
||||
form.fileSn.value = fileSn;
|
||||
form.action = "<c:url value='/_cmmn_/file/AttachFile_delete_proc.do'/>";
|
||||
form.submit();
|
||||
}
|
||||
|
||||
function fn_egov_check_file(flag) {
|
||||
if (flag=="Y") {
|
||||
document.getElementById('file_upload_posbl').style.display = "block";
|
||||
document.getElementById('file_upload_imposbl').style.display = "none";
|
||||
} else {
|
||||
document.getElementById('file_upload_posbl').style.display = "none";
|
||||
document.getElementById('file_upload_imposbl').style.display = "block";
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<input type="hidden" name="atchFileId" value="${atchFileId}">
|
||||
<input type="hidden" name="fileSn" >
|
||||
<input type="hidden" name="fileListCnt" value="${fileListCnt}">
|
||||
<c:forEach var="fileVO" items="${fileList}" varStatus="status">
|
||||
<c:if test="${not status.first }"><br/></c:if>
|
||||
<c:choose>
|
||||
<c:when test="${updateFlag=='Y'}">
|
||||
<c:out value="${fileVO.orignlFileNm}"/> [<c:out value="${fileVO.fileSize}"/> byte]
|
||||
<img alt="파일 삭제" src="<c:url value='/resources/image/fims/framework/btn/bu5_close.gif'/>"
|
||||
width="19" height="18" onClick="fn_egov_deleteFile('<c:out value="${fileVO.atchFileId}"/>','<c:out value="${fileVO.fileSn}"/>');" />
|
||||
</c:when>
|
||||
<c:otherwise>
|
||||
<a href="#LINK" onclick="javascript:fn_egov_downFile('<c:out value="${fileVO.atchFileId}"/>','<c:out value="${fileVO.fileSn}"/>')">
|
||||
<c:out value="${fileVO.orignlFileNm}"/> [<c:out value="${fileVO.fileSize}"/> byte]
|
||||
</a>
|
||||
</c:otherwise>
|
||||
</c:choose>
|
||||
</c:forEach>
|
||||
<c:if test="${fn:length(fileList) == 0}">
|
||||
</c:if>
|
@ -1,65 +0,0 @@
|
||||
<%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
|
||||
<%@ include file="/WEB-INF/jsp/include/taglib.jsp" %>
|
||||
<%@ include file="/WEB-INF/jsp/include/fims/taglib.jsp" %>
|
||||
|
||||
<c:set var="bizName" value="이미지 보기"/>
|
||||
|
||||
<div class="popup" style="min-width: 100px;">
|
||||
<div class="container-window1" style="max-width: 800px;">
|
||||
<p class="container-window-header2">
|
||||
<c:out value="${bizName}"/>(<c:out value="${fileDtlDTO.orginlFileNm}"/>) 이미지
|
||||
</p>
|
||||
|
||||
<div>
|
||||
<img id="uploadImage" src='<c:out value="${fileDtlDTO.downloadUrl}"/>' style="height: 520px; width: 750px; object-fit: contain"/>
|
||||
<%-- FIXME: 이미지 크기별로 set하는 경우 사용 --%>
|
||||
<!--img id="uploadImage" src='<c:out value="${fileDtlDTO.downloadUrl}"/>'/-->
|
||||
</div>
|
||||
|
||||
<div class="container-window-btn1">
|
||||
<span class="container-window-btn-right">
|
||||
<c:if test="${fileDtlDTO.editor}">
|
||||
<a href="#" class="btn btn-blue" onclick="paintwebImageEditor()">이미지편집</a>
|
||||
</c:if>
|
||||
<a href="#" class="btn btn-lightgray" onclick="window.close()">닫기</a>
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<script type="text/javascript">
|
||||
function paintwebImageEditor() {
|
||||
window.opener.popup = window.opener.imageEditorPopup('imageEditor', {imageTagId: '<c:out value="${fileDtlDTO.fileId}"/>'});
|
||||
}
|
||||
|
||||
$(document).ready(function () {
|
||||
<%-- FIXME: 이미지 크기별로 set하는 경우 사용 --%>
|
||||
/*
|
||||
const img = document.getElementById('uploadImage');
|
||||
let scaleRate = 1.0;
|
||||
let width = img.naturalWidth;
|
||||
let height = img.naturalHeight;
|
||||
|
||||
if(width > 750){
|
||||
scaleRate = 750 / width;
|
||||
width = Math.floor(width * scaleRate);
|
||||
height = Math.floor(height * scaleRate);
|
||||
}
|
||||
|
||||
if(height > 520){
|
||||
scaleRate = 520 / height;
|
||||
width = Math.floor(width * scaleRate);
|
||||
height = Math.floor(height * scaleRate);
|
||||
}
|
||||
|
||||
|
||||
$(img).attr({
|
||||
width
|
||||
,height
|
||||
,'object-fit': 'contain'
|
||||
,'align-items': 'center'
|
||||
});
|
||||
*/
|
||||
});
|
||||
</script>
|
||||
|
@ -1,110 +0,0 @@
|
||||
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
|
||||
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
|
||||
|
||||
<!DOCTYPE html>
|
||||
<html lang="ko">
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
|
||||
<title>PaintWeb</title>
|
||||
<script type="text/javascript" src="/resources/lib/fims/biz/paintweb/paintweb.js"></script>
|
||||
<script type="text/javascript" src="/resources/lib/fims/biz/paintweb/html2canvas.min.js"></script>
|
||||
<script type="text/javascript" src="/resources/lib/fims/biz/paintweb/es6-promise.min.js"></script>
|
||||
<script type="text/javascript" src="/resources/lib/fims/biz/paintweb/es6-promise.auto.min.js"></script>
|
||||
<script type="text/javascript" src="/resources/js/fims/framework/cmm/cmmUtil.js"></script>
|
||||
</head>
|
||||
<body>
|
||||
<img id="editableImage"/>
|
||||
<div id="PaintWebTarget"></div>
|
||||
<script type="text/javascript">
|
||||
|
||||
//FIXME: pw instance 변수명 변경시 paintweb.js의 imageSaveTo() 내의 2564 line if(pw.image.modified) 변경 필요
|
||||
var pw;
|
||||
//FIXME: srcImg 변수명 변경시 paintweb.js의 imageSaveTo() 내의 2669 line var url = srcImg.src; 변경 필요
|
||||
var srcImg;
|
||||
let editImg =null;
|
||||
|
||||
const afterImageSave = () => {
|
||||
window.close();
|
||||
}
|
||||
|
||||
const initEditor = () => {
|
||||
pw = new PaintWeb();
|
||||
pw.config.guiPlaceholder = document.getElementById('PaintWebTarget');
|
||||
pw.config.configFile = 'paintweb-config.json';
|
||||
pw.config.imageLoad = editImg;
|
||||
|
||||
//pw.config.imageSaveURL = "/saveImage.do"; // imageSave == image upload
|
||||
pw.config.imageSaveURL = "/saveImage"; // imageSave == image upload
|
||||
pw.config.imageDownloadURL = "/fileDownload.do";
|
||||
//pw.config.afterImageSave = afterImageSave;
|
||||
pw.config.imageSave = imageSaveTo;
|
||||
pw.config.afterImageSave = afterImageSave;
|
||||
|
||||
pw.init();
|
||||
}
|
||||
|
||||
function imageSaveTo(file, imgWidth, imgHeight, doc, _self){
|
||||
const isDelete = imgWidth === 0;
|
||||
if(isDelete){
|
||||
if(!confirm('단속이미지를 정말로 삭제 하시겠습니까?')) return;
|
||||
}else{
|
||||
if(!confirm('편집한 단속이미지를 저장하시겠습니까?')) return;
|
||||
}
|
||||
|
||||
const {fileMastrId, fileId, filePath} = srcImg.dataset;
|
||||
|
||||
// 삭제
|
||||
if(isDelete){
|
||||
const data = {
|
||||
fileMastrId
|
||||
, fileId
|
||||
};
|
||||
|
||||
cmmAjax({
|
||||
url: '<c:out value="/framework/biz/cmm/file/removeFile.do"/>'
|
||||
,data: $.param(data)
|
||||
,success: (res) => {
|
||||
window.opener.callbackReloadImage();
|
||||
window.close();
|
||||
}
|
||||
})
|
||||
return true;
|
||||
}
|
||||
|
||||
// 저장
|
||||
const formData = new FormData();
|
||||
formData.append('fileMastrId', fileMastrId);
|
||||
formData.append('fileId', fileId);
|
||||
formData.append('filePath', filePath);
|
||||
formData.append('file', file);
|
||||
|
||||
cmmAjax({
|
||||
type: 'post',
|
||||
url: '<c:out value="/framework/biz/cmm/file/uploadPaintweb.do"/>',
|
||||
processData: false,
|
||||
contentType: false,
|
||||
data: formData,
|
||||
success: (res) => {
|
||||
window.opener.callbackReloadImage();
|
||||
window.close();
|
||||
}
|
||||
})
|
||||
return true;
|
||||
}
|
||||
|
||||
$(document).ready(function () {
|
||||
srcImg = window.opener.document.getElementById('<c:out value="${imageTagId}"/>');
|
||||
|
||||
editImg = document.getElementById('editableImage');
|
||||
editImg.src = srcImg.src;
|
||||
editImg.onload = function () {
|
||||
initEditor();
|
||||
editImg.style.display = 'none';
|
||||
}
|
||||
});
|
||||
|
||||
</script>
|
||||
</body>
|
||||
|
||||
</html>
|
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@ -1,81 +0,0 @@
|
||||
/****************************************************************
|
||||
*
|
||||
* 파일명 : showModalDialog.js
|
||||
* 설 명 : showModalDialog 기능을 대체하는 JavaScript
|
||||
*
|
||||
* 수정일 수정자 Version Function 명
|
||||
* ------------ --------- ------------- ----------------------------
|
||||
* 2014.09.25 Vincent Han 1.0 최초생성
|
||||
*
|
||||
*/
|
||||
// fix for deprecated method in Chrome 37
|
||||
|
||||
this.otherParameters = new Array();
|
||||
this.showModalDialogSupported = true;
|
||||
|
||||
this.callbackMethod = null;
|
||||
|
||||
if (!window.showModalDialog) {
|
||||
|
||||
showModalDialogSupported = false;
|
||||
|
||||
window.showModalDialog = function(arg1, arg2, arg3, callback) {
|
||||
|
||||
var w;
|
||||
var h;
|
||||
var resizable = "no";
|
||||
var scroll = "no";
|
||||
var status = "no";
|
||||
|
||||
// get the modal specs
|
||||
var mdattrs = arg3.split(";");
|
||||
for (i = 0; i < mdattrs.length; i++) {
|
||||
var mdattr = mdattrs[i].split(":");
|
||||
|
||||
var n = mdattr[0];
|
||||
var v = mdattr[1];
|
||||
if (n) {
|
||||
n = n.trim().toLowerCase();
|
||||
}
|
||||
if (v) {
|
||||
v = v.trim().toLowerCase();
|
||||
}
|
||||
|
||||
if (n == "dialogheight") {
|
||||
h = v.replace("px", "");
|
||||
} else if (n == "dialogwidth") {
|
||||
w = v.replace("px", "");
|
||||
} else if (n == "resizable") {
|
||||
resizable = v;
|
||||
} else if (n == "scroll") {
|
||||
scroll = v;
|
||||
} else if (n == "status") {
|
||||
status = v;
|
||||
} else {
|
||||
// no-op
|
||||
}
|
||||
}
|
||||
|
||||
var left = window.screenX + (window.outerWidth / 2) - (w / 2);
|
||||
var top = window.screenY + (window.outerHeight / 2) - (h / 2);
|
||||
var targetWin = window.open(arg1, "ShowModalDialog" + arg1, 'toolbar=no, location=no, directories=no, status=' + status + ', menubar=no, scrollbars=' + scroll + ', resizable=' + resizable + ', copyhistory=no, width=' + w + ', height=' + h + ', top=' + top + ', left=' + left);
|
||||
|
||||
dialogArguments = arg2;
|
||||
|
||||
if (callback != null) {
|
||||
callbackMethod = callback;
|
||||
} else {
|
||||
callbackMethod = null;
|
||||
}
|
||||
|
||||
targetWin.focus();
|
||||
};
|
||||
|
||||
window.getDialogArgumentsInner = function() {
|
||||
return dialogArguments;
|
||||
};
|
||||
|
||||
window.getCallbackMethodName = function() {
|
||||
return callbackMethod;
|
||||
}
|
||||
}
|
@ -1,68 +0,0 @@
|
||||
/****************************************************************
|
||||
*
|
||||
* 파일명 : showModalDialogCallee.js
|
||||
* 설 명 : showModalDialog 기능을 대체하는 JavaScript
|
||||
*
|
||||
* 수정일 수정자 Version Function 명
|
||||
* ------------ --------- ------------- ----------------------------
|
||||
* 2014.09.25 Vincent Han 1.0 최초생성
|
||||
*
|
||||
*/
|
||||
|
||||
//----------------------
|
||||
//popped up page
|
||||
//----------------------
|
||||
function getDialogArguments() {
|
||||
if (!window.showModalDialog) {
|
||||
if (opener != null && !opener.closed) {
|
||||
try {
|
||||
window.dialogArguments = opener.getDialogArgumentsInner();
|
||||
} catch (err) {
|
||||
alert('팝업 처리 시 오류가 발생하였습니다. \n오류내용 : ' + err);
|
||||
}
|
||||
} else if (parent.opener != null && !parent.opener.closed) {
|
||||
try {
|
||||
window.dialogArguments = parent.opener.getDialogArgumentsInner();
|
||||
parent.window.dialogArguments = window.dialogArguments;
|
||||
} catch (err) {
|
||||
alert('팝업 처리 시 오류가 발생하였습니다. \n오류내용 : ' + err);
|
||||
}
|
||||
} else {
|
||||
alert('업무 화면에 대한 변동이 있습니다. 다시 시도해 주십시오.');
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function setReturnValue(obj) {
|
||||
if (!window.showModalDialog) {
|
||||
if (opener != null && !opener.closed) {
|
||||
|
||||
var callbackMethod = opener.getCallbackMethodName();
|
||||
|
||||
try {
|
||||
if (callbackMethod != null) {
|
||||
opener[callbackMethod](obj);
|
||||
} else {
|
||||
opener.showModalDialogCallback(obj);
|
||||
}
|
||||
} catch (err) {
|
||||
alert('팝업 처리 시 오류가 발생하였습니다. \n오류내용 : ' + err);
|
||||
}
|
||||
} else if (parent.opener != null && !parent.opener.closed) {
|
||||
|
||||
var callbackMethod = parent.opener.getCallbackMethodName();
|
||||
|
||||
try {
|
||||
if (callbackMethod != null) {
|
||||
parent.opener[callbackMethod](obj);
|
||||
} else {
|
||||
parent.opener.showModalDialogCallback(obj);
|
||||
}
|
||||
} catch (err) {
|
||||
alert('팝업 처리 시 오류가 발생하였습니다. \n오류내용 : ' + err);
|
||||
}
|
||||
} else {
|
||||
alert('업무 화면에 대한 변동이 있습니다. 다시 시도해 주십시오.');
|
||||
}
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue