From b719d20ca2391dfdcecfcc8067a5ac505ef956e2 Mon Sep 17 00:00:00 2001 From: hjjeong Date: Tue, 4 Nov 2025 13:35:39 +0900 Subject: [PATCH] =?UTF-8?q?e-bom,=20=EC=83=81=ED=83=9C=EB=B3=80=EA=B2=BD?= =?UTF-8?q?=20=EB=93=B1=20=EA=B2=BD=EA=B3=A0=20=ED=91=9C=EC=8B=9C,=20?= =?UTF-8?q?=EC=83=81=ED=83=9C=EB=B3=80=EA=B2=BD=20=EA=B6=8C=ED=95=9C=20?= =?UTF-8?q?=EC=A0=81=EC=9A=A9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../WEB-INF/view/partMng/structureList.jsp | 112 +++++++++++--- .../view/partMng/structurePopupCenter.jsp | 141 +++++++++++++++--- src/com/pms/mapper/common.xml | 8 + 3 files changed, 225 insertions(+), 36 deletions(-) diff --git a/WebContent/WEB-INF/view/partMng/structureList.jsp b/WebContent/WEB-INF/view/partMng/structureList.jsp index bf72982..1f136a1 100644 --- a/WebContent/WEB-INF/view/partMng/structureList.jsp +++ b/WebContent/WEB-INF/view/partMng/structureList.jsp @@ -2,7 +2,27 @@ <%@ page import="com.pms.common.utils.*"%> <%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%> <%@ page import="java.util.*" %> -<%@include file= "/init.jsp" %> +<%@include file= "/init.jsp" %> +<% +// 권한 체크: AUTHORITY_MASTER의 OBJID가 41000668인 그룹에 속한 사용자인지 확인 +boolean hasStatusChangeAuth = false; +try { + org.apache.ibatis.session.SqlSession sqlSession = com.pms.common.SqlMapConfig.getInstance().getSqlSession(); + java.util.Map authParam = new java.util.HashMap(); + authParam.put("userId", connectUserId); + authParam.put("masterObjid", "41000668"); + + Integer authCount = (Integer)sqlSession.selectOne("common.checkUserAuthority", authParam); + hasStatusChangeAuth = (authCount != null && authCount > 0); + + sqlSession.close(); +} catch(Exception e) { + e.printStackTrace(); +} +%> + @@ -165,8 +185,8 @@ var columns = [ {headerHozAlign : 'center', hozAlign : 'center', width : '150', title : 'E-BOM', field : 'BOM_CNT', formatter: fnc_subInfoValueFormatter, cellClick:function(e, cell){ - var objId = fnc_checkNull(cell.getData().OBJID); - //var bomReportObjId = fnc_checkNull(cell.getData().BOM_REPORMECHANICAL_TYPET_OBJID); + var objId = fnc_checkNull(cell.getData().OBJID); + // 바로 팝업 열기 (팝업창 내부에서 경고 처리) fn_openSetStructure(objId); } }, @@ -498,6 +518,16 @@ function fn_openChangeDesignNote(objId){ * 상태변경 팝업 */ function fn_openStatusChange() { + // 권한 체크 + if(!hasStatusChangeAuth) { + Swal.fire({ + title: '권한 없음', + text: '상태변경 권한이 없습니다.', + icon: 'error' + }); + return false; + } + var selectedStructure = _tabulGrid.getSelectedData(); if(selectedStructure.length == 0){ @@ -512,8 +542,33 @@ function fn_openStatusChange() { var selectedData = selectedStructure[0]; var objId = fnc_checkNull(selectedData.OBJID); + var partNo = fnc_checkNull(selectedData.PART_NO); + var partName = fnc_checkNull(selectedData.PART_NAME); + var currentStatus = fnc_checkNull(selectedData.STATUS); - window.open("/partMng/structureStatusChangePopup.do?objId=" + objId, "structureStatusChangePopup", "width=500, height=300, resizable=no"); + // 현재 상태 표시용 텍스트 (Y/N만 존재) + var statusText = (currentStatus === 'Y') ? 'Y' : 'N'; + + // 상태변경 확인 경고 + Swal.fire({ + title: 'E-BOM 상태 변경', + html: 'E-BOM의 상태변경을 진행하시겠습니까?

