diff --git a/WebContent/WEB-INF/view/quality/customerCsActionFormPopUp.jsp b/WebContent/WEB-INF/view/quality/customerCsActionFormPopUp.jsp index 7a41d37..245c4cf 100644 --- a/WebContent/WEB-INF/view/quality/customerCsActionFormPopUp.jsp +++ b/WebContent/WEB-INF/view/quality/customerCsActionFormPopUp.jsp @@ -62,7 +62,7 @@ $(document).ready(function(){ // 뷰 모드일 경우 입력 필드 비활성화 if(isViewMode){ $("#form1 input, #form1 textarea, #form1 select").prop("disabled", true); - $("#btnSave, #btnUpload, #file1").hide(); + $("#btnSave, #btnUpload, #btnImgUpload, #file1, #imgFile1").hide(); // 파일 삭제 버튼 숨기기 $(".delete_btn").parent().hide(); } else { @@ -70,6 +70,7 @@ $(document).ready(function(){ fnc_setFileDropZone("srDropZone", "<%=objId%>", "CUSTOMER_CS_ACTION", "조치첨부", "srAreaDraw", false, null, null, null, ""); } srAreaDraw(); + imgAreaDraw(); // 파일 업로드 버튼 $("#btnUpload").click(function(){ @@ -82,6 +83,26 @@ $(document).ready(function(){ } }); + // 이미지 업로드 버튼 + $("#btnImgUpload").click(function(){ + var files = $("#imgFile1")[0].files; + if(files.length > 0){ + // 이미지 파일 확장자 검사 + var allowedExts = ['jpg', 'jpeg', 'png', 'gif', 'bmp', 'webp']; + for(var i = 0; i < files.length; i++){ + var ext = files[i].name.split('.').pop().toLowerCase(); + if(allowedExts.indexOf(ext) < 0){ + Swal.fire("이미지 파일만 업로드 가능합니다. (jpg, jpeg, png, gif, bmp, webp)"); + return; + } + } + fnc_fileMultiUpload(files, null, "<%=objId%>", "CUSTOMER_CS_IMAGE", "조치이미지", null, "imgAreaDraw", null, ""); + $("#imgFile1").val(""); + }else{ + Swal.fire("선택된 파일이 없습니다."); + } + }); + // 저장 $("#btnSave").click(function(){ fn_save(); @@ -98,6 +119,72 @@ function srAreaDraw(){ fn_fileCallback("sr", "CUSTOMER_CS_ACTION"); } +// 이미지 목록 새로고침 +function imgAreaDraw(){ + fn_imageCallback("img", "CUSTOMER_CS_IMAGE"); +} + +// 이미지 목록 조회 +function fn_imageCallback(areaId, fileType){ + $.ajax({ + url: "/common/getFileList.do", + type: "POST", + data: {"targetObjId": "<%=objId%>", "docType": fileType}, + dataType: "json", + async: false, + success: function(data){ + $("#" + areaId + "FileArea").empty(); + if(data.length > 0){ + $.each(data, function(i){ + var appendHtml = '
'; + appendHtml += ''; + if(!isViewMode){ + appendHtml += '×'; + } + appendHtml += '
' + data[i].REAL_FILE_NAME + '
'; + appendHtml += '
'; + $("#" + areaId + "FileArea").append(appendHtml); + }); + }else{ + $("#" + areaId + "FileArea").append('
등록된 이미지가 없습니다.
'); + } + } + }); +} + +// 이미지 원본 보기 +function fn_viewImage(imgSrc){ + var img = new Image(); + img.onload = function(){ + var width = Math.min(this.width, 1200); + var height = Math.min(this.height, 800); + window.open(imgSrc, "_blank", "width=" + width + ",height=" + height + ",scrollbars=yes,resizable=yes"); + }; + img.src = imgSrc; +} + +// 이미지 삭제 +function fn_imageDelete(fileObjId, event){ + if(event){ + event.preventDefault(); + event.stopPropagation(); + } + if(isViewMode) return; + + if(confirm("이미지를 삭제하시겠습니까?")){ + $.ajax({ + url: "/common/deleteFileInfo.do", + type: "POST", + data: {"objId": fileObjId}, + dataType: "json", + async: false, + success: function(data){ + imgAreaDraw(); + } + }); + } +} + // 첨부파일 목록 조회 function fn_fileCallback(areaId, fileType){ $.ajax({ @@ -254,6 +341,8 @@ function fn_save(){ ${info.customer_name} + + ${info.product_type_name} diff --git a/src/com/pms/controller/QualityController.java b/src/com/pms/controller/QualityController.java index 1f5e863..9de9609 100644 --- a/src/com/pms/controller/QualityController.java +++ b/src/com/pms/controller/QualityController.java @@ -656,6 +656,8 @@ public class QualityController { try { // 고객사 code_map.put("customer_cd", commonService.bizMakeOptionList("", "", "common.getClientMngSupplySelect")); + // 제품구분 + code_map.put("product_type", commonService.bizMakeOptionList("0000001", (String)paramMap.get("search_product_type"), "common.getCodeselect")); request.setAttribute("code_map", code_map); } catch(Exception e) { e.printStackTrace(); @@ -689,6 +691,8 @@ public class QualityController { } // 고객사 code_map.put("customer_cd", commonService.bizMakeOptionList("", CommonUtils.nullToEmpty((String)info.get("customer_objid")), "common.getClientMngSupplySelect")); + // 제품구분 + code_map.put("product_cd", commonService.bizMakeOptionList("0000001", CommonUtils.nullToEmpty((String)info.get("PRODUCT_TYPE")), "common.getCodeselect")); } catch(Exception e) { e.printStackTrace(); } @@ -711,8 +715,19 @@ public class QualityController { */ @RequestMapping("/quality/customerCsActionFormPopUp.do") public String customerCsActionFormPopUp(HttpServletRequest request, @RequestParam Map paramMap){ - Map info = service.getCustomerCsInfo(paramMap); + Map code_map = new HashMap(); + Map info = new HashMap(); + + try { + info = service.getCustomerCsInfo(paramMap); + // 조치구분 + code_map.put("action_type", commonService.bizMakeOptionList("0001835", CommonUtils.nullToEmpty((String)info.get("action_type")), "common.getCodeselect")); + } catch(Exception e) { + e.printStackTrace(); + } + request.setAttribute("info", info); + request.setAttribute("code_map", code_map); return "/quality/customerCsActionFormPopUp"; } diff --git a/src/com/pms/mapper/quality.xml b/src/com/pms/mapper/quality.xml index 34096d3..d0f5635 100644 --- a/src/com/pms/mapper/quality.xml +++ b/src/com/pms/mapper/quality.xml @@ -1393,7 +1393,8 @@ , CCS.QTY , CCS.CUSTOMER_OBJID , (SELECT CLIENT_NM FROM CLIENT_MNG WHERE OBJID::VARCHAR = CCS.CUSTOMER_OBJID) AS CUSTOMER_NAME - , CCS.MODEL_NAME + , CCS.MODEL_NAME AS PRODUCT_TYPE + , CODE_NAME(CCS.MODEL_NAME) AS PRODUCT_TYPE_NAME , CCS.PRODUCT_NAME , CCS.PART_NO , CCS.PRODUCT_NO @@ -1403,8 +1404,11 @@ , CCS.SERIAL_NO , CCS.MANUFACTURER , CCS.COMPLAINT_CONTENT + , CCS.ACTION_TYPE + , CODE_NAME(CCS.ACTION_TYPE) AS ACTION_TYPE_NAME , CCS.ACTION_CONTENT , CCS.BLAME_DECISION + , CASE CCS.BLAME_DECISION WHEN 'R' THEN 'RPS' WHEN 'C' THEN '고객사' WHEN 'O' THEN '외주업체' ELSE CCS.BLAME_DECISION END AS BLAME_DECISION_NAME , CCS.STATUS , CCS.REMARK , CCS.ACTION_DATE @@ -1423,8 +1427,8 @@ AND CCS.CUSTOMER_OBJID = #{search_customer_objid} - - AND UPPER(CCS.MODEL_NAME) LIKE UPPER('%' || #{search_model_name} || '%') + + AND CCS.MODEL_NAME = #{search_product_type} AND UPPER(CCS.PRODUCT_NO) LIKE UPPER('%' || #{search_product_no} || '%') @@ -1473,7 +1477,8 @@ , CCS.QTY , CCS.CUSTOMER_OBJID , (SELECT CLIENT_NM FROM CLIENT_MNG WHERE OBJID::VARCHAR = CCS.CUSTOMER_OBJID) AS CUSTOMER_NAME - , CCS.MODEL_NAME + , CCS.MODEL_NAME AS PRODUCT_TYPE + , CODE_NAME(CCS.MODEL_NAME) AS PRODUCT_TYPE_NAME , CCS.PRODUCT_NAME , CCS.PART_NO , CCS.PRODUCT_NO @@ -1483,8 +1488,11 @@ , CCS.SERIAL_NO , CCS.MANUFACTURER , CCS.COMPLAINT_CONTENT + , CCS.ACTION_TYPE + , CODE_NAME(CCS.ACTION_TYPE) AS ACTION_TYPE_NAME , CCS.ACTION_CONTENT , CCS.BLAME_DECISION + , CASE CCS.BLAME_DECISION WHEN 'R' THEN 'RPS' WHEN 'C' THEN '고객사' WHEN 'O' THEN '외주업체' ELSE CCS.BLAME_DECISION END AS BLAME_DECISION_NAME , CCS.STATUS , CCS.REMARK , CCS.ACTION_DATE @@ -1579,6 +1587,7 @@ , STATUS = #{STATUS} , REMARK = #{REMARK} , MOD_DATE = NOW() + , ACTION_TYPE = #{ACTION_TYPE} WHERE OBJID = #{OBJID}