- 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
756 lines
27 KiB
Plaintext
756 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>
|
|
</head>
|
|
<script>
|
|
$(document).ready(function(){
|
|
fn_setCarTypeList();
|
|
fn_setProductGroupList();
|
|
|
|
fn_getCarProductProblemMngPieChart("${empty param.carObjId1?baseParamMap.CAR_OBJID:param.carObjId1}","${empty param.productGroupObjId1?baseParamMap.PRODUCT_GROUP_OBJID:param.productGroupObjId1}","","","");
|
|
fn_getCarProductProblemMngList("${empty param.carObjId1?baseParamMap.CAR_OBJID:param.carObjId1}","${empty param.productGroupObjId1?baseParamMap.PRODUCT_GROUP_OBJID:param.productGroupObjId1}","","","");
|
|
fn_getProblemTypeColumnChart("${empty param.carObjId2?baseParamMap.CAR_OBJID:param.carObjId2}","${empty param.productGroupObjId2?baseParamMap.PRODUCT_GROUP_OBJID:param.productGroupObjId2}","","","");
|
|
fn_getProblemTypeList("${empty param.carObjId2?baseParamMap.CAR_OBJID:param.carObjId2}","${empty param.productGroupObjId2?baseParamMap.PRODUCT_GROUP_OBJID:param.productGroupObjId2}","","","");
|
|
|
|
fn_setProductTypeList("productObjId1","${empty param.productGroupObjId1?baseParamMap.PRODUCT_GROUP_OBJID:param.productGroupObjId1}");
|
|
fn_setProductTypeList("productObjId2","${empty param.productGroupObjId2?baseParamMap.PRODUCT_GROUP_OBJID:param.productGroupObjId2}");
|
|
|
|
//단계 change
|
|
$("#step1").change(function(){
|
|
fnc_setStep2($(this).val(), "");
|
|
});
|
|
|
|
//단계1 change trigger
|
|
$("#step1").trigger("change");
|
|
|
|
//유형 change
|
|
$("#type1").change(function(){
|
|
fnc_setType2($(this).val(), "");
|
|
});
|
|
|
|
$("#type1").trigger("change");
|
|
|
|
$("#type1").change(function(){
|
|
fnc_setType2($(this).val(), "");
|
|
});
|
|
|
|
$("#productGroupObjId1").trigger("change");
|
|
$("#productGroupObjId2").trigger("change");
|
|
|
|
$("#productGroupObjId1").change(function(){
|
|
fn_setProductTypeList("productObjId1",$(this).val());
|
|
});
|
|
|
|
$("#productGroupObjId2").change(function(){
|
|
fn_setProductTypeList("productObjId2",$(this).val());
|
|
});
|
|
|
|
$("#searchProductType").click(function(){
|
|
var carObjId = $("#carObjId1").val();
|
|
var productGroupObjId = $("#productGroupObjId1").val();
|
|
var productObjId = $("#productObjId1").val();
|
|
var step1 = $("#step1").val();
|
|
var step2 = $("#step2").val();
|
|
|
|
fn_getCarProductProblemMngPieChart(carObjId,productGroupObjId,productObjId,step1,step2);
|
|
fn_getCarProductProblemMngList(carObjId,productGroupObjId,productObjId,step1,step2);
|
|
});
|
|
|
|
$("#searchProblemType").click(function(){
|
|
var carObjId = $("#carObjId2").val();
|
|
var productGroupObjId = $("#productGroupObjId2").val();
|
|
var productObjId = $("#productObjId2").val();
|
|
var type1 = $("#type1").val();
|
|
var type2 = $("#type2").val();
|
|
|
|
fn_getProblemTypeColumnChart(carObjId,productGroupObjId,productObjId,type1,type2);
|
|
fn_getProblemTypeList(carObjId,productGroupObjId,productObjId,type1,type2);
|
|
});
|
|
|
|
$(document).on("click", ".btnOpenProblemList", function(e){
|
|
var oemObjIdProd = "";
|
|
var carObjIdProd = "";
|
|
var problemType = fnc_checkNullDefaultValue($(this).attr("data-TYPE"),"");
|
|
if(problemType == "product"){
|
|
oemObjId = fnc_checkNullDefaultValue($("#carObjId1").find("option:selected").attr("data-OEM_OBJID"),"");
|
|
carObjId = fnc_checkNullDefaultValue($("#carObjId1").val(),"");
|
|
prodGroupObjId = fnc_checkNull($(this).attr("data-PROD_GROUP_OBJID"));
|
|
prodObjId = fnc_checkNull($(this).attr("data-PROD_OBJID"));
|
|
}else if(problemType == "type"){
|
|
oemObjId = fnc_checkNullDefaultValue($("#carObjId2").find("option:selected").attr("data-OEM_OBJID"),"");
|
|
carObjId = fnc_checkNullDefaultValue($("#carObjId2").val(),"");
|
|
prodGroupObjId = fnc_checkNullDefaultValue($("#productGroupObjId2").val(),"");
|
|
prodObjId = fnc_checkNullDefaultValue($("#productObjId2").val(),"");
|
|
}
|
|
var type1 = fnc_checkNull($(this).attr("data-TYPE1"));
|
|
var type2 = fnc_checkNull($(this).attr("data-TYPE2"));
|
|
var status = fnc_checkNull($(this).attr("data-STATUS"));
|
|
|
|
//검색시 값 재세팅
|
|
if(type1 == "") type1 = $("#type1").val();
|
|
if(type2 == "") type2 = $("#type2").val();
|
|
|
|
var step1 = $("#step1").val();
|
|
var step2 = $("#step2").val();
|
|
|
|
fn_openProblemList(oemObjId, carObjId, prodGroupObjId, prodObjId, step1, step2, type1, type2, null, status, null, null, null, null);
|
|
});
|
|
});
|
|
</script>
|
|
<script>
|
|
//문제점 유형별 팝업
|
|
function fn_openProblemTypeList(obj){
|
|
var carObjId = fnc_checkNullDefaultValue($("#carObjId2").val(),"");
|
|
var oemObjId = fnc_checkNullDefaultValue($("#carObjId2").find("option:selected").attr("data-OEM_OBJID"),"");
|
|
var prodGroup = fnc_checkNullDefaultValue($("#productGroupObjId2").val(),"");
|
|
var prod = fnc_checkNullDefaultValue($("#productObjId2").val(),"");
|
|
var type1 = fnc_checkNullDefaultValue(obj.series.userOptions.type1,"");
|
|
var type2 = fnc_checkNullDefaultValue(obj.name,"");
|
|
var name = fnc_checkNullDefaultValue(obj.series.name);
|
|
if(name == "조치"){
|
|
var status = "complete";
|
|
}else{
|
|
var status = "create";
|
|
}
|
|
var params = "?";
|
|
if(carObjId != null) params += "&search_carObjId="+carObjId;
|
|
if(oemObjId != null) params += "&search_oemObjId="+oemObjId;
|
|
if(prodGroup != null) params += "&search_prodGroupObjId="+prodGroup;
|
|
if(prod != null) params += "&search_prodObjId="+prod;
|
|
if(type1 != null) params += "&type1="+type1;
|
|
if(type2 != null) params += "&type2="+type2;
|
|
if(status != null) params += "&search_status="+status;
|
|
window.open("/dashboard/problemListPopUp.do"+params, "", "width=1700, height=585");
|
|
}
|
|
|
|
//문제점 목록 팝업(단위문제점) 제품정보
|
|
function fn_openProblemList_byProduct(obj){
|
|
var carObjId = fnc_checkNullDefaultValue($("#carObjId1").val(),"");
|
|
var oemObjId = fnc_checkNullDefaultValue($("#carObjId1").find("option:selected").attr("data-OEM_OBJID"),"");
|
|
var prodGroupObjId = obj.options.prodGroupObjId;
|
|
var prodObjId = obj.options.prodObjId;
|
|
var step1 = fnc_checkNullDefaultValue($("#step1").val(),"");
|
|
var step2 = fnc_checkNullDefaultValue($("#step2").val(),"");
|
|
var params = "?";
|
|
if(carObjId != null) params += "&search_carObjId="+carObjId;
|
|
if(oemObjId != null) params += "&search_oemObjId="+oemObjId;
|
|
if(prodGroupObjId != null) params += "&search_prodGroupObjId="+prodGroupObjId;
|
|
if(prodObjId != null) params += "&search_prodObjId="+prodObjId;
|
|
if(step1 != null) params += "&step1="+step1;
|
|
if(step2 != null) params += "&step2="+step2;
|
|
|
|
window.open("/dashboard/problemListPopUp.do"+params, "", "width=1700, height=585");
|
|
}
|
|
|
|
//제품 문제점 관리 차종, 제품별 문제점 현황 Pie chart
|
|
function fn_getCarProductProblemMngPieChart(carObjId,productGroupObjId,productObjId,step1,step2){
|
|
var productArr = [];
|
|
$.ajax({
|
|
url:"/dashboard/getCarProductProblemMngPieChart.do",
|
|
type:"POST",
|
|
data:{"carObjId":carObjId,"productGroupObjId":productGroupObjId,"productObjId":productObjId,"step1":step1,"step2":step2},
|
|
dataType:"json",
|
|
async:false,
|
|
success:function(data){
|
|
if(null == data || 0 == data.length){
|
|
var noData = "<div id=\"chart1MessageArea\" style=\"width:100%;height:50%;padding-top:10%;text-align:center;\">조회된 정보가 없습니다.</div>";
|
|
$("#carProductProblemPieChart").html(noData);
|
|
}else{
|
|
$.each(data , function(i){
|
|
productArr.push(
|
|
{
|
|
"name": fnc_checkNull(data[i].PRODUCT_NAME),
|
|
"y": Number(data[i].CAR_PROBLEM_RATIO),
|
|
"prodGroupObjId":Number(data[i].PROD_GROUP_OBJID),
|
|
"prodObjId":Number(data[i].PROD_OBJID),
|
|
}
|
|
);
|
|
});
|
|
|
|
$('#carProductProblemPieChart').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:.1f}%'
|
|
}, point:{
|
|
events:{
|
|
click:function(){
|
|
console.log(this);
|
|
fn_openProblemList_byProduct(this);
|
|
}
|
|
}
|
|
}, cursor:'pointer'
|
|
}
|
|
},
|
|
|
|
tooltip: {
|
|
headerFormat: '<span style="font-size:11px">{series.name}</span><br>',
|
|
pointFormat: '<span style="color:{point.color}">{point.name}</span>: <b>{point.y:.1f}%</b> of total<br/>'
|
|
},
|
|
"series": [
|
|
{
|
|
"name": "제품",
|
|
"colorByPoint": true,
|
|
"data":productArr
|
|
}
|
|
]
|
|
});
|
|
}
|
|
},
|
|
error: function(jqxhr, status, error){
|
|
}
|
|
});
|
|
}
|
|
|
|
//제품 문제점 관리 차종, 제품별 문제점 현황 List
|
|
function fn_getCarProductProblemMngList(search_carObjId,search_productGroupObjId,search_productObjId,search_step1,search_step2){
|
|
var appendText = "";
|
|
|
|
$("#carProductProblemList").empty();
|
|
|
|
$.ajax({
|
|
url:"/dashboard/getCarProductProblemMngList.do",
|
|
type:"POST",
|
|
data:{"carObjId":search_carObjId,"productGroupObjId":search_productGroupObjId,"productObjId":search_productObjId,"step1":search_step1,"step2":search_step2},
|
|
dataType:"json",
|
|
async:false,
|
|
success:function(data){
|
|
$.each(data , function(i){
|
|
|
|
var productName = fnc_checkNull(data[i].PRODUCT_NAME);
|
|
var totalCnt = fnc_checkNull(data[i].TOTAL_PROBLEM_CNT);
|
|
var completeCnt = fnc_checkNull(data[i].COMPLETE_CNT);
|
|
var notCompleteCnt = fnc_checkNull(data[i].NOT_COMPLETE_CNT);
|
|
var completeRatio = fnc_checkNull(data[i].COMPLETE_RATIO);
|
|
|
|
var prodGroupObjId = fnc_checkNull(data[i].PROD_GROUP_OBJID);
|
|
var prodObjId = fnc_checkNull(data[i].PROD_OBJID);
|
|
|
|
if("" == productName){
|
|
appendText+="<tr style='background:#CDDEEA;'>";
|
|
appendText+=" <td>계</td>";
|
|
appendText+=" <td title='"+totalCnt+"'><a href='#' class='btnOpenProblemList' data-PROD_GROUP_OBJID='"+prodGroupObjId+"' data-PROD_OBJID='"+prodObjId+"' data-TYPE='product'>"+totalCnt+"</a></td>";
|
|
appendText+=" <td title='"+completeCnt+"'><a href='#' class='btnOpenProblemList' data-PROD_GROUP_OBJID='"+prodGroupObjId+"' data-PROD_OBJID='"+prodObjId+"' data-STATUS='complete' data-TYPE='product'>"+completeCnt+"</a></td>";
|
|
appendText+=" <td title='"+notCompleteCnt+"'><a href='#' class='btnOpenProblemList' data-PROD_GROUP_OBJID='"+prodGroupObjId+"' data-PROD_OBJID='"+prodObjId+"' data-STATUS='create' data-TYPE='product'>"+notCompleteCnt+"</a></td>";
|
|
appendText+=" <td title='"+completeRatio+"'>"+completeRatio+"</td>";
|
|
appendText+="</tr>";
|
|
}else{
|
|
appendText+="<tr>";
|
|
appendText+=" <td title='"+productName+"'>"+productName+"</td>";
|
|
appendText+=" <td title='"+totalCnt+"'><a href='#' class='btnOpenProblemList' data-PROD_GROUP_OBJID='"+prodGroupObjId+"' data-PROD_OBJID='"+prodObjId+"' data-TYPE='product'>"+totalCnt+"</a></td>";
|
|
appendText+=" <td title='"+completeCnt+"'><a href='#' class='btnOpenProblemList' data-PROD_GROUP_OBJID='"+prodGroupObjId+"' data-PROD_OBJID='"+prodObjId+"' data-STATUS='complete' data-TYPE='product'>"+completeCnt+"</a></td>";
|
|
appendText+=" <td title='"+notCompleteCnt+"'><a href='#' class='btnOpenProblemList' data-PROD_GROUP_OBJID='"+prodGroupObjId+"' data-PROD_OBJID='"+prodObjId+"' data-STATUS='create' data-TYPE='product'>"+notCompleteCnt+"</a></td>";
|
|
appendText+=" <td title='"+completeRatio+"'>"+completeRatio+"</td>";
|
|
appendText+="</tr>";
|
|
}
|
|
});
|
|
|
|
if(0 == data.length){
|
|
appendText+="<tr>";
|
|
appendText+=" <td colspan='5'>조회된 내용이 없습니다.</td>";
|
|
appendText+="</tr>";
|
|
}
|
|
$("#carProductProblemList").append(appendText);
|
|
|
|
},
|
|
error: function(jqxhr, status, error){
|
|
}
|
|
});
|
|
}
|
|
|
|
//문제점 유형1,2 별 진행현황
|
|
function fn_getProblemTypeColumnChart(carObjId,productGroupObjId,productObjId,type1,type2){
|
|
|
|
var type1Arr = [];
|
|
var type2Arr = [];
|
|
|
|
$.ajax({
|
|
url:"/dashboard/getCarProductProblemType1ColumnChart.do",
|
|
type:"POST",
|
|
data:{"carObjId":carObjId,"productGroupObjId":productGroupObjId,"productObjId":productObjId,"type1":type1,"type2":type2},
|
|
dataType:"json",
|
|
async:false,
|
|
success:function(data){
|
|
type1Arr = data;
|
|
},
|
|
error: function(jqxhr, status, error){
|
|
}
|
|
});
|
|
|
|
$.ajax({
|
|
url:"/dashboard/getCarProductProblemType2ColumnChart.do",
|
|
type:"POST",
|
|
data:{"carObjId":carObjId,"productGroupObjId":productGroupObjId,"productObjId":productObjId,"type1":type1,"type2":type2},
|
|
dataType:"json",
|
|
async:false,
|
|
success:function(data){
|
|
type2Arr = data;
|
|
},
|
|
error: function(jqxhr, status, error){
|
|
}
|
|
});
|
|
if(type1Arr == "" && type2Arr == ""){
|
|
var noData = "<div id=\"chart3MessageArea\" style=\"width:100%;height:50%;padding-top:10%;text-align:center;\">조회된 정보가 없습니다.</div>";
|
|
$("#problemTypeColumnChart").html(noData);
|
|
}else{
|
|
fn_setProblemTypeColumnChart(type1Arr,type2Arr);
|
|
}
|
|
}
|
|
|
|
|
|
//제품 문제점 관리 문제점 유형별 현황 column chart
|
|
function fn_setProblemTypeColumnChart(type1ProblemArr,type2ProblemArr){
|
|
var type1Arr = [];
|
|
var type1CompleteProblem = [];
|
|
var type1NotCompleteProblem = [];
|
|
|
|
var type2Arr = [];
|
|
|
|
$.each(type1ProblemArr , function(i){
|
|
|
|
var type1Code = fnc_checkNull(type1ProblemArr[i].TYPE1);
|
|
var type1Name = fnc_checkNull(type1ProblemArr[i].TYPE1_NAME);
|
|
|
|
type1CompleteProblem.push({
|
|
name: type1Name,
|
|
y: Number(fnc_checkNullDefaultValue(type1ProblemArr[i].COMPLETE_CNT,0)),
|
|
drilldown: type1Code+"_complete"
|
|
});
|
|
type1NotCompleteProblem.push({
|
|
name: type1Name,
|
|
y: Number(fnc_checkNullDefaultValue(type1ProblemArr[i].NOT_COMPLETE_CNT,0)),
|
|
drilldown: type1Code+"_notComplete"
|
|
});
|
|
|
|
|
|
var type2CompleteProblem = [];
|
|
var type2NotCompleteProblem = [];
|
|
|
|
$.each(type2ProblemArr , function(j){
|
|
var type2ParentCode = fnc_checkNull(type2ProblemArr[j].TYPE1);
|
|
var type2Name = fnc_checkNull(type2ProblemArr[j].TYPE2);
|
|
|
|
if(type1Code == type2ParentCode){
|
|
type2CompleteProblem.push(
|
|
[type2Name,Number(fnc_checkNullDefaultValue(type2ProblemArr[j].COMPLETE_CNT,0))]
|
|
);
|
|
type2NotCompleteProblem.push(
|
|
[type2Name,Number(fnc_checkNullDefaultValue(type2ProblemArr[j].NOT_COMPLETE_CNT,0))]
|
|
);
|
|
}
|
|
|
|
type2Arr.push({
|
|
id:type1Code+"_complete",
|
|
name:"조치",
|
|
data: type2CompleteProblem,
|
|
type1:type1Code
|
|
},{
|
|
id:type1Code+"_notComplete",
|
|
name:"미결",
|
|
data: type2NotCompleteProblem,
|
|
type1:type1Code
|
|
});
|
|
|
|
});
|
|
});
|
|
|
|
type1Arr.push({
|
|
name: '조치',
|
|
data: type1CompleteProblem
|
|
},{
|
|
name: '미결',
|
|
data: type1NotCompleteProblem
|
|
});
|
|
|
|
// Create the chart
|
|
$("#problemTypeColumnChart").highcharts({
|
|
chart: {
|
|
type: 'column'
|
|
},
|
|
title: {
|
|
text: ''
|
|
},
|
|
subtitle: {
|
|
text: ''
|
|
},
|
|
xAxis: {
|
|
type: 'category'
|
|
},yAxis: {
|
|
labels: {
|
|
format: '{value} 건',
|
|
style: {
|
|
color: Highcharts.getOptions().colors[1]
|
|
}
|
|
},
|
|
title: {
|
|
text: '',
|
|
style: {
|
|
color: Highcharts.getOptions().colors[1]
|
|
}
|
|
},
|
|
tickInterval:5
|
|
},
|
|
plotOptions: {
|
|
column: {
|
|
stacking: 'normal',
|
|
borderWidth: 0,
|
|
dataLabels: {
|
|
enabled: true
|
|
}
|
|
}, series:{
|
|
cursor:'pointer',
|
|
point:{
|
|
events:{
|
|
click:function(){
|
|
if(this.name != null){
|
|
console.log(this);
|
|
fn_openProblemTypeList(this);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
|
|
series: type1Arr,
|
|
drilldown: {
|
|
series: type2Arr
|
|
}
|
|
});
|
|
}
|
|
|
|
//제품 문제점 관리 문제점 유형별 현황 List
|
|
function fn_getProblemTypeList(carObjId,productGroupObjId,productObjId,type1,type2){
|
|
var appendText = "";
|
|
|
|
$("#problemTypeList").empty();
|
|
|
|
$.ajax({
|
|
url:"/dashboard/getCarProductProblemTypeList.do",
|
|
type:"POST",
|
|
data:{"carObjId":carObjId,"productGroupObjId":productGroupObjId,"productObjId":productObjId,"type1":type1,"type2":type2},
|
|
dataType:"json",
|
|
async:false,
|
|
success:function(data){
|
|
$.each(data , function(i){
|
|
|
|
var type1 = fnc_checkNull(data[i].TYPE1);
|
|
var type1Name = "";
|
|
|
|
var type2 = fnc_checkNull(data[i].TYPE2);
|
|
var type2Name = fnc_checkNull(data[i].TYPE2);
|
|
|
|
if(type1 == 'design') type1Name = "[설계]";
|
|
else if(type1 == 'mold') type1Name = "[금형/단품]";
|
|
else if(type1 == 'facilities') type1Name = "[조립/설비]";
|
|
else if(type1 == 'etc') type1Name = "[부자재/기타]";
|
|
else type1Name = type1;
|
|
|
|
var totalCnt = fnc_checkNull(data[i].ALL_CNT);
|
|
var completeCnt = fnc_checkNull(data[i].COMPLETE_CNT);
|
|
var notCompleteCnt = fnc_checkNull(data[i].CREATE_CNT);
|
|
|
|
|
|
if("" == type1Name){
|
|
appendText+="<tr style='background:#CDDEEA;'>";
|
|
appendText+=" <td>계</td>";
|
|
appendText+=" <td title='"+totalCnt+"'><a href='#' class='btnOpenProblemList' data-TYPE1='"+type1+"' data-TYPE2='"+type2+"' data-TYPE='type'>"+totalCnt+"</a></td>";
|
|
appendText+=" <td title='"+completeCnt+"'><a href='#' class='btnOpenProblemList' data-TYPE1='"+type1+"' data-TYPE2='"+type2+"' data-STATUS='complete' data-TYPE='type'>"+completeCnt+"</a></td>";
|
|
appendText+=" <td title='"+notCompleteCnt+"'><a href='#' class='btnOpenProblemList' data-TYPE1='"+type1+"' data-TYPE2='"+type2+"' data-STATUS='create' data-TYPE='type'>"+notCompleteCnt+"</a></td>";
|
|
appendText+="</tr>";
|
|
}else{
|
|
appendText+="<tr>";
|
|
appendText+=" <td title='"+type1Name+" "+type2Name+"'>"+type1Name+" "+type2Name+"</td>";
|
|
appendText+=" <td title='"+totalCnt+"'><a href='#' class='btnOpenProblemList' data-TYPE1='"+type1+"' data-TYPE2='"+type2+"' data-TYPE='type'>"+totalCnt+"</a></td>";
|
|
appendText+=" <td title='"+completeCnt+"'><a href='#' class='btnOpenProblemList' data-TYPE1='"+type1+"' data-TYPE2='"+type2+"' data-STATUS='complete' data-TYPE='type'>"+completeCnt+"</a></td>";
|
|
appendText+=" <td title='"+notCompleteCnt+"'><a href='#' class='btnOpenProblemList' data-TYPE1='"+type1+"' data-TYPE2='"+type2+"' data-STATUS='create' data-TYPE='type'>"+notCompleteCnt+"</a></td>";
|
|
appendText+="</tr>";
|
|
}
|
|
});
|
|
|
|
if(0 == data.length){
|
|
appendText+="<tr>";
|
|
appendText+=" <td colspan='4'>조회된 내용이 없습니다.</td>";
|
|
appendText+="</tr>";
|
|
}
|
|
$("#problemTypeList").append(appendText);
|
|
|
|
},
|
|
error: function(jqxhr, status, error){
|
|
}
|
|
});
|
|
}
|
|
|
|
//car 목록 조회
|
|
function fn_setCarTypeList(){
|
|
$.ajax({
|
|
url:"/common/getCarTypeList.do",
|
|
type:"POST",
|
|
data:{"isJson":true},
|
|
dataType:"json",
|
|
success:function(data){
|
|
var appendCode = "";
|
|
var oemObjId = "";
|
|
appendCode += "<option value=''>전체</option>";
|
|
$.each(data, function(i){
|
|
oemObjId = fnc_checkNull(data[i].OEM_OBJID);
|
|
appendCode += "<option value='"+data[i].OBJID+"' data-OEM_OBJID='"+oemObjId+"'>"+data[i].CAR_CODE+"("+data[i].CAR_NAME+")</option>";
|
|
});
|
|
$("#carObjId1").children().remove();
|
|
$("#carObjId1").append(appendCode);
|
|
|
|
$("#carObjId2").children().remove();
|
|
$("#carObjId2").append(appendCode);
|
|
|
|
var paramValue1 = "${empty param.carObjId1?baseParamMap.CAR_OBJID:param.carObjId1}";
|
|
if(paramValue1 != ""){
|
|
$("#carObjId1 > option[value="+paramValue1+"]").attr("selected", "true");
|
|
}
|
|
var paramValue2 = "${empty param.carObjId2?baseParamMap.CAR_OBJID:param.carObjId2}";
|
|
if(paramValue2 != ""){
|
|
$("#carObjId2 > option[value="+paramValue2+"]").attr("selected", "true");
|
|
}
|
|
|
|
},
|
|
error: function(jqxhr, status, error){
|
|
}
|
|
});
|
|
}
|
|
|
|
//제품군 목록 조회
|
|
function fn_setProductGroupList(){
|
|
$.ajax({
|
|
url:"/common/getProductGroupList.do",
|
|
type:"POST",
|
|
data:{"isJson":true},
|
|
dataType:"json",
|
|
success:function(data){
|
|
var appendCode = "";
|
|
appendCode += "<option value=''>전체</option>";
|
|
$.each(data, function(i){
|
|
appendCode += "<option value='"+data[i].OBJID+"'>"+data[i].PRODUCT_GROUP_NAME+"</option>";
|
|
});
|
|
|
|
$("#productGroupObjId1").children().remove();
|
|
$("#productGroupObjId1").append(appendCode);
|
|
|
|
$("#productGroupObjId2").children().remove();
|
|
$("#productGroupObjId2").append(appendCode);
|
|
|
|
var paramValue1 = "${empty param.productGroupObjId1?baseParamMap.PRODUCT_GROUP_OBJID:param.productGroupObjId1}";
|
|
if(paramValue1 != ""){
|
|
$("#productGroupObjId1 > option[value="+paramValue1+"]").attr("selected", "true");
|
|
}
|
|
var paramValue2 = "${empty param.productGroupObjId2?baseParamMap.PRODUCT_GROUP_OBJID:param.productGroupObjId2}";
|
|
if(paramValue2 != ""){
|
|
$("#productGroupObjId2 > option[value="+paramValue2+"]").attr("selected", "true");
|
|
}
|
|
|
|
},
|
|
error: function(jqxhr, status, error){
|
|
}
|
|
});
|
|
}
|
|
//제품 목록 조회
|
|
function fn_setProductTypeList(target,productGroupObjId){
|
|
$.ajax({
|
|
url:"/common/getProductList.do",
|
|
type:"POST",
|
|
data:{"isJson":true, "search_productGroupObjId":productGroupObjId},
|
|
dataType:"json",
|
|
success:function(data){
|
|
var appendCode = "";
|
|
appendCode += "<option value=''>전체</option>";
|
|
$.each(data, function(i){
|
|
appendCode += "<option value='"+data[i].OBJID+"'>"+data[i].PRODUCT_NAME+"("+data[i].PRODUCT_CODE+")</option>";
|
|
});
|
|
|
|
$("#"+target).children().remove();
|
|
$("#"+target).append(appendCode);
|
|
},
|
|
error: function(jqxhr, status, error){
|
|
}
|
|
});
|
|
}
|
|
|
|
</script>
|
|
<body>
|
|
<form name="form1" action="" method="post">
|
|
<div style="min-width:1700px;">
|
|
<div class="plm_menu_name">
|
|
<h2>
|
|
<span>제품문제점 관리</span>
|
|
</h2>
|
|
</div>
|
|
<div id="plmSearchZon">
|
|
<table>
|
|
<tr>
|
|
<td>
|
|
<lable for="" class="orangeTitleDot" style="font-size:13px;">차종</lable>
|
|
</td>
|
|
<td>
|
|
<select id="carObjId1" name="carObjId1" style="width:160px;"></select>
|
|
</td>
|
|
<td>
|
|
<lable for="" class="orangeTitleDot" style="font-size:13px;">제품군</lable>
|
|
</td>
|
|
<td>
|
|
<select id="productGroupObjId1" name="productGroupObjId1" style="width:100px;"></select>
|
|
</td>
|
|
<td>
|
|
<lable for="" class="orangeTitleDot" style="font-size:13px;">제품</lable>
|
|
</td>
|
|
<td>
|
|
<select id="productObjId1" name="productObjId1" style="width:180px;"></select>
|
|
</td>
|
|
<td>
|
|
<lable for="" class="orangeTitleDot" style="font-size:13px;">단계</lable>
|
|
</td>
|
|
<td colspan="3">
|
|
<select id="step1" name="step1" style="width:100px;" >
|
|
<option value="">전체</option>
|
|
<option value="design">설계</option>
|
|
<option value="develop">개발</option>
|
|
<option value="production">양산</option>
|
|
</select>
|
|
<select id="step2" name="step2" style="width:100px;"></select>
|
|
<input type="button" value="조회" id="searchProductType" class="btnSearch plm_btns" style="float:right; margin-left:20px;">
|
|
</td>
|
|
</tr>
|
|
</table>
|
|
</div>
|
|
<div class="contents_page_basic_margin" style="overflow:hidden;">
|
|
<div class="plm_table_wrap" style="float:left; width:40%; margin: 30px 0;">
|
|
<div style="overflow-y:scroll;">
|
|
<table class="plm_table" style="width:100%;">
|
|
<colgroup>
|
|
<col width="*">
|
|
<col width="15%">
|
|
<col width="15%">
|
|
<col width="15%">
|
|
<col width="15%">
|
|
</colgroup>
|
|
<thead class="plm_thead">
|
|
<tr>
|
|
<td></td>
|
|
<td>발생건수</td>
|
|
<td>조치건수</td>
|
|
<td>미결건수</td>
|
|
<td>조치율(%)</td>
|
|
</tr>
|
|
</thead>
|
|
</table>
|
|
</div>
|
|
<div class="plm_scroll_table" style="width:100%; height:230px;">
|
|
<table class="plm_table">
|
|
<colgroup>
|
|
<col width="*">
|
|
<col width="15%">
|
|
<col width="15%">
|
|
<col width="15%">
|
|
<col width="15%">
|
|
</colgroup>
|
|
<tbody id="carProductProblemList" class="hover_tr">
|
|
</tbody>
|
|
</table>
|
|
</div>
|
|
</div>
|
|
<div style="width:35%; float:left; margin:30px 0 0 40px;">
|
|
<div class="plm_thead" style="width:100%; height:26px; text-align:center; line-height:26px; font-size:13px;">제품별 문제점 현황</div>
|
|
<div id="carProductProblemPieChart" style="width:100%; height:250px;"></div>
|
|
</div>
|
|
</div>
|
|
<div id="plmSearchZon" style="border-top: 1px solid #d4d4d4;">
|
|
<table>
|
|
<tr>
|
|
<td>
|
|
<lable for="" class="orangeTitleDot" style="font-size:13px;">차종</lable>
|
|
</td>
|
|
<td>
|
|
<select id="carObjId2" name="carObjId2" style="width:160px;"></select>
|
|
</td>
|
|
<td>
|
|
<lable for="" class="orangeTitleDot" style="font-size:13px;">제품군</lable>
|
|
</td>
|
|
<td>
|
|
<select id="productGroupObjId2" name="productGroupObjId2" style="width:100px;"></select>
|
|
</td>
|
|
<td>
|
|
<lable for="" class="orangeTitleDot" style="font-size:13px;">제품</lable>
|
|
</td>
|
|
<td>
|
|
<select id="productObjId2" name="productObjId2" style="width:180px;"></select>
|
|
</td>
|
|
<td>
|
|
<lable for="" class="orangeTitleDot" style="font-size:13px;">유형</lable>
|
|
</td>
|
|
<td colspan="3">
|
|
<select id="type1" name="type1" style="width:100px;">
|
|
<option value="">전체</option>
|
|
<option value="design">설계</option>
|
|
<option value="mold">금형/단품</option>
|
|
<option value="facilities">조립/설비</option>
|
|
<option value="etc">부자재/기타</option>
|
|
</select>
|
|
<select id="type2" name="type2" style="width:100px;"></select>
|
|
<input type="button" value="조회" id="searchProblemType" class="btnSearch plm_btns" style="float:right; margin-left:20px;">
|
|
</td>
|
|
</tr>
|
|
</table>
|
|
</div>
|
|
<div class="contents_page_basic_margin" style="overflow:hidden;">
|
|
<div class="plm_table_wrap" style="width:40%; float:left; margin: 30px 0 0 0;">
|
|
<div style="overflow-y:scroll;">
|
|
<table class="plm_table" style="width:100%;">
|
|
<colgroup>
|
|
<col width="*">
|
|
<col width="20%">
|
|
<col width="20%">
|
|
<col width="20%">
|
|
</colgroup>
|
|
<thead class="plm_thead">
|
|
<tr>
|
|
<td></td>
|
|
<td>발생건수</td>
|
|
<td>조치건수</td>
|
|
<td>미결건수</td>
|
|
</tr>
|
|
</thead>
|
|
</table>
|
|
</div>
|
|
<div class="plm_scroll_table" style="width:100%; height:230px;">
|
|
<table class="plm_table">
|
|
<colgroup>
|
|
<col width="*">
|
|
<col width="20%">
|
|
<col width="20%">
|
|
<col width="20%">
|
|
</colgroup>
|
|
<tbody id="problemTypeList" class="hover_tr">
|
|
</tbody>
|
|
</table>
|
|
</div>
|
|
</div>
|
|
<div style="width:35%; float:left; margin:30px 0 0 40px;">
|
|
<div class="plm_thead" style="width:100%; height:26px; text-align:center; line-height:26px; font-size:13px;">문제점 유형별 발생현황</div>
|
|
<div id="problemTypeColumnChart" style="width:90%; height:280px; margin: 0 auto;"></div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</form>
|
|
</body>
|
|
</html> |