ERP-node/WebContent/WEB-INF/view/inventoryMng/materialRequestDetailPopUp.jsp

733 lines
25 KiB
Plaintext

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%>
<%@ page import="com.pms.common.utils.*"%>
<%@ page import="java.util.*"%>
<%@include file="/init.jsp"%>
<!DOCTYPE html>
<html>
<head>
<c:set var="now" value="<%=new java.util.Date() %>" />
<c:set var="sysYear"><fmt:formatDate value="${now}" pattern="yyyy" /></c:set>
<title><%=Constants.SYSTEM_NAME%></title>
<script type="text/javascript"></script>
<script>
$(document).ready(function() {
$(".WRITER").val('<%=connectUserName%>');
/* $(".select2").each(function(i,o){
$(this).val( $(this).attr("data-value") ).trigger("change");
}); */
selectSetVal("data-select", true);
$('.select2').select2();
fnc_datepick2(); //달력
$("#btnExcel").click(function() {
fn_excel();
});
$("input:text[numberOnly]").on("keyup", function() {
$(this).val(fnc_addComma($(this).val().replace(/[^0-9]/g,"")));
});
$("#USER_CHECK").change(function() {
// USER_CHECK 체크박스의 상태를 확인합니다.
if ($(this).is(":checked")) {
// 모든 요소를 선택합니다.
$("input[type='checkbox']").prop("checked", true);
} else {
// USER_CHECK 체크박스가 해제된 경우 모든 요소의 선택을 해제합니다.
$("input[type='checkbox']").prop("checked", false);
}
});
$("input[name*=QTY]").each(function(){
$(this).val(fnc_addComma($(this).val()));
});
//닫기
$("#btnClose").click(function(){
self.close(0);
});
//자재불출
$("#btnAccept").click(function(){
fn_accept();
});
$("#btnSave").click(function(){
fn_save();
});
$("#signsaveButton").click(function(event) {
fn_signsave(event);
});
$("#signdelButton").click(function(event) {
fn_signdelete();
});
$("#btnApply").click(function(){
event.preventDefault();
fn_Apply();
});
//취소
$("#btnCancel").click(function(){
var objId = $(this).attr("data-OBJID");
var params = "?objId="+objId;
document.form1.action ="/project/wbs/wbsTaskListDetailPopUp.do"+params;
document.form1.target ="_self";
document.form1.submit();
});
//체크박스 전체선택/전체해제
$("#allCheck").click(function(){
if($("#allCheck").prop("checked")) {
$("input[name=chk_objId]").prop("checked",true);
} else {
$("input[name=chk_objId]").prop("checked",false);
}
});
$("#btnDelete").click(function(){
fn_deleteWBSTask2();
});
$('input[type="checkbox"]').on('click', function() {
// 클릭된 체크박스가 속한 행에서 select 요소의 값을 가져옵니다.
var selectedValue = $(this).closest('tr').find('select[name="ACQ_USER"]').val();
console.log('Selected value:', selectedValue); // 선택된 값이 콘솔에 출력됩니다.
// 클릭된 체크박스의 체크 상태를 확인합니다.
var isChecked = $(this).prop('checked');
// 같은 값을 가진 다른 체크박스들을 처리합니다.
$('input[type="checkbox"]').each(function() {
// 현재 체크박스가 속한 행에서 select 요소의 값을 가져옵니다.
var currentValue = $(this).closest('tr').find('select[name="ACQ_USER"]').val();
console.log('Current value:', currentValue); // 현재 값이 콘솔에 출력됩니다.
// 현재 체크박스가 속한 행의 select 요소의 값과 선택된 값이 같은 경우 처리합니다.
if (currentValue === selectedValue) {
$(this).prop('checked', isChecked); // 클릭된 체크박스의 체크 상태에 따라 다른 체크박스의 체크를 변경합니다.
}
});
});
//첨부파일 팝업
$(".File").click(function(){
var popup_width = 800;
var popup_height = 240;
var objId = $(this).attr("data-OBJID");
var docType =$(this).attr("data-docType");
var docTypeName = $(this).attr("data-docTypeName");
var params = "?targetObjId="+objId+"&docType="+docType+"&docTypeName="+docTypeName;
var url = "/projectConcept/FileRegistPopup.do"+params;
var target = "";
fn_centerPopup(popup_width, popup_height, url, target);
});
// 삭제 버튼 클릭 이벤트
$('#clearButton').on('click', function(event) {
// 기본 동작 방지
event.preventDefault();
// 캔버스를 클리어합니다.
clearCanvas();
});
$(document).ready(function() {
$.ajax({
url: '/inventoryMng/materialRequestDetailPopUpsign.do',
type: 'POST',
data: $("#form1").serialize(),
dataType: 'json',
success: function(data) {
console.log(data);
// 모든 이미지 데이터를 반복하며 처리합니다.
for (var i = 0; i < data.length; i++) {
var item = data[i];
// 이미지 데이터가 존재하는 경우
if (item.SIGN) {
displayImage(item.SIGN, item.OBJID);
} else {
console.error('No image data found for OBJID:', item.OBJID);
}
}
},
error: function(jqxhr, status, error) {
console.error('Error:', error);
}
});
});
// $('input[type="checkbox"]').on('click', function() {
// // 체크박스가 선택된 경우
// if (this.checked) {
// // 체크박스의 value 속성에서 OBJID 값을 가져옵니다.
// var OBJID = this.value;
// // 서버에 데이터를 요청합니다.
// $.ajax({
// url: '/inventoryMng/materialRequestDetailPopUpsign.do',
// type: 'POST',
// data: { OBJID: OBJID },
// dataType: 'json', // 이미지 데이터이므로 json으로 처리합니다.
// success: function(data) {
// // 받은 데이터를 콘솔에 출력합니다.
// console.log(data);
// // 첫 번째 요소의 SIGN 속성을 가져와 캔버스에 그립니다.
// if (data.length > 0 && data[0].SIGN) {
// displayImage(data[0].SIGN, OBJID);
// } else {
// console.error('No image data found in the response.');
// }
// },
// error: function(jqxhr, status, error) {
// // 에러 처리
// console.error('Error:', error);
// }
// });
// }
// });
});
</script>
<script>
function displayImage(base64Data, OBJID) {
// 이미지 요소 생성
var img = new Image();
img.src = base64Data;
img.style.width = '100%';
img.style.height = '100%';
img.style.objectFit = 'contain'; // 이미지의 비율을 유지하면서 크기를 조절합니다.
// 이미지를 표시할 영역에 추가
var imageContainer = document.getElementById('imageContainer_' + OBJID);
imageContainer.appendChild(img);
}
function fn_signdelete() {
// 체크된 체크박스들을 가져옵니다.
var checkedObjs = $('input[name="chk_objId"]:checked');
if (checkedObjs.length > 0) {
if (confirm('선택한 사인를 초기화 하시겠습니까?')) {
$.ajax({
type: "POST",
url: "/inventoryMng/materialRequestDetailPopUpsigndelete.do",
data: $("#form1").serialize(), // 배열 형태의 데이터를 전송합니다.
dataType: "json",
success: function(data) {
if (data.result == 'true') {
alert("삭제되었습니다.");
fn_search();
};
},
error: function(jqxhr, status, error) {
// 에러 처리 코드를 추가할 수 있습니다.
}
});
}
} else {
alert("선택한 항목이 없습니다.");
}
}
function fn_save(){
if(fn_checkInputData()){
if(confirm("저장하시겠습니까?")){
$("input[name*='_QTY']").each(function(){
$(this).val($(this).val().replace(/,/gi,""));
});
$.ajax({
url:"/inventoryMng/saveInventoryTransfer.do"
,type:"POST"
,data: $("#form1").serialize()
,dataType:"json"
,async:false
,success:function(data){
alert(data.message);
opener.fn_search();
self.close();
}
,error: function(jqxhr, status, error){
}
});
}
}
}
function fn_signsave(event) {
event.preventDefault();
var checkedRows = $('input[type="checkbox"]:checked').not('[name="allCheck"]').not('[name="USER_CHECK"]');
if (checkedRows.length === 0) {
alert("지정된 열이 없습니다");
return false;
}
var selectedUsers = [];
checkedRows.each(function() {
var currentValue = $(this).closest('tr').find('select[name="ACQ_USER"]').val();
selectedUsers.push(currentValue);
});
var isSameUser = selectedUsers.every(function(value) {
return value === selectedUsers[0];
});
if (!isSameUser) {
alert("선택된 인수자가 동일하지 않습니다.");
return false;
}
if(confirm("해당 사인을 등록하시겠습니까?")){
$("input[name*='_QTY']").each(function(){
$(this).val($(this).val().replace(/,/gi,""));
});
var formData = checkedRows.closest('tr').find('input, select').serializeArray();
var formDataString = JSON.stringify(formData);
// 팝업 창의 너비와 높이
var width = 515;
var height = 600;
// 팝업 창이 표시될 위치 계산
var left = window.screenX + (window.innerWidth / 2) - (width / 2);
var top = window.screenY + (window.innerHeight / 2) - (height / 2);
// 데이터를 팝업 창에 전달
window.dataForPopup = formDataString;
var popupWindow = window.open('materialRequestSignPopUp.do', 'popupWindow', 'width=' + width + ',height=' + height + ',left=' + left + ',top=' + top);
// 팝업 창이 로드되면 데이터를 전달
popupWindow.onload = function() {
popupWindow.receiveData(formDataString);
}
}
}
function fn_deleteWBSTask2(){
var checkArr = new Array();
$("input[name=CHK_OBJID]:checked").each(function(){
var objId = fnc_checkNull($(this).val().replace(" ",""));
checkArr.push(objId);
});
if(0 < checkArr.length){
if(confirm("삭제하시겠습니까?")){
$.ajax({
type : "POST",
url:"/project/deleteWBSTask.do",
data: {"checkArr":checkArr.join()},
dataType:"json",
success:function(data){
Swal.fire(data.msg);
if(data.result =="true"){
fn_reload();
}
}
,error: function(jqxhr, status, error){
}
});
}
}else{
Swal.fire("선택된 대상이 없습니다.");
return false;
}
}
function deleteUpdate(){
//확정
// name을 가지는 checkbox 중 체크표시된 항목의 전체 개수
if($("input:checkbox[name=chk]:checked").length > 0){
// 현재 체크된 체크박스의 li 정보 얻기
var checkObjId = '';
$("input:checkbox[name=chk]:checked").each(function(index, val) {
if (this.checked)
{
if(index == 0 ){
checkObjId = $(this).attr("data-OBJID");
}else{
checkObjId += ','+$(this).attr("data-OBJID");
}
}
});
deleteProcess(checkObjId);
} else {
Swal.fire("삭제 항목을 선택해주세요.");
}
}
function completeProcess(checkObjId){
if(confirm("확정 하시겠습니까?")){
$.ajax({
url:"/project/completeWBSTask.do",
type:"POST",
data:{"ObjId":checkObjId},
dataType:"json",
success:function(data){
Swal.fire("확정 되었습니다.");
complete_load();
},
error: function(jqxhr, status, error){
}
});
}
}
function deleteProcess(checkObjId){
if(confirm("삭제 하시겠습니까?")){
$.ajax({
url:"/project/wbs/deleteWBSTask.do",
type:"POST",
data:{"ObjId":checkObjId},
dataType:"json",
success:function(data){
Swal.fire("삭제 되었습니다.");
complete_load();
},
error: function(jqxhr, status, error){
}
});
}
}
function fn_checkInputData(){
var returnFlag = true;
$("input[name=OBJID]").each(function(i) {
var targetObjId = $(this).val();
var REQUEST_QTY = $("#REQUEST_QTY_"+targetObjId).val()
var OUT_QTY = $("#OUT_QTY_"+targetObjId).val()
if(REQUEST_QTY < OUT_QTY){
Swal.fire("인계수량이 불출의뢰수량보다 큽니다.");
returnFlag = false;
return false;
}
if(OUT_QTY == '0'){
Swal.fire("인계수량이 0입니다.");
returnFlag = false;
return false;
}
});
return returnFlag;
}
function fn_excel() {
document.form1.actionType.value = "excel";
var form = document.form1;
form.action="/inventoryMng/materialRequestDetailPopUp.do";
form.submit();
}
//자재불출
function fn_accept() {
if(fnc_valitate("form1")){
if(fn_checkInputData()){
Swal.fire({
title: '불출하시겠습니까?',
text: '',
icon: 'warning',
showCancelButton: true, // cancel버튼 보이기. 기본은 원래 없음
confirmButtonColor: '#3085d6', // confrim 버튼 색깔 지정
cancelButtonColor: '#d33', // cancel 버튼 색깔 지정
confirmButtonText: '확인', // confirm 버튼 텍스트 지정
cancelButtonText: '취소', // cancel 버튼 텍스트 지정
reverseButtons: false, // 버튼 순서 거꾸로
}).then(result => {
// 만약 Promise리턴을 받으면,
if (result.isConfirmed) { // 만약 모달창에서 confirm 버튼을 눌렀다면
$("input[name*='_QTY']").each(function(){
$(this).val($(this).val().replace(/,/gi,""));
});
/* $.ajax({
url:"/inventoryMng/saveInventoryTransfer.do"
,type:"POST"
,data: $("#form1").serialize()
,dataType:"json"
,async:false
,success:function(data){
//alert(data.message);
//opener.fn_search();
//self.close();
}
,error: function(jqxhr, status, error){
}
}); */
$.ajax({
url:"/inventoryMng/acceptInventoryRequestInfo.do",
type:"POST",
data:$("#form1").serialize(),
dataType:"json",
success:function(data){
alert(data.message);
opener.fn_search();
self.close();
},
error: function(jqxhr, status, error){
}
});
}
});
}
}
}
function fn_Apply(){
var userCd = $("#USER_CD").val();
var userCheck =$("input[name='USER_CHECK']:checked").val();
//alert("userCd::"+userCd);
//alert("userCheck::"+userCheck);
$("input[name^='chk_objId']").each(function(index) {
var groupCheck = $(this).val();
if ($(this).is(":checked")) {
//alert("groupCheck:"+groupCheck);
if (userCheck == 'YES') {
$(".ACQ_USER_"+groupCheck).val(userCd).trigger("change");
}
}
});
}
</script>
</head>
<body>
<form name="hiddenForm" id="hiddenForm" method="post">
<!-- <input type="hidden" name="OBJID" id="OBJID"> -->
<input type="hidden" name="PARENT_OBJID" id="PARENT_OBJID" value="${param.OBJID}">
<input type="hidden" name="actionType" id="actionType">
</form>
<form name="form1" id="form1" action="" method="post">
<input type="hidden" name="INVENTORY_REQUEST_MASTER_OBJID" id="INVENTORY_REQUEST_MASTER_OBJID" value="${resultMap.OBJID}">
<input type="hidden" name="RECEPTION_STATUS" id="RECEPTION_STATUS" value="${param.RECEPTION_STATUS}">
<input type="hidden" name="OUTSTATUS" id="OUTSTATUS" value="${param.OUTSTATUS}">
<input type="hidden" name="projectObjId" value="${param.OBJID}">
<input type="hidden" name="parentObjId">
<input type="hidden" name="taskObjId">
<input type="hidden" name="projStep">
<input type="hidden" name="status">
<input type="hidden" name="actionType" id="actionType">
<input type="hidden" name="sign" id="sign" value="${param.SIGN}" >
<%-- <input type="hidden" name="OBJID" value="${param.OBJID}"> --%>
<div class="plm_menu_name">
</div>
<section class="contents_page_basic_margin" style="margin: 10px; height: 560px;">
<div>
<table class="pmsPopupForm" style="z-index:99; left-margin: 0; margin: 0;">
<colgroup>
<!-- <col width="5%">
<col width="6%"> -->
<col width="5%">
<col width="5%">
<col width="15%">
<col width="12%">
<col width="5%">
<col width="5%">
<col width="6%">
<col width="5%">
<col width="6%">
<col width="6%">
</colgroup>
<tr>
<%-- <td class="input_title"><label for="">프로젝트번호</label></td>
<td>${resultMap.PROJECT_NO}</td> --%>
<td colspan="1" class="input_title"><label for="">비고</label></td>
<td colspan="3" class="input_sub_title"><input type="text" name="REMARK" value="${resultMap.REMARK}"readonly/></td>
<td>
<c:if test="${param.RECEPTION_STATUS eq '접수' and param.OUTSTATUS ne '완료'}">
<button id="signsaveButton" style="position: relative;left: -27%;">사인 등록</button>
</c:if>
</td>
<td>
<%-- <c:if test="${param.RECEPTION_STATUS eq '접수' and param.OUTSTATUS ne '완료'}"> --%>
<!-- <button id="signdelButton" style="position: relative;left: -43%;">사인 초기화</button> -->
<%-- </c:if> --%>
</td>
<td></td>
<td></td>
<td class="input-1" style="display: flex;align-items: center;width: 120px;position: relative;top: 51%;left: 61%;" data-select2-id="64">
<span style="margin-top: -29%;margin-right: -30%;left: 36%;position: relative;">인수자</span>
<input type="checkbox" name="USER_CHECK" id="USER_CHECK" value="YES" / style=" margin-right: 5px; ">
<select name="USER_CD" id="USER_CD" style="width: 90px;margin-right:10px;" class="select2"><option value=''>선택</option>${code_map.user_id}</select>
</td>
<td>
<c:if test="${param.RECEPTION_STATUS eq '접수' and param.OUTSTATUS ne '완료'}">
<button id="btnApply" style="position: relative;left: 4%;">일괄적용</button>
</c:if>
</td>
</tr>
</table>
</div>
<div class="plm_table_wrap" style="height: auto;">
<div class="in_table_scroll_wrap _table1" style="height:26px; width: 98%;">
<table class="plm_table" style="position:absolute; border-Spacing:0; border-Collapse: separate; width: 99%;">
<colgroup>
<col width="20px;">
<col width="70px">
<col width="120px">
<col width="90px">
<col width="150px">
<col width="70px">
<col width="70px">
<col width="70px">
<col width="60px">
<col width="60px">
<col width="80px">
<col width="80px">
<col width="70px">
<col width="50px">
<col width="70px">
<col width="70px">
<col width="70px">
<col width="50px">
</colgroup>
<thead>
<tr class="plm_thead">
<td><input type="checkbox" id="allCheck" name="allCheck"></td>
<td>프로젝트번호</td>
<td>유닛명</td>
<td>품번</td>
<td>품명</td>
<td>재질</td>
<td>사양(규격)</td>
<td>MAKER</td>
<td>PART구분</td>
<td>수입검사자</td>
<td>Location</td>
<td>Sub_Location</td>
<td>불출의뢰수량</td>
<td class="editableHeader">인계수량</td>
<td class="editableHeader">인계일</td>
<td class="editableHeader">인계자</td>
<td class="editableHeader">인수자</td>
<td class="editableHeader">사인</td>
</tr>
</thead>
</table>
</div>
<div class="plm_scroll_table" style="height:430px;">
<table id="dataTable" class="plm_table" style="width:99.4%; ">
<colgroup>
<col width="20px">
<col width="70px">
<col width="120px">
<col width="90px">
<col width="150px">
<col width="70px">
<col width="70px">
<col width="70px">
<col width="60px">
<col width="60px">
<col width="80px">
<col width="80px">
<col width="70px">
<col width="50px">
<col width="70px">
<col width="70px">
<col width="70px">
<col width="50px">
</colgroup>
<tbody class="font_white">
<c:choose>
<c:when test="${empty inventoryMngList}">
<tr style="text-align:center;">
<td align="center" colspan="15">조회된 데이터가 없습니다.</td>
</tr>
</c:when>
<c:otherwise>
<c:forEach var="item" items="${inventoryMngList}" varStatus="varStatus">
<tr>
<input type="hidden" name="OBJID" value="${item.OBJID }" />
<input type="hidden" name="IN_OBJID" value="${item.IN_OBJID }" />
<td><input style="width: 15px; height: 15px" type="checkbox" value="${item.OBJID }" name="chk_objId" id="chk_objId"></td>
<td title="${item.PART_NO}" class="align_l">${item.PROJECT_NO}</td>
<td title="${item.PART_NO}" class="align_l">${item.UNIT_NAME}</td>
<td title="${item.PART_NO}" class="align_l">${item.PART_NO}</td>
<td title="${item.PART_NAME}"class="align_l">${item.PART_NAME}</td>
<td title="${item.MATERIAL}"class="align_l">${item.MATERIAL}</td>
<td title="${item.SPEC}"class="align_l">${item.SPEC}</td>
<td title="${item.MAKER}"class="align_l">${item.MAKER}</td>
<td title="${item.PART_TYPE_NAME}">${item.PART_TYPE_NAME}</td>
<td title="${item.RECEIVER_NAME}">${item.RECEIVER_NAME}</td>
<td title="${item.LOCATION_NAME }">${item.LOCATION_NAME}</td>
<td title="${item.SUB_LOCATION_NAME }">${item.SUB_LOCATION_NAME}</td>
<td title="${item.REQUEST_QTY}"><input type="text" name="REQUEST_QTY" id="REQUEST_QTY_${item.OBJID}" value="<fmt:formatNumber value="${item.REQUEST_QTY}" pattern="#,###" />" numberOnly readonly<%-- onchange="fn_calc('${item.OBJID}');" --%>/></td>
<td title="${item.OUT_QTY}">
<c:choose>
<c:when test="${item.OUT_QTY eq null}">
<input type="text" name="OUT_QTY" id="OUT_QTY_${item.OBJID}" value="<fmt:formatNumber value="${item.REQUEST_QTY}" pattern="#,###" />" numberOnly/>
</c:when>
<c:otherwise>
<input type="text" name="OUT_QTY" id="OUT_QTY_${item.OBJID}" value="<fmt:formatNumber value="${item.OUT_QTY}" pattern="#,###" />" numberOnly/>
</c:otherwise>
</c:choose>
</td>
<td title="${item.OUT_DATE}">
<c:choose>
<c:when test="${item.OUT_DATE eq null}">
<input type="text" name="OUT_DATE" class="date" value="<fmt:formatDate value="${now}" pattern="yyyy-MM-dd" />"/>
</c:when>
<c:otherwise>
<input type="text" name="OUT_DATE" class="date" value="${item.OUT_DATE}"/>
</c:otherwise>
</c:choose>
</td>
<td title="${item.WRITER}"><input type="text" name="WRITER" class="WRITER" value="${item.WRITER }" /></td>
<td title="${item.ACQ_USER}">
<select name="ACQ_USER" required reqTitle="인수자" data-select="${item.ACQ_USER}" type="select" class="select2 ACQ_USER_${item.OBJID}" autocomplete="off" >
<option value="">선택</option>
${code_map.user_id}
</select>
</td>
<td>
<div id="imageContainer_${item.OBJID}" style="height: 25px; width: 52px;"></div>
</td>
</tr>
</c:forEach>
</c:otherwise>
</c:choose>
</tbody>
</table>
</div>
</div>
</section>
<div class="btn_wrap" style="top:40px">
<div class="plm_btn_wrap_center">
<c:if test="${param.RECEPTION_STATUS eq '접수' and param.OUTSTATUS ne '완료'}">
<input type="button" value="저장" id="btnSave" class="plm_btns">
<input type="button" value="자재불출" class="plm_btns" id="btnAccept">
</c:if>
<input type="button" value="닫기" id="btnClose" class="plm_btns">
<input type="button" value="Excel Download" class="plm_btns" id="btnExcel">
</div>
</div>
</form>
</body>
</html>