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

464 lines
15 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>
<c:set var="categoryInputType" value="${empty categoryDataSet.SPEC_INPUT_TYPE ? '' : categoryDataSet.SPEC_INPUT_TYPE}" />
<c:set var="objid" value="${param.objid}" />
<c:set var="actionType" value="${param.actionType}" />
<c:set var="docName" value="${empty categoryInfo.DOC_NAME ? '': categoryInfo.DOC_NAME}" />
<c:set var="regDate" value="${empty categoryInfo.REGDATE ? '': categoryInfo.REGDATE}" />
<c:set var="establishDate" value="${empty categoryInfo.ESTABLISH_DATE ? '': categoryInfo.ESTABLISH_DATE}" />
<c:set var="revisionDate" value="${empty categoryInfo.REVISION_DATE ? '': categoryInfo.REVISION_DATE}" />
<c:set var="oemObjid" value="${empty categoryInfo.COMPANY_OBJID ? '': categoryInfo.COMPANY_OBJID}" />
<c:set var="competeObjid" value="${empty categoryInfo.COMPETE_COMPANY_OBJID ? '': categoryInfo.COMPETE_COMPANY_OBJID}" />
<c:set var="productGroupObjid" value="${empty categoryInfo.PRODUCT_GROUP_OBJID ? '': categoryInfo.PRODUCT_GROUP_OBJID}" />
<c:set var="productObjid" value="${empty categoryInfo.PRODUCT_OBJID ? '': categoryInfo.PRODUCT_OBJID}" />
<c:set var="carObjid" value="${empty categoryInfo.CAR_OBJID ? '': categoryInfo.CAR_OBJID}" />
<c:set var="gradeObjid" value="${empty categoryInfo.GRADE_OBJID ? '': categoryInfo.GRADE_OBJID}" />
<c:set var="gradeName" value="${empty categoryInfo.GRADE_NAME ? '': categoryInfo.GRADE_NAME}" />
<c:set var="manufacturer" value="${empty categoryInfo.MANUFACTURER ? '': categoryInfo.MANUFACTURER}" />
<c:set var="participationDate" value="${empty categoryInfo.PARTICIPATION_DATE ? '': categoryInfo.PARTICIPATION_DATE}" />
<c:set var="rev" value="${empty categoryInfo.REV ? '': categoryInfo.REV}" />
<c:set var="docNo" value="${empty categoryInfo.DOC_NO ? '': categoryInfo.DOC_NO}" />
<c:set var="specNo" value="${empty categoryInfo.SPEC_NO ? '': categoryInfo.SPEC_NO}" />
<c:set var="compatitionCar" value="${empty categoryInfo.COMPATITION_CAR_NAME ? '': categoryInfo.COMPATITION_CAR_NAME}" />
<c:set var="description" value="${empty categoryInfo.DESCRIPTION ? '': categoryInfo.DESCRIPTION}" />
<c:set var="changeHistory" value="${empty categoryInfo.CHANGE_HISTORY ? '': categoryInfo.CHANGE_HISTORY}" />
<c:set var="isWriter" value="${empty isWriter ? false: true}" />
<c:set var="eoNo" value="${empty categoryInfo.EO_NO ? '': categoryInfo.EO_NO}" />
<c:set var="revisionOrder" value="${empty categoryInfo.REVISION_ORDER ? '': categoryInfo.REVISION_ORDER}" />
<script type="text/javascript">
$(document).ready(function(){
if("${categoryDataSet.CATEGORY_HIGH_CATEGORY_NAME}"=="프로젝트산출물"){
$("#revisionBtn").hide();
$("#modifyBtn").hide();
$("#RevisionList_section").hide();
}
$("#changeBtn").hide();
if("apply" == "${categoryDataSet.USE_REVISION}" && "1" != "${categoryInfo.IS_LAST}"){
$("#revisionBtn").hide();
$("#modifyBtn").hide();
}
if("apply" == "${categoryDataSet.USE_DOC_LINK}" && "1" == "${categoryInfo.IS_LAST}"){
$("#changeBtn").show();
$("#changeBtnWidth").css({width:"273px"});
}
$(".specChange").hide();
getTransSpecDataList("from");
getTransSpecDataList("to");
drawFileList();
if(!"${isWriter}"){
$("#modifyBtn").hide();
$("#revisionBtn").hide();
$("#changeBtn").hide();
}
//getRevisionList();
});
function specDataRevision(objid){
$("#actionType").val("revision");
var param = $("#form1").serialize();
$.ajax({
type : "POST",
url : "/specData/revisionSpecData.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();
}
}
});
}
//해당 SPEC을 치환하기 위한 Pop up을 호출한다.
function specDataChange(specObjid){
window.open("","specDataChangePop","width=900 height=700 menubar=no status=no");
var hiddenForm = document.hiddenForm;
hiddenForm.objid.value = specObjid;
hiddenForm.target = "specDataChangePop";
hiddenForm.action = "/specData/specDataSPECChange.do";
hiddenForm.submit();
}
//치환등록 팝업 호출
function openTransFormPopup(specDataObjid){
window.open("","changeSpecDataRegPop","width=1000 height=700 menubar=no status=no");
var hiddenForm = document.hiddenForm;
hiddenForm.objid.value = specDataObjid;
hiddenForm.target = "changeSpecDataRegPop";
hiddenForm.action = "/specData/specDataTransFormPopup.do";
hiddenForm.submit();
}
function modify(objid){
var form1 = document.form1;
form1.objid.value = objid;
form1.actionType.value = "modify";
form1.action = "/specData/specDataFormPopup.do";
form1.submit();
}
//영역별(From, To)스펙 치환문서 목록을 가져온다.
function getTransSpecDataList(type){
$.ajax({
type : "POST",
url : "/specData/getTransSpecDataList.do",
data:{"objid":"${param.objid}","type":type,"categoryObjId":"${categoryDataSet.OBJID}"},
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(0 < result.length){
var targetArea = "";
if("from" == type){
targetArea = "transSpecDataFrom";
$("#transSpecDataFromDefault").hide();
}else if("to" == type){
targetArea = "transSpecDataTo";
$("#transSpecDataToDefault").hide();
}
$("#"+targetArea).empty();
for(var i=0;i<result.length;i++){
var appendText = "";
appendText+= "<tr>";
appendText+= " <td>"+result[i].DOC_NO+"</td>";
appendText+= " <td><a href='javascript:openSpecDataPopUp(\""+result[i].DOC_OBJID+"\")'>"+result[i].SPEC_NO+"</a></td>";
/* appendText+= " <td>"+result[i].STANDARD_NAME+"</td>"; */
appendText+= " <td>"+result[i].CATEGORY_NAME+"</td>";
appendText+= "</tr>";
$("#"+targetArea).append(appendText);
}
}else{
if("from" == type){
targetArea = "transSpecDataFrom";
$("#transSpecDataFromDefault").show();
}else if("to" == type){
targetArea = "transSpecDataTo";
$("#transSpecDataToDefault").show();
}
$("#"+targetArea).empty();
}
}
})
}
function drawFileList(){
$.ajax({
url:"/common/getFileList.do",
type:"POST",
data:{"targetObjId":"${objid}", "docType":"DOC_SPEC"},
dataType:"json",
async:true,
success:function(data){
if(0 < data.length){
//첨부파일 목록 영역 show
$("#uploadedFileArea").remove();
$(".defaultRow").hide();
$.each(data, function(i){
var appendText = "";
appendText+= "<tr>";
appendText+= " <td><a href='javascript:fnc_downloadFile(\""+data[i].OBJID+"\")'>"+data[i].REAL_FILE_NAME+"</a></td>";
appendText+= " <td>"+data[i].FILE_SIZE+"</td>";
appendText+= " <td>"+data[i].REGDATE+"</td>";
appendText+= "</tr>";
$("#uploadedFileAreaTable").append(appendText);
});
}
},
error: function(jqxhr, status, error){
Swal.fire(jqxhr.statusText + ", " + status + ", " + error);
Swal.fire(jqxhr.status);
Swal.fire(jqxhr.responseText);
}
});
}
function openSpecDataPopUp(objid){
var hiddenForm = document.hiddenForm;
var target = objid;
window.open("",target,"width=900 height=550 menubar=no status=no");
hiddenForm.objid.value = objid;
hiddenForm.target = target;
hiddenForm.action = "/specData/specDataDetailViewPopup.do";
hiddenForm.submit();
}
//revision 리스트를 가져온다
function getRevisionList(){
$.ajax({
url:"/specData/getRevisionList.do",
type:"POST",
data:{"REV":"${rev}", "DOC_NO":"${docNo}"},
dataType:"json",
async:true,
success:function(data){
if(0 < data.length){
//첨부파일 목록 영역 show
$("#revisionArea").remove();
$(".defaultRow").hide();
$.each(data, function(i){
var appendText = "";
appendText+= "<tr>";
/* appendText+= " <td><a href='javascript:fnc_downloadFile(\""+data[i].OBJID+"\")'>"+data[i].REAL_FILE_NAME+"</a></td>"; */
appendText+= " <td>"+data[i].REVISION_DATE+"</td>";
appendText+= " <td>"+data[i].REV+"</td>";
appendText+= " <td>"+data[i].CHANGE_HISTORY+"</td>";
appendText+= " <td>"+data[i].REGDATE+"</td>";
appendText+= "</tr>";
$("#revisionAreaTable").append(appendText);
});
}
},
error: function(jqxhr, status, error){
Swal.fire(jqxhr.statusText + ", " + status + ", " + error);
Swal.fire(jqxhr.status);
Swal.fire(jqxhr.responseText);
}
});
}
</script>
</head>
<body class="backcolor_light_blue">
<form name="hiddenForm" id="hiddenForm" method="post">
<input type="hidden" name="objid" id="objid">
<input type="hidden" name="categoryObjId" id="categoryObjId" value="${categoryDataSet.OBJID}">
</form>
<form name="form1" id="form1" action="" method="post">
<input type="hidden" name="objid" id="objid" value="${param.objid}">
<input type="hidden" name="actionType" id="actionType">
<input type="hidden" name="revision" id="revision" value="${rev}">
<section>
<div class="plm_menu_name">
<h2>
<span>기술자료관리</span>
</h2>
</div>
<div id="businessPopupFormWrap">
<table class="pmsPopupForm">
<colgroup>
<col width="8%">
<col width="25%">
<col width="8%">
<col width="*">
<col width="8%">
<col width="*">
</colgroup>
<tr>
<td class="input_title">
<label for="" class="">구분</label>
</td>
<td>
<p>${categoryInfo.ROOT_NAME}</p>
</td>
</tr>
<tr>
<td class="input_title">
<label for="" class="">대분류</label>
</td>
<td>
<p>${categoryDataSet.CATEGORY_HIGH_CATEGORY_NAME}</p>
</td>
<td class="input_title">
<label for="" class="">중분류</label>
</td>
<td>
<p>${categoryDataSet.PARENT_CATEGORY_NAME}</p>
</td>
<td class="input_title">
<label for="" class="">소분류</label>
</td>
<td>
<p>${categoryDataSet.CATEGORY_NAME}</p>
</td>
</tr>
<tr>
<td class="input_title">
<label for="">문서명</label>
</td>
<td colspan="3">
<p>${docName}</p>
</td>
<td class="input_title">
<label for="">문서번호</label>
</td>
<td>
<p>${docNo}</p>
</td>
</tr>
<tr>
<td class="input_title">
<label for="">Rev</label>
</td>
<td>
<p>${rev}</p>
</td>
</tr>
<tr class="description">
<td class="input_title">
<label for="">내용</label>
</td>
<td colspan="5">
<textarea style="width:98%; border: 1px solid #ccc;" name="description" id="description" readonly>${description}</textarea>
</td>
</tr>
<tr>
<td class="input_title">
<label for="">첨부파일</label>
</td>
<td colspan="5">
<div id="specAttachFileList">
<table id="uploadedFileAreaTable" class="plm_table" style="width:98.5%;">
<colgroup>
<col width="*">
<col width="12%">
<col width="12%">
</colgroup>
<thead>
<tr class="plm_thead">
<td>파일명</td>
<td>용량</td>
<td>등록일</td>
</tr>
</thead>
<tbody id="uploadedFileArea">
<tr class="defaultRow">
<td colspan="3">첨부된 첨부파일이 없습니다.</td>
</tr>
</tbody>
</table>
</div>
</td>
</tr>
</table>
</div>
</section>
<section id="RevisionList_section">
<div id="businessPopupFormWrap">
<div class="form_popup_title">&nbsp;&nbsp;&nbsp;Revision List</div>
<table class="pmsPopupForm">
<colgroup>
<col width="10%">
<col width="10%">
<col width="*">
<col width="15%">
</colgroup>
<tr>
<td colspan="5">
<div id="RevisionList">
<table id="revisionAreaTable" class="plm_table" style="width:98.5%;">
<colgroup>
<col width="10%">
<col width="10%">
<col width="*">
<col width="15%">
</colgroup>
<thead>
<tr class="plm_thead">
<td>등록일</td>
<td>Revision</td>
<td>내용</td>
<td>첨부파일</td>
</tr>
</thead>
<tbody id="revisionArea">
<c:choose>
<c:when test="${empty revisionList}">
<tr style="text-align:center;">
<td align="center" colspan="4">조회된 데이터가 없습니다.</td>
</tr>
</c:when>
<c:otherwise>
<c:forEach var="item" items="${revisionList}" varStatus="varStatus">
<tr style="text-align:center;">
<td>${item.REG_DATE}</td>
<td>${item.REV}</td>
<td><a href="#" onclick="openSpecDataPopUp('${item.OBJID}')">${item.DESCRIPTION}</a></td>
<td>
<c:set var="file" value="${fn:split(item.FILE_OBJID,',')}" />
<c:set var="fileName" value="${fn:split(item.REAL_FILE_NAME,',')}" />
<c:forEach var="fileobj" items="${file}" varStatus="g">
<c:set var="cnt" value="${g.index}" />
<a title="${fileName[cnt]}" href='javascript:fnc_downloadFile("${fileobj}")'>
<c:if test="${fileobj ne '-'}">
<span class="file_icon"></span>
</c:if>
</a>
</c:forEach>
</td>
</tr>
</c:forEach>
</c:otherwise>
</c:choose>
</tbody>
</table>
</div>
</td>
</tr>
</table>
</section>
<div id="businessPopupFormWrap">
<div class="btn_wrap" style="clear:both;">
<div class="plm_btn_wrap_center">
<input type="button" id="revisionBtn" value="Revision" class="plm_btns" onclick="javascript:specDataRevision('${objid}');">
<input type="button" id="modifyBtn" value="수정" class="plm_btns" onclick="javascript:modify('${objid}');">
<input type="button" id="closeBtn" value="닫기" class="plm_btns" onclick="javascript:self.close();">
</div>
</div>
</div>
</form>
</body>
</html>