Files
wace_plm/WebContent/WEB-INF/view/quality/incomingInspectionRequestPopUp.jsp

266 lines
7.5 KiB
Plaintext

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<%@ 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" %>
<%
PersonBean person = (PersonBean) session.getAttribute(Constants.PERSON_BEAN);
String connector = person.getUserId();
String connectorName = person.getUserName();
%>
<c:set var="now" value="<%=new java.util.Date()%>" />
<c:set var="today"><fmt:formatDate value="${now}" pattern="yyyy-MM-dd" /></c:set>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title><%=Constants.SYSTEM_NAME%></title>
</head>
<style>
</style>
<script type="text/javascript">
var _editable = true;
var grid;
// 요청자 목록
var _REQUEST_USER_LIST = [];
// 로그인 사용자 정보
var _LOGIN_USER_ID = "<%=connector%>";
var _LOGIN_USER_NAME = "<%=connectorName%>";
var _TODAY = "${today}";
$(document).ready(function(){
fnc_datepick();
$('.select2').select2();
// 요청자 목록 조회
_REQUEST_USER_LIST = [{"CODE": "", "NAME": "선택"}].concat(
fnc_getJsonAllDataListBySqlId({"sqlId": "common.getUserselect"})
);
// 저장 버튼
$("#btnSave").click(function(){
fn_save();
});
// 닫기 버튼
$("#btnClose").click(function(){
self.close();
});
// 초기화 버튼
$("#btnReset").click(function(){
fn_reset();
});
// 엑셀 다운로드 버튼
$("#btnExcel").click(function(){
fn_excelDownload();
});
// 그리드 초기화 및 조회
fn_search();
});
// 편집 가능 여부 체크
function editCheck(cell) {
return _editable;
}
// 품목상세 팝업
function fn_openPartDetailPopUp(partObjId) {
if (!partObjId) return;
var popup_width = 1200;
var popup_height = 900;
var url = "/partMng/partMngDetailPopUp.do?OBJID=" + partObjId;
window.open(url, "partMngDetailPopUp", "width=" + popup_width + ",height=" + popup_height + ",scrollbars=yes,resizable=yes");
}
function fn_search() {
var columns = [
{title:'품번', field:'PART_NO', headerHozAlign:'center', hozAlign:'left', width:300, editor:false,
formatter: fnc_createGridAnchorTag,
cellClick: function(e, cell) {
fn_openPartDetailPopUp(cell.getData().PART_OBJID);
}
},
{title:'품명', field:'PART_NAME', headerHozAlign:'center', hozAlign:'left', width:300, editor:false},
{title:'입고일', field:'DELIVERY_DATE', headerHozAlign:'center', hozAlign:'center', width:110, editor:false},
{title:'입고수량', field:'DELIVERY_QTY', headerHozAlign:'center', hozAlign:'right', width:110, editor:false,
formatter:"money", formatterParams:{thousand:",", precision:false}
},
{title:'검사여부', field:'INSPECTION_YN', headerHozAlign:'center', hozAlign:'center', width:110,
editor:"select",
editorParams:{values:{"검사":"검사", "스킵":"스킵"}}
},
{title:'요청일', field:'REQUEST_DATE', headerHozAlign:'center', hozAlign:'center', width:110,
editor:"input",
editable: editCheck
},
{title:'요청자', field:'REQUEST_USER_ID', headerHozAlign:'center', hozAlign:'center', width:110,
editor: fnc_customSelectEditor,
formatter: function(cell) {
return fnc_customSelectFormatter(cell, {valueId:"CODE", labelId:"NAME", values:_REQUEST_USER_LIST});
},
editorParams: {valueId:"CODE", labelId:"NAME", values:_REQUEST_USER_LIST},
editable: editCheck
}
];
var param = {
PURCHASE_ORDER_MASTER_OBJID: "${param.OBJID}"
};
// 그리드 조회
grid = fnc_tabul_search(_tabul_layout_fitDataStretch, grid, "/quality/incomingInspectionDetailGridList.do", columns, false, false, true, param);
// 데이터 로드 완료 후 기본값 설정
setTimeout(function(){
fn_setDefaultValues();
}, 300);
}
// 기본값 설정 (요청일: 오늘, 요청자: 로그인 사용자)
function fn_setDefaultValues() {
if(!grid) return;
var rows = grid.getRows();
for(var i = 0; i < rows.length; i++){
var row = rows[i];
var data = row.getData();
var updateObj = {};
var needUpdate = false;
// 요청일이 비어있으면 오늘 날짜로 설정
if(!data.REQUEST_DATE || data.REQUEST_DATE == '' || data.REQUEST_DATE == null){
updateObj.REQUEST_DATE = _TODAY;
needUpdate = true;
}
// 요청자가 비어있으면 로그인 사용자로 설정
if(!data.REQUEST_USER_ID || data.REQUEST_USER_ID == '' || data.REQUEST_USER_ID == null){
updateObj.REQUEST_USER_ID = _LOGIN_USER_ID;
needUpdate = true;
}
if(needUpdate){
row.update(updateObj);
}
}
}
// 초기화 - 모든 행에 오늘 날짜, 로그인 사용자 설정
function fn_reset() {
if(!grid) return;
var rows = grid.getRows();
for(var i = 0; i < rows.length; i++){
var row = rows[i];
row.update({
REQUEST_DATE: _TODAY,
REQUEST_USER_ID: _LOGIN_USER_ID
});
}
}
// 엑셀 다운로드
function fn_excelDownload() {
grid.download("xlsx", "수입검사요청_" + fnc_getToday() + ".xlsx");
}
// 저장
function fn_save() {
var gridData = grid.getData();
if(gridData.length == 0){
Swal.fire("요청할 항목이 없습니다.");
return;
}
// 유효성 검사: 검사여부가 선택된 항목은 요청일, 요청자 필수
var hasError = false;
for(var i = 0; i < gridData.length; i++){
var row = gridData[i];
if(row.INSPECTION_YN && row.INSPECTION_YN != ''){
if(!row.REQUEST_DATE || row.REQUEST_DATE == ''){
Swal.fire((i+1) + "번째 행의 요청일을 입력해주세요.");
hasError = true;
break;
}
if(!row.REQUEST_USER_ID || row.REQUEST_USER_ID == ''){
Swal.fire((i+1) + "번째 행의 요청자를 선택해주세요.");
hasError = true;
break;
}
}
}
if(hasError) return;
Swal.fire({
title: '저장 확인',
text: '수입검사 요청 내용을 저장하시겠습니까?',
icon: 'question',
showCancelButton: true,
confirmButtonColor: '#3085d6',
cancelButtonColor: '#d33',
confirmButtonText: '저장',
cancelButtonText: '취소'
}).then((result) => {
if (result.isConfirmed) {
var param = $("#form1").serializeObject();
param.dataListJson = JSON.stringify(gridData);
$.ajax({
url: "/quality/saveIncomingInspection.do",
type: "POST",
data: param,
dataType: "json",
success: function(data) {
Swal.fire({
title: data.result ? '저장 완료' : '저장 실패',
text: data.msg,
icon: data.result ? 'success' : 'error'
}).then(() => {
if(data.result){
opener.fn_search();
self.close();
}
});
},
error: function(xhr, status, error) {
Swal.fire('서버 오류가 발생했습니다.');
}
});
}
});
}
// 팝업 닫힐 때 부모 새로고침
window.addEventListener('unload', function() {
if(window.opener && window.opener.fn_search) {
window.opener.fn_search();
}
});
</script>
<body style="overflow-x: hidden;">
<form name="form1" id="form1" action="" method="post" onsubmit="return false">
<input type="hidden" name="PURCHASE_ORDER_MASTER_OBJID" id="PURCHASE_ORDER_MASTER_OBJID" value="${param.OBJID}">
<div class="plm_menu_name_gdnsi">
<h2><span>수입검사 요청</span></h2>
<div class="btnArea">
<input type="button" value="저장" class="plm_btns" id="btnSave">
<input type="button" value="닫기" class="plm_btns" id="btnClose">
<input type="button" value="초기화" class="plm_btns" id="btnReset">
<input type="button" value="Excel Download" class="plm_btns excel" id="btnExcel">
</div>
</div>
<%@include file= "/WEB-INF/view/common/common_gridArea.jsp" %>
</form>
</body>
</html>