Files
wace_plm/WebContent/WEB-INF/view/salesMng/salesBomReportFormPopup.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

569 lines
22 KiB
Plaintext

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%>
<%@ page import="com.pms.common.utils.*"%>
<%@ page import="java.util.*" %>
<%@include file="/init_jqGrid.jsp"%><%--Expression Language ::: ${fn:escapeXml(str1)} --%>
<c:set var="now" value="<%=new java.util.Date() %>"/>
<c:set var="sysYear"><fmt:formatDate value="${now}" pattern="yyyy" /></c:set>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title><%=Constants.SYSTEM_NAME%></title>
</head>
<c:set var="SUPPLY_OBJID" value="${empty info.SUPPLY_OBJID ? '': info.SUPPLY_OBJID}" />
<style>
.ui-state-highlight a, .ui-widget-content .ui-state-highlight a, .ui-widget-header .ui-state-highlight a {
color: #FF0000;
}
</style>
<script type="text/javascript">
var gridPart;
const MAP_LEV_COLOR = {}; //Level별 색상
$(document).ready(function(){
MAP_LEV_COLOR["1" ] = "#fde9d9";
MAP_LEV_COLOR["2" ] = "#daeef3";
MAP_LEV_COLOR["3" ] = "#e4dfec";
MAP_LEV_COLOR["4" ] = "#ebf1de";
MAP_LEV_COLOR["5" ] = "#f2f2f2";
MAP_LEV_COLOR["6" ] = "#f2dcdb";
MAP_LEV_COLOR["7" ] = "#eeece1";
MAP_LEV_COLOR["8" ] = "#dce6f1";
MAP_LEV_COLOR["9" ] = "#FFFFEB";
MAP_LEV_COLOR["10"] = "#ffffff";
//$('.select2').select2();
//fnc_datepick();
//fnc_getAdminSupCdListAppend("","SUPPLY_OBJID" ,"${info.SUPPLY_OBJID}" );
//fnc_getAdminSupCdListAppend("","SUPPLY_OBJID1","${info.SUPPLY_OBJID1}");
//fnc_getAdminSupCdListAppend("","SUPPLY_OBJID2","${info.SUPPLY_OBJID2}");
//fnc_getAdminSupCdListAppend("","SUPPLY_OBJID3","${info.SUPPLY_OBJID3}");
var jqGridSelect_adminSUPPLY = $.parseJSON($("#jqGridSelect_adminSUPPLY").val()); //공급업체
//var jqGridSelect_adminSUPPLY = fn_getAdminSupCdList(""); //공급업체
/* $("input[name*='PRICE']").each(function() {
$(this).val(fnc_addComma($(this).val().replace(/[^0-9]/g,"")));
}); */
console.log("jqGridSelect_adminSUPPLY:"+jqGridSelect_adminSUPPLY);
$("#btnSave" ).click(function(){ fn_save(); });
gridPart = $("#gridPart").jqGrid({
url: ""
,datatype: "local"
,data : $.parseJSON($("#gridPartData").val())
,colNames: ["OBJID","LAST_PART_OBJID","PARENT_OBJID","PART_OBJID","PARENT_PART_NO","CHILD_OBJID","LEV","MAX_LEV"
,"LEVEL","품번","품명","수량","사양(규격)","후처리","MAKER","PART구분","공급업체","단가","레이져업체","단가","용접업체","단가","가공업체","단가","후처리","단가","단가합","REMARK"]
,colModel: [
{name:"OBJID" , index:"", width: 0, align:"center", hidden: true, sortable:false, editable:false}
,{name:"LAST_PART_OBJID",index:"", width: 0, align:"center", hidden: true, sortable:false, editable:false}
,{name:"PARENT_OBJID" , index:"", width: 0, align:"center", hidden: true, sortable:false, editable:false}
,{name:"PART_OBJID" , index:"", width: 0, align:"center", hidden: true, sortable:false, editable:false}
,{name:"PARENT_PART_NO" , index:"", width: 0, align:"center", hidden: true, sortable:false, editable:false}
,{name:"CHILD_OBJID" , index:"", width: 0, align:"center", hidden: true, sortable:false, editable:false}
,{name:"LEV" , index:"", width: 0, align:"center", hidden: true, sortable:false, editable:false}
,{name:"MAX_LEV" , index:"", width: 0, align:"center", hidden: true, sortable:false, editable:false}
,{name:"LEVEL" , index:"", width: 60, align:"center", hidden:false, sortable:false, editable:false, formatter: col_custom_fmt, unformat:col_custom_fmt_un}
,{name:"PART_NO" , index:"", width:140, align: "left", hidden:false, sortable:false, editable:false, formatter: col_custom_fmt, unformat:col_custom_fmt_un}
,{name:"PART_NAME" , index:"", width:150, align: "left", hidden:false, sortable:false, editable:false}
,{name:"QTY" , index:"", width: 35, align: "right", hidden:false, sortable:false, editable:false}
,{name:"SPEC" , index:"", width:150, align: "left", hidden:false, sortable:false, editable:false}
,{name:"POST_PROCESSING" , index:"", width:110, align: "left", hidden:false, sortable:false, editable:false}
,{name:"MAKER" , index:"", width:100, align: "left", hidden:false, sortable:false, editable:false}
,{name:"PART_TYPE_NAME" , index:"", width:68, align: "center", hidden:false, sortable:false, editable:false}
,{name:"SUPPLY_OBJID" , index:"", width:100, align:"left", hidden:false, sortable:false, editable: true
,edittype :"select"
,formatter :"select"
,editoptions:{
value: jqGridSelect_adminSUPPLY
,dataInit: function(e){ e.style.width = "92%"; e.style.fontSize = 13; }
,dataEvents: [
{type:"change", fn:function(e) {
//var row = $(e.target).closest("tr.jqgrow");
//gridFn.getStep2Cd(this);
}}
]
}
}
,{name:"PRICE" , index:"", width: 80, align: "right", hidden:false, sortable:false, editable: true
,formatter: "integer", formatoptions:{thousandsSeparator:",", defaultValue:""}
,editoptions:{
dataInit: function(e){ e.style.textAlign = "right"; e.style.fontSize = 13; }
,dataEvents: [ {type:"change", fn:function(e) {
gridPartFn.calcRowAll(e);
}}]
}
}
,{name:"SUPPLY_OBJID1" , index:"", width:100, align:"left", hidden:false, sortable:false, editable: true
,edittype :"select"
,formatter :"select"
,editoptions:{
value: jqGridSelect_adminSUPPLY
,dataInit: function(e){ e.style.width = "92%"; e.style.fontSize = 13; }
,dataEvents: [
{type:"change", fn:function(e) {
//var row = $(e.target).closest("tr.jqgrow");
//gridFn.getStep2Cd(this);
}}
]
}
}
,{name:"PRICE1" , index:"", width: 80, align: "right", hidden:false, sortable:false, editable: true
,formatter: "integer", formatoptions:{thousandsSeparator:",", defaultValue:""}
,editoptions:{
dataInit: function(e){ e.style.textAlign = "right"; e.style.fontSize = 13; }
,dataEvents: [ {type:"change", fn:function(e) {
gridPartFn.calcRowAll(e);
}}]
}
}
,{name:"SUPPLY_OBJID2" , index:"", width:100, align:"left", hidden:false, sortable:false, editable: true
,edittype :"select"
,formatter :"select"
,editoptions:{
value: jqGridSelect_adminSUPPLY
,dataInit: function(e){ e.style.width = "92%"; e.style.fontSize = 13; }
,dataEvents: [
{type:"change", fn:function(e) {
//var row = $(e.target).closest("tr.jqgrow");
//gridFn.getStep2Cd(this);
}}
]
}
}
,{name:"PRICE2" , index:"", width: 80, align: "right", hidden:false, sortable:false, editable: true
,formatter: "integer", formatoptions:{thousandsSeparator:",", defaultValue:""}
,editoptions:{
dataInit: function(e){ e.style.textAlign = "right"; e.style.fontSize = 13; }
,dataEvents: [ {type:"change", fn:function(e) {
gridPartFn.calcRowAll(e);
}}]
}
}
,{name:"SUPPLY_OBJID3" , index:"", width:100, align:"left", hidden:false, sortable:false, editable: true
,edittype :"select"
,formatter :"select"
,editoptions:{
value: jqGridSelect_adminSUPPLY
,dataInit: function(e){ e.style.width = "92%"; e.style.fontSize = 13; }
,dataEvents: [
{type:"change", fn:function(e) {
//var row = $(e.target).closest("tr.jqgrow");
//gridFn.getStep2Cd(this);
}}
]
}
}
,{name:"PRICE3" , index:"", width: 80, align: "right", hidden:false, sortable:false, editable: true
,formatter: "integer", formatoptions:{thousandsSeparator:",", defaultValue:""}
,editoptions:{
dataInit: function(e){ e.style.textAlign = "right"; e.style.fontSize = 13; }
,dataEvents: [ {type:"change", fn:function(e) {
gridPartFn.calcRowAll(e);
}}]
}
}
,{name:"SUPPLY_OBJID4" , index:"", width:100, align:"left", hidden:false, sortable:false, editable: true
,edittype :"select"
,formatter :"select"
,editoptions:{
value: jqGridSelect_adminSUPPLY
,dataInit: function(e){ e.style.width = "92%"; e.style.fontSize = 13; }
,dataEvents: [
{type:"change", fn:function(e) {
//var row = $(e.target).closest("tr.jqgrow");
//gridFn.getStep2Cd(this);
}}
]
}
}
,{name:"PRICE4" , index:"", width: 80, align: "right", hidden:false, sortable:false, editable: true
,formatter: "integer", formatoptions:{thousandsSeparator:",", defaultValue:""}
,editoptions:{
dataInit: function(e){ e.style.textAlign = "right"; e.style.fontSize = 13; }
,dataEvents: [ {type:"change", fn:function(e) {
gridPartFn.calcRowAll(e);
}}]
}
}
,{name:"PRICE_SUM" , index:"", width: 80, align: "right", hidden:false, sortable:false, editable: true
,formatter: "integer", formatoptions:{thousandsSeparator:",", defaultValue:""}
,editoptions:{
dataInit: function(e){ e.style.textAlign = "right"; e.style.fontSize = 13; }
,dataEvents: [ {type:"change", fn:function(e) {
//gridPartFn.footerSummary();
}}]
}
}
,{name:"REMARK" , index:"", width:150, align: "left", hidden:false, sortable:false, editable:false}
]
,ignoreCase : true //로컬 검색 및 정렬이 대,소문자를 구분하지 않도록 하려면true
,rownumbers : true //row번호 표시
,viewrecords : true //pager가 있을경우 표시되는 record number
,autowidth : true //그리드 너비가 자동으로 부모 요소의 너비로 다시 계산
,sortable : false //마우스로 열을 끌어다 놓아 열을 재정렬
,shrinkToFit : true //모든 열은 너비에 비례하여 크기가 조정
,forceFit : false //컬럼의 width를 변화시킬때 그리드의 width를 고정 여부
,multiselect : false //선택가능. 체크박스표시
,height : 780
,rowNum : 10000
,jsonReader : {repeatitems: false}
,mtype :"POST"
,footerrow : false //바닥합계
,userDataOnFooter: false //바닥합계
,loadComplete: function(data){ //모든 서버 요청 직후에 실행
var gid = $(this).attr("id");
var grid_wrap_div = $("#gbox_"+gid);
setTimeout("fn_jqGrid_init($('#"+gid+"'), false);", 50); //윈도우크기 비례 자동조절
//footer 커스텀..
$('tr.jqgrow', grid_wrap_div).each(function(i,o){
var lev = $('#gridPart').getRowData(this.id).LEV;
$('td', this).css('background-color', MAP_LEV_COLOR[ lev ]);
var selectedRow = null;
console.log(lev);
// 셀에 마우스 오버 이벤트 추가
/* $("#gridPart").on("mouseover", "tr.jqgrow", function () {
$(this).find("td").css({
background: "#f2f2f2", // 원하는 배경색
});
}); */
// 셀에서 마우스 아웃 이벤트 추가
/* $("#gridPart").on("mouseout", "tr.jqgrow", function () {
$(this).find("td").css({
background: $('td', this).css('background-color', MAP_LEV_COLOR[ lev ]), // 이전 배경색으로 변경
});
}); */
// 클릭한 행 색상 변경
$("#gridPart").on("click", "tr.jqgrow", function () {
// 이전에 선택된 행이 있을 경우 원래 색상으로 복원
if (selectedRow !== null && selectedRow !== this) {
var lev = $('#gridPart').getRowData(selectedRow.id).LEV;
console.log(lev);
if(lev =="1"){
$(selectedRow).find("td").css({
color: "", // 기본 텍스트 색상 (비워두면 원래 색상으로 복원됨)
background: "#fde9d9"
});
}else if(lev =="2"){
$(selectedRow).find("td").css({
color: "", // 기본 텍스트 색상 (비워두면 원래 색상으로 복원됨)
background: "#daeef3"
});
}else{
$(selectedRow).find("td").css({
color: "", // 기본 텍스트 색상 (비워두면 원래 색상으로 복원됨)
background: "#e4dfec"
});
}
}
// 현재 클릭한 행 색상 변경
$(this).find("td").css({
background: "#FFFFFF",
color: "#FF0000" // 원하는 텍스트 색상
});
selectedRow = this; // 클릭한 행 저장
});
});
}
});
if("${param.actType}"!="view"){
gridPartFn.opennEdit(); //수정가능
$('select.editable').select2();
}
$("#btnExcelDown").on("click", function(){
fn_excelDownload();
})
$("#btnExcelUpload").on("click", function(){
fn_excelUpload();
})
/* $("input[name*='PRICE']").on("keyup", function() {
$(this).val(fnc_addComma($(this).val().replace(/[^0-9]/g,"")));
}); */
$("input[name*=PRICE]").each(function(){
$(this).val(fnc_addComma($(this).val()));
});
$("input[name*=QTY]").each(function(){
$(this).val(fnc_addComma($(this).val()));
});
});
var _saving = false;
function fn_save(){
if(fnc_validate('form1')){
if(confirm("저장하시겠습니까?")){
if(_saving){
alert('저장 중입니다. 잠시만 기다려 주세요.');
return;
}
_saving = true;
_startLoading("Loading...");
$("input[name*='QTY']").each(function(){
$(this).val($(this).val().replace(/,/gi,""));
});
$("input[name*='PRICE']").each(function(){
$(this).val($(this).val().replace(/,/gi,""));
});
gridPartFn.closeEdit();
$.ajax({
url:"/salesMng/saveSalesBomReportInfo.do"
,type:"POST"
,data: $("#form1").serialize()
+"&jqGridPart="+encodeURIComponent(JSON.stringify(gridPart.getRowData()))
,dataType:"json"
,async:false
,success:function(data){
_saving = false;
alert(data.message);
opener.fn_search();
self.close();
}
,error: function(jqxhr, status, error){
_saving = false;
alert("저장 중 오류가 발생했습니다.");
}
,complete:function(){
//_endLoading();
_saving = false; // 저장 완료 후 플래그 초기화
},
});
}
}
}
var gridPartFn = {
opennEdit : function() { //수정가능
var ids = gridPart.jqGrid("getDataIDs");
for (var i = 0; i < ids.length; i++) {
//var part_type = gridPart.getRowData(ids[i]).PART_TYPE_NAME;
//if(part_type == ""){
//}else{
// gridPart.jqGrid("editRow",ids[i]);
//}
gridPart.jqGrid("editRow",ids[i]);
}
}
,closeEdit : function() { //수정불가
var ids = gridPart.jqGrid("getDataIDs");
for (var i = 0; i < ids.length; i++) {
gridPart.jqGrid("saveRow", ids[i], /*successFunction*/null, /*url*/"clientArray"/*, extraparam, aftersavefunc,errorfunc, afterrestorefunc*/);
}
}
,calcRowAll : function(e){ //행 모든 컬럼 계산
if(!$.isNumeric( fnc_checkNullDefaultValue($(e.target).val(),"0").replace(/,/g,"") ) ){
Swal.fire("숫자를 입력해주세요"); $(e.target).select(); return;
}else{
$(e.target).val(fnc_addComma($(e.target).val().replace(/[^0-9]/g,"")));
}
var $g = $("#gridPart");
//var rowId = $g.jqGrid('getGridParam', 'selrow'); //선택된행 번호
var rowId = e.target.id.split("_")[0]; //수정중인 행번호 (행선택은 안될수있음)
if(e.target.id == rowId+"_QTY"
|| e.target.id == rowId+"_PRICE"
|| e.target.id == rowId+"_PRICE1"
|| e.target.id == rowId+"_PRICE2"
|| e.target.id == rowId+"_PRICE3"
|| e.target.id == rowId+"_PRICE4"
){
//var v1 = Number( $g.find("#"+rowId+"_QTY").val() );
var v1 = Number( $g.getRowData(rowId).QTY );
var v2 = Number( $g.find("#"+rowId+"_PRICE").val().replace(/,/gi,"") );
var v3 = Number( $g.find("#"+rowId+"_PRICE1").val().replace(/,/gi,"") );
var v4 = Number( $g.find("#"+rowId+"_PRICE2").val().replace(/,/gi,"") );
var v5 = Number( $g.find("#"+rowId+"_PRICE3").val().replace(/,/gi,"") );
var v6 = Number( $g.find("#"+rowId+"_PRICE4").val().replace(/,/gi,"") );
//공급가 = 수량 *(공급단가+레이져단가+용접단가+가공단가)
$g.find("#"+rowId+"_PRICE_SUM").val(numberWithCommas(v1 * (v2+v3+v4+v5+v6)));
}
//this.footerSummary();
}
}
/*
Custom Formatter Parameters Description
◆ cellvalue: value to be formatted
◆ options : { rowId: rid, colModel: {name: , index, width, align, ...}}
◆ rowObject : row data
*/
function col_custom_fmt(cellvalue, options, rowObject) {
//console.log("rid : "+ options.rowId + " colModel["+JSON.stringify(options.colModel)+"]");
var return_fmt = "";
cellvalue = fnc_checkNull(cellvalue);
var max_lev = rowObject.MAX_LEV;
var lev = rowObject.LEV;
if(options.colModel.name == "LEVEL" ){ //LEVEL
var html_col= '';
var html_td = '';
var td_sty = 'style="text-align:center; border-right-width:0px; border-bottom-width:0px; background-color: '+MAP_LEV_COLOR[lev]+';"';
for(i=1; i<=max_lev; i++){
html_col += '<col width="5%"/>';
if(i==lev){
html_td += '<td '+td_sty+'>*</td>';
}else{
html_td += '<td '+td_sty+'></td>';
}
}
return_fmt = '<table class="plm_table"><colgroup>'+html_col+'</colgroup><tr>'+html_td+'</tr></table>';
}else if(options.colModel.name == "PART_NO" ){
//var url = "/partMng/partMngDetailPopUp.do?OBJID="+rowObject.PART_OBJID;
var url = "/partMng/partMngDetailPopUp.do?OBJID="+rowObject.LAST_PART_OBJID;
var empty = (fnc_checkNull(cellvalue)=="") ? "empty_" : "";
return_fmt = '<a href="#" onclick="javascript:fn_centerPopup(1900, 900, \''+url+'\', \'partMngDetailPopUp\');">'+cellvalue+'</a>';
}
return return_fmt;
}
/**
unFormatter : grid1.getRowData(), getCell(n,colname) 에서 값만 나오게하는 함수
*/
function col_custom_fmt_un(cellvalue, options, cell) {
return cellvalue;
}
function fn_getAdminSupCdList(codeId){
var resultStr = {};
$.ajax({
url:"/common/getAdminSupCdList.do",
type:"POST",
data:{"codeId":codeId},
dataType:"json",
async:false,
success:function(data){
var defaultOptions = [{"CODE_ID":'',"CODE_NAME":"선택"}];
var resultList = data
var concatList = defaultOptions.concat(resultList);
for(var i=0;i<concatList.length;i++){
var commonCodeId = concatList[i].CODE_ID;
var commonCodeName = concatList[i].CODE_NAME;
resultStr[i] = (commonCodeId,commonCodeName);
}
},
error: function(jqxhr, status, error){
}
});
return resultStr;
}
function fn_excelDownload(){
document.form1.action = "/salesMng/salesBomReportFormPopup.do";
document.form1.actionType.value = "excel";
document.form1.submit();
}
function fn_excelUpload(){
var OBJID = $("#OBJID").val();
var PARENT_OBJID = $("#PARENT_OBJID").val();
fn_centerPopup(1900, 900, "/salesMng/salesBomExcelImportPopUp.do?OBJID="+OBJID+"&PARENT_OBJID="+PARENT_OBJID, "");
}
</script>
<body>
<form name="form1" id="form1" action="" method="post">
<input type="hidden" name="OBJID" id="OBJID" value="${info.OBJID }">
<input type="hidden" name="PARENT_OBJID" id="PARENT_OBJID" value="${info.PARENT_OBJID}">
<input type="hidden" name="objId" id="objId" value="${info.OBJID }">
<input type="hidden" name="parent_objId" id="parent_objId" value="${info.PARENT_OBJID}">
<input type="hidden" name="actionType" id="actionType" value="">
<textarea style="width:0px; height:0px; visibility: hidden;" id="jqGridSelect_adminSUPPLY">${code_map.jqGridSelect_adminSUPPLY}</textarea><!-- 코드동적설정 -->
<section>
<div id="businessPopupFormWrap">
<%--
<div>
<table class="pmsPopupForm">
<colgroup>
<col width="40%">
<col width="60%">
</colgroup>
<tr>
<td class="input_title"><label for="">공급업체</label></td>
<td class="input_sub_title"><select name="SUPPLY_OBJID" id="SUPPLY_OBJID" class="select2" required reqTitle="공급업체" type="select"><option value="">전체</option>${code_map.SUPPLY_OBJID}</select></td>
</tr>
<tr>
<td class="input_title"><label for="">단가</label></td>
<td class="input_sub_title"><input type="text" name="PRICE" id="PRICE" value="${info.PRICE }" required reqTitle="단가" ></td>
</tr>
<tr>
<td class="input_title"><label for="">레이져업체</label></td>
<td class="input_sub_title"><select name="SUPPLY_OBJID1" id="SUPPLY_OBJID1" class="select2" required reqTitle="레이져업체" type="select"><option value="">전체</option>${code_map.SUPPLY_OBJID1}</select></td>
</tr>
<tr>
<td class="input_title"><label for="">단가</label></td>
<td class="input_sub_title"><input type="text" name="PRICE1" id="PRICE1" value="${info.PRICE1 }" required reqTitle="단가" ></td>
</tr>
<tr>
<td class="input_title"><label for="">용접업체</label></td>
<td class="input_sub_title"><select name="SUPPLY_OBJID2" id="SUPPLY_OBJID2" class="select2" required reqTitle="용접업체" type="select"><option value="">전체</option>${code_map.SUPPLY_OBJID2}</select></td>
</tr>
<tr>
<td class="input_title"><label for="">단가</label></td>
<td class="input_sub_title"><input type="text" name="PRICE2" id="PRICE2" value="${info.PRICE2 }" required reqTitle="단가" ></td>
</tr>
<tr>
<td class="input_title"><label for="">가공업체</label></td>
<td class="input_sub_title"><select name="SUPPLY_OBJID3" id="SUPPLY_OBJID3" class="select2" required reqTitle="가공업체" type="select"><option value="">전체</option>${code_map.SUPPLY_OBJID3}</select></td>
</tr>
<tr>
<td class="input_title"><label for="">단가</label></td>
<td class="input_sub_title"><input type="text" name="PRICE3" id="PRICE3" value="${info.PRICE3 }" required reqTitle="단가" ></td>
</tr>
</table>
</div>
--%>
<div class="plm_table_wrap" style="overflow-x: auto;">
<table id="gridPart" style="width:98%"></table>
<!-- <div id="gridPartPager"></div> -->
<textarea style="width:0px; height:0px; visibility: hidden;" id="gridPartData">${gridPartData}<c:if test="${empty gridPartData}">[]</c:if></textarea><!-- [{},{},{}] -->
</div>
</div>
<div class="btn_wrap" style="height: 50px;">
<div class="plm_btn_wrap_center">
<c:if test="${param.actType != 'view' }">
<input type="button" value="저장" id="btnSave" class="plm_btns create">
</c:if>
<input type="button" value="닫기" id="btnClose" class="plm_btns" onclick="javascript: self.close(0); return false;">
<input type="button" value="Excel Download" id="btnExcelDown" class="plm_btns">
<input type="button" value="Excel Upload" id="btnExcelUpload" class="plm_btns">
</div>
</div>
</section>
</form>
</body>
</html>