813 lines
32 KiB
Plaintext
813 lines
32 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>
|
|
<script>
|
|
|
|
$(document).ready(function(){
|
|
fnc_datepick();
|
|
fnc_setFileDropZone("excelImportDropZone", "${OBJID}", "PART_EXCEL_IMPORT", "Part Excel Import Template", "setExcelFileArea",true,"fileDelete","/part/excelImportFileProc.do");
|
|
fnc_setFileDropZone("partAttachFileDropZone", "${OBJID}", "PART_IMPORT_ATTACH", "Import Part Attach File", "setPartFileArea",false,null,"/part/partImportFileProc.do");
|
|
|
|
fnc_setFileDropZone("dropzone", "${targetObjId}", "${FILE_DOC_TYPE_STRUCTURE_EXCEL_IMPORT_CODE}", "${FILE_DOC_TYPE_STRUCTURE_EXCEL_IMPORT_NAME}", "setUploadTemplateFile", true, "fn_preProcessor");
|
|
|
|
$("#templateDownload").click(function(){
|
|
location.href="/template/PART_EXCEL_IMPORT_TEMPLATE.xlsx";
|
|
});
|
|
|
|
//Excel File Upload된 파일 목록 부분을 초기화 한다.
|
|
$("#excelImportList").hide();
|
|
|
|
//Excel File이 Upload되지 않은 경우 파트에 대한 첨부파일 영역을 hide 한다.
|
|
$("#partAttachFileDropZone").hide();
|
|
});
|
|
function getCarList(oemName,targetCarName){
|
|
var appendText = "";
|
|
if("" != oemName || null != oemName){
|
|
$.ajax({
|
|
type : "POST",
|
|
url : "/common/getCarTypetList_combo.do",
|
|
data:{"search_oemName" : oemName, "isJson":true},
|
|
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 resultAppendText = "";
|
|
var objid = result[i].OBJID;
|
|
var carName = result[i].CAR_NAME;
|
|
var carCode = result[i].CAR_CODE;
|
|
var selectedFlag = "";
|
|
if(targetCarName == carName || targetCarName == carCode){
|
|
selectedFlag = "selected";
|
|
}
|
|
resultAppendText="<option value='"+objid+"' "+selectedFlag+">"+carName+"("+carCode+")</option>";
|
|
appendText += resultAppendText;
|
|
}
|
|
}
|
|
}
|
|
});
|
|
}
|
|
return appendText;
|
|
}
|
|
|
|
function getChangeCarList(areaObjId,oemObjId,targetCarObjId){
|
|
$("#"+areaObjId+"_car").find("option").remove();
|
|
$("#"+areaObjId+"_car").append("<option value=''>선택</option>");
|
|
|
|
if("" != oemObjId && null != oemObjId){
|
|
$.ajax({
|
|
type : "POST",
|
|
url : "/common/getCarTypetList_combo.do",
|
|
data:{"search_oemObjId" : oemObjId, "isJson":true},
|
|
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 resultAppendText = "";
|
|
var objid = result[i].OBJID;
|
|
var carName = result[i].CAR_NAME;
|
|
var carCode = result[i].CAR_CODE;
|
|
var selectedFlag = "";
|
|
if(targetCarObjId == objid){
|
|
selectedFlag = "selected";
|
|
}
|
|
resultAppendText="<option value='"+objid+"' "+selectedFlag+">"+carName+"("+carCode+")</option>";
|
|
|
|
$("#"+areaObjId+"_car").append(resultAppendText);
|
|
}
|
|
}
|
|
}
|
|
});
|
|
}
|
|
}
|
|
|
|
//제품군에 따른 제품의 목록을 가져온다.
|
|
function getProductList(productGroupName,targetProductName){
|
|
var appendText = "";
|
|
if("" != productGroupName && null != productGroupName){
|
|
$.ajax({
|
|
type : "POST",
|
|
url : "/common/getProductList_combo.do",
|
|
data:{"search_productGroupName" : productGroupName, "isJson":true},
|
|
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 resultAppendText = "";
|
|
var productName = result[i].PRODUCT_NAME;
|
|
var selectedFlag = "";
|
|
if(targetProductName == productName){
|
|
selectedFlag = "selected";
|
|
}
|
|
resultAppendText="<option value='"+result[i].OBJID+"' "+selectedFlag+">"+productName+"</option>";
|
|
appendText+=resultAppendText;
|
|
}
|
|
}
|
|
}
|
|
});
|
|
}
|
|
return appendText;
|
|
}
|
|
|
|
function getChangeProductList(areaObjId,productGroupObjId,targetProductObjId){
|
|
$("#"+areaObjId+"_product").find("option").remove();
|
|
$("#"+areaObjId+"_product").append("<option value=''>선택</option>");
|
|
|
|
if("" != productGroupObjId && null != productGroupObjId){
|
|
$.ajax({
|
|
type : "POST",
|
|
url : "/common/getProductList_combo.do",
|
|
data:{"search_productGroupObjId" : productGroupObjId, "isJson":true},
|
|
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 resultAppendText = "";
|
|
var productName = result[i].PRODUCT_NAME;
|
|
var selectedFlag = "";
|
|
if(targetProductObjId == result[i].OBJID){
|
|
selectedFlag = "selected";
|
|
}
|
|
resultAppendText="<option value='"+result[i].OBJID+"' "+selectedFlag+">"+productName+"</option>";
|
|
$("#"+areaObjId+"_product").append(resultAppendText);
|
|
}
|
|
}
|
|
}
|
|
});
|
|
}
|
|
}
|
|
|
|
//Excel 파일 업로드 후 처리함수
|
|
function setExcelFileArea(){
|
|
setUploadTemplateFile("excelImport");
|
|
}
|
|
//파트 관련 첨부파일 업로드 후 처리함수
|
|
function setPartFileArea(){
|
|
setUploadTemplateFile("partAttachFile");
|
|
}
|
|
|
|
//템플릿 업로드 후 처리
|
|
function setUploadTemplateFile(type){
|
|
var docType = "";
|
|
var deleteCallBackFN = "";
|
|
if(type == "excelImport"){
|
|
docType = "PART_EXCEL_IMPORT";
|
|
deleteCallBackFN = "excelFileDelete";
|
|
}else{
|
|
$("#partAttachFileArea").empty();
|
|
docType = "PART_IMPORT_ATTACH";
|
|
deleteCallBackFN = "setPartFileArea";
|
|
}
|
|
$.ajax({
|
|
url:"/common/getFileList.do",
|
|
type:"POST",
|
|
data:{"targetObjId":"${OBJID}", "docType":docType},
|
|
dataType:"json",
|
|
async:false,
|
|
success:function(data){
|
|
if(null != data && 0 < data.length){
|
|
if("PART_IMPORT_ATTACH" == docType){
|
|
$("#defaultPartAttachFileRow").hide();
|
|
}
|
|
$("#"+type+"List").show();
|
|
}
|
|
$.each(data, function(i){
|
|
var s = "<tr>";
|
|
|
|
if("PART_IMPORT_ATTACH" == docType){
|
|
s += "<td>"+(i+1)+"</td>";
|
|
}
|
|
s += "<td><a href='javascript:fnc_downloadFile(\""+data[i].OBJID+"\")'>"+data[i].REAL_FILE_NAME+"</a></td>";
|
|
s += "<td>"+data[i].FILE_SIZE+"</td>";
|
|
s += "<td><div class='delete_btn' onclick='javascript:fnc_deleteFile(\""+data[i].OBJID+"\", \""+deleteCallBackFN+"\")'></div></td>";
|
|
s += "</tr>";
|
|
$("#"+type+"Area").append(s);
|
|
});
|
|
if(type == "excelImport"){
|
|
parsingExcelFile();
|
|
}
|
|
},
|
|
error: function(jqxhr, status, error){
|
|
Swal.fire(jqxhr.statusText + ", " + status + ", " + error);
|
|
Swal.fire(jqxhr.status);
|
|
Swal.fire(jqxhr.responseText);
|
|
}
|
|
});
|
|
}
|
|
|
|
function excelFileDelete(){
|
|
$("#excelImportArea").empty();
|
|
$("#excelImportList").hide();
|
|
$("#parsingPartList").empty();
|
|
$("#defaultExcelTemplateRow").show();
|
|
}
|
|
|
|
//Excel 파일 업로드에 따른 파트 첨부파일 영역 DISPLAY
|
|
function displayPartFileInfo(flag){
|
|
|
|
if(flag == "true"){
|
|
$("#partAttachFileDropZone").show();
|
|
$("#partAttachFileArea").empty();
|
|
$("#defaultPartAttachFileRow").show();
|
|
}else{
|
|
$("#partAttachFileDropZone").show();
|
|
$("#partAttachFileArea").empty();
|
|
$("#partAttachFileList").hide();
|
|
}
|
|
}
|
|
|
|
var duplicateCount = 0;
|
|
function parsingExcelFile(){
|
|
$.ajax({
|
|
url:"/part/parsingExcelFile.do",
|
|
type:"POST",
|
|
data:{"targetObjId":"${OBJID}", "docType":"PART_EXCEL_IMPORT"},
|
|
dataType:"json",
|
|
async:false,
|
|
success:function(data){
|
|
if(null != data){
|
|
if(0 < data.length){
|
|
$("#defaultExcelTemplateRow").hide();
|
|
|
|
for(var i=0;i<data.length;i++){
|
|
var appendText = "";
|
|
|
|
var validateCnt = 0;
|
|
var partDuplicate = fnc_checkNull(data[i].partDuplicate);
|
|
var rhPartValidate = fnc_checkNull(data[i].rhPartNoValidate);
|
|
var drawingNoValidate = fnc_checkNull(data[i].drawingNoValidate);
|
|
var drawType = fnc_checkNull(data[i].drawType);
|
|
var rowTitle = "";
|
|
|
|
if(partDuplicate != 0){
|
|
rowTitle+="*이미 기등록된 파트 No, Rev 입니다.\n";
|
|
validateCnt++;
|
|
}
|
|
|
|
if(rhPartValidate == "duplicatePart"){
|
|
rowTitle+="* 해당 RH Part/No, Rev은 유효하지 않은 Part No, Rev 입니다.\n";
|
|
validateCnt++;
|
|
}
|
|
if(rhPartValidate == "empty"){
|
|
rowTitle+="* RH Part/No, Rev에 해당하는 파트가 존재하지 않습니다.\n";
|
|
validateCnt++;
|
|
}
|
|
|
|
if(drawingNoValidate == "duplicatePart" && drawType == "S"){
|
|
rowTitle+="* 해당 도면번호, Rev은 유효하지 않은 Part No, Rev 입니다.\n";
|
|
validateCnt++;
|
|
}
|
|
if(drawingNoValidate == "empty" && drawType == "S"){
|
|
rowTitle+="* 해당 도면번호, Rev에 해당하는 파트정보가 존재하지 않습니다.\n";
|
|
validateCnt++;
|
|
}
|
|
|
|
var rowCss = "";
|
|
if(validateCnt != 0){
|
|
rowCss = "bgColor='red' style='cursor:help;'";
|
|
}
|
|
|
|
appendText+="<tr title='"+rowTitle+"' "+rowCss+">";
|
|
appendText+=" <td rowspan='2'>"+(i+1)+"</td>";
|
|
appendText+=" <input type='hidden' name='partObjId' value='"+data[i].objId+"'>";
|
|
appendText+=" <td rowspan='2'>"+data[i].partNo+"</td>";
|
|
appendText+=" <input type='hidden' name='"+data[i].objId+"_partNo' id='"+data[i].objId+"_partNo' value='"+data[i].partNo+"'>";
|
|
appendText+=" <td rowspan='2'>"+data[i].rhPartNo+"</td>";
|
|
appendText+=" <input type='hidden' name='"+data[i].objId+"_rhPartObjId' id='"+data[i].objId+"_rhPartObjId' value='"+fnc_checkNull(data[i].rhPartObjId)+"'>";
|
|
appendText+=" <td rowspan='2'>"+data[i].rhPartNoRev+"</td>";
|
|
appendText+=" <td rowspan='2'>"+data[i].partName+"</td>";
|
|
appendText+=" <input type='hidden' name='"+data[i].objId+"_partName' id='"+data[i].objId+"_partName' value='"+data[i].partName+"'>";
|
|
|
|
appendText+=" <td rowspan='2'>";
|
|
appendText+=" <select name='"+data[i].objId+"_oem' id='"+data[i].objId+"_oem' onchange=\"getChangeCarList('"+data[i].objId+"',this.value,'')\">";
|
|
appendText+=" <option value=''>선택</option>";
|
|
<c:forEach items="${oemList}" var="item">
|
|
var selectFlag = "";
|
|
if(data[i].oemName == "${item.OEM_NAME}"){
|
|
selectFlag = "selected";
|
|
}
|
|
appendText+=" <option value='${item.OBJID}'";
|
|
appendText+=selectFlag;
|
|
appendText+=" >${item.OEM_NAME}</option>";
|
|
|
|
</c:forEach>
|
|
appendText+=" </select>";
|
|
appendText+=" </td>";
|
|
|
|
/* 차종영역 */
|
|
appendText+=" <td rowspan='2'> ";
|
|
appendText+=" <select name='"+data[i].objId+"_car' id='"+data[i].objId+"_car'>";
|
|
appendText+=" <option value=''>선택</option>";
|
|
appendText+= getCarList(data[i].oemName,data[i].carName);
|
|
appendText+=" </select>";
|
|
appendText+=" </td>";
|
|
|
|
/* 제품군 */
|
|
appendText+=" <td rowspan='2'>";
|
|
appendText+=" <select name='"+data[i].objId+"_productGroup' onchange=\"getChangeProductList('"+data[i].objId+"',this.value,'')\">";
|
|
appendText+=" <option value=''>선택</option>";
|
|
<c:forEach items="${productGroupList}" var="item">
|
|
var selectFlag = "";
|
|
if(data[i].productGroupName == "${item.PRODUCT_GROUP_NAME}"){
|
|
selectFlag = "selected";
|
|
}
|
|
appendText+=" <option value='${item.OBJID}'";
|
|
appendText+=selectFlag;
|
|
appendText+=" >${item.PRODUCT_GROUP_NAME}</option>";
|
|
</c:forEach>
|
|
appendText+=" </select>";
|
|
appendText+=" </td>";
|
|
|
|
/* 제품영역 */
|
|
appendText+=" <td rowspan='2'> ";
|
|
appendText+=" <select name='"+data[i].objId+"_product' id='"+data[i].objId+"_product'>";
|
|
appendText+=" <option value=''>선택</option>";
|
|
appendText+= getProductList(data[i].productGroupName,data[i].productName);
|
|
appendText+=" </select>";
|
|
appendText+=" </td>";
|
|
|
|
/* Rev Code */
|
|
appendText+=" <td rowspan='2'>"+data[i].rev+"</td> ";
|
|
appendText+=" <input type='hidden' name='"+data[i].objId+"_revCode' value='"+data[i].rev+"'>";
|
|
|
|
/* 출도구분 */
|
|
appendText+=" <td rowspan='2'>";
|
|
appendText+=" <input type='radio' name='"+data[i].objId+"_drawReleaseType' value='dev' ";
|
|
if("개발" == data[i].drawReleaseType){
|
|
appendText+=" checked ";
|
|
}
|
|
appendText+=">";
|
|
appendText+=" <span>개발</span> ";
|
|
appendText+=" <input type='radio' name='"+data[i].objId+"_drawReleaseType' value='product' ";
|
|
if("양산" == data[i].drawReleaseType){
|
|
appendText+=" checked ";
|
|
}
|
|
appendText+=">";
|
|
appendText+=" <span>양산</span>";
|
|
appendText+=" </td> ";
|
|
|
|
/* 부품구분 */
|
|
appendText+=" <td rowspan='2'>";
|
|
appendText+=" <input type='radio' name='"+data[i].objId+"_partType' value='unique' ";
|
|
if("Unique part" == data[i].partType){
|
|
appendText+=" checked ";
|
|
}
|
|
appendText+=">";
|
|
appendText+=" <span>Unique part</span>  ";
|
|
appendText+=" <input type='radio' name='"+data[i].objId+"_partType' value='standard' "
|
|
if("표준 품" == data[i].partType){
|
|
appendText+=" checked ";
|
|
}
|
|
appendText+=">";
|
|
appendText+=" <span>표준 품</span>";
|
|
appendText+=" </td> ";
|
|
|
|
/* 도면구분 */
|
|
appendText+=" <td rowspan='2'>";
|
|
appendText+=" <input type='radio' name='"+data[i].objId+"_drawType' value='draw' ";
|
|
if("D" == data[i].drawType){
|
|
appendText+=" checked ";
|
|
}
|
|
appendText+=">";
|
|
appendText+=" <span>D</span> ";
|
|
appendText+=" <input type='radio' name='"+data[i].objId+"_drawType' value='shownOn' ";
|
|
if("S" == data[i].drawType){
|
|
appendText+=" checked ";
|
|
}
|
|
appendText+=">";
|
|
appendText+=" <span>S</span>";
|
|
appendText+=" </td> ";
|
|
|
|
/* 도면번호 */
|
|
appendText+=" <td rowspan='2'>"+data[i].drawingNo+"</td>";
|
|
appendText+=" <input type='hidden' name='"+data[i].objId+"_drawingNo' id='"+data[i].objId+"_drawingNo' value='"+fnc_checkNull(data[i].drawingNo)+"'>";
|
|
appendText+=" <input type='hidden' name='"+data[i].objId+"_drawingNoObjId' id='"+data[i].objId+"_drawingNoObjId' value='"+fnc_checkNull(data[i].drawingNoObjId)+"'>";
|
|
|
|
/* 도면번호 Rev*/
|
|
appendText+=" <td rowspan='2'>"+data[i].drawingNoRev+"</td>";
|
|
|
|
/* 재질 */
|
|
appendText+=" <td rowspan='2'>";
|
|
appendText+=" <select name='"+data[i].objId+"_material' id='"+data[i].objId+"_material'>";
|
|
appendText+=" <option value=''>선택</option>";
|
|
<c:forEach items="${materialList}" var="item">
|
|
var selectFlag = "";
|
|
if(data[i].material == "${item.MATERIAL_NAME}"){
|
|
selectFlag = "selected";
|
|
}
|
|
appendText+=" <option value='${item.OBJID}'";
|
|
appendText+=selectFlag;
|
|
appendText+=" >${item.MATERIAL_NAME}</option>";
|
|
</c:forEach>
|
|
appendText+=" </select>";
|
|
appendText+=" </td>";
|
|
|
|
/* 사양 */
|
|
appendText+=" <td rowspan='2'>";
|
|
appendText+=" <select name='"+data[i].objId+"_optionSpec' id='"+data[i].objId+"_optionSpec'>";
|
|
appendText+=" <option value=''>선택</option>";
|
|
<c:forEach items="${optionSpecList}" var="item">
|
|
var selectFlag = "";
|
|
if(data[i].optionSpec == "${item.OPTION_NAME}"){
|
|
selectFlag = "selected";
|
|
}
|
|
appendText+=" <option value='${item.OBJID}'";
|
|
appendText+=selectFlag;
|
|
appendText+=" >${item.OPTION_NAME}</option>";
|
|
</c:forEach>
|
|
appendText+=" </select>";
|
|
appendText+=" </td>";
|
|
|
|
/* 자제유형 */
|
|
appendText+=" <td rowspan='2'>";
|
|
appendText+=" <select name='"+data[i].objId+"_materialType' id='"+data[i].objId+"_materialType'>";
|
|
appendText+=" <option value=''>선택</option>";
|
|
<c:forEach items="${materialTypeList}" var="item">
|
|
var selectFlag = "";
|
|
if(data[i].materialType == "${item.MATERIAL_TYPE_NAME}"){
|
|
selectFlag = "selected";
|
|
}
|
|
appendText+=" <option value='${item.OBJID}'";
|
|
appendText+=selectFlag;
|
|
appendText+=" >${item.MATERIAL_TYPE_NAME}</option>";
|
|
</c:forEach>
|
|
appendText+=" </select>";
|
|
appendText+=" </td>";
|
|
|
|
/* 두께 */
|
|
appendText+=" <td rowspan='2'><input type='text' name='"+data[i].objId+"_thickness' value='"+data[i].thickness+"'></td>";
|
|
/* weight */
|
|
appendText+=" <td rowspan='2'><input type='text' name='"+data[i].objId+"_weight' value='"+data[i].weight+"'></td>";
|
|
/* 기변항목 */
|
|
appendText+=" <td rowspan='2'>";
|
|
|
|
appendText+=" <input type='checkbox' name='"+data[i].objId+"_changeItem' value='changeGeometry' ";
|
|
if("Y" == data[i].changeGeometry){
|
|
appendText+=" checked ";
|
|
}
|
|
appendText+=">";
|
|
appendText+=" <span>형상변경</span> ";
|
|
appendText+=" <input type='checkbox' name='"+data[i].objId+"_changeItem' value='materialThickChange' ";
|
|
if("Y" == data[i].materialThickChange){
|
|
appendText+=" checked ";
|
|
}
|
|
appendText+=">";
|
|
appendText+=" <span>재질/두께변경</span> ";
|
|
appendText+=" <input type='checkbox' name='"+data[i].objId+"_changeItem' value='cycleChange' ";
|
|
if("Y" == data[i].cycleChange){
|
|
appendText+=" checked ";
|
|
}
|
|
appendText+=">";
|
|
appendText+=" <span>주기변경</span> ";
|
|
appendText+=" <input type='checkbox' name='"+data[i].objId+"_changeItem' value='constructChange' ";
|
|
if("Y" == data[i].constructChange){
|
|
appendText+=" checked ";
|
|
}
|
|
appendText+=">";
|
|
appendText+=" <span>구성변경</span><br>";
|
|
appendText+=" <input type='checkbox' name='"+data[i].objId+"_changeItem' value='weldingSpot' ";
|
|
if("Y" == data[i].weldingSpot){
|
|
appendText+=" checked ";
|
|
}
|
|
appendText+=">";
|
|
appendText+=" <span>용접점</span> ";
|
|
appendText+=" <input type='checkbox' name='"+data[i].objId+"_changeItem' value='structurGlue' ";
|
|
if("Y" == data[i].structurGlue){
|
|
appendText+=" checked ";
|
|
}
|
|
appendText+=">";
|
|
appendText+=" <span>구조용접착제</span> ";
|
|
appendText+=" <input type='checkbox' name='"+data[i].objId+"_changeItem' value='first' ";
|
|
if("Y" == data[i].first){
|
|
appendText+=" checked ";
|
|
}
|
|
appendText+=">";
|
|
appendText+=" <span>초도</span> ";
|
|
appendText+=" <input type='checkbox' name='"+data[i].objId+"_changeItem' value='etc' "
|
|
if("Y" == data[i].etc){
|
|
appendText+=" checked ";
|
|
}
|
|
appendText+=">";
|
|
appendText+=" <span>기타</span> ";
|
|
appendText+=" </td> ";
|
|
|
|
/* 설계적용시점 */
|
|
appendText+=" <td rowspan='2'>";
|
|
appendText+=" <select name='"+data[i].objId+"_applyPointType' id='"+data[i].objId+"_applyPointType'>";
|
|
appendText+=" <option value=''>선택</option>";
|
|
<c:forEach items="${applyPointList}" var="item">
|
|
var selectFlag = "";
|
|
if(data[i].applyPointType == "${item.APPLY_POINT_NAME}"){
|
|
selectFlag = "selected";
|
|
}
|
|
appendText+=" <option value='${item.OBJID}'";
|
|
appendText+=selectFlag;
|
|
appendText+=" >${item.APPLY_POINT_NAME}</option>";
|
|
</c:forEach>
|
|
appendText+=" </select>";
|
|
appendText+=" </td>";
|
|
|
|
appendText+="</tr> ";
|
|
|
|
//파싱 결과 문구 표시 부분
|
|
appendText+="<tr> ";
|
|
appendText+="</tr> ";
|
|
|
|
$("#parsingPartList").append(appendText);
|
|
|
|
duplicateCount += validateCnt;
|
|
}
|
|
|
|
//parsing 된 파트정보가 있을 경우 파트 일괄 첨부영역을 보여준다.
|
|
$("#partAttachFileDropZone").show();
|
|
|
|
}
|
|
}
|
|
},
|
|
error: function(jqxhr, status, error){
|
|
Swal.fire(jqxhr.statusText + ", " + status + ", " + error);
|
|
Swal.fire(jqxhr.status);
|
|
Swal.fire(jqxhr.responseText);
|
|
}
|
|
});
|
|
}
|
|
|
|
function savePart(){
|
|
if(0 < $("input[name='partObjId']").length){
|
|
|
|
var cnt = 0;
|
|
$("input[name='partObjId']").each(function(idx){
|
|
var targetObjId = $(this).val();
|
|
if(!partImportValidation(targetObjId)){
|
|
cnt++;
|
|
return false;
|
|
}
|
|
|
|
if(cnt == 0){
|
|
$("input[name='partObjId']").each(function(idx){
|
|
var otherObjId = $(this).val();
|
|
if(otherObjId != targetObjId){
|
|
if($("#"+otherObjId+"_partNo").val() == $("#"+targetObjId+"_partNo").val()){
|
|
Swal.fire("문서내 중복되는 Part No가 존재 합니다.("+$("#"+otherObjId+"_partNo").val()+","+$("#"+targetObjId+"_partNo").val()+")");
|
|
cnt++;
|
|
return false;
|
|
}
|
|
}
|
|
});
|
|
}
|
|
});
|
|
|
|
if(duplicateCount > 0){
|
|
Swal.fire("등록 불가한 품번이 있어 저장할 수 없습니다.");
|
|
return false;
|
|
}
|
|
|
|
if(0 == cnt){
|
|
if(confirm("해당파트 정보를 저장하시겠습니까?")){
|
|
var param = $("#form1").serialize();
|
|
$.ajax({
|
|
type : "POST",
|
|
url : "/part/saveExcelUploadPart.do",
|
|
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();
|
|
}
|
|
}
|
|
});
|
|
}
|
|
}
|
|
|
|
}else{
|
|
Swal.fire("저장할 정보가 없습니다.");
|
|
}
|
|
}
|
|
|
|
function partImportValidation(targetObjId){
|
|
if("" != targetObjId && null != targetObjId){
|
|
|
|
if("" == fnc_checkNull($("#"+targetObjId+"_partNo").val())){
|
|
Swal.fire("작성된 품번이 없습니다.");
|
|
$("#"+targetObjId+"_partNo").focus();
|
|
return false;
|
|
}
|
|
if("" == fnc_checkNull($("#"+targetObjId+"_partName").val())){
|
|
Swal.fire("작성된 품명이 없습니다.");
|
|
$("#"+targetObjId+"_partName").focus();
|
|
return false;
|
|
}
|
|
|
|
var drawType = $("input:radio[name="+targetObjId+"_drawType]:checked").val();
|
|
if("shownOn" == fnc_checkNull(drawType) ){
|
|
if("" == fnc_checkNull($("#"+targetObjId+"_drawingNoObjId").val()) && "-" != $("#"+targetObjId+"_drawingNo").val()){
|
|
Swal.fire("도면번호/Rev가 비어있거나 등록되지 않은 Part 입니다.");
|
|
$("#"+targetObjId+"_drawingNo").focus();
|
|
return false;
|
|
}
|
|
}
|
|
}
|
|
return true;
|
|
}
|
|
|
|
//파일을 삭제한다.
|
|
//Excel 파일 삭제 시 파트 첨부파일도 모두 삭제한다.
|
|
function fileDelete(){
|
|
if(confirm("Excel 파일을 변경하시겠습니까? 이미 Part 첨부파일이 첨부된 경우 파일은 삭제됩니다.")){
|
|
$.ajax({
|
|
url:"/common/deleteFileInfo.do",
|
|
type:"POST",
|
|
data:{"targetObjId":"${OBJID}"},
|
|
dataType:"json",
|
|
async:true,
|
|
success:function(data){
|
|
excelFileDelete();
|
|
},
|
|
error: function(jqxhr, status, error){
|
|
Swal.fire(jqxhr.statusText + ", " + status + ", " + error);
|
|
Swal.fire(jqxhr.status);
|
|
Swal.fire(jqxhr.responseText);
|
|
}
|
|
});
|
|
}
|
|
}
|
|
|
|
</script>
|
|
</head>
|
|
<body>
|
|
<form name="form1" id="form1" action="" method="post">
|
|
<input type="hidden" name="importPopObjid" id="importPopObjid" value="${OBJID}">
|
|
<section>
|
|
<div class="pdm_menu_name_sc">
|
|
<h2>
|
|
<span>Part 등록</span>
|
|
</h2>
|
|
</div>
|
|
<div style="width:98%; margin: 0 auto;">
|
|
<div id="partExcelPopupFormWrap">
|
|
<div class="form_popup_title" style="position:relative;"> Excel upload<img src="/images/btnExcel.png" style="position:absolute; top:9px; right:135px;"/><span style="position:absolute; top:0px; right:10px; cursor:pointer;" id="templateDownload">Template Download</span></div>
|
|
<div id="excelUploadPopupForm">
|
|
<div class="fileDnDWrap">
|
|
<div id="excelImportDropZone" class="dropzone" style="height:50px;">Drag & Drop 엑셀 템플릿</div>
|
|
<div id="excelImportList">
|
|
<table id="excelImportTable" class="excelUploadPopupForm">
|
|
<thead>
|
|
<tr><td colspan="3">Excel 첨부파일</td></tr>
|
|
</thead>
|
|
<tbody id="excelImportArea">
|
|
</tbody>
|
|
</table>
|
|
</div>
|
|
</div>
|
|
<div class="fileDnDWrap">
|
|
<div id="partAttachFileDropZone" class="dropzone" style="height:50px;">Drag & Drop 파트 첨부파일</div>
|
|
<div id="partAttachFileList">
|
|
<table id="partAttachFileTable" class="excelUploadPopupForm">
|
|
<thead>
|
|
<tr><td colspan="4">Part 첨부파일</td></tr>
|
|
</thead>
|
|
<tr id="defaultPartAttachFileRow">
|
|
<td colspan="4">첨부된 파일이 없습니다.</td>
|
|
</tr>
|
|
<tbody id="partAttachFileArea">
|
|
</tbody>
|
|
</table>
|
|
</div>
|
|
</div>
|
|
<div class="part_x_scroll">
|
|
<table id="excelUploadPopupTable">
|
|
<colgroup>
|
|
<col width="1.5%"/>
|
|
<col width="4%"/>
|
|
<col width="4%"/>
|
|
<col width="4%"/>
|
|
<col width="10%"/>
|
|
<col width="4%"/>
|
|
<col width="4%"/>
|
|
<col width="7%"/>
|
|
<col width="5%"/>
|
|
<col width="2%"/>
|
|
<col width="4%"/>
|
|
<col width="7%"/>
|
|
<col width="3%"/>
|
|
<col width="*%"/>
|
|
<col width="*%"/>
|
|
<col width="*%"/>
|
|
<col width="*%"/>
|
|
<col width="3%"/>
|
|
<col width="2%"/>
|
|
<col width="3%"/>
|
|
<col width="13%"/>
|
|
<col width="4%"/>
|
|
</colgroup>
|
|
<thead>
|
|
<tr>
|
|
<td>No</td>
|
|
<td>품번</td>
|
|
<td>RH P/No</td>
|
|
<td>RH P/No Rev</td>
|
|
<td>품명</td>
|
|
<td>고객사</td>
|
|
<td>차종</td>
|
|
<td>제품군</td>
|
|
<td>제품</td>
|
|
<td>Rev</td>
|
|
<td>출도구분</td>
|
|
<td>부품구분</td>
|
|
<td>도면구분</td>
|
|
<td>도면번호</td>
|
|
<td>도면번호 Rev</td>
|
|
<td>재질</td>
|
|
<td>사양</td>
|
|
<td>자재유형</td>
|
|
<td>두께</td>
|
|
<td>weight(g)</td>
|
|
<td>기변항목</td>
|
|
<td>설계적용시점</td>
|
|
</tr>
|
|
</thead>
|
|
</table>
|
|
<div class="part_y_scroll">
|
|
<table class="partExcelScrollTable">
|
|
<colgroup>
|
|
<col width="1.5%"/>
|
|
<col width="4%"/>
|
|
<col width="4%"/>
|
|
<col width="4%"/>
|
|
<col width="10%"/>
|
|
<col width="4%"/>
|
|
<col width="4%"/>
|
|
<col width="7%"/>
|
|
<col width="5%"/>
|
|
<col width="2%"/>
|
|
<col width="4%"/>
|
|
<col width="7%"/>
|
|
<col width="3%"/>
|
|
<col width="*%"/>
|
|
<col width="*%"/>
|
|
<col width="*%"/>
|
|
<col width="*%"/>
|
|
<col width="3%"/>
|
|
<col width="2%"/>
|
|
<col width="3%"/>
|
|
<col width="13%"/>
|
|
<col width="4%"/>
|
|
</colgroup>
|
|
<tr id="defaultExcelTemplateRow">
|
|
<td colspan="22">유효한 데이터가 없습니다.</td>
|
|
</tr>
|
|
<tbody id="parsingPartList">
|
|
</tbody>
|
|
</table>
|
|
</div>
|
|
</div>
|
|
<div class="btnCenterWrap">
|
|
<center class="center_btns_wrap">
|
|
<input type="button" value="저장" class="pdm_btns" onclick="savePart();">
|
|
<input type="button" value="닫기" id="btn_close" class="pdm_btns" onclick="javascript:self.close();">
|
|
</center>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</section>
|
|
</form>
|
|
</body>
|
|
</html> |