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

210 lines
7.3 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>
// 입고관리 등록 팝업
$(function(){
$("#btnClose").click(function(){
self.close();
});
//취소
$("#btnCancel").click(function(){
var objId = $(this).attr("data-OBJID");
var params = "?objId="+objId;
document.form1.action ="/protoDevMng/protoStockDetailPopUp.do"+params;
document.form1.submit();
});
$(".btnDetailPart").click(function(){
var partNo = $(this).attr("data-PART_NO");
fnc_openPartDetailPopup("${connectUserId}", partNo);
});
});
</script>
<script>
//작성된 Part 별 입고내용을 저장한다.
function fn_saveProtoStockPartInfo(){
if(confirm("저장하시겠습니까?")){
$.ajax({
url:"/protoDevMng/saveProtoStockPartInfo.do",
type:"POST",
data:$("#form1").serialize(),
dataType:"json",
success:function(data){
if(data.result == "true" || data.result == true || data.result){
Swal.fire("저장되었습니다.");
opener.fn_search();
self.close();
}else{
Swal.fire("저장에 실패하였습니다.");
}
},
error: function(jqxhr, status, error){
}
});
}
}
//입력된 값으로 비율을 계산한다.
function fn_calculate(targetObjId){
var totalCnt = eval($("#totalRequired_"+targetObjId).val());
var stockCnt = eval($("#receiveCount_"+targetObjId).val());
//Swal.fire("totalCnt:"+totalCnt+", stockCnt:"+stockCnt+" ?? : "+(totalCnt < stockCnt));
//Swal.fire("stockCnt:"+stockCnt);
var persent = "";
if("" != fnc_checkNull(totalCnt) && "" != fnc_checkNull(stockCnt)){
persent = stockCnt/totalCnt*100;
$("#stockRatio_"+targetObjId).empty();
$("#stockRatio_"+targetObjId).append(persent.toFixed(1));
if(totalCnt < stockCnt){
Swal.fire("입고량은 총수요량보다 많을 수 없습니다.");
$("#receiveCount_"+targetObjId).val(0);
$("#stockRatio_"+targetObjId).empty();
$("#receiveCount_"+targetObjId).focus();
}
}
}
//첨부파일 미리보기
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,"protoStockListShapeImgPopUp","width="+img_width+",height="+height+", menubars=no, scrollbars=yes'");
}
</script>
</head>
<body>
<form name="form1" id="form1" action="" method="post">
<input type="hidden" name="targetObjId" id="targetObjId" value="${param.objId}">
<div id="">
<div class="plm_menu_name">
<h2>
<span>시작품 입고현황</span>
</h2>
</div>
<section class="contents_page_basic_margin">
<section id="prototypeStatusTable">
<div style="overflow-y:scroll;">
<table class="plm_table prototype_Status_Table" style="width:100%">
<colgroup>
<col width="5%">
<col width="10%">
<col width="*">
<col width="10%">
<col width="10%">
<col width="10%">
<col width="5%">
<col width="5%">
<col width="5%">
<col width="5%">
<col width="5%">
</colgroup>
<thead>
<tr class="plm_thead">
<td rowspan="2">No</td>
<td rowspan="2">품번</td>
<td rowspan="2">품명</td>
<td rowspan="2">형상</td>
<td colspan="3">EO</td>
<td colspan="4">입고현황</td>
</tr>
<tr class="plm_sub_thead">
<td>No</td>
<td>Date</td>
<td>Rev</td>
<td>총소요</td>
<td>입고</td>
<td>납입율(%)</td>
<td>입고지연</td>
</tr>
</thead>
</table>
</div>
<div class="plm_table_wrap">
<div class="plm_scroll_table" style="width:100%; height:500px;">
<table class="plm_table prototype_Status_Table">
<colgroup>
<col width="5%">
<col width="10%">
<col width="*">
<col width="10%">
<col width="10%">
<col width="10%">
<col width="5%">
<col width="5%">
<col width="5%">
<col width="5%">
<col width="5%">
</colgroup>
<tbody>
<c:choose>
<c:when test="${empty partList}">
<tr style="text-align:center;">
<td align="center" colspan="11">조회된 데이터가 없습니다.</td>
</tr>
</c:when>
<c:otherwise>
<c:forEach var="item" items="${partList}" varStatus="varStatus">
<input type="hidden" name="relObjId" value="${item.STOCK_REL_OBJID}">
<input type="hidden" name="partNo_${item.STOCK_REL_OBJID}" value="${item.PART_NO}">
<tr>
<td>${item.RNUM}</td>
<td title="${item.PART_NO}"><a href="#" class="btnDetailPart" data-PART_NO="${item.PART_NO}">${item.PART_NO}</a></td>
<td title="${item.PART_NAME}"><a href="#" class="btnDetailPart" data-PART_NO="${item.PART_NO}">${item.PART_NAME}</a></td>
<td>
<c:choose>
<c:when test="${empty item.PROTO_RESULT_ATTACH_REAL_FILE_NAME}">
<div class="no_img_icon"></div>
</c:when>
<c:otherwise>
<script>
var srcLocation = encodeURI("/common/viewImage.do?realFileName=${item.PROTO_RESULT_ATTACH_REAL_FILE_NAME}&savedFileName=${item.PROTO_RESULT_ATTACH_SAVED_FILE_NAME}&attDir=${item.PROTO_RESULT_ATTACH_FILE_PATH}");
document.write("<img src='"+srcLocation+"' height='68px' width='auto' onclick='openImagePopUp(this.src)' style='cursor:pointer;'/>");
</script>
</c:otherwise>
</c:choose>
</td>
<td>${item.EO_NO}</td>
<td>${item.EO_ISSUE_DATE_TITLE}</td>
<td>${item.REV}</td>
<td><input type="number" name="totalRequired_${item.STOCK_REL_OBJID}" id="totalRequired_${item.STOCK_REL_OBJID}" class="form_input" value="${item.TOTAL_REQUIRED}" onkeyup="fn_calculate('${item.STOCK_REL_OBJID}');"></td>
<td><input type="number" name="receiveCount_${item.STOCK_REL_OBJID}" id="receiveCount_${item.STOCK_REL_OBJID}" class="form_input" value="${item.RECEIVE_COUNT}" onkeyup="fn_calculate('${item.STOCK_REL_OBJID}');"></td>
<td id="stockRatio_${item.STOCK_REL_OBJID}">${item.STOCK_RATIO}</td><!-- 납입율 -->
<td><input type="number" name="delayReceiveCount_${item.STOCK_REL_OBJID}" id="delayReceiveCount_${item.STOCK_REL_OBJID}" class="form_input" value="${item.DELAY_RECEIVE_COUNT}"></td><!-- 입고지연 -->
</tr>
</c:forEach>
</c:otherwise>
</c:choose>
</tbody>
</table>
</div>
</div>
<div class="btn_wrap">
<div class="plm_btn_wrap_center">
<input type="button" value="저장" class="plm_btns" onclick="fn_saveProtoStockPartInfo();">
<input type="button" id="btnCancel" value="취소" class="plm_btns" data-OBJID="${param.objId}">
<input type="button" value="닫기" id="btnClose" class="plm_btns">
</div>
</div>
</section>
</section>
</div>
</form>
</body>
</html>