Files
vexplor/WebContent/WEB-INF/view/part/partFormPopup.jsp
2025-08-21 09:41:46 +09:00

1457 lines
50 KiB
Plaintext

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ page import="com.pms.common.utils.*"%>
<%@ page import="java.util.*" %>
<%@include file= "/init.jsp" %>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title><%=Constants.SYSTEM_NAME%></title>
<c:set var="actionType" value="${param.actionType}" />
<c:set var="objid" value="${partInfoMap.OBJID}" />
<c:set var="status" value="${partInfoMap.STATUS}" />
<script type="text/javascript">
$(document).ready(function(){
fnc_setFileDropZone("shapeDropZone", "${objid}", "${SHAPE}", "파트 형상", "shapeAreaDraw",true,null,null);
fnc_setFileDropZone("cad2DDropZone", "${objid}", "${PART_2D}", "파트 CAD 2D", "cad2DAreaDraw",true,null,null);
fnc_setFileDropZone("cad2DPDFDropZone", "${objid}", "${PART_2D_PDF}", "파트 CAD 2D PDF", "cad2DPDFAreaDraw",true,null,null);
fnc_setFileDropZone("cad3DDropZone", "${objid}", "${PART_3D}", "파트 CAD 3D", "cad3DAreaDraw",false,null,null);
fnc_setFileDropZone("mngItemDropZone", "${objid}", "${MNG_ITEM}", "파트 관리항목", "mngItemAreaDraw",true,null,null);
fnc_setFileDropZone("ecdDropZone", "${objid}", "${ECD}", "파트 ECD", "ecdAreaDraw",true,null,null);
fnc_setFileDropZone("mold2DDropZone", "${objid}", "PART_MOLD_2D", "파트 mold 2D", "mold2DAreaDraw",true,null,null);
fnc_setFileDropZone("mold2DPDFDropZone", "${objid}", "PART_MOLD_2D_PDF", "파트 mold 2D PDF", "mold2DPDFAreaDraw",true,null,null);
fnc_setFileDropZone("mold3DDropZone", "${objid}", "PART_MOLD_3D", "파트 mold 3D", "mold3DAreaDraw",false,null,null);
shapeAreaDraw();
cad2DAreaDraw();
cad2DPDFAreaDraw();
cad3DAreaDraw();
mngItemAreaDraw();
ecdAreaDraw();
mold2DAreaDraw();
mold2DPDFAreaDraw();
mold3DAreaDraw();
convertCad2DAreaDraw();
convertCad3DAreaDraw();
if("regist" == "${actionType}"){
$("#cad3DDropZone").hide();
$("#cad3DAttachFileList").hide();
$("#cad2DDropZone").hide();
$("#cad2DAttachFileList").hide();
$("#cad2DPDFDropZone").hide();
$("#cad2DPDFAttachFileList").hide();
$("#mngItemDropZone").hide();
$("#mngItemAttachFileList").hide();
$("#mold3DDropZone").hide();
$("#mold3DAttachFileList").hide();
$("#mold2DDropZone").hide();
$("#mold2DAttachFileList").hide();
$("#mold2DPDFDropZone").hide();
$("#mold2DPDFAttachFileList").hide();
$("#cadArea").hide();
$("#cad2DPDF").hide();
$("#cad3D").hide();
$("#moldArea").hide();
$("#mold2DPDF").hide();
$("#mold3D").hide();
$("#mngItem").hide();
// $("#convertCad2D").hide();
// $("#convertCad3D").hide();
}
changeMngItemArea("${empty partInfoMap.MNG_ITEM_TYPE_ORG ? '' : partInfoMap.MNG_ITEM_TYPE_ORG}");
changeDrawArea("${empty partInfoMap.DRAWING_TYPE ? '' : partInfoMap.DRAWING_TYPE}");
if("regist" == "${actionType}"){
$("#conversionFile").remove();
}else{
getCarList("${partInfoMap.OEM_OBJID}","${partInfoMap.CAR_OBJID}");
getProductList("${partInfoMap.PRODUCT_GROUP_OBJID}","${partInfoMap.PRODUCT_OBJID}");
}
if("${status}" == "revision"){
revisionFormSetter();
}
//ECO날짜 피커
$(".ecoDate").datepicker({dateFormat : "yy-mm-dd"});
$("#rhPartNo").autocomplete({
source : function(request, response){
$.ajax({
type:"post",
dataType:"json",
url:"/part/partListAjax.do",
data:{"search_partNo":$("#rhPartNo").val(),"status":"all"},
success:function(data){
response($.map(data, function(item){
return{
label:"Part No :"+item.PART_NO+"(Rev:"+fnc_checkNull(item.REV)+")",
value:item.PART_NO,
partObjId:item.OBJID
}
}));
},
error: function(jqxhr, status, error){
Swal.fire(jqxhr.statusText + ", " + status + ", " + error);
Swal.fire(jqxhr.status);
Swal.fire(jqxhr.responseText);
}
})
},
autoFocus:true,
matchContains:true,
minLength:3,
delay:100,
select:function(event,ui){
$("#rhPartNo").val(ui.item.value);
$("#rhPartObjId").val(ui.item.partObjId);
},
focus:function(event, ui){return false;} //한글입력시 포커스이동하면 서제스트가 삭제되므로 focus처리
,highlight:true
});
$("#drawingNo").autocomplete({
source : function(request, response){
$.ajax({
type:"post",
dataType:"json",
url:"/part/partListAjax.do",
data:{"search_partNo":$("#drawingNo").val(),"status":"all"},
success:function(data){
response($.map(data, function(item){
return{
label:"Part No :"+item.PART_NO+"(Rev:"+fnc_checkNull(item.REV)+")",
value:item.PART_NO,
partObjId:item.OBJID
}
}));
},
error: function(jqxhr, status, error){
Swal.fire(jqxhr.statusText + ", " + status + ", " + error);
Swal.fire(jqxhr.status);
Swal.fire(jqxhr.responseText);
}
})
},
autoFocus:true,
matchContains:true,
minLength:3,
delay:100,
select:function(event,ui){
$("#drawingNo").val(ui.item.value);
$("#drawingNoObjId").val(ui.item.partObjId);
},
focus:function(event, ui){return false;} //한글입력시 포커스이동하면 서제스트가 삭제되므로 focus처리
,highlight:true
});
//재질의 값에 따라 두께와 weight의 값을 설정한다.
//fn_changeMaterial();
});
//Revision 시 화면을 구성한다.
function revisionFormSetter(){
//전체 입력 부분 비활성화
// $('input').attr("disabled","disabled");
// $('select').attr("disabled","disabled");
//입력되어야할 부분 비활성화 해제
// $("#revision").attr("disabled",false);
// $("#rhPartNo").attr("disabled",false);
// $("#applyPointType").attr("disabled",false);
// if('shownOn' == "${partInfoMap.DRAWING_TYPE}"){
// $("#drawingNo").attr("disabled",false);
// }
// $("input[name=changeItem]").attr("disabled",false);
// $(".pdm_btns").attr("disabled",false);
// $("#objid").attr("disabled",false);
// $("input[name='mngType']").attr("disabled",false);
if('shownOn' == "${partInfoMap.DRAWING_TYPE}"){
$("#drawingNo").attr("disabled",false);
}
$(".pdm_btns").attr("disabled",false);
$("#objid").attr("disabled",false);
$("#partNo").attr("disabled",true);
$("#oem").attr("disabled",true);
$("#car").attr("disabled",true);
$("#productFamily").attr("disabled",true);
$("#product").attr("disabled",true);
}
function refeshAttachFileArea(){
shapeAreaDraw();
cad2DAreaDraw();
cad2DPDFAreaDraw();
cad3DAreaDraw();
mngItemAreaDraw();
ecdAreaDraw();
mold2DAreaDraw();
mold2DPDFAreaDraw();
mold3DAreaDraw();
}
function savePart(){
var flag = false;
var url = "/part/savePart.do";
flag = duplicatePartChk();
if(!flag){
if(fnc_valitate("form1")){
if($("#drawType").val() == "shownOn"){
if($("#drawingNo").val() == ""){
Swal.fire("작성된 도면번호가 없습니다.");
$("#drawingNo").focus();
return false;
}
}
if(confirm("저장 하시겠습니까?")){
var param = $("#form1").serialize();
$.ajax({
type : "POST",
url : url,
data: param,
dataType:"json",
async:false,
error: function(jqxhr, status, error){
Swal.fire(jqxhr.statusText + ", " + status + ", " + error);
Swal.fire(jqxhr.status);
Swal.fire(jqxhr.responseText);
},
success: function(result){
if(null != result){
Swal.fire(result.message);
opener.search();
self.close();
}
}
});
}
}
}
}
//파트의 중복여부를 체크한다.
function duplicatePartChk(){
var flag = false;
var partNo = $("#partNo").val();
var objid = $("#objid").val();
var revision = $("#revision").val();
var paramData;
if("${actionType}" == "regist"){
paramData = {"search_partNo":partNo, "targetObjId":objid,"isStartDevPart":1};
}else{
paramData = {"search_partNo":partNo, "targetObjId":objid,"search_revision":revision,"isStartDevPart":1};
}
if(partNo != "" && revision != ""){
$.ajax({
type : "POST",
url : "/part/duplicatePartChk.do",
data: paramData,
dataType:"json",
async:false,
error: function(jqxhr, status, error){
Swal.fire(jqxhr.statusText + ", " + status + ", " + error);
Swal.fire(jqxhr.status);
Swal.fire(jqxhr.responseText);
},
success: function(result){
if(null != result){
if(0 < result.length){
Swal.fire("이미 해당 Part No,Rev이 존재합니다.");
flag = true;
}
}
}
});
}
return flag;
}
//고객사에 따른 차종의 목록을 가져온다.
function getCarList(oemObjid,carObjid){
var carSelectObj = $("#car");
$(carSelectObj).find("option").remove();
$(carSelectObj).append("<option value=''>선택</option>");
if("" == oemObjid || null == oemObjid){
return false;
}else{
$.ajax({
type : "POST",
url : "/admin/getOEMsCarList.do",
data:{ "status" : "active" , "oemObjId" : oemObjid},
dataType:"json",
async:false,
error: function(jqxhr, status, error){
Swal.fire(jqxhr.statusText + ", " + status + ", " + error);
Swal.fire(jqxhr.status);
Swal.fire(jqxhr.responseText);
},
success: function(result){
if(null != result){
for(var i=0;i<result.length;i++){
var objid = result[i].OBJID;
var carName = result[i].CAR_NAME;
var carCode = result[i].CAR_CODE;
$(carSelectObj).append("<option value='"+objid+"'>"+carCode+"</option>");
}
if("" != carObjid){
$(carSelectObj).val(carObjid);
}
}
}
});
}
}
//제품군에 따른 제품의 목록을 가져온다.
function getProductList(productFamilyObjid,productObjid){
var productSelectObj = $("#product");
$(productSelectObj).find("option").remove();
$(productSelectObj).append("<option value=''>선택</option>");
if("" == productFamilyObjid || null == productFamilyObjid){
return false;
}else{
$.ajax({
type : "POST",
url : "/specData/getProductList.do",
data:{ "status" : "active", "productGroupObjid" : productFamilyObjid},
dataType:"json",
async:false,
error: function(jqxhr, status, error){
Swal.fire(jqxhr.statusText + ", " + status + ", " + error);
Swal.fire(jqxhr.status);
Swal.fire(jqxhr.responseText);
},
success: function(result){
if(null != result){
for(var i=0;i<result.length;i++){
$(productSelectObj).append("<option value='"+result[i].OBJID+"'>"+result[i].PRODUCT_NAME+"</option>");
}
if("" != productObjid){
$(productSelectObj).val(productObjid);
}
}
}
});
}
}
function openSpecDataPopUp(objid){
var hiddenForm = document.hiddenForm;
var url = "/specData/specDataFormPopup.do";
var target = ""
var actionType = "";
if("" != objid){
url = "/specData/specDataDetailViewPopup.do";
target = objid;
}else{
actionType = "regist";
target = "specDataPopUp";
}
window.open("",target,"width=900 height=780 menubar=no status=no");
hiddenForm.objid.value = objid;
hiddenForm.target = target;
hiddenForm.action = url;
hiddenForm.submit();
}
//SPEC 추가
function addSPEC(){
var specType = $("input[name=specNo]:checked").val();
if(null != specType){
var specObjid = "";
var specNo = "";
var specDocName = "";
var specName = "";
if("ms" == specType){
var msSelectObj = $("#msSpec").find('option:selected');
specObjid = msSelectObj.val();
specNo = msSelectObj.attr("specNo");
specDocName = msSelectObj.attr("docName");
specName = msSelectObj.attr("categoryName");
}else if("es" == specType){
var esSelectObj = $("#esSpec").find('option:selected');
specObjid = esSelectObj.val();
specNo = esSelectObj.attr("specNo");
specDocName = esSelectObj.attr("docName");
specName = esSelectObj.attr("categoryName");
}
if(specObjid != "" && specObjid != null){
var appendText = "";
appendText+="<tr id='spec_"+specObjid+"'>";
appendText+=" <td><input type='checkbox' name='addedSpec' value='"+specObjid+"'></td>";
appendText+=" <input type='hidden' name='connectSpec' value='"+specObjid+"'>";
appendText+=" <td>"+specName+"</a></td>";
appendText+=" <td><a href='#' onclick=\"openSpecDataPopUp('"+specObjid+"')\">"+specNo+"</a></td>";
appendText+=" <td>"+specDocName+"</td>";
appendText+="</tr>";
$("#defaultSpecAppendRow").hide();
$("#specAppendArea").append(appendText);
}else{
Swal.fire("선택된 값이 없습니다.");
return false;
}
}else{
Swal.fire("선택된 값이 없습니다.");
return false;
}
}
//SPEC 삭제
function deleteSPEC(){
var specLength = $("input[name=addedSpec]").length;
if(1 < specLength){
var specCheckList = document.form1.addedSpec;
for(var i=0;i<specCheckList.length;i++){
if(specCheckList[i].checked){
$("#spec_"+specCheckList[i].value).remove();
}
}
}else if(1 == specLength){
var specCheckList = document.form1.addedSpec;
if(specCheckList.checked){
$("#spec_"+specCheckList.value).remove();
}
}
}
//형상 영역을 display 한다.
function shapeAreaDraw(){
fn_fileCallback("shape","PART_SHAPE");
}
//ECD 영역을 display 한다.
function ecdAreaDraw(){
fn_fileCallback("ecd","PART_ECD");
}
//관리항목 영역을 display 한다.
function mngItemAreaDraw(){
fn_fileCallback("mngItem","PART_MNG_ITEM");
}
//관리항목 영역을 display 한다.
function cad2DAreaDraw(){
fn_fileCallback("cad2D","PART_2D");
}
//관리항목 영역을 display 한다.
function cad2DPDFAreaDraw(){
fn_fileCallback("cad2DPDF","PART_2D_PDF");
}
//관리항목 영역을 display 한다.
function cad3DAreaDraw(){
fn_fileCallback("cad3D","PART_3D");
}
//Part 2D 변환파일 영역을 display 한다.
function convertCad2DAreaDraw(){
fn_fileCallback("convertCad2D","${PART_CONVERT_2D}");
}
//Part 3D 영역을 display 한다.
function convertCad3DAreaDraw(){
fn_fileCallback("convertCad3D","${PART_CONVERT_3D}");
}
//관리항목 영역을 display 한다.
function mold2DAreaDraw(){
fn_fileCallback("mold2D","PART_MOLD_2D");
}
//관리항목 영역을 display 한다.
function mold2DPDFAreaDraw(){
fn_fileCallback("mold2DPDF","PART_MOLD_2D_PDF");
}
//관리항목 영역을 display 한다.
function mold3DAreaDraw(){
fn_fileCallback("mold3D","PART_MOLD_3D");
}
//첨부파일 목록을 가져온다.
function fn_fileCallback(areaId,fileType){
$.ajax({
url:"/common/getFileList.do",
type:"POST",
data:{"targetObjId":"${objid}", "docType":fileType},
dataType:"json",
async:false,
success:function(data){
if(0 < data.length){
//파일드롭다운 영역 hide
$("#"+areaId+"DropZone").hide();
//첨부파일 목록 영역 show
$("#"+areaId+"AttachFileList").show();
$("#"+areaId+"FileArea").empty();
if(0 < $("#"+areaId+"DefaultRow").length){
$("#"+areaId+"DefaultRow").hide();
}
$.each(data, function(i){
var appendText = "";
if("shape" == areaId){
var path = data[i].FILE_PATH;
var fileName = data[i].SAVED_FILE_NAME;
var fileExt = data[i].UPPER_FILE_EXT;
if(fileExt == "JPEG" || fileExt == "JPG" || fileExt == "jpg" || fileExt == "jpeg" || fileExt == "png" || fileExt == "PNG"){
var srcLocation = encodeURI("/common/viewImage.do?realFileName="+data[i].REAL_FILE_NAME+"&savedFileName="+data[i].SAVED_FILE_NAME+"&attDir="+data[i].FILE_PATH);
appendText+= "<tr>";
appendText+= " <td>";
appendText+= " <img src='"+srcLocation+"' height='60' width='60' onclick=\"openImagePopUp(this.src)\" style='cursor:pointer;' />";
appendText+= " </td>";
appendText+= " <td>";
appendText+= " <div class='delete_btn' onclick='javascript:fnc_deleteFile(\""+data[i].OBJID+"\", \"refeshAttachFileArea\")'></div>";
appendText+= " </td>";
appendText+= "</tr>";
}else{
Swal.fire("형상에 업로드 가능한 확장자(jpeg,jpg)가 아닙니다.");
fileDelete(data[i].OBJID,"refeshAttachFileArea",false);
}
}else{
appendText+= "<tr>";
appendText+= " <td><a href='javascript:fnc_downloadFile(\""+data[i].OBJID+"\")'>"+data[i].REAL_FILE_NAME+"</a></td>";
appendText+= " <td><div class='delete_btn' onclick='javascript:fnc_deleteFile(\""+data[i].OBJID+"\", \"refeshAttachFileArea\")'></div></td>";
appendText+= "</tr>";
}
$("#"+areaId+"FileArea").append(appendText);
});
}else{
$("#"+areaId+"DropZone").show();
$("#"+areaId+"AttachFileList").hide();
$("#"+areaId+"FileArea").empty();
}
},
error: function(jqxhr, status, error){
Swal.fire(jqxhr.statusText + ", " + status + ", " + error);
Swal.fire(jqxhr.status);
Swal.fire(jqxhr.responseText);
}
});
}
function fileDelete(fileObjId, callbackFnc, confirmFlag){
if(confirmFlag){
fnc_deleteFile(fileObjId, callbackFnc);
}else{
$.ajax({
url:"/common/deleteFileInfo.do",
type:"POST",
data:{"objId":fileObjId},
dataType:"json",
async:true,
success:function(data){
eval(callbackFnc+"();");
},
error: function(jqxhr, status, error){
Swal.fire(jqxhr.statusText + ", " + status + ", " + error);
Swal.fire(jqxhr.status);
Swal.fire(jqxhr.responseText);
}
});
}
}
//도면 구분에 따른 영역의 활성화
function changeDrawArea(type){
$("#drawingNo").attr("disabled",true);
$("#cadArea").hide();
$("#cad2DPDF").hide();
$("#moldArea").hide();
$("#mold2DPDF").hide();
$("#convertCad2D").hide();
$("#convertCad3D").hide();
$("#cad3D").hide();
$("#mold3D").hide();
if("draw" == type){
$("#cadArea").show();
$("#cad2DPDF").show();
$("#cad3D").show();
$("#moldArea").show();
$("#mold2DPDF").show();
$("#mold3D").show();
$("#convertCad2D").show();
$("#convertCad3D").show();
$("#drawingNo").val('');
$("#drawingNoObjId").val('');
cad2DAreaDraw();
cad2DPDFAreaDraw();
cad3DAreaDraw();
convertCad2DAreaDraw();
convertCad3DAreaDraw();
mold2DAreaDraw();
mold2DPDFAreaDraw();
mold3DAreaDraw();
}else if("shownOn" == type){
$("#drawingNo").removeAttr("disabled");
}
}
//관리항목 선택 및 기존 관리항목 선택여부에 따라 첨부파일 영역을 보여준다.
function changeMngItemArea(type){
if("management" == type){
$("#mngItem").show();
mngItemAreaDraw();
}else{
$("#mngItem").hide();
mngItemAreaDraw();
}
}
//형상 클릭 시 확대 팝업
function openImagePopUp(url){
var img=new Image();
img.src=url;
var img_width=img.width;
var img_height=img.height;
var win_width=img.width+25;
var height=img.height+30;
window.open(url,"partListShapeImgPopUp","width="+img_width+",height="+height+", menubars=no, scrollbars=yes, resizable=yes");
}
//숫자 및 영문 유효성 검사
function onlyOneTypeCheck(type,obj){
var patternNumber = /[0-9]/;
var patternAlphabet = /^[A-Za-z]*$/;
var patternPrimeNumber1 = /^\d*[.]\d*$/; //소수점이 2개 들어가지 못하게 한다.
var patternPrimeNumber2 = /^\d{3}$/; //1000이하만 입력하도록 한다.
var patternPrimeNumber3 = /^\d*[.]\d{2}$/; //소수점 2째 자리 까지만 입력 하도록 한다.
var patternPrimeNumber4 = /^-?(\d{1,5}([.]\d{0,2})?)?$/; //소수점 2째 자리 까지만 입력 하도록 한다.
var message = "유효하지 않은 값입니다.";
if(type == "number"){
if("-" != obj.value){
for(var i=0;i<obj.value.length;i++){
var chk = obj.value.substring(i,i+1);
if(!chk.match(patternNumber)){
Swal.fire("숫자만 입력 가능합니다.");
obj.value = "";
break;
return false;
}
}
}
}else if(type == "alphabet"){
for(var i=0;i<obj.value.length;i++){
var chk = obj.value.substring(i,i+1);
if(!chk.match(patternAlphabet)){
Swal.fire("영문자만 입력 가능합니다.");
obj.value = "";
break;
return false;
}
}
}else if(type == "primeNumber"){
if("-" != obj.value){
if(!obj.value.match(patternPrimeNumber4)){
Swal.fire("정수 5자리, 소수점 2째 자리까지 입력 가능합니다.");
obj.value = "";
return false;
}
}
}
}
//재질 데이터의 입력에 따라 두께,중량의 정보를 변경한다.
function fn_changeMaterial(){
var materialVal = $("#material").val();
if("" != materialVal && "-" != materialVal){
$("#thickness").val("-");
$("#weight").val("-");
}
}
</script>
</head>
<body class="backcolor_light_blue">
<form name="hiddenForm" id="hiddenForm" method="post">
<input type="hidden" name="objid">
</form>
<form name="form1" id="form1" method="post">
<input type="hidden" name="objid" id="objid" value="${objid}">
<input type="hidden" name="isLast" id="isLast" value="${partInfoMap.IS_LAST}">
<input type="hidden" name="actionType" id="actionType" value="${actionType}">
<input type="hidden" name="status" id="status" value="${partInfoMap.STATUS}">
<section class="part_popup_min_width">
<div class="plm_menu_name">
<h2>
<span>Part 등록</span>
</h2>
</div>
<div id="businessPopupFormWrap">
<table class="pmsPopupForm">
<colgroup>
<col width="13%"/>
<col width="38%"/>
<col width="*"/>
<col width="13%"/>
<col width="18%"/>
<col width="19%"/>
</colgroup>
<tr>
<td class="input_title" >
<label for="">고객사</label>
</td>
<td>
<select name="oem" id="oem" onchange="getCarList(this.value,'${partInfoMap.CAR_OBJID}')" type="select" required reqTitle="고객사">
<c:choose>
<c:when test="${empty oemList}">
<option value="">선택</option>
</c:when>
<c:otherwise>
<option value="">선택</option>
<c:forEach var="item" items="${oemList}" varStatus="varStatus">
<option value="${item.OBJID}" ${item.OBJID eq partInfoMap.OEM_OBJID ? 'selected':''}>${item.OEM_NAME} ${empty item.OEM_CODE?'':'('}${item.OEM_CODE}${empty item.OEM_CODE?'':')'}</option>
</c:forEach>
</c:otherwise>
</c:choose>
</select>
</td>
<td></td>
<td class="input_title" >
<label for="">차종</label>
</td>
<td colspan="2">
<select name="car" id="car" type="select" required reqTitle="차종"></select>
</td>
</tr>
<tr>
<td class="input_title" >
<label for="">제품군</label>
</td>
<td>
<select name="productFamily" id="productFamily" onchange="getProductList(this.value,'${partInfoMap.PRODUCT_OBJID}')" type="select" required reqTitle="제품군">
<c:choose>
<c:when test="${empty productGroupList}">
<option value="">선택</option>
</c:when>
<c:otherwise>
<option value="">선택</option>
<c:forEach var="item" items="${productGroupList}" varStatus="varStatus">
<option value="${item.OBJID}" ${item.OBJID eq partInfoMap.PRODUCT_GROUP_OBJID ? 'selected':''}>${item.PRODUCT_GROUP_NAME}</option>
</c:forEach>
</c:otherwise>
</c:choose>
</select>
</td>
<td></td>
<td class="input_title" >
<label for="">제품</label>
</td>
<td colspan="2">
<select name="product" id="product" type="select" required reqTitle="제품"></select>
</td>
</tr>
<tr>
<td class="input_title" >
<label for="ecoNo">품번</label>
</td>
<td>
<input type="text" name="partNo" id="partNo" class="short_text_area" value="${partInfoMap.PART_NO}" required reqTitle="품번" maxlength="13" />
</td>
<td></td>
<td class="input_title" >
<label for="erpno">ERP자재코드</label>
</td>
<td colspan="2">
<input type="text" name="erpno" id="erpno" class="short_text_area" value="${partInfoMap.RH_PART_NO}" required reqTitle="ERP코드" maxlength="20" />
</td>
</tr>
<tr>
<td class="input_title" >
<label for="">품명</label>
</td>
<td colspan="5">
<input type="text" name="partName" id="partName" class="" value="${partInfoMap.PART_NAME}" required reqTitle="품명"/>
</td>
</tr>
<tr>
<td class="input_title" >
<label for="ecoNo">ECO.No</label>
</td>
<td>
<input type="text" name="ecoNo" id="ecoNo" class="short_text_area" value="${partInfoMap.EO_NO}" required reqTitle="ecoNo" maxlength="13">
</td>
<td></td>
<td class="input_title" >
<label for="ecoDate">ECO.Date</label>
</td>
<td colspan="2">
<input type="text" name="ecoDate" id="ecoDate" class="ecoDate" value="${partInfoMap.EO_ISSUE_DATE}" required reqTitle="ecoDate" maxlength="13">
</td>
</tr>
<tr>
<td class="input_title" >
<label for="">Rev</label>
</td>
<td>
<input type="text" name="revision" id="revision" class="short_text_area" value="${partInfoMap.REV}" required reqTitle="Rev" maxlength="9" onchange="onlyOneTypeCheck('alphabet',this);">
</td>
<td></td>
<td class="input_title" >
<label for="">사양</label>
</td>
<td colspan="2">
<select name="optionSpec" id="optionSpec" type="select">
<c:choose>
<c:when test="${empty optionSpecList}">
<option value="">선택</option>
</c:when>
<c:otherwise>
<option value="">선택</option>
<c:forEach var="item" items="${optionSpecList}" varStatus="varStatus" >
<option value="${item.OBJID}" ${item.OBJID eq partInfoMap.PART_OPTION ? 'selected':''}>${item.OPTION_NAME}</option>
</c:forEach>
</c:otherwise>
</c:choose>
</select>
</td>
</tr>
<tr>
<td class="checkboxName_20px input_title">
<label for="">출도구분</label>
</td>
<td>
<input type="radio" name="drawReleaseType" value="dev" ${'dev' eq partInfoMap.DRAWING_RELEASE_TYPE ? 'checked':''} >
<span>개발</span>&nbsp;&nbsp;&nbsp;&nbsp;
<input type="radio" name="drawReleaseType" value="product" ${'product' eq partInfoMap.DRAWING_RELEASE_TYPE ? 'checked':''}>
<span>양산</span>
</td>
<td></td>
<td class="checkboxName_10px input_title">
<label for="">부품구분</label>
</td>
<td colspan="2">
<input type="radio" name="partType" value="unique" ${'unique' eq partInfoMap.PART_TYPE ? 'checked':''} >
<span>Unique part</span>&nbsp;&nbsp;&nbsp;&nbsp;
<input type="radio" name="partType" value="standard" ${'standard' eq partInfoMap.PART_TYPE ? 'checked':''}>
<span>표준 품</span>
</td>
</tr>
<tr>
<td class="checkboxName_20px input_title">
<label for="">도면구분</label>
</td>
<td>
<input type="radio" name="drawType" value="draw" ${'draw' eq partInfoMap.DRAWING_TYPE ? 'checked':''} onclick="changeDrawArea(this.value);" >
<span>D</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<input type="radio" name="drawType" value="shownOn" ${'shownOn' eq partInfoMap.DRAWING_TYPE ? 'checked':''} onclick="changeDrawArea(this.value);">
<span>S</span>
</td>
<td></td>
<td class="input_title" >
<label for="">도면번호</label>
</td>
<td colspan="2">
<input type="text" name="drawingNo" id="drawingNo" class="short_text_area" value="${empty partInfoMap.DRAWING_NO ? '':partInfoMap.DRAWING_NO}" maxlength="13" />
<input type="hidden" name="drawingNoObjId" id="drawingNoObjId" class="short_text_area" value="${empty partInfoMap.DRAWING_NO_OBJID ? '':partInfoMap.DRAWING_NO_OBJID}"/>
</td>
</tr>
<tr>
<td class="input_title" >
<label for="">재질</label>
</td>
<td>
<!-- <select name="material" id="material" type="select" required reqTitle="재질" onchange="fn_changeMaterial();"> -->
<select name="material" id="material" type="select" >
<c:choose>
<c:when test="${empty materialList}">
<option value="">선택</option>
</c:when>
<c:otherwise>
<option value="">선택</option>
<c:forEach var="item" items="${materialList}" varStatus="varStatus">
<option value="${item.OBJID}" ${item.OBJID eq partInfoMap.MATERIAL_OBJID ? 'selected':''}>${item.MATERIAL_NAME}</option>
</c:forEach>
</c:otherwise>
</c:choose>
</select>
</td>
<td></td>
<td class="input_title" >
<label for="">원소재 사이즈</label>
</td>
<td colspan="2">
<%-- <input type="text" name="thickness" id="thickness" class="short_text_area" value="${partInfoMap.THICKNESS}" maxlength="5" required reqTitle="두께" onchange="onlyOneTypeCheck('primeNumber',this);"/> --%>
<input type="text" name="thickness" id="thickness" class="short_text_area" value="${partInfoMap.THICKNESS}" maxlength="20" />
</td>
</tr>
<tr>
<%-- <td class="input_title" >
<label for="">도금</label>
</td>
<td>
<select name="materialType" id="materialType" type="select" >
<c:choose>
<c:when test="${empty materialTypeList}">
<option value="">선택</option>
</c:when>
<c:otherwise>
<option value="">선택</option>
<c:forEach var="item" items="${materialTypeList}" varStatus="varStatus">
<option value="${item.OBJID}" ${item.OBJID eq partInfoMap.MATERIAL_TYPE_OBJID ? 'selected':''}>${item.MATERIAL_TYPE_NAME}</option>
</c:forEach>
</c:otherwise>
</c:choose>
</select>
</td> --%>
<td class="input_title" >
<label for="plated">도금</label>
</td>
<td>
<input type="text" name="plated" id="plated" class="short_text_area" value="${partInfoMap.PLATED}" >
</td>
<td></td>
<td class="input_title" >
<label for="stamp">도장</label>
</td>
<td colspan="2">
<input type="text" name="stamp" id="stamp" class="short_text_area" value="${partInfoMap.STAMP}" >
</td>
<%-- <td colspan="2">
<select name="optionSpec" id="optionSpec" type="select" required reqTitle="사양">
<c:choose>
<c:when test="${empty optionSpecList}">
<option value="">선택</option>
</c:when>
<c:otherwise>
<option value="All">선택</option>
<c:forEach var="item" items="${optionSpecList}" varStatus="varStatus" >
<option value="${item.OBJID}" ${item.OBJID eq partInfoMap.PART_OPTION ? 'selected':''}>${item.OPTION_NAME}</option>
</c:forEach>
</c:otherwise>
</c:choose>
</select>
</td> --%>
</tr>
<tr>
<td class="input_title" >
<label for="weight"><font size="1.5px">중량(제품)</font></label>
</td>
<td>
<input type="text" name="weight" id="weight" class="short_text_area" value="${partInfoMap.WEIGHT}" >
</td>
<td></td>
<td class="input_title" rowspan="2"><label for="">형상</label></td>
<td colspan="2" id="img_position_re" rowspan="2">
<div id="shapeDropZone" class="dropzone">Drag & Drop Files Here</div>
<div id="shapeAttachFileList">
<table id="shapeFileAreaTable" class="spec_data_in_table">
<tbody id="shapeFileArea">
</tbody>
</table>
</div>
</td>
</tr>
<tr>
<td class="input_title" >
<label for="sprue"><font size="1.5px">중량(스프루)</font></label>
</td>
<td>
<input type="text" name="sprue" id="sprue" class="short_text_area" value="${partInfoMap.SPRUE}" >
</td>
<td></td>
</tr>
<tr>
<td class="checkboxName input_title">
<label for="">SPEC No.</label>
</td>
<td>
<input type="radio" name="specNo" value="es"/>
<span class="">ES</span>
<select class="spec_no_select" name="esSpec" id="esSpec">
<c:choose>
<c:when test="${empty esSPECList}">
<option value="">선택</option>
</c:when>
<c:otherwise>
<option value="">선택</option>
<c:forEach var="item" items="${esSPECList}" varStatus="varStatus">
<option value="${item.OBJID}" categoryName="${item.CATEGORY_NAME}" specNo="${item.SPEC_NO}" docName="${item.DOC_NAME}">${item.SPEC_NO}</option>
</c:forEach>
</c:otherwise>
</c:choose>
</select>
</td>
<td colspan="3" class="add_btn_position_re">
<input type="radio" name="specNo" value="ms"/>
<span>MS</span>
<select class="spec_no_select" name="msSpec" id="msSpec">
<c:choose>
<c:when test="${empty msSPECList}">
<option value="">선택</option>
</c:when>
<c:otherwise>
<option value="">선택</option>
<c:forEach var="item" items="${msSPECList}" varStatus="varStatus">
<option value="${item.OBJID}" categoryName="${item.CATEGORY_NAME}" specNo="${item.SPEC_NO}" docName="${item.DOC_NAME}">${item.SPEC_NO}</option>
</c:forEach>
</c:otherwise>
</c:choose>
</select>
</td>
<td>
<input type="button" value="추가" class="add_btn plm_btns" onclick="addSPEC()">
<input type="button" value="삭제" class="add_btn plm_btns" onclick="deleteSPEC()">
</td>
</tr>
<tr>
<td colspan="6" >
<div class="plm_table_wrap">
<div style="overflow-y:scroll;">
<table class="plm_table">
<colgroup>
<col width="5%">
<col width="15%">
<col width="30%">
<col width="50%">
</colgroup>
<tr class="plm_thead">
<td><input type='checkbox'></td>
<td>구분</td>
<td colspan=''>SPEC No</td>
<td colspan=''>문서명</td>
</tr>
</table>
</div>
<div class="plm_scroll_table" style="width:100%; height:47px;">
<table id="specAppendArea" class="plm_table">
<colgroup>
<col width="5%">
<col width="15%">
<col width="30%">
<col width="50%">
</colgroup>
<c:choose>
<c:when test="${empty connectedSPECList}">
<tr id="defaultSpecAppendRow">
<td colspan="4">연결된 SPEC이 없습니다.</td>
</tr>
</c:when>
<c:otherwise>
<c:forEach var="item" items="${connectedSPECList}" varStatus="varStatus">
<tr id="spec_${item.SUB_OBJID}">
<td><input type='checkbox' name='addedSpec' value='${item.SUB_OBJID}'></td>
<input type='hidden' name='connectSpec' value='${item.SUB_OBJID}'>
<td>${item.CATEGORY_NAME}</td>
<td><a href='#' onclick="openSpecDataPopUp('${item.SUB_OBJID}')">${item.SPEC_NO}</a></td>
<td><a href='#' onclick="openSpecDataPopUp('${item.SUB_OBJID}')">${item.DOC_NAME}</a></td>
</tr>
</c:forEach>
</c:otherwise>
</c:choose>
</table>
</div>
</div>
</td>
</tr>
<tr>
<td colspan="6" class="hr_td"><hr></td>
</tr>
<tr>
<td class="checkboxName_60px input_title">
<label for="">기변항목</label>
</td>
<td colspan="6">
<input type="checkbox" id="changeGeometry" name="changeItem" value="changeGeometry" ${empty connectChangeItemInfo.changeGeometry ? '' : connectChangeItemInfo.changeGeometry} >
<span class="span_margin">형상변경</span>&nbsp;&nbsp;
<input type="checkbox" id="changeGeometry" name="changeItem" value="materialThickChange" ${empty connectChangeItemInfo.materialThickChange ? '' : connectChangeItemInfo.materialThickChange}>
<span>재질/두께변경</span>&nbsp;&nbsp;
<input type="checkbox" name="changeItem" value="cycleChange" ${empty connectChangeItemInfo.cycleChange ? '' : connectChangeItemInfo.cycleChange}>
<span>주기변경</span>&nbsp;&nbsp;
<input type="checkbox" name="changeItem" value="constructChange" ${empty connectChangeItemInfo.constructChange ? '' : connectChangeItemInfo.constructChange}>
<span>구성변경</span>&nbsp;&nbsp;
<input type="checkbox" name="changeItem" value="weldingSpot" ${empty connectChangeItemInfo.weldingSpot ? '' : connectChangeItemInfo.weldingSpot}>
<span class="span_margin_1">용접점</span>&nbsp;&nbsp;
<input type="checkbox" name="changeItem" value="structurGlue" ${empty connectChangeItemInfo.structurGlue ? '' : connectChangeItemInfo.structurGlue}>
<span class="span_margin_2">구조용접착제</span>&nbsp;&nbsp;
<input type="checkbox" name="changeItem" value="first" ${empty connectChangeItemInfo.first ? '' : connectChangeItemInfo.first}>
<span class="span_margin_3">초도</span>
<input type="checkbox" name="changeItem" value="etc" ${empty connectChangeItemInfo.etc ? '' : connectChangeItemInfo.etc}>
<span>기타</span>&nbsp;&nbsp;
<input type="checkbox" name="changeItem" value="none" ${empty connectChangeItemInfo.none ? '' : connectChangeItemInfo.none} >
<span>해당 無</span>
</td>
</tr>
<tr>
<td colspan="6" class="hr_td"><hr></td>
</tr>
<tr>
<td class="input_title">
<label for="">설계적용시점</label>
</td>
<td colspan="2">
<select name="applyPointType" id="applyPointType" class="min" type="select">
<c:choose>
<c:when test="${empty applyPointList}">
<option value="">선택</option>
</c:when>
<c:otherwise>
<option value="">선택</option>
<c:forEach var="item" items="${applyPointList}" varStatus="varStatus">
<option value="${item.OBJID}" ${item.OBJID eq partInfoMap.APPLY_POINT_OBJID ? 'selected':''}>${item.APPLY_POINT_NAME}</option>
</c:forEach>
</c:otherwise>
</c:choose>
</select>
</td>
<td class="input_title">
<label for="">ECD</label>
</td>
<td colspan="2">
<div id="ecdDropZone" class="dropzone">Drag & Drop Files Here</div>
<div id="ecdAttachFileList">
<table id="ecdFileAreaTable" class="spec_data_in_table">
<tbody id="ecdFileArea"></tbody>
</table>
</div>
</td>
</tr>
<tr>
<td colspan="6" class="hr_td"><hr></td>
</tr>
<tr>
<td class="input_title">
<label for="cavity">Cavity</label>
</td>
<td colspan="2">
<input type="text" name="cavity" id="cavity" class="cavity" value="${partInfoMap.CAVITY}" maxlength="32"/>
</td>
<td class="input_title">
<label for="mod_c">금형구분</label>
</td>
<td colspan="2">
<select name="mod_c" id="mod_c" class="min" type="select" >
<option value="">선택</option>
${code_map.mod_c}
</select>
</td>
</tr>
<tr>
<td class="input_title">
<label for="pro_c">생산구분</label>
</td>
<td colspan="2">
<input type="checkbox" name="pro_category" id="pro_c" value="PCA00100" ${empty PartProductItemListInfo.pro_c1 ? '' : PartProductItemListInfo.pro_c1} >
<span>사급품(가공)&nbsp;&nbsp;</span>
<input type="checkbox" name="pro_category" id="pro_c" value="PCA00200" ${empty PartProductItemListInfo.pro_c2 ? '' : PartProductItemListInfo.pro_c2}/>
<span>사내생산&nbsp;&nbsp;</span>
<input type="checkbox" name="pro_category" id="pro_c" value="PCA00300" ${empty PartProductItemListInfo.pro_c3 ? '' : PartProductItemListInfo.pro_c3} />
<span>양산공용&nbsp;&nbsp;</span>
</td>
</td>
</tr>
<tr>
<td class="input_title">
<label for="com_m">금형업체</label>
</td>
<td colspan="2">
<select name="com_m" id="com_m" class="min" type="select" >
<option value="">선택</option>
${code_map.com_m}
</select>
</td>
<td class="input_title">
<label for="com_sm">부자재업체</label>
</td>
<td colspan="2">
<select name="com_sm" id="com_sm" class="min" type="select" >
<option value="">선택</option>
${code_map.com_sm}
</select>
</td>
</tr>
<tr>
<td class="input_title">
<label for="com_pp"><font size="1.7px">도금/도장업체</font></label>
</td>
<td colspan="2">
<select name="com_pp" id="com_pp" class="min" type="select" >
<option value="">선택</option>
${code_map.com_pp}
</select>
</td>
<td class="input_title">
<label for="com_em">원소재업체</label>
</td>
<td colspan="2">
<select name="com_em" id="com_em" class="min" type="select" >
<option value="">선택</option>
${code_map.com_em}
</select>
</td>
</tr>
<tr>
<td class="input_title">
<label for="remarks">비고</label>
</td>
<td colspan="5">
<input type="text" name="remarks" id="remarks" class="remarks" value="${partInfoMap.REMARKS}" maxlength="1000"/>
</td>
</tr>
<tr>
<td colspan="6"><hr></td>
</tr>
<tr style="height:37px;">
<td class="input_title">
<label for="">관리항목</label>
</td>
<td>
<input type="radio" name="mngType" value="management" ${'Y' eq partInfoMap.MNG_ITEM_TYPE ? 'checked' : ''} onclick="changeMngItemArea(this.value);" ><span>YES</span> &nbsp;&nbsp;&nbsp;&nbsp;
<input type="radio" name="mngType" value="unManagement" ${'N' eq partInfoMap.MNG_ITEM_TYPE ? 'checked' : ''} onclick="changeMngItemArea(this.value);"><span>NO</span>
</td>
<td colspan="4" id="mngItem">
<div id="mngItemDropZone" class="dropzone">Drag & Drop Files Here</div>
<div id="mngItemAttachFileList">
<table id="mngItemFileAreaTable" class="spec_data_in_table">
<tbody id="mngItemFileArea">
</tbody>
</table>
</div>
</td>
</tr>
<tr>
<td colspan="6" class="hr_td"><hr></td>
</tr>
</table>
<table id="partPopupFormData" class="pmsPopupForm">
<colgroup>
<col width="13%;">
<col width="13%;">
<col width="*">
</colgroup>
<tr id="cadArea" class="">
<td rowspan="3" class="input_title">CAD Data</td>
<td class="input_sub_title">2D</td>
<td><div id="cad2DDropZone" class="dropzone">Drag & Drop Files Here</div>
<div id="cad2DAttachFileList">
<table id="cad2DFileAreaTable" class="spec_data_in_table">
<tbody id="cad2DFileArea">
</tbody>
</table>
</div>
</td>
</tr>
<tr id="cad2DPDF">
<td class="input_sub_title">2D PDF</td>
<td>
<div id="cad2DPDFDropZone" class="dropzone">Drag & Drop Files Here</div>
<div id="cad2DPDFAttachFileList">
<table id="cad2DPDFFileAreaTable" class="spec_data_in_table">
<tbody id="cad2DPDFFileArea">
</tbody>
</table>
</div>
</td>
</tr>
<tr id="cad3D">
<td class="input_sub_title">3D</td>
<td>
<div id="cad3DDropZone" class="dropzone">Drag & Drop Files Here</div>
<div id="cad3DAttachFileList">
<table id="cad3DFileAreaTable" class="spec_data_in_table">
<tbody id="cad3DFileArea">
</tbody>
</table>
</div>
</td>
</tr>
<!-- <tr id="convertCad2D">
<td rowspan="2" class=" partPopupFormDatatt input_title" > 변환 도면</td>
<td class="input_sub_title" style="border-bottom:1px solid #ccc;">2D</td>
<td style="border-bottom:1px solid #ccc;">
<div id="convertCad2DAttachFileList">
<table id="convertCad2DFileAreaTable" class="spec_data_in_table">
<tr id="convertCad2DDefaultRow">
<td>변환된 파일이 없습니다.</td>
</tr>
<tbody id="convertCad2DFileArea">
</tbody>
</table>
</div>
</td>
</tr>
<tr id="convertCad3D">
<td class="input_sub_title" style="border-bottom:1px solid #ccc;">3D</td>
<td style="border-bottom:1px solid #ccc;">
<div id="convertCad3DAttachFileList">
<table id="convertCad3DFileAreaTable" class="spec_data_in_table">
<tr id="convertCad3DDefaultRow">
<td>변환된 파일이 없습니다.</td>
</tr>
<tbody id="convertCad3DFileArea">
</tbody>
</table>
</div>
</td>
</tr> -->
<tr>
<td colspan="3" class="hr_td"><hr></td>
</tr>
</table>
<table id="partPopupFormData" class="pmsPopupForm">
<colgroup>
<col width="13%;">
<col width="13%;">
<col width="*">
</colgroup>
<tr id="moldArea" class="">
<td rowspan="3" class="input_title">Mold Data</td>
<td class="input_sub_title">2D</td>
<td><div id="mold2DDropZone" class="dropzone">Drag & Drop Files Here</div>
<div id="mold2DAttachFileList">
<table id="mold2DFileAreaTable" class="spec_data_in_table">
<tbody id="mold2DFileArea">
</tbody>
</table>
</div>
</td>
</tr>
<tr id="mold2DPDF">
<td class="input_sub_title">2D PDF</td>
<td>
<div id="mold2DPDFDropZone" class="dropzone">Drag & Drop Files Here</div>
<div id="mold2DPDFAttachFileList">
<table id="mold2DPDFFileAreaTable" class="spec_data_in_table">
<tbody id="mold2DPDFFileArea">
</tbody>
</table>
</div>
</td>
</tr>
<tr id="mold3D">
<td class="input_sub_title">3D</td>
<td>
<div id="mold3DDropZone" class="dropzone">Drag & Drop Files Here</div>
<div id="mold3DAttachFileList">
<table id="mold3DFileAreaTable" class="spec_data_in_table">
<tbody id="mold3DFileArea">
</tbody>
</table>
</div>
</td>
</tr>
<!-- <tr id="convertCad2D">
<td rowspan="2" class=" partPopupFormDatatt input_title" > 변환 도면</td>
<td class="input_sub_title" style="border-bottom:1px solid #ccc;">2D</td>
<td style="border-bottom:1px solid #ccc;">
<div id="convertCad2DAttachFileList">
<table id="convertCad2DFileAreaTable" class="spec_data_in_table">
<tr id="convertCad2DDefaultRow">
<td>변환된 파일이 없습니다.</td>
</tr>
<tbody id="convertCad2DFileArea">
</tbody>
</table>
</div>
</td>
</tr>
<tr id="convertCad3D">
<td class="input_sub_title" style="border-bottom:1px solid #ccc;">3D</td>
<td style="border-bottom:1px solid #ccc;">
<div id="convertCad3DAttachFileList">
<table id="convertCad3DFileAreaTable" class="spec_data_in_table">
<tr id="convertCad3DDefaultRow">
<td>변환된 파일이 없습니다.</td>
</tr>
<tbody id="convertCad3DFileArea">
</tbody>
</table>
</div>
</td>
</tr>
<tr>
<td colspan="3" class="hr_td"><hr></td>
</tr> -->
</table>
<div class="btn_wrap" style="clear:both;">
<div class="plm_btn_wrap_center">
<input type="button" value="저장" class="plm_btns" onclick="savePart();">
<input type="button" value="닫기" id="btn_close" class="plm_btns" onclick="javascript:self.close();">
</div>
</div>
</div>
</section>
</form>
</body>
</html>