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

419 lines
11 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_jqGrid.jsp"%>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title><%=Constants.SYSTEM_NAME%></title>
<script>
var deptList;
var userList;
$(document).ready(function(){
fn_getWBSTemplateTaskList();
$("._table1").scroll(function () {
$("._table2").scrollLeft($("._table1").scrollLeft());
});
$("._table2").scroll(function () {
$("._table1").scrollTop($("._table2").scrollTop());
$("._table1").scrollLeft($("._table2").scrollLeft());
});
deptList = fn_getDeptList();
userList = fn_getUserList();
$(".deptSelectBox").each(function(i){
var objId = $(this).attr("data-OBJID");
var thisDeptCode = $(this).attr("data-DEPT_CODE");
$(this).children('option').remove();
$(this).append(fn_setDeptList(deptList, thisDeptCode));
});
$(".userSelectBox").each(function(i){
var objId = $(this).attr("data-OBJID");
var thisDeptCode = $(this).attr("data-DEPT_CODE");
var userId = $(this).attr("data-MANAGER_USER_ID");
if("" != thisDeptCode){
$(this).children('option').remove();
$(this).append(fn_setUserList(userList,thisDeptCode,userId));
}
});
$(".deptSelectBox").change(function(i){
var objId = $(this).attr("data-OBJID");
var thisDeptCode = $(this).val();
$("#MANAGER_USER_ID_"+objId).children('option').remove();
$("#MANAGER_USER_ID_"+objId).append(fn_setUserList(userList,thisDeptCode,""));
});
$("#btnEdit").click(function(){
fn_edit();
});
$("#btnClose").click(function(){
opener.fn_search();
self.close();
});
$("#btnAdd").click(function(){
fn_openWBSTaskPopUp("");
});
$("#btnDelete").click(function(){
fn_deleteWBSTemplateTask();
});
});
function fn_deleteWBSTemplateTask(){
var checkArr = new Array();
var objidCodeArr = new Array();
$("input[name=CHK_OBJID]:checked").each(function(){
var objId = fnc_checkNull($(this).val().replace(" ",""));
checkArr.push(objId);
objidCodeArr.push($(this).parent().parent().find('input[name=OBJID_CODE]').val());
});
if(0 < checkArr.length){
if(confirm("삭제하시겠습니까?")){
$.ajax({
type : "POST",
url : "/project/deleteWBSTemplateTask.do",
data: {"checkArr":checkArr.join()
,"objidCodeArr":objidCodeArr.join()},
dataType:"json",
success:function(data){
Swal.fire(data.msg);
if(data.result =="true"){
fn_search();
}
}
,error: function(jqxhr, status, error){
}
});
}
}else{
Swal.fire("선택된 대상이 없습니다.");
return false;
}
}
function fn_openWBSTaskPopUp(objId){
var hiddenForm = document.hiddenForm;
var url = "/project/wbsTemplateTaskFormPopUp.do";
var target = "openWBSPopUp";
window.open(url,target,"width=700, height=145, menubars=no, scrollbars=no, resizable=yes");
hiddenForm.action = url;
hiddenForm.OBJID.value = objId;
hiddenForm.PARENT_OBJID.value = "${param.OBJID}";
hiddenForm.target = target;
hiddenForm.submit();
}
/**
* WBS Task 추가
*/
function fn_deleteWBSTask(objId){
}
function fn_search(){
fn_getWBSTemplateTaskList();
//fn_setSelectData();
}
function fn_setSelectData(){
var oemObjId = $("#OEM_OBJID").val();
$("input[name='WBS_TASK_OBJID']").each(function(i){
var targetVal = $(this).val();
var userSelectId = "MANAGER_USER_ID_"+targetVal;
var userSelectedVal = $("#TEMP_MANAGER_USER_ID_"+targetVal).val();
fnc_getDeptList2(deptSelectId, deptSelectedVal);
fnc_getUserList(userSelectId, deptSelectedVal, null, userSelectedVal);
fnc_getMilestoneList(oemObjId, milestoneSelectId, milestoneSelectedVal);
});
}
/*
* WBS Task 마스터에 연결된 Task 목록을 가져온다.
*/
function fn_getWBSTemplateTaskList(){
$("#wbsTaskListArea").empty();
$.ajax({
url:"/project/getWBSTemplateTaskList.do",
type:"POST",
data:{"OBJID":"${param.OBJID}"},
dataType:"json",
async:false,
success:function(data){
var wbsTaskList = data;
var appendText = "";
if(0 < wbsTaskList.length){
for(var i=0;i<wbsTaskList.length;i++){
var wbsTaskData = wbsTaskList[i];
var WBS_OBJID = wbsTaskData.OBJID;
var OBJID_CODE = fnc_checkNull(wbsTaskData.OBJID_CODE);
var TASK_NAME = fnc_checkNull(wbsTaskData.TASK_NAME);
var TASK_SEQ = fnc_checkNull(wbsTaskData.TASK_SEQ);
var MANAGER_USER_ID = fnc_checkNull(wbsTaskData.USER_ID);
var MANAGER_USER_ID_TITLE = fnc_checkNull(wbsTaskData.USER_ID_TITLE);
var UNIT_NO = fnc_checkNull(wbsTaskData.UNIT_NO);
appendText += " <tr>";
appendText += " <input type='hidden' name='OBJID' value='"+WBS_OBJID+"'> ";
appendText += " <input type='hidden' name='WBS_TASK_OBJID' value='"+WBS_OBJID+"'>";
appendText += " <input type='hidden' name='OBJID_CODE' value='"+OBJID_CODE+"'> ";
appendText += " <input type='hidden' name='TEMP_MANAGER_USER_ID_"+WBS_OBJID+"' id='TEMP_MANAGER_USER_ID_"+WBS_OBJID+"' value='"+MANAGER_USER_ID+"'>";
appendText += " <td>";
appendText += " <input type='checkbox' name='CHK_OBJID' value='"+WBS_OBJID+"'>";
appendText += " </td>";
//appendText += " <td>"+TASK_SEQ+"</td><!-- 순 --> ";
appendText += " <td><a href='#' onclick=\"fn_openWBSTaskPopUp('"+WBS_OBJID+"');\">"+TASK_NAME+"</a></td><!-- Task Name --> ";
appendText += " </td>";
appendText += " <td>";
appendText += " "+UNIT_NO;
appendText += " </td>";
appendText += " </tr>";
}
}else{
appendText = "<td align='center' colspan='9'>조회된 데이터가 없습니다.</td>";
}
$("#wbsTaskListArea").append(appendText);
},
error: function(jqxhr, status, error){
}
});
}
function fn_edit(){
if(confirm("수정하시겠습니까?")){
var form1 = document.form1;
form1.action = "/project/wbs/wbsTaskFormPopUp.do?OBJID=${param.OBJID}&objId=${param.OBJID}";
form1.submit();
}
}
function fn_getDeptList(){
var resultList;
$.ajax({
url:"/common/getDeptList.do",
type:"POST",
data:{"isJson":true},
dataType:"json",
async:false,
success:function(data){
resultList = data;
},
error: function(jqxhr, status, error){
}
});
return resultList;
}
function fn_setDeptList(deptList,selectedVal){
var resultTxt = "";
resultTxt += "<option value=''>선택</option>";
if(0 < deptList.length){
for (var i = 0; i < deptList.length; i++) {
var code = deptList[i].CODE;
var name = deptList[i].NAME;
if(selectedVal == code){
resultTxt += "<option value='"+code+"' selected>"+name+"</option>";
}else{
resultTxt += "<option value='"+code+"'>"+name+"</option>";
}
}
}
return resultTxt;
}
function fn_getUserList(deltCode,selectedVal){
var resultList;
$.ajax({
url:"/common/searchUserList.do",
type:"POST",
data:{"isJson":true},
dataType:"json",
async:false,
success:function(data){
resultList = data;
},
error: function(jqxhr, status, error){
}
});
return resultList;
}
function fn_setUserList(userList,deltCode,selectedVal){
var resultTxt = "";
resultTxt += "<option value=''>선택</option>";
if("" != deltCode && 0 < userList.length){
for (var i = 0; i < userList.length; i++) {
var code = userList[i].CODE;
var name = userList[i].NAME;
var userDeptCode = userList[i].DEPT_CODE;
if(deltCode == userDeptCode){
if(selectedVal == code){
resultTxt += "<option value='"+code+"' selected>"+name+"</option>";
}else{
resultTxt += "<option value='"+code+"'>"+name+"</option>";
}
}
}
}
return resultTxt;
}
function fn_save(){
if(confirm("저장하시겠습니까?")){
$.ajax({
url:"/project/saveWBSTemplateMasterInfo.do",
type:"POST",
data:$("#form1").serialize(),
dataType:"json",
async:false,
success:function(data){
alert(data.msg);
if(data.result){
opener.fn_search();
self.close(0);
}else{
return false;
}
},
error: function(jqxhr, status, error){
}
});
}
}
</script>
</head>
<body class="">
<form name="hiddenForm" id="hiddenForm" method="post">
<input type="hidden" name="OBJID" id="OBJID">
<input type="hidden" name="PARENT_OBJID" id="PARENT_OBJID" value="${param.OBJID}">
</form>
<form name="form1" id="form1" method="post">
<input type="hidden" name="OBJID" id="OBJID" value="${resultMap.OBJID}">
<section>
<div class="plm_menu_name">
<h2>
<span>제품구분_UNIT관리</span>
</h2>
</div>
<div id="businessPopupFormWrap">
<table class="pmsPopupForm" style="width:100%;margin: 10px 0 0 0; float:left;">
<colgroup>
<col width="10%"/>
<col width="*"/>
<col width="10%"/>
<col width="*"/>
<col width="12%"/>
<col width="*"/>
</colgroup>
<tr>
<td class="input_title">
<label for="" class="">제품구분</label>
</td>
<td>
<input id="product_name" name="product_name" type="text" value="${resultMap.PRODUCT_OBJID_NAME}" disabled>
</td>
<td class="input_title">
<label for="title" class="">기계형식</label>
</td>
<td>
<input id="title" name="title" type="text" value="${resultMap.TITLE}" disabled>
</td>
<td class="input_title">
<label for="customer_product" class="">고객사_장비목적</label>
</td>
<td>
<input id="customer_product" name="customer_product" type="text" value="${resultMap.CUSTOMER_PRODUCT}">
</td>
</tr>
</table>
<%--
<div>
<div class="plm_btn_wrap">
<input type="button" value="추가" class="plm_btns" id="btnAdd">
<!-- 230802 삭제 기능 막음(표준 유닛을 사용하는데 있어서 문제 우려로) -->
<c:if test="${ 'plm_admin' eq connectUserId}">
<input type="button" value="삭제" class="plm_btns" id="btnDelete">
</c:if>
</div>
</div>
<div class="in_table_scroll_wrap _table1" style="height:26px;width:98.8%;margin-top:10px;">
<table class="plm_table">
<colgroup>
<col width="5%" />
<!--
<col width="5%" /> 순
-->
<col width="80%" /> <!-- Task명 -->
<col width="*" /> <!-- 산출물 이름 -->
</colgroup>
<thead>
<tr class="plm_thead">
<td><input type="checkbox" name=""></td>
<!-- <td>순</td> -->
<td>UNIT Name</td>
<td>UNIT No</td>
</tr>
</thead>
</table>
</div>
<div class="in_table_scroll_wrap _table2" style="height:550px; width:100%;">
<table class="plm_table">
<colgroup>
<col width="5%" />
<!--
<col width="5%" /> 순
-->
<col width="80%" /> <!-- Task명 -->
<col width="*" /> <!-- 산출물 이름 -->
</colgroup>
<tbody id="wbsTaskListArea"></tbody>
</table>
</div>
</div>
--%>
<div class="btn_wrap" style="clear:both; padding-top:10px">
<div class="plm_btn_wrap_center">
<input type="button" value="저장" class="plm_btns" onclick="fn_save();">
<input type="button" value="닫기" id="btnClose" class="plm_btns">
</div>
</div>
</section>
</form>
</body>
</html>