From c26a7d60fd70d8f66bbcbf93d5798a3e360f5ae7 Mon Sep 17 00:00:00 2001 From: thkim Date: Fri, 14 Nov 2025 11:59:31 +0900 Subject: [PATCH] =?UTF-8?q?feat:=20=ED=98=84=EC=9E=A5=ED=88=AC=EC=88=98?= =?UTF-8?q?=EC=8B=9C=ED=97=98=20=EC=A4=91=EB=B3=B5=20=EC=B2=B4=ED=81=AC=20?= =?UTF-8?q?=EA=B0=95=ED=99=94?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../geoinfo/main/login/LoginController.java | 2 +- .../main/login/service/LoginMapper.java | 2 +- .../main/login/service/LoginService.java | 2 +- .../input/basic/labInfoFieldPermeability.jsp | 127 +++++++++++++----- src/main/webapp/js/map/main/map.js | 4 +- 5 files changed, 97 insertions(+), 40 deletions(-) diff --git a/src/main/java/geoinfo/main/login/LoginController.java b/src/main/java/geoinfo/main/login/LoginController.java index 3d6ca75a..9dea0e44 100644 --- a/src/main/java/geoinfo/main/login/LoginController.java +++ b/src/main/java/geoinfo/main/login/LoginController.java @@ -1138,7 +1138,7 @@ public class LoginController { url = "home/main_sitemap.jsp"; else url = "index.do?cntyn=0"; - } + } } } } else { diff --git a/src/main/java/geoinfo/main/login/service/LoginMapper.java b/src/main/java/geoinfo/main/login/service/LoginMapper.java index d7a17eb0..03b5c170 100644 --- a/src/main/java/geoinfo/main/login/service/LoginMapper.java +++ b/src/main/java/geoinfo/main/login/service/LoginMapper.java @@ -97,7 +97,7 @@ public interface LoginMapper { EgovMap selectSearchIniUserId(Map params); - public int checkWebMemberIn(Map map) throws Exception; + public int checkWebMemberIn(Map map) throws Exception; String findProjectMasterCompanyNameByUserid(String userId); String findProjectMasterCompanyCodeByUserid(String userId); diff --git a/src/main/java/geoinfo/main/login/service/LoginService.java b/src/main/java/geoinfo/main/login/service/LoginService.java index fc6b33ed..dff6e466 100644 --- a/src/main/java/geoinfo/main/login/service/LoginService.java +++ b/src/main/java/geoinfo/main/login/service/LoginService.java @@ -17,7 +17,7 @@ public interface LoginService { Map selectWebMemberInLoginCount(Map map) throws Exception; void insertWebRequestLog(Map map) throws Exception; void updateWebMemberIn(Map map) throws Exception; - int insertSearchPassLog(Map map)throws Exception; + int insertSearchPassLog(Map map)throws Exception; void pswdResetWebMemberIn(Map map) throws Exception; Map selectSearchId(Map map) throws Exception; Map selectSearchIdByNameAndPhoneAndDupinfoIsNullAndCertificationYnFalse(Map map) throws Exception; diff --git a/src/main/webapp/WEB-INF/views/web/input/basic/labInfoFieldPermeability.jsp b/src/main/webapp/WEB-INF/views/web/input/basic/labInfoFieldPermeability.jsp index dd2a54ec..0be232ba 100644 --- a/src/main/webapp/WEB-INF/views/web/input/basic/labInfoFieldPermeability.jsp +++ b/src/main/webapp/WEB-INF/views/web/input/basic/labInfoFieldPermeability.jsp @@ -12,6 +12,43 @@ var extFile = "<%=fileCmmn.getFileList("IMG")%>"; var extFileList = extFile.split(","); var selectedSeq = ""; +//kendoGrid에서 중복된 행을 빨간색으로 흔드는 함수 +function highlightDuplicateRows(grid, indices) { + var trs = grid.tbody.find("tr"); + for (var i = 0; i < indices.length; i++) { + var rowIndex = indices[i]; + var rowElement = trs[rowIndex]; + + // CSS 클래스 추가 + kendoJQuery(rowElement).addClass("k-row-duplicate-shake"); + } + + // 2초 후 클래스 제거 + setTimeout(function() { + kendoJQuery(".k-row-duplicate-shake").removeClass("k-row-duplicate-shake"); + }, 2000); +} + +//중복 강조를 위한 CSS 추가 +function fn_addHighlightStyles() { + var style = document.createElement('style'); + style.type = 'text/css'; + style.innerHTML = ` + @keyframes shake { + 10%, 90% { transform: translate3d(-1px, 0, 0); } + 20%, 80% { transform: translate3d(2px, 0, 0); } + 30%, 50%, 70% { transform: translate3d(-4px, 0, 0); } + 40%, 60% { transform: translate3d(4px, 0, 0); } + } + .k-row-duplicate-shake { + background-color: #ffcccc !important; + animation: shake 0.5s; + animation-iteration-count: infinite; + } + `; + document.head.appendChild(style); +} + // Grid1 데이터 조회 function selectGrid1() { @@ -298,6 +335,54 @@ function fn_save(rUrl) { return false; } + // ----------------------- [수정됨] kictGrid2 시간(sec) 중복 체크 시작 ----------------------- + var grid2 = kendoJQuery("#kictGrid2").data("kendoGrid"); + var data2 = grid2.dataSource._data; // data2 변수 재사용 + + var seenTimes = {}; + var duplicateIndices = []; + for(var i=0; i 0) { + // 중복된 값을 포함하여 알림 메시지 생성 + var duplicatedValues = ""; + var uniqueDuplicates = new Set(); + for (var i = 0; i < duplicateIndices.length; i++) { + var row = data2[duplicateIndices[i]]; + var value = row.fieldperSubTime; + uniqueDuplicates.add(value); + } + duplicatedValues = Array.from(uniqueDuplicates).join(", "); + + alert("시간(sec) 데이터에 중복이 있습니다: " + duplicatedValues + ". 중복을 확인 후 다시 저장해 주십시오."); + + // 중복된 행을 시각적으로 강조 + highlightDuplicateRows(grid2, duplicateIndices); + return false; // 저장 중단 + } + // ----------------------- [수정됨] kictGrid2 시간(sec) 중복 체크 끝 ----------------------- + // ----------------------- kendoGrid XML 구조저장 시작 ----------------------- var grid1 = kendoJQuery("#kictGrid1").data("kendoGrid"); @@ -331,9 +416,9 @@ function fn_save(rUrl) { ]; if(fn_saveNumberCheckKendo("ROW", dataSource1, grid1, "gridCheck1", 0, rowInfo1, rowInfoItem1) == false)return false; - var grid2 = kendoJQuery("#kictGrid2").data("kendoGrid"); + // var grid2 = kendoJQuery("#kictGrid2").data("kendoGrid"); // 위에서 이미 선언됨 var dataSource2 = grid2.dataSource; - var data2 = dataSource2._data; + // var data2 = dataSource2._data; // 위에서 이미 선언됨 var kendoRowCount2 = dataSource2._view.length; // 가로(행) 갯수 var kendoColCount2 = grid2.columns.length; // 세로(열) 갯수 @@ -386,12 +471,12 @@ function fn_save(rUrl) { document.getElementById("colCount").value = kendoColCount1; document.frmPm.rowDelFileArr.value = rowDelFileArr; document.frmPm.topGridRowDelete.value = topGridRowDelete; - document.frmPm.SEQ.value = selectedSeq; //현재 상위 그리드에서 선택되어있는 SEQ + document.frmPm.SEQ.value = selectedSeq; //현재 상위 그리드에서 선택되어있는 SEQ var _seq = selectedSeq; $('#beforeSEQ').val(""); - // 2019.10.10 이미지 업로드 필수 수정 + // 2019.10.10 이미지 업로드 필수 수정 var fileImg = $("#GRAPH_IMAGE_"+_seq).val(); var fileImg_bk = $("#OLD_GRAPH_IMAGE_"+_seq).val(); if(fileImg_bk === "null" ){ @@ -758,25 +843,16 @@ function fn_grid_refresh(){ - - - -
- - - -
-
  • @@ -786,23 +862,16 @@ function fn_grid_refresh(){ 도움말
- -

기본현장시험 정보

-
-
- - -
@@ -826,6 +895,7 @@ function fn_grid_refresh(){ kendoJQuery(document).ready(function () { selectGrid1(); fn_kendoGrid2(null); // 20201005 ROW 셀렉트시 탭,엔터키 에러 수정 + fn_addHighlightStyles(); // [수정됨] 중복 강조 CSS 함수 호출 }); function onDataBound1(e) { @@ -1177,22 +1247,11 @@ function fn_grid_refresh(){
- - +
- - -
- - -
+
- - - - - - + \ No newline at end of file diff --git a/src/main/webapp/js/map/main/map.js b/src/main/webapp/js/map/main/map.js index 08b4be83..95cc01f9 100644 --- a/src/main/webapp/js/map/main/map.js +++ b/src/main/webapp/js/map/main/map.js @@ -652,8 +652,6 @@ function initApp(param){ "WEB_STEEP_SLOPE", O2MAP_URL, { - isBaseLayer: false, - visibility: false, layers : T_WEB_STEEP_SLOPE, transparent : true, format : "image/png", @@ -661,7 +659,7 @@ function initApp(param){ }, { singleTile : false, isBaseLayer : false, - visibility: getQueryString("masterCompanyCode") === null ? true : true, + visibility: false, transitionEffect: "resize", buffer : 0, removeBackBufferDelay : 0