- 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
515 lines
18 KiB
Plaintext
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+"\")'> "+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+"\")'> "+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+"\")'> "+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> 미적용<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="#,###"/> </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>
|