- 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
842 lines
27 KiB
Plaintext
842 lines
27 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>
|
|
<script>
|
|
$(document).ready(function(){
|
|
|
|
//차종별 예상매출액 상세보기 팝업
|
|
$(".blue_btn").click(function(){
|
|
window.open("/dashboard/expectSalesAccountPopUp.do", "", "width=995, height=680");
|
|
});
|
|
|
|
//수주활동 Chart
|
|
fn_setGrid1Data();
|
|
fn_setGrid2Data();
|
|
|
|
//차종별 Task 진행현황 pie chart구성
|
|
$("input[type=radio]").click(function(){
|
|
var carObjId = $(this).val();
|
|
var carCode = $(this).attr("data-CAR_CODE");
|
|
fn_getTaskStatusInfo(carObjId);
|
|
$("#title").text(carCode+" Task 진행현황");
|
|
});
|
|
$("input[type=radio]").eq(0).trigger("click");
|
|
|
|
//chart2
|
|
//사전원가 시스템 연동 예상매출액 Chart
|
|
fn_getCostSystemEstimatedSalesChart();
|
|
|
|
//chart4
|
|
var chart4List = ${empty chart4?'[]':chart4};
|
|
if(chart4List != null){
|
|
setChart4("chart4", chart4List);
|
|
}else{
|
|
var noData = "<div id=\"chart4MessageArea\" style=\"width:100%;height:50%;padding-top:10%;text-align:center;\">조회된 정보가 없습니다.</div>";
|
|
$("#chart4").html(noData);
|
|
}
|
|
|
|
//문제점 팝업
|
|
$(".btnProblemList").click(function(){
|
|
var oemObjId = $(this).attr("data-OEM_OBJID");
|
|
var carObjId = $(this).attr("data-CAR_OBJID");
|
|
var status = $(this).attr("data-STATUS");
|
|
//Swal.fire("carObjId : "+carObjId+", status : "+status);
|
|
|
|
var params = "?search_oemObjId="+oemObjId+"&search_carObjId="+carObjId+"&search_status="+status;
|
|
|
|
window.open("/dashboard/problemListPopUp.do"+params, "", "width=1700, height=585");
|
|
});
|
|
|
|
$(".btnOpenTask").click(function(){
|
|
var oemObjId = $(this).attr("data-OEM_OBJID");
|
|
var carObjId = $(this).attr("data-CAR_OBJID");
|
|
var taskType = $(this).attr("data-TASK_TYPE");
|
|
if(taskType != null && taskType != ""){
|
|
var params = "?search_oem="+oemObjId+"&search_carType="+carObjId+"&search_status_type="+taskType;
|
|
window.open("/project/taskList.do"+params, "taskPopup", "width=1520, height=800");
|
|
}else{
|
|
var params = "?search_oem="+oemObjId+"&search_carType="+carObjId;
|
|
window.open("/project/taskList.do"+params, "taskPopup", "width=1520, height=800");
|
|
}
|
|
});
|
|
|
|
//수주활동 연도별 PopUp
|
|
$(".btnProjectDetail").click(function(){
|
|
var year = fnc_checkNull($(this).attr("data-YEAR"));
|
|
var region = fnc_checkNull($(this).attr("data-REGION"));
|
|
var bidding = fnc_checkNull($(this).attr("data-BIDDING"));
|
|
var status = fnc_checkNull($(this).attr("data-STATUS"));
|
|
var params = "?search_submit_yearly="+year+"&search_region="+region+"&search_bidding="+bidding+"&search_status="+status;
|
|
|
|
window.open("/projectConcept/getProjectConceptProductList.do"+params,"projectFormPopUp","width=1700, height=800");
|
|
});
|
|
|
|
//수주활동 제품별 PopUp
|
|
$(".btnProjectProductDetail").click(function(){
|
|
//var product = fnc_checkNull($(this).attr("data-PRODUCT"));
|
|
var prodGroupObjId = fnc_checkNull($(this).attr("data-PRODUCT_GROUP"));
|
|
var submitFromDate = fnc_checkNull($("#search_fromDate").val());
|
|
var submitToDate = fnc_checkNull($("#search_toDate").val());
|
|
var bidding = fnc_checkNull($(this).attr("data-BIDDING"));
|
|
var params = "?search_productGroup="+prodGroupObjId+"&search_fromDate="+submitFromDate+"&search_toDate="+submitToDate+"&search_bidding="+bidding;
|
|
//+"&search_productType="+product
|
|
window.open("/projectConcept/getProjectConceptProductList.do"+params,"projectFormPopUp","width=1700, height=800");
|
|
});
|
|
});
|
|
</script>
|
|
<script>
|
|
//수주활동 PopUp
|
|
function fn_openProjectList(obj){
|
|
var seriesName = obj.series.name;
|
|
var year = fnc_checkNullDefaultValue(obj.category);
|
|
var bidding = "";
|
|
var region = "";
|
|
var status = "";
|
|
if(seriesName == '수주(국내)'){
|
|
region = "D";
|
|
bidding = "Y";
|
|
status = "complete";
|
|
} else if(seriesName == "수주(해외)"){
|
|
region = "F";
|
|
bidding = "Y";
|
|
status = "complete";
|
|
} else if(seriesName == "비수주"){
|
|
bidding = "N";
|
|
status="complete";
|
|
} else{
|
|
status="create";
|
|
}
|
|
|
|
var params = "?search_submit_yearly="+year+"&search_region="+region+"&search_bidding="+bidding+"&search_status="+status;
|
|
window.open("/projectConcept/getProjectConceptProductList.do"+params,"projectFormPopUp","width=1700, height=800");
|
|
}
|
|
|
|
//Task List Popup을 호출한다.
|
|
function fn_openTaskList(obj){
|
|
var oemObjId = obj.options.oemObjId;
|
|
var carObjId = obj.options.carObjId;
|
|
var taskType = obj.options.taskType;
|
|
if(taskType != null && taskType != ""){
|
|
var params = "?search_oem="+oemObjId+"&search_carType="+carObjId+"&search_status_type="+taskType;
|
|
}else{
|
|
var params = "?search_oem="+oemObjId+"&search_carType="+carObjId;
|
|
}
|
|
window.open("/project/taskList.do"+params, "", "width=1700, height=800");
|
|
}
|
|
|
|
//수주활동 Grid1, Chart1
|
|
function fn_setGrid1Data(){
|
|
$.ajax({
|
|
url:"/dashboard/projectConceptStatus_chart1.do",
|
|
type:"POST",
|
|
data:{},
|
|
dataType:"json",
|
|
async:false,
|
|
success:function(data){
|
|
//set grid
|
|
$("#grid1").children().remove();
|
|
var appendHtml = "";
|
|
$.each(data, function(i){
|
|
var submit_year_title = fnc_checkNullDefaultValue(data[i].ESTIMATE_SUBMIT_YEAR, 'ETC');
|
|
var submit_year = fnc_checkNullDefaultValue(data[i].ESTIMATE_SUBMIT_YEAR);
|
|
|
|
appendHtml += "<tr>";
|
|
appendHtml += "<td>"+submit_year_title+"</td>";
|
|
appendHtml += "<td><a href='#' class='btnProjectDetail' data-YEAR='"+submit_year+"'>"+data[i].ALL_CNT+"</a></td>";
|
|
appendHtml += "<td><a href='#' class='btnProjectDetail' data-YEAR='"+submit_year+"' data-BIDDING = 'Y' data-REGION='D'>"+data[i].D_OK_CNT+"</a></td>";
|
|
appendHtml += "<td><a href='#' class='btnProjectDetail' data-YEAR='"+submit_year+"' data-BIDDING = 'Y' data-REGION='F'>"+data[i].F_OK_CNT+"</a></td>";
|
|
appendHtml += "<td><a href='#' class='btnProjectDetail' data-YEAR='"+submit_year+"' data-STATUS='create'>"+data[i].ONGOING_CNT+"</a></td>";
|
|
appendHtml += "<td><a href='#' class='btnProjectDetail' data-YEAR='"+submit_year+"' data-BIDDING = 'N' data-STATUS='complete'>"+data[i].NG_CNT+"</a></td>";
|
|
appendHtml += "</tr>";
|
|
});
|
|
$("#grid1").append(appendHtml);
|
|
|
|
//set chart
|
|
setChart1("chart1", data);
|
|
},
|
|
error: function(jqxhr, status, error){
|
|
}
|
|
});
|
|
}
|
|
|
|
//수주활동 Grid2
|
|
function fn_setGrid2Data(){
|
|
$.ajax({
|
|
url:"/dashboard/projectConceptStatus_chart2.do",
|
|
type:"POST",
|
|
data:$("#form1").serialize(),
|
|
dataType:"json",
|
|
async:false,
|
|
success:function(data){
|
|
//set grid
|
|
$("#grid2").children().remove();
|
|
var appendHtml = "";
|
|
var okCnt = 0;
|
|
$.each(data, function(i){
|
|
var prodGroupObjId = fnc_checkNullDefaultValue(data[i].PROD_GROUP_OBJID);
|
|
|
|
appendHtml += "<tr>";
|
|
appendHtml += "<td>"+data[i].PROD_GROUP_NAME+"</td>";
|
|
appendHtml += "<td><a href='#' class='btnProjectProductDetail' data-PRODUCT_GROUP='"+prodGroupObjId+"' data-BIDDING='Y'>"+data[i].OK_CNT+"</a></td>";
|
|
appendHtml += "</tr>";
|
|
okCnt += Number(fnc_checkNullDefaultValue(data[i].OK_CNT, 0));
|
|
});
|
|
$("#grid2").append(appendHtml);
|
|
|
|
},
|
|
error: function(jqxhr, status, error){
|
|
}
|
|
});
|
|
}
|
|
|
|
//수주활동 Chart1
|
|
function setChart1(divId, resultList){
|
|
var name = [];
|
|
var allCnt = [];
|
|
var dOkCnt = [];
|
|
var fOkCnt = [];
|
|
var ongoingCnt = [];
|
|
var ngCnt = [];
|
|
|
|
$.each(resultList , function(i){
|
|
name[i] = fnc_checkNullDefaultValue(resultList[i].ESTIMATE_SUBMIT_YEAR, 'ETC');
|
|
allCnt[i] = Number(fnc_checkNullDefaultValue(resultList[i].ALL_CNT, 0));
|
|
dOkCnt[i] = Number(fnc_checkNullDefaultValue(resultList[i].D_OK_CNT, 0));
|
|
fOkCnt[i] = Number(fnc_checkNullDefaultValue(resultList[i].F_OK_CNT, 0));
|
|
ongoingCnt[i] = Number(fnc_checkNullDefaultValue(resultList[i].ONGOING_CNT, 0));
|
|
ngCnt[i] = Number(fnc_checkNullDefaultValue(resultList[i].NG_CNT, 0));
|
|
//Swal.fire("name["+i+"] : "+name[i]+", cnt["+i+"] : "+cnt[i]);
|
|
});
|
|
//Swal.fire("name : "+name+", allCnt : "+allCnt+", completeCnt : "+completeCnt);
|
|
$('#'+divId).highcharts({
|
|
colors: ['#558ed5', '#9bbb59', '#b6a6ca','#ff6d6d'],
|
|
chart: {
|
|
zoomType: 'xy'
|
|
, type : 'column'
|
|
},
|
|
title: {
|
|
text: ''
|
|
},
|
|
xAxis: [{
|
|
categories: name
|
|
}],
|
|
yAxis: [{ // Primary yAxis
|
|
min : 0
|
|
, labels: {
|
|
format: '{value}'
|
|
}
|
|
, stackLabels: {
|
|
enabled : true
|
|
}
|
|
, title : ''
|
|
}],
|
|
tooltip: {
|
|
headerFormat: '<b>{point.x}</b><br/>',
|
|
pointFormat: '{series.name}: {point.y}<br/>Total: {point.stackTotal}',
|
|
useHTML: true
|
|
},
|
|
legend: {
|
|
align: 'right',
|
|
verticalAlign: 'top',
|
|
floating: true,
|
|
y:-17
|
|
},
|
|
series: [
|
|
/* {
|
|
name: '전체'
|
|
, data: allCnt
|
|
}, */
|
|
{
|
|
name: '수주(국내)'
|
|
, data : dOkCnt
|
|
}, {
|
|
name: '수주(해외)'
|
|
, data : fOkCnt
|
|
}, {
|
|
name: '진행중'
|
|
, data : ongoingCnt
|
|
}, {
|
|
name: '비수주'
|
|
, data : ngCnt
|
|
}
|
|
],
|
|
plotOptions:{
|
|
column : {
|
|
stacking : 'normal'
|
|
, dataLabels : {
|
|
enabled : true
|
|
}
|
|
}
|
|
, series:{
|
|
cursor:'pointer',
|
|
point:{
|
|
events:{
|
|
click:function(){
|
|
console.log(this);
|
|
fn_openProjectList(this);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
});
|
|
}
|
|
|
|
//task 진행현황 (pie chart3)
|
|
function fn_getTaskStatusInfo(carObjId){
|
|
$.ajax({
|
|
url:"/dashboard/getTaskStatusList.do",
|
|
type:"POST",
|
|
data:{"carObjId":carObjId},
|
|
dataType:"json",
|
|
success:function(data){
|
|
//set chart
|
|
setCarTaskStatusChart("chart3", data);
|
|
},
|
|
error: function(jqxhr, status, error){
|
|
}
|
|
});
|
|
}
|
|
|
|
//task 진행현황(pie chart3)
|
|
function setCarTaskStatusChart(divId, resultList){
|
|
var name = [];
|
|
var allCnt = [];
|
|
var completeCnt = [];
|
|
var planCnt = [];
|
|
var ongoingCnt = [];
|
|
var delayCnt = [];
|
|
var oemObjId = [];
|
|
var carObjId = [];
|
|
|
|
$.each(resultList , function(i){
|
|
name[i] = resultList[i].CAR_CODE;
|
|
oemObjId[i] = resultList[i].OEM_OBJID;
|
|
carObjId[i] = resultList[i].CAR_OBJID;
|
|
allCnt[i] = Number(fnc_checkNullDefaultValue(resultList[i].ALL_CNT, 0));
|
|
completeCnt[i] = Number(fnc_checkNullDefaultValue(resultList[i].COMPLETE_CNT, 0));
|
|
planCnt[i] = Number(fnc_checkNullDefaultValue(resultList[i].PLAN_CNT, 0));
|
|
ongoingCnt[i] = Number(fnc_checkNullDefaultValue(resultList[i].ONGOING_CNT, 0));
|
|
delayCnt[i] = Number(fnc_checkNullDefaultValue(resultList[i].DELAY_CNT, 0));
|
|
//Swal.fire("name["+i+"] : "+name[i]+", cnt["+i+"] : "+cnt[i]);
|
|
});
|
|
//Swal.fire("name : "+name+", allCnt : "+allCnt+", completeCnt : "+completeCnt);
|
|
$('#'+divId).highcharts({
|
|
colors: ['#558ed5', '#b6a6ca', '#90ff7d', '#ff6d6d'] ,
|
|
chart: {
|
|
type : 'pie'
|
|
},
|
|
title: {
|
|
text: ''
|
|
},
|
|
plotOptions:{
|
|
series: {
|
|
dataLabels: {
|
|
enabled: true,
|
|
format: '{point.name}: {point.y}건'
|
|
},
|
|
cursor:'pointer',
|
|
point:{
|
|
events:{
|
|
click:function(){
|
|
console.log(this);
|
|
fn_openTaskList(this);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"series": [
|
|
{
|
|
name: '건수'
|
|
, data : [
|
|
{
|
|
'name' : '완료',
|
|
'y' : completeCnt[0]
|
|
, oemObjId : oemObjId
|
|
, carObjId : carObjId
|
|
, taskType : 'complete'
|
|
},
|
|
{
|
|
'name' : '계획',
|
|
'y' : planCnt[0]
|
|
, oemObjId : oemObjId
|
|
, carObjId : carObjId
|
|
, taskType : 'plan'
|
|
},
|
|
{
|
|
'name' : '진행',
|
|
'y' : ongoingCnt[0]
|
|
, oemObjId : oemObjId
|
|
, carObjId : carObjId
|
|
, taskType : 'ongoing'
|
|
},
|
|
{
|
|
'name' : '지연',
|
|
'y' : delayCnt[0]
|
|
, oemObjId : oemObjId
|
|
, carObjId : carObjId
|
|
, taskType : 'delay'
|
|
}
|
|
]
|
|
}
|
|
]
|
|
});
|
|
}
|
|
|
|
|
|
//사전원가 시스템 예상매출액 Chart (pie chart3)
|
|
function fn_getCostSystemEstimatedSalesChart(){
|
|
$.ajax({
|
|
url:"/dashboard/getCostSystemEstimatedSalesChart.do",
|
|
type:"POST",
|
|
dataType:"json",
|
|
success:function(data){
|
|
//set chart
|
|
setChart2("chart2", data);
|
|
},
|
|
error: function(jqxhr, status, error){
|
|
}
|
|
});
|
|
}
|
|
|
|
//char2
|
|
function setChart2(divId, resultList){
|
|
var carNames = [];
|
|
var estimateSales = [];
|
|
var biddingBaseSales = [];
|
|
var currentSales = [];
|
|
|
|
$.each(resultList , function(i){
|
|
carNames[i] = resultList[i].CD3;
|
|
estimateSales[i] = Number(fnc_checkNullDefaultValue(resultList[i].R01, 0));
|
|
biddingBaseSales[i] = Number(fnc_checkNullDefaultValue(resultList[i].R02, 0));
|
|
currentSales[i] = Number(fnc_checkNullDefaultValue(resultList[i].R04, 0));
|
|
});
|
|
|
|
|
|
$('#'+divId).highcharts({
|
|
colors: ['#558ed5','#90ff7d'],
|
|
chart: {
|
|
zoomType: 'xy'
|
|
},
|
|
title: {
|
|
text: ''
|
|
},
|
|
subtitle: {
|
|
text: ''
|
|
},
|
|
xAxis: [{
|
|
categories: carNames,
|
|
crosshair: true
|
|
}],
|
|
yAxis: [{ // Primary yAxis
|
|
min:0,
|
|
max:100,
|
|
labels: {
|
|
format: '{value}%',
|
|
style: {
|
|
color: Highcharts.getOptions().colors[2]
|
|
}
|
|
},
|
|
title: {
|
|
text: '',
|
|
style: {
|
|
color: Highcharts.getOptions().colors[2]
|
|
}
|
|
},
|
|
opposite: true
|
|
|
|
}, { // Secondary yAxis
|
|
gridLineWidth: 0,
|
|
title: {
|
|
text: '예상매출액(백만원)',
|
|
style: {
|
|
color: Highcharts.getOptions().colors[0]
|
|
}
|
|
},
|
|
labels: {
|
|
format: '{value}백만원',
|
|
style: {
|
|
color: Highcharts.getOptions().colors[0]
|
|
}
|
|
}
|
|
|
|
}, { // Tertiary yAxis
|
|
min:0,
|
|
max:100,
|
|
gridLineWidth: 0,
|
|
title: {
|
|
text: '예상수익률',
|
|
style: {
|
|
color: Highcharts.getOptions().colors[1]
|
|
}
|
|
},
|
|
labels: {
|
|
format: '{value}%',
|
|
style: {
|
|
color: Highcharts.getOptions().colors[1]
|
|
}
|
|
},
|
|
opposite: true
|
|
}],
|
|
tooltip: {
|
|
shared: true
|
|
},
|
|
legend: {
|
|
/*
|
|
layout: 'vertical',
|
|
align: 'right',
|
|
x: -80,
|
|
verticalAlign: 'bottom',
|
|
y: 55,
|
|
floating: true,
|
|
backgroundColor: (Highcharts.theme && Highcharts.theme.legendBackgroundColor) || '#FFFFFF'
|
|
*/
|
|
},
|
|
series: [{
|
|
name: '예상매출액(백만원)',
|
|
type: 'column',
|
|
yAxis: 1,
|
|
data: estimateSales,
|
|
tooltip: {
|
|
valueSuffix: '백만원'
|
|
}
|
|
|
|
}, {
|
|
name: '입찰단계 예상 수익률',
|
|
type: 'spline',
|
|
yAxis: 2,
|
|
|
|
data: biddingBaseSales,
|
|
color: '#00cc99',
|
|
marker: {
|
|
enabled: false
|
|
},
|
|
dashStyle: 'shortdot',
|
|
tooltip: {
|
|
valueSuffix: '%'
|
|
}
|
|
|
|
}, {
|
|
name: '현단계 예상 수익률',
|
|
type: 'spline',
|
|
colors: ['#ff6d6d'],
|
|
data: currentSales,
|
|
color: '#fe8888',
|
|
tooltip: {
|
|
valueSuffix: '%'
|
|
}
|
|
}]
|
|
});
|
|
}
|
|
|
|
//chart4
|
|
function setChart4(divId, resultList){
|
|
var name = [];
|
|
var allCnt = [];
|
|
var completeCnt = [];
|
|
var ongoingCnt = [];
|
|
|
|
var oemObjId = [];
|
|
var carObjId = [];
|
|
|
|
$.each(resultList , function(i){
|
|
name[i] = resultList[i].CAR_CODE;
|
|
allCnt[i] = Number(fnc_checkNullDefaultValue(resultList[i].ALL_CNT, 0));
|
|
completeCnt[i] = Number(fnc_checkNullDefaultValue(resultList[i].COMPLETE_CNT, 0));
|
|
ongoingCnt[i] = Number(fnc_checkNullDefaultValue(resultList[i].ONGOING_CNT, 0));
|
|
|
|
carObjId[i] = Number(fnc_checkNullDefaultValue(resultList[i].CAR_OBJID, 0));
|
|
oemObjId[i] = Number(fnc_checkNullDefaultValue(resultList[i].OEM_OBJID, 0));
|
|
//Swal.fire("name["+i+"] : "+name[i]+", allCnt["+i+"] : "+allCnt[i]+", completeCnt["+i+"] : "+completeCnt[i]+", ongoingCnt["+i+"] : "+ongoingCnt[i]);
|
|
});
|
|
//Swal.fire("name : "+name+", allCnt : "+allCnt+", completeCnt : "+completeCnt);
|
|
$('#'+divId).highcharts({
|
|
colors: ['#558ed5','#90ff7d'],
|
|
chart: {
|
|
zoomType: 'xy'
|
|
, type : 'column'
|
|
},
|
|
title: {
|
|
text: ''
|
|
},
|
|
xAxis: [{
|
|
categories: name
|
|
}],
|
|
yAxis: [{ // Primary yAxis
|
|
min : 0
|
|
, labels: {
|
|
format: '{value}'
|
|
}
|
|
, stackLabels: {
|
|
enabled : true
|
|
}
|
|
, title : ''
|
|
}],
|
|
tooltip: {
|
|
headerFormat: '<b>{point.x}</b><br/>',
|
|
pointFormat: '{series.name}: {point.y}<br/>Total: {point.stackTotal}',
|
|
useHTML: true
|
|
},
|
|
legend: {
|
|
align: 'right',
|
|
verticalAlign: 'top',
|
|
floating: true,
|
|
y:15
|
|
},
|
|
series: [
|
|
/* {
|
|
name: '전체'
|
|
, data: allCnt
|
|
}, */
|
|
{
|
|
name: '완료'
|
|
, data : completeCnt
|
|
, carObjId:carObjId
|
|
, oemObjId:oemObjId
|
|
}, {
|
|
name: '미결'
|
|
, data : ongoingCnt
|
|
, carObjId:carObjId
|
|
, oemObjId:oemObjId
|
|
}
|
|
],
|
|
plotOptions:{
|
|
column : {
|
|
stacking : 'normal'
|
|
, dataLabels : {
|
|
enabled : true
|
|
}
|
|
}
|
|
, series:{
|
|
cursor:'pointer',
|
|
point:{
|
|
events:{
|
|
click:function(){
|
|
console.log(this);
|
|
fn_openProblemList_byCar(this);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
});
|
|
}
|
|
</script>
|
|
</head>
|
|
<body>
|
|
<form name="form1" action="" method="post">
|
|
<div style="min-width:1500px; height:100%; position:relative;">
|
|
<div style="position:absolute; top:0; left:51%; width:1px; height:100%; background:#eee; z-index:996;"></div>
|
|
<div style="position:absolute; top:530px; left:0%; width:100%; height:1px; background:#eee; z-index:99;"></div>
|
|
<div class="dashboard_img" style="position:absolute; top:0; left:0; z-index:999;"></div>
|
|
<div class="contents_page_basic_margin" style="padding-top:130px;">
|
|
<div class="dashboard_div" style="width:50%;">
|
|
<div class="title_div">수주활동 현황</div>
|
|
<div id="chart1" style="width:90%; height:200px;"></div>
|
|
<div class="plm_table_wrap" style="width:48%; float:left; border-bottom: 1px solid #eee;">
|
|
<div style="overflow-y:scroll;">
|
|
<table class="plm_table dashboard_table" style="width:100%;">
|
|
<thead>
|
|
<tr class="plm_thead">
|
|
<td rowspan="2" title="년도">년도</td>
|
|
<td rowspan="2" title="입찰건수">입찰건수</td>
|
|
<td colspan="2" title="수주">수주</td>
|
|
<td rowspan="2" title="진행중">진행중</td>
|
|
<td rowspan="2" title="비수주">비수주</td>
|
|
</tr>
|
|
<tr class="plm_sub_thead">
|
|
<td>국내</td>
|
|
<td>해외</td>
|
|
</tr>
|
|
</thead>
|
|
</table>
|
|
</div>
|
|
<div class="plm_scroll_table" style="width:100%; height:100px;">
|
|
<table class="plm_table dashboard_table">
|
|
<tbody id="grid1">
|
|
</tbody>
|
|
</table>
|
|
</div>
|
|
</div>
|
|
<div style="width:39%; float:left; margin-left:10px;">
|
|
<div class="plm_table_wrap" style="border-bottom: 1px solid #eee;">
|
|
<div style="overflow-y:scroll;">
|
|
<table class="plm_table dashboard_table" style="width:100%;">
|
|
<thead>
|
|
<tr class="plm_thead">
|
|
<td title="제품">제품</td>
|
|
<td title="수주확정 건수">수주확정 건수</td>
|
|
</tr>
|
|
</thead>
|
|
</table>
|
|
</div>
|
|
<div class="plm_scroll_table" style="width:100%; height:120px;">
|
|
<table class="plm_table dashboard_table">
|
|
<tbody id="grid2">
|
|
|
|
</tbody>
|
|
</table>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div style="width:48%; height:373px; float:right; margin:20px 0 0 10px;">
|
|
<div class="title_div" style="position:relative;">차종별 예상매출액</div>
|
|
<!-- <input type="button" value="상세보기" class="blue_btn" onclick="" style="position:absolute; top:-5px; left:135px;"> -->
|
|
<div id="chart2" style="width:90%; height:300px; margin:50px 0 0 0;"></div>
|
|
</div>
|
|
<div style="width:50%; float:left;">
|
|
<div class="dashboard_div" style="width:48%; float:left;">
|
|
<div class="title_div">Task진행현황</div>
|
|
<div class="plm_table_wrap" style="border-bottom: 1px solid #eee;">
|
|
<div style="overflow-y:scroll;">
|
|
<table class="plm_table dashboard_table" style="width:100%;">
|
|
<colgroup>
|
|
<col width="10%">
|
|
<col width="15%">
|
|
<col width="*">
|
|
<col width="*">
|
|
<col width="*">
|
|
<col width="*">
|
|
<col width="*">
|
|
<col width="*">
|
|
</colgroup>
|
|
<thead>
|
|
<tr class="plm_thead">
|
|
<td rowspan="2" title="선택">선택</td>
|
|
<td rowspan="2" title="차종">차종</td>
|
|
<td colspan="6" title="Task진행현황">Task진행현황</td>
|
|
</tr>
|
|
<tr class="plm_sub_thead">
|
|
<td title="진행율(%)">진행율(%)</td>
|
|
<td title="전체">전체</td>
|
|
<td title="완료">완료</td>
|
|
<td title="계획">계획</td>
|
|
<td title="진행">진행</td>
|
|
<td title="지연">지연</td>
|
|
</tr>
|
|
</thead>
|
|
</table>
|
|
</div>
|
|
<div class="plm_scroll_table" style="width:100%; height:219px;">
|
|
<table class="plm_table gate_status_table">
|
|
<colgroup>
|
|
<col width="10%">
|
|
<col width="15%">
|
|
<col width="*">
|
|
<col width="*">
|
|
<col width="*">
|
|
<col width="*">
|
|
<col width="*">
|
|
<col width="*">
|
|
</colgroup>
|
|
<tbody>
|
|
<c:choose>
|
|
<c:when test="${!empty grid3}">
|
|
<c:forEach var="info" items="${grid3}" varStatus="status">
|
|
<tr>
|
|
<td><input type="radio" name="car" value="${info.CAR_OBJID}" data-CAR_CODE="${info.CAR_CODE}"></td>
|
|
<td title="${info.CAR_CODE}">${info.CAR_CODE}</td>
|
|
<td>${info.TASK_RATIO}</td>
|
|
<td><a href="#" class="btnOpenTask" data-OEM_OBJID="${info.OEM_OBJID}" data-CAR_OBJID="${info.CAR_OBJID}" >${info.TASK_ALL_CNT}</a></td>
|
|
<td><a href="#" class="btnOpenTask" data-OEM_OBJID="${info.OEM_OBJID}" data-CAR_OBJID="${info.CAR_OBJID}" data-TASK_TYPE="complete">${info.TASK_COMPLETE_CNT}</a></td>
|
|
<td><a href="#" class="btnOpenTask" data-OEM_OBJID="${info.OEM_OBJID}" data-CAR_OBJID="${info.CAR_OBJID}" data-TASK_TYPE="plan">${info.TASK_PLAN_CNT}</a></td>
|
|
<td><a href="#" class="btnOpenTask" data-OEM_OBJID="${info.OEM_OBJID}" data-CAR_OBJID="${info.CAR_OBJID}" data-TASK_TYPE="ongoing">${info.TASK_ONGOING_CNT}</a></td>
|
|
<td><a href="#" class="btnOpenTask" data-OEM_OBJID="${info.OEM_OBJID}" data-CAR_OBJID="${info.CAR_OBJID}" data-TASK_TYPE="delay">${info.TASK_DELAY_CNT}</a></td>
|
|
</tr>
|
|
</c:forEach>
|
|
</c:when>
|
|
<c:otherwise>
|
|
<tr>
|
|
<td colspan="8" align="center">조회된 정보가 없습니다.</td>
|
|
</tr>
|
|
</c:otherwise>
|
|
</c:choose>
|
|
</tbody>
|
|
</table>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div style="width:40%; float:left; margin:40px 0;">
|
|
<div class="plm_thead" style="width:100%; height:26px; text-align:center; line-height:26px; font-size:13px;" id="title">Task 진행현황</div>
|
|
<div class="dashboard_div" id="chart3" style="width:100%; height:250px; float:left; margin: 0 auto;"></div>
|
|
</div>
|
|
</div>
|
|
<div style="width:48%; float:right;">
|
|
<div class="dashboard_div" style="width:43%;">
|
|
<div class="title_div">문제점 현황</div>
|
|
<div class="plm_table_wrap" style="border-bottom: 1px solid #eee;">
|
|
<div style="overflow-y:scroll;">
|
|
<table class="plm_table dashboard_table" style="width:100%;">
|
|
<colgroup>
|
|
<col width="*">
|
|
<col width="*">
|
|
<col width="*">
|
|
<col width="*">
|
|
<col width="*">
|
|
</colgroup>
|
|
<thead>
|
|
<tr class="plm_thead">
|
|
<td rowspan="2" title="차종">차종</td>
|
|
<td colspan="4" title="문제점 현황">문제점 현황</td>
|
|
</tr>
|
|
<tr class="plm_sub_thead">
|
|
<td title="조치율(%)">조치율(%)</td>
|
|
<td title="발생">발생</td>
|
|
<td title="조치">조치</td>
|
|
<td title="미결">미결</td>
|
|
</tr>
|
|
</thead>
|
|
</table>
|
|
</div>
|
|
<div class="plm_scroll_table" style="width:100%; height:219px;">
|
|
<table class="plm_table gate_status_table">
|
|
<colgroup>
|
|
<col width="*">
|
|
<col width="*">
|
|
<col width="*">
|
|
<col width="*">
|
|
<col width="*">
|
|
</colgroup>
|
|
<tbody>
|
|
<c:choose>
|
|
<c:when test="${!empty grid4}">
|
|
<c:forEach var="info" items="${grid4}" varStatus="status">
|
|
<tr>
|
|
<td>${info.CAR_CODE}</td>
|
|
<td>${info.COMPLETE_RATIO}</td>
|
|
<td><a href="#" class="btnProblemList" data-OEM_OBJID="${info.OEM_OBJID}" data-CAR_OBJID="${info.CAR_OBJID}" data-STATUS="">${info.ALL_CNT}</a></td>
|
|
<td><a href="#" class="btnProblemList" data-OEM_OBJID="${info.OEM_OBJID}" data-CAR_OBJID="${info.CAR_OBJID}" data-STATUS="complete">${info.COMPLETE_CNT}</a></td>
|
|
<td><a href="#" class="btnProblemList" data-OEM_OBJID="${info.OEM_OBJID}" data-CAR_OBJID="${info.CAR_OBJID}" data-STATUS="create">${info.ONGOING_CNT}</a></td>
|
|
</tr>
|
|
</c:forEach>
|
|
</c:when>
|
|
<c:otherwise>
|
|
<tr>
|
|
<td colspan="5" align="center">조회된 정보가 없습니다.</td>
|
|
</tr>
|
|
</c:otherwise>
|
|
</c:choose>
|
|
</tbody>
|
|
</table>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div style="width:50%; float:left; margin:40px 0;">
|
|
<div class="plm_thead" style="width:100%; height:26px; text-align:center; line-height:26px; font-size:13px;">문제점 발생/조치 현황</div>
|
|
<div class="dashboard_div" id="chart4" style="width:90%; float:left; height:250px; margin: 0 auto;"></div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</form>
|
|
</body>
|
|
</html> |