diff --git a/WebContent/WEB-INF/view/partMng/partMngList.jsp b/WebContent/WEB-INF/view/partMng/partMngList.jsp index 44fe4ba..8eb8a42 100644 --- a/WebContent/WEB-INF/view/partMng/partMngList.jsp +++ b/WebContent/WEB-INF/view/partMng/partMngList.jsp @@ -149,7 +149,7 @@ String connector = person.getUserId(); }, */ //{headerHozAlign : 'center', hozAlign : 'left', width : '125', title : '모품번', field : 'PARENT_PART_INFO' }, - {headerHozAlign : 'center', hozAlign : 'left', width : '200', title : '품번', field : 'PART_NO', + {headerHozAlign : 'center', hozAlign : 'left', width : '250', title : '품번', field : 'PART_NO', formatter:fnc_createGridAnchorTag, cellClick:function(e, cell){ var objid = fnc_checkNull(cell.getData().OBJID); @@ -185,11 +185,11 @@ String connector = person.getUserId(); fnc_fileDetailPopup(objid, docType, docTypeName); } }, - {headerHozAlign : 'center', hozAlign : 'center', width : '100', title : '재료', field : 'MATERIAL' }, - {headerHozAlign : 'center', hozAlign : 'center', width : '100', title : '열처리경도', field : 'HEAT_TREATMENT_HARDNESS' }, - {headerHozAlign : 'center', hozAlign : 'center', width : '100', title : '열처리방법', field : 'HEAT_TREATMENT_METHOD' }, - {headerHozAlign : 'center', hozAlign : 'center', width : '100', title : '표면처리', field : 'SURFACE_TREATMENT' }, - {headerHozAlign : 'center', hozAlign : 'center', width : '150', title : '공급업체', field : 'MAKER' }, + {headerHozAlign : 'center', hozAlign : 'center', width : '120', title : '재료', field : 'MATERIAL' }, + {headerHozAlign : 'center', hozAlign : 'center', width : '120', title : '열처리경도', field : 'HEAT_TREATMENT_HARDNESS' }, + {headerHozAlign : 'center', hozAlign : 'center', width : '120', title : '열처리방법', field : 'HEAT_TREATMENT_METHOD' }, + {headerHozAlign : 'center', hozAlign : 'center', width : '120', title : '표면처리', field : 'SURFACE_TREATMENT' }, + {headerHozAlign : 'center', hozAlign : 'center', width : '150', title : '메이커', field : 'MAKER' }, {headerHozAlign : 'center', hozAlign : 'center', width : '100', title : '범주 이름', field : 'PART_TYPE_TITLE' }, // {headerHozAlign : 'center', hozAlign : 'center', width : '90', title : '재질', field : 'MATERIAL' }, @@ -198,11 +198,11 @@ String connector = person.getUserId(); // {headerHozAlign : 'center', hozAlign : 'center', width : '80', title : 'MAKER', field : 'MAKER' }, // {headerHozAlign : 'center', hozAlign : 'center', width : '80', title : '대분류', field : 'MAJOR_CATEGORY' }, // {headerHozAlign : 'center', hozAlign : 'center', width : '80', title : '중분류', field : 'SUB_CATEGORY' }, - {headerHozAlign : 'center', hozAlign : 'center', width : '90', title : 'Revision', field : 'REVISION' }, - {headerHozAlign : 'center', hozAlign : 'center', width : '90', title : 'EO No', field : 'EO_NO' }, - {headerHozAlign : 'center', hozAlign : 'center', width : '80', title : 'EO Date', field : 'EO_DATE' }, + //{headerHozAlign : 'center', hozAlign : 'center', width : '90', title : 'Revision', field : 'REVISION' }, + //{headerHozAlign : 'center', hozAlign : 'center', width : '90', title : 'EO No', field : 'EO_NO' }, + //{headerHozAlign : 'center', hozAlign : 'center', width : '80', title : 'EO Date', field : 'EO_DATE' }, // {headerHozAlign : 'center', hozAlign : 'center', width : '88', title : 'PART구분', field : 'PART_TYPE_TITLE' }, - {headerHozAlign : 'center', hozAlign : 'center', width : '80', title : '비고', field : 'REMARK' } + {headerHozAlign : 'center', hozAlign : 'center', width : '120', title : '비고', field : 'REMARK' } ]; //var grid; diff --git a/WebContent/WEB-INF/view/partMng/partMngTempList.jsp b/WebContent/WEB-INF/view/partMng/partMngTempList.jsp index 960734e..bb031a6 100644 --- a/WebContent/WEB-INF/view/partMng/partMngTempList.jsp +++ b/WebContent/WEB-INF/view/partMng/partMngTempList.jsp @@ -141,7 +141,7 @@ ui-jqgrid tr.jqgrow td { // {headerHozAlign : 'center', hozAlign : 'center', width : '60', title : '순', field : 'RNUM' ,frozen:true}, // {headerHozAlign : 'center', hozAlign : 'left', width : '125', title : '모품번', field : 'PARENT_PART_INFO' ,frozen:true}, - {headerHozAlign : 'center', hozAlign : 'left', width : '200', title : '품번', field : 'PART_NO',frozen:true, + {headerHozAlign : 'center', hozAlign : 'left', width : '250', title : '품번', field : 'PART_NO',frozen:true, formatter:fnc_createGridAnchorTag, cellClick:function(e, cell){ var objid = fnc_checkNull(cell.getData().OBJID); @@ -177,11 +177,11 @@ ui-jqgrid tr.jqgrow td { fn_FileRegist(objid, docType, docTypeName); } }, - {headerHozAlign : 'center', hozAlign : 'center', width : '100', title : '재료', field : 'MATERIAL' }, - {headerHozAlign : 'center', hozAlign : 'center', width : '100', title : '열처리경도', field : 'HEAT_TREATMENT_HARDNESS' }, - {headerHozAlign : 'center', hozAlign : 'center', width : '100', title : '열처리방법', field : 'HEAT_TREATMENT_METHOD' }, - {headerHozAlign : 'center', hozAlign : 'center', width : '100', title : '표면처리', field : 'SURFACE_TREATMENT' }, - {headerHozAlign : 'center', hozAlign : 'center', width : '150', title : '공급업체', field : 'MAKER' }, + {headerHozAlign : 'center', hozAlign : 'center', width : '120', title : '재료', field : 'MATERIAL' }, + {headerHozAlign : 'center', hozAlign : 'center', width : '120', title : '열처리경도', field : 'HEAT_TREATMENT_HARDNESS' }, + {headerHozAlign : 'center', hozAlign : 'center', width : '120', title : '열처리방법', field : 'HEAT_TREATMENT_METHOD' }, + {headerHozAlign : 'center', hozAlign : 'center', width : '120', title : '표면처리', field : 'SURFACE_TREATMENT' }, + {headerHozAlign : 'center', hozAlign : 'center', width : '150', title : '메이커', field : 'MAKER' }, {headerHozAlign : 'center', hozAlign : 'center', width : '100', title : '범주 이름', field : 'PART_TYPE_TITLE' }, // {headerHozAlign : 'center', hozAlign : 'left', width : '190', title : '사양(규격)', field : 'SPEC' }, @@ -189,11 +189,11 @@ ui-jqgrid tr.jqgrow td { // {headerHozAlign : 'center', hozAlign : 'center', width : '90', title : 'MAKER', field : 'MAKER' }, // {headerHozAlign : 'center', hozAlign : 'center', width : '120', title : '대분류', field : 'MAJOR_CATEGORY' }, // {headerHozAlign : 'center', hozAlign : 'center', width : '120', title : '중분류', field : 'SUB_CATEGORY' }, - {headerHozAlign : 'center', hozAlign : 'center', width : '90', title : 'Revision', field : 'REVISION' }, - {headerHozAlign : 'center', hozAlign : 'center', width : '90', title : 'EO No', field : 'EO_NO' }, - {headerHozAlign : 'center', hozAlign : 'center', width : '90', title : 'EO Date', field : 'EO_DATE' }, +// {headerHozAlign : 'center', hozAlign : 'center', width : '90', title : 'Revision', field : 'REVISION' }, +// {headerHozAlign : 'center', hozAlign : 'center', width : '90', title : 'EO No', field : 'EO_NO' }, +// {headerHozAlign : 'center', hozAlign : 'center', width : '90', title : 'EO Date', field : 'EO_DATE' }, // {headerHozAlign : 'center', hozAlign : 'center', width : '90', title : 'PART 구분', field : 'PART_TYPE_TITLE' }, - {headerHozAlign : 'center', hozAlign : 'center', width : '90', title : '비고', field : 'REMARK' } + {headerHozAlign : 'center', hozAlign : 'center', width : '120', title : '비고', field : 'REMARK' } ]; // 중복 요청 방지 플래그 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%> +