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

640 lines
26 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" %>
<%
PersonBean person = (PersonBean)session.getAttribute(Constants.PERSON_BEAN);
String connector = person.getUserId();
%>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title><%=Constants.SYSTEM_NAME%></title>
<link rel="stylesheet" href="/css/basicDash.css">
<!-- //JSTL 페이징 변수선언 -->
<c:set var="totalCount" value="${empty TOTAL_COUNT?0:TOTAL_COUNT}" />
<c:set var="maxPage" value="${empty MAX_PAGE_SIZE?1:MAX_PAGE_SIZE}" />
<c:set var="nPage" value="${empty param.page?1:param.page}" />
<c:set var="pageIndex" value="${(nPage-1)/10}" />
<c:set var="nextPage" value="${empty NEXT_PAGE?1:NEXT_PAGE}" />
<c:set var="prevPage" value="${empty PREV_PAGE?1:PREV_PAGE}" />
<c:set var="now" value="<%=new java.util.Date() %>"/>
<c:set var="sysYear"><fmt:formatDate value="${now}" pattern="yyyy" /></c:set>
<c:set var="connector" value="<%=connector %>" />
<style>
#plmSearchZon table td {
border: none;
}
.contents_section1{
height:700px;
}
.select2-selection__choice {
font-size: 11px;
background-color: #fff !important;
border: none !important;
margin-right: 0px !important;
}
.select2-selection__choice__remove {
display: contents !important;
}
.select2-container .select2-selection--multiple {
min-height: 20px !important;
}
.select2-container--default .select2-selection--multiple .select2-selection__choice {
margin-top: 3.5px !important;
}
.select2-selection__rendered {
height: 18px !important;
}
.select2-container .select2-selection--multiple .select2-selection__rendered {
overflow: auto !important;
}
</style>
<script>
$(document).ready(function(){
$('.select2').select2();
$("#btnSearch").click(function(){
//$("#page").val("1");
fn_search();
});
fnc_datepick();
$(".trProject").on("click", function(e){
$(this).find("input[name=ckBoxProject]").trigger("click");
});
//프로젝트 선택 시
$("input[name=ckBoxProject]").on("click change", function(e){
e.stopPropagation(); // 이벤트 전파 차단
var projectObjId = $('input[name=ckBoxProject]:checked').val();
$(".highlighted").removeClass("highlighted");
$(this).parent().parent().addClass("highlighted");
_startLoading();
//fn_getProjectIssueStatusList(projectObjId);
//fn_getProjectCostStatusList(projectObjId);
_endLoading();
});
$(".trProject").eq(0).trigger("click");
//SR자료등록 팝업
$(".File").click(function(){
var popup_width = 800;
var popup_height = 250;
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;
var url = "/projectConcept/FileRegistPopup.do"+params;
fn_centerPopup(popup_width, popup_height, url);
});
//엔터 조회
$("input").keyup(function(e){
if(e.keyCode == 13){
$("#page").val("1");
fn_search();
}
});
$("#btnWbs").click(function(){
var objid = $("input[name=ckBoxProject]:checked").val();
var CATEGORY_CD = $('input[name=ckBoxProject]:checked').attr('data-CATEGORY_CD');
wbs_popup(objid, CATEGORY_CD);
});
$("#btnGChart").click(function(){
var objid = $("input[name=ckBoxProject]:checked").val();
//var CATEGORY_CD = $('input[name=ckBoxProject]:checked').attr('data-CATEGORY_CD');
GanttChart_popup(objid);
});
fn_drawGantt();
//fn_search();
var busArry = "${param.project_nos}".split(",");
if(busArry != '' && busArry != null){
for(var i=0;i<busArry.length;i++){
$("#project_no option[value="+busArry[i]+"]").attr("selected",true);
}
}
$("#project_no").select2({multiple: true});
});
//프로젝트에 해당하는 WBS Task 목록 PopUp을 호출한다.
function fn_openProjectWBSTask(projectObjId){
if(null != projectObjId){
window.open("/project/wbs/wbsTaskDetailPopUp.do?OBJID="+projectObjId+"&objId="+projectObjId, "", "width=1700, height=700");
}else{
alert("잘못된 접근입니다.");
}
}
function wbs_popup(objId,categoryCd){
var popup_width = 1700;
var popup_height = 800;
var objId = objId;
var params = "?OBJID="+objId+"&CATEGORY_CD="+categoryCd;
//var url = "/project/wbsTaskProductGanttFormPopUp.do"+params;
var url = "/project/wbsTaskProductFormPopUp.do"+params;
fn_centerPopup(popup_width, popup_height, url);
}
function GanttChart_popup(objId){
var popup_width = 1800;
var popup_height = 800;
var objId = objId;
var params = "?OBJID="+objId;
//var url = "/project/wbsTaskProductGanttFormPopUp.do"+params;
var url = "/project/wbsTaskProductGantt.do"+params;
fn_centerPopup(popup_width, popup_height, url);
}
//프로젝트의 form,detail 팝업을 보여준다.
function openProjectFormPopUp(objId){
var popup_width = 420;
var popup_height = 350;
var objId = objId;
var params = "?OBJID="+objId;
var url = "/project/projectmodifyPopUp.do"+params;
fn_centerPopup(popup_width, popup_height, url);
}
<c:set var="ganttTotalWidth" value="720"/>
/*
<c:set var="ganttTotalCnt" value="36"/>
*/
<c:set var="ganttTotalCnt" value="24"/>
<c:set var="ganttTdWidth" value="${ganttTotalWidth/ganttTotalCnt}"/>
function fn_drawGantt(){
var tdWidth = ${ganttTdWidth};
var quarterWidth = tdWidth*3;
var yyyyPre = Number('${yyyyPre}');
var curYear = Number('${yyyy}');
var yyyyNext = Number('${yyyyNext}');
var today = '${today2}';
var arrDate = today.split('-');
var sYear = Number(arrDate[0]);
/*
var sMonth = Number(arrDate[1]);
var sDate = Number(arrDate[2]);
var sYearIndex = Number(sYear) - Number(curYear) + 2;
var quarterIndex = sMonth%3 == 0 ? 3 : sMonth%3;
var quarter = Math.floor((sMonth-1)/3+1); //내림
var xStart = ((sYearIndex-1)*yearMonthCnt + ((quarter-1)*monthCntInQuarter+quarterIndex-1)) * tdWidth + sDateStart;
$("#divTodayVline").css('left', (730)+"px"); //margin-left
*/
if( !(sYear > yyyyNext || sYear < yyyyPre)){
fn_drawGanttRow('divTodayVline','','${today2}','${today2}'); //today
}else{
//$(".divTodayVline").hide();
}
<c:choose>
<c:when test="${!empty projectList}">
<c:forEach var="info" items="${projectList}" varStatus="status">
fn_drawGanttRow('p1','${info.OBJID}','${info.DESIGN_ACT_START}','${info.DESIGN_ACT_END}'); //설계
fn_drawGanttRow('p2','${info.OBJID}','${info.PURCHASE_ACT_START}','${info.PURCHASE_ACT_END}'); //구매
fn_drawGanttRow('p3','${info.OBJID}','${info.PRODUCE_ACT_START}','${info.PRODUCE_ACT_END}'); //조립
fn_drawGanttRow('p4','${info.OBJID}','${info.REQ_DEL_DATE}','${info.REQ_DEL_DATE}'); //출고
fn_drawGanttRow('p5','${info.OBJID}','${info.SETUP_ACT_START}','${info.SETUP_ACT_END}'); //셋업
</c:forEach>
</c:when>
</c:choose>
/*
for(var i=1; i<13; i++){
console.log(i, (i-1)/3+1);
}
*/
}
function fn_drawGanttRow(classPrefix, OBJID, START_DATE, END_DATE ){
var isSmall = ${ganttTotalCnt == 24};
var baseXPosition = -3;
var days = 30.4;
var tdWidth = ${ganttTdWidth}; //20 start용
var tdWidth2 = ${ganttTdWidth}; //20으로 하면 over됨
var dayWidth = tdWidth/days;
var quarterCnt = 4;
var monthCntInQuarter = 3;
var yearMonthCnt = quarterCnt * monthCntInQuarter; //12
var quarterWidth = tdWidth * monthCntInQuarter;
var yyyyPre = '${yyyyPre}';
var curYear = '${yyyy}';
var yyyyNext = '${yyyyNext}';
var START_DATE = fnc_checkNull(START_DATE);
var END_DATE = fnc_checkNull(END_DATE);
if(fnc_isEmpty(START_DATE) && fnc_isEmpty(END_DATE)){
$("."+classPrefix+OBJID).hide();
return;
}
if(fnc_isEmpty(START_DATE)){
START_DATE = END_DATE;
}
if(fnc_isEmpty(END_DATE)){
END_DATE = START_DATE;
}
var arrDate = START_DATE.split('-');
var arrDate2 = END_DATE.split('-');
//var startYear = DESIGN_PLAN_START.substring(0, 4);
//var startMonth = DESIGN_PLAN_START.substring(4, 2);
//var sYearM = Number((arrDate[0]+arrDate[1]).replace('-',''));
var sYear = Number(arrDate[0]);
var sMonth = Number(arrDate[1]);
var sDate = Number(arrDate[2]);
var sAllMonth = sYear*12 + sMonth;
//var eYearM = Number((arrDate2[0]+arrDate2[1]).replace('-',''));
var eYear = Number(arrDate2[0]);
var eMonth = Number(arrDate2[1]);
var eDate = Number(arrDate2[2]);
var eAllMonth = eYear*12 + eMonth;
var sYearIndex = Number(sYear) - Number(curYear) + 2;
var eYearIndex = Number(eYear) - Number(curYear) + 2;
var gapMonth = (eAllMonth - sAllMonth) - 1;
if(gapMonth < 0) gapMonth = 0;
//일 width 계산
var sDateWidth = 0;
var eDateWidth = 0;
var sDateStart = 0;
sDateWidth = (1+days - sDate) * dayWidth;
eDateWidth = eDate * dayWidth;
sDateStart = sDate * dayWidth;
/* */
//if(sMonth != eMonth){
if(eAllMonth - sAllMonth == 0){ //같은월
sDateWidth = (1+eDate - sDate) * dayWidth;
eDateWidth = 0;
}else if(eAllMonth - sAllMonth == 1){
//sDateWidth = (1+days - sDate) * dayWidth;
//eDateWidth = eDate * dayWidth;
}else if(eAllMonth - sAllMonth > 1){
}
//}
var quarterIndex = sMonth%3 == 0 ? 3 : sMonth%3;
var quarter = Math.floor((sMonth-1)/3+1); //내림
var eQuarterIndex = eMonth%3 == 0 ? 3 : eMonth%3;
var eQuarter = Math.floor((eMonth-1)/3+1); //내림
//var xSize = ( ((eYearIndex-1)*yearMonthCnt + ( (eQuarter-1)*monthCntInQuarter+eQuarterIndex-1)) - ((sYearIndex-1)*yearMonthCnt+( (quarter-1)*monthCntInQuarter+quarterIndex-1)) /*+1*/) *tdWidth2 - sDateWidth + eDateWidth;
var xSize = gapMonth * tdWidth2 + sDateWidth + eDateWidth; //(gapMonth < 1 ? sDateWidth : -sDateWidth)
var xStart = ((sYearIndex-1)*yearMonthCnt + ((quarter-1)*monthCntInQuarter+quarterIndex-1)) * tdWidth + sDateStart;
if(isSmall) xStart -= quarterWidth*2;//첫연도 1,2분기 제거
if(xSize < 3)
xSize += 1; //최소width 보정
xStart -= 2.5; //위치 보정
if(classPrefix == 'p4') //출고 다이아몬드모양
xStart -= 8; //위치 보정
xStart = xStart - baseXPosition;
if(xStart < baseXPosition) xStart = baseXPosition;
//console.log(classPrefix, OBJID, START_DATE, sYear, sMonth, sYearIndex+'YearIndex', quarter+'quarter', quarterIndex+'quarterIndex');
//console.log(classPrefix, OBJID, END_DATE , eYear, eMonth, eYearIndex+'YearIndex', eQuarter+'quarter', eQuarterIndex+'quarterIndex');
//console.log(classPrefix, OBJID, xStart+' Start', xSize+' Size', sDateStart+' sDateStart', sDateWidth+' sDateWidth', eDateWidth+' eDateWidth', gapMonth+'gapMonth');
//console.log(classPrefix, (eYearIndex-1)*yearMonthCnt+( (eQuarter-1)*monthCntInQuarter+eQuarterIndex-1) , (sYearIndex-1)*yearMonthCnt+( (quarter-1)*monthCntInQuarter+quarterIndex-1), OBJID, xStart+'Start', xSize+'Size', sDateWidth+'sDateWidth', eDateWidth+'eDateWidth');
var todayLeftMargin = 975;
if(classPrefix == 'divTodayVline'){ //today
$("."+classPrefix).css('left', (todayLeftMargin+xStart)+"px"); //margin-left
$("."+classPrefix).show();
$("."+classPrefix).css('height', $("#tableProject").height()+0); //buffer
//alert($("#tableProject").height()+100);
}else{
$("."+classPrefix+OBJID).css('width', xSize+"px");
$("."+classPrefix+OBJID).css('margin-left', xStart+"px");
$("."+classPrefix+OBJID).show();
}
if(classPrefix == 'p4'){ //출고 다이아몬드모양
$("."+classPrefix+OBJID).addClass('diamond');
$("."+classPrefix+OBJID).parent().removeClass('gantt');
var jB3 = $("."+classPrefix+OBJID).parent().parent().find('.p3');
//var b3Display = jB3.attr("display");
if(jB3 && jB3.is(':visible')){ //조립있으면 같은 라인 표시
$("."+classPrefix+OBJID).css('margin-top', "-14px");
}
}
if(classPrefix == 'p5'){ //셋업
var jB3 = $("."+classPrefix+OBJID).parent().parent().find('.p3');
if(jB3 && jB3.is(':visible')){ //조립있으면 같은 라인 표시
$("."+classPrefix+OBJID).css('margin-top', "-12px");
}else{
var jB3 = $("."+classPrefix+OBJID).parent().parent().find('.p4');
if(jB3 && jB3.is(':visible')){ //조립있으면 같은 라인 표시
$("."+classPrefix+OBJID).css('margin-top', "-12px");
}
}
}
/*
// 모든 라인 요소를 선택
//const lines = document.querySelectorAll('.ganttLine');
// 각 라인에 대해 이벤트 처리
lines.forEach(line => {
// 마우스 오버 이벤트
line.addEventListener('mouseover', function() {
const start = this.getAttribute('data-start');
const end = this.getAttribute('data-end');
const tooltip = document.createElement('div');
tooltip.classList.add('tooltip');
tooltip.textContent = `${start} ~ ${end}`;
this.appendChild(tooltip);
});
// 마우스 아웃 이벤트
line.addEventListener('mouseout', function() {
const tooltip = this.querySelector('.tooltip');
if (tooltip) {
tooltip.remove();
}
});
});
*/
}
function fn_search(){
var selectedValues = $("#project_no").val();
$('<input>').attr({
type: 'hidden',
name: 'project_nos',
value: selectedValues
}).appendTo('#form1');
var form = document.form1;
form.action = "/project/projectMgmtTotalList.do";
form.submit();
}
</script>
</head>
<body class="<%--bodyNoScrollX--%>">
<form name="form1" id="form1" action="" method="post">
<input type="hidden" name="actionType" value="" />
<div class="content-box">
<div class="content-box-s">
<div class="plm_menu_name_gdnsi">
<h2>
<span>프로젝트종합</span>
</h2>
<div class="btnArea">
<input type="button" value="조회" class="plm_btns" id="btnSearch" name="btnSearch">
</div>
</div>
<div id="plmSearchZon">
<table>
<tr>
<td><label for="Year">년도</label></td>
<td>
<select name="Year" id="Year" class="select2" autocomplete="off">
<option value="">선택</option>
<c:forEach begin="${sysYear-4}" end="${sysYear}" var="req_year">
<option value="${req_year}"${paramMap.Year eq req_year ? 'selected':'' }>${req_year}</option>
</c:forEach>
</select>
</td>
<td><label for="project_no">프로젝트번호</label></td>
<td>
<select name="project_no" id="project_no" style="width:300px;" class="select2" autocomplete="off" multiple="multiple">
<option value="">선택</option>
${code_map.project_no}
</select>
</td>
<td><label for="category_cd">계약구분</label></td>
<td>
<select name="category_cd" id="category_cd" style="" class="select2" autocomplete="off">
<option value="">선택</option>
${code_map.category_cd}
</select>
</td>
<td><label for="customer_objid">고객사</label></td>
<td>
<select name="customer_objid" id="customer_objid" style="" class="select2" autocomplete="off">
<option value="">선택</option>
${code_map.customer_cd}
</select>
</td>
<td><label for="product">제품구분</label></td>
<td>
<select name="product" id="product" style="" class="select2" autocomplete="off">
<option value="">선택</option>
${code_map.product_cd}
</select>
</td>
<td class="align_r">
<label>예상납기일</label>
</td>
<td>
<input type="text" name="contract_start_date" id="contract_start_date" style="width:90px; float:none" autocomplete="off" value="${param.contract_start_date}" class="date_icon">~
<input type="text" name="contract_end_date" id="contract_end_date" style="width:90px; float:none;" autocomplete="off" value="${param.contract_end_date}" class="date_icon">
</td>
</tr>
<tr>
<td class="align_r">
<label>입고지</label>
</td>
<td>
<input type="text" name="location" id="location" style="width:150px;" autocomplete="off" value="${param.location}">
</td>
<td class="align_r">
<label>셋업지</label>
</td>
<td>
<input type="text" name="setup" id="setup" style="width:150px;" autocomplete="off" value="${param.setup}">
</td>
<td><label for="pm_user_id">PM</label></td>
<td>
<select name="pm_user_id" id="pm_user_id" style="" class="select2" autocomplete="off">
<option value="">선택</option>
${code_map.pm_user_id}
</select>
</td>
</tr>
</table>
</div>
<div class="contents_section1">
<div class="n_wrap2">
<div class="float_l w100" style="height: 670px;width:100%;"> <!-- 1430px고정 -->
<div class="section_title">
<div>
<i class="fa-solid fa-square-poll-vertical"></i>프로젝트 현황
<div class="" style="width: 400px;float: right;">
<div class="colorful-div blue-name">설계</div>
<div class="colorful-div green-name">구매</div>
<div class="colorful-div black-name">조립</div>
<div class="colorful-div purple-name">출고</div>
<div class="colorful-div red-name">셋업</div>
<button id="btnWbs" class="blue_btn2" style="margin-left:10px;" href="javascript:void(0);"> 프로젝트 일정</button>
<button id="btnGChart" class="blue_btn2" style="margin-left:10px; height:20px;" href="javascript:void(0);"> G-Chart</button>
</div>
</div>
</div>
<div class="tableBox1 sch_table_wrap " style="height: 95%;width:1702px" border: 1px solid #5e5e5e; ">
<!-- 오늘 세로선 -->
<div class="divTodayVline" id="divTodayVline" style="min-height:510px;display:none;position:absolute;border:2px dotted;border-left:none; top:70px;left:730px; width:0.1px; height:100%; border-color:orange;/* background:orange;color:orange; */ z-index;999"></div>
<table class="n_table sch_table" id="tableProject">
<colgroup>
<col width="30px">
<col width="97px">
<col width="55px">
<col width="77px">
<col width="*">
<col width="50px">
<col width="67px">
<col width="35px">
<col width="35px">
<col width="35px">
<col width="35px">
<col width="35px">
<c:forEach begin="${1}" end="${ganttTotalCnt}" var="seq" varStatus="status">
<col width="${ganttTdWidth}px">
</c:forEach>
</colgroup>
<thead>
<tr>
<th rowspan="2">선택</th>
<th colspan="5">프로젝트 정보</th>
<th colspan="6">진척율(D)</th>
<th colspan="${ganttTotalCnt == 36 ? 12 : 6}"><div class="block_1"> ${yyyyPre}년</div></th>
<th colspan="12"><div class="block_2">${yyyy}년</div></th>
<th colspan="${ganttTotalCnt == 36 ? 12 : 6}"><div class="block_3">${yyyyNext}년</div></th>
</tr>
<tr class="sub_thead">
<th>고객사</th>
<th>제품구분</th>
<th>프로젝트번호</th>
<th>프로젝트명</th>
<th>제작공장</th>
<th>요청납기일</th>
<th>설계</th>
<th>구매</th>
<th>조립</th>
<th>셋업</th>
<!--
<th>단계</th>
-->
<th>상태</th>
<c:if test="${ganttTotalCnt == 36}">
<th colspan="3">1분기</th>
<th colspan="3">2분기</th>
</c:if>
<th colspan="3">3분기</th>
<th colspan="3">4분기</th>
<!-- 올해 -->
<th colspan="3">1분기</th>
<th colspan="3">2분기</th>
<th colspan="3">3분기</th>
<th colspan="3">4분기</th>
<th colspan="3">1분기</th>
<th colspan="3">2분기</th>
<c:if test="${ganttTotalCnt == 36}">
<th colspan="3">3분기</th>
<th colspan="3">4분기</th>
</c:if>
</thead>
<tbody id="tbodyProject">
<c:choose>
<c:when test="${!empty projectList}">
<c:forEach var="info" items="${projectList}" varStatus="status">
<tr style="" class="p1 trProject highlighted"> <!-- background-color:#EFEFEF -->
<td rowspan="" title="${info.CONCEPT_OBJID}"><input type="radio" value="${info.OBJID}" name="ckBoxProject" data-objId="${info.OBJID}" data-CATEGORY_CD="${info.CATEGORY_CD}" data-CUR_TYPE="${info.CUR_TYPE}"></td>
<td rowspan="" title="${info.CUSTOMER_NAME}" style="height:15px !important">${info.CUSTOMER_NAME}</td>
<td rowspan="" title="${info.PRODUCT_NAME}">${info.PRODUCT_NAME}</td>
<td rowspan="" title="${info.PROJECT_NO}" ><a href="#" onclick="openProjectFormPopUp('${info.OBJID}')" class="p_name">${info.PROJECT_NO}</a></td>
<td rowspan="" title="${info.PROJECT_NAME}" class="align_l">${info.PROJECT_NAME}</td>
<td rowspan="" title="${info.MANUFACTURE_PLANT_NAME}">${info.MANUFACTURE_PLANT_NAME}</td>
<td rowspan="" title="${info.REQ_DEL_DATE}">${info.REQ_DEL_DATE}</td>
<td rowspan="" title="${info.DESIGN_RATETOTAL}">${info.DESIGN_RATETOTAL}</td>
<td rowspan="" title="${info.PURCHASE_RATETOTAL}">${info.PURCHASE_RATETOTAL}</td>
<td rowspan="" title="${info.PRODUCE_RATETOTAL}">${info.PRODUCE_RATETOTAL}</td>
<td rowspan="" title="${info.SETUP_RATETOTAL}">${info.SETUP_RATETOTAL}</td>
<!-- 상태 -->
<c:choose>
<c:when test="${info.DESIGN_LATE_CNT > 0 or info.PURCHASE_LATE_CNT > 0 or info.PRODUCE_LATE_CNT > 0 or info.SETUP_LATE_CNT > 0}">
<td class=><div class="red-ball"/></td>
</c:when>
<c:otherwise>
<td class=><div class="green-ball"/></td>
</c:otherwise>
</c:choose>
<td rowspan="" colspan="${ganttTotalCnt}" class="ganttTd">
<div class="gantt"><div class="ganttLine p1 p1${info.OBJID}" style="display:none;width:0px;/*width: 100px; margin-left: 0px; */"></div></div>
<div class="gantt"><div class="ganttLine p2 p2${info.OBJID}" style="display:none;width:0px;/*width: 100px; margin-left: 80px; */"></div></div>
<div class="gantt"><div class="ganttLine p3 p3${info.OBJID}" style="display:none;width:0px;/*width: 200px; margin-left: 150px;*/"></div></div>
<div class="gantt"><div class=" p4 p4${info.OBJID}" style="display:none;width:0px;/*width: 70px; margin-left: 350px;*/"></div></div>
<div class="gantt"><div class="ganttLine p5 p5${info.OBJID}" style="display:none;width:0px;/*width: 50px; margin-left: 420px;*/"></div></div>
</td>
</tr>
</c:forEach>
</c:when>
<c:otherwise>
<tr>
<td colspan="48" align="center">조회된 데이터가 없습니다.</td>
</tr>
</c:otherwise>
</c:choose>
</tbody>
</table>
</div>
</div>
</div>
</div>
<%-- <%@include file= "/WEB-INF/view/common/common_gridArea.jsp" %> --%>
</div>
</div>
</form>
</body>
</html>