feat: 단속현황 관리 진행

main
minuk926 2 years ago
parent f9d53afb82
commit 43ab8d0edf

@ -1,5 +1,6 @@
package kr.xit.fims.biz.cmm.web; package kr.xit.fims.biz.cmm.web;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Controller; import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMapping;
@ -9,21 +10,15 @@ import kr.xit.fims.biz.FimsConst;
import kr.xit.fims.biz.cmm.fimsTotalPopup.model.FimsTotalPopupVO; import kr.xit.fims.biz.cmm.fimsTotalPopup.model.FimsTotalPopupVO;
import kr.xit.fims.biz.cmm.model.FimsCrackdownDTO; import kr.xit.fims.biz.cmm.model.FimsCrackdownDTO;
import kr.xit.fims.biz.cmm.service.IFimsCrackdownMgtService; import kr.xit.fims.biz.cmm.service.IFimsCrackdownMgtService;
import kr.xit.fims.biz.utils.FimsBizUtils;
import kr.xit.framework.core.constants.FrameworkConstants; import kr.xit.framework.core.constants.FrameworkConstants;
import kr.xit.framework.core.model.ResultResponse;
import kr.xit.framework.support.util.AjaxMessageMapRenderer; import kr.xit.framework.support.util.AjaxMessageMapRenderer;
import kr.xit.framework.support.util.constants.MessageKey; import kr.xit.framework.support.util.constants.MessageKey;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
/** /**
*
* <ul>
* <li> : </li>
* <li> : </li>
* <li>: 2022. 09. 14.
* </ul>
*
* @author
* *
*/ */
@Slf4j @Slf4j
@ -31,17 +26,15 @@ import lombok.extern.slf4j.Slf4j;
@Controller @Controller
@RequestMapping("/fims/biz/cmm") @RequestMapping("/fims/biz/cmm")
public class FimsCrackDownMgtController { public class FimsCrackDownMgtController {
@Value("#{prop['file.rcv.root']}")
private String fileRcvRoot;
@Value("#{prop['file.rcv.busonly-cctv.path']}")
private String rcvBusonlyCctvPath;
@Value("#{prop['file.rcv.natl-newspaper.path']}")
private String rcvNatlNewspaperPath;
private final IFimsCrackdownMgtService service; private final IFimsCrackdownMgtService service;
/**
* <pre> : </pre>
* @param vo
* @return String
* @author:
* @date: 2022. 9. 20.
*/
@RequestMapping(value = "/cmmFimsCrackdownMgtPopup") @RequestMapping(value = "/cmmFimsCrackdownMgtPopup")
public ModelAndView cmmFimsCrackdownMgtPopup(final FimsCrackdownDTO.Request dto){ public ModelAndView cmmFimsCrackdownMgtPopup(final FimsCrackdownDTO.Request dto){
@ -53,6 +46,21 @@ public class FimsCrackDownMgtController {
return mav; return mav;
} }
@RequestMapping(value = "/cmmCrackdownRcvFilePopup")
public ModelAndView cmmCrackdownRcvFilePopup(){
ModelAndView mav = new ModelAndView(FimsConst.FIMS_JSP_BASE_PATH +"cmm/cmmCrackdownRcvFilePopup.popup");
mav.addObject("busOnlyDirPath", fileRcvRoot + rcvBusonlyCctvPath);
mav.addObject("ctznDirPath", fileRcvRoot + rcvNatlNewspaperPath);
return mav;
}
@RequestMapping(value = "/findRcvPathFiles")
public ModelAndView findRcvPathFiles(final String dirPath){
return ResultResponse.of(FimsBizUtils.getRcvPathFiles(dirPath));
}
@PostMapping(value="/add") @PostMapping(value="/add")
public ModelAndView add(FimsTotalPopupVO vo){ public ModelAndView add(FimsTotalPopupVO vo){

@ -99,6 +99,7 @@ public class EcCctvCrackdownService implements IEcCctvCrackdownService {
//Arrays.copyOfRange(sortedFileList.toArray(), 0, 4); //Arrays.copyOfRange(sortedFileList.toArray(), 0, 4);
// 5개씩 잘라 배열 생성
List<List<MultipartFile>> listByMd = ListUtils.partition(sortedFileList, 5); List<List<MultipartFile>> listByMd = ListUtils.partition(sortedFileList, 5);
for(int idx = 0; idx < listByMd.size(); idx++){ for(int idx = 0; idx < listByMd.size(); idx++){
@ -133,15 +134,7 @@ public class EcCctvCrackdownService implements IEcCctvCrackdownService {
// 단속 데이타 생성 // 단속 데이타 생성
mapper.insertRtRegltFromEcExtrRegltCntc( mapper.insertRtRegltFromEcExtrRegltCntc(
CctvCrackdownDTO.Request.builder() getRequestDTO(extrDTO)
.extrlRegltCntcId(extrDTO.getExtrlRegltCntcId())
.regltId(extrDTO.getRegltId())
.regltSeCode(extrDTO.getRegltSeCode())
.inputSeCode(extrDTO.getInputSeCode())
.jobSeCode(FimsBizUtils.getFileJobSeCode(extrDTO.getRegltSeCode()))
.regltProcessSttusCode(FimsConst.RegltProcessSttusCode.CRACKDOWN.getCode())
.register(getUserInfo().getUniqId())
.build()
); );
// CCTV image 저장 // CCTV image 저장
@ -202,15 +195,7 @@ public class EcCctvCrackdownService implements IEcCctvCrackdownService {
// 단속 데이타 생성 // 단속 데이타 생성
mapper.insertRtRegltFromEcExtrRegltCntc( mapper.insertRtRegltFromEcExtrRegltCntc(
CctvCrackdownDTO.Request.builder() getRequestDTO(extrDTO)
.extrlRegltCntcId(extrDTO.getExtrlRegltCntcId())
.regltId(extrDTO.getRegltId())
.regltSeCode(extrDTO.getRegltSeCode())
.inputSeCode(extrDTO.getInputSeCode())
.jobSeCode(FimsBizUtils.getFileJobSeCode(extrDTO.getRegltSeCode()))
.regltProcessSttusCode(FimsConst.RegltProcessSttusCode.CRACKDOWN.getCode())
.register(getUserInfo().getUniqId())
.build()
); );
// CCTV 이미지 저장 // CCTV 이미지 저장
@ -320,6 +305,23 @@ public class EcCctvCrackdownService implements IEcCctvCrackdownService {
.build(); .build();
} }
//---------------------------------------------------------------------------
// private method
//---------------------------------------------------------------------------
private CctvCrackdownDTO.Request getRequestDTO(CctvCrackdownDTO.ExtrlRegltCntc extrDTO) {
return CctvCrackdownDTO.Request.builder()
.extrlRegltCntcId(extrDTO.getExtrlRegltCntcId())
.regltId(extrDTO.getRegltId())
.regltSeCode(extrDTO.getRegltSeCode())
.inputSeCode(extrDTO.getInputSeCode())
.jobSeCode(FimsBizUtils.getFileJobSeCode(extrDTO.getRegltSeCode()))
.regltProcessSttusCode(FimsConst.RegltProcessSttusCode.CRACKDOWN.getCode())
.register(getUserInfo().getUniqId())
.build();
}
private CmmFileDTO.FileMst getFileMst(final String regltSeCode, final String fileJobId) { private CmmFileDTO.FileMst getFileMst(final String regltSeCode, final String fileJobId) {
return CmmFileDTO.FileMst.builder() return CmmFileDTO.FileMst.builder()
.jobSeCode( .jobSeCode(

@ -115,17 +115,38 @@ public class EcNatlNewspaperService implements IEcNatlNewspaperService {
mapper.insertEcEsbInterface(xmlDto); mapper.insertEcEsbInterface(xmlDto);
//------------------------------------------------------------- //-------------------------------------------------------------
//시민 신고 테이블 save //시민 신고 마스터 데이타 생성
//------------------------------------------------------------- //-------------------------------------------------------------
CtznStmtDTO ctznStmtDTO = setCtznSttemntDTOFromRcvXml(xmlDto); CtznStmtDTO ctznStmtDTO = setCtznSttemntDTOFromRcvXml(xmlDto);
ctznSttemntMapper.insertEcCtznSttemnt(ctznStmtDTO); ctznSttemntMapper.insertEcCtznSttemnt(ctznStmtDTO);
//-------------------------------------------------------------
//시민 신고 상세 / 단속 데이타 / 단속사진 데이타 / 단속사진 파일 생성
//-------------------------------------------------------------
index.set(0); index.set(0);
CmmFileDTO.FileMst fstMstDTO = null; CmmFileDTO.FileMst fstMstDTO = null;
CmmFileDTO.FileDtl pngDtlDTO = null; CmmFileDTO.FileDtl pngDtlDTO = null;
for(CtznStmtDTO.CtznStmtDtl dtl : ctznStmtDTO.getStmtDtlDTOs()){ for(CtznStmtDTO.CtznStmtDtl dtl : ctznStmtDTO.getStmtDtlDTOs()){
// 시민 신고 상세 데이타 생성
dtl.setCtznSttemntDetailProcessSttus(FimsConst.CtznStmtDtlStsCode.ACCEPTANCE.getCode());
ctznSttemntMapper.insertEcCtznSttemntDetail(dtl); ctznSttemntMapper.insertEcCtznSttemntDetail(dtl);
// 단속 데이타 생성
ctznSttemntMapper.insertRtRegltFromCtznStmt(
CtznStmtDTO.Request.builder()
//.inputSeCode(FimsConst.InputSeCode.CITIZEN.getCode())
//.regltSeCode(FimsConst.RegltSeCode.CITIZEN.getCode())
//.jobSeCode(FimsConst.FileJobSeCode.NATL_NEWS_PAPER_RCV.getCode())
.interfaceSeqN(dtl.getInterfaceSeqN())
.ctznSttemntDetailSn(dtl.getCtznSttemntDetailSn())
.regltId(dtl.getRegltId())
.regltProcessSttusCode(FimsConst.RegltProcessSttusCode.CRACKDOWN.getCode())
.register(getUserInfo().getUniqId())
.build()
);
// 신고사진 데이타 생성
// 단속건수가 1건인 경우 파일 전체 저장 // 단속건수가 1건인 경우 파일 전체 저장
if(ctznStmtDTO.isSingle()) { if(ctznStmtDTO.isSingle()) {
saveAllAppendFiles(xmlDto, appendFileDto, dtl, fileCnt); saveAllAppendFiles(xmlDto, appendFileDto, dtl, fileCnt);

@ -22,8 +22,6 @@ import kr.xit.framework.biz.cmm.model.CmmFileDTO;
import kr.xit.framework.biz.cmm.service.ICmmFileService; import kr.xit.framework.biz.cmm.service.ICmmFileService;
import kr.xit.framework.core.constants.FrameworkConstants; import kr.xit.framework.core.constants.FrameworkConstants;
import kr.xit.framework.core.model.ResultResponse; import kr.xit.framework.core.model.ResultResponse;
import kr.xit.framework.core.utils.fileExplorer.XitFileExplorerUtil;
import kr.xit.framework.core.utils.fileExplorer.function.DirectorySearch;
import kr.xit.framework.support.mybatis.MybatisUtils; import kr.xit.framework.support.mybatis.MybatisUtils;
import kr.xit.framework.support.util.AjaxMessageMapRenderer; import kr.xit.framework.support.util.AjaxMessageMapRenderer;
import kr.xit.framework.support.util.constants.MessageKey; import kr.xit.framework.support.util.constants.MessageKey;
@ -40,6 +38,8 @@ public class EcCctvCrackdownController {
@Value("#{prop['file.rcv.busonly-cctv.path']}") @Value("#{prop['file.rcv.busonly-cctv.path']}")
private String rcvBusonlyCctvPath; private String rcvBusonlyCctvPath;
@Value("#{prop['file.rcv.natl-newspaper.path']}")
private String rcvNatlNewspaperPath;
private final IEcCctvCrackdownService service; private final IEcCctvCrackdownService service;
private final ICmmFileService fileService; private final ICmmFileService fileService;
@ -52,7 +52,8 @@ public class EcCctvCrackdownController {
@RequestMapping(value = "/ecCctvCrackdownFileSelPopup") @RequestMapping(value = "/ecCctvCrackdownFileSelPopup")
public ModelAndView ecCctvCrackdownFileSelPopup(){ public ModelAndView ecCctvCrackdownFileSelPopup(){
ModelAndView mav = new ModelAndView(FimsConst.FIMS_JSP_BASE_PATH +"ec/ecCctvCrackdownFileSelPopup.popup"); ModelAndView mav = new ModelAndView(FimsConst.FIMS_JSP_BASE_PATH +"ec/ecCctvCrackdownFileSelPopup.popup");
mav.addObject("dirPath", fileRcvRoot + rcvBusonlyCctvPath); mav.addObject("busOnlyDirPath", fileRcvRoot + rcvBusonlyCctvPath);
mav.addObject("ctznDirPath", fileRcvRoot + rcvNatlNewspaperPath);
return mav; return mav;
} }
@ -146,15 +147,15 @@ public class EcCctvCrackdownController {
return mav; return mav;
} }
/**
* @see kr.xit.fims.biz.cmm.web.FimsCrackDownMgtController#findRcvPathFiles(String)
* @param dirPath
* @return
*/
@Deprecated
@RequestMapping(value = "/findBusCctvCrackdownFiles") @RequestMapping(value = "/findBusCctvCrackdownFiles")
public ModelAndView findBusCctvCrackdownFiles(final String dirPath){ public ModelAndView findBusCctvCrackdownFiles(final String dirPath){
return ResultResponse.of(FimsBizUtils.getRcvPathFiles(dirPath));
XitFileExplorerUtil explorer = new XitFileExplorerUtil(new DirectorySearch(dirPath));
return ResultResponse.of(
explorer.getList().stream()
.filter(m->"Y".equals(m.get("isFile")))
.collect(Collectors.toList())
);
} }
@RequestMapping("/findExtrlRegltCntcAttchFiles") @RequestMapping("/findExtrlRegltCntcAttchFiles")

@ -16,12 +16,11 @@ import org.springframework.web.servlet.ModelAndView;
import kr.xit.fims.biz.FimsConst; import kr.xit.fims.biz.FimsConst;
import kr.xit.fims.biz.ec.model.FolderReqDTO; import kr.xit.fims.biz.ec.model.FolderReqDTO;
import kr.xit.fims.biz.ec.service.IEcNatlNewspaperService; import kr.xit.fims.biz.ec.service.IEcNatlNewspaperService;
import kr.xit.fims.biz.utils.FimsBizUtils;
import kr.xit.framework.biz.cmm.model.CmmFileDTO; import kr.xit.framework.biz.cmm.model.CmmFileDTO;
import kr.xit.framework.biz.cmm.service.ICmmFileService; import kr.xit.framework.biz.cmm.service.ICmmFileService;
import kr.xit.framework.core.constants.FrameworkConstants; import kr.xit.framework.core.constants.FrameworkConstants;
import kr.xit.framework.core.model.ResultResponse; import kr.xit.framework.core.model.ResultResponse;
import kr.xit.framework.core.utils.fileExplorer.XitFileExplorerUtil;
import kr.xit.framework.core.utils.fileExplorer.function.DirectorySearch;
import kr.xit.framework.support.mybatis.MybatisUtils; import kr.xit.framework.support.mybatis.MybatisUtils;
import kr.xit.framework.support.util.AjaxMessageMapRenderer; import kr.xit.framework.support.util.AjaxMessageMapRenderer;
import kr.xit.framework.support.util.constants.MessageKey; import kr.xit.framework.support.util.constants.MessageKey;
@ -67,15 +66,15 @@ public class EcNatlNewspaperController {
return mav; return mav;
} }
/**
* @see kr.xit.fims.biz.cmm.web.FimsCrackDownMgtController#findRcvPathFiles(String)
* @param dirPath
* @return
*/
@Deprecated
@RequestMapping(value = "/findNatlNewspaperFiles") @RequestMapping(value = "/findNatlNewspaperFiles")
public ModelAndView findDirFiles(final String dirPath){ public ModelAndView findDirFiles(final String dirPath){
return ResultResponse.of(FimsBizUtils.getRcvPathFiles(dirPath));
XitFileExplorerUtil explorer = new XitFileExplorerUtil(new DirectorySearch(dirPath));
return ResultResponse.of(
explorer.getList().stream()
.filter(m->"Y".equals(m.get("isFile")) && "xml".equals(m.get("fileType")))
.collect(Collectors.toList())
);
} }
@PostMapping(value = "/saveNatlNewspaers") @PostMapping(value = "/saveNatlNewspaers")

@ -47,8 +47,8 @@ public class RtCrackdownMgtController {
public void rtRegltMgtForm(){ public void rtRegltMgtForm(){
} }
@RequestMapping(value = "/rtRegltMgtMainForm") @RequestMapping(value = "/rtCrackdownMgtMainForm")
public void rtRegltMgtMainForm(final RtDTO.Request dto){ public void rtCrackdownMgtMainForm(final RtDTO.Request dto){
// ModelAndView mav = new ModelAndView(); // ModelAndView mav = new ModelAndView();
// if(Checks.isNotEmpty(dto) && Checks.isNotEmpty(dto.getRegltId())){ // if(Checks.isNotEmpty(dto) && Checks.isNotEmpty(dto.getRegltId())){

@ -1,13 +1,26 @@
package kr.xit.fims.biz.utils; package kr.xit.fims.biz.utils;
import java.util.List;
import java.util.Map;
import java.util.Objects; import java.util.Objects;
import java.util.stream.Collectors;
import kr.xit.fims.biz.FimsConst; import kr.xit.fims.biz.FimsConst;
import kr.xit.framework.core.utils.fileExplorer.XitFileExplorerUtil;
import kr.xit.framework.core.utils.fileExplorer.function.DirectorySearch;
import kr.xit.framework.support.exception.BizRuntimeException; import kr.xit.framework.support.exception.BizRuntimeException;
import kr.xit.framework.support.util.constants.MessageKey; import kr.xit.framework.support.util.constants.MessageKey;
public class FimsBizUtils { public class FimsBizUtils {
public static List<Map<String,String>> getRcvPathFiles(String dirPath) {
XitFileExplorerUtil explorer = new XitFileExplorerUtil(new DirectorySearch(dirPath));
return explorer.getList().stream()
.filter(m -> "Y".equals(m.get("isFile")))
.collect(Collectors.toList());
}
public static String getFileJobSeCode(String regltSeCode) { public static String getFileJobSeCode(String regltSeCode) {
// 01 - 고정형CCTV // 01 - 고정형CCTV
if(Objects.equals(regltSeCode, "01"))//FimsConst.FileJobSeCode.CCTV_FIX)) if(Objects.equals(regltSeCode, "01"))//FimsConst.FileJobSeCode.CCTV_FIX))

@ -142,8 +142,9 @@
<insert id="insertEcCtznSttemntDetail"> <insert id="insertEcCtznSttemntDetail">
/* ec-ctzn-sttemnt-mysql-mapper|insertEcCtznSttemntDetail-시민신고 상세 등록|julim */ /* ec-ctzn-sttemnt-mysql-mapper|insertEcCtznSttemntDetail-시민신고 상세 등록|julim */
<selectKey resultType="string" keyProperty="ctznSttemntDetailSn" order="BEFORE"> <selectKey keyColumn="ctznSttemntDetailSn,regltId" keyProperty="ctznSttemntDetailSn,regltId" resultType="kr.xit.fims.biz.ec.model.CtznStmtDTO$CtznStmtDtl" order="BEFORE">
SELECT LPAD(IFNULL(MAX(CAST(csd.ctzn_sttemnt_detail_sn AS UNSIGNED)) + 1, 1), 2, '0') SELECT LPAD(IFNULL(MAX(CAST(csd.ctzn_sttemnt_detail_sn AS UNSIGNED)) + 1, 1), 2, '0') AS ctznSttemntDetailSn
, LPAD(NEXTVAL(seq_rt_reglt), 16, '0') AS regltId
FROM tb_ec_ctzn_sttemnt_detail csd FROM tb_ec_ctzn_sttemnt_detail csd
WHERE interface_seq_n = #{interfaceSeqN} WHERE interface_seq_n = #{interfaceSeqN}
</selectKey> </selectKey>
@ -204,9 +205,6 @@
<insert id="insertRtRegltFromCtznStmt"> <insert id="insertRtRegltFromCtznStmt">
/* ec-ctzn-sttemnt-mysql-mapper|insertRtRegltFromCtznStmt-시민신고 단속 생성|julim */ /* ec-ctzn-sttemnt-mysql-mapper|insertRtRegltFromCtznStmt-시민신고 단속 생성|julim */
<selectKey resultType="string" keyProperty="regltId" order="BEFORE">
SELECT LPAD(NEXTVAL(seq_rt_reglt), 16, '0')
</selectKey>
INSERT INTO tb_rt_reglt ( INSERT INTO tb_rt_reglt (
reglt_id reglt_id
, instt_code , instt_code
@ -232,7 +230,7 @@
, reglt_process_sttus_code , reglt_process_sttus_code
, regist_dt , regist_dt
, register , register
) SELECT #{regltId} ) SELECT ecsd.reglt_id
, ecsd.instt_code , ecsd.instt_code
, ecsd.sys_code , ecsd.sys_code
, #{regltSeCode} , #{regltSeCode}

@ -0,0 +1,330 @@
<%--
================================================================================
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/framework/taglibs.jsp" %>
<div class="popup" style="min-width: 100%;">
<div class="popup_inner" style="max-width: 800px;">
<p class="pop_title">CCTV 단속 자료 선택</p>
<form name="frmSearch" id="frmSearch">
<div class="search r2">
<table>
<caption>검색조건</caption>
<colgroup>
<col style="width: 30%"/>
<col/>
<col/>
<col/>
<col/>
<col/>
<col/>
</colgroup>
<tbody>
<tr>
<td>
<code:select type="CMM_ETC2" id="regltSeCode" name="regltSeCode" codeId="FIM002" defaultSelect="01" onchange="fnBiz.onComboChange()" title="단속구분코드" cls="selectBoxTotal" alt="단속구분코드" />
</td>
<td colspan="6">
<input id="folder" type="file" webkitdirectory multiple="false"/>
<input id="busOnlyDirPath" name="dirPath" type="text" size="400" value="<c:out value='${busOnlyDirPath}'/>" 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="popup_btn">
<span class="fll">
<div class="list clearfix" id="totCnt">전체 ㅣ <span>0</span></div>
</span>
</div>
<div id="grid"></div>
<div class="popup_btn">
<span class="flr p_flr">
<a href="#" class="btn blue" id="btnRegist">파일 처리</a>
<a href="#" id="btnClose" class="btn lightgray">닫기</a>
</span>
</div>
<!-- //등록버튼 -->
</div>
</div>
<!-- //popup -->
<script type="text/javaScript">
/**************************************************************************
* Global Variable
**************************************************************************/
let GRID = null;
let arrFiles = [];
/* *******************************
* Biz function
******************************* */
const fnBiz = {
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);
}
,search: () => {
GRID.reloadData();
//FIXME : onGridUpdated
GRID.on('onGridUpdated', (ev) => {
//console.log('%%%%%%%%%%%%%>>>>>>>',ev)
}) // 그리드 레이아웃 새로고침 (로드가 다 되지 않는 경우 그리드가 흰색 화면으로 출력될 때가 있다.))
}
,add: () => {
const arrChecks = GRID.getData();
if(arrChecks.length===0) {
alert("등록[변경]할 데이타가 없습니다.");
return false;
}
if(confirm("등록 하시겠습니까?")) {
const regltSeCode = $('#regltSeCode').val();
if(regltSeCode !== '07' && regltSeCode !== '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);
fnBiz.search();
}
//fnBiz.search();
}
, error: (xhr, status, err) => {
}
})
}else {
const data = {
filePath: regltSeCode === '07' ? $('#busOnlyDirPath').val() : $('#ctznDirPath').val()
,fileInfoList: arrChecks.map((row) => {
return {fileNm: row.fileNm, fileType: row.fileType, fileSize: row.fileSize}
})
}
cmmAjax({
<%--url: '<c:url value="/fims/biz/ec/saveBusCctvCrackdownDatas.do"/>'--%>
url: regltSeCode === '07' ? fimsApiUrl.SAVE_BUS_ONLY_EC_EXTRL_REGLT_CNTC : fimsApiUrl.SAVE_EC_NATL_NEWS_PAPER
,data: JSON.stringify(data)
,contentType: 'application/json; charset=utf-8'
,success: () => {
fnBiz.search();
}
})
}
}
}
,onComboChange: () => {
$('#totCnt span').text(0);
if($('#regltSeCode').val() === '07') {
$('#folder')
.css('display', 'none')
.attr('disabled', true);
$('#busOnlyDirPath')
.css('display', 'inline-block')
.attr('disabled', false);
$('#ctznDirPath')
.css('display', 'none')
.attr('disabled', true);
$('#warnMsg').css('display', 'none')
.attr('disabled', true);
GRID.reloadData();
}else if($('#regltSeCode').val() === '09'){
$('#folder')
.css('display', 'none')
.attr('disabled', true);
$('#busOnlyDirPath')
.css('display', 'none')
.attr('disabled', true);
$('#ctznDirPath')
.css('display', 'inline-block')
.attr('disabled', false);
$('#warnMsg').css('display', 'none')
.attr('disabled', true);
GRID.reloadData();
}else{
$('#folder')
.css('display', 'inline-block')
.attr('disabled', false);
$('#busOnlyDirPath')
.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', () => fnBiz.search());
$('#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 setDateTimeFmt(value);
return value;
}
}
];
const gridOptions = {
el: 'grid',
rowHeaders: ['rowNum'],
columns: gridColumns,
//FIXME : 페이징 미사용시
//페이지처리 hide
pagination: false,
pageOptions: {
useClient: true,
perPage: 1000
},
columnOptions: {
frozenCount: 1
},
bodyHeight: 400
};
const gridDatasource = { //DataSource
initialRequest: false,
api: {
readData: {
url: fimsApiUrl.FIND_RCV_PATH_FILES
,serializer: (params) => {
if($('#regltSeCode').val() === '07') {
return getPageParam({dirPath: $('#busOnlyDirPath').val()}, params);
}else if($('#regltSeCode').val() === '09') {
return getPageParam({dirPath: $('#ctznDirPath').val()}, params);
}
return params;
}
}
}
};
GRID = TuiGrid.of(gridOptions, gridDatasource, (ev) => {
});
}
/**************************************************************************
* initialize
**************************************************************************/
$(document).ready(function(){
initGrid();
});
</script>

@ -0,0 +1,667 @@
<%--
================================================================================
File : /fims/biz/cmm/cmmCrackdownMgtPopup.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/framework/taglibs.jsp"%>
<c:set var="isUpdate" value="${!empty regltDTO.regltId}"/>
<%--2022.10.05 박소영 웹폰트 링크 추가--%>
<link href="https://fonts.googleapis.com/css2?family=Noto+Sans+KR:wght@400;500;700&display=swap" rel="stylesheet">
<form id="frmSearch" name="frmSearch">
<input type="hidden" id="payerId" name="payerId" value="<c:out value="${regltDTO.payerId }"/>">
<div class="conttitle">
<img src="${ctx }/resources/biz/content/images/common/main/titleLogo_01.png"/>
<p class="title">개별총정보</p>
</div>
<div class="row">
<div id="popupTabs">
<ul>
<li><a href="#tabs_0" id="0">위반정보<span id="t0"></span></a></li>
<li><a href="#tabs_1" id="1">의견진술<span id="t1"></span></a></li>
<li><a href="#tabs_2" id="2">세부내역<span id="t2"></span></a></li>
<li><a href="#tabs_3" id="3">민원내역<span id="t3"></span></a></li>
</ul>
<div id="tabs_0">
<div class="w_fix01 gridGroup">
<p class="title deco_01">위반정보</p>
<table class="basics_F mTB_01">
<colgroup>
<col style="width: 5%;"/>
<col style="width: 12%;"/>
<col style="width: 4%;"/>
<col style="width: 13%;"/>
<col style="width: 4%;"/>
<col style="width: 13%;"/>
</colgroup>
<tr>
<td colspan="6"></td>
</tr>
<tr>
<td>등록구분</td>
<td><input type="text" id="regltId" name="regltId" value="<c:out value="${regltDTO.regltId }"/>">
</td>
<td>자료출처</td>
<td><input type="text" name="" value=""></td>
<td colspan="0"><label><input type="checkbox" value="의견진술">의견진술</label></td>
</tr>
<tr>
<td>단속일</td>
<td>
<fmt:parseDate value="${regltDTO.regltDe}" var="regltDe" pattern="yyyyMMdd"/>
<input type="text" name="regltDe" value='<fmt:formatDate value="${regltDe}" pattern="yyyy-MM-dd"/>' readonly>
</td>
<td>차량번호</td>
<td colspan="2"><input type="text" id="vhcleNo" name="vhcleNo" value="${regltDTO.vhcleNo }"></td>
</tr>
<tr>
<td>단속구분</td>
<td>
<code:select id="regltSeCode" name="regltSeCode" codeId="FIM002" defaultSelect="${regltDTO.regltSeCode}" title="단속구분코드" cls="selectBoxTotal" alt="단속구분코드" />
</td>
<td>위반내역</td>
<td colspan="2">
<code:select id="violtDtlsCode" name="violtDtlsCode" codeId="FIM004" defaultSelect="${regltDTO.violtDtlsCode}" title="위반내역코드" cls="selectBoxTotal" alt="위반내역코드"/>
</td>
</tr>
<tr>
<td>단속장소</td>
<td colspan="4"><input type="text" id="regltPlace" name="regltPlace" value="${regltDTO.regltPlace}"></td>
</tr>
<tr>
<td>등록일시</td>
<td>
<fmt:parseDate value="${regltDTO.registDt}" var="registDt" pattern="yyyyMMddHHmmss"/>
<input type="text" name="registDt" value='<fmt:formatDate value="${registDt}" pattern="yyyy-MM-dd HH:mm:ss"/>' readonly>
</td>
</tr>
</table>
<table class="basics_F mTB_01">
<colgroup>
<col style="width: 5%;"/>
<col style="width: 12%;"/>
<col style="width: 4%;"/>
<col style="width: 13%;"/>
<col style="width: 3%;"/>
<col style="width: 15%;"/>
</colgroup>
<tr>
<td colspan="6"></td>
</tr>
<tr>
<td>위반횟수</td>
<td>
<input type="text" id="violtCo" name="violtCo" value='<fmt:formatNumber type="number" value="${regltDTO.violtCo}" pattern="#,###"/>' style="text-align: right">
</td>
<td>시군구</td>
<td>
<input type="text" name="" value="<%--${regltDTO.signgu_code}--%>">
</td>
<td>법정동</td>
<td>
<input type="text" name="" value="">
</td>
</tr>
<tr>
<td>사전통지금액</td>
<td>
<input type="text" name="redutionAftAmount" value='<fmt:formatNumber type="number" value="${regltDTO.redutionAftAmount}" pattern="#,###"/>' style="text-align: right">
</td>
<td>부과금액</td>
<td colspan="3">
<input type="text" name="" value='<fmt:formatNumber type="number" value="1111111" pattern="#,###"/>' style="text-align: right">
</td>
</tr>
<tr>
<td>감액금액</td>
<td>
<input type="text" name="redutionAmount" value='<fmt:formatNumber type="number" value="${regltDTO.redutionAmount}" pattern="#,###"/>' style="text-align: right">
</td>
<td>총수납액</td>
<td>
<input type="text" name="rcivAmount" value='<fmt:formatNumber type="number" value="${regltDTO.rcivAmount}" pattern="#,###"/>' style="text-align: right">
</td>
<td>잔액</td>
<td>
<input type="text" name="" value='<fmt:formatNumber type="number" value="22222222222" pattern="#,###"/>' style="text-align: right">
</td>
</tr>
<tr>
<td>특이사항</td>
<td colspan="4">
<input type="text" id="spcmntMatter" name="spcmntMatter" value="${regltDTO.spcmntMatter}">
</td>
</tr>
<tr>
<td>처리상태</td>
<td colspan="4">
<code:select id="regltProcessSttusCode" name="regltProcessSttusCode" codeId="FIM010" defaultSelect="${regltDTO.regltProcessSttusCode}" title="위반내역코드" cls="selectBoxTotal" alt="위반내역코드"/>
</td>
</tr>
</table>
<%--<p class="title deco_01 mT_02">소유주 정보</p>
<table class="basics_F mTB_01 mT_02">
<colgroup>
<col style="width: 5%;"/>
<col style="width: 12%;"/>
<col style="width: 4%;"/>
<col style="width: 13%;"/>
<col style="width: 3%;"/>
<col style="width: 15%;"/>
</colgroup>
<tr>
<td>소유주</td>
<td><input type="text" id="payerNm" name="payerNm" value="${regltDTO.payerNm}"></td>
<td>aaa</td>
<td><input type="text" id="" name="" value=""></td>
<td>등록구분</td>
<td><input type="text" id="" name="" value=""></td>
</tr>
<tr>
<td>주민번호</td>
<td><input type="text" id=payerNo"" name="payerNo" value="${regltDTO.payerNo}"></td>
<td>aaaa</td>
<td><input type="text" id="" name="" value=""></td>
<td>우편번호</td>
<td><input type="text" id="zip" name="zip" value="${regltDTO.zip}"></td>
</tr>
<tr>
<td>주소</td>
<td colspan="4"><input type="text" id="adres" name="adres" value="${regltDTO.adres}"></td>
</tr>
<tr>
<td>상세주소</td>
<td colspan="4"><input type="text" id="detailAdres" name="detailAdres" value="${regltDTO.detailAdres}"></td>
</tr>
<tr>
<td>차대번호</td>
<td colspan="3"><input type="text" id="" name="" value=""></td>
<td>도로코드</td>
<td><input type="text" id="" name="" value=""></td>
</tr>
</table>--%>
</div>
<div class="topBtnArea-a" style="/*width: 900px;*/ min-width: 420px; width:75%;">
<ul class="btnList" <%--style="margin-top: -24px;"--%>>
<li>
<%@include file="/WEB-INF/jsp/framework/biz-popup-btn.jsp" %>
</li>
</ul>
</div>
</div>
<div id="tabs_1" style="display: flex;">
<div class="w_fix02 gridGroup mR_01">
<p class="title deco_01">진술내역</p>
<table class="basics_F mTB_01">
<colgroup>
<col style="width: 10%;"/>
<col style="width: 0%;"/>
<col style="width: 0%;"/>
<col style="width: 13%;"/>
<col style="width: 10%;"/>
<col style="width: 27%;"/>
</colgroup>
<tr>
<td colspan="6"></td>
</tr>
<tr>
<td>등록구분</td>
<td colspan="3"><input type="text"></td>
<td>진술일</td>
<td><input type="text"></td>
</tr>
<tr>
<td>성명</td>
<td colspan="3"><input type="text">
</td>
<td>주민등록번호</td>
<td><input type="text"></td>
</tr>
<tr>
<td>주소</td>
<td colspan="5"><input type="text"></td>
</tr>
<tr>
<td>번지</td>
<td colspan="5"><input type="text"></td>
</tr>
<tr>
<td>우편번호</td>
<td colspan="3"><input type="text"></td>
<td>연락처</td>
<td><input type="text"></td>
</tr>
<tr>
<td>차주와의 관계</td>
<td colspan="3"><input type="text"></td>
<td>이메일 주소</td>
<td><input type="text"></td>
</tr>
<tr>
<td>회신방법</td>
<td colspan="3"><input type="text"></td>
</tr>
<tr>
<td>진술요지</td>
<td colspan="6"><input type="text" style=" width:88%;"></td>
</tr>
<tr>
<td style="position: absolute;">진술 내용</td>
<td colspan="6"><textarea cols="0" rows="15"
style="overflow-y: scroll; width:90%;"></textarea></td>
</tr>
</table>
</div>
<div class="w_fix02 gridGroup">
<p class="title deco_01">판정</p>
<table class="basics_F mTB_01">
<colgroup>
<col style="width: 10%;"/>
<col style="width: 20%;"/>
<col style="width: 10%;"/>
<col style="width: 20%;"/>
</colgroup>
<tr>
<td colspan="4"></td>
</tr>
<tr>
<td>처리일시</td>
<td colspan="3"><input type="text"></td>
</tr>
<tr>
<td>처리결과</td>
<td colspan="3"><input type="text">
</td>
</tr>
<tr>
<td style="position: absolute;">담당자 의견</td>
<td colspan="4"><textarea cols="50" rows="15"
style="overflow-y: scroll; width:90%;"></textarea></td>
</tr>
</table>
</div>
</div>
<div id="tabs_2">
<div class="w_fix05">
<%-- <div class="w_fix03 gridGroup">
<div style="width: 100%; border:0px solid black">
<p class="title deco_01">처리상태 변동이력</p>
<div id="grid_t0"></div>
&lt;%&ndash;삭제조심&ndash;%&gt;
</div>
</div>--%>
<div class="w_fix04 gridGroup">
<p class="title deco_01">감경처리</p>
<table class="basics_F mTB_02">
<colgroup>
<col style="width: 21%;"/>
<col style="width: 8%;"/>
<col style="width: 11%;"/>
</colgroup>
<tr>
<td>처리일</td>
<td colspan="4"><input type="text" id="" name="" value="">
</td>
</td>
</tr>
<tr>
<td>감경사유</td>
<td colspan="4"><input type="text" id="" name="" value="">
</td>
</tr>
<tr>
<td>감경금액</td>
<td colspan="4"><input type="text" id="redutionAmount" name="redutionAmount" value="${regltDTO.redutionAmount}"></td>
</tr>
<tr>
<td>처리자</td>
<td colspan="4"><input type="text" name="" value="">
</td>
</tr>
<tr>
<td>특이사항</td>
<td colspan="4"><input type="textarea" name="" value=""></td>
</tr>
</table>
</div>
<div class="w_fix04 gridGroup">
<p class="title deco_01">서손처리</p>
<table class="basics_F mTB_02">
<colgroup>
<col style="width: 21%;"/>
<col style="width: 8%;"/>
<col style="width: 11%;"/>
</colgroup>
<tr>
<td>처리일</td>
<td colspan="4"><input type="text" id="" name="" value="">
</td>
</td>
</tr>
<tr>
<td>감경사유</td>
<td colspan="4"><input type="text" id="" name="" value="">
</td>
</tr>
<tr>
<td>감경금액</td>
<td colspan="4"><input type="text" id="" name="" value=""></td>
</tr>
<tr>
<td>처리자</td>
<td colspan="4"><input type="text" id="" name="" value="">
</td>
</tr>
<tr>
<td>특이사항</td>
<td colspan="4"><input type="text" id="" name="" value=""></td>
</tr>
</table>
</div>
</div>
<%--box_01--%>
<div class="w_fix06 gridGroup">
<p class="title deco_02">처리상태 변동이력</p>
<div style="display: flex; width: 100%; border:0px solid chocolate; margin-bottom: 5px;">
<div id="grid_t0" style="width:100%;"></div>
</div>
</div>
<div class="w_fix06 gridGroup">
<p class="title deco_02">주소 변동이력</p>
<div style="display: flex; width: 100%; border:0px solid chocolate; margin-bottom: 5px;">
<div id="grid_d1" style="width:100%;"></div>
</div>
</div>
<div class="w_fix06 gridGroup" style="margin-top:17px;">
<p class="title deco_02">발송 이력</p>
<div style="display: flex; width: 100%; height:150px; border:0px solid black; margin-bottom: 20px;">
<div id="grid_d2" style="width:100%;"></div>
</div>
</div>
<div class="topBtnArea-a" style="/*width: 990px;*/ width:75%; min-width: 430px;">
<ul class="btnList">
<li>
<%@include file="/WEB-INF/jsp/framework/biz-popup-btn.jsp" %>
</li>
</ul>
</div>
</div>
<div id="tabs_3">
<div class="w_fix05-a gridGroup">
<div style="width: 100%; border:0px solid black">
<p class="title deco_01">민원내역</p>
<div id="grid_m1"></div>
</div>
</div>
<div class="box mT_02">
<div class="w_fix06 gridGroup">
<p class="title deco_01">민원내용</p>
<div style="height: 200px; border:1px solid #a1a1a1; margin:11px; border-radius: 4px;">
<%--<div id="grid"></div>--%>
</div>
</div>
</div><%--box--%>
<div class="topBtnArea-a" style="min-width: 440px; width:75%;">
<ul class="btnList" style="padding-left:10px;">
<li>
<%@include file="/WEB-INF/jsp/framework/biz-popup-btn.jsp" %>
</li>
</ul>
</div>
</div>
</div><!--popupTabs -->
</div><!--row -->
</form>
<script type="text/javaScript" language="javascript" defer="defer">
//전역변수선언
let orgData;
const ARR_INSTANCE = [null,null,null];
let CUR_TAB_SEQ = 0;
var callbackSearch = () => fnBiz.search();
/* *******************************
* Biz function
******************************* */
const fnBiz = {
add: () => {
if (!fnBiz.validate()) return;
cmmBizAjax('add', {
url: '<c:url value="/cmm/fimsPopup/add.do"/>'
, data: $("#frmSearch").serialize()
})
}
,modify: () => {
/*if (!fnBiz.validate()) return;*/
cmmBizAjax('modify', {
url: '<c:url value="/cmm/fimsPopup/update.do"/>'
,data: $("#frmSearch").serialize()
});
}
,remove: () => {
$("input[name=useAt]").val('N');
cmmBizAjax('remove', {
url: '<c:url value="/cmm/fimsPopup/remove.do"/>'
,data: $("#frmSearch").serialize()
});
}
,validate: () => {
if(orgData === $('form').serialize()){
alert('변경된 내용이 없습니다.');
return false;
}
/*if(!validateTemplateInf(document.getElementById("templateInf"))) return false;*/
return true;
}
,preview: () => {
if ($("#tmplatSeCode").val() === 'TMPT01') {
const url = "<c:url value='/framework/biz/mng/bbs/mngBoardTmplPreviewPopup.do'/>";
CmmPopup.open(url, {tmplateCours: $("#tmplatCours").val()}, {width: 1024, height: 500}, "템플릿 미리보기");
} else {
alert('템플릿경로 지정 후 선택해 주세요.');
}
}
};
/**************************************************************************
* event
**************************************************************************/
$(() => {
$('#btnRegist').on('click', () => {
fnBiz.add();
});
$('#btnModify').on('click', () => {
fnBiz.modify();
});
$('#btnPreview').on('click', () => {
fnBiz.preview();
});
$('#btnRemove').on('click', () => {
fnBiz.remove();
});
});
/* ******************************
* Grid
****************************** */
const initGrid = () => {
const tab0Columns = [ //Grid 컬럼 정보(명칭,매핑 field, 기타옵션 등)
{
header: '발송결과',
name: 'sndng_result_code',
width: 150,
//editor: 'text',
sortable: true,
align: 'center',
filter: {
type: 'text',
showClearBtn: true
}
},
{
header: '오류내용',
name: 'error_cn',
width: 150,
//editor: 'text',
sortable: true,
align: 'center'
},
{
header: '미납자',
name: 'om_name',
minWidth: 120,
//editor: 'text',
sortable: true,
align: 'center'
},
{
header: '주민등록번호',
name: 'ihidnum',
width: 120,
//editor: 'text',
sortable: true,
align: 'center'
},
{
header: '차량번호',
name: 'mm_carno',
minWidth: 120,
//editor: 'text',
sortable: true,
align: 'center'
},
{
header: '요청일시',
name: 'requst_dt',
width: 150,
//editor: 'text',
sortable: true,
align: 'center'
},
{
header: '조회일시',
name: 'inqire_dt',
width: 150,
//editor: 'text',
sortable: true,
align: 'center'
},
{
header: '열람일시',
name: 'readng_dt',
width: 150,
//editor: 'text',
sortable: true,
align: 'center'
},
{
header: '등록일시',
name: 'regist_dt',
width: 150,
//editor: 'text',
sortable: true,
align: 'center'
}
];
//DataSource
let tab0Datasource = {
//initialRequest: false, // 화면 load시 조회 안함 - default
api: {
readData: {
url: '<c:url value="/adm/send/rqst/mng/find.do"/>'
, serializer: (params) => fnAddPageInfo(document.frmSearch, params)
}
}
};
const tab0Options = {
el: 'grid_t0',
minBodyHeight: 100,
bodyHeight: 100, //[선택]Grid 높이 (number(단위: px)|'auto'|'fitToParent')
rowHeaders: ['rowNum'],
pageOptions: {
perPage: 100,
type: 'scroll'
},
columns: tab0Columns,
columnOptions: {
frozenCount: 0 //고정컬럼 갯수
, minWidth: 80 //최소 사이즈
},
};
const tab1Options = $.extend(true, {}, tab0Options, {
el: 'grid_d1',
minBodyHeight: 100,
bodyHeight: 100,
});
const tab2Options = $.extend(true, {}, tab0Options, {
el: 'grid_d2',
minBodyHeight: 100,
bodyHeight: 100,
});
const tab3Options = $.extend(true, {}, tab0Options, {
el: 'grid_m1',
minBodyHeight: 250,
bodyHeight: 250,
});
ARR_INSTANCE[0] = TuiGrid.of(tab0Options, tab0Datasource, (res) => {
ARR_TOTCNT[0] = res.data.pagination.totalCount;
});
ARR_INSTANCE[1] = TuiGrid.of(tab1Options, tab0Datasource, (res) => {
ARR_TOTCNT[1] = res.data.pagination.totalCount;
});
ARR_INSTANCE[2] = TuiGrid.of(tab2Options, tab0Datasource, (res) => {
ARR_TOTCNT[2] = res.data.pagination.totalCount;
});
ARR_INSTANCE[3] = TuiGrid.of(tab3Options, tab0Datasource, (res) => {
ARR_TOTCNT[3] = res.data.pagination.totalCount;
});
//tab 클릭 이벤트
/*$("#popupTabs").on("click", "li", function(){
var tab = parseInt($("#popupTabs .ui-tabs-active a").attr("id"));
var tabbb = $('#popupTabs').children('div').not($('#tabs_'+tab));
$('#tabs_'+tab).show(500);
$('#sch_tab_id').val(tab);
//ARR_INSTANCE[tab].refreshLayout();
});*/
}
$(document).ready(function(){
initGrid();
$("#popupTabs").tabs({active : 0});
orgData = $('form').serialize();
});
</script>

@ -146,7 +146,8 @@
} }
,onComboChange: () => { ,onComboChange: () => {
$('#totCnt span').text(0); $('#totCnt span').text(0);
if($('#regltSeCode').val() === '07'){
if($('#regltSeCode').val() === '07') {
$('#folder') $('#folder')
.css('display', 'none') .css('display', 'none')
.attr('disabled', true); .attr('disabled', true);
@ -269,7 +270,7 @@
api: { api: {
readData: { readData: {
<%--url: '<c:url value="/fims/biz/ec/findBusCctvCrackdownFiles.do"/>' --%> <%--url: '<c:url value="/fims/biz/ec/findBusCctvCrackdownFiles.do"/>' --%>
url: fimsApiUrl.FIND_BUS_ONLY_EC_EXTRL_REGLT_CNTC_ATTCH_FILES url: fimsApiUrl.FIND_RCV_PATH_FILES
,serializer: (params) => getPageParam({dirPath: $('#dirPath').val()}, params) ,serializer: (params) => getPageParam({dirPath: $('#dirPath').val()}, params)
} }
} }

@ -182,7 +182,7 @@
api: { api: {
readData: { readData: {
<%--url: '<c:url value="/fims/biz/ec/findNatlNewspaperFiles.do"/>' --%> <%--url: '<c:url value="/fims/biz/ec/findNatlNewspaperFiles.do"/>' --%>
url: fimsApiUrl.FIND_EC_NATL_NEWS_PAPER_ATTCH_FILES url: fimsApiUrl.FIND_RCV_PATH_FILES
,serializer: (params) => getPageParam({dirPath: $('#dirPath').val()}, params) ,serializer: (params) => getPageParam({dirPath: $('#dirPath').val()}, params)
} }
} }

@ -1,3 +1,15 @@
<%--
================================================================================
File : /fims/biz/rt/rtCrackdownExtrInterfaceMgtForm.jsp
Name : 외부자료연계 - 단속관리>단속현황관리
Auth : lim.jong.uk
Date : 2022-01-26
Desc : 단속현황관리 외부자료 연계탭
================================================================================
Date Author Description
================================================================================
================================================================================
--%>
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %> <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>
<%@ include file="/WEB-INF/jsp/framework/taglibs.jsp" %> <%@ include file="/WEB-INF/jsp/framework/taglibs.jsp" %>
@ -76,7 +88,7 @@
popTitle = "개별총정보"; popTitle = "개별총정보";
break; break;
case "file": case "file":
url = fimsApiUrl.POPUP_CCTV_EC_EXTRL_REGLT_CNTC_DATA_SEL; url = fimsApiUrl.POPUP_RT_EXTR_INTERFACE_FILE_SEL;
popOption = {width: 900, height:750}; popOption = {width: 900, height:750};
popTitle = "외부연계 데이타 선택"; popTitle = "외부연계 데이타 선택";
break; break;

@ -1,3 +1,15 @@
<%--
================================================================================
File : /fims/biz/rt/rtRegltMgtForm.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"%> <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ include file="/WEB-INF/jsp/framework/taglibs.jsp"%> <%@ include file="/WEB-INF/jsp/framework/taglibs.jsp"%>
@ -13,8 +25,8 @@
<div id="tabs_0"> <div id="tabs_0">
<div id="tabs_t0"> <div id="tabs_t0">
<%@include file="/WEB-INF/jsp/fims/biz/rt/rtExtrInterfaceMgtForm.jsp" %> <%@include file="/WEB-INF/jsp/fims/biz/rt/rtCrackdownExtrInterfaceMgtForm.jsp" %>
<%-- <jsp:include page="/WEB-INF/jsp/fims/biz/rt/rtExtrInterfaceMgtForm.jsp" flush="true"/>--%> <%-- <jsp:include page="/WEB-INF/jsp/fims/biz/rt/rtCrackdownExtrInterfaceMgtForm.jsp" flush="true"/>--%>
</div> </div>
</div> </div>
<div id="tabs_1"> <div id="tabs_1">

@ -3,14 +3,14 @@ const fimsApiUrl = {
/** /**
* fims 공통 API URL * fims 공통 API URL
*/ */
FIND_RCV_PATH_FILES: '/fims/biz/cmm/findRcvPathFiles.do' //연계파일 경로 파일 목록 조회
,POPUP_RT_REGLT_TOTAL: '/fims/biz/cmm/cmmFimsCrackdownMgtPopup.do' //단속정보 상세 팝업
,POPUP_RT_EXTR_INTERFACE_FILE_SEL: '/fims/biz/cmm/cmmCrackdownRcvFilePopup.do' //CCTV 외부연계 데이타 선택
/** /**
* fims API URL * fims API URL
*/ */
//외부연계처리 - 시민신고(국민신문고) 데이타 관리 //외부연계처리 - 시민신고(국민신문고) 데이타 관리
POPUP_EC_NATL_NEWS_PAPER_DATA_SEL: '/fims/biz/ec/ecNatlNewspaperFileSelPopup.do' //국민신문고 데이타 선택 ,POPUP_EC_NATL_NEWS_PAPER_DATA_SEL: '/fims/biz/ec/ecNatlNewspaperFileSelPopup.do' //국민신문고 데이타 선택
,POPUP_EC_NATL_NEWS_PAPER_INFO: '/fims/biz/ec/ecNatlNewspaperPopup.do' //국민신문고 데이타 상세 ,POPUP_EC_NATL_NEWS_PAPER_INFO: '/fims/biz/ec/ecNatlNewspaperPopup.do' //국민신문고 데이타 상세
,SAVE_EC_NATL_NEWS_PAPER: '/fims/biz/ec/saveNatlNewspaers.do' //국민신문고 데이타 등록 ,SAVE_EC_NATL_NEWS_PAPER: '/fims/biz/ec/saveNatlNewspaers.do' //국민신문고 데이타 등록
,FIND_EC_NATL_NEWS_PAPERS: '/fims/biz/ec/findNatlNewspaers.do' //국민신문고 목록 조회 ,FIND_EC_NATL_NEWS_PAPERS: '/fims/biz/ec/findNatlNewspaers.do' //국민신문고 목록 조회
@ -45,7 +45,7 @@ const fimsApiUrl = {
//단속관리 - 단속현황관리 //단속관리 - 단속현황관리
,POPUP_RT_REGLT_MAIN: '/fims/biz/rt/rtRegltMgtMainPopup.do' //단속 관리 메인 팝업 ,POPUP_RT_REGLT_MAIN: '/fims/biz/rt/rtRegltMgtMainPopup.do' //단속 관리 메인 팝업
,POPUP_RT_REGLT_INFO: '/fims/biz/rt/rtRegltMgtPopup.do' //단속정보 상세 팝업 ,POPUP_RT_REGLT_INFO: '/fims/biz/rt/rtRegltMgtPopup.do' //단속정보 상세 팝업
,POPUP_RT_REGLT_TOTAL: '/fims/biz/cmm/cmmFimsCrackdownMgtPopup.do' //단속정보 상세 팝업
,FIND_RT_REGLTS: '/fims/biz/rt/findRtReglts.do' //단속 목록 조회 ,FIND_RT_REGLTS: '/fims/biz/rt/findRtReglts.do' //단속 목록 조회
,FIND_RT_REGLT_INFO_AND_ATTCH_FILES: '/fims/biz/rt/findRtRegltAndAttchFiles.do' //단속 정보 및 첨부파일 목록 조회 ,FIND_RT_REGLT_INFO_AND_ATTCH_FILES: '/fims/biz/rt/findRtRegltAndAttchFiles.do' //단속 정보 및 첨부파일 목록 조회
,ADD_RT_REGLT: '/fims/biz/rt/addRtReglt.do' //단속 데이타 저장 ,ADD_RT_REGLT: '/fims/biz/rt/addRtReglt.do' //단속 데이타 저장

Loading…
Cancel
Save