- 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
456 lines
15 KiB
Plaintext
456 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.*" %>
|
|
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%>
|
|
<%@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>
|
|
<script type="text/javascript">
|
|
$(function(){
|
|
//첨부파일
|
|
fnc_setFileDropZone("RELEASE_CHECKDropZone" , "${resultMap.RELEASE_OBJID}", "RELEASE_CHECK" , "RELEASE_CHECK" , "fileAreaDraw",false,null,null);
|
|
fnc_setFileDropZone("RELEASE_ORDERDropZone" , "${resultMap.RELEASE_OBJID}", "RELEASE_ORDER" , "RELEASE_ORDER" , "fileAreaDraw",false,null,null);
|
|
fnc_setFileDropZone("RELEASE_TAKING_OVERDropZone", "${resultMap.RELEASE_OBJID}", "RELEASE_TAKING_OVER", "RELEASE_TAKING_OVER", "fileAreaDraw",false,null,null);
|
|
fileAreaDraw();
|
|
|
|
$("#btnUpload1").click(function(){
|
|
var files = $("#file1")[0].files;
|
|
if(files.length > 0){
|
|
fnc_fileMultiUpload(files, null, "${resultMap.RELEASE_OBJID}", "RELEASE_CHECK", "RELEASE_CHECK", null, "fileAreaDraw");
|
|
//file객체 초기화
|
|
$("#file1").val("");
|
|
}else{
|
|
Swal.fire("선택된 File이 없습니다.");
|
|
}
|
|
});
|
|
$("#btnUpload2").click(function(){
|
|
var files = $("#file2")[0].files;
|
|
if(files.length > 0){
|
|
fnc_fileMultiUpload(files, null, "${resultMap.RELEASE_OBJID}", "RELEASE_ORDER", "RELEASE_ORDER", null, "fileAreaDraw");
|
|
//file객체 초기화
|
|
$("#file2").val("");
|
|
}else{
|
|
Swal.fire("선택된 File이 없습니다.");
|
|
}
|
|
});
|
|
$("#btnUpload3").click(function(){
|
|
var files = $("#file3")[0].files;
|
|
if(files.length > 0){
|
|
fnc_fileMultiUpload(files, null, "${resultMap.RELEASE_OBJID}", "RELEASE_TAKING_OVER", "RELEASE_TAKING_OVER", null, "fileAreaDraw");
|
|
//file객체 초기화
|
|
$("#file3").val("");
|
|
}else{
|
|
Swal.fire("선택된 File이 없습니다.");
|
|
}
|
|
});
|
|
|
|
//날짜
|
|
_fnc_datepick();
|
|
$('.select2').select2();
|
|
|
|
//저장
|
|
$("#btnSave").click(function(){
|
|
fn_save();
|
|
});
|
|
|
|
$("#btnClose").click(function(){
|
|
self.close();
|
|
});
|
|
|
|
$(".File2").click(function(){
|
|
var objId = $(this).attr("data-OBJID");
|
|
var docType =$(this).attr("data-docType");
|
|
var docTypeName = $(this).attr("data-docTypeName");
|
|
var params = "?targetObjId="+objId+"&docType="+docType+"&docTypeName="+docTypeName;
|
|
window.open("/common/FileRegistPopup.do"+params, "", "width=800, height=335");
|
|
});
|
|
|
|
$("#INSTALL_RESULT").val("${resultMap.INSTALL_RESULT}").trigger("change");
|
|
});
|
|
|
|
|
|
function fn_setoption(){
|
|
$.ajax({
|
|
url:"/common/getContractOptionList.do",
|
|
type:"POST",
|
|
data:{"isJson":true,"objId":"${resultMap.OBJID}"},
|
|
dataType:"json",
|
|
async:false,
|
|
success:function(data){
|
|
resultList = data
|
|
if(0 < resultList.length){
|
|
for (var i = 0; i < resultList.length; i++) {
|
|
var commonCodeId = resultList[i].CODE;
|
|
$("input[name=option_type][value="+commonCodeId+"]").prop("checked",true);
|
|
}
|
|
}
|
|
},
|
|
error: function(jqxhr, status, error){
|
|
}
|
|
});
|
|
}
|
|
|
|
function fn_save(){
|
|
if(fnc_valitate("form1")){
|
|
if(confirm("저장하시겠습니까?")){
|
|
$.ajax({
|
|
url:"/releaseMgmt/saveReleaseMgmtInfo.do",
|
|
type:"POST",
|
|
data:$("#form1").serialize(),
|
|
dataType:"json",
|
|
success:function(data){
|
|
Swal.fire(data.msg);
|
|
|
|
if(data.result){
|
|
opener.fn_search();
|
|
self.close();
|
|
}
|
|
|
|
},
|
|
error: function(jqxhr, status, error){
|
|
}
|
|
});
|
|
}
|
|
}
|
|
}
|
|
|
|
function _fnc_datepick(){
|
|
var $dateinput = $("input.date_icon");
|
|
for(var i=0; i<$dateinput.length; i++){
|
|
$dateinput.eq(i).attr("size","10");
|
|
$dateinput.eq(i).datepicker({
|
|
changeMonth:true,
|
|
changeYear:true
|
|
});
|
|
}
|
|
}
|
|
|
|
function fileAreaDraw(){
|
|
fn_fileCallback("RELEASE_CHECK" ,"RELEASE_CHECK" );
|
|
fn_fileCallback("RELEASE_ORDER" ,"RELEASE_ORDER" );
|
|
fn_fileCallback("RELEASE_TAKING_OVER","RELEASE_TAKING_OVER");
|
|
}
|
|
//첨부파일 목록을 가져온다.
|
|
function fn_fileCallback(areaId,fileType){
|
|
$.ajax({
|
|
url:"/common/getFileList.do",
|
|
type:"POST",
|
|
data:{"targetObjId":"${resultMap.RELEASE_OBJID}", "docType":fileType},
|
|
dataType:"json",
|
|
async:false,
|
|
success:function(data){
|
|
if(data.length > 0){
|
|
//첨부파일 목록 영역 show
|
|
$("#"+areaId+"FileArea").empty();
|
|
|
|
if($("#"+areaId+"DefaultRow").length > 0){
|
|
$("#"+areaId+"DefaultRow").hide();
|
|
}
|
|
|
|
var appendText = "";
|
|
appendText +="<colgroup>";
|
|
appendText +=" <col width='10%''>";
|
|
appendText +=" <col width='*'>";
|
|
appendText +=" <col width='20%'>";
|
|
appendText +="</colgroup>";
|
|
|
|
$.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 += "<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>";
|
|
appendText += _appendText;
|
|
});
|
|
$("#"+areaId +"FileArea").append(appendText);
|
|
$("#"+areaId+"FileArea").show();
|
|
}else{
|
|
$("#"+areaId+"DropZone").show();
|
|
$("#"+areaId+"FileArea").empty();
|
|
$("#"+areaId+"FileArea").hide();
|
|
}
|
|
},
|
|
error: function(jqxhr, status, error){
|
|
}
|
|
});
|
|
}
|
|
//첨부 파일 삭제
|
|
function fileDelete(fileObjId, areaId){
|
|
var type =areaId;
|
|
if(confirm("파일을 삭제하시겠습니까?")){
|
|
$.ajax({
|
|
url:"/common/deleteFileInfo.do",
|
|
type:"POST",
|
|
data:{"objId":fileObjId},
|
|
dataType:"json",
|
|
async:true,
|
|
success:function(data){
|
|
fileAreaDraw();
|
|
},
|
|
error: function(jqxhr, status, error){
|
|
}
|
|
});
|
|
}
|
|
}
|
|
</script>
|
|
</head>
|
|
<body>
|
|
<form name="form1" id="form1" action="" method="post">
|
|
<input type="hidden" name="RELEASE_OBJID" id="RELEASE_OBJID" value="${resultMap.RELEASE_OBJID}">
|
|
<input type="hidden" name="PARENT_OBJID" id="CONTRACT_OBJID" value="${resultMap.OBJID}">
|
|
<input type="hidden" name="PRODUCT_GROUP" id="PRODUCT_GROUP" value="${resultMap.CM_PRODUCT_GROUP}">
|
|
<input type="hidden" name="PRODUCT" id="PRODUCT" value="${resultMap.CM_PRODUCT}">
|
|
|
|
<input type="hidden" name="objId" id="objId" value="${resultMap.CONTRACT_OBJID}">
|
|
<input type="hidden" name="option" id="option">
|
|
<section>
|
|
<div class="plm_menu_name">
|
|
<h2>
|
|
<span>영업관리_출고관리 등록</span>
|
|
</h2>
|
|
</div>
|
|
<div id="businessPopupFormWrap">
|
|
<!-- <h4><span>출고관리 정보</span></h4> -->
|
|
<table class="pmsPopupForm">
|
|
<colgroup>
|
|
<col width="35%">
|
|
<col width="*">
|
|
</colgroup>
|
|
<%--
|
|
<tr>
|
|
<td class="input_title"><label for="">출고 S/N</label></td>
|
|
<td class="input_sub_title">
|
|
<input type="text" name="RELEASE_CAR_NO" id="RELEASE_CAR_NO" value="${resultMap.RELEASE_CAR_NO}">
|
|
</td>
|
|
</tr>
|
|
--%>
|
|
<tr>
|
|
<td class="input_title"><label for="">출고검사</label></td>
|
|
<td class="input_sub_title">
|
|
<%-- <a href="#" class="File2 file_${resultMap.RELEASE_CHECK_CNT eq 0?'empty_':''}icon" data-OBJID="${resultMap.RELEASE_OBJID}" data-docType="RELEASE_CHECK" data-docTypeName="RELEASE_CHECK"></a> --%>
|
|
|
|
<div id="businessPopupFormWrap">
|
|
<h4><span>출고검사 첨부파일</span></h4>
|
|
<table class="pmsPopupForm">
|
|
<colgroup>
|
|
<col width="12.5%">
|
|
<col width="12.5%">
|
|
<col width="12.5%">
|
|
<col width="12.5%">
|
|
<col width="12.5%">
|
|
<col width="12.5%">
|
|
</colgroup>
|
|
<tr>
|
|
<td colspan="6">
|
|
<div id="RELEASE_CHECKDropZone" class="dropzone"style="width:99%; height:30px; !important;">Drag & Drop Files Here</div>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td colspan="6">
|
|
<div class="project_form_in_table" style="width: 100%" id="RELEASE_CHECKFileAreaTable">
|
|
<input type="file" name="file1" id="file1" multiple>
|
|
<input type="button" id="btnUpload1" value="Upload" class="upload_btns">
|
|
<div style="overflow-y: scroll;">
|
|
<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: 40px;">
|
|
<table id="RELEASE_CHECKFileArea" class="fileListscrollTbody">
|
|
</table>
|
|
</div>
|
|
</div>
|
|
</td>
|
|
</tr>
|
|
</table>
|
|
</div>
|
|
</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td class="input_title"><label for="">출하지시서</label></td>
|
|
<td class="input_sub_title">
|
|
<%-- <a href="#" class="File2 file_${resultMap.RELEASE_ORDER_CNT eq 0?'empty_':''}icon" data-OBJID="${resultMap.RELEASE_OBJID}" data-docType="RELEASE_ORDER" data-docTypeName="RELEASE_ORDER"></a> --%>
|
|
<div id="businessPopupFormWrap">
|
|
<h4><span>출하지시서 첨부파일</span></h4>
|
|
<table class="pmsPopupForm">
|
|
<colgroup>
|
|
<col width="12.5%">
|
|
<col width="12.5%">
|
|
<col width="12.5%">
|
|
<col width="12.5%">
|
|
<col width="12.5%">
|
|
<col width="12.5%">
|
|
</colgroup>
|
|
<tr>
|
|
<td colspan="6">
|
|
<div id="RELEASE_ORDERDropZone" class="dropzone"style="width:99%; height:30px; !important;">Drag & Drop Files Here</div>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td colspan="6">
|
|
<div class="project_form_in_table" style="width: 100%" id="RELEASE_ORDERFileAreaTable">
|
|
<input type="file" name="file2" id="file2" multiple>
|
|
<input type="button" id="btnUpload2" value="Upload" class="upload_btns">
|
|
<div style="overflow-y: scroll;">
|
|
<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: 40px;">
|
|
<table id="RELEASE_ORDERFileArea" class="fileListscrollTbody">
|
|
</table>
|
|
</div>
|
|
</div>
|
|
</td>
|
|
</tr>
|
|
</table>
|
|
</div>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td class="input_title"><label for="">출고일</label></td>
|
|
<td class="input_sub_title">
|
|
<input type="text" name="RELEASE_DATE" id="RELEASE_DATE" value="${resultMap.RELEASE_DATE}" class="date_icon">
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td class="input_title"><label for="">인수인계</label></td>
|
|
<td class="input_sub_title">
|
|
<%-- <a href="#" class="File2 file_${resultMap.RELEASE_TAKING_OVER_CNT eq 0?'empty_':''}icon" data-OBJID="${resultMap.RELEASE_OBJID}" data-docType="RELEASE_TAKING_OVER" data-docTypeName="RELEASE_TAKING_OVER"></a> --%>
|
|
<div id="businessPopupFormWrap">
|
|
<h4><span>인수인계 첨부파일</span></h4>
|
|
<table class="pmsPopupForm">
|
|
<colgroup>
|
|
<col width="12.5%">
|
|
<col width="12.5%">
|
|
<col width="12.5%">
|
|
<col width="12.5%">
|
|
<col width="12.5%">
|
|
<col width="12.5%">
|
|
</colgroup>
|
|
<tr>
|
|
<td colspan="6">
|
|
<div id="RELEASE_TAKING_OVERDropZone" class="dropzone"style="width:99%; height:30px; !important;">Drag & Drop Files Here</div>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td colspan="6">
|
|
<div class="project_form_in_table" style="width: 100%" id="RELEASE_TAKING_OVERFileAreaTable">
|
|
<input type="file" name="file3" id="file3" multiple>
|
|
<input type="button" id="btnUpload3" value="Upload" class="upload_btns">
|
|
<div style="overflow-y: scroll;">
|
|
<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: 40px;">
|
|
<table id="RELEASE_TAKING_OVERFileArea" class="fileListscrollTbody">
|
|
</table>
|
|
</div>
|
|
</div>
|
|
</td>
|
|
</tr>
|
|
</table>
|
|
</div>
|
|
</td>
|
|
</tr>
|
|
|
|
<%--
|
|
<tr>
|
|
<td class="input_title"><label for="">인수자</label></td>
|
|
<td class="input_sub_title">
|
|
<input type="text" name="TASK_OVER_USER_ID" id="TASK_OVER_USER_ID" value="${resultMap.TASK_OVER_USER_ID}">
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td class="input_title"><label for="">인수일</label></td>
|
|
<td class="input_sub_title">
|
|
<input type="text" name="TASK_OVER_DATE" id="TASK_OVER_DATE" value="${resultMap.TASK_OVER_DATE}" class="date_icon">
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td class="input_title"><label for="">확인</label></td>
|
|
<td class="input_sub_title">
|
|
<input type="text" name="TASK_OVER_COMMENT" id="TASK_OVER_COMMENT" value="${resultMap.TASK_OVER_COMMENT}">
|
|
</td>
|
|
</tr>
|
|
--%>
|
|
<tr>
|
|
<td class="input_title"><label for="">설치완료일</label></td>
|
|
<td class="input_sub_title">
|
|
<input type="text" name="INSTALL_COMPLETE_DATE" id="INSTALL_COMPLETE_DATE" value="${resultMap.INSTALL_COMPLETE_DATE}" class="date_icon">
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td class="input_title"><label for="">설치결과</label></td>
|
|
<td class="input_sub_title">
|
|
<select name="INSTALL_RESULT" id="INSTALL_RESULT" style="" class="select2" autocomplete="off">
|
|
<option value="">선택</option>
|
|
<option value="OPEN">OPEN</option>
|
|
<option value="CLOSED">CLOSED</option>
|
|
</select>
|
|
</td>
|
|
</tr>
|
|
</table>
|
|
</div>
|
|
|
|
<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>
|
|
</section>
|
|
</form>
|
|
</body>
|
|
</html> |