diff --git a/WebContent/WEB-INF/view/quality/incomingInspectionList.jsp b/WebContent/WEB-INF/view/quality/incomingInspectionList.jsp index 3bd43ce..c23a3f5 100644 --- a/WebContent/WEB-INF/view/quality/incomingInspectionList.jsp +++ b/WebContent/WEB-INF/view/quality/incomingInspectionList.jsp @@ -105,7 +105,14 @@ var columns = [ {headerHozAlign:'center', hozAlign:'left', minWidth:120, widthGrow:2, title:'품번', field:'PART_NO'}, {headerHozAlign:'center', hozAlign:'left', minWidth:150, widthGrow:3, title:'품명', field:'PART_NAME'}, {headerHozAlign:'center', hozAlign:'left', minWidth:130, widthGrow:2, title:'공급업체', field:'PARTNER_NAME'}, - {headerHozAlign:'center', hozAlign:'center', minWidth:80, widthGrow:1, title:'입고결과', field:'DELIVERY_STATUS'}, + {headerHozAlign:'center', hozAlign:'center', minWidth:80, widthGrow:1, title:'입고결과', field:'DELIVERY_STATUS', + formatter:fnc_createGridAnchorTag, + cellClick:function(e, cell){ + var objId = fnc_checkNull(cell.getData().OBJID); + var DELIVERY_STATUS = fnc_checkNull(cell.getData().DELIVERY_STATUS); + fn_deliveryAcceptanceViewPopUp(objId,DELIVERY_STATUS); + } + }, {headerHozAlign:'center', hozAlign:'center', minWidth:100, widthGrow:1, title:'요청일', field:'REQUEST_DATE'}, {headerHozAlign:'center', hozAlign:'center', minWidth:80, widthGrow:1, title:'요청자', field:'REQUEST_USER_NAME'}, {headerHozAlign:'center', hozAlign:'center', minWidth:100, widthGrow:1, title:'검사여부', field:'INSPECTION_YN'}, @@ -184,6 +191,23 @@ function fn_excelDownload(){ form.submit(); form.action = ""; } + +function fn_deliveryAcceptanceViewPopUp(objId,DELIVERY_STATUS){ + var popup_width = 1560; + var popup_height = 1050; + + var hiddenForm = document.hiddenForm; + var target = "deliveryAcceptancePopUp"; + var url = "/purchaseOrder/deliveryAcceptanceFormPopUp_new.do"; + fn_centerPopup(popup_width, popup_height, "", target); + + hiddenForm.action = url; + hiddenForm.PURCHASE_ORDER_MASTER_OBJID.value = objId; + hiddenForm.DELIVERY_STATUS.value = DELIVERY_STATUS; + hiddenForm.actionType.value = 'view'; // 뷰 전용으로 설정 + hiddenForm.target = target; + hiddenForm.submit(); +} @@ -191,6 +215,7 @@ function fn_excelDownload(){ + diff --git a/WebContent/WEB-INF/view/quality/incomingInspectionProgressList.jsp b/WebContent/WEB-INF/view/quality/incomingInspectionProgressList.jsp index bb29d8f..d1240fb 100644 --- a/WebContent/WEB-INF/view/quality/incomingInspectionProgressList.jsp +++ b/WebContent/WEB-INF/view/quality/incomingInspectionProgressList.jsp @@ -150,6 +150,14 @@ function fn_search(){ value: selectedProjectNos }).appendTo('#form1'); + // 수입검사 진행 리스트는 요청완료 건만 조회 + $('input[name="request_status_filter"]').remove(); + $('').attr({ + type: 'hidden', + name: 'request_status_filter', + value: '요청완료' + }).appendTo('#form1'); + _tabulGrid = fnc_tabul_search(_tabul_layout_fitColumns, _tabulGrid, "/quality/incomingInspectionGridList.do", columns, true); } diff --git a/WebContent/WEB-INF/view/quality/incomingInspectionProgressPopUp.jsp b/WebContent/WEB-INF/view/quality/incomingInspectionProgressPopUp.jsp index 156d044..a825251 100644 --- a/WebContent/WEB-INF/view/quality/incomingInspectionProgressPopUp.jsp +++ b/WebContent/WEB-INF/view/quality/incomingInspectionProgressPopUp.jsp @@ -626,40 +626,68 @@ function fn_openPartDetailPopUp(partObjId) { function fn_openImageFilePopUp(objId) { var popup_width = 650; var popup_height = 550; - var url = "/common/ImageRegistPopup.do?targetObjId=" + objId + "&docType=INSPECTION_DEFECT_IMAGE&docTypeName=검사이미지&callbackFnc=fn_refreshRightGrid"; + var url = "/common/ImageRegistPopup.do?targetObjId=" + objId + "&docType=INSPECTION_DEFECT_IMAGE&docTypeName=검사이미지"; var popup = window.open(url, "imageFilePopUp", "width=" + popup_width + ",height=" + popup_height + ",scrollbars=yes,resizable=yes"); - // 팝업 닫힘 감지하여 우측 그리드 새로고침 - var checkPopup = setInterval(function() { - if(popup.closed) { - clearInterval(checkPopup); - fn_refreshRightGrid(); - } - }, 500); + // 팝업 닫힘 감지하여 해당 행의 파일 카운트만 업데이트 + fn_watchPopupClose(popup, objId, 'IMAGE_FILE_CNT', 'INSPECTION_DEFECT_IMAGE'); } // 첨부파일 팝업 function fn_openAttachFilePopUp(objId) { var popup_width = 800; var popup_height = 300; - var params = "?targetObjId=" + objId + "&docType=INSPECTION_DEFECT_FILE&docTypeName=검사첨부&callbackFnc=fn_refreshRightGrid"; - var url = "/projectConcept/FileRegistPopup.do" + params; + var params = "?targetObjId=" + objId + "&docType=INSPECTION_DEFECT_FILE&docTypeName=검사첨부"; + var url = "/common/FileRegistPopup.do" + params; var popup = window.open(url, "attachFilePopUp", "width=" + popup_width + ",height=" + popup_height + ",scrollbars=yes,resizable=yes"); - // 팝업 닫힘 감지하여 우측 그리드 새로고침 + // 팝업 닫힘 감지하여 해당 행의 파일 카운트만 업데이트 + fn_watchPopupClose(popup, objId, 'ATTACH_FILE_CNT', 'INSPECTION_DEFECT_FILE'); +} + +// 팝업 닫힘 감지 및 파일 카운트 업데이트 +function fn_watchPopupClose(popup, objId, fieldName, docType) { var checkPopup = setInterval(function() { if(popup.closed) { clearInterval(checkPopup); - fn_refreshRightGrid(); + // 파일 카운트 조회 후 해당 행만 업데이트 + fn_updateRightGridFileCnt(objId, fieldName, docType); } }, 500); } -// 우측 그리드 새로고침 (파일 업로드 후 콜백) -function fn_refreshRightGrid() { - if(selectedDetailObjid) { - fn_searchRightGrid(selectedDetailObjid); - } +// 우측 그리드 파일 카운트 업데이트 +function fn_updateRightGridFileCnt(objId, fieldName, docType) { + $.ajax({ + url: "/common/getFileList.do", + type: "POST", + data: { targetObjId: objId, docType: docType }, + dataType: "json", + success: function(data) { + var cnt = data ? data.length : 0; + var rows = rightGrid.getRows(); + rows.forEach(function(row) { + if(row.getData().OBJID === objId) { + var updateData = {}; + updateData[fieldName] = cnt; + row.update(updateData); + } + }); + } + }); +} + +// 공통 fnc_tabulCallbackFnc 오버라이드 (이 페이지에서는 rightGrid 사용) +function fnc_tabulCallbackFnc(objId, docType, columnField, fileCnt) { + var rows = rightGrid.getRows(); + rows.forEach(function(row) { + if(row.getData().OBJID === objId) { + var updateData = {}; + var targetField = (columnField && columnField !== '') ? columnField : 'FILE_CNT'; + updateData[targetField] = fileCnt; + row.update(updateData); + } + }); } // ===================================================== diff --git a/src/com/pms/mapper/quality.xml b/src/com/pms/mapper/quality.xml index 0d109cb..75d1183 100644 --- a/src/com/pms/mapper/quality.xml +++ b/src/com/pms/mapper/quality.xml @@ -711,9 +711,9 @@ ,DEFECT.INSPECTOR_NAME_DISPLAY AS INSPECTOR_NAME /* 검사일: YYYY-MM-DD 외 N건 형태 */ ,DEFECT.INSPECTION_DATE_DISPLAY AS INSPECTION_DATE - /* 검사결과: 하나라도 NG면 NG */ + /* 검사결과: 하나라도 NG면 NG, 검사 대상(스킵 제외) 모두 검사완료면 OK, 일부만 검사면 검사중 */ ,(CASE WHEN DEFECT.NG_COUNT > 0 THEN 'NG' - WHEN DEFECT.DEFECT_TOTAL_COUNT > 0 AND DEFECT.DEFECT_TOTAL_COUNT = DEFECT.INSPECTED_COUNT THEN 'OK' + WHEN DEFECT.INSPECTION_TARGET_COUNT > 0 AND DEFECT.INSPECTION_TARGET_COUNT = DEFECT.INSPECTED_COUNT THEN 'OK' WHEN DEFECT.INSPECTED_COUNT > 0 THEN '검사중' ELSE '' END) AS INSPECTION_RESULT @@ -743,7 +743,7 @@ FROM INCOMING_INSPECTION_DETAIL GROUP BY PURCHASE_ORDER_MASTER_OBJID ) AS IID ON POM.OBJID::VARCHAR = IID.PURCHASE_ORDER_MASTER_OBJID - /* 불량상세 테이블에서 검사일/검사자/검사결과 집계 */ + /* 불량상세 테이블에서 검사일/검사자/검사결과 집계 (스킵 항목 제외) */ LEFT OUTER JOIN ( SELECT IID2.PURCHASE_ORDER_MASTER_OBJID /* 검사자: 여러명이면 "XXX 외 N건" 형태로 표시 */ @@ -762,7 +762,9 @@ THEN TO_CHAR(MIN(IDF.INSPECTION_DATE), 'YYYY-MM-DD') ELSE '' END AS INSPECTION_DATE_DISPLAY - ,COUNT(*) AS DEFECT_TOTAL_COUNT + /* 검사 대상 건수 (스킵 제외, 검사인 항목만) */ + ,COUNT(CASE WHEN IID2.INSPECTION_YN = '검사' THEN 1 END) AS INSPECTION_TARGET_COUNT + /* 검사결과 입력된 건수 */ ,COUNT(CASE WHEN IDF.INSPECTION_RESULT IS NOT NULL AND IDF.INSPECTION_RESULT != '' THEN 1 END) AS INSPECTED_COUNT ,COUNT(CASE WHEN IDF.INSPECTION_RESULT = 'NG' THEN 1 END) AS NG_COUNT FROM INCOMING_INSPECTION_DETAIL IID2 @@ -851,6 +853,11 @@ WHEN IID.INSPECTED_COUNT > 0 THEN '검사중' ELSE '' END) = #{search_inspection_result} + + + AND REQ.DELIVERY_TOTAL_COUNT = REQ.SELECTED_COUNT + AND REQ.SELECTED_COUNT > 0 + ORDER BY POM.REGDATE DESC