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

660 lines
20 KiB
Plaintext

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ page import="com.pms.common.utils.*"%>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%>
<%@ page import="java.util.*" %>
<%@include file= "/init.jsp" %>
<%
PersonBean person = (PersonBean)session.getAttribute(Constants.PERSON_BEAN);
String userId = CommonUtils.checkNull(person.getUserId());
%>
<!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>
</head>
<script>
$(document).ready(function(){
$("#btnClose").click(function(){
self.close(0);
});
$("#btnReg").click(function(){
fn_openOrderSpecMngFormPopUp("");
});
$("#btnDelete").click(function(){
fn_deleteOrderSpecMng();
});
$("#btnSave").click(function(){
fn_save();
});
fnc_setFileDropZone("shapeDropZone", "${resultMap.OBJID}", "PART_SHAPE_IMG", "Part 형상", "fileAreaDraw",true,null,null,null);
fnc_setFileDropZone("ecdDropZone", "${resultMap.OBJID}", "ECD_DOC", "ECD 첨부파일", "fileAreaDraw",true,null,null,null);
fnc_setFileDropZone("3dCadDropZone", "${resultMap.OBJID}", "3D_CAD", "3D CAD 첨부파일", "fileAreaDraw",true,null,null,null);
fnc_setFileDropZone("2dDrawingCadDropZone", "${resultMap.OBJID}", "2D_DRAWING_CAD", "2D(Drawing) CAD 첨부파일", "fileAreaDraw",true,null,null,null);
fnc_setFileDropZone("2dPDFCadDropZone", "${resultMap.OBJID}", "2D_PDF_CAD", "2D(PDF) CAD 첨부파일", "fileAreaDraw",true,null,null,null);
fileAreaDraw();
fnc_datepick();
fnc_getCodeListAppend("<%=Constants.UNIT_CODE%>","UNIT","${resultMap.UNIT}");
fnc_getCodeListAppend("<%=Constants.PART_TYPE_CODE%>","PART_TYPE","${resultMap.PART_TYPE}");
fnc_getCodeListAppend("<%=Constants.MATERIAL_CODE%>","MATERIAL","${resultMap.MATERIAL}");
fnc_getCodeListAppend("<%=Constants.SPEC_NO_CODE%>","SPEC_NO","${resultMap.SPEC_NO}");
fnc_getCodeListAppend("<%=Constants.DESIGN_APPLY_POINT_CODE%>","DESIGN_APPLY_POINT","${resultMap.DESIGN_APPLY_POINT}");
fnc_getCodeListAppend("<%=Constants.SOURCING_CODE%>","SOURCING_CODE","${resultMap.SOURCING_CODE}");
fnc_getProductMgmtList("PRODUCT_MGMT_OBJID", "${resultMap.PRODUCT_MGMT_OBJID}");
fnc_productUPGList("${resultMap.PRODUCT_MGMT_OBJID}","","UPG_OBJID", "${resultMap.UPG_OBJID}");
$("input:radio[name='CHANGE_OPTION']:radio[value='${resultMap.CHANGE_OPTION}']").prop('checked', true);
$("input:radio[name='MANAGEMENT_FLAG']:radio[value='${resultMap.MANAGEMENT_FLAG}']").prop('checked', true);
$("input:radio[name='CHANGE_OPTION']").prop('disabled', true);
$("input:radio[name='MANAGEMENT_FLAG']").prop('disabled', true);
fn_getOrderSpecMngList();
});
</script>
<script>
function fn_save(){
if(confirm("저장하시겠습니까?")){
$.ajax({
type : "POST",
url : "/salesMng/saveOrderSpecMng.do",
data: $("#form1").serialize(),
dataType:"json",
success:function(data){
Swal.fire(data.msg);
if(data.result){
fn_search();
}
}
,error: function(jqxhr, status, error){
}
});
}
}
function fn_search(){
fn_getOrderSpecMngList();
}
//파트에 해당하는 발주특성 정보를 등록한다.
function fn_openOrderSpecMngFormPopUp(specObjId){
var hiddenForm = document.hiddenForm;
var url = "/salesMng/orderSpecMngFormPopUp.do";
var target = "orderSpecMngFormPopUp";
window.open(url,target,"width=400, height=300, menubars=no, scrollbars=yes, resizable=yes");
hiddenForm.action = url;
hiddenForm.OBJID.value = specObjId;
hiddenForm.target = target;
hiddenForm.submit();
}
//파트에 해당하는 발주특성 정보를 등록한다.
function fn_deleteOrderSpecMng(){
var specObjIdArr = $("input[name=SPEC_OBJID]:checked");
if(0 == specObjIdArr.length){
Swal.fire("선택된 대상이 없습니다.");
}else{
var checkArr = new Array();
var ngCnt = 0;
$("input[name=SPEC_OBJID]:checked").each(function(){
var objId = fnc_checkNull($(this).val().replace(" ",""));
checkArr.push(objId);
});
if(confirm("삭제하시겠습니까?")){
$.ajax({
type : "POST",
url : "/salesMng/deleteOrderSpecMng.do",
data: {"checkArr":checkArr.join()},
dataType:"json",
success:function(data){
Swal.fire(data.msg);
if(data.result){
fn_search();
}
}
,error: function(jqxhr, status, error){
}
});
}
}
}
function fileAreaDraw(){
fn_fileCallback("shape","PART_SHAPE_IMG");
fn_fileCallback2("ecd","ECD_DOC");
fn_fileCallback2("3dCad","3D_CAD");
fn_fileCallback2("2dDrawingCad","2D_DRAWING_CAD");
fn_fileCallback2("2dPDFCad","2D_PDF_CAD");
$("#shapeDropZone").hide();
$("#ecdDropZone").hide();
$("#3dCadDropZone").hide();
$("#2dDrawingCadDropZone").hide();
$("#2dPDFCadDropZone").hide();
}
//첨부파일 목록을 가져온다.
function fn_fileCallback(areaId,fileType){
$.ajax({
url:"/common/getFileList.do",
type:"POST",
data:{"targetObjId":"${resultMap.OBJID}", "docType":fileType},
dataType:"json",
async:false,
success:function(data){
if(0 < data.length){
//첨부파일 목록 영역 show
$("#"+areaId+"FileArea").empty();
if(0 < $("#"+areaId+"DropZone").length){
$("#"+areaId+"DropZone").hide();
$("#"+areaId+"FileArea").show();
}
$.each(data, function(i){
var realFileName = data[i].REAL_FILE_NAME;
var srcLocation = encodeURI("/common/viewImage.do?realFileName="+realFileName+"&savedFileName="+data[i].SAVED_FILE_NAME+"&attDir="+data[i].FILE_PATH);
var appendText = "";
var appendImgText = ""
appendText+= "<a href='javascript:fnc_downloadFile(\""+data[i].OBJID+"\")'>&nbsp;"+data[i].REAL_FILE_NAME+"</a>";
appendImgText = "<img src='"+srcLocation+"' height='85px' width='99%' onclick='openImagePopUp(this.src)' style='cursor:pointer;' />"
$("#"+areaId+"FileArea").append(appendImgText+appendText);
});
}else{
$("#"+areaId+"DropZone").show();
$("#"+areaId+"FileArea").empty();
$("#"+areaId+"FileArea").hide();
}
},
error: function(jqxhr, status, error){
}
});
}//파일 첨부 END
function fn_fileCallback2(areaId,fileType){
$.ajax({
url:"/common/getFileList.do",
type:"POST",
data:{"targetObjId":"${resultMap.OBJID}", "docType":fileType},
dataType:"json",
async:false,
success:function(data){
if(0 < data.length){
if(0 < $("#"+areaId+"DropZone").length){
$("#"+areaId+"DropZone").hide();
$("#"+areaId+"FileArea").show();
}
//첨부파일 목록 영역 show
$("#"+areaId+"FileArea").empty();
$.each(data, function(i){
var appendText = "";
var path = data[i].FILE_PATH;
var fileName = data[i].SAVED_FILE_NAME;
var fileExt = data[i].UPPER_FILE_EXT;
appendText+= "<div style='float:left;width:90%;white-space: nowrap; overflow: hidden; text-overflow: ellipsis;'>";
appendText+= " <a href='javascript:fnc_downloadFile(\""+data[i].OBJID+"\")' title='"+data[i].REAL_FILE_NAME+"'>"+data[i].REAL_FILE_NAME+"</a>";
appendText+= "</div>";
$("#"+areaId+"FileArea").append(appendText);
});
}else{
$("#"+areaId+"DropZone").show();
$("#"+areaId+"FileArea").empty();
$("#"+areaId+"FileArea").hide();
}
},
error: function(jqxhr, status, error){
}
});
}//파일 첨부 END
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,"problemImgPopUp","width="+img_width+",height="+height+", menubars=no, scrollbars=yes'");
}
//파트에 해당하는 발주특성의 목록을 가져온다.
function fn_getOrderSpecMngList(){
$("#orderMngSpecArea").empty();
var appendText = "";
$.ajax({
url:"/salesMng/getOrderSpecMngList.do",
type:"POST",
data:{"PART_OBJID":"${resultMap.OBJID}"},
dataType:"json",
async:false,
success:function(data){
if(0 < data.length){
$.each(data, function(i){
var partnerPrice = numberWithCommas(fnc_checkNull(data[i].PARTNER_PRICE));
appendText+= "<tr>";
appendText+= " <td><input type='checkbox' name='SPEC_OBJID' value='"+data[i].OBJID+"'></td>";
appendText+= " <td onclick=\"fn_openOrderSpecMngFormPopUp('"+data[i].OBJID+"')\">"+fnc_checkNull(data[i].SEQ)+"</td>";
appendText+= " <td onclick=\"fn_openOrderSpecMngFormPopUp('"+data[i].OBJID+"')\">"+fnc_checkNull(data[i].PARTNER_NAME)+"</td>";
appendText+= " <td onclick=\"fn_openOrderSpecMngFormPopUp('"+data[i].OBJID+"')\">"+partnerPrice+"</td>";
appendText+= " <td onclick=\"fn_openOrderSpecMngFormPopUp('"+data[i].OBJID+"')\">"+fnc_checkNull(data[i].APPLY_DATE)+"</td>";
appendText+= " <td onclick=\"fn_openOrderSpecMngFormPopUp('"+data[i].OBJID+"')\">"+fnc_checkNull(data[i].REGDATE_TITLE)+"</td>";
appendText+= " <td onclick=\"fn_openOrderSpecMngFormPopUp('"+data[i].OBJID+"')\">"+fnc_checkNull(data[i].WRITER_NAME)+"</td>";
appendText+= " <td class='align_l' onclick=\"fn_openOrderSpecMngFormPopUp('"+data[i].OBJID+"')\">"+fnc_checkNull(data[i].REMARK)+"</td>";
appendText+= " <td><input type='button' value='이력' onclick=\"fn_openOrderSpecMngHistoryPopUp('"+data[i].OBJID+"');\" class='plm_btns'></td>";
appendText+= "</tr>";
});
}else{
appendText+= "<tr>";
appendText+= " <td colspan='9'>조회된 정보가 없습니다.</td>";
appendText+= "</tr>";
}
$("#orderSpecMngSize").empty();
$("#orderSpecMngSize").append("총 "+data.length+"건");
},
error: function(jqxhr, status, error){
}
});
$("#orderMngSpecArea").append(appendText);
}//파일 첨부 END
function fn_openOrderSpecMngHistoryPopUp(objId){
var hiddenForm = document.hiddenForm;
var url = "/salesMng/orderSpecMngHistoryPopUp.do";
var target = "openOrderSpecMngHistoryPopUp";
window.open("",target,"width=800, height=500, menubars=no, scrollbars=yes, resizable=yes");
hiddenForm.action = url;
hiddenForm.OBJID.value = objId;
hiddenForm.target = target;
hiddenForm.submit();
}
</script>
<style>
.input_title {border-left:1px solid #ccc;}
.input_sub_title {border-left:1px solid #ccc;}
.pmsPopupForm tr:last-child td{border-bottom:1px solid #ccc;}
</style>
<body>
<form name="hiddenForm" id="hiddenForm" method="post">
<input type="hidden" name="OBJID" id="OBJID">
<input type="hidden" name="PART_OBJID" id="PART_OBJID" value="${resultMap.OBJID}">
</form>
<form name="form1" id="form1" action="" method="post">
<input type="hidden" name="OBJID" id="OBJID" value="${resultMap.OBJID}">
<div class="plm_menu_name_myungjin">
<h2>
<span>Part 상세</span>
</h2>
</div>
<section style="float:left;width:40%;">
<div id="businessPopupFormWrap">
<table class="pmsPopupForm">
<colgroup>
<col width="15%">
<col width="37%">
<col width="15%">
<col width="*">
</colgroup>
<tr>
<td class="input_title">
<label for="">양산 제품코드</label>
</td>
<td class="input_sub_title" >
${resultMap.PRODUCT_CODE}
</td>
<td class="input_title">
<label for="">UPG No</label>
</td>
<td class="input_sub_title" >
${resultMap.UPG_NO}
</td>
</tr>
<tr>
<td class="input_title">
<label for="">품번</label>
</td>
<td class="input_sub_title" >
${resultMap.PART_NO}
</td>
<td class="input_title">
<label for="">부품 유형</label>
</td>
<td class="input_sub_title">
${resultMap.PART_TYPE_TITLE}
</td>
</tr>
<tr>
<td class="input_title">
<label for="">품명</label>
</td>
<td class="input_sub_title" colspan="">
${resultMap.PART_NAME}
</td>
<td class="input_title">
<label for="">단위</label>
</td>
<td class="input_sub_title" colspan="">
${resultMap.EO_UNIT}
</td>
</tr>
<tr>
<td class="input_title">
<label for="">EO NO</label>
</td>
<td class="input_sub_title" >
${resultMap.EO_NO}
</td>
<td class="input_title">
<label for="">EO DATE</label>
</td>
<td class="input_sub_title">
${resultMap.EO_EDIT_DATE}
</td>
</tr>
<tr>
<td class="input_title">
<label for="">Revision</label>
</td>
<td class="input_sub_title" >
${resultMap.REVISION}
</td>
<td class="input_title" rowspan="5">
<label for="">형상</label>
</td>
<td class="input_sub_title" rowspan="5">
<div id="shapeDropZone" class="dropzone" style="width:99%;height:100px;border: 2px dotted rgb(130, 150, 194);">Drag & Drop Image Files Here</div>
<div id="shapeFileArea" style="display:none;"></div>
</td>
</tr>
<tr>
<td class="input_title">
<label for="">단위</label>
</td>
<td class="input_sub_title" >
<select name="UNIT" id="UNIT" disabled></select>
</td>
</tr>
<tr>
<td class="input_title">
<label for="">수량</label>
</td>
<td class="input_sub_title">${resultMap.QTY}</td>
</tr>
<tr>
<td class="input_title">
<label for="">규격</label>
</td>
<td class="input_sub_title">${resultMap.SPEC}</td>
</tr>
<tr>
<td class="input_title">
<label for="">재질</label>
</td>
<td class="input_sub_title">${resultMap.MATERIAL}</td>
</tr>
<tr>
<td class="input_title">
<label for="">중량</label>
</td>
<td class="input_sub_title" >${resultMap.WEIGHT}</td>
<td class="input_title">
<label for="">설계적용시점</label>
</td>
<td class="input_sub_title">
<select name="DESIGN_APPLY_POINT" id="DESIGN_APPLY_POINT" disabled></select>
</td>
</tr>
<tr>
<td class="input_title">
<label for="">비고</label>
</td>
<td class="input_sub_title" colspan="3">
<input type="text" name="REMARK" id="REMARK" value="${resultMap.REMARK}" readonly>
</td>
</tr>
<tr>
<td class="input_title" rowspan="2">
<label for="">사양번호</label>
</td>
<td class="input_sub_title" >ES</td>
<td colspan="2">
<select name="ES_SPEC" id="ES_SPEC" disabled></select>
</td>
</tr>
<tr>
<td class="input_sub_title" >MS</td>
<td colspan="2">
<select name="MS_SPEC" id="MS_SPEC" disabled></select>
</td>
</tr>
<tr>
<td class="input_title">
<label for="">설변항목</label>
</td>
<td class="input_sub_title" colspan="3">
<input type="radio" name="CHANGE_OPTION" value="changeShape">&nbsp;형상변경&nbsp;&nbsp;
<input type="radio" name="CHANGE_OPTION" value="changeMaterial">&nbsp;재질변경&nbsp;&nbsp;
<input type="radio" name="CHANGE_OPTION" value="addChange">&nbsp;추가변경&nbsp;&nbsp;
<input type="radio" name="CHANGE_OPTION" value="changeConfig">&nbsp;구성변경&nbsp;&nbsp;
<input type="radio" name="CHANGE_OPTION" value="firstDrawing">&nbsp;초도&nbsp;&nbsp;
<input type="radio" name="CHANGE_OPTION" value="etc">&nbsp;기타&nbsp;&nbsp;
</td>
</tr>
<tr>
<td class="input_title">
<label for="">ECD</label>
</td>
<td class="input_sub_title" colspan="3">
<div id="ecdDropZone" class="dropzone" style="width:99%;height:90%;border: 2px dotted rgb(130, 150, 194);">Drag & Drop Files Here</div>
<div id="ecdFileArea" style="display:none;"></div>
</td>
</tr>
<tr>
<td class="input_title">
<label for="">관리항목</label>
</td>
<td class="input_sub_title" colspan="3">
<input type="radio" name="MANAGEMENT_FLAG" value="Y">유
<input type="radio" name="MANAGEMENT_FLAG" value="N">무
</td>
</tr>
</table>
<table class="pmsPopupForm" style="margin-top:10px;">
<colgroup>
<col width="15%">
<col width="20%">
<col width="15%">
<col width="*">
</colgroup>
<tr>
<td class="input_title" rowspan="3">
<label for="">CAD Data</label>
</td>
<td class="input_sub_title" >
3D
</td>
<td colspan="2">
<div id="3dCadDropZone" class="dropzone"style="width:99% !important;">Drag & Drop Files Here</div>
<div class="plm_scroll_table" style="height:85px;">
<div id="3dCadFileArea" style="display:none;"></div>
</div>
</td>
</tr>
<tr>
<td class="input_sub_title" >
2D(Drawing)
</td>
<td colspan="2">
<div id="2dDrawingCadDropZone" class="dropzone"style="width:99% !important;">Drag & Drop Files Here</div>
<div class="plm_scroll_table" style="height:85px;">
<div id="2dDrawingCadFileArea" style="display:none;"></div>
</div>
</td>
</tr>
<tr>
<td class="input_sub_title" >
2D(PDF)
</td>
<td colspan="2">
<div id="2dPDFCadDropZone" class="dropzone"style="width:99% !important;">Drag & Drop Files Here</div>
<div class="plm_scroll_table" style="height:85px;">
<div id="2dPDFCadFileArea" style="display:none;"></div>
</div>
</td>
</tr>
</table>
</div>
</section>
<aside style="float:right;width:60%;">
<div id="businessPopupFormWrap">
<h4><span>발주특성 정보</span></h4>
<div class="contents_page_basic_margin">
<div class="plm_table_wrap">
<table class="pmsPopupForm">
<colgroup>
<col width="15%">
<col width="37%">
<col width="15%">
<col width="*">
</colgroup>
<tr>
<td class="input_title">
<label for="">소싱</label>
</td>
<td class="input_sub_title" >
<select name="SOURCING_CODE" id="SOURCING_CODE"></select>
</td>
<td></td>
<td></td>
</tr>
</table>
</div>
<div class="ascendig_text" style="float:left;width:50%;">
<font size="3px" id="orderSpecMngSize"></font>
</div>
<div class="ascendig_text" style="float:right;width:50%;">
<div class="plm_btn_wrap">
<input type="button" value="업체추가" class="plm_btns" id="btnReg">
<input type="button" value="삭제" class="plm_btns" id="btnDelete">
</div>
</div>
<div class="plm_table_wrap">
<div style="overflow-y:scroll;">
<table class="plm_table">
<colgroup>
<col width="3%" />
<col width="5%" /> <!-- 순위 -->
<col width="18%" /> <!-- 공급업체명 -->
<col width="12%" /> <!-- 단가 -->
<col width="10%" /> <!-- 단가적용일 -->
<col width="10%" /> <!-- 단가등록일 -->
<col width="8%" /> <!-- 작성자 -->
<col width="*" /> <!-- 비고 -->
<col width="56px" /> <!-- 이력 -->
</colgroup>
<thead>
<tr class="plm_thead">
<td><input type="checkbox" id="allCheck" class="checkBox"></td>
<td>순위 </td>
<td>공급업체명 </td>
<td>단가 </td>
<td>단가적용일 </td>
<td>단가등록일 </td>
<td>작성자 </td>
<td>비고 </td>
<td></td>
</tr>
</thead>
</table>
</div>
<div>
<div class="plm_scroll_table" style="height:529px;">
<table class="plm_table">
<colgroup>
<col width="3%" />
<col width="5%" /> <!-- 순위 -->
<col width="18%" /> <!-- 공급업체명 -->
<col width="12%" /> <!-- 단가 -->
<col width="10%" /> <!-- 단가적용일 -->
<col width="10%" /> <!-- 단가등록일 -->
<col width="8%" /> <!-- 작성자 -->
<col width="*" /> <!-- 비고 -->
<col width="56px" /> <!-- 이력 -->
</colgroup>
<tbody id="orderMngSpecArea">
</tbody>
</table>
</div>
</div>
</div>
</div>
</div>
</aside>
<footer style="width:100%;height:10px;clear:both;">
<div class="btn_wrap">
<div class="plm_btn_wrap_center">
<input type="button" value="저장" id="btnSave" class="plm_btns">
<input type="button" value="닫기" id="btnClose" class="plm_btns">
</div>
</div>
</footer>
</form>
</body>
</html>