1. 개별 총정보 - 단속 사진 삭제 수정.

2. 소스 정리.
main
jjh 1 year ago
parent d8c8868906
commit 516711eee3

@ -46,7 +46,7 @@ public class ExclQuery extends CmmnQuery {
private String vhrno; // 단속(TB_CRDN)_차량번호 private String vhrno; // 단속(TB_CRDN)_차량번호
private String rtpyrNm; // 납부자(TB_PAYER)_납부자 명 private String rtpyrNm; // 납부자(TB_PAYER)_납부자 명
// ETC // ETC
private String callPurpose; // 호출용도 필요시 사용(select, create, update) private String callPurpose; // 호출용도 필요시 사용(view, select, create, update)
private String delYn; // 삭제 여부 private String delYn; // 삭제 여부
private String delRsn; // 삭제 사유 private String delRsn; // 삭제 사유
private String ansRsnCd; // 민원 답변 문구(TB_CVLCPT_ANS_WORDS) - 답변 사유 코드 private String ansRsnCd; // 민원 답변 문구(TB_CVLCPT_ANS_WORDS) - 답변 사유 코드

@ -197,7 +197,8 @@ public class Excl02Bean extends AbstractComponent {
// 의견제출 ID로 파일(TB_FILE) 정보 조회 // 의견제출 ID로 파일(TB_FILE) 정보 조회
List<DataObject> infoFileList = fileBean.getFileList(new FileQuery().setInfoType(OpnnSbmsn.INF_TYPE) List<DataObject> infoFileList = fileBean.getFileList(new FileQuery().setInfoType(OpnnSbmsn.INF_TYPE)
.setInfoKeys(opnnSbmsn.getOpnnId()).setOrderBy("FILE_ID")); .setInfoKeys(opnnSbmsn.getOpnnId())
.setOrderBy("FILE_ID"));
if (infoFileList != null && infoFileList.size() > 0) { if (infoFileList != null && infoFileList.size() > 0) {
String[] fileIDs = new String[infoFileList.size()]; String[] fileIDs = new String[infoFileList.size()];

@ -39,9 +39,15 @@ public interface Sprt02Service {
List<DataObject> getCrdnFileList(SprtQuery req); List<DataObject> getCrdnFileList(SprtQuery req);
/** . /** .
* @param nonQueryRequest , crdn , newFileInfoList * @param crdn , newFileInfoList
* @return * @return
*/ */
String updateCrdnImageFile(Map<String, Object> nonQueryRequest, Crdn crdn, List<FileInfo> newFileInfoList); String updateCrdnImageFile(Crdn crdn, List<FileInfo> newFileInfoList);
/** .
* @param crdnId Id, atchFileCnt , fileIDs IDs
* @return
*/
String removeCrdnImageFile(String crdnId, Integer atchFileCnt, String... fileIDs);
} }

@ -1,9 +1,15 @@
package cokr.xit.fims.sprt.service.bean; package cokr.xit.fims.sprt.service.bean;
import java.util.List;
import java.util.Map;
import javax.annotation.Resource; import javax.annotation.Resource;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import cokr.xit.base.file.FileInfo;
import cokr.xit.base.file.service.FileQuery;
import cokr.xit.base.file.service.bean.FileBean;
import cokr.xit.fims.crdn.Crdn; import cokr.xit.fims.crdn.Crdn;
import cokr.xit.fims.sprt.SprtQuery; import cokr.xit.fims.sprt.SprtQuery;
import cokr.xit.fims.sprt.dao.TotalInfoMapper; import cokr.xit.fims.sprt.dao.TotalInfoMapper;
@ -27,6 +33,10 @@ public class Sprt02Bean extends AbstractComponent {
@Resource(name = "totalInfoMapper") @Resource(name = "totalInfoMapper")
private TotalInfoMapper totalInfoMapper; private TotalInfoMapper totalInfoMapper;
/** 파일 Bean */
@Resource(name="fileBean")
private FileBean fileBean;
/** main() . /** main() .
* @param req * @param req
* @return main() * @return main()
@ -43,12 +53,80 @@ public class Sprt02Bean extends AbstractComponent {
return totalInfoMapper.selectCrdnPayerInfo(req); return totalInfoMapper.selectCrdnPayerInfo(req);
} }
public String updateCrdnAtchFileCnt(Crdn crdn) { /** .
* @param crdn , newFileInfoList
* @return
*/
public String updateCrdnImageFile(Crdn crdn, List<FileInfo> newFileInfoList) {
// 변수 선언
boolean retSuccess = false; // DB 처리 결과
String retMessage = ""; // 처리 결과 메시지
// 파일 등록
int fileInsertEffected = fileBean.create(newFileInfoList);
// 단속 ID로 파일(TB_FILE) 정보 조회
List<DataObject> infoFileList = fileBean.getFileList(new FileQuery().setInfoType(Crdn.INF_TYPE)
.setInfoKeys(crdn.getCrdnId())
.setOrderBy("FILE_ID"));
if (infoFileList != null && infoFileList.size() > 0) {
String[] fileIDs = new String[infoFileList.size()];
for (int iLoop = 0; iLoop < infoFileList.size(); iLoop++) {
fileIDs[iLoop] = infoFileList.get(iLoop).string("FILE_ID");
}
fileBean.reorder(fileIDs); // 첨부파일 재 정렬
}
crdn.setAtchFileCnt(crdn.getAtchFileCnt() + fileInsertEffected);
// 단속 대장을 수정 한다.
retSuccess = totalInfoMapper.updateCrdnAtchFileCnt(crdn);
if (!retSuccess) {
// 예외를 발생시켜서 오류메세지를 보내고 DB Rollback
throw new RuntimeException("단속 첨부 파일 갯수 수정에 실패하였습니다.");
}
retMessage = "[S] 작업이 정상 처리 되었습니다.";
return retMessage;
}
/** .
* @param crdnId Id, atchFileCnt , fileIDs IDs
* @return
*/
public String removeCrdnImageFile(String crdnId, Integer atchFileCnt, String... fileIDs) {
// 변수 선언 // 변수 선언
boolean retSuccess = false; // DB 처리 결과 boolean retSuccess = false; // DB 처리 결과
String retMessage = ""; // 처리 결과 메시지 String retMessage = ""; // 처리 결과 메시지
// 의견제출 대장을 수정 한다. // 파일 삭제
int fileInsertEffected = fileBean.remove(fileIDs);
// 단속 ID로 파일(TB_FILE) 정보 조회
List<DataObject> infoFileList = fileBean.getFileList(new FileQuery().setInfoType(Crdn.INF_TYPE)
.setInfoKeys(crdnId)
.setOrderBy("FILE_ID"));
if (infoFileList != null && infoFileList.size() > 0) {
String[] reorderFileIDs = new String[infoFileList.size()];
for (int iLoop = 0; iLoop < infoFileList.size(); iLoop++) {
reorderFileIDs[iLoop] = infoFileList.get(iLoop).string("FILE_ID");
}
fileBean.reorder(reorderFileIDs); // 첨부파일 재 정렬
}
Crdn crdn = new Crdn();
crdn.setCrdnId(crdnId);
crdn.setAtchFileCnt(atchFileCnt - fileInsertEffected);
// 단속 대장을 수정 한다.
retSuccess = totalInfoMapper.updateCrdnAtchFileCnt(crdn); retSuccess = totalInfoMapper.updateCrdnAtchFileCnt(crdn);
if (!retSuccess) { if (!retSuccess) {
// 예외를 발생시켜서 오류메세지를 보내고 DB Rollback // 예외를 발생시켜서 오류메세지를 보내고 DB Rollback

@ -1,6 +1,5 @@
package cokr.xit.fims.sprt.service.bean; package cokr.xit.fims.sprt.service.bean;
import java.util.Arrays;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
@ -12,7 +11,6 @@ import cokr.xit.base.file.FileInfo;
import cokr.xit.base.file.service.FileQuery; import cokr.xit.base.file.service.FileQuery;
import cokr.xit.base.file.service.bean.FileBean; import cokr.xit.base.file.service.bean.FileBean;
import cokr.xit.fims.crdn.Crdn; import cokr.xit.fims.crdn.Crdn;
import cokr.xit.fims.excl.OpnnSbmsn;
import cokr.xit.fims.sprt.SprtQuery; import cokr.xit.fims.sprt.SprtQuery;
import cokr.xit.fims.sprt.service.Sprt02Service; import cokr.xit.fims.sprt.service.Sprt02Service;
import cokr.xit.foundation.component.AbstractServiceBean; import cokr.xit.foundation.component.AbstractServiceBean;
@ -67,68 +65,17 @@ public class Sprt02ServiceBean extends AbstractServiceBean implements Sprt02Serv
fileQuery.setInfoType(Crdn.INF_TYPE); fileQuery.setInfoType(Crdn.INF_TYPE);
fileQuery.setInfoKeys(req.getCrdnId()); fileQuery.setInfoKeys(req.getCrdnId());
List<DataObject> fileList = fileBean.getFileList(fileQuery); return fileBean.getFileList(fileQuery);
// 동영상 존재 여부 확인
// dataObject.set("videoExist", "N");
// String linkTblNm = dataObject.string("LINK_TBL_NM");
//
// if (!linkTblNm.equals("")) {
// if (linkTblNm.equals("TB_ESB_INTERFACE")) {
// fileQuery.setInfoType("010");
// } else if(linkTblNm.equals("TB_SAEOL")) {
// fileQuery.setInfoType("020");
// } else {
// throw new RuntimeException("파일 조회 중 오류가 발생하였습니다.");
// }
//
// fileQuery.setInfoKeys(dataObject.string("LINK_ID"));
//
// List<DataObject> linkFileList = fileBean.getFileList(fileQuery);
//
// if (linkFileList != null && !linkFileList.isEmpty()) {
// for (int iLoop = 0; iLoop < linkFileList.size(); iLoop++) {
// String mimeType = linkFileList.get(iLoop).string("MIME_TYPE");
// if (Arrays.asList(Sprt.VIDEO_MIME_TYPE).contains(mimeType)) {
// dataObject.set("videoExist", "Y");
// }
// }
// }
// }
return fileList;
} }
@Override @Override
public String updateCrdnImageFile(Map<String, Object> nonQueryRequest, Crdn crdn, List<FileInfo> newFileInfoList) { public String updateCrdnImageFile(Crdn crdn, List<FileInfo> newFileInfoList) {
// 변수 선언 return sprt02Bean.updateCrdnImageFile(crdn, newFileInfoList);
String retMessage = ""; // 처리 결과 메시지 }
// 첨부파일 등록
if (newFileInfoList != null && !newFileInfoList.isEmpty()) {
// 파일 등록
int fileInsertEffected = fileBean.create(newFileInfoList);
// 단속 ID로 파일(TB_FILE) 정보 조회
List<DataObject> infoFileList = fileBean.getFileList(new FileQuery().setInfoType(Crdn.INF_TYPE)
.setInfoKeys(crdn.getCrdnId()).setOrderBy("FILE_ID"));
if (infoFileList != null && infoFileList.size() > 0) {
String[] fileIDs = new String[infoFileList.size()];
for (int iLoop = 0; iLoop < infoFileList.size(); iLoop++) {
fileIDs[iLoop] = infoFileList.get(iLoop).string("FILE_ID");
}
fileBean.reorder(fileIDs); // 첨부파일 재 정렬
}
crdn.setAtchFileCnt(crdn.getAtchFileCnt() + fileInsertEffected);
retMessage = sprt02Bean.updateCrdnAtchFileCnt(crdn);
}
return retMessage; @Override
public String removeCrdnImageFile(String crdnId, Integer atchFileCnt, String... fileIDs) {
return sprt02Bean.removeCrdnImageFile(crdnId, atchFileCnt, fileIDs);
} }
} }

@ -22,7 +22,6 @@ import cokr.xit.fims.cmmn.CrdnSttsHstryQuery;
import cokr.xit.fims.cmmn.service.CrdnPayerHstryService; import cokr.xit.fims.cmmn.service.CrdnPayerHstryService;
import cokr.xit.fims.cmmn.service.CrdnSttsHstryService; import cokr.xit.fims.cmmn.service.CrdnSttsHstryService;
import cokr.xit.fims.crdn.Crdn; import cokr.xit.fims.crdn.Crdn;
import cokr.xit.fims.cvlc.CrdnCvlcpt;
import cokr.xit.fims.excl.ExclQuery; import cokr.xit.fims.excl.ExclQuery;
import cokr.xit.fims.excl.service.Excl01Service; import cokr.xit.fims.excl.service.Excl01Service;
import cokr.xit.fims.excl.service.Excl02Service; import cokr.xit.fims.excl.service.Excl02Service;
@ -141,8 +140,6 @@ public class Sprt02Controller extends ApplicationController {
public ModelAndView getCrdnFileList(SprtQuery req) { public ModelAndView getCrdnFileList(SprtQuery req) {
List<DataObject> fileList = sprt02Service.getCrdnFileList(req); List<DataObject> fileList = sprt02Service.getCrdnFileList(req);
boolean json = jsonResponse();
ModelAndView mav = new ModelAndView("jsonView"); ModelAndView mav = new ModelAndView("jsonView");
return mav return mav
@ -160,42 +157,50 @@ public class Sprt02Controller extends ApplicationController {
* "saved": true, false * "saved": true, false
* }</code></pre> * }</code></pre>
*/ */
@RequestMapping(name="단속 이미지 파일 저장", value="/020/update.do") @RequestMapping(name="단속 이미지 파일 저장", value="/020/updateFile.do")
public ModelAndView updateCrdnImageFile(HttpServletRequest hReq, Crdn crdn, MultipartFile[] newFileList, MultipartFile[] modifyFileList) { public ModelAndView updateCrdnImageFile(Crdn crdn, MultipartFile[] newFileList) {
boolean saved = false; boolean saved = false;
String retMessage = "[F] "; String retMessage = "[F] ";
String[] deleteFileKeyList = hReq.getParameterValues("deleteFileKeyList");
String[] modifyFileKeyList = hReq.getParameterValues("modifyFileKeyList");
List<FileInfo> newFileInfoList = new ArrayList<FileInfo>(); List<FileInfo> newFileInfoList = new ArrayList<FileInfo>();
if (newFileList != null || modifyFileList != null) { if (newFileList != null) {
Relation relation = new Relation(); Relation relation = new Relation();
relation.setInfoType(Crdn.INF_TYPE); relation.setInfoType(Crdn.INF_TYPE);
relation.setInfoKey(crdn.getCrdnId()); relation.setInfoKey(crdn.getCrdnId());
if (newFileList != null) { if (newFileList != null) {
newFileInfoList = new FileInfoFactory().makeFileInfos(relation, newFileList); newFileInfoList = new FileInfoFactory().makeFileInfos(relation, newFileList);
} }
if (modifyFileList != null) {
newFileInfoList.addAll(new FileInfoFactory().makeFileInfos(relation, modifyFileList));
if (deleteFileKeyList == null) {
deleteFileKeyList = modifyFileKeyList;
} else {
String[] arr1 = deleteFileKeyList;
String[] arr2 = modifyFileKeyList;
String[] sumArr = Stream.of(arr1, arr2).flatMap(Stream::of).toArray(String[]::new);
deleteFileKeyList = (sumArr);
}
}
} }
Map<String, Object> nonQueryRequest = new HashMap<String, Object>(); retMessage = sprt02Service.updateCrdnImageFile(crdn, newFileInfoList);
if (retMessage.contains("[S]")) {
saved = true;
} else {
saved = false;
}
nonQueryRequest.put("deleteFileKeyList", deleteFileKeyList); return new ModelAndView("jsonView")
.addObject("saved", saved)
.addObject("retMessage", retMessage);
}
/** .
* @param crdnId Id, atchFileCnt , fileIDs IDs
* @return jsonView
* <pre><code> {
* "affected":
* "saved": true, false
* }</code></pre>
*/
@RequestMapping(name="단속 이미지 파일 저장", value="/020/removeFile.do")
public ModelAndView removeCrdnImageFile(String crdnId, String atchFileCnt, String... fileIDs) {
boolean saved = false;
String retMessage = "[F] ";
Integer fileCnt = Integer.parseInt(atchFileCnt);
retMessage = sprt02Service.updateCrdnImageFile(nonQueryRequest, crdn, newFileInfoList); retMessage = sprt02Service.removeCrdnImageFile(crdnId, fileCnt, fileIDs);
if (retMessage.contains("[S]")) { if (retMessage.contains("[S]")) {
saved = true; saved = true;
} else { } else {

@ -38,7 +38,9 @@
</div> <!-- <div class="row g-1"> --> </div> <!-- <div class="row g-1"> -->
</form> <!-- /입력 영역 --> </form> <!-- /입력 영역 -->
</div> </div>
</p>
<p></p>
<div class="nav-align-top"> <div class="nav-align-top">
<ul class="nav nav-tabs" role="tablist"> <ul class="nav nav-tabs" role="tablist">
<li class="nav-item"> <li class="nav-item">
@ -128,13 +130,29 @@
${pageName}Fields.set(item); ${pageName}Fields.set(item);
// 건수 표기 // 건수 표기
fnChangeCountStauts(); fnChangeCountStauts${pageName}();
} }
/************************************************************************** /**************************************************************************
* *
**************************************************************************/ **************************************************************************/
// 자료 재조회
refreshDataInfo${pageName} = (params) => {
ajax.get({
url : wctx.url("/" + params.taskSeCd + "/sprt/sprt02/010/main.do")
, headers: { Accept: "application/json; charset=utf-8" } // json
, data : params || {}
, success : resp => {
if (resp.totalInfo) {
// 최상단 단속 Data 셋팅
${pageName}Control.setData([resp.totalInfo]);
// 단속 납부자 Data 셋팅
fnCrdnPayerInfo${pageName}();
}
}
});
}
/************************************************************************** /**************************************************************************
* 초기 셋팅 * 초기 셋팅
@ -150,10 +168,10 @@
} }
/************************************************************************** /**************************************************************************
* 탭 clickEvent * 네이게이션 Event
**************************************************************************/ **************************************************************************/
// 건수 표기 // 건수 표기
fnChangeCountStauts = () => { fnChangeCountStauts${pageName} = () => {
// curDataIndex 에 값이 없다면.. // curDataIndex 에 값이 없다면..
if (curDataIndex == null) { if (curDataIndex == null) {
let mainDataItems = ${callControlName}.dataset._items; let mainDataItems = ${callControlName}.dataset._items;
@ -207,7 +225,7 @@
, delYn : "N" , delYn : "N"
}; };
fnDataRefreshInfo(params); refreshDataInfo${pageName}(params);
} }
// 다음 자료 조회 // 다음 자료 조회
@ -245,27 +263,12 @@
, delYn : "N" , delYn : "N"
}; };
fnDataRefreshInfo(params); refreshDataInfo${pageName}(params);
}
// 자료 재조회
fnDataRefreshInfo = (params) => {
ajax.get({
url : wctx.url("/" + params.taskSeCd + "/sprt/sprt02/010/main.do")
, headers: { Accept: "application/json; charset=utf-8" } // json
, data : params || {}
, success : resp => {
if (resp.totalInfo) {
// 최상단 단속 Data 셋팅
${pageName}Control.setData([resp.totalInfo]);
// 단속 납부자 Data 셋팅
fnCrdnPayerInfo${pageName}();
}
}
});
} }
/**************************************************************************
* 탭 clickEvent
**************************************************************************/
// 단속 정보 // 단속 정보
fnCrdnPayerInfo${pageName} = () => { fnCrdnPayerInfo${pageName} = () => {
let crdnId = ${pageName}Control.dataset.getValue("CRDN_ID"); let crdnId = ${pageName}Control.dataset.getValue("CRDN_ID");

@ -8,7 +8,6 @@
<!-- 입력 영역 --> <!-- 입력 영역 -->
<form id="frmEdit--${pageName}" name="frmEdit"> <form id="frmEdit--${pageName}" name="frmEdit">
<input type="hidden" id="crdnId--${pageName}" name="crdnId" data-map="CRDN_ID" /> <input type="hidden" id="crdnId--${pageName}" name="crdnId" data-map="CRDN_ID" />
<input type="hidden" id="atchFileCnt--${pageName}" name="atchFileCnt" data-map="ATCH_FILE_CNT" />
<input type="hidden" id="rtpyrId--${pageName}" name="rtpyrId" data-map="RTPYR_ID" /> <input type="hidden" id="rtpyrId--${pageName}" name="rtpyrId" data-map="RTPYR_ID" />
<!-- 단속 정보 --> <!-- 단속 정보 -->
@ -18,10 +17,10 @@
<label class="w-px-120 bg-label-danger pe-2 col-form-label text-sm-center">단속 정보</label> <label class="w-px-120 bg-label-danger pe-2 col-form-label text-sm-center">단속 정보</label>
<!-- 버튼 우측 정렬 --> <!-- 버튼 우측 정렬 -->
<span class="container-window-btn-right"> <span class="container-window-btn-right">
<button type="button" class="btn btn-primary" id="btnOpenCvlcptOrgnl--${pageName}" title="민원 원본 보기" onclick="fnOpenCvlcptOrgnl${pageName}();"> <button type="button" class="btn btn-primary" id="btnViewCvlcptOrgnl--${pageName}" title="민원 원본 보기" onclick="fnViewCvlcptOrgnl${pageName}();">
민원 원본 보기 민원 원본 보기
</button> </button>
<button type="button" class="btn btn-primary" id="btnOpenAnswerPreview--${pageName}" title="민원 답변 보기" onclick="fnOpenAnswerPreview${pageName}();"> <button type="button" class="btn btn-primary" id="btnViewAnswerPreview--${pageName}" title="민원 답변 보기" onclick="fnViewAnswerPreview${pageName}();">
민원 답변 보기 민원 답변 보기
</button> </button>
<button type="button" class="btn btn-primary" id="btnUpdateCrdn--${pageName}" title="단속정보 수정" onclick="fnUpdateCrdn${pageName}();"> <button type="button" class="btn btn-primary" id="btnUpdateCrdn--${pageName}" title="단속정보 수정" onclick="fnUpdateCrdn${pageName}();">
@ -281,7 +280,6 @@
<div class="card" style="width:500px;"> <div class="card" style="width:500px;">
<form id="frmFile--${pageName}" method="post" enctype="multipart/form-data"> <form id="frmFile--${pageName}" method="post" enctype="multipart/form-data">
<input type="file" id="newFileList--${pageName}" name="newFileList" multiple accept="image/*" hidden /> <input type="file" id="newFileList--${pageName}" name="newFileList" multiple accept="image/*" hidden />
<input type="file" id="modifyFileList--${pageName}" name="modifyFileList" multiple accept="image/*" hidden />
</form> </form>
<div class="col-md-12 d-flex justify-content-between"> <div class="col-md-12 d-flex justify-content-between">
@ -312,15 +310,10 @@
// FormFields // FormFields
var ${pageName}Fields = new FormFields("#frmEdit--${pageName}"); var ${pageName}Fields = new FormFields("#frmEdit--${pageName}");
// 단속 사진 // 단속 사진
var uploadSet = uploadSupport("#inputUploadSet--${pageName}"); var ${pageName}UploadSet = uploadSupport("#inputUploadSet--${pageName}");
var existFileArr = []; var existFileArr${pageName} = [];
var captureFileArr = []; var localUploadArr${pageName} = [];
var localUploadArr = [];
var numberPlateArr = [];
// 파일 리스트
var fileListArr = [];
/************************************************************************** /**************************************************************************
* DatasetControl * DatasetControl
@ -349,66 +342,29 @@
${pageName}Fields.set(item); // Dataset 셋팅 ${pageName}Fields.set(item); // Dataset 셋팅
} }
// 저장 /**************************************************************************
${pageName}Control.onSave = (resp) => { * function 이미지 관련
let btnTitle = $("#btnAddFile--${pageName}").attr("title"); **************************************************************************/
let showMessage = resp.retMessage.replace(/[S]|[F]/g, btnTitle); // 사진 추가 datasetChange
${pageName}UploadSet.onDatasetChange = () => {
dialog.alert(showMessage); let files = ${pageName}UploadSet.getDataset();
if (resp.saved) {
fnImageRefreshInfo(); // 이미지(사진) 재조회
}
};
${pageName}Control.save = (info) => {
if (!info) return;
let formData = new FormData(document.getElementById("frmFile--${pageName}"));
for (let key in info) {
let value = info[key];
formData.append(key, value);
}
formData.delete("newFileList");
formData.delete("modifyFileList");
// 추가 파일 등록
if (localUploadArr.length > 0) {
localUploadArr.forEach(item => formData.append("newFileList", item));
}
ajax.post({
url : wctx.url("/sprt/sprt02/020/update.do")
, data : formData
, contentType : false
, processData : false
, success : resp => { ${pageName}Control.onSave(resp); }
});
}
uploadSet.onDatasetChange = () => {
let files = uploadSet.getDataset();
files.forEach(item => localUploadArr.push(item)); files.forEach(item => localUploadArr${pageName}.push(item));
${pageName}Control.save(${pageName}Fields.get()); saveFile${pageName}(${pageName}Fields.get());
}; };
uploadSet.onRemove = () => { //
${pageName}UploadSet.onRemove = () => {
}; };
/************************************************************************** // 이미지 파일만큼 html에 추가
* function 이미지 관련 fnMakeImgForExistFile${pageName} = (fileArr) => {
**************************************************************************/ let tagsText = "";
fnMakeImgForExistFile = (fileArr) => {
var tagsText = "";
for (var index = 0, j = 0; index < fileArr.length; index++) { for (let index = 0, j = 0; index < fileArr.length; index++) {
var item = fileArr[index]; let item = fileArr[index];
if (item.status == "delete") { if (item.status == "delete") {
continue; continue;
@ -433,30 +389,11 @@
return tagsText; return tagsText;
} }
fnMakeImgForNewFile = (fileArr) => { // 화면에 이미지 표시
var tagsText = ""; fnImageDisplay${pageName} = (isExist) => {
for (var index = 0; index < fileArr.length; index++) {
var item = fileArr[index];
tagsText += "<label class='mx-2'>";
tagsText += "<input type='checkbox' name='newPhoto' class='form-check-input' value='"+item.id +"' ";
tagsText += " />";
tagsText += "<img src='"+ item.url +"' width='260' height='150' />";
tagsText += "</label>";
if (index % 2 == 1) {
tagsText += "<br />";
}
}
return tagsText;
}
fnImageDisplay = (isExist) => {
if (isExist) { if (isExist) {
var displayArea = document.querySelector("#displayForExist--${pageName}"); let displayArea = document.querySelector("#displayForExist--${pageName}");
var tagsText = fnMakeImgForExistFile(existFileArr); let tagsText = fnMakeImgForExistFile${pageName}(existFileArr${pageName});
if (tagsText == "") { if (tagsText == "") {
displayArea.innerHTML = "등록된 사진이 없습니다."; displayArea.innerHTML = "등록된 사진이 없습니다.";
@ -465,56 +402,100 @@
displayArea.innerHTML = tagsText; displayArea.innerHTML = tagsText;
$("#btnEditPhoto--${pageName}").show(); $("#btnEditPhoto--${pageName}").show();
} }
} else {
var displayArea = document.querySelector("#displayForNew--${pageName}");
var concatArr = localUploadArr.concat(numberPlateArr).concat(captureFileArr);
var tagsText = fnMakeImgForNewFile(concatArr);
displayArea.innerHTML = tagsText; $("#atchFileCnt--${pageName}").val(existFileArr${pageName}.length);
} }
}; };
/************************************************************************** // 사진 저장 콜백
* function saveFileCallback${pageName} = (resp) => {
**************************************************************************/ let btnTitle = $("#btnAddFile--${pageName}").attr("title");
// 민원 원본 보기 let showMessage = resp.retMessage.replace(/[S]|[F]/g, btnTitle);
openCvlcptOrgnl${pageName} = (params) => {
if (!params) return;
let dialogId = "cvlcptOrgnlDialog--${pageName}"; dialog.alert(showMessage);
ajax.get({ // 이미지(사진) 재조회
url : wctx.url("/" + params.taskSeCd + "/cvlc/cvlc01/050/info.do") if (resp.saved) {
, data : params || {} refreshImageInfo${pageName}();
, success : resp => { }
dialog.open({ };
id : dialogId
, title : "민원내역 원본" // 사진 저장
, content : resp saveFile${pageName} = (info) => {
, size : "xl" if (!info) return;
});
let formData = new FormData(document.getElementById("frmFile--${pageName}"));
for (let key in info) {
let value = info[key];
formData.append(key, value);
}
formData.append("atchFileCnt", existFileArr${pageName}.length);
// 추가 파일 등록
formData.delete("newFileList");
if (localUploadArr${pageName}.length > 0) {
localUploadArr${pageName}.forEach(item => formData.append("newFileList", item));
}
ajax.post({
url : wctx.url("/sprt/sprt02/020/updateFile.do")
, data : formData
, contentType : false
, processData : false
, success : resp => { saveFileCallback${pageName}(resp); }
});
}
// 선택 사진 삭제 콜백
removeFileCallback${pageName} = (resp) => {
let btnTitle = $("#btnDeleteFile--${pageName}").attr("title");
let showMessage = resp.retMessage.replace(/[S]|[F]/g, btnTitle);
dialog.alert(showMessage);
// 이미지(사진) 재조회
if (resp.saved) {
refreshImageInfo${pageName}();
}
};
// 선택 사진 삭제
removeFile${pageName} = (target) => {
if (!target) return;
let fileId = "";
let crdnId = $("#crdnId--${pageName}").val();
// 단속 ID 가 없다면.. return
if (crdnId == null || crdnId == "") {
return;
}
existFileArr${pageName}.forEach(function(item) {
if (item.FILE_ID == target) {
item.status = "delete";
fileId = item.FILE_ID;
} }
}) });
}
// 단속 재등록 let params = {
createCrdnReReg = (params) => { crdnId : crdnId
if (!params) return; , atchFileCnt : existFileArr${pageName}.length
, fileIDs : fileId
}
ajax.post({ ajax.post({
url : wctx.url("/" + params.taskSeCd + "/excl/excl03/010/create.do") url : wctx.url("/sprt/sprt02/020/removeFile.do")
, data : params || {} , data : params || {}
, success : resp => { , success : resp => { removeFileCallback${pageName}(resp); }
if (resp.saved) {
dialog.alert("저장됐습니다.");
dialog.close(${pageName}Control.prefix + "Dialog");
}
}
}); });
} }
// 이미지(사진) 재조회 // 이미지(사진) 재조회
fnImageRefreshInfo = () => { refreshImageInfo${pageName} = () => {
let crdnId = $("#crdnId--${pageName}").val(); let crdnId = $("#crdnId--${pageName}").val();
// 단속 ID 가 없다면.. return // 단속 ID 가 없다면.. return
@ -534,17 +515,79 @@
, data : params || {} , data : params || {}
, success : resp => { , success : resp => {
// 이미지 정보를 파일 배열에 셋팅 // 이미지 정보를 파일 배열에 셋팅
existFileArr = []; // 파일 배열 초기화 existFileArr${pageName} = [];
localUploadArr${pageName} = [];
if (resp.fileList) { if (resp.fileList) {
resp.fileList.forEach(function(item) { resp.fileList.forEach(function(item) {
item.status = ""; item.status = "";
existFileArr.push(item); existFileArr${pageName}.push(item);
}); });
} }
// 화면에 이미지 표시 // 화면에 이미지 표시
fnImageDisplay(true); fnImageDisplay${pageName}(true);
}
});
}
/**************************************************************************
* function
**************************************************************************/
// 민원 원본 보기
viewCvlcptOrgnl${pageName} = (params) => {
if (!params) return;
let dialogId = "cvlcptOrgnlDialog--${pageName}";
ajax.get({
url : wctx.url("/" + params.taskSeCd + "/cvlc/cvlc01/050/info.do")
, data : params || {}
, success : resp => {
dialog.open({
id : dialogId
, title : "민원내역 원본"
, content : resp
, size : "xl"
});
}
})
}
// 민원 답변 보기
viewAnswerPreview${pageName} = (params) => {
if (!params) return;
console.log("민원 답변 보기");
// let dialogId = "cvlcptOrgnlDialog--${pageName}";
// ajax.get({
// url : wctx.url("/" + params.taskSeCd + "/cvlc/cvlc01/050/info.do")
// , data : params || {}
// , success : resp => {
// dialog.open({
// id : dialogId
// , title : "민원내역 원본"
// , content : resp
// , size : "xl"
// });
// }
// })
}
// 단속 재등록
createCrdnReReg${pageName} = (params) => {
if (!params) return;
ajax.post({
url : wctx.url("/" + params.taskSeCd + "/excl/excl03/010/create.do")
, data : params || {}
, success : resp => {
if (resp.saved) {
dialog.alert("저장됐습니다.");
dialog.close(${pageName}Control.prefix + "Dialog");
}
} }
}); });
} }
@ -628,13 +671,12 @@
let target = checked[0].value; let target = checked[0].value;
existFileArr.forEach(function(item) { dialog.alert({
if (item.FILE_ID == target) { content : "선택한 파일을 삭제하시겠습니까?"
item.status = "delete"; , onOK : () => {
removeFile${pageName}(target);
} }
}); });
fnImageDisplay(true);
}); });
} }
@ -642,7 +684,7 @@
* 버튼 clickEvent * 버튼 clickEvent
**************************************************************************/ **************************************************************************/
// 민원 원본 보기 // 민원 원본 보기
fnOpenCvlcptOrgnl${pageName} = () => { fnViewCvlcptOrgnl${pageName} = () => {
let crdnId = ${pageName}Control.dataset.getValue("CRDN_ID"); let crdnId = ${pageName}Control.dataset.getValue("CRDN_ID");
let sggCd = ${pageName}Control.dataset.getValue("SGG_CD"); let sggCd = ${pageName}Control.dataset.getValue("SGG_CD");
let taskSeCd = ${pageName}Control.dataset.getValue("TASK_SE_CD"); let taskSeCd = ${pageName}Control.dataset.getValue("TASK_SE_CD");
@ -653,18 +695,34 @@
} }
let params = { let params = {
callPurpose : "create" callPurpose : "view"
, crdnId : crdnId , crdnId : crdnId
, sggCd : sggCd , sggCd : sggCd
, taskSeCd : taskSeCd , taskSeCd : taskSeCd
}; };
openCvlcptOrgnl${pageName}(params); viewCvlcptOrgnl${pageName}(params);
} }
// 민원 답변 보기 // 민원 답변 보기
fnOpenAnswerPreview${pageName} = () => { fnViewAnswerPreview${pageName} = () => {
console.log("민원 답변 보기"); let crdnId = ${pageName}Control.dataset.getValue("CRDN_ID");
let sggCd = ${pageName}Control.dataset.getValue("SGG_CD");
let taskSeCd = ${pageName}Control.dataset.getValue("TASK_SE_CD");
// 단속 ID 가 없다면.. return
if (crdnId == null || crdnId == "") {
return;
}
let params = {
callPurpose : "view"
, crdnId : crdnId
, sggCd : sggCd
, taskSeCd : taskSeCd
};
viewAnswerPreview${pageName}(params);
} }
// 단속정보 수정 // 단속정보 수정
@ -694,7 +752,7 @@
dialog.alert({ dialog.alert({
content : "현재 정보를 단속 재등록 하겠습니까?" content : "현재 정보를 단속 재등록 하겠습니까?"
, onOK : () => { , onOK : () => {
createCrdnReReg(params); createCrdnReReg${pageName}(params);
} }
}); });
} }
@ -730,17 +788,17 @@
${pageName}Control.setData([crdnPayerInfo]); ${pageName}Control.setData([crdnPayerInfo]);
// 이미지 정보를 파일 배열에 셋팅 // 이미지 정보를 파일 배열에 셋팅
existFileArr = []; // 파일 배열 초기화 existFileArr${pageName} = []; // 파일 배열 초기화
if (crdnPayerInfo.fileList) { if (crdnPayerInfo.fileList) {
crdnPayerInfo.fileList.forEach(function(item) { crdnPayerInfo.fileList.forEach(function(item) {
item.status = ""; item.status = "";
existFileArr.push(item); existFileArr${pageName}.push(item);
}); });
} }
// 화면에 이미지 표시 // 화면에 이미지 표시
fnImageDisplay(true); fnImageDisplay${pageName}(true);
}); });
// #sourceURL=sprt02020-info.jsp // #sourceURL=sprt02020-info.jsp

