- 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
521 lines
17 KiB
Plaintext
521 lines
17 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="categoryHighObjid" value="${categoryDataSet.CATEGORY_HIGH_OBJID}" />
|
|
<c:set var="categoryParentObjid" value="${categoryDataSet.PARENT_OBJID}" />
|
|
<c:set var="categoryObjid" value="${categoryDataSet.OBJID}" />
|
|
<c:set var="categoryInputType" value="${empty categoryDataSet.SPEC_INPUT_TYPE ? '' : categoryDataSet.SPEC_INPUT_TYPE}" />
|
|
<c:set var="objid" value="${param.objid}" />
|
|
|
|
<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="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}" />
|
|
|
|
<script type="text/javascript">
|
|
$(document).ready(function(){
|
|
fnc_datepick();
|
|
|
|
if("${!empty categoryHighObjid}"){
|
|
getSpecCategoryList("categoryHigh","${categoryHighObjid}","","high");
|
|
getSpecCategoryList("categoryMid","${categoryParentObjid}","${categoryHighObjid}","mid");
|
|
getSpecCategoryList("categoryLow","${categoryObjid}","${categoryParentObjid}","low");
|
|
}else{
|
|
getSpecCategoryList("categoryHigh","","","high");
|
|
}
|
|
|
|
getOEMList("oem","${oemObjid}");
|
|
getOEMList("compete","${competeObjid}");
|
|
getProductFamilyList("${productGroupObjid}");
|
|
getProductList("${productGroupObjid}","${productObjid}");
|
|
getCarList("${oemObjid}","${carObjid}");
|
|
getCarGradeList("","${gradeObjid}",false);
|
|
});
|
|
function specDataRevision(formName){
|
|
$("#actionType").val("revision");
|
|
save(formName)
|
|
}
|
|
|
|
function specDataChange(){
|
|
window.open("","specDataChangePop","width=900 height=700 menubar=no status=no");
|
|
|
|
var hiddenForm = document.hiddenForm;
|
|
hiddenForm.target = "specDataChangePop";
|
|
hiddenForm.action = "/specData/specDataChangeFS.do";
|
|
hiddenForm.submit();
|
|
}
|
|
|
|
function getSpecCategoryList(targetId,targetObjid,parentObjid,categoryLevel){
|
|
getSpecCategoryChangeList(targetId);
|
|
if("high" != categoryLevel && "" == parentObjid){
|
|
return false;
|
|
}
|
|
|
|
$.ajax({
|
|
type : "POST",
|
|
url : "/admin/getCategoryTypeList.do",
|
|
data:{ "categoryType" : categoryLevel, "categoryStatus" : "active", "parentObjid" : parentObjid},
|
|
dataType:"json",
|
|
async:false,
|
|
error: function(){
|
|
|
|
},
|
|
success: function(result){
|
|
getSpecCategoryChangeList(targetId);
|
|
if(null != result){
|
|
for(var i=0;i<result.length;i++){
|
|
var objid = result[i].OBJID;
|
|
var categoryName = result[i].CATEGORY_NAME;
|
|
var specInputType = result[i].SPEC_INPUT_TYPE;
|
|
var carFlag = result[i].USE_CAR;
|
|
var productFlag = result[i].USE_PRODUCT;
|
|
var revisionFlag = result[i].USE_REVISION;
|
|
var changeFlag = result[i].USE_DOC_LINK;
|
|
var compatitionFlag = result[i].USE_COMPATITION_CAR;
|
|
var productGroupFlag = result[i].USE_PRODUCT_GROUP;
|
|
|
|
var optionAppendVal = "<option"
|
|
optionAppendVal+= " value='"+objid+"'";
|
|
|
|
if("low" == categoryLevel){
|
|
optionAppendVal+= " specInputType='"+specInputType+"'";
|
|
optionAppendVal+= " carFlag='"+carFlag+"'";
|
|
optionAppendVal+= " productFlag='"+productFlag+"'";
|
|
optionAppendVal+= " revisionFlag='"+revisionFlag+"'";
|
|
optionAppendVal+= " changeFlag='"+changeFlag+"'";
|
|
optionAppendVal+= " compatitionFlag='"+compatitionFlag+"'";
|
|
optionAppendVal+= " productGroupFlag='"+productGroupFlag+"'";
|
|
}
|
|
optionAppendVal+= ">";
|
|
optionAppendVal+= categoryName;
|
|
optionAppendVal+= "</option>"
|
|
$("#"+targetId).append(optionAppendVal);
|
|
|
|
|
|
}
|
|
if("" != targetObjid){
|
|
$("#"+targetId).val(targetObjid);
|
|
}
|
|
}
|
|
}
|
|
});
|
|
}
|
|
|
|
//고객사 정보를 가져온다.
|
|
function getOEMList(targetAreaId,targetObjid){
|
|
|
|
var oemSelectObj = $("#"+targetAreaId);
|
|
$(oemSelectObj).find("option").remove();
|
|
$(oemSelectObj).append("<option value=''>선택</option>");
|
|
|
|
$.ajax({
|
|
type : "POST",
|
|
url : "/specData/getOEMList.do",
|
|
data:{ "searchStatus" : "active"},
|
|
dataType:"json",
|
|
async:false,
|
|
error: function(){
|
|
|
|
},
|
|
success: function(result){
|
|
if(null != result){
|
|
for(var i=0;i<result.length;i++){
|
|
var objid = result[i].OBJID;
|
|
var oemName = result[i].OEM_NAME;
|
|
$(oemSelectObj).append("<option value='"+objid+"'>"+oemName+"</option>");
|
|
}
|
|
if("" != targetObjid){
|
|
$(oemSelectObj).val(targetObjid);
|
|
}
|
|
}
|
|
}
|
|
});
|
|
}
|
|
|
|
//고객사에 따른 차종의 목록을 가져온다. HED: 추후개발(박성룡 사원 기능 개발 후 추가)
|
|
function getCarList(oemObjid,carObjid){
|
|
var carSelectObj = $("#car");
|
|
$(carSelectObj).find("option").remove();
|
|
$(carSelectObj).append("<option value=''>선택</option>");
|
|
|
|
if("" == oemObjid || null == oemObjid){
|
|
return false;
|
|
}else{
|
|
$.ajax({
|
|
type : "POST",
|
|
url : "/admin/getOEMsCarList.do",
|
|
data:{ "status" : "active" , "oemObjId" : oemObjid},
|
|
dataType:"json",
|
|
async:false,
|
|
error: function(){
|
|
|
|
},
|
|
success: function(result){
|
|
if(null != result){
|
|
for(var i=0;i<result.length;i++){
|
|
var objid = result[i].OBJID;
|
|
var carName = result[i].CAR_NAME;
|
|
var carCode = result[i].CAR_CODE;
|
|
$(carSelectObj).append("<option value='"+objid+"'>"+carName+"</option>");
|
|
}
|
|
if("" != carObjid){
|
|
$(carSelectObj).val(carObjid);
|
|
}
|
|
}
|
|
}
|
|
});
|
|
}
|
|
}
|
|
|
|
//제품군 목록을 가져온다.
|
|
function getProductFamilyList(productFamilyObjid){
|
|
var productFamilySelectObj = $("#productFamily");
|
|
$(productFamilySelectObj).find("option").remove();
|
|
$(productFamilySelectObj).append("<option value=''>선택</option>");
|
|
|
|
$.ajax({
|
|
type : "POST",
|
|
url : "/specData/getProductFamilyList.do",
|
|
data:{ "status" : "active"},
|
|
dataType:"json",
|
|
async:false,
|
|
error: function(){
|
|
|
|
},
|
|
success: function(result){
|
|
if(null != result){
|
|
for(var i=0;i<result.length;i++){
|
|
$(productFamilySelectObj).append("<option value='"+result[i].OBJID+"'>"+result[i].PRODUCT_GROUP_NAME+"</option>");
|
|
}
|
|
if("" != productFamilyObjid){
|
|
$(productFamilySelectObj).val(productFamilyObjid);
|
|
}
|
|
}
|
|
}
|
|
});
|
|
}
|
|
|
|
//제품군에 따른 제품의 목록을 가져온다.
|
|
function getProductList(productFamilyObjid,productObjid){
|
|
var productSelectObj = $("#product");
|
|
$(productSelectObj).find("option").remove();
|
|
$(productSelectObj).append("<option value=''>선택</option>");
|
|
|
|
if("" == productFamilyObjid || null == productFamilyObjid){
|
|
return false;
|
|
}else{
|
|
$.ajax({
|
|
type : "POST",
|
|
url : "/specData/getProductList.do",
|
|
data:{ "status" : "active", "productGroupObjid" : productFamilyObjid},
|
|
dataType:"json",
|
|
async:false,
|
|
error: function(){
|
|
|
|
},
|
|
success: function(result){
|
|
if(null != result){
|
|
for(var i=0;i<result.length;i++){
|
|
$(productSelectObj).append("<option value='"+result[i].OBJID+"'>"+result[i].PRODUCT_NAME+"</option>");
|
|
}
|
|
if("" != productObjid){
|
|
$(productSelectObj).val(productObjid);
|
|
}
|
|
}
|
|
}
|
|
});
|
|
}
|
|
}
|
|
|
|
//차량의 등급목록을 가져온다.
|
|
//requiredFlag가 false일 경우 차종objid가 없어도 차종등급 목록을 가져오도록한다.
|
|
function getCarGradeList(carObjid, gradeObjid, requiredFlag){
|
|
var gradeSelectObj = $("#grade");
|
|
$(gradeSelectObj).find("option").remove();
|
|
$(gradeSelectObj).append("<option value=''>선택</option>");
|
|
|
|
if(requiredFlag){
|
|
if("" == carObjid || null == carObjid){
|
|
return false;
|
|
}
|
|
}
|
|
|
|
$.ajax({
|
|
type : "POST",
|
|
url : "/admin/getCarGradeList.do",
|
|
data:{ "status" : "active"},
|
|
dataType:"json",
|
|
async:false,
|
|
error: function(){
|
|
|
|
},
|
|
success: function(result){
|
|
if(null != result){
|
|
for(var i=0;i<result.length;i++){
|
|
$(gradeSelectObj).append("<option value='"+result[i].OBJID+"'>"+result[i].GRADE_NAME+"</option>");
|
|
}
|
|
if("" != gradeObjid){
|
|
$(gradeSelectObj).val(gradeObjid);
|
|
}
|
|
}
|
|
}
|
|
});
|
|
|
|
}
|
|
|
|
//카테고리 분류들을 초기화 시킨다.
|
|
function getSpecCategoryChangeList(targetId){
|
|
if("categoryHigh" == targetId){
|
|
$("#categoryHigh>option").remove();
|
|
$("#categoryHigh").append("<option value=''>선택</option>");
|
|
$("#categoryMid>option").remove();
|
|
$("#categoryMid").append("<option value=''>선택</option>");
|
|
$("#categoryLow>option").remove();
|
|
$("#categoryLow").append("<option value=''>선택</option>");
|
|
}else if("categoryMid" == targetId){
|
|
$("#categoryMid>option").remove();
|
|
$("#categoryMid").append("<option value=''>선택</option>");
|
|
$("#categoryLow>option").remove();
|
|
$("#categoryLow").append("<option value=''>선택</option>");
|
|
}else if("categoryLow" == targetId){
|
|
$("#categoryLow>option").remove();
|
|
$("#categoryLow").append("<option value=''>선택</option>");
|
|
}
|
|
}
|
|
|
|
//기술자료를 등록한다.
|
|
function save(type){
|
|
if(fnc_valitate("form1")){
|
|
$("#categoryObjid").val($("#categoryLow").val());
|
|
var param = $("#form1").serialize();
|
|
|
|
$.ajax({
|
|
type : "POST",
|
|
url : "/specData/saveSpecData.do",
|
|
data: param,
|
|
dataType:"json",
|
|
async:false,
|
|
error: function(){
|
|
|
|
},
|
|
success: function(result){
|
|
if(null != result){
|
|
|
|
}
|
|
}
|
|
});
|
|
}else{
|
|
return false;
|
|
}
|
|
}
|
|
|
|
//소분류 선택에 따른 입력부분을 변경한다.
|
|
function changeInputArea(selectObject){
|
|
var hiddenForm = document.hiddenForm;
|
|
var type = "";
|
|
var carFlag = "";
|
|
var productFlag = "";
|
|
var revisionFlag = "";
|
|
var changeFlag = "";
|
|
var compatitionFlag = "";
|
|
var productGroupFlag = "";
|
|
|
|
if(0 < selectObject.length){
|
|
for(var i=0;i<selectObject.length;i++){
|
|
if(selectObject[i].selected){
|
|
|
|
type = $(selectObject[i]).attr("specInputType");
|
|
|
|
if("benchMarking" == type){
|
|
}else if("designStandard" == type){
|
|
}else if("designVerifi" == type){
|
|
}else if("spec" == type){
|
|
}
|
|
if("benchMarking" == $(selectObject[i]).attr("specInputType")){
|
|
}
|
|
categoryObjid = $(selectObject[i]).val();
|
|
carFlag = $(selectObject[i]).attr("carFlag");
|
|
productFlag = $(selectObject[i]).attr("productFlag");
|
|
revisionFlag = $(selectObject[i]).attr("revisionFlag");
|
|
changeFlag = $(selectObject[i]).attr("changeFlag");
|
|
compatitionFlag = $(selectObject[i]).attr("compatitionFlag");
|
|
productGroupFlag = $(selectObject[i]).attr("productGroupFlag");
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
</script>
|
|
</head>
|
|
<body class="backcolor_light_blue">
|
|
<form name="hiddenForm" id="hiddenForm">
|
|
</form>
|
|
<form name="form1" id="form1" action="" method="post">
|
|
<input type="hidden" name="categoryObjid" id="categoryObjid">
|
|
<input type="hidden" name="actionType" id="actionType">
|
|
<section>
|
|
<div class="pdm_menu_name">
|
|
<h2>
|
|
<span>기술자료관리</span>
|
|
</h2>
|
|
</div>
|
|
<div id="specDataListPopupUpperFormWrap">
|
|
<div class="form_popup_title"> 기술자료관리 대/중/소 분류</div>
|
|
<table id="specDataListPopupFrom">
|
|
<colgroup>
|
|
<col width="33.5%">
|
|
<col width="33.5%">
|
|
<col width="*">
|
|
</colgroup>
|
|
<tr>
|
|
<td class="" rowspan="2">
|
|
<label for="" class="">대분류</label><br>
|
|
<select name="categoryHigh" id="categoryHigh" onchange="javascript:getSpecCategoryList('categoryMid','',this.value,'mid');" required type="select" title="대분류"></select>
|
|
</td>
|
|
<td>
|
|
<label for="" class="">중분류</label><br>
|
|
<select name="categoryMid" id="categoryMid" onchange="javascript:getSpecCategoryList('categoryLow','',this.value,'low');" required type="select" title="중분류"></select>
|
|
</td>
|
|
<td>
|
|
<label for="" class="">소분류</label><br>
|
|
<select name="categoryLow" id="categoryLow" onchange="javascript:changeInputArea(this);" required type="select" title="소분류"></select>
|
|
</td>
|
|
</tr>
|
|
</table>
|
|
</div>
|
|
</section>
|
|
<section>
|
|
<div id="specDataListPopupLowerFormWrap">
|
|
<div class="form_popup_title"> 기술자료관리 하위항목 분류</div>
|
|
<table id="specDataListPopupFrom">
|
|
<colgroup>
|
|
<col width="33.5%">
|
|
<col width="33.5%">
|
|
<col width="*">
|
|
</colgroup>
|
|
<tr>
|
|
<td>
|
|
<label for="">문서명</label><br>
|
|
<input type="text" class="short_text_area" name="docName" id="docName" value="${docName}">
|
|
</td>
|
|
<td class="">
|
|
<label for="">Spec No</label><br>
|
|
<input type="text" class="short_text_area" name="specNo" id="specNo" value="${specNo}">
|
|
</td>
|
|
<td>
|
|
<label for="" class="">단계</label><br>
|
|
<select id="">
|
|
<option value="">선택</option>
|
|
<option value="l1">L1</option>
|
|
<option value="l2">L2</option>
|
|
<option value="l3">L3</option>
|
|
<option value="l4">L4</option>
|
|
<option value="instl">INSTL</option>
|
|
</select>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td class="">
|
|
<label for="" class="">고객사</label><br>
|
|
<select name="oem" id="oem" onchange="parent.specDataPopUpTop.getCarList(this.value,'');"></select>
|
|
</td>
|
|
<td class="">
|
|
<label for="" class="">차종</label><br>
|
|
<select name="car" id="car"></select>
|
|
</td>
|
|
<td class="">
|
|
<label for="">문서번호</label><br>
|
|
<p>${docNo}</p> <input type="hidden" name="docNo" id="docNo" value="${docNo}">
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td class="">
|
|
<label for="" class="">제품군</label><br>
|
|
<select name="productFamily" id="productFamily" onchange="javascript:parent.specDataPopUpTop.getProductList(this.value,'${productObjid}');"></select>
|
|
</td>
|
|
<td class="">
|
|
<label for="" class="">제품</label><br>
|
|
<select name="product" id="product" ></select>
|
|
</td>
|
|
<td class="">
|
|
<label for="">Rev</label><br>
|
|
<p>${rev}</p><input type="hidden" name="revision" id="revision" value="${rev}">
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td class="">
|
|
<label for="">경쟁차종</label><br>
|
|
<input type="text" class="short_text_area" name="compatitionCar" id="compatitionCar" value="${compatitionCar}">
|
|
</td>
|
|
<td class="">
|
|
<label for="" class="">회사명</label><br>
|
|
<select name="compete" id="compete"></select>
|
|
</td>
|
|
<td>
|
|
<label for="" class="">등급구분</label><br>
|
|
<select name="grade" id="grade"></select>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td class="">
|
|
<label for="">등록일</label><br>
|
|
<input type="text" class="short_text_area" value="${regDate}" readonly>
|
|
</td>
|
|
<td class="">
|
|
<label for="">개정일</label><br>
|
|
<input type="text" class="short_text_area" name="revisionDate" id="revisionDate" value="${revisionDate}">
|
|
</td>
|
|
<td class="">
|
|
<label for="">제정일</label><br>
|
|
<input type="text" class="short_text_area" name="establishDate" id="establishDate" value="${establishDate}">
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td class="">
|
|
<label for="">변경내역</label><br>
|
|
<input type="text" class="short_text_area" value="${regDate}" readonly>
|
|
</td>
|
|
<td class="">
|
|
<label for="">개정일</label><br>
|
|
<input type="text" class="short_text_area" name="revisionDate" id="revisionDate" value="${revisionDate}">
|
|
</td>
|
|
<td class="">
|
|
<label for="">제정일</label><br>
|
|
<input type="text" class="short_text_area" name="establishDate" id="establishDate" value="${establishDate}">
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td colspan="3">
|
|
<label for="">첨부파일</label><br>
|
|
<input type="file" name="attachFile" id="attachFile">
|
|
</td>
|
|
</tr>
|
|
</table>
|
|
<div id="pdmSearchBtnWrap">
|
|
<input type="button" value="등록" class="pdm_btns" onclick="javascript:save('default');">
|
|
<input type="button" value="Revision" class="pdm_btns" onclick="javascript:specDataRevision('default');">
|
|
<input type="button" value="기술문서 치환" class="pdm_btns" onclick="javascript:specDataChange();">
|
|
</div>
|
|
</div>
|
|
</section>
|
|
</form>
|
|
</body>
|
|
</html> |