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}