@ -241,7 +241,7 @@
, title : dialogTitle , title : dialogTitle
, content : resp , content : resp
, size : "xl" , size : "xl"
, onClose : () => { fnDataRefreshInfo(); } // callback 자료 재조회 , onClose : () => { refreshDataInfo{pageName}(); } // callback 자료 재조회
}); });
} }
}); });
@ -250,7 +250,7 @@
// 삭제 callback // 삭제 callback
${pageName}Control.onRemove = (resp) => { ${pageName}Control.onRemove = (resp) => {
if (resp.saved) { if (resp.saved) {
fnDataRefreshInfo(); // 자료 재조회 refreshDataInfo{pageName}(); // 자료 재조회
} }
} }
@ -278,14 +278,14 @@
, title : ${pageName}Control.prefixName + " 심의 처리" , title : ${pageName}Control.prefixName + " 심의 처리"
, content : resp , content : resp
, size : "lg" , size : "lg"
, onClose : () => { fnDataRefreshInfo(); } // callback 자료 조회 , onClose : () => { refreshDataInfo{pageName}(); } // callback 자료 조회
}); });
} }
}); });
} }
// 자료 재조회 // 자료 재조회
fnDataRefreshInfo = () => { refreshDataInfo{pageName} = () => {
let crdnId = $("#crdnId--${pageNameMain}").val(); let crdnId = $("#crdnId--${pageNameMain}").val();
// 단속 ID 가 없다면.. return // 단속 ID 가 없다면.. return

@ -108,7 +108,9 @@
</div> <!-- <div class="card"> --> </div> <!-- <div class="card"> -->
</div> <!-- 발송 정보 <div class="col-xl-12 mx-1"> --> </div> <!-- 발송 정보 <div class="col-xl-12 mx-1"> -->
</div> <!-- <div class="d-flex flex-row justify-content-evenly"> --> </div> <!-- <div class="d-flex flex-row justify-content-evenly"> -->
</p>
<p></p>
<div class="d-flex flex-row justify-content-evenly"> <div class="d-flex flex-row justify-content-evenly">
<!-- 가상계좌 정보 --> <!-- 가상계좌 정보 -->
<div class="col-xl-3 mx-1"> <div class="col-xl-3 mx-1">

@ -135,7 +135,7 @@
</div> <!-- 부과제외 정보 <div class="col-xl-6 mx-1"> --> </div> <!-- 부과제외 정보 <div class="col-xl-6 mx-1"> -->
</div> <!-- <div class="d-flex flex-row justify-content-evenly"> --> </div> <!-- <div class="d-flex flex-row justify-content-evenly"> -->
</p> <p></p>
<div class="d-flex flex-row justify-content-evenly"> <div class="d-flex flex-row justify-content-evenly">
<!-- 처리 상태 이력 --> <!-- 처리 상태 이력 -->
@ -350,7 +350,7 @@
, content : resp , content : resp
, size : "lg" , size : "lg"
, init : () => { } , init : () => { }
, onClose : () => { fnDataRefreshInfo(); } // callback 자료 재조회 , onClose : () => { refreshDataInfo{pageName}(); } // callback 자료 재조회
}); });
} }
}); });
@ -364,7 +364,7 @@
dialog.alert(showMessage); dialog.alert(showMessage);
if (resp.saved) { if (resp.saved) {
fnDataRefreshInfo(); // 자료 재조회 refreshDataInfo{pageName}(); // 자료 재조회
} }
} }
@ -421,7 +421,7 @@
, content : resp , content : resp
, size : "lg" , size : "lg"
, init : () => { } , init : () => { }
, onClose : () => { fnDataRefreshInfo(); } // callback 자료 재조회 , onClose : () => { refreshDataInfo{pageName}(); } // callback 자료 재조회
}); });
} }
}); });
@ -435,7 +435,7 @@
dialog.alert(showMessage); dialog.alert(showMessage);
if (resp.saved) { if (resp.saved) {
fnDataRefreshInfo(); // 자료 재조회 refreshDataInfo{pageName}(); // 자료 재조회
} }
} }
@ -449,10 +449,42 @@
} }
/************************************************************************** /**************************************************************************
* * function
**************************************************************************/ **************************************************************************/
// 단속 상태 이력 DataTables에 click 이벤트
renderList${pageName}${pageDataName3} = () => {
let ${infoPrefix}List = ${pageName}${pageDataName3}Dataset;
let empty = ${infoPrefix}List.empty;
let trs = empty ?
[document.getElementById("${infoPrefix}NotFound--${pageName}${pageDataName3}").innerHTML] : <%-- from template#${infoPrefix}NotFound --%>
${infoPrefix}List.inStrings(
document.getElementById("${infoPrefix}Row--${pageName}${pageDataName3}").innerHTML, <%-- from template#${infoPrefix}Row --%>
(str, dataItem) => str
.replace(/{onclick}/gi, "${pageName}${pageDataName3}Dataset.setCurrent('" + dataItem.getValue("STTS_HSTRY_ID") + "');")
);
$("#tbody--${pageName}${pageDataName3}").html(trs.join());
}
// 단속 납부자 이력 DataTables에 click 이벤트
renderList${pageName}${pageDataName4} = () => {
let ${infoPrefix}List = ${pageName}${pageDataName4}Dataset;
let empty = ${infoPrefix}List.empty;
let trs = empty ?
[document.getElementById("${infoPrefix}NotFound--${pageName}${pageDataName4}").innerHTML] : <%-- from template#${infoPrefix}NotFound --%>
${infoPrefix}List.inStrings(
document.getElementById("${infoPrefix}Row--${pageName}${pageDataName4}").innerHTML, <%-- from template#${infoPrefix}Row --%>
(str, dataItem) => str
.replace(/{onclick}/gi, "${pageName}${pageDataName4}Dataset.setCurrent('" + dataItem.getValue("CHG_HSTRY_ID") + "');")
);
$("#tbody--${pageName}${pageDataName4}").html(trs.join());
}
// 자료 재조회 // 자료 재조회
fnDataRefreshInfo = () => { refreshDataInfo{pageName} = () => {
let crdnId = $("#crdnId--${pageNameMain}").val(); let crdnId = $("#crdnId--${pageNameMain}").val();
// 단속 ID 가 없다면.. return // 단속 ID 가 없다면.. return
@ -502,38 +534,6 @@
}); });
} }
// 단속 상태 이력 DataTables에 click 이벤트
renderList${pageName}${pageDataName3} = () => {
let ${infoPrefix}List = ${pageName}${pageDataName3}Dataset;
let empty = ${infoPrefix}List.empty;
let trs = empty ?
[document.getElementById("${infoPrefix}NotFound--${pageName}${pageDataName3}").innerHTML] : <%-- from template#${infoPrefix}NotFound --%>
${infoPrefix}List.inStrings(
document.getElementById("${infoPrefix}Row--${pageName}${pageDataName3}").innerHTML, <%-- from template#${infoPrefix}Row --%>
(str, dataItem) => str
.replace(/{onclick}/gi, "${pageName}${pageDataName3}Dataset.setCurrent('" + dataItem.getValue("STTS_HSTRY_ID") + "');")
);
$("#tbody--${pageName}${pageDataName3}").html(trs.join());
}
// 단속 납부자 이력 DataTables에 click 이벤트
renderList${pageName}${pageDataName4} = () => {
let ${infoPrefix}List = ${pageName}${pageDataName4}Dataset;
let empty = ${infoPrefix}List.empty;
let trs = empty ?
[document.getElementById("${infoPrefix}NotFound--${pageName}${pageDataName4}").innerHTML] : <%-- from template#${infoPrefix}NotFound --%>
${infoPrefix}List.inStrings(
document.getElementById("${infoPrefix}Row--${pageName}${pageDataName4}").innerHTML, <%-- from template#${infoPrefix}Row --%>
(str, dataItem) => str
.replace(/{onclick}/gi, "${pageName}${pageDataName4}Dataset.setCurrent('" + dataItem.getValue("CHG_HSTRY_ID") + "');")
);
$("#tbody--${pageName}${pageDataName4}").html(trs.join());
}
/************************************************************************** /**************************************************************************
* 초기 셋팅 * 초기 셋팅
**************************************************************************/ **************************************************************************/
@ -548,7 +548,7 @@
} }
/************************************************************************** /**************************************************************************
* function * 버튼 clickEvent
**************************************************************************/ **************************************************************************/
// 감경 등록 // 감경 등록
fnCreate${pageName}${pageDataName1} = () => { fnCreate${pageName}${pageDataName1} = () => {

@ -194,7 +194,7 @@
</div> <!-- <div class="d-flex flex-row justify-content-evenly"> --> </div> <!-- <div class="d-flex flex-row justify-content-evenly"> -->
</form> </form>
</p> <p></p>
<div class="d-flex flex-row justify-content-evenly"> <div class="d-flex flex-row justify-content-evenly">
<!-- 압류 정보 --> <!-- 압류 정보 -->

@ -112,7 +112,9 @@
</div> <!-- <div class="row g-1"> --> </div> <!-- <div class="row g-1"> -->
</form> </form>
</div> <!-- <div class="card"> --> </div> <!-- <div class="card"> -->
</p>
<p></p>
<div class="card"> <div class="card">
<div class="row g-1"> <div class="row g-1">
<!-- DataTables(그리드) --> <!-- DataTables(그리드) -->

@ -146,7 +146,7 @@
, content : resp , content : resp
, size : "lg" , size : "lg"
, init : () => { } , init : () => { }
, onClose : () => { fnDataRefreshInfo(); } // callback 자료 재조회 , onClose : () => { refreshDataInfo{pageName}(); } // callback 자료 재조회
}); });
} }
}); });
@ -160,7 +160,7 @@
dialog.alert(showMessage); dialog.alert(showMessage);
if (resp.saved) { if (resp.saved) {
fnDataRefreshInfo(); // 자료 재조회 refreshDataInfo{pageName}(); // 자료 재조회
} }
} }
@ -174,7 +174,7 @@
} }
/************************************************************************** /**************************************************************************
* * function
**************************************************************************/ **************************************************************************/
// DataTables에 click 이벤트 // DataTables에 click 이벤트
renderList${pageName} = () => { renderList${pageName} = () => {
@ -193,7 +193,7 @@
} }
// 자료 재조회 // 자료 재조회
fnDataRefreshInfo = () => { refreshDataInfo{pageName} = () => {
let crdnId = $("#crdnId--${pageNameMain}").val(); let crdnId = $("#crdnId--${pageNameMain}").val();
let vhrno = $("#vhrno--${pageNameMain}").val(); let vhrno = $("#vhrno--${pageNameMain}").val();
@ -235,7 +235,7 @@
} }
/************************************************************************** /**************************************************************************
* function * 버튼 clickEvent
**************************************************************************/ **************************************************************************/
// 민원 상담 내용 등록 // 민원 상담 내용 등록
fnCreate${pageName} = () => { fnCreate${pageName} = () => {

Loading…
Cancel
Save