373 lines
13 KiB
Plaintext
373 lines
13 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" %>
|
|
<%
|
|
ArrayList TREELIST = new ArrayList();
|
|
TREELIST = (ArrayList)request.getAttribute("tree");
|
|
|
|
int z = 0;
|
|
int Maxlevel = 0;
|
|
//int[] levelarr;
|
|
int[] levelarr = new int[TREELIST.size()];
|
|
//if(TREELIST != null){
|
|
//levelarr = new int[TREELIST.size()];
|
|
for(int i=0; i< TREELIST.size(); i++){
|
|
HashMap treemap = (HashMap)TREELIST.get(i);
|
|
int level = Integer.parseInt(CommonUtils.checkNull(treemap.get("LEVEL")));
|
|
// System.out.println("level : "+level);
|
|
levelarr[i] = level;
|
|
}
|
|
|
|
if(null != TREELIST && 0 < TREELIST.size()){
|
|
HashMap MaxlevelMap = (HashMap)TREELIST.get(0);
|
|
Maxlevel = Integer.parseInt(CommonUtils.checkNull(MaxlevelMap.get("MAX_LEVEL")));
|
|
}
|
|
//}
|
|
|
|
%>
|
|
<style>
|
|
::-webkit-scrollbar {
|
|
width: 10px;
|
|
height: 15px;
|
|
}
|
|
#structureTableWrap1 {
|
|
top: 56px;
|
|
}
|
|
</style>
|
|
<!DOCTYPE html>
|
|
<html>
|
|
<head>
|
|
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
|
|
<title><%=Constants.SYSTEM_NAME%></title>
|
|
<script>
|
|
$(function(){
|
|
if('${param.readonly}' == 'readonly'){
|
|
$("#structureName2").hide();
|
|
}
|
|
|
|
$(".qty").keyup(function(e){
|
|
var key = e.keyCode;
|
|
|
|
if(key == 13){
|
|
var leftObjId = $(this).attr("data-CHILD_OBJID");
|
|
var leftQtyParObjId = $(this).attr("data-PART_OBJID");
|
|
var leftPartLastObjId = $(this).attr("data-LAST_PART_OBJID");
|
|
var leftPartNo = $(this).attr("data-PART_NO");
|
|
var qty = $(this).val();
|
|
|
|
/* var isNumeric = $.isNumeric(qty);
|
|
|
|
if(!isNumeric){
|
|
Swal.fire("숫자만 입력 가능합니다. 수량을 1개로 조정합니다.");
|
|
$(this).val(1);
|
|
fn_saveQty(leftObjId, 1);
|
|
return;
|
|
} */
|
|
fn_saveQty(leftObjId, qty, leftPartNo, leftQtyParObjId, leftPartLastObjId);
|
|
}
|
|
});
|
|
|
|
$("#btnExcel").click(function() {
|
|
fn_excel();
|
|
});
|
|
|
|
//첨부팝업
|
|
$(".File").click(function(){
|
|
var popup_width = 800;
|
|
var popup_height = 335;
|
|
|
|
var objId = $(this).attr("data-OBJID");
|
|
var docType =$(this).attr("data-docType");
|
|
var docTypeName = $(this).attr("data-docTypeName");
|
|
var params = "?targetObjId="+objId+"&docType="+docType+"&docTypeName="+docTypeName;
|
|
var url = "/projectConcept/FileRegistPopup.do"+params;
|
|
|
|
fn_centerPopup(popup_width, popup_height, url);
|
|
});
|
|
|
|
|
|
$(".seq").keyup(function(e){
|
|
var key = e.keyCode;
|
|
|
|
if(key == 13){
|
|
var leftObjId = $(this).attr("data-CHILD_OBJID");
|
|
var leftPartNo = $(this).attr("data-PART_NO");
|
|
var seq = $(this).val();
|
|
var partNo = $(this).attr("data-PART_NO");
|
|
var isNumeric = $.isNumeric(seq);
|
|
|
|
if(!isNumeric){
|
|
Swal.fire("숫자만 입력 가능합니다.");
|
|
$(this).val(1);
|
|
fn_saveSeq(leftObjId, 1,partNo);
|
|
return;
|
|
}
|
|
fn_saveSeq(leftObjId, seq,partNo);
|
|
}
|
|
});
|
|
|
|
|
|
|
|
|
|
/*
|
|
$(".qty").blur(function(){
|
|
var objId = $(this).attr("data-OBJID");
|
|
var qty = $(this).val();
|
|
fn_saveQty(objId, qty);
|
|
});
|
|
*/
|
|
|
|
$(document).ready(function(){
|
|
$(".dataTr").each(function(i){
|
|
var lev = $(this).attr("data-LEVEL");
|
|
if(lev == 1){
|
|
$(this).css("background-color", "#fde9d9");
|
|
}else if(lev == 2){
|
|
$(this).css("background-color", "#daeef3");
|
|
}else if(lev == 3){
|
|
$(this).css("background-color", "#e4dfec");
|
|
}else if(lev == 4){
|
|
$(this).css("background-color", "#ebf1de");
|
|
}else if(lev == 5){
|
|
$(this).css("background-color", "#f2f2f2");
|
|
}else if(lev == 6){
|
|
$(this).css("background-color", "#f2dcdb");
|
|
}else if(lev == 7){
|
|
$(this).css("background-color", "#eeece1");
|
|
}else if(lev == 8){
|
|
$(this).css("background-color", "#dce6f1");
|
|
}else if(lev == 9){
|
|
$(this).css("background-color", "#FFFFEB");
|
|
}else if(lev == 10){
|
|
$(this).css("background-color", "#ffffff");
|
|
}
|
|
});
|
|
});
|
|
});
|
|
|
|
function fn_saveQty(leftObjId,qty, leftQtyParObjId){
|
|
$.ajax({
|
|
url: "/partMng/structureQtySave.do",
|
|
method: 'post',
|
|
//data: {"CHILD_OBJID":leftObjId,"QTY":qty}, //231211 아래로 변경(설변)
|
|
data: {"BOM_REPORT_OBJID":"${info.OBJID}","CHILD_OBJID":leftObjId,"QTY_TEMP":qty, "OBJID":leftQtyParObjId},
|
|
dataType: 'json',
|
|
success: function(data) {
|
|
if(data.result){
|
|
Swal.fire('저장하였습니다.');
|
|
}
|
|
}
|
|
, error: function(jqxhr, status, error){
|
|
Swal.fire(jqxhr.statusText + ", " + status + ", " + error);
|
|
Swal.fire(jqxhr.status);
|
|
Swal.fire(jqxhr.responseText);
|
|
}
|
|
});
|
|
}
|
|
|
|
|
|
function fn_saveSeq(leftObjId,seq,partNo){
|
|
var foucs = "seq_"+partNo;
|
|
$.ajax({
|
|
url: "/partMng/structureSeqSave.do",
|
|
method: 'post',
|
|
data: {"BOM_REPORT_OBJID":"${info.OBJID}","CHILD_OBJID":leftObjId,"SEQ":seq},
|
|
dataType: 'json',
|
|
async : false,
|
|
success: function(data) {
|
|
Swal.fire('변경되었습니다');
|
|
var url = window.location.href;
|
|
|
|
url = url + "&foucs="+foucs;
|
|
|
|
location.href = url;
|
|
//Swal.fire("#"+seq+"_"+partNo);
|
|
//$("#"+seq+"_"+partNo).focus();
|
|
//parent.frames['leftFrame'].reload();
|
|
}
|
|
, error: function(jqxhr, status, error){
|
|
Swal.fire(jqxhr.statusText + ", " + status + ", " + error);
|
|
Swal.fire(jqxhr.status);
|
|
Swal.fire(jqxhr.responseText);
|
|
}
|
|
});
|
|
|
|
|
|
}
|
|
|
|
function openPartMngPopup(objId, lastPartObjid, childObjid, BOM_LAST_PART_OBJID){
|
|
var popup_width = 800;
|
|
var popup_height = 500;
|
|
|
|
var hiddenForm = document.hiddenForm;
|
|
var url = "/partMng/partMngFormPopUp.do";
|
|
|
|
if("" != objId){
|
|
url = "/partMng/partMngDetailPopUp.do?ACTION_TYPE=work";
|
|
}
|
|
|
|
var target = "partMngPopUp";
|
|
|
|
fn_centerPopup(popup_width, popup_height, url, target);
|
|
hiddenForm.action = url;
|
|
hiddenForm.OBJID.value = fnc_checkNull(BOM_LAST_PART_OBJID, objId);
|
|
if('working' == '${param.actionType}')
|
|
hiddenForm.OBJID.value = lastPartObjid; //231211 최신 파트로 조회
|
|
hiddenForm.LAST_PART_OBJID.value = lastPartObjid;
|
|
hiddenForm.CHILD_OBJID.value = childObjid;
|
|
hiddenForm.target = target;
|
|
hiddenForm.submit();
|
|
}
|
|
|
|
function fn_excel() {
|
|
document.form1.actionType.value = "excel";
|
|
var form = document.form1;
|
|
form.action="/partMng/structurePopupLeft.do";
|
|
form.submit();
|
|
}
|
|
|
|
</script>
|
|
</head>
|
|
<body class="backcolor">
|
|
<form name="hiddenForm" id="hiddenForm" method="post">
|
|
<input type="hidden" name="OBJID" id="OBJID">
|
|
<input type="hidden" name="LAST_PART_OBJID" id="LAST_PART_OBJID">
|
|
<input type="hidden" name="CHILD_OBJID" id="CHILD_OBJID">
|
|
</form>
|
|
|
|
<form name="form1" action="" method="post" onsubmit="return false;">
|
|
<input type="hidden" name="objid" id="objid" value="${info.OBJID}" />
|
|
<input type="hidden" name="objId" id="objId" value="${info.OBJID}" />
|
|
<input type="hidden" name="actionType" value="" />
|
|
<div id="structureTableWrap1" style="width: 99%;">
|
|
<div id="structureName">(${info.CUSTOMER_NAME}_${info.CUSTOMER_PROJECT_NAME}_${info.UNIT_NAME})_${info.REV}<input type="button" value="Excel Download" class="plm_btns structure_btn" id="btnExcel" style="float:right;"></div>
|
|
<div id="structureName2"><font size="2px">※수량 변경 후, 엔터치시면 저장됩니다.(신규 추가 파트만 가능)</font></div>
|
|
<div class="plm_scroll_table" style="height:90%;overflow-y:scroll;">
|
|
<table id="structurePopupTableHead" class="plm_table">
|
|
<colgroup>
|
|
<% if(Maxlevel == 0){%>
|
|
<col width="25px" />
|
|
<%}else{%>
|
|
<col width="25px" />
|
|
<%}
|
|
for(int i=0; i< Maxlevel; i++){%>
|
|
<col width="25px" />
|
|
<%}%>
|
|
<col width="130px" />
|
|
<col width="160px" />
|
|
<col width="50px" />
|
|
<col width="30px" /> <!-- 3D -->
|
|
<col width="30px" /> <!-- 2D -->
|
|
<col width="30px" /> <!-- 2D PDF -->
|
|
<col width="70px" /> <!-- Material -->
|
|
<col width="190px" /> <!-- SPEC. -->
|
|
<col width="90px" /> <!-- MAKER. -->
|
|
<col width="70px" /> <!-- Revision -->
|
|
<col width="75px" /> <!-- EO no -->
|
|
<col width="75px" /> <!-- EO Date -->
|
|
<col width="70px" /> <!-- 부품 유향 -->
|
|
<!-- <col width="15%" /> -->
|
|
</colgroup>
|
|
<tr class="plm_thead">
|
|
<td colspan="${MAXLEV + 1}">Level</td>
|
|
<td>품번</td>
|
|
<td>품명</td>
|
|
<td>수량</td>
|
|
<td>3D</td>
|
|
<td>2D</td>
|
|
<td>PDF</td>
|
|
<td>재질</td>
|
|
<td>사양(규격)</td>
|
|
<td>MAKER</td>
|
|
<td>Revision</td>
|
|
<td>EO No</td>
|
|
<td>EO Date</td>
|
|
<td>PART 구분</td>
|
|
<!-- <td>순번</td> -->
|
|
</tr>
|
|
</table>
|
|
|
|
<table id="structurePopupTable2" class="plm_table">
|
|
<colgroup>
|
|
<% if(Maxlevel == 0){%>
|
|
<col width="25px" />
|
|
<%}else{%>
|
|
<col width="25px" />
|
|
<%}
|
|
for(int i=0; i< Maxlevel; i++){%>
|
|
<col width="25px" />
|
|
<%}%>
|
|
<col width="130px" />
|
|
<col width="160px" />
|
|
<col width="50px" />
|
|
<col width="30px" /> <!-- 3D -->
|
|
<col width="30px" /> <!-- 2D -->
|
|
<col width="30px" /> <!-- 2D PDF -->
|
|
<col width="70px" /> <!-- Material -->
|
|
<col width="190px" /> <!-- SPEC. -->
|
|
<col width="90px" /> <!-- MAKER. -->
|
|
<col width="70px" /> <!-- Revision -->
|
|
<col width="75px" /> <!-- EO no -->
|
|
<col width="75px" /> <!-- EO Date -->
|
|
<col width="70px" /> <!-- 부품 유향 -->
|
|
<!-- <col width="15%" /> -->
|
|
</colgroup>
|
|
<c:choose>
|
|
<c:when test="${!empty tree}">
|
|
<c:forEach var="item" items="${tree}" varStatus="status">
|
|
<tr class="dataTr" data-LEVEL="${item.LEVEL}">
|
|
<td><input type="radio" name="checkedPartNo" value="${item.CHILD_OBJID}" data-OBJID="${item.OBJID}" data-PART_NO="${item.PART_NO}"
|
|
data-PARENT_PART_NO="${item.PARENT_PART_NO}" data-PART_NO_QTY="${item.LAST_PART_OBJID}"
|
|
data-PARENT_PARTS="${item.PARENT_PARTS}" data-LAST_PART_OBJID="${item.LAST_PART_OBJID}"
|
|
data-PARENT_OBJID="${item.PARENT_OBJID}" data-PART_OBJID="${item.PART_OBJID}"
|
|
data-BOM_LAST_PART_OBJID="${item.BOM_LAST_PART_OBJID}"
|
|
>
|
|
</td>
|
|
<%
|
|
for(int i=0; i< Maxlevel; i++){
|
|
if(levelarr[z] == (i+1)){%>
|
|
<td>*</td>
|
|
<% }else{ %>
|
|
<td> </td>
|
|
<% }
|
|
}
|
|
z++;
|
|
%>
|
|
|
|
<td style="text-align:left !important;" id="lpadpartno"><pre><a href="#" onclick="openPartMngPopup('${item.PART_OBJID}','${item.LAST_PART_OBJID}','${item.CHILD_OBJID}','${item.BOM_LAST_PART_OBJID}');">${item.PART_NO}</a></pre></td>
|
|
<td class="align_l">${item.PART_NAME}</td>
|
|
|
|
<c:if test="${item.STATUS ne 'adding'}">
|
|
<td class="align_c">${item.QTY_TEMP}</td>
|
|
</c:if>
|
|
<c:if test="${item.STATUS eq 'adding'}">
|
|
<td class="align_c"><input type="text" name="qty_${item.PART_NO}" id="qty_${item.PART_NO}" class="qty" style="width:40px; text-align:center;" maxlength="3" value="${empty item.QTY_TEMP?'0':item.QTY_TEMP}" data-CHILD_OBJID="${item.CHILD_OBJID}" data-PART_NO="${item.PART_NO}" data-PARENT_PART_NO="${item.PARENT_PART_NO}" ></td>
|
|
</c:if>
|
|
|
|
<td><a href="#" class="File file_${item.CU01_CNT eq 0?'empty_':''}icon" data-OBJID="${item.LAST_PART_OBJID}" data-docType="3D_CAD" data-docTypeName="3D CAD 첨부파일"></a></td>
|
|
<td><a href="#" class="File file_${item.CU02_CNT eq 0?'empty_':''}icon" data-OBJID="${item.LAST_PART_OBJID}" data-docType="2D_DRAWING_CAD" data-docTypeName="2D(Drawing) CAD 첨부파일"></a></td>
|
|
<td><a href="#" class="File file_${item.CU03_CNT eq 0?'empty_':''}icon" data-OBJID="${item.LAST_PART_OBJID}" data-docType="2D_PDF_CAD" data-docTypeName="2D(PDF) CAD 첨부파일"></a></td>
|
|
<td title="${item.MATERIAL}" class="align_l" style="text-align: left; padding-left: 10px;">${item.MATERIAL}</td><!-- 재질 -->
|
|
<td title="${item.SPEC}" class="align_l" style="text-align: left; padding-left: 10px;">${item.SPEC}</td><!-- SPEC -->
|
|
<td title="${item.MAKER}" class="align_l" style="text-align: left; padding-left: 10px;">${item.MAKER}</td><!-- SPEC -->
|
|
<td title="${item.REVISION}" class="align_l" style="text-align: left; padding-left: 10px;">${item.REVISION}</td><!-- REVISION -->
|
|
<td title="${item.EO_NO}" class="align_c">${item.EO_NO}</td><!-- REVISION -->
|
|
<td title="${item.EO_DATE}" class="align_c">${item.EO_DATE}</td><!-- REVISION -->
|
|
<td title="${item.PART_TYPE_TITLE}" class="align_c">${item.PART_TYPE_TITLE}</td><!-- SIZE -->
|
|
</tr>
|
|
</c:forEach>
|
|
</c:when>
|
|
<c:otherwise>
|
|
<tr>
|
|
<td colspan="5" align="center">등록된 구조정보가 없습니다.</td>
|
|
</tr>
|
|
</c:otherwise>
|
|
</c:choose>
|
|
</table>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</form>
|
|
</body>
|
|
</html> |