From af02560097e9a5ff3dbd7cff2bed7e8a29123ada Mon Sep 17 00:00:00 2001 From: leeheejin Date: Mon, 17 Nov 2025 18:44:44 +0900 Subject: [PATCH] =?UTF-8?q?m-bom=20=EC=A7=84=ED=96=89=EC=A4=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../partMng/structureBomCopyFormPopup.jsp | 27 +++++++-- .../productionplanning/mBomHeaderPopup.jsp | 8 +++ .../view/productionplanning/mBomMgmtList.jsp | 55 +++++++++++++------ src/com/pms/controller/PartMngController.java | 5 ++ 4 files changed, 75 insertions(+), 20 deletions(-) diff --git a/WebContent/WEB-INF/view/partMng/structureBomCopyFormPopup.jsp b/WebContent/WEB-INF/view/partMng/structureBomCopyFormPopup.jsp index 7438365..6fb8dc7 100644 --- a/WebContent/WEB-INF/view/partMng/structureBomCopyFormPopup.jsp +++ b/WebContent/WEB-INF/view/partMng/structureBomCopyFormPopup.jsp @@ -134,12 +134,21 @@ var selectedBomType = null; // 'EBOM' 또는 'MBOM' var bomGridData = []; // BOM 그리드 데이터 $(function(){ - // 페이지 로드 시 프로젝트 정보가 있으면 품번/품명 자동 입력 + // 페이지 로드 시 URL 파라미터 또는 프로젝트 정보에서 품번/품명 자동 입력 + var urlPartNo = "${param.partNo}"; + var urlPartName = "${param.partName}"; + + if(urlPartNo && urlPartNo !== "") { + console.log("URL 파라미터에서 품번/품명 설정 중..."); + $("#COPY_PART_NO").val(decodeURIComponent(urlPartNo)); + $("#COPY_PART_NAME").val(decodeURIComponent(urlPartName)); + } + else { console.log("projectInfo가 있습니다. 품번/품명 설정 중..."); $("#COPY_PART_NO").val("${projectInfo.PART_NO}"); $("#COPY_PART_NAME").val("${projectInfo.PART_NAME}"); - // E-BOM 품번은 사용자가 직접 입력하도록 비워둠 (M-BOM 품번과 다를 수 있음) + } // 담기 버튼 - 선택한 BOM을 복사 대상으로 설정 @@ -526,9 +535,19 @@ function fn_saveBomCopy() { text: 'M-BOM이 성공적으로 생성되었습니다.', icon: 'success' }).then(() => { - // 부모 창(M-BOM 관리) 새로고침하여 아이콘 업데이트 + // 부모 창(M-BOM 관리)의 검색 함수만 호출하여 그리드 업데이트 if(window.opener && !window.opener.closed) { - window.opener.location.reload(); + // 부모 창의 검색 조건 유지하면서 그리드만 새로고침 + if(typeof window.opener.fn_search === 'function') { + window.opener.fn_search(); + } + // M-BOM 품번과 저장일을 부모 창 검색 조건에 설정 + if(response.mbomPartNo) { + window.opener.$("#search_mbom_part_no").val(response.mbomPartNo); + } + if(response.saveDate) { + window.opener.$("#search_save_date").val(response.saveDate); + } } window.close(); }); diff --git a/WebContent/WEB-INF/view/productionplanning/mBomHeaderPopup.jsp b/WebContent/WEB-INF/view/productionplanning/mBomHeaderPopup.jsp index 2f60269..ad23c1d 100644 --- a/WebContent/WEB-INF/view/productionplanning/mBomHeaderPopup.jsp +++ b/WebContent/WEB-INF/view/productionplanning/mBomHeaderPopup.jsp @@ -50,6 +50,14 @@ $(function(){ $('.select2').select2(); + // 페이지 로드 시 프로젝트 정보로 검색 필드 자동 입력 + + $("#search_part_no").val("${info.PART_NO}"); + $("#search_part_name").val("${info.PART_NAME}"); + $("#search_mbom_part_no").val("${info.PART_NO}"); // M-BOM 품번은 품번과 동일 + $("#search_save_date").val("${info.MBOM_REGDATE}"); + + //Part 연결 $("#moveLeft").click(function(){ // Tabulator에서 선택된 오른쪽 행 데이터 가져오기 diff --git a/WebContent/WEB-INF/view/productionplanning/mBomMgmtList.jsp b/WebContent/WEB-INF/view/productionplanning/mBomMgmtList.jsp index a043b69..14e4f64 100644 --- a/WebContent/WEB-INF/view/productionplanning/mBomMgmtList.jsp +++ b/WebContent/WEB-INF/view/productionplanning/mBomMgmtList.jsp @@ -211,6 +211,12 @@ var columns = [ // 파란색(저장된 M-BOM)일 때만 팝업 열기 if(mbomStatus !== '' && mbomStatus !== '0') { + // 검색 조건에 해당 행의 데이터 자동 입력 + $("#search_part_no").val(fnc_checkNull(rowData.PART_NO)); + $("#search_part_name").val(fnc_checkNull(rowData.PART_NAME)); + $("#search_mbom_part_no").val(fnc_checkNull(rowData.PART_NO)); // M-BOM 품번은 품번과 동일 + $("#search_save_date").val(fnc_checkNull(rowData.MBOM_REGDATE)); + fn_openMBomFormPopup(objid); } else { Swal.fire({ @@ -355,10 +361,20 @@ function fn_openBomCopyPopup() { // BOM 복사 팝업 창 열기 function fn_openBomCopyPopupWindow(objId) { - var popup_width = 1800; - var popup_height = 900; - var url = "/partMng/structureBomCopyFormPopup.do?objId=" + objId; - fn_centerPopup(popup_width, popup_height, url, 'bomCopyPopup'); + // 선택된 행의 데이터 가져오기 + var selectedRow = _tabulGrid.searchRows("OBJID", "=", objId); + if(selectedRow.length > 0) { + var rowData = selectedRow[0].getData(); + var partNo = encodeURIComponent(fnc_checkNull(rowData.PART_NO)); + var partName = encodeURIComponent(fnc_checkNull(rowData.PART_NAME)); + + var popup_width = 1800; + var popup_height = 900; + var url = "/partMng/structureBomCopyFormPopup.do?objId=" + objId + "&partNo=" + partNo + "&partName=" + partName; + fn_centerPopup(popup_width, popup_height, url, 'bomCopyPopup'); + } else { + Swal.fire('선택된 데이터를 찾을 수 없습니다.'); + } } @@ -376,18 +392,25 @@ function fn_openBomCopyPopupWindow(objId) { - -
- - - - - - - - -
-
+ +
+ + + + + + + + + + + + + + + +
+
<%@include file= "/WEB-INF/view/common/common_gridArea.jsp" %> diff --git a/src/com/pms/controller/PartMngController.java b/src/com/pms/controller/PartMngController.java index cfb469b..6fdd43c 100644 --- a/src/com/pms/controller/PartMngController.java +++ b/src/com/pms/controller/PartMngController.java @@ -982,6 +982,11 @@ public class PartMngController { resultMap.put("result", "success"); resultMap.put("message", "M-BOM이 성공적으로 생성되었습니다."); + // M-BOM 품번과 저장일 추가 (부모 창 검색 조건에 사용) + resultMap.put("mbomPartNo", targetPartNo); + // 현재 날짜를 YYYY-MM-DD 형식으로 반환 + java.text.SimpleDateFormat sdf = new java.text.SimpleDateFormat("yyyy-MM-dd"); + resultMap.put("saveDate", sdf.format(new java.util.Date())); } finally { if(sqlSession != null) { sqlSession.close();