ERP-node/WebContent/WEB-INF/view/transfer/moldTransferList.jsp

735 lines
23 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(){
$(".date_delete").click(function(){
$(".from_to_date").val("");
});
//고객사 목록 조회
fn_setOEMList();
//고객사별 차종 목록 조회
$("#search_oemObjId").change(function(){
var oemObjId = $(this).val();
fn_setCarTypeList(oemObjId);
});
fn_getMoldTransferResultPieChart("","");
//등록팝업
$(".moldTransferEnrollBtn").click(function(){
window.open("/transfer/moldTransferFormPopup.do", "", "width=500, height=625");
});
//금형이관 관리리스트 선택 시 팝업
$(".btnMoldTransferPartDetailPopup").click(function(){
var objId = $(this).attr("data-OBJID");
window.open("/transfer/moldTransferTypeOfCarPopup.do?objId="+objId, "", "width=1700, height=885");
});
//인수자의견 팝업
$(".opinionBtn").click(function(){
window.open("/transfer/opinionFormPopup.do", "", "width=1000, height=455");
});
//금형이관 관리리스트의 차종버튼 클릭시
$(".btnRadio").click(function(){
var moldObjId = $(this).val();
var oemObjId = $(this).attr("data-OEM_OBJID");
var carObjId = $(this).attr("data-CAR_OBJID");
$("#moldFile").attr("data-OBJID",carObjId);
//Swal.fire("moldObjId : "+moldObjId+", carObjId : "+carObjId);
fn_getMoldReviewOrRejectPartList(carObjId);
fn_getMoldTransferResultPieChart(oemObjId,carObjId);
});
//인수인계 정보팝업
$(document).on("click", ".btnOpenTakeOverHisPopup", function(){
var targetObjId = $(this).attr("data-TARGET_OBJID");
var takeOverHisObjId = $(this).attr("data-TAKE_OVER_HIS_OBJID");
var partNo = $(this).attr("data-PART_NO");
var url = "/transfer/opinionFormPopup.do?targetObjId="+targetObjId+"&partNo="+partNo;
window.open(url, "takeOverHisResultPopup", "width=1000, height=455");
//Swal.fire("targetObjId : "+targetObjId+", takeOverHisObjId : "+takeOverHisObjId);
});
//금형인수 인계서 자료등록 팝업
$("#moldFile").click(function(){
var objId = $("input[type=radio]:checked").val();
var writer = fnc_checkNull($("input[type=radio]:checked").attr("data-WRITER"));
var connectUserId = "${connectUserId}";
if(writer == ""){
Swal.fire("금형 인수인계서를 업로드할 차종을 선택해 주시기 바랍니다.");
}else if(writer == connectUserId){
if(objId == null || objId == ""){
Swal.fire("차종을 선택해 주시기 바랍니다.");
return false;
}else {
if(confirm("금형 인수인계서는 차종별로 한번에 업로드할 수 있습니다.\n단, Part No가 파일명이 되어야합니다.")){
var params = "?targetObjId="+objId;
window.open("/transfer/moldFileRegistPopup.do"+params, "", "width=1000, height=600");
}
}
}else{
Swal.fire("인계서 등록 권한이 없습니다.\n등록권한 : 작성자");
}
});
//조회
$(".btnSearch").click(function(){
fn_search();
});
//문제점 발생/조치현황
$("#btnProblemListPopup").click(function(){
var choosedOemObjId = fnc_checkNull($("input[type=radio]:checked").attr("data-OEM_OBJID"));
var choosedCarObjId = fnc_checkNull($("input[type=radio]:checked").attr("data-CAR_OBJID"));
//Swal.fire("oemObjId : "+choosedOemObjId+", carObjId : "+choosedCarObjId);
if(choosedCarObjId == ""){
Swal.fire("금형이관대상을 선택해 주시기 바랍니다.");
return;
}else{
fn_openProblemList(choosedOemObjId, choosedCarObjId, "", "", "", "", "mold", "", "", "", "", "", "", "");
}
});
fnc_datepick();
});
</script>
<script>
//검색기능
function fn_search(){
var choosedObjId = fnc_checkNull($("input[type=radio]:checked").val());
if(choosedObjId != ""){
document.form1.action = "/transfer/moldTransferList.do";
document.form1.submit();
}else{
Swal.fire("선택된 차종이 없습니다.");
}
}
//첨부파일 미리보기
function openImagePopUp(url){
var img=new Image();
img.src=url;
var img_width=img.width;
var img_height=img.height;
var win_width=img.width+25;
var height=img.height+30;
window.open(url,"moldTransferTypeImgPopUp","width="+img_width+",height="+height+", menubars=no, scrollbars=yes'");
}
//금형 미이관 단품리스트
function fn_getMoldReviewOrRejectPartList(carObjId){
$.ajax({
url:"/transfer/getTransferMoldReviewOrRejectPartList.do",
type:"POST",
data:{"carObjId":carObjId},
dataType:"json",
success:function(data){
$("#reviewOrRejectPartList").children().remove();
var append = "";
var cnt = data.length;
if(data.length > 0){
$.each(data, function(i){
append += "<tr>";
append += "<td title="+fnc_checkNull(data[i].RNUM)+">"+fnc_checkNull(data[i].RNUM)+"</td>";
append += "<td title="+fnc_checkNull(data[i].PROD_GROUP_NAME)+">"+fnc_checkNull(data[i].PROD_GROUP_NAME)+"</td>";
append += "<td title="+fnc_checkNull(data[i].PROD_NAME)+">"+fnc_checkNull(data[i].PROD_NAME)+"</td>";
append += "<td title="+fnc_checkNull(data[i].PART_NO)+">"+fnc_checkNull(data[i].PART_NO)+"</td>";
append += "<td title="+fnc_checkNull(data[i].PART_NAME)+">"+fnc_checkNull(data[i].PART_NAME)+"</td>";
append += "<td>";
var fileName = fnc_checkNull(data[i].PART_IMAGE_REAL_FILE_NAME);
if(fileName == null || fileName == ""){
append += "<div class='no_img_icon'></div>"
}else{
var srcLocation = encodeURI("/common/viewImage.do?realFileName="+fnc_checkNull(data[i].PART_IMAGE_REAL_FILE_NAME)+"&savedFileName="+fnc_checkNull(data[i].PART_IMAGE_SAVED_FILE_NAME)+"&attDir="+fnc_checkNull(data[i].PART_IMAGE_FILE_PATH));
append += "<img src='"+srcLocation+"' height='68px' width='auto' onclick='openImagePopUp(this.src)' style='cursor:pointer;'/>";
}
append += "</td>";
append += "<td title="+fnc_checkNull(data[i].REASON)+">"+fnc_checkNull(data[i].REASON)+"</td>";
var result = fnc_checkNull(data[i].RESULT);
if(result == "apply"){
result = "승인";
}else if(result == "acceptApply"){
result = "수용승인";
}else if(result == "review"){
result = "검토";
}else if(result == "reject"){
result = "거부";
}
var takeOverLink = "<a href='#' class='btnOpenTakeOverHisPopup' data-PART_NO='"+fnc_checkNull(data[i].PART_NO)+"' data-TARGET_OBJID='"+fnc_checkNull(data[i].MOLD_GABJI_OBJID)+"' data-TAKE_OVER_HIS_OBJID='"+fnc_checkNull(data[i].HIS_OBJID)+"'>"+result+"</a>";
append += "<td>"+takeOverLink+"</td>";
append += "</tr>";
});
}else{
append += "<tr><td colspan='8' align='center'>조회된 정보가 없습니다.</td></tr>";
}
$("#moldReviewOrRejectPartListCntArea").text(cnt);
$("#reviewOrRejectPartList").append(append);
},
error: function(jqxhr, status, error){
}
});
}
//oem 목록 조회
function fn_setOEMList(){
$.ajax({
url:"/common/getOEMList.do",
type:"POST",
data:{"isJson":true},
dataType:"json",
success:function(data){
var appendCode = "";
$.each(data, function(i){
appendCode += "<option value='"+data[i].OBJID+"'>"+data[i].OEM_NAME+"("+data[i].OEM_CODE+")</option>";
});
$("#search_oemObjId").append(appendCode);
var paramValue = "${param.search_oemObjId}";
if(paramValue != ""){
$("#search_oemObjId > option[value="+paramValue+"]").attr("selected", "true");
$("#search_oemObjId").trigger("change");
}
},
error: function(jqxhr, status, error){
}
});
}
//car 목록 조회
function fn_setCarTypeList(oemObjId){
if(oemObjId !=""){
$.ajax({
url:"/common/getCarTypeList.do",
type:"POST",
data:{"isJson":true, "search_oemObjId":oemObjId},
dataType:"json",
success:function(data){
var appendCode = "";
appendCode += "<option value=''>선택</option>";
$.each(data, function(i){
appendCode += "<option value='"+data[i].OBJID+"'>"+data[i].CAR_CODE+"("+data[i].CAR_NAME+")</option>";
});
$("#search_carObjId").children().remove();
$("#search_carObjId").append(appendCode);
var paramValue = "${param.search_carObjId}";
if(paramValue != ""){
$("#search_carObjId > option[value="+paramValue+"]").attr("selected", "true");
}
},
error: function(jqxhr, status, error){
}
});
}else{
$("#search_carObjId").children().remove();
$("#search_carObjId").append("<option value=''>선택</option>");
}
}
//해당 금형이관에 해당하는 진행현황 PIE Chart를 가져온다.
function fn_getMoldTransferResultPieChart(oemObjId,carObjId){
var prodGroupArr = [];
var prodGroupBulletArr = [];
$("#chart1").empty();
$("#chart2").empty();
if(oemObjId != "" && carObjId != ""){
$.ajax({
url:"/dashboard/getMoldTransferResultPieChart.do",
type:"POST",
data:{"oemObjId":oemObjId, "carObjId":carObjId},
dataType:"json",
async:false,
success:function(data){
var resultData = null;
if(fnc_checkNullDefaultValue(data.TOTAL_COUNT,0) > 0){
resultData = data;
prodGroupArr = fn_getMoldTransferResultPieChartDrillDown(oemObjId,carObjId);
fn_drawMoldTransferResultPieChart("chart1",resultData,prodGroupArr);
prodGroupBulletArr = fn_getMoldTransferProdGroupResultBulltChart(oemObjId,carObjId);
fn_drawMoldTransferProductGroupBullet("chart2", prodGroupBulletArr);
}else{
var noData = "<div id=\"chart3MessageArea\" style=\"width:100%;height:50%;padding-top:10%;text-align:center;\">조회된 정보가 없습니다.</div>";
$("#chart1").append(noData);
$("#chart2").append(noData);
}
},
error: function(jqxhr, status, error){
}
});
}else{
var noData = "<div id=\"chart3MessageArea\" style=\"width:100%;height:50%;padding-top:10%;text-align:center;\">조회된 정보가 없습니다.</div>";
$("#chart1").append(noData);
$("#chart2").append(noData);
}
}
//해당 금형이관에 해당하는 진행현황 PIE Chart Drill down 정보를 가져온다.
function fn_getMoldTransferResultPieChartDrillDown(oemObjId,carObjId){
var prodGroupArr = [];
$.ajax({
url:"/dashboard/getMoldTransferResultPieChartDrillDown.do",
type:"POST",
data:{"oemObjId":oemObjId, "carObjId":carObjId},
dataType:"json",
async:false,
success:function(data){
if(data.length > 0){
prodGroupArr = data;
}
},
error: function(jqxhr, status, error){
}
});
return prodGroupArr;
}
//해당 차종에 해당하는 제품군별 이관율 정보를 가져온다.
function fn_getMoldTransferProdGroupResultBulltChart(oemObjId,carObjId){
var prodGroupArr = [];
$.ajax({
url:"/dashboard/getMoldTransferProdGroupResultBulltChart.do",
type:"POST",
data:{"oemObjId":oemObjId, "carObjId":carObjId},
dataType:"json",
async:false,
success:function(data){
if(data.length > 0){
prodGroupArr = data;
}
},
error: function(jqxhr, status, error){
}
});
return prodGroupArr;
}
//조회된 정보를 통해 해당 금형이관에 해당하는 진행현황 PIE Chart를 그려준다.
function fn_drawMoldTransferResultPieChart(areaId,data,prodGroupArr){
var applyArr = [];
var acceptApplyArr = [];
var rejectArr = [];
var reviewArr = [];
var notTypeArr = [];
$.each(prodGroupArr,function(i){
applyArr.push(
[fnc_checkNull(prodGroupArr[i].PROD_GROUP_NAME),Number(fnc_checkNullDefaultValue(prodGroupArr[i].APPLY_RATIO,0))]
);
acceptApplyArr.push(
[fnc_checkNull(prodGroupArr[i].PROD_GROUP_NAME),Number(fnc_checkNullDefaultValue(prodGroupArr[i].ACCEPT_APPLY_RATIO,0))]
);
rejectArr.push(
[fnc_checkNull(prodGroupArr[i].PROD_GROUP_NAME),Number(fnc_checkNullDefaultValue(prodGroupArr[i].REJECT_RATIO,0))]
);
reviewArr.push(
[fnc_checkNull(prodGroupArr[i].PROD_GROUP_NAME),Number(fnc_checkNullDefaultValue(prodGroupArr[i].REVIEW_RATIO,0))]
);
notTypeArr.push(
[fnc_checkNull(prodGroupArr[i].PROD_GROUP_NAME),Number(fnc_checkNullDefaultValue(prodGroupArr[i].NOT_TYPE_RATIO,0))]
);
});
$('#'+areaId).highcharts({
colors: ['#558ed5', '#7dace8', '#a0c2eb','#e6e9ee','#d3e3f6','#73bbae','#ddd475','#e6c15d','#b9d5ea'],
chart: {
plotBackgroundColor: null,
plotBorderWidth: null,
plotShadow: false,
type: 'pie'
},
title: {
text: ''
},
tooltip: {
pointFormat: '{series.name}: <b>{point.y} %</b>'
},
plotOptions: {
pie: {
allowPointSelect: true,
cursor: 'pointer',
dataLabels: {
enabled: true,
format: '<b>{point.name}</b>: {point.y} %',
style: {
color: (Highcharts.theme && Highcharts.theme.contrastTextColor) || 'black'
}
}
}
},
series: [
{
name:"비율",
colorByPoint:true,
data:[
{
name: "승인",
y: Number(fnc_checkNullDefaultValue(data.APPLY_RATIO, 0)),
drilldown: "apply"
},
{
name: "수용승인",
y: Number(fnc_checkNullDefaultValue(data.ACCEPT_APPLY_RATIO, 0)),
drilldown:"acceptApply"
},
{
name: "검토",
y: Number(fnc_checkNullDefaultValue(data.REVIEW_RATIO, 0)),
drilldown:"review"
},
{
name: "반려",
y: Number(fnc_checkNullDefaultValue(data.REJECT_RATIO, 0)),
drilldown:"reject"
},
{
name: "미입력",
y: Number(fnc_checkNullDefaultValue(data.NOT_TYPE_RATIO, 0)),
drilldown:"notType"
}
]
}
],
drilldown:{
series:[
{
name:"승인",
id:"apply",
data:applyArr
},
{
name:"수용승인",
id:"acceptApply",
data:acceptApplyArr
},
{
name:"검토",
id:"review",
data:reviewArr
},
{
name:"반려",
id:"reject",
data:rejectArr
},
{
name:"미입력",
id:"notType",
data:notTypeArr
}
]
}
});
}
function fn_drawMoldTransferProductGroupBullet(areaId,prodGroupBulletArr){
$("#"+areaId).empty();
if(prodGroupBulletArr.length > 0){
$.each(prodGroupBulletArr,function(i){
$("#"+areaId).append("<div id='bulletChart"+i+"' style='width:99%; height:80px;'></div>");
$("#bulletChart"+i).highcharts({
chart: {
inverted: true,
marginLeft: 50,
type: 'bullet'
},
title: {
text: null
},
legend: {
enabled: false
},
plotOptions: {
series: {
pointPadding: 0.25,
borderWidth: 0,
color: '#000',
targetOptions: {
width: '200%'
}
}
},
xAxis: {
gridLineWidth: 0,
categories: ["<span class='hc-cat-title'>"+fnc_checkNull(prodGroupBulletArr[i].PROD_GROUP_NAME)+"</span><br/>"]
},
yAxis: {
plotBands: [{
from: 0,
to: 1400,
color: '#666'
}, {
from: 1400,
to: 2000,
color: '#999'
}, {
from: 2000,
to: 9e9,
color: '#bbb'
}],
labels: {
format: '{value}%'
},
title: null
},
series: [{
data: [{
y: Number(fnc_checkNullDefaultValue(prodGroupBulletArr[i].APPLY_RATIO,0)),
target: Number(100)
}]
}],
tooltip: {
pointFormat: '<b>{point.y}</b> (with target at {point.target})'
}
});
});
}else{
var noData = "<div id=\"chart3MessageArea\" style=\"width:100%;height:50%;padding-top:10%;text-align:center;\">조회된 정보가 없습니다.</div>";
$("#"+areaId).append(noData);
}
}
</script>
</head>
<body>
<form name="form1" id="form1" action="" method="post">
<div style="min-width:1500px;">
<div class="plm_menu_name">
<h2>
<span>금형이관</span>
</h2>
</div>
<div id="plmSearchZon">
<table class="short_search">
<tr>
<td><label for="">고객사</label></td>
<td>
<select name="search_oemObjId" id="search_oemObjId">
<option value="">선택</option>
</select>
</td>
<td><label for="">차종</label></td>
<td>
<select name="search_carObjId" id="search_carObjId">
<option value="">선택</option>
</select>
</td>
<td><label for="">이관상태</label></td>
<td>
<select name="search_takeOverStatus" id="search_takeOverStatus">
<option value="">선택</option>
<option value="complete" ${param.search_takeOverStatus eq 'complete'?'selected':''}>이관완료</option>
<option value="create" ${param.search_takeOverStatus eq 'create'?'selected':''}>진행중</option>
</select>
</td>
<td><label for="">이관기간</label></td>
<td colspan="">
<input type="text" id="search_takeOverfromDate" name="search_takeOverfromDate" class="from_to_date" value="${param.search_takeOverFromDate}" readonly>
~ <input type="text" id="search_takeOverToDate" name="search_takeOverToDate" class="from_to_date" value="${param.search_takeOverToDate}" readonly>
<input type="button" class="date_delete" value="x">
</td>
</tr>
</table>
</div>
<div class="btn_wrap" style="float:right; width:38.3%; height:40px; box-shadow: 5px 7px 10px 0px #ccc;">
<div class="plm_btn_wrap" style="margin-right:22px;">
<input type="button" value="금형 인수인계서 업로드" class="plm_btns" id="moldFile">
<input type="button" value="조회" class="btnSearch plm_btns">
<input type="button" value="등록" class="plm_btns moldTransferEnrollBtn">
<!-- <input type="button" value="이관승인요청" class="plm_btns"> -->
<input type="button" value="문제점 발생/조치현황" class="plm_btns" id="btnProblemListPopup">
<input type="button" value="Task Link" class="plm_btns">
</div>
</div>
<div class="contents_page_basic_margin">
<div class="fourblock" style="width:60%; margin: 45px 0 15px 0; float:left; border:0; height:300px; border-radius: 10px 0 10px 10px; padding: 38px 20px 0 13px; box-shadow: 5px 7px 10px 0px #ccc;">
<div class="title_div" style="margin-top:-20px;line-height: 13px;">금형이관 관리리스트</div>
<div class="plm_table_wrap">
<div style="overflow-y:scroll;">
<table class="plm_table" style="width:100%;">
<colgroup>
<col width="5%" />
<col width="5%" />
<col width="*" />
<col width="*" />
<col width="10%" />
<col width="10%" />
<col width="10%" />
<col width="10%" />
<col width="10%" />
<col width="13%" />
</colgroup>
<thead style="border-bottom: 2px solid #6c93a7;">
<tr class="plm_thead" style="background-image: linear-gradient(#86b3cb, #75a0b6);">
<td></td>
<td>No</td>
<td>고객사</td>
<td>차종</td>
<td>금형 SET수</td>
<td>이관율(%)</td>
<td>이관상태</td>
<td>양산일자</td>
<td>이관완료일자</td>
<td>등록자</td>
</tr>
</thead>
</table>
</div>
<div class="plm_scroll_table" style="width:100%; height:250px;">
<table class="plm_table">
<colgroup>
<col width="5%" />
<col width="5%" />
<col width="*" />
<col width="*" />
<col width="10%" />
<col width="10%" />
<col width="10%" />
<col width="10%" />
<col width="10%" />
<col width="13%" />
</colgroup>
<tbody id="mainList">
<c:choose>
<c:when test="${!empty LIST}">
<c:forEach var="info" items="${LIST}" varStatus="status">
<tr>
<td><input type="radio" name="btnRadio" class="btnRadio" value="${info.OBJID}" data-OEM_OBJID="${info.OEM_OBJID}" data-CAR_OBJID="${info.CAR_OBJID}" data-WRITER="${info.WRITER}"></td>
<td>${info.RNUM}</td>
<td>${info.OEM_NAME}</td>
<td>${info.CAR_CODE}</td>
<td>${info.MOLD_SET_CNT}</td>
<td>${info.TAKE_OVER_RATIO}%</td>
<td><a href="#" class="btnMoldTransferPartDetailPopup" data-OBJID="${info.OBJID}">${info.TAKE_OVER_STATUS eq 'complete'?'이관완료':'진행중'}</a></td>
<td>${info.SOP}</td>
<td>${info.TAKE_OVER_DATE}</td>
<td>${info.WRITER_DEPT_NAME} ${info.WRITER_USER_NAME}</td>
</tr>
</c:forEach>
</c:when>
<c:otherwise>
<tr>
<td align="center" colspan="10">조회된 정보가 없습니다.</td>
</tr>
</c:otherwise>
</c:choose>
</tbody>
</table>
</div>
</div>
</div>
<div class="fourblock" style="width:35%; margin-bottom:15px; margin:42px 0 0 0; float:right; height:300px;">
<div class="title_div" style="margin-top:-20px;line-height: 13px;">차종별 이관현황</div>
<div id="chart1" style="width:80%; height:230px; margin: 30px auto 0;"></div>
</div>
<div class="fourblock" style="width:60%; float:left; height:300px; margin-left:14px; border:0;">
<div class="title_div" style="margin-top:-20px;line-height: 13px;">금형 미이관 단품리스트</div>
<div style="font-size:12px; color:#595a5a; padding-left:15px; margin: -4px 0 2px 0;">※총 <b id="moldReviewOrRejectPartListCntArea">0</b> 건</div>
<div class="plm_table_wrap">
<div style="overflow-y:scroll;">
<table class="plm_table" style="width:100%;">
<colgroup>
<col width="5%" />
<col width="10%" />
<col width="10%" />
<col width="10%" />
<col width="*" />
<col width="10%" />
<col width="*" />
<col width="8%" />
</colgroup>
<thead>
<tr class="plm_thead">
<td>No</td>
<td>제품군</td>
<td>제품</td>
<td>Part No</td>
<td>Part Name</td>
<td>형상</td>
<td>미이관 사유</td>
<td>결과</td>
</tr>
</thead>
</table>
</div>
<div class="plm_scroll_table" style="width:100%; height:285px;">
<table class="plm_table">
<colgroup>
<col width="5%" />
<col width="10%" />
<col width="10%" />
<col width="10%" />
<col width="*" />
<col width="10%" />
<col width="*" />
<col width="8%" />
</colgroup>
<tbody id="reviewOrRejectPartList">
<tr>
<td colspan="8" align="center">차종을 선택해 주시기 바랍니다.</td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<div class="fourblock" style="width:35%; margin-right: 0; float:right; height:326px;">
<div class="title_div" style="margin-top:-20px;line-height: 13px;">제품별 이관현황</div>
<div id="chart2" style="width:80%; height:300px; margin: 30px auto 0;"></div>
</div>
</div>
</div>
</form>
</body>
</html>