Files
wace_plm/WebContent/WEB-INF/view/partMng/structureAscendingMultiList.jsp
chpark da06c4684c Initial commit: WACE PLM with database initialization features
- Add Docker Compose configurations for dev, prod, and standalone environments
- Add database initialization scripts (init-db.sh, init-db-docker.sh)
- Add enhanced start-docker-linux.sh with DB init support
- Add comprehensive database initialization guide
- Support for automatic dbexport.pgsql import on first run
- Include safety checks for production environment
2025-08-29 15:46:08 +09:00

836 lines
26 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_jqGrid.jsp"%>
<%
request.setCharacterEncoding("UTF-8");
%>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title><%=Constants.SYSTEM_NAME%></title>
<style type="text/css">
::-webkit-scrollbar-thumb {
background: linear-gradient(to bottom, #f5d78e, #f5d78e);
}
</style>
<script>
var headerNames = [];
var colModels = [];
var grid;
$(document).ready(function(){
headerNames = [
'Part No ',
'Part Name',
'Unit',
/* 'Qty', */
'Revision',
'Material',
'SPEC',
'Weight',
'Remark',
'PART_OBJID',
'EO_OBJID'
];
colModels =
[
{name:'PART_NO', index:'PART_NO', align:'left', width:'200px', frozen:true},
{name:'PART_NAME', index:'PART_NAME', align:'left', width:'300px', frozen:true},
{name:'UNIT_TITLE', index:'UNIT_TITLE', align:'center', width:'100px'},
/* {name:'QTY', index:'QTY', align:'center', width:'100px'}, */
{name:'REVISION', index:'REVISION', align:'center', width:'100px', frozen:true},
{name:'MATERIAL', index:'MATERIAL', align:'center', width:'100px'},
{name:'SPEC', index:'SPEC', align:'center', width:'200px'},
{name:'WEIGHT', index:'WEIGHT', align:'center', width:'100px'},
{name:'REMARK', index:'REMARK', align:'center', width:'300px'},
{name:'PART_OBJID', index:'PART_OBJID', align:'center', width:'100px', hidden: true},
{name:'EO_OBJID', index:'EO_OBJID', align:'center', width:'100px', hidden: true}
];
$("#mainGrid").jqGrid({
height : 630,
colNames : headerNames,
colModel : colModels,
autowidth : true,
shrinkToFit : false,
rownumbers : true,
viewrecords : true
});
$("input[type=text]").keyup(function(e){
if(e.keyCode == 13){
$("#btnSearch").trigger("click");
}
});
$("#btnSearch").click(function(){
fn_search();
});
// $("#btnExcel").click(function(){
// fn_excelExport($("#connectedList"),"BOM_REPORT_정전개");
// });
$("#btnExcel").click(function(){
document.form1.action = "/partMng/getStructureAscendingMultiListExcel.do";
document.form1.submit();
});
//1level만 활성화 시킨다.
$(".dataTr").each(function(i){
var lev = $(this).attr("data-LEVEL");
if(lev == 1){
$(this).show();
}
});
/*
//클릭시 하위정보를 토글한다.
$(".dataTr").click(function(){
var choosedLev = $(this).attr("data-LEVEL");
var choosedBomObjId = $(this).attr("data-BOM_REPORT_OBJID");
$(".dataTr").each(function(i){
var bomReportObjId = $(this).attr("data-BOM_REPORT_OBJID");
var lev = $(this).attr("data-LEVEL");
if(bomReportObjId == choosedBomObjId){
//Swal.fire("bomReportObjId : "+bomReportObjId+", choosedBomObjId : "+choosedBomObjId);
if(lev != "1"){
$(this).toggle();
}
}
});
});
*/
$(".btnToggle").click(function(){
var src = $(this).attr("src");
if(src.indexOf("Plus")>-1){
$(this).attr("src", "/images/btnMinus.png");
}else if(src.indexOf("Minus")>-1){
$(this).attr("src", "/images/btnPlus.png");
}
var choosedBomObjId = $(this).attr("data-BOM_REPORT_OBJID");
var choosedObjId = $(this).attr("data-OBJID");
var choosedTopObjId = $(this).attr("data-TOP_OBJID");
var choosedSubTopObjId = $(this).attr("data-SUB_TOP_OBJID");
//Swal.fire("choosedBomObjId : "+choosedBomObjId+"\nchoosedObjId : "+choosedObjId+"\nchoosedTopObjId : "+choosedTopObjId+"\nchoosedSubTopObjId : "+choosedSubTopObjId);
$(".dataTr").each(function(i){
var bomReportObjId = $(this).attr("data-BOM_REPORT_OBJID");
var objId = $(this).attr("data-OBJID");
var topObjId = $(this).attr("data-TOP_OBJID");
var subTopObjId = $(this).attr("data-SUB_TOP_OBJID");
//Swal.fire("bomReportObjId : "+bomReportObjId+"\nobjId : "+objId+"\ntopObjId : "+topObjId+"\nsubTopObjId : "+subTopObjId);
var lev = $(this).attr("data-LEVEL");
if(choosedTopObjId == topObjId){
//Swal.fire("bomReportObjId : "+bomReportObjId+", choosedBomObjId : "+choosedBomObjId);
if(lev != "1"){
var topObjId = $(this).attr("data-TOP_OBJID");
var realLevel = $(this).attr("data-REAL_LEVEL");
//Swal.fire(realLevel);
//Swal.fire("11 choosedObjId : "+choosedObjId+", topObjId : "+topObjId);
if(realLevel != "1"){
topObjId = $(this).attr("data-SUB_TOP_OBJID");
}
//Swal.fire("22 choosedObjId : "+choosedObjId+", topObjId : "+topObjId);
if(choosedObjId == topObjId){
$(this).toggle();
}
}
}
});
});
/* $(".btnToggle").click(function(){
var src = $(this).attr("src");
if(src.indexOf("Plus")>-1){
$(this).attr("src", "/images/btnMinus.png");
}else if(src.indexOf("Minus")>-1){
$(this).attr("src", "/images/btnPlus.png");
}
var choosedBomObjId = $(this).attr("data-BOM_REPORT_OBJID");
var choosedObjId = $(this).attr("data-OBJID");
$(".dataTr").each(function(i){
var bomReportObjId = $(this).attr("data-BOM_REPORT_OBJID");
var lev = $(this).attr("data-LEVEL");
if(bomReportObjId == choosedBomObjId){
//Swal.fire("bomReportObjId : "+bomReportObjId+", choosedBomObjId : "+choosedBomObjId);
if(lev != "1"){
var topObjId = $(this).attr("data-TOP_OBJID");
var realLevel = $(this).attr("data-REAL_LEVEL");
//Swal.fire(realLevel);
//Swal.fire("11 choosedObjId : "+choosedObjId+", topObjId : "+topObjId);
if(realLevel != "1"){
topObjId = $(this).attr("data-SUB_TOP_OBJID");
}
//Swal.fire("22 choosedObjId : "+choosedObjId+", topObjId : "+topObjId);
if(choosedObjId == topObjId){
$(this).toggle();
}
}
}
});
}); */
//level별 색상
$(".dataTr").each(function(i){
var lev = $(this).attr("data-REAL_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");
}
});
$(".btnEODetail").click(function(){
var objId = $(this).attr("data-EO_OBJID");
fn_openEOPopup(objId);
});
$(".btnPartDetail").click(function(){
var objId = $(this).attr("data-PART_OBJID");
fn_openPartPopup(objId);
});
$("#SEARCH_PRODUCT_MGMT_OBJID").change(function(){
fn_productUPGList(this.value, "SEARCH_PRODUCT_MGMT_UPG", "");
fn_productVCList("","SEARCH_PRODUCT_MGMT_VC", "");
});
$("#SEARCH_PRODUCT_MGMT_UPG").change(function(){
fn_productVCList(this.value,"SEARCH_PRODUCT_MGMT_VC", "");
});
fnc_datepick("SEARCH_DEPLOY_DATE_FROM", "SEARCH_DEPLOY_DATE_TO");
fnc_getProductMgmtList("SEARCH_PRODUCT_MGMT_OBJID", "${param.SEARCH_PRODUCT_MGMT_OBJID}");
fn_productUPGList("${param.SEARCH_PRODUCT_MGMT_OBJID}", "SEARCH_PRODUCT_MGMT_UPG", "${param.SEARCH_PRODUCT_MGMT_UPG}");
fn_productVCList("${param.SEARCH_PRODUCT_MGMT_UPG}","SEARCH_PRODUCT_MGMT_VC", "${param.SEARCH_PRODUCT_MGMT_VC}");
fnc_getUserList2("SEARCH_WRITER", "${param.SEARCH_WRITER}");
fn_search();
});
function fn_productUPGList(productMgmtObjId,selectboxId,selectedVal){
$("#"+selectboxId).empty();
$("#"+selectboxId).append("<option value=''>선택</option>");
if("" != productMgmtObjId){
$.ajax({
url:"/common/getProductUPGList.do",
type:"POST",
data:{"isJson":true,"PRODUCT_MGMT_OBJID":productMgmtObjId},
dataType:"json",
async:false,
success:function(data){
resultList = data
if(0 < resultList.length){
for (var i = 0; i < resultList.length; i++) {
var commonCodeId = resultList[i].CODE;
var commonCodeName = resultList[i].UPG_NAME+"("+resultList[i].SPEC_NAME+")";
$("#"+selectboxId).append("<option value='"+commonCodeId+"'>"+commonCodeName+"</option>");
}
$("#"+selectboxId).val(selectedVal);
}
},
error: function(jqxhr, status, error){
}
});
}
}
function fn_productVCList(productUPGObjId,selectboxId,selectedVal){
$("#"+selectboxId).empty();
$("#"+selectboxId).append("<option value=''>선택</option>");
if("" != productUPGObjId){
$.ajax({
url:"/common/getProductUPGList.do",
type:"POST",
data:{"isJson":true,"PRODUCT_MGMT_UPG":productUPGObjId},
dataType:"json",
async:false,
success:function(data){
resultList = data
if(0 < resultList.length){
for (var i = 0; i < resultList.length; i++) {
var commonCodeId = resultList[i].CODE;
var commonCodeName = resultList[i].VC;
$("#"+selectboxId).append("<option value='"+commonCodeId+"'>"+commonCodeName+"</option>");
}
$("#"+selectboxId).val(selectedVal);
}
},
error: function(jqxhr, status, error){
}
});
}
}
function fn_check(){
var carTypeObjId = fnc_checkNull($("#search_carObjId").val());
var productObjId = fnc_checkNull($("#search_productObjId").val());
var partNo = fnc_checkNull($("#search_partNo").val());
var partName = fnc_checkNull($("#search_partName").val());
if(carTypeObjId == "" && productObjId == "" && partNo == "" && partName == ""){
Swal.fire("조회조건을 설정해주시기 바랍니다.");
return false;
}
if(partName == "" && partNo.length < 5){
Swal.fire("Part No는 최소 5자이상 입력하시기 바랍니다.");
return false;
}
if(partNo == "" && partName.length < 5){
Swal.fire("Part Name은 최소 5자이상 입력하시기 바랍니다.");
return false;
}
return true;
}
function fn_openEOPopup(objId){
window.open("",target,"width=1000,height=800");
window.open("/eoMng/eoMngDetailPopUp.do?OBJID="+objId, "tempEoListPopup","width=1000,height=800,toolbar=no, status=no, menubar=no, location=no, scrollbars=yes, resizable=yes");
}
function fn_openPartPopup(objId){
window.open("/partMng/partMngDetailPopUp.do?OBJID="+objId, "tempPartListPopup", "width=600, height=700, toolbar=no, status=no, menubar=no, location=no, scrollbars=yes, resizable=yes");
}
var gridFn = {
search : function() {
grid.setGridParam({
url : "/partMng/getStructureAscendingList.do",
datatype : "json",
postData : $("#form1").serialize()
}).trigger("reloadGrid");
}
}
function fn_search(){
$.ajax({
url:"/partMng/getStructureAscendingMultiList.do",
type:"POST",
data:$("#form1").serialize(),
dataType:"json",
async:false,
success:function(data){
var vcList = data.DATA_VC;
var resultList = data.DATA;
var maxLevel = 0;
var firstCol = "LEV_1";
var newHeaderNames = [];
var newColModels = [];
$("#totalCNT").text(resultList.length);
// Swal.fire(resultList.length)
// if(0 < resultList.length){
// for (var i = 0; i < resultList.length; i++) {
// if(i == 0){
// maxLevel = resultList[i].MAX_LEVEL;
// var levelHeaders = [];
// var levelColModels = [];
// for(var j=0;j<maxLevel;j++){
// k = Number(j)+1;
// levelHeaders.push(k);
// levelColModels.push({name:"LEV_"+k, index:"LEV_"+k, align:'center', width:'20px' ,frozen:true});
// }
// for(var j=0;j<vcList.length;j++){
// k = Number(j)+1;
// levelHeaders.push(vcList[j].VC);
// levelColModels.push({name:"VC_"+k, index:"VC_"+k, align:'center', width:'40px' ,frozen:true});
// }
// newHeaderNames = levelHeaders.concat(headerNames);
// newColModels = levelColModels.concat(colModels);
// $("#mainGrid").jqGrid("GridUnload");
// $("#mainGrid").jqGrid({
// height : 630,
// colNames : newHeaderNames,
// colModel : newColModels,
// autowidth : true,
// shrinkToFit : false,
// viewrecords : true,
// onCellSelect: function(rowid, iCol, cellcontent, e) {
// var cm = $(this).jqGrid("getGridParam","colModel");
// if("PART_NO" == cm[iCol].name){
// var row = $(this).getRowData(rowid);
// var partObjId = row.PART_OBJID;
// if("" != partObjId){
// fn_openPartPopup(partObjId);
// }
// }
// if("EO_NO" == cm[iCol].name){
// var row = $(this).getRowData(rowid);
// var eoObjId = row.EO_OBJID;
// if("" != eoObjId){
// fn_openEOPopup(eoObjId);
// }
// }
// }
// });
// $("#mainGrid").jqGrid("setFrozenColumns");
// }
// $("#mainGrid").jqGrid('addRowData',i+1,resultList[i]);
// }
// }else{
// $("#mainGrid").jqGrid("GridUnload");
// $("#mainGrid").jqGrid({
// height : 630,
// colNames : headerNames,
// colModel : colModels,
// autowidth : true,
// shrinkToFit : false,
// rownumbers : true,
// viewrecords : true
// });
// }
maxLevel = resultList[1].MAX_LEVEL;
var appendTextHead = "";
appendTextHead += " <colgroup>";
for (var i = 0; i < maxLevel; i++) {
appendTextHead += " <col width='1%' />";
}
for(var j=0;j<vcList.length;j++){
appendTextHead += " <col width='2%' />";
}
appendTextHead += " <col width='7%' />";
appendTextHead += " <col width='10%' />";
appendTextHead += " <col width='5%' />";
appendTextHead += " <col width='5%' />";
appendTextHead += " <col width='5%' />";
appendTextHead += " <col width='5%' />";
appendTextHead += " <col width='5%' />";
appendTextHead += " <col width='10%' />";
appendTextHead += " <col width='8%' />";
appendTextHead += " <col width='10%' />";
appendTextHead += " </colgroup>";
appendTextHead += " <thead>";
appendTextHead += " <tr class='plm_thead'>";
for (var i = 0; i < maxLevel; i++) {
appendTextHead += " <td>"+ (i+1) +"</td>";
}
for(var j=0;j<vcList.length;j++){
appendTextHead += " <td>"+ vcList[j].VC +"</td>";
}
appendTextHead += " <td>Part No</td>";
appendTextHead += " <td>Part Name</td>";
appendTextHead += " <td>UNIT</td>";
appendTextHead += " <td>REVISION</td>";
appendTextHead += " <td>EO NO</td>";
appendTextHead += " <td>EO DATE</td>";
appendTextHead += " <td>MATERIAL</td>";
appendTextHead += " <td>SPEC</td>";
appendTextHead += " <td>WEIGHT</td>";
appendTextHead += " <td>Remark</td>";
appendTextHead += " </tr>";
appendTextHead += " </thead>";
$("#headtr").append(appendTextHead);
var appendText = "";
appendText += " <colgroup>";
for (var i = 0; i < maxLevel; i++) {
appendText += " <col width='1%' />";
}
for(var j=0;j<vcList.length;j++){
appendText += " <col width='2%' />";
}
appendText += " <col width='7%' />";
appendText += " <col width='10%' />";
appendText += " <col width='5%' />";
appendText += " <col width='5%' />";
appendText += " <col width='5%' />";
appendText += " <col width='5%' />";
appendText += " <col width='5%' />";
appendText += " <col width='10%' />";
appendText += " <col width='8%' />";
appendText += " <col width='10%' />";
appendText += " </colgroup>";
if (null != resultList) {
$("#connectedList").empty();
$("#connectedList").append(appendText);
// var ck = resultList[1].VC_1
// Swal.fire(ck)
// Swal.fire(resultList[1].VC_2)
// Swal.fire(resultList[1].VC_3)
// Swal.fire(resultList[1].VC_4)
var ck = "";
if (0 < resultList.length) {
for (var i = 0; i < resultList.length; i++) {
appendText = "<tr style='text-align:center;'>";
for (var j = 0; j < maxLevel; j++) {
if(resultList[i].LEV == (j+1)){
appendText += " <td> * </td>";
}else{
appendText += " <td></td>";
}
}
for(var k=0;k<vcList.length;k++){
if(k==0){
ck = fnc_checkNull(resultList[i].VC_1);
// console.log("ck1 :: " + ck)
if(ck == ""){
appendText += " <td>0</td>";
}else{
appendText += " <td>"+ck+"</td>";
}
}else if(k==1){
ck = fnc_checkNull(resultList[i].VC_2);
if(ck == ""){
appendText += " <td>0</td>";
}else{
appendText += " <td>"+ck+"</td>";
}
}else if(k==2){
ck = fnc_checkNull(resultList[i].VC_3);
if(ck == ""){
appendText += " <td>0</td>";
}else{
appendText += " <td>"+ck+"</td>";
}
}else if(k==3){
ck = fnc_checkNull(resultList[i].VC_4);
if(ck == ""){
appendText += " <td>0</td>";
}else{
appendText += " <td>"+ck+"</td>";
}
}else if(k==4){
ck = fnc_checkNull(resultList[i].VC_5);
if(ck == ""){
appendText += " <td>0</td>";
}else{
appendText += " <td>"+ck+"</td>";
}
}else if(k==5){
ck = fnc_checkNull(resultList[i].VC_6);
if(ck == ""){
appendText += " <td>0</td>";
}else{
appendText += " <td>"+ck+"</td>";
}
}else if(k==6){
ck = fnc_checkNull(resultList[i].VC_7);
if(ck == ""){
appendText += " <td>0</td>";
}else{
appendText += " <td>"+ck+"</td>";
}
}else if(k==7){
ck = fnc_checkNull(resultList[i].VC_8);
if(ck == ""){
appendText += " <td>0</td>";
}else{
appendText += " <td>"+ck+"</td>";
}
}else if(k==8){
ck = fnc_checkNull(resultList[i].VC_9);
if(ck == ""){
appendText += " <td>0</td>";
}else{
appendText += " <td>"+ck+"</td>";
}
}else if(k==9){
ck = fnc_checkNull(resultList[i].VC_10);
if(ck == ""){
appendText += " <td>0</td>";
}else{
appendText += " <td>"+ck+"</td>";
}
}else if(k==10){
ck = fnc_checkNull(resultList[i].VC_2);
if(ck == ""){
appendText += " <td>0</td>";
}else{
appendText += " <td>"+ck+"</td>";
}
}
}
appendText += " <td><a href='#' onclick='openPartMngPopup("+ resultList[i].PART_OBJID +");'>" + resultList[i].PART_NO+ "</a></td>";
appendText += " <td style='text-align: left; padding-left: 5px;'>" + resultList[i].PART_NAME+ "</td>";
ck = fnc_checkNull(resultList[i].UNIT_TITLE);
if(ck == ""){
appendText += " <td> </td>";
}else{
appendText += " <td>"+ck+"</td>";
}
appendText += " <td>" + resultList[i].REVISION+ "</td>";
ck = fnc_checkNull(resultList[i].EO_NO);
if(ck == ""){
appendText += " <td> </td>";
}else{
appendText += " <td>"+ck+"</td>";
}
ck = fnc_checkNull(resultList[i].EO_DATE);
if(ck == ""){
appendText += " <td> </td>";
}else{
appendText += " <td>"+ck+"</td>";
}
appendText += " <td>" + resultList[i].MATERIAL+ "</td>";
appendText += " <td style='text-align: left; padding-left: 5px;'>" + resultList[i].SPEC+ "</td>";
appendText += " <td>" + resultList[i].WEIGHT+ "</td>";
appendText += " <td>" + resultList[i].REMARK+ "</td>";
appendText += "</tr>";
$("#connectedList").append(appendText);
}
} else {
appendText+=" <tr style='text-align: center;'>";
appendText+=" <td align='center' colspan='9'>연결된 데이터가 없습니다.</td>";
appendText+=" </tr>";
$("#connectedList").append(appendText);
}
// $("#connectedList").append(appendText);
}
},
error: function(jqxhr, status, error){
}
});
}
function openPartMngPopup(objId){
var hiddenForm = document.hiddenForm;
var url = "/partMng/partMngFormPopUp.do";
if("" != objId){
url = "/partMng/partMngDetailPopUp.do";
}
var target = "partMngPopUp";
window.open(url,target,"width=600, height=700, menubars=no, scrollbars=yes, resizable=yes");
hiddenForm.action = url;
hiddenForm.OBJID.value = objId;
hiddenForm.target = target;
hiddenForm.submit();
}
function fn_excelExport(pGridObj,pFileName){
var mya = pGridObj.getDataIDs();
var data = pGridObj.getRowData(mya[0]);
var colNames=new Array();
var ii=0;
for (var d in data){ colNames[ii++] = d; }
//컬럼 헤더 가져오기
var columnHeader = pGridObj.jqGrid('getGridParam','colNames') + '';
var arrHeader = columnHeader.split(',');
var html="<table border=1><tr>";
for ( var y = 0; y < arrHeader.length; y++ ) {
var hName = arrHeader[y];
if("PART_OBJID" == hName || "EO_OBJID" == hName){
continue;
}
html = html + "<td><b>" + arrHeader[y] + "</b></td>";
}
html = html + "</tr>";
//값 불러오기
for(var i=0;i< mya.length;i++) {
var datac= pGridObj.getRowData(mya[i]);
html = html +"<tr>";
for(var j=0; j< colNames.length;j++){
if("PART_OBJID" == colNames[j] || "EO_OBJID" == colNames[j]){
continue;
}
html=html + '<td>' + datac[colNames[j]]+"</td>";
}
html = html+"</tr>";
}
html=html+"</table>"; // end of line at the end
document.EXCEL_.csvBuffer.value = html;
document.EXCEL_.fileName.value = pFileName;
document.EXCEL_.target='_new';
document.EXCEL_.submit();
}
</script>
</head>
<body class="backcolor">
<form name="hiddenForm" id="hiddenForm" method="post">
<input type="hidden" name="OBJID" id="OBJID">
</form>
<form id="EXCEL_" name="EXCEL_" action="/partMng/structureAscendingExcelList.do" method="post">
<input type="hidden" name="csvBuffer" id="csvBuffer" value="">
<input type="hidden" name="fileName" id="fileName" value="">
</form>
<form name="form1" id="form1" action="" method="post">
<input type="hidden" name="actionType" id="actionType" value="" />
<input type="hidden" name="root_code" id="root_code" value="${param.root_code}" />
<input type="hidden" name="code_id" id="code_id" value="${param.code_id}" />
<input type="hidden" name="UPG_NAME" id="UPG_NAME" value="${param.UPG_NAME}" />
<input type="hidden" name="product_code" id="product_code" value="${param.product_code}" />
<div class="min_part_enroll">
<div class="content-box">
<div class="content-box-s">
<div class="plm_menu_name">
<h2>
<span>BOM Report 멀티 정전개 - ${param.product_code} - ${param.UPG_NAME}</span>
</h2>
</div>
<div id="plmSearchZon">
<%-- <table>
<tbody>
<tr>
<td class="align_r">
<label>기종명</label>
</td>
<td>
<select name="SEARCH_PRODUCT_MGMT_OBJID" id="SEARCH_PRODUCT_MGMT_OBJID" class="select2"></select>
</td>
<td class="align_r">
<label>UPG Name</label>
</td>
<td>
<select name="SEARCH_PRODUCT_MGMT_UPG" id="SEARCH_PRODUCT_MGMT_UPG" title="UPG" required type="select"></select>
</td>
<td class="align_r">
<label>VC</label>
</td>
<td>
<select name="SEARCH_PRODUCT_MGMT_VC" id="SEARCH_PRODUCT_MGMT_VC" title="VC" required type="select"></select>
</td>
<td class="align_r">
<label>담당자</label>
</td>
<td>
<select name="SEARCH_WRITER" id="SEARCH_WRITER" style="width:200px;" autocomplete="off" class="select2"></select>
</td>
<td class="align_r">
<label>배포일</label>
</td>
<td>
<input type="text" name="SEARCH_DEPLOY_DATE_FROM" id="SEARCH_DEPLOY_DATE_FROM" style="width:90px;" autocomplete="off" value="${param.SEARCH_DEPLOY_DATE_FROM}">~
<input type="text" name="SEARCH_DEPLOY_DATE_TO" id="SEARCH_DEPLOY_DATE_TO" style="width:90px;" autocomplete="off" value="${param.SEARCH_DEPLOY_DATE_TO}">
</td>
</tr>
</tbody>
</table> --%>
</div>
<div class="contents_page_basic_margin">
<div class="btn_wrap">
<div class="plm_btn_wrap">
<input type="button" value="Excel Download" class="plm_btns" id="btnExcel">
<!-- <input type="button" value="조회" class="plm_btns" id="btnSearch"> -->
</div>
</div>
<!-- <div class="ascendig_text">PartNo 혹은 Part Name을 통하여 조회 가능합니다.</div> -->
<div class="ascendig_text">
<font size="3px">총 <span id="totalCNT"></span>건</font>
</div>
<div class="plm_table_wrap container" style="overflow-x:scroll;width:100%;">
<div>
<div style="overflow-y:scroll;">
<table class="plm_table" id="headtr" >
</table>
</div>
<div>
<div class="plm_scroll_table" style="height:710px;">
<table class="plm_table" id="connectedList"></table>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</form>
</body>
<style>
.container::-webkit-scrollbar-thumb {background: linear-gradient(to bottom, #f5d78e, #f5d78e) !important;}
.container::-webkit-scrollbar-track {background-color: white !important;}
.container::-webkit-scrollbar-button { display: none !important;}
</style>
</html>