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

515 lines
18 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" %>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title><%=Constants.SYSTEM_NAME%></title>
</head>
<script>
$(document).ready(function(){
//닫기
$("#btnClose").click(function(){
self.close(0);
});
//결재라인 가져오기
fn_getApprLine();
//취소
$("#btnEdit").click(function(){
var objId = $(this).attr("data-OBJID");
var params = "?objId="+objId+"&actionType=regist";
document.form1.action ="/project/issueFormPopup.do"+params;
document.form1.submit();
});
fnc_setFileDropZone("issueDropZone", "${objId}", "ISSUE_ATTACH_01", "이슈정보자료01", "issueAreaDraw1",false,null,null);
fnc_setFileDropZone("issue1DropZone", "${objId}", "ISSUE_ATTACH_02", "이슈정보자료02", "issueAreaDraw2",false,null,null);
fnc_setFileDropZone("issue2DropZone", "${objId}", "ISSUE_ATTACH_03", "이슈정보자료03", "issueAreaDraw3",false,null,null);
fnc_setFileDropZone("issue3DropZone", "${objId}", "ISSUE_ATTACH_04", "이슈정보자료04", "issueAreaDraw4",false,null,null);
issueAreaDraw1();
issueAreaDraw2();
issueAreaDraw3();
issueAreaDraw4();
fnc_datepick();
});
</script>
<script>
//결재 라인 가져오기
function fn_getApprLine(){
var k=0;
$.ajax({
url:"/common/getApprovalLine.do",
type:"POST",
data:{"objId":"${objId}"},
dataType:"json",
async:false,
success:function(data){
$.each(data, function(i){
for(var j=0;j<data[i].length;j++){
var REGDATE="";
var PROC_DATE="";
if(data[i][j].REGDATE!=undefined){
REGDATE = data[i][j].REGDATE;
}
if(data[i][j].PROC_DATE!=undefined){
PROC_DATE = data[i][j].PROC_DATE;
}
text = data[i][j].WRITER+"<br>"+REGDATE;
$("#appr"+k).html(text);
k++;
text = data[i][j].TARGET_USER_NAME+"<br>"+PROC_DATE;
$("#appr"+k).html(text);
k++;
}
});
},
error: function(jqxhr, status, error){
}
});
}
//형상 영역을 display 한다.
function issueAreaDraw1(){
fn_Img_fileCallback("issueAttach","ISSUE_ATTACH_01");
}
//형상 영역을 display 한다.
function issueAreaDraw2(){
fn_Img_fileCallback("issueAttach1","ISSUE_ATTACH_02");
}
//형상 영역을 display 한다.
function issueAreaDraw3(){
fn_fileCallback("issueAttach2","ISSUE_ATTACH_03");
}
//형상 영역을 display 한다.
function issueAreaDraw4(){
fn_fileCallback("issueAttach3","ISSUE_ATTACH_04");
}
//첨부파일 목록을 가져온다.
function fn_fileCallback(areaId,fileType){
$.ajax({
url:"/common/getFileList.do",
type:"POST",
data:{"targetObjId":"${objId}", "docType":fileType},
dataType:"json",
async:false,
success:function(data){
if(0 < data.length){
//첨부파일 목록 영역 show
$("#"+areaId+"FileArea").empty();
if(0 < $("#"+areaId+"DefaultRow").length){
$("#"+areaId+"DefaultRow").hide();
}
$.each(data, function(i){
var appendText = "";
if("issueAttach2" == areaId || "issueAttach3" == areaId){
var path = data[i].FILE_PATH;
var fileName = data[i].SAVED_FILE_NAME;
var fileExt = data[i].UPPER_FILE_EXT;
appendText += "<colgroup>";
appendText +=" <col width='10%''>";
appendText +=" <col width='*'>";
appendText +=" <col width='20%'>";
appendText +=" </colgroup>";
appendText+= "<tr>";
appendText+= " <td>"+[i+1]+"</td>";
appendText+= " <td class='align_l'><a href='javascript:fnc_downloadFile(\""+data[i].OBJID+"\")'>&nbsp;&nbsp;"+data[i].REAL_FILE_NAME+"</a>";
<c:if test="${param.actionType eq 'regist' or info.WRITER eq connectUserId or 'plm_admin' eq connectUserId}">
appendText+= "<a href='javascript:fileDelete(\""+data[i].OBJID+"\",\""+areaId+"\")'><div class='delete_btn'></div></a>";
</c:if>
appendText+= "</td>";
appendText+= " <td>"+data[i].REGDATE+"</td>";
appendText+= "</tr>";
}
$("#"+areaId+"FileArea").append(appendText);
});
}else{
$("#"+areaId+"DropZone").show();
$("#"+areaId+"AttachFileList").hide();
$("#"+areaId+"FileArea").empty();
var appendText = "";
appendText += "<tr>";
appendText += "<td>첨부 파일이 없습니다.</td>";
appendText +="</tr>";
$("#"+areaId+"FileArea").append(appendText);
}
},
error: function(jqxhr, status, error){
}
});
}//파일 첨부 END
//첨부파일 목록을 가져온다.
function fn_Img_fileCallback(areaId,fileType){
$.ajax({
url:"/common/getFileList.do",
type:"POST",
data:{"targetObjId":"${objId}", "docType":fileType},
dataType:"json",
async:false,
success:function(data){
if(0 < data.length){
//첨부파일 목록 영역 show
$("#"+areaId+"FileArea").empty();
if(0 < $("#"+areaId+"DefaultRow").length){
$("#"+areaId+"DefaultRow").hide();
}
$.each(data, function(i){
var appendText = "";
if("issueAttach" == areaId){
var path = data[i].FILE_PATH;
var fileName = data[i].SAVED_FILE_NAME;
var fileExt = data[i].UPPER_FILE_EXT;
var srcLocation = encodeURI("/common/viewImage.do?realFileName="+data[i].REAL_FILE_NAME+"&savedFileName="+data[i].SAVED_FILE_NAME+"&attDir="+data[i].FILE_PATH);
appendText+= "<img src='"+srcLocation+"' style='width:96% !important; height:132px; margin:0;padding:0;' onclick=\"openImagePopUp(this.src)\" style='cursor:pointer;' />";
appendText+= " <div class='align_l'><a href='javascript:fnc_downloadFile(\""+data[i].OBJID+"\")'>&nbsp;&nbsp;"+data[i].REAL_FILE_NAME+"</a>";
<c:if test="${param.actionType eq 'regist' or info.WRITER eq connectUserId or 'plm_admin' eq connectUserId}">
appendText+= "<a href='javascript:fileDelete(\""+data[i].OBJID+"\",\""+areaId+"\")'><div class='delete_btn'></div></a>";
</c:if>
appendText+= "</div>";
$("#issueDropZone").hide();
} else if("issueAttach1" == areaId){
var path = data[i].FILE_PATH;
var fileName = data[i].SAVED_FILE_NAME;
var fileExt = data[i].UPPER_FILE_EXT;
var srcLocation = encodeURI("/common/viewImage.do?realFileName="+data[i].REAL_FILE_NAME+"&savedFileName="+data[i].SAVED_FILE_NAME+"&attDir="+data[i].FILE_PATH);
appendText+= "<img src='"+srcLocation+"' style='width:96% !important; height:132px; margin:0;padding:0;' onclick=\"openImagePopUp(this.src)\" style='cursor:pointer;' />";
appendText+= " <div class='align_l'><a href='javascript:fnc_downloadFile(\""+data[i].OBJID+"\")'>&nbsp;&nbsp;"+data[i].REAL_FILE_NAME+"</a>";
<c:if test="${param.actionType eq 'regist' or info.WRITER eq connectUserId or 'plm_admin' eq connectUserId}">
appendText+= "<a href='javascript:fileDelete(\""+data[i].OBJID+"\",\""+areaId+"\")'><div class='delete_btn'></div></a>";
</c:if>
appendText+= "</div>";
$("#issue1DropZone").hide();
}
$("#"+areaId+"FileArea").append(appendText);
});
}else{
$("#"+areaId+"DropZone").show();
$("#"+areaId+"AttachFileList").hide();
$("#"+areaId+"FileArea").empty();
/* var appendText = "";
appendText += "<tr>";
appendText += "<td>첨부 파일이 없습니다.</td>";
appendText +="</tr>";
$("#"+areaId+"FileArea").append(appendText); */
}
},
error: function(jqxhr, status, error){
}
});
}//파일 첨부 END
function fn_wpstCheck(obj){
var val = $(obj).val();
if($(obj).is(":checked") == true){
$("input:checkbox[name='wpstCheck']").each(function(){
if(val != $(this).val()) {
$(this).attr("checked", false);
}
});
}
}
</script>
<body>
<form name="form1" id="form1" action="" method="post">
<input type="hidden" name="objId" id="objId" value="${objId}">
<input type="hidden" name="project_no" id="project_no" value="">
<input type="hidden" name="cur_cost" id="cur_cost" value="">
<section class="business_popup_min_width">
<div class="plm_menu_name">
<h2>
<span>설비조립_이슈/요구사항 등록</span>
</h2>
</div>
<div class="box-sign-tit" style="width:900px; font-size:25px; font-weight:bold;">문제점 개선 대책서 (Problem report)</div>
<div style="float: right; width: 29%; margin: 3px 8px -7px 0;;border-right:1px solid #ccc">
<table class="plm_table">
<colgroup>
<col width="11%" />
<col width="23%" />
<col width="23%" />
<col width="23%" />
<col width="23%" />
</colgroup>
<thead></thead>
<tbody>
<tr style="background-color:#8e9194;color:#fff">
<td rowspan="2">결재</td>
<td>작성</td>
<td>검토</td>
<td>결재</td>
<td>통제</td>
</tr>
<tr style="height: 40px;">
<td id="appr0"></td>
<td id="appr1"></td>
<td id="appr3"></td>
<td id="appr5"></td>
</tr>
</tbody>
</table>
</div>
<br><br><br><br>
<div style="clear:both"></div>
<div id="businessPopupFormWrap" style="margin-top:10px">
<table class="pmsPopupForm">
<colgroup>
<col width="10%"/>
<col width="*"/>
<col width="10%"/>
<col width="*"/>
<col width="10%"/>
<col width="*"/>
<col width="10%"/>
<col width="*"/>
</colgroup>
<tr>
<td class="input_title">
<label for="isu_cd">구분</label>
</td>
<td>
${info.ISU_NAME}
</td>
<td class="input_title">
<label for="customer_cd">발주처</label>
</td>
<td>
${info.CUSTOMER_NAME}
</td>
<td class="input_title">
<label for="">Project No</label>
</td>
<td>
${info.PROJECT_NAME}
</td>
<td class="input_title">
<label for="occu_cd">발생처</label>
</td>
<td>
${info.OCCU_NAME}
</td>
</tr>
<tr>
<td class="input_title">
<label for="step_cd">단계</label>
</td>
<td colspan="">
${info.STEP_NAME}
</td>
<td class="input_title">
<label for="case_cd">유형</label>
</td>
<td colspan="">
${info.CASE_NAME}
</td>
<td class="input_title">
<label for="team_cd">팀명</label>
</td>
<td colspan="">
${info.SOL_USER_DEPT}
</td>
<td class="input_title">
<label for="sol_userid">조치담당자</label>
</td>
<td colspan="">
${info.SOL_USER_NAME}
</td>
</tr>
<tr style="border-bottom: 1px solid #dddddd;">
<td class="input_title">
<label for="title">제목</label>
</td>
<td colspan="5">
${info.TITLE}
</td>
<td class="input_title">
<label for="req_date">조치요청일</label>
</td>
<td colspan="">
${info.REQ_DATE}
</td>
</tr>
</table>
<br>
<table class="pmsPopupForm" style="border:3px solid #000000;">
<colgroup>
<col width="25%">
<col width="25%">
<col width="25%">
<col width="25%">
</colgroup>
<tr class="plm_thead">
<td colspan="2" style="text-align:center; border-right:2px solid #000000; border-bottom:1px solid #000000;" >현상 및 문제점</td>
<td colspan="2" style="text-align:center; border-bottom:1px solid #000000;">조치결과</td>
</tr>
<tr>
<td style="border-right:1px solid #000000;">
<span>[문제점 현상]</span>
<textarea placeholder="문제점 현상" id="content" name="content" style="border:10px solid #ccc; width:100%; height:150px;" readonly>${info.CONTENT}</textarea>
</td>
<td style="border-right:2px solid #000000;">
<span>[이미지:사진]</span>
<div id="issueDropZone" class="dropzone"style="width:98% !important; height:144px; margin:0;padding:0; line-height: 144px;">Drag & Drop Files Here</div>
<div id="issueAttachFileArea"></div>
</td>
<td style="border-right:1px solid #000000;">
<span>[조치내역]</span>
<textarea placeholder="원인분석" id="resultContents" name="resultContents" style="border:1px solid #ccc; width:100%; height:150px;" readonly>${info.RESULT}</textarea>
</td>
<td>
<span>[이미지:사진]</span>
<div id="issue1DropZone" class="dropzone"style="width:98% !important; height:144px; margin:0;padding:0; line-height: 144px;">Drag & Drop Files Here</div>
<div id="issueAttach1FileArea"></div>
</td>
</tr>
</table>
<br>
<table class="pmsPopupForm">
<colgroup>
<col width="6%"/>
<col width="*"/>
<col width="*"/>
<col width="6%"/>
<col width="*"/>
<col width="*"/>
</colgroup>
<tr>
<td colspan="3"></td>
<td colspan="3" >
<span style="background:#eee; border-top: 4px solid #eee; color:red;" >※미조치대상</span><span style="display:inline-block; width:50px; padding-left:5px;"> <input type="checkbox" name="wpstCheck" onclick="fn_wpstCheck(this);" value="notTarget" ${info.APPR_WPST_CD eq 'notTarget' ? 'checked':''} disabled></span>
<span style="background:#eee; border-top: 4px solid #eee; color:red;">※설계반영 </span><span style="display:inline-block; width:120px; padding-left:5px;">적용<input type="checkbox" name="wpstCheck" onclick="fn_wpstCheck(this);" value="action" ${info.APPR_WPST_CD eq 'action' ? 'checked':''} disabled>&nbsp;&nbsp;미적용<input type="checkbox" name="wpstCheck" onclick="fn_wpstCheck(this);" value="notAction" ${info.APPR_WPST_CD eq 'notAction' ? 'checked':''} disabled></span>
<span style="background:#eee; border-top: 4px solid #eee; color:red;">※발생비용</span><span style="display:inline-block; width:120px; padding-left:5px;"" ><fmt:formatNumber value="${info.CUR_COST}" pattern="#,###"/>&nbsp;&nbsp;</span>
</td>
</tr>
<tr>
<td rowspan="2" class="input_title">
<label for="">첨부파일</label>
</td>
<td colspan="2">
<div id="issue2DropZone" class="dropzone"style="width:99.5% !important;">Drag & Drop Files Here</div>
</td>
<td rowspan="2" class="input_title">
<label for="">첨부파일</label>
</td>
<td colspan="2">
<div id="issue3DropZone" class="dropzone"style="width:99.5% !important;">Drag & Drop Files Here</div>
</td>
</tr>
<tr>
<td colspan="2">
<div class="plm_table_wrap">
<div style="overflow-y:scroll;">
<table class="plm_table" style="width:100%;">
<colgroup>
<col width="10%">
<col width="*">
<col width="20%">
</colgroup>
<thead>
<tr class="plm_thead">
<td>No</td>
<td>첨부파일명</td>
<td>등록일</td>
</tr>
</thead>
</table>
</div>
<div class="plm_scroll_table" style="height:75px;">
<table class="plm_table">
<colgroup>
<col width="10%">
<col width="*">
<col width="20%">
</colgroup>
</table>
<table id="issueAttach2FileArea" class="fileListscrollTbody"></table>
</div>
</div>
</td>
<td colspan="2">
<div class="plm_table_wrap">
<div style="overflow-y:scroll;">
<table class="plm_table" style="width:100%;">
<colgroup>
<col width="10%">
<col width="*">
<col width="20%">
</colgroup>
<thead>
<tr class="plm_thead">
<td>No</td>
<td>첨부파일명</td>
<td>등록일</td>
</tr>
</thead>
</table>
</div>
<div class="plm_scroll_table" style="height:75px;">
<table class="plm_table">
<colgroup>
<col width="10%">
<col width="*">
<col width="20%">
</colgroup>
</table>
<table id="issueAttach3FileArea" class="fileListscrollTbody"></table>
</div>
</div>
</td>
</tr>
</table>
<div class="btn_wrap" style="clear:both;">
<!-- <input type="button" value="Edit" class="plm_btns" onclick=""> -->
<div class="plm_btn_wrap_center">
<c:if test="${info.APPROVAL_STATUS ne 'complete'}">
<c:if test="${writer eq 'plm_admin' or (writer eq info.WRITER and info.WPST_CD eq 'WPS00700' ) or (writer eq info.WRITER and info.WPST_CD eq 'WPS01000' ) or
(writer eq info.SOL_USERID and info.WPST_CD eq 'WPS00800') or (writer eq info.SOL_USERID and info.WPST_CD eq 'WPS00900')}">
<input type="button" value="Edit" id="btnEdit" data-OBJID="${objId}" class="plm_btns">
</c:if>
</c:if>
<input type="button" value="닫기" id="btnClose" class="plm_btns">
</div>
</div>
</div>
</section>
</form>
</body>
</html>