품질관리_수입검사관리 거의 완성
This commit is contained in:
@@ -80,13 +80,10 @@ $(document).ready(function(){
|
||||
var columns = [
|
||||
// 요구사항: 품의서 No, 발주서 No, 프로젝트번호, 품번, 품명, 공급업체, 발주수량, 입고수량, 미입고수량, 검사성적서, 입고결과
|
||||
{headerHozAlign : 'center', hozAlign : 'center', minWidth : 130, widthGrow : 1, title : '품의서 No', field : 'PROPOSAL_NO',
|
||||
formatter:fnc_createGridAnchorTag,
|
||||
cellClick:function(e, cell){
|
||||
var proposalObjId = fnc_checkNull(cell.getData().PROPOSAL_OBJID);
|
||||
if(proposalObjId != ''){
|
||||
fn_openProposalPopUp(proposalObjId);
|
||||
}
|
||||
}
|
||||
formatter: fnc_createGridAnchorTag,
|
||||
cellClick : function(e, cell) {
|
||||
fn_openProposalFormPopUp(cell.getData().SALES_REQUEST_OBJID);
|
||||
}
|
||||
},
|
||||
{headerHozAlign : 'center', hozAlign : 'center', minWidth : 130, widthGrow : 1, title : '발주서 No', field : 'PURCHASE_ORDER_NO',
|
||||
formatter:fnc_createGridAnchorTag,
|
||||
@@ -214,6 +211,12 @@ function fn_deliveryAcceptanceViewPopUp(objId,DELIVERY_STATUS){
|
||||
hiddenForm.submit();
|
||||
}
|
||||
|
||||
// 품의서 상세 팝업
|
||||
function fn_openProposalFormPopUp(objId){
|
||||
var url = "/salesMng/proposalFormPopUp.do?PROPOSAL_OBJID=" + fnc_checkNull(objId);
|
||||
window.open(url, "proposalFormPopUp", "width=1200,height=900,scrollbars=yes,resizable=yes");
|
||||
}
|
||||
|
||||
//부적합등록
|
||||
function fn_deliveryInvaildPopUp(){
|
||||
|
||||
@@ -324,7 +327,7 @@ function fn_openInspectionFilePopUp(objId){
|
||||
<%-- <input type="button" class="plm_btns" value="부적합등록" id="btnInvaild"> --%>
|
||||
</div>
|
||||
</div>
|
||||
<%-- 검색필터 주석처리
|
||||
|
||||
<div id="plmSearchZon">
|
||||
<table>
|
||||
<tr>
|
||||
@@ -394,7 +397,6 @@ function fn_openInspectionFilePopUp(objId){
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
--%>
|
||||
|
||||
<%@include file= "/WEB-INF/view/common/common_gridArea.jsp" %>
|
||||
</div>
|
||||
|
||||
@@ -812,7 +812,6 @@ function fn_openMailFormPopup(purchaseOrderObjId){
|
||||
|
||||
</div>
|
||||
|
||||
<%-- 검색필터 주석처리
|
||||
<div id="plmSearchZon">
|
||||
<table class="">
|
||||
|
||||
@@ -875,12 +874,9 @@ function fn_openMailFormPopup(purchaseOrderObjId){
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
--%>
|
||||
|
||||
<%-- 총발주금액 주석처리
|
||||
<div style="width:50%;float:left; color: RED;" class="purchaseOrderSum">
|
||||
</div>
|
||||
--%>
|
||||
|
||||
<%@include file= "/WEB-INF/view/common/common_gridArea.jsp" %>
|
||||
</div>
|
||||
|
||||
@@ -1,8 +1,15 @@
|
||||
<%@ 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();
|
||||
%>
|
||||
<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>
|
||||
@@ -11,62 +18,64 @@
|
||||
</head>
|
||||
|
||||
<style>
|
||||
.form-table {
|
||||
width: 100%;
|
||||
border-collapse: collapse;
|
||||
.form-header {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 20px;
|
||||
padding: 10px 15px;
|
||||
background: #f8f9fa;
|
||||
border-bottom: 1px solid #ddd;
|
||||
}
|
||||
.form-table th, .form-table td {
|
||||
border: 1px solid #ddd;
|
||||
padding: 10px;
|
||||
}
|
||||
.form-table th {
|
||||
background: #f5f5f5;
|
||||
text-align: left;
|
||||
width: 150px;
|
||||
.form-header label {
|
||||
font-weight: bold;
|
||||
margin-right: 5px;
|
||||
}
|
||||
.form-table td input[type="text"],
|
||||
.form-table td select,
|
||||
.form-table td textarea {
|
||||
width: 100%;
|
||||
padding: 8px;
|
||||
.form-header .required {
|
||||
color: red;
|
||||
}
|
||||
.form-header input, .form-header select {
|
||||
padding: 5px 10px;
|
||||
border: 1px solid #ccc;
|
||||
border-radius: 3px;
|
||||
box-sizing: border-box;
|
||||
}
|
||||
.form-table td textarea {
|
||||
min-height: 100px;
|
||||
resize: vertical;
|
||||
}
|
||||
.btn-wrap {
|
||||
text-align: center;
|
||||
margin-top: 20px;
|
||||
padding: 15px;
|
||||
}
|
||||
.btn-wrap button {
|
||||
padding: 10px 30px;
|
||||
margin: 0 5px;
|
||||
border: none;
|
||||
border-radius: 3px;
|
||||
cursor: pointer;
|
||||
font-size: 14px;
|
||||
}
|
||||
.btn-save {
|
||||
background: #3c8dbc;
|
||||
color: #fff;
|
||||
}
|
||||
.btn-close {
|
||||
background: #6c757d;
|
||||
color: #fff;
|
||||
}
|
||||
.required {
|
||||
color: red;
|
||||
}
|
||||
</style>
|
||||
|
||||
<script type="text/javascript">
|
||||
var _editable = true;
|
||||
var grid;
|
||||
var modifiedRows = [];
|
||||
|
||||
// 불량유형 목록 (0001820)
|
||||
var _DEFECT_TYPE_LIST = [];
|
||||
// 불량원인 목록 (불량유형의 하위코드)
|
||||
var _DEFECT_REASON_LIST = [];
|
||||
// 처리현황 목록
|
||||
var _ACTION_STATUS_LIST = [
|
||||
{"CODE": "", "NAME": "선택"},
|
||||
{"CODE": "Rework", "NAME": "Rework"},
|
||||
{"CODE": "Scrap", "NAME": "Scrap"}
|
||||
];
|
||||
// 검사자 목록
|
||||
var _INSPECTOR_LIST = [];
|
||||
|
||||
$(document).ready(function(){
|
||||
fnc_datepick();
|
||||
$('.select2').select2();
|
||||
|
||||
// 불량유형 목록 조회
|
||||
_DEFECT_TYPE_LIST = [{"CODE": "", "NAME": "선택"}].concat(
|
||||
fnc_getJsonAllDataListBySqlId({"sqlId": "common.getCodeselect", "code": "0001820"})
|
||||
);
|
||||
|
||||
// 검사자 목록 조회
|
||||
_INSPECTOR_LIST = [{"CODE": "", "NAME": "선택"}].concat(
|
||||
fnc_getJsonAllDataListBySqlId({"sqlId": "common.getUserselect"})
|
||||
);
|
||||
|
||||
// 오늘 날짜 기본 설정
|
||||
if($("#INSPECTION_DATE").val() == ''){
|
||||
$("#INSPECTION_DATE").val("${today}");
|
||||
}
|
||||
|
||||
// 저장 버튼
|
||||
$("#btnSave").click(function(){
|
||||
@@ -77,111 +86,298 @@ $(document).ready(function(){
|
||||
$("#btnClose").click(function(){
|
||||
self.close();
|
||||
});
|
||||
|
||||
// 그리드 초기화 및 조회
|
||||
fn_search();
|
||||
|
||||
// 셀 편집 이벤트
|
||||
grid.on("cellEdited", function(cell) {
|
||||
var row = cell.getRow();
|
||||
var rowData = row.getData();
|
||||
|
||||
// 불량유형 변경 시 불량원인 목록 갱신
|
||||
if (cell.getField() === 'DEFECT_TYPE') {
|
||||
row.update({"DEFECT_REASON": ""}); // 불량원인 초기화
|
||||
}
|
||||
|
||||
// 검사여부 변경 시 처리
|
||||
if (cell.getField() === 'INSPECTION_YN') {
|
||||
if (cell.getValue() === '스킵') {
|
||||
// 스킵인 경우 불량 관련 필드 초기화
|
||||
row.update({
|
||||
"DEFECT_TYPE": "",
|
||||
"DEFECT_REASON": "",
|
||||
"ACTION_STATUS": "",
|
||||
"INSPECTION_QTY": "",
|
||||
"DEFECT_QTY": "",
|
||||
"DEFECT_RATE": ""
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
// 검사수량, 불량수량 변경 시 불량율 자동 계산
|
||||
if (cell.getField() === 'INSPECTION_QTY' || cell.getField() === 'DEFECT_QTY') {
|
||||
fn_calcDefectRate(row);
|
||||
}
|
||||
|
||||
// 검사결과 자동 설정 (불량수량 > 0이면 NG, 아니면 OK)
|
||||
if (cell.getField() === 'DEFECT_QTY') {
|
||||
var defectQty = parseInt(rowData.DEFECT_QTY) || 0;
|
||||
if (defectQty > 0) {
|
||||
row.update({"INSPECTION_RESULT": "NG"});
|
||||
} else {
|
||||
row.update({"INSPECTION_RESULT": "OK"});
|
||||
}
|
||||
}
|
||||
|
||||
rowData.GRID_STATUS = 'U';
|
||||
});
|
||||
});
|
||||
|
||||
function fn_save(){
|
||||
// 유효성 검사
|
||||
if($("#INSPECTOR_ID").val() == ''){
|
||||
Swal.fire("검사자를 선택해주세요.");
|
||||
$("#INSPECTOR_ID").focus();
|
||||
return;
|
||||
// 불량율 계산
|
||||
function fn_calcDefectRate(row) {
|
||||
var data = row.getData();
|
||||
var inspectionQty = parseInt(data.INSPECTION_QTY) || 0;
|
||||
var defectQty = parseInt(data.DEFECT_QTY) || 0;
|
||||
|
||||
if (inspectionQty > 0) {
|
||||
var rate = (defectQty / inspectionQty * 100).toFixed(2);
|
||||
row.update({"DEFECT_RATE": rate});
|
||||
} else {
|
||||
row.update({"DEFECT_RATE": ""});
|
||||
}
|
||||
}
|
||||
|
||||
// 편집 가능 여부 체크
|
||||
function editCheck(cell) {
|
||||
return _editable;
|
||||
}
|
||||
|
||||
// 검사여부가 '검사'인 경우만 편집 가능
|
||||
function editCheckInspection(cell) {
|
||||
var rowData = cell.getRow().getData();
|
||||
return rowData.INSPECTION_YN === '검사';
|
||||
}
|
||||
|
||||
function fn_search() {
|
||||
var columns = [
|
||||
//{formatter:"rowSelection", titleFormatter:"rowSelection", hozAlign:"center", headerSort:false, width:30},
|
||||
{title:'품번', field:'PART_NO', headerHozAlign:'center', hozAlign:'left', width:180, editor:false},
|
||||
{title:'품명', field:'PART_NAME', headerHozAlign:'center', hozAlign:'left', width:180, editor:false},
|
||||
{title:'입고일', field:'DELIVERY_DATE', headerHozAlign:'center', hozAlign:'center', width:100, editor:false},
|
||||
{title:'입고수량', field:'DELIVERY_QTY', headerHozAlign:'center', hozAlign:'right', width:80, editor:false,
|
||||
formatter:"money", formatterParams:{thousand:",", precision:false}
|
||||
},
|
||||
{title:'검사성적서', field:'INSPECTION_FILE', headerHozAlign:'center', hozAlign:'center', width:90, editor:false},
|
||||
{title:'검사구분', field:'INSPECTION_TYPE', headerHozAlign:'center', hozAlign:'center', width:80,
|
||||
editor:"select",
|
||||
editorParams:{values:{"원자재":"원자재", "외주가공":"외주가공"}}
|
||||
},
|
||||
{title:'검사여부', field:'INSPECTION_YN', headerHozAlign:'center', hozAlign:'center', width:80,
|
||||
editor:"select",
|
||||
editorParams:{values:{"검사":"검사", "스킵":"스킵"}},
|
||||
cellEdited: function(cell) {
|
||||
// 스킵 선택 시 검사결과 자동 OK
|
||||
if (cell.getValue() === '스킵') {
|
||||
cell.getRow().update({"INSPECTION_RESULT": "OK"});
|
||||
}
|
||||
}
|
||||
},
|
||||
{title:'불량유형', field:'DEFECT_TYPE', headerHozAlign:'center', hozAlign:'center', width:100,
|
||||
editor: fnc_customSelectEditor,
|
||||
formatter: function(cell) {
|
||||
if (cell.getData().INSPECTION_YN === '스킵') return '-';
|
||||
return fnc_customSelectFormatter(cell, {valueId:"CODE", labelId:"NAME", values:_DEFECT_TYPE_LIST});
|
||||
},
|
||||
editorParams: {valueId:"CODE", labelId:"NAME", values:_DEFECT_TYPE_LIST},
|
||||
editable: editCheckInspection
|
||||
},
|
||||
{title:'불량원인', field:'DEFECT_REASON', headerHozAlign:'center', hozAlign:'center', width:100,
|
||||
editor: fnc_customSelectEditor,
|
||||
formatter: function(cell) {
|
||||
if (cell.getData().INSPECTION_YN === '스킵') return '-';
|
||||
var defectType = cell.getData().DEFECT_TYPE;
|
||||
if (defectType) {
|
||||
var reasonList = [{"CODE": "", "NAME": "선택"}].concat(
|
||||
fnc_getJsonAllDataListBySqlId({"sqlId": "common.getCodeselect", "code": defectType})
|
||||
);
|
||||
return fnc_customSelectFormatter(cell, {valueId:"CODE", labelId:"NAME", values: reasonList});
|
||||
}
|
||||
return fnc_customSelectFormatter(cell, {valueId:"CODE", labelId:"NAME", values: [{"CODE": "", "NAME": "선택"}]});
|
||||
},
|
||||
editorParams: function(cell) {
|
||||
var defectType = cell.getData().DEFECT_TYPE;
|
||||
if (defectType) {
|
||||
var reasonList = [{"CODE": "", "NAME": "선택"}].concat(
|
||||
fnc_getJsonAllDataListBySqlId({"sqlId": "common.getCodeselect", "code": defectType})
|
||||
);
|
||||
return {valueId:"CODE", labelId:"NAME", values: reasonList};
|
||||
}
|
||||
return {valueId:"CODE", labelId:"NAME", values: [{"CODE": "", "NAME": "선택"}]};
|
||||
},
|
||||
editable: editCheckInspection
|
||||
},
|
||||
{title:'처리현황', field:'ACTION_STATUS', headerHozAlign:'center', hozAlign:'center', width:80,
|
||||
editor: fnc_customSelectEditor,
|
||||
formatter: function(cell) {
|
||||
if (cell.getData().INSPECTION_YN === '스킵') return '-';
|
||||
return fnc_customSelectFormatter(cell, {valueId:"CODE", labelId:"NAME", values:_ACTION_STATUS_LIST});
|
||||
},
|
||||
editorParams: {valueId:"CODE", labelId:"NAME", values:_ACTION_STATUS_LIST},
|
||||
editable: editCheckInspection
|
||||
},
|
||||
{title:'검사수량', field:'INSPECTION_QTY', headerHozAlign:'center', hozAlign:'right', width:80,
|
||||
editor:"input", editable: editCheckInspection,
|
||||
formatter: function(cell) {
|
||||
if (cell.getData().INSPECTION_YN === '스킵') return '-';
|
||||
return cell.getValue();
|
||||
}
|
||||
},
|
||||
{title:'불량수량', field:'DEFECT_QTY', headerHozAlign:'center', hozAlign:'right', width:80,
|
||||
editor:"input", editable: editCheckInspection,
|
||||
formatter: function(cell) {
|
||||
if (cell.getData().INSPECTION_YN === '스킵') return '-';
|
||||
return cell.getValue();
|
||||
}
|
||||
},
|
||||
{title:'불량율', field:'DEFECT_RATE', headerHozAlign:'center', hozAlign:'right', width:70, editor:false,
|
||||
formatter: function(cell) {
|
||||
if (cell.getData().INSPECTION_YN === '스킵') return '-';
|
||||
var val = cell.getValue();
|
||||
if (val) return val + '%';
|
||||
return '';
|
||||
}
|
||||
},
|
||||
{title:'검사결과', field:'INSPECTION_RESULT', headerHozAlign:'center', hozAlign:'center', width:80,
|
||||
editor:"select",
|
||||
editorParams:{values:{"OK":"OK", "NG":"NG"}},
|
||||
editable: editCheckInspection,
|
||||
formatter: function(cell) {
|
||||
if (cell.getData().INSPECTION_YN === '스킵') return '-';
|
||||
var val = cell.getValue();
|
||||
if (val === 'OK') return '<span style="color:#28a745;font-weight:bold;">OK</span>';
|
||||
if (val === 'NG') return '<span style="color:#dc3545;font-weight:bold;">NG</span>';
|
||||
return val;
|
||||
}
|
||||
},
|
||||
{title:'첨부파일', field:'ATTACH_FILE_CNT', headerHozAlign:'center', hozAlign:'center', width:80,
|
||||
formatter: fnc_subInfoValueFormatter,
|
||||
cellClick: function(e, cell) {
|
||||
var objid = fnc_checkNull(cell.getData().OBJID);
|
||||
fn_openFilePopup(objid);
|
||||
}
|
||||
},
|
||||
{title:'비고', field:'REMARK', headerHozAlign:'center', hozAlign:'left', width:150,
|
||||
editor:"input", 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);
|
||||
}
|
||||
|
||||
// 파일 첨부 팝업
|
||||
function fn_openFilePopup(objId) {
|
||||
var url = "/projectConcept/FileRegistPopup.do?docType=INCOMING_INSPECTION&targetObjId=" + objId + "&docTypeName=수입검사첨부";
|
||||
window.open(url, "filePopup", "width=700,height=500,scrollbars=yes,resizable=yes");
|
||||
}
|
||||
|
||||
// 저장
|
||||
function fn_save() {
|
||||
// 유효성 검사
|
||||
if($("#INSPECTION_DATE").val() == ''){
|
||||
Swal.fire("검사일을 입력해주세요.");
|
||||
$("#INSPECTION_DATE").focus();
|
||||
return;
|
||||
}
|
||||
if($("#INSPECTION_RESULT").val() == ''){
|
||||
Swal.fire("검사결과를 선택해주세요.");
|
||||
$("#INSPECTION_RESULT").focus();
|
||||
if($("#INSPECTOR_ID").val() == ''){
|
||||
Swal.fire("검사자를 선택해주세요.");
|
||||
$("#INSPECTOR_ID").focus();
|
||||
return;
|
||||
}
|
||||
|
||||
if(confirm("저장하시겠습니까?")){
|
||||
$.ajax({
|
||||
url: "/quality/saveIncomingInspection.do",
|
||||
type: "POST",
|
||||
data: $("#form1").serialize(),
|
||||
dataType: "json",
|
||||
success: function(data){
|
||||
Swal.fire(data.msg);
|
||||
if(data.result){
|
||||
opener.fn_search();
|
||||
self.close();
|
||||
}
|
||||
},
|
||||
error: function(xhr, status, error){
|
||||
Swal.fire("저장 중 오류가 발생했습니다.");
|
||||
}
|
||||
});
|
||||
var gridData = grid.getData();
|
||||
if(gridData.length == 0){
|
||||
Swal.fire("검사할 항목이 없습니다.");
|
||||
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>
|
||||
<form name="form1" id="form1" method="post">
|
||||
<input type="hidden" name="OBJID" id="OBJID" value="${info.OBJID}">
|
||||
<input type="hidden" name="PURCHASE_ORDER_MASTER_OBJID" id="PURCHASE_ORDER_MASTER_OBJID" value="${param.OBJID}">
|
||||
|
||||
<section>
|
||||
<div class="businessPopup">
|
||||
<div class="businessPopupTitle">
|
||||
<h2>수입검사 등록</h2>
|
||||
</div>
|
||||
|
||||
<div style="padding: 20px;">
|
||||
<table class="form-table">
|
||||
<colgroup>
|
||||
<col width="150px">
|
||||
<col width="*">
|
||||
<col width="150px">
|
||||
<col width="*">
|
||||
</colgroup>
|
||||
<tbody>
|
||||
<tr>
|
||||
<th>발주서 No</th>
|
||||
<td>${param.PURCHASE_ORDER_NO}</td>
|
||||
<th>검사자 <span class="required">*</span></th>
|
||||
<td>
|
||||
<select name="INSPECTOR_ID" id="INSPECTOR_ID">
|
||||
<option value="">선택</option>
|
||||
<c:forEach var="item" items="${userList}">
|
||||
<option value="${item.USER_ID}" <c:if test="${info.INSPECTOR_ID == item.USER_ID}">selected</c:if>>${item.USER_NAME}</option>
|
||||
</c:forEach>
|
||||
</select>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>검사일 <span class="required">*</span></th>
|
||||
<td>
|
||||
<input type="text" name="INSPECTION_DATE" id="INSPECTION_DATE" class="datepicker" value="${info.INSPECTION_DATE}">
|
||||
</td>
|
||||
<th>검사결과 <span class="required">*</span></th>
|
||||
<td>
|
||||
<select name="INSPECTION_RESULT" id="INSPECTION_RESULT">
|
||||
<option value="">선택</option>
|
||||
<option value="OK" <c:if test="${info.INSPECTION_RESULT == 'OK'}">selected</c:if>>OK</option>
|
||||
<option value="NG" <c:if test="${info.INSPECTION_RESULT == 'NG'}">selected</c:if>>NG</option>
|
||||
</select>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>검사 메모</th>
|
||||
<td colspan="3">
|
||||
<textarea name="INSPECTION_MEMO" id="INSPECTION_MEMO">${info.INSPECTION_MEMO}</textarea>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
<div class="btn-wrap">
|
||||
<button type="button" id="btnSave" class="btn-save">저장</button>
|
||||
<button type="button" id="btnClose" class="btn-close">닫기</button>
|
||||
</div>
|
||||
<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">
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
</form>
|
||||
|
||||
<div class="form-header">
|
||||
<div>
|
||||
<label>검사일<span class="required">*</span></label>
|
||||
<input type="text" name="INSPECTION_DATE" id="INSPECTION_DATE" class="date_icon" style="width:120px;" value="${info.INSPECTION_DATE}">
|
||||
</div>
|
||||
<div>
|
||||
<label>검사자<span class="required">*</span></label>
|
||||
<select name="INSPECTOR_ID" id="INSPECTOR_ID" class="select2" style="width:150px;">
|
||||
<option value="">선택</option>
|
||||
${code_map.inspector_id}
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<%@include file= "/WEB-INF/view/common/common_gridArea.jsp" %>
|
||||
</form>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
|
||||
@@ -43,11 +43,6 @@ String menuName = CommonUtils.getMenuName(menuObjId, "수입검사 관리");
|
||||
.inspection-ng { color: #dc3545; font-weight: bold; cursor: pointer; }
|
||||
.inspection-ok { color: #28a745; font-weight: bold; cursor: pointer; }
|
||||
.inspection-ng:hover, .inspection-ok:hover { text-decoration: underline; }
|
||||
|
||||
/* 검색필터 아이템 스타일 */
|
||||
.search-item { display: flex; align-items: center; gap: 5px; }
|
||||
.search-item label { font-weight: bold; white-space: nowrap; min-width: 70px; }
|
||||
.search-item input, .search-item select { height: 28px; }
|
||||
</style>
|
||||
|
||||
<script type="text/javascript">
|
||||
@@ -122,24 +117,18 @@ var columns = [
|
||||
|
||||
// 조회
|
||||
function fn_search(){
|
||||
// 검색 파라미터를 form1에서 가져와서 전달
|
||||
// 프로젝트번호 multi select 처리
|
||||
var selectedProjectNos = $("#project_no").val();
|
||||
$('input[name="project_nos"]').remove();
|
||||
$('<input>').attr({
|
||||
type: 'hidden',
|
||||
name: 'project_nos',
|
||||
value: selectedProjectNos
|
||||
}).appendTo('#form1');
|
||||
|
||||
_tabulGrid = fnc_tabul_search(_tabul_layout_fitColumns, _tabulGrid, "/quality/incomingInspectionGridList.do", columns, true);
|
||||
}
|
||||
|
||||
// 검색조건 초기화
|
||||
function fn_reset(){
|
||||
$("#search_proposal_no").val("");
|
||||
$("#search_purchase_order_no").val("");
|
||||
$("#search_project_no").val("");
|
||||
$("#search_part_no").val("");
|
||||
$("#search_part_name").val("");
|
||||
$("#search_partner_name").val("");
|
||||
$("#search_delivery_status").val("");
|
||||
$("#search_inspector").val("");
|
||||
$("#search_inspection_date").val("");
|
||||
$("#search_inspection_result").val("");
|
||||
}
|
||||
|
||||
// 수입검사 등록 팝업
|
||||
function fn_registPopUp(){
|
||||
var selected = _tabulGrid.getSelectedData();
|
||||
@@ -152,8 +141,8 @@ function fn_registPopUp(){
|
||||
return;
|
||||
}
|
||||
|
||||
var popup_width = 1200;
|
||||
var popup_height = 800;
|
||||
var popup_width = 1700;
|
||||
var popup_height = 700;
|
||||
var hiddenForm = document.hiddenForm;
|
||||
var target = "incomingInspectionPopUp";
|
||||
var url = "/quality/incomingInspectionFormPopUp.do";
|
||||
@@ -169,8 +158,8 @@ function fn_registPopUp(){
|
||||
|
||||
// 검사결과 확인/수정 팝업
|
||||
function fn_resultPopUp(objId){
|
||||
var popup_width = 1200;
|
||||
var popup_height = 800;
|
||||
var popup_width = 1700;
|
||||
var popup_height = 700;
|
||||
var hiddenForm = document.hiddenForm;
|
||||
var target = "inspectionResultPopUp";
|
||||
var url = "/quality/incomingInspectionFormPopUp.do";
|
||||
@@ -240,56 +229,57 @@ function fn_excelDownload(){
|
||||
</div>
|
||||
|
||||
<div id="plmSearchZon">
|
||||
<div style="display:flex; flex-wrap:wrap; gap:10px; align-items:center;">
|
||||
<div class="search-item">
|
||||
<label>품의서 No</label>
|
||||
<input type="text" name="search_proposal_no" id="search_proposal_no" style="width:120px;" autocomplete="off">
|
||||
</div>
|
||||
<div class="search-item">
|
||||
<label>발주서 No</label>
|
||||
<input type="text" name="search_purchase_order_no" id="search_purchase_order_no" style="width:120px;" autocomplete="off">
|
||||
</div>
|
||||
<div class="search-item">
|
||||
<label>프로젝트번호</label>
|
||||
<input type="text" name="search_project_no" id="search_project_no" style="width:120px;" autocomplete="off">
|
||||
</div>
|
||||
<div class="search-item">
|
||||
<label>품번</label>
|
||||
<input type="text" name="search_part_no" id="search_part_no" style="width:120px;" autocomplete="off">
|
||||
</div>
|
||||
<div class="search-item">
|
||||
<label>품명</label>
|
||||
<input type="text" name="search_part_name" id="search_part_name" style="width:120px;" autocomplete="off">
|
||||
</div>
|
||||
<div class="search-item">
|
||||
<label>공급업체</label>
|
||||
<input type="text" name="search_partner_name" id="search_partner_name" style="width:120px;" autocomplete="off">
|
||||
</div>
|
||||
<div class="search-item">
|
||||
<label>입고결과</label>
|
||||
<select name="search_delivery_status" id="search_delivery_status" style="width:120px;">
|
||||
<option value="">전체</option>
|
||||
<option value="입고중">입고중</option>
|
||||
<option value="입고완료">입고완료</option>
|
||||
</select>
|
||||
</div>
|
||||
<div class="search-item">
|
||||
<label>검사자</label>
|
||||
<input type="text" name="search_inspector" id="search_inspector" style="width:120px;" autocomplete="off">
|
||||
</div>
|
||||
<div class="search-item">
|
||||
<label>검사일</label>
|
||||
<input type="text" name="search_inspection_date" id="search_inspection_date" class="date_icon" style="width:120px;" autocomplete="off">
|
||||
</div>
|
||||
<div class="search-item">
|
||||
<label>검사결과</label>
|
||||
<select name="search_inspection_result" id="search_inspection_result" style="width:120px;">
|
||||
<option value="">전체</option>
|
||||
<option value="OK">OK</option>
|
||||
<option value="NG">NG</option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
<table>
|
||||
<tr>
|
||||
<td><label for="">품의서 No</label></td>
|
||||
<td><input type="text" name="search_proposal_no" id="search_proposal_no" style="width:120px;" autocomplete="off" value="${param.search_proposal_no}"></td>
|
||||
|
||||
<td><label for="">발주서 No</label></td>
|
||||
<td><input type="text" name="search_purchase_order_no" id="search_purchase_order_no" style="width:120px;" autocomplete="off" value="${param.search_purchase_order_no}"></td>
|
||||
|
||||
<td><label for="">프로젝트번호</label></td>
|
||||
<td>
|
||||
<select name="project_no" id="project_no" style="width:200px;" class="select2" autocomplete="off" multiple="multiple">
|
||||
<option value="">선택</option>
|
||||
${code_map.project_no}
|
||||
</select>
|
||||
</td>
|
||||
|
||||
<td><label for="">품번</label></td>
|
||||
<td><input type="text" name="search_part_no" id="search_part_no" style="width:120px;" autocomplete="off" value="${param.search_part_no}"></td>
|
||||
|
||||
<td><label for="">품명</label></td>
|
||||
<td><input type="text" name="search_part_name" id="search_part_name" style="width:120px;" autocomplete="off" value="${param.search_part_name}"></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><label for="">공급업체</label></td>
|
||||
<td><select name="partner_objid" id="partner_objid" class="select2" autocomplete="off" style="width:120px;"><option value="">선택</option>${code_map.partner_objid}</select></td>
|
||||
|
||||
<td><label for="">입고결과</label></td>
|
||||
<td>
|
||||
<select name="search_delivery_status" id="search_delivery_status" class="select2" autocomplete="off" style="width:120px;">
|
||||
<option value="">전체</option>
|
||||
<option value="입고중">입고중</option>
|
||||
<option value="입고완료">입고완료</option>
|
||||
</select>
|
||||
</td>
|
||||
|
||||
<td><label for="">검사자</label></td>
|
||||
<td><select name="inspector_id" id="inspector_id" class="select2" autocomplete="off" style="width:200px;"><option value="">선택</option>${code_map.inspector_id}</select></td>
|
||||
|
||||
<td><label for="">검사일</label></td>
|
||||
<td><input type="text" name="search_inspection_date" id="search_inspection_date" class="date_icon" style="width:120px;" autocomplete="off" value="${param.search_inspection_date}"></td>
|
||||
|
||||
<td><label for="">검사결과</label></td>
|
||||
<td>
|
||||
<select name="search_inspection_result" id="search_inspection_result" class="select2" autocomplete="off" style="width:120px;">
|
||||
<option value="">전체</option>
|
||||
<option value="OK">OK</option>
|
||||
<option value="NG">NG</option>
|
||||
</select>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
|
||||
<%@include file= "/WEB-INF/view/common/common_gridArea.jsp" %>
|
||||
|
||||
@@ -238,7 +238,7 @@ function _fnc_datepick(){
|
||||
<input type="button" value="발주서생성" class="plm_btns" id="btnCreatePO" style="background:#28a745; color:white;">
|
||||
</div>
|
||||
</div>
|
||||
<%-- 검색필터 주석처리
|
||||
|
||||
<div id="plmSearchZon">
|
||||
<table>
|
||||
<tbody>
|
||||
@@ -270,7 +270,6 @@ function _fnc_datepick(){
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
--%>
|
||||
|
||||
<%@include file= "/WEB-INF/view/common/common_gridArea.jsp" %>
|
||||
</div>
|
||||
|
||||
Reference in New Issue
Block a user