Files
vexplor/WebContent/WEB-INF/view/dashboard/projectConceptStatus.jsp
2025-08-21 09:41:46 +09:00

385 lines
13 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(){
fn_setChart1Data();
fn_setChart2Data();
fnc_datepick();
$(".btnSearch").click(function(){
fn_setChart2Data();
});
//수주활동 연도별 PopUp
$(".btnProjectYearDetail").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
$(document).on("click", ".btnProjectProductDetail", function(e){
//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;
window.open("/projectConcept/getProjectConceptProductList.do"+params,"projectFormPopUp","width=1700, height=800");
});
});
</script>
<script>
//수주활동 연도별 PopUp
function fn_openProjectYearList(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");
}
//수주활동 제품별 PopUp
function fn_openProjectProductList(obj){
var prodGroupObjId = obj.options.prodGroupObjId;
var bidding = "Y";
var submitFromDate = fnc_checkNull($("#search_fromDate").val());
var submitToDate = fnc_checkNull($("#search_toDate").val());
var params = "?search_productGroup="+prodGroupObjId+"&search_fromDate="+submitFromDate+"&search_toDate="+submitToDate+"&search_bidding="+bidding;
window.open("/projectConcept/getProjectConceptProductList.do"+params,"projectFormPopUp","width=1700, height=800");
}
//좌측 Grid
function fn_setChart1Data(){
$.ajax({
url:"/dashboard/projectConceptStatus_chart1.do",
type:"POST",
data:{},
dataType:"json",
async:false,
success:function(data){
//set grid
$("#leftTbody").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='btnProjectYearDetail' data-YEAR='"+submit_year+"'>"+data[i].ALL_CNT+"</a></td>";
appendHtml += "<td><a href='#' class='btnProjectYearDetail' data-YEAR='"+submit_year+"' data-BIDDING = 'Y' data-REGION='D'>"+data[i].D_OK_CNT+"</a></td>";
appendHtml += "<td><a href='#' class='btnProjectYearDetail' data-YEAR='"+submit_year+"' data-BIDDING = 'Y' data-REGION='F'>"+data[i].F_OK_CNT+"</a></td>";
appendHtml += "<td><a href='#' class='btnProjectYearDetail' data-YEAR='"+submit_year+"' data-STATUS='create'>"+data[i].ONGOING_CNT+"</a></td>";
appendHtml += "<td><a href='#' class='btnProjectYearDetail' data-YEAR='"+submit_year+"' data-BIDDING = 'N' data-STATUS='complete'>"+data[i].NG_CNT+"</a></td>";
appendHtml += "</tr>";
});
$("#leftTbody").append(appendHtml);
//set chart
setChart1("chart1", data);
},
error: function(jqxhr, status, error){
}
});
}
//좌측 Chart
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 : "+name+", allCnt : "+allCnt+", completeCnt : "+completeCnt);
$('#'+divId).highcharts({
colors: ['#e8ce62', '#79ad86', '#d3d3d3','#dba474'],
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: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_openProjectYearList(this);
}
}
}
}
}
});
}
//우측 Grid
function fn_setChart2Data(){
$.ajax({
url:"/dashboard/projectConceptStatus_chart2.do",
type:"POST",
data:$("#form1").serialize(),
dataType:"json",
async:false,
success:function(data){
//set grid
$("#rightTbody").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));
});
if(okCnt == 0){
var noData = "<div id=\"chart1MessageArea\" style=\"width:100%;height:50%;padding-top:10%;text-align:center;\">조회된 정보가 없습니다.</div>";
$("#chart2").html(noData);
$("#rightTbody").html(noData);
}else{
$("#rightTbody").append(appendHtml);
//set chart
setChart2("chart2", data);
}
},
error: function(jqxhr, status, error){
}
});
}
//우측 Chart
function setChart2(divId, resultList){
var name = [];
var prodGroupObjId = [];
var cnt = [];
var seriesArr = [];
$.each(resultList , function(i){
name[i] = resultList[i].PROD_GROUP_NAME;
prodGroupObjId[i] = Number(fnc_checkNullDefaultValue(resultList[i].PROD_GROUP_OBJID,0));
cnt[i] = Number(fnc_checkNullDefaultValue(resultList[i].OK_CNT, 0));
//Swal.fire("name["+i+"] : "+name[i]+", cnt["+i+"] : "+cnt[i]);
seriesArr.push({
name:name[i],
y:cnt[i],
prodGroupObjId:prodGroupObjId[i]
});
});
//Swal.fire(seriesArr[0].name);
//Swal.fire("name : "+name+", allCnt : "+allCnt+", completeCnt : "+completeCnt);
$('#'+divId).highcharts({
colors: ['#558ed5', '#ff6d6d', '#bed0f6','#90ff7d', '#b6a6ca', '#bfbfbf','#cc7b38', '#383838', '#00cc99','#9bbb59', '#40e1f2', '#6155f9','#9c4f30', '#aabad7', '#d9aaa9'],
chart: {
type : 'pie'
},
title: {
text: ''
},
plotOptions:{
series: {
dataLabels: {
enabled: true,
format: '{point.name}: {point.y}건'
}
}, series:{
cursor:'pointer',
point:{
events:{
click:function(){
console.log(this);
fn_openProjectProductList(this);
}
}
}
}
},
"series": [
{
name: '건수'
, 'data' : seriesArr
}
]
});
}
</script>
</head>
<body>
<form name="form1" id="form1" action="" method="post">
<div class="plm_menu_name">
<h2>
<span>수주활동 상세현황</span>
</h2>
</div>
<div class="contents_page_basic_margin" style="overflow:hidden;">
<div class="title_div" style="margin-top:20px;">연도별 수주현황</div>
<div class="plm_table_wrap" style="float:left; width:40%; margin: 0;">
<div style="overflow-y:scroll;">
<table class="plm_table" style="width:100%;">
<thead>
<tr class="plm_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:300px;">
<table class="plm_table">
<tbody id="leftTbody">
<tr>
<td colspan="6" align="center">조회된 정보가 없습니다.</td>
</tr>
</tbody>
</table>
</div>
</div>
<div style="width:35%; float:left; margin:0 0 0 40px;">
<div class="plm_thead" style="width:100%; height:26px; text-align:center; line-height:26px; font-size:13px;">연도별 수주현황</div>
<div id="chart1" style="width:100%; height:240px; margin: 40px auto 0;"></div>
</div>
</div>
<div id="plmSearchZon" style="border-top: 1px solid #d4d4d4; margin-top:30px;">
<table>
<tr>
<td><lable for="" class="orangeTitleDot" style="font-weight:300; font-size:13px;">기간</lable></td>
<td><input type="text" name="search_fromDate" id="search_fromDate" value="${param.search_fromDate}" style="width:100px;"> ~ <input type="text" name="search_toDate" id="search_toDate" value="${param.search_toDate}" style="width:100px;"></td>
<td><input type="button" value="조회" class="btnSearch blue_btn" style="float:none;"></td>
</tr>
</table>
</div>
<div class="contents_page_basic_margin" style="overflow:hidden;">
<div class="title_div" style="margin-top:20px;">제품별 수주확정 현황</div>
<div class="plm_table_wrap"style="width:40%; float:left; margin: 0;">
<div style="overflow-y:scroll;">
<table class="plm_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:300px;">
<table class="plm_table">
<tbody id="rightTbody">
<tr>
<td colspan="2" align="center">조회된 정보가 없습니다.</td>
</tr>
</tbody>
</table>
</div>
</div>
<div style="width:35%; float:left; margin: 0 0 0 40px;">
<div class="plm_thead" style="width:100%; height:26px; text-align:center; line-height:26px; font-size:13px;">제품별 수주확정 현황</div>
<div id="chart2" style="width:80%; height:240px; margin: 40px auto 0;"></div>
</div>
</div>
</form>
</body>
</html>