' + + '품번: ' + partNo + '
' + + '품명: ' + partName + '
' + + '현재 상태: ' + statusText + '

' + + '상태를 변경하시겠습니까?', + icon: 'warning', + showCancelButton: true, + confirmButtonColor: '#3085d6', + cancelButtonColor: '#d33', + confirmButtonText: '상태변경', + cancelButtonText: '취소', + reverseButtons: false + }).then(result => { + if (result.isConfirmed) { + window.open("/partMng/structureStatusChangePopup.do?objId=" + objId, "structureStatusChangePopup", "width=500, height=300, resizable=no"); + } + }); } function saveexcelpop() { @@ -552,21 +607,40 @@ function saveexcelpop() { BOM_VERSION = fnc_checkNull(selectedStructure[i].REVISION); } - // hiddenForm을 사용하여 POST 방식으로 팝업 열기 (한글 인코딩 문제 해결) - var hiddenForm = document.hiddenForm; - var url = "/partMng/openBomReportExcelImportPopUp.do"; - var target = "openBomReportExcelImportPopUp"; - - hiddenForm.PRODUCT_CD.value = BOM_PRODUCT_CD; - hiddenForm.BOM_PART_NAME.value = BOM_PART_NAME; - hiddenForm.BOM_PART_NO.value = BOM_PART_NO; - hiddenForm.BOM_REPORT_OBJID.value = BOM_REPORT_OBJID; - hiddenForm.BOM_VERSION.value = BOM_VERSION; - - window.open('', target, 'width=1920, height=860, menubars=no, scrollbars=yes, resizable=yes'); - hiddenForm.action = url; - hiddenForm.target = target; - hiddenForm.submit(); + // CSV 업로드 확인 경고 + Swal.fire({ + title: 'E-BOM CSV 업로드', + html: 'CSV 파일을 통해 E-BOM 데이터를 새로 등록합니다.

' + + '품번: ' + BOM_PART_NO + '
' + + '품명: ' + BOM_PART_NAME + '
' + + '버전: ' + BOM_VERSION + '

' + + '계속하시겠습니까?', + icon: 'question', + showCancelButton: true, + confirmButtonColor: '#3085d6', + cancelButtonColor: '#d33', + confirmButtonText: '계속', + cancelButtonText: '취소', + reverseButtons: false + }).then(result => { + if (result.isConfirmed) { + // hiddenForm을 사용하여 POST 방식으로 팝업 열기 (한글 인코딩 문제 해결) + var hiddenForm = document.hiddenForm; + var url = "/partMng/openBomReportExcelImportPopUp.do"; + var target = "openBomReportExcelImportPopUp"; + + hiddenForm.PRODUCT_CD.value = BOM_PRODUCT_CD; + hiddenForm.BOM_PART_NAME.value = BOM_PART_NAME; + hiddenForm.BOM_PART_NO.value = BOM_PART_NO; + hiddenForm.BOM_REPORT_OBJID.value = BOM_REPORT_OBJID; + hiddenForm.BOM_VERSION.value = BOM_VERSION; + + window.open('', target, 'width=1920, height=860, menubars=no, scrollbars=yes, resizable=yes'); + hiddenForm.action = url; + hiddenForm.target = target; + hiddenForm.submit(); + } + }); } }else{ if($("#customer_cd").val()==""){ diff --git a/WebContent/WEB-INF/view/partMng/structurePopupCenter.jsp b/WebContent/WEB-INF/view/partMng/structurePopupCenter.jsp index def2380..4c5934f 100644 --- a/WebContent/WEB-INF/view/partMng/structurePopupCenter.jsp +++ b/WebContent/WEB-INF/view/partMng/structurePopupCenter.jsp @@ -6,8 +6,34 @@ -<%=Constants.SYSTEM_NAME%> +<%=Constants.SYSTEM_NAME%> +