From df74b1f2ce78edb9ba95fd1639490f5735727350 Mon Sep 17 00:00:00 2001 From: jjh Date: Fri, 20 Sep 2024 16:11:21 +0900 Subject: [PATCH] =?UTF-8?q?=EC=9E=84=EC=B0=A8=EC=9D=B8=20=EB=93=B1?= =?UTF-8?q?=EB=A1=9D=20=EC=88=98=EC=A0=95.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../WEB-INF/jsp/fims/rent/rent01010-main.jsp | 24 +- .../WEB-INF/jsp/fims/rent/rent02010-main.jsp | 98 ++++-- .../WEB-INF/jsp/fims/rent/rent02020-info.jsp | 4 +- .../WEB-INF/jsp/fims/rent/rent02030-main.jsp | 57 ++-- .../WEB-INF/jsp/fims/rent/rent02040-info.jsp | 278 +++++++++++++++--- .../resources/js/fims/rent/rent02030.js | 4 +- .../resources/js/fims/rent/rent02040.js | 19 +- 7 files changed, 395 insertions(+), 89 deletions(-) diff --git a/src/main/webapp/WEB-INF/jsp/fims/rent/rent01010-main.jsp b/src/main/webapp/WEB-INF/jsp/fims/rent/rent01010-main.jsp index 3dd868af..60031884 100644 --- a/src/main/webapp/WEB-INF/jsp/fims/rent/rent01010-main.jsp +++ b/src/main/webapp/WEB-INF/jsp/fims/rent/rent01010-main.jsp @@ -33,12 +33,33 @@ + + + @@ -85,22 +106,22 @@ - @@ -83,14 +93,21 @@ @@ -100,20 +117,27 @@ {ROW_NUM} - {ENT_NM} - {ENT_NO} - {RPRSV_NM} - {ENT_TELNO} - {ENT_FXNO} - {ENT_ZIP} - {ENT_ADDR} + {VHRNO} + {CTRT_BGNG_DT} + {CTRT_END_DT} + {HIRER_SE_NM} + {HIRER_REG_NO} + {HIRER_NM} + {HIRER_TELNO} + {HIRER_MBL_TELNO} + {HIRER_EML_ADDR} + {HIRER_ZIP} + {HIRER_ADDR} + {HIRER_DTL_ADDR} + {ATCH_FILE_CNT} {REG_DT} + {RGTR_NM} @@ -178,7 +202,7 @@ $P.dataTableDblClick = (dataIndex, dataKey) => { let params = { callPurpose: "update" - , entId: $P.ctrl.getValue("LSCT_ID") // 임대차계약 ID + , hirerId: $P.ctrl.getValue("HIRER_ID") // 임차인 ID }; $P.ctrl.getInfo(params); @@ -360,8 +384,7 @@ $P.$findn("btnOK").on("click", () => { $P.fnOK(); }); // 선택 확인 // input에서 엔터(Enter) 키를 누르면 검색한다. - $P.$findn("schEntNo").onEnterPress($P.fnSearchList); // 법인(사업자)번호 - $P.$findn("schEntNm").onEnterPress($P.fnSearchList); // 기업명 + $P.$findn("schVhrno").onEnterPress($P.fnSearchList); // 자동차등록번호 // 업무 버튼 이벤트 $P.$findn("btnCreate").on("click", () => { $P.fnCreate(); }); // 등록 diff --git a/src/main/webapp/WEB-INF/jsp/fims/rent/rent02040-info.jsp b/src/main/webapp/WEB-INF/jsp/fims/rent/rent02040-info.jsp index cc2fb891..4780ad63 100644 --- a/src/main/webapp/WEB-INF/jsp/fims/rent/rent02040-info.jsp +++ b/src/main/webapp/WEB-INF/jsp/fims/rent/rent02040-info.jsp @@ -14,64 +14,110 @@
- +
- - + + +
+ +
+ + + + +
+ +
+ + +
+ +
+ +
- -
- - -
- +
- - + +
- +
- - + +
- +
- - + +
- +
- - + +
- +
- - + +
- - - + + +
- - + +
+ +
+
+ +
+
+
+ +
+
+ +
+ + + + + + + + + + + +
No.파일번호파일이름파일크기다운로드삭제
+
+
+ + +
@@ -107,21 +153,146 @@ // datasetControl $P.ctrl = newRent02040Control("${pageName}", "[data-doctx=${pageName}]"); + // 파일 리스트 + $P.fileListArr = new Array(); /************************************************************************** * 사용자 함수(function) **************************************************************************/ // URL 설정 $P.setUrl = (prefixUrl) => { - $P.ctrl.urls.create = wctx.url(prefixUrl + "/040/createEnt.do") // 등록 - $P.ctrl.urls.update = wctx.url(prefixUrl + "/040/updateEnt.do") // 수정 + $P.ctrl.urls.create = wctx.url(prefixUrl + "/040/createHirer.do") // 등록 + $P.ctrl.urls.update = wctx.url(prefixUrl + "/040/updateHirer.do") // 수정 } // 우편번호 검색 결과 $P.callbackSearchAddr = (obj) => { - $P.$findn("entAddr").val(obj.ADDR); // 주소 - $P.$findn("entZip").val(obj.ZIP); // 우편번호 - $P.$findn("entDtlAddr").val(obj.DTL_ADDR); // 상세 주소 + $P.$findn("hirerAddr").val(obj.ADDR); // 주소 + $P.$findn("hirerZip").val(obj.ZIP); // 우편번호 + $P.$findn("hirerDtlAddr").val(obj.DTL_ADDR); // 상세 주소 + } + + // 첨부파일 조회 + $P.fnSearchFileList = (hirerId) => { + let tableFileList = $P.findn("fileList"); // table element 찾기 + let fileLength = tableFileList.rows.length; + + // 기존 table에 자료가 존재하면 tableRow 삭제 + for (let iLoop = 1; iLoop < fileLength; iLoop++) { + tableFileList.deleteRow(1); // table 행(Row) 삭제 + } + + // 임차인 등록일 경우에는 첨부파일을 조회하지 안는다.. + if (!hirerId) return; + + // 첨부파일 리스트 + ajax.get({ + url: "file/list.do" + , data: { + infoType: "120" + , infoKeys: hirerId + , fetchSize: 0 + } + , success: (resp) => { + let fileNo = 0; + let fileList = resp.fileList; + + fileList.forEach(function (item, index, array) { + fileNo = index + 1; + + let innerHtml = ""; + innerHtml += ""; + innerHtml += "" + fileNo + ""; + innerHtml += "" + item.FILE_ID + ""; + innerHtml += "" + item.FILE_NM + ""; + innerHtml += "" + item.FILE_SIZE + " byte"; + innerHtml += "" + "" + ""; + innerHtml += "" + "" + ""; + innerHtml += ""; + + $P.$findn("tbodyFileList").append(innerHtml); + }); + } + }); + } + + // 첨부파일 등록 + $P.fnAddFiles = (obj) => { + let tableFileList = $P.findn("fileList"); // table element 찾기 + let fileNo = tableFileList.rows.length - 1; // table에 있는 파일 갯수 (첫번째 title은 제외하기 위해서 -1 처리) + let maxFileCnt = 3; // 의견제출에 등록 할 수 있는 첨부 파일 최대 개수 + let attFileCnt = obj.files.length; // 선택한 파일의 개수 + let fileArr = new Array(); // 파일 배열 + + fileArr = $P.fileListArr; + + // 등록할 파일 개수 확인 + if (attFileCnt + fileNo > maxFileCnt) { + dialog.alert({ + content : "첨부파일은 최대 " + maxFileCnt + "개 까지 첨부 가능합니다." + , init: () => { AppSupport.setDialogZindex(); } + , onOK: () => { } + }); + return; + } + + // 첨부파일을 table에 추가. + for (let iLoop = 0; iLoop < attFileCnt; iLoop++) { + let selectedFile = obj.files[iLoop]; + let innerHtml = ""; + + fileNo += 1; + + innerHtml += ""; + innerHtml += "" + fileNo + ""; + innerHtml += "" + ""; + innerHtml += "" + selectedFile.name + ""; + innerHtml += "" + selectedFile.size + " byte"; + innerHtml += "" + ""; + innerHtml += "" + "" + ""; + innerHtml += ""; + + $P.$findn("tbodyFileList").append(innerHtml); + + fileArr.push(obj.files[iLoop]); + } + } + + // 첨부파일 삭제 아이콘 클릭 이벤트 + $P.fnFileRemove = (obj) => { + dialog.alert({ + content: "선택한 파일을 삭제하시겠습니까?" + , onOK: () => { + let tr = $(obj).parent().parent(); // 클릭한 버튼이 속한 tr 요소 + let td = tr.children(); + let fileId = td.eq(1).text(); // 삭제할 파일번호 + let fileName = td.eq(2).text(); // 삭제할 파일이름 + + if (fileId != null && fileId != "") { + ajax.post({ + url: "file/remove.do" + , data: { fileIDs: fileId } + , success: (resp) => { } + }); + } else { + let filtered = $P.fileListArr.filter((value, index, arr) => { + return (value.name != fileName); + }); + + $P.fileListArr = filtered; + } + + $(obj).closest("tr").remove(); // table 에서 제거 + } + }); + } + + // 첨부파일 다운로드 아이콘 클릭 이벤트 + $P.fnFileDownload = (fileID) => { + top.location.href = "/file/download.do?fileID=" + fileID; } /************************************************************************** @@ -134,6 +305,11 @@ // URL 설정 $P.setUrl("${prefixUrl}"); + + // 기본 데이터 설정 + AppSupport.initDatepicker($P.findn("frmEdit")); // 달력 초기화 + $P.$findn("ctrtBgngYmd").datepicker("setDate", TODAY()); // 계약 시작 일자 + $P.$findn("ctrtEndYmd").datepicker("setDate", TODAY()); // 계약 종료 일자 } // 우편번호 검색 @@ -154,7 +330,7 @@ }); } - // 임대기업 등록 버튼 클릭 이벤트 + // 임차인 등록 $P.fnSave = () => { // validate 확인 if (!AppSupport.customValidate($P.$findn("frmEdit").find("input,select,textarea"))) return; @@ -181,10 +357,36 @@ **************************************************************************/ // 이벤트 $P.setEvent = () => { + // form-date 항목에서 키보드로 입력시 날짜, 시간 포맷팅 적용 + $P.$findn("frmEdit").find(".form-date").each(function() { + $(this).on("input",function() { + let value = this.value.replaceAll("-", ""); + + if (value.length > 7) { + this.value = value.substring(0,4) + "-" + value.substring(4,6) + "-" + value.substring(6); + } else if(value.length > 5) { + this.value = value.substring(0,4) + "-" + value.substring(4); + } + }); + }); + $P.$findn("frmEdit").find(".form-time").each(function() { + $(this).on("input",function() { + let value = this.value.replaceAll(":", ""); + + if (value.length > 5) { + this.value = value.substring(0,2) + ":" + value.substring(2,4) + ":" + value.substring(4); + } else if (value.length > 3) { + this.value = value.substring(0,2) + ":" + value.substring(2); + } + + }); + }); + // 기본 버튼 이벤트 - $P.$findn("btnZipCode").on("click", () => { $P.fnZipCode() }); // 우편번호 검색 + $P.$findn("btnZipCode").on("click", () => { $P.fnZipCode() }); // 우편번호 검색 버튼 클릭 이벤트 // 버튼 이벤트 - $P.$findn("btnSave").on("click", () => { $P.fnSave() }); // 저장 + $P.$findn("btnAddFile").on("click", () => $P.$findn("uploadFiles").trigger("click")); // 파일 등록 버튼 클릭 이벤트 + $P.$findn("btnSave").on("click", () => { $P.fnSave() }); // 저장 버튼 클릭 이벤트 } /************************************************************************** diff --git a/src/main/webapp/resources/js/fims/rent/rent02030.js b/src/main/webapp/resources/js/fims/rent/rent02030.js index df16259d..fd64dea3 100644 --- a/src/main/webapp/resources/js/fims/rent/rent02030.js +++ b/src/main/webapp/resources/js/fims/rent/rent02030.js @@ -15,7 +15,9 @@ function newRent02030Control(pageName, doctx="[data-doctx='rent02030']") { , remove: "/remove.do" } , formats: { - REG_DT: datetimeFormat + CTRT_BGNG_DT: datetimeFormat + , CTRT_END_DT: datetimeFormat + , REG_DT: datetimeFormat } }); diff --git a/src/main/webapp/resources/js/fims/rent/rent02040.js b/src/main/webapp/resources/js/fims/rent/rent02040.js index e97a5ded..36f615d5 100644 --- a/src/main/webapp/resources/js/fims/rent/rent02040.js +++ b/src/main/webapp/resources/js/fims/rent/rent02040.js @@ -21,6 +21,11 @@ function newRent02040Control(pageName, doctx="[data-doctx='rent02040']") { // 화면에 Dataset 셋팅 let formFields = new FimsFormFields(ctrl.selector("[name='frmEdit']")); formFields.set(ctrl, item); + + let key = item.data.HIRER_ID; + if (key != null) { + pageObject[pageName].fnSearchFileList(key); + } }; // 저장 callback @@ -50,10 +55,22 @@ function newRent02040Control(pageName, doctx="[data-doctx='rent02040']") { if (!params) return; let create = (params.callPurpose == "create"); + let formData = new FormData(); + + // pageObject[pageName] 첨부파일 배열에 있는 내용을 등록 + for (let iLoop = 0; iLoop < pageObject[pageName].fileListArr.length; iLoop++) { + formData.append("uploadFiles" , pageObject[pageName].fileListArr[iLoop]); + } + for (let key in params) { + let value = params[key]; + formData.append(key, value); + } ajax.post({ url: !create ? ctrl.urls.update : ctrl.urls.create - , data: params || {} + , data: formData + , contentType: false + , processData: false , success: (resp) => { ctrl.onSave(params, resp); } }); }