433 lines
14 KiB
Plaintext
433 lines
14 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_jqGrid.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(){
|
|
|
|
$("#allCheck").click(function() {
|
|
if ($("#allCheck").prop("checked")) {
|
|
$("input[type=checkbox]").prop("checked", true);
|
|
} else {
|
|
$("input[type=checkbox]").prop("checked", false);
|
|
}
|
|
});
|
|
|
|
$("input[type=text]").keyup(function(e){
|
|
if(e.keyCode == 13){
|
|
$("#btnSearch").trigger("click");
|
|
}
|
|
});
|
|
|
|
$("#btnSearch").click(function(){
|
|
fn_search();
|
|
});
|
|
|
|
$("#btnRelease").click(function(){
|
|
var targetObj = $("input[name=REQUEST_OBJID]:checked");
|
|
|
|
if(0 < targetObj.length){
|
|
fn_releaseSalesRequest();
|
|
}else{
|
|
Swal.fire("선택된 내용이 없습니다.");
|
|
}
|
|
});
|
|
|
|
$("#btnExcel").click(function(){
|
|
fn_excelExport($("#mainGrid"),"BOM_REPORT_역전개");
|
|
});
|
|
|
|
$("#btnOrderReg").click(function(){
|
|
fn_openSalesRequestPopUp("");
|
|
});
|
|
|
|
$("#btnOrderBOMReg").click(function(){
|
|
fn_salesRequestTargetBOMListPopUp();
|
|
});
|
|
|
|
$("#btnDelete").click(function(){
|
|
fn_delete();
|
|
});
|
|
|
|
$("#btnApproval").click(function(){
|
|
var checkedObj = $("input[name=REQUEST_OBJID]:checked");
|
|
var title = "";
|
|
if(1 < checkedObj){
|
|
Swal.fire("한번에 한개의 결재만 가능합니다.");
|
|
return false;
|
|
}else{
|
|
var targetStatus = checkedObj.attr("data-STATUS");
|
|
var objId = checkedObj.val();
|
|
|
|
var targeType = "SALES_REQUEST";
|
|
|
|
if(targetStatus == "create" || targetStatus == "reception" || targetStatus == "reject"){
|
|
window.open("/approval/registApproval.do?targetType="+targeType+"&targetObjId="+objId+"&approvalTitle="+title+"&callbackFnc=fn_search","registApproval","width=700,height=700");
|
|
}else{
|
|
Swal.fire("이미 결재완료 또는 결재중 상태입니다.");
|
|
return false;
|
|
}
|
|
}
|
|
});
|
|
|
|
$(".btnApprovalDetail").click(function(){
|
|
var approvalObjId = $(this).attr("data-APPROVAL_OBJID");
|
|
var routeObjId = $(this).attr("data-ROUTE_OBJID");
|
|
var params = "?approvalObjId="+approvalObjId;
|
|
params += "&routeObjId="+routeObjId;
|
|
//Swal.fire("params : "+params);
|
|
window.open("/approval/approvalDetail.do"+params,"approvalDetailPopup","width=650 height=400 menubar=no status=no");
|
|
});
|
|
|
|
fnc_getAjaxProductMgmtList("SEARCH_PRODUCT_CODE", "", "", "${param.SEARCH_PRODUCT_CODE}");
|
|
});
|
|
|
|
function fn_delete(){
|
|
var selectedObj = $("input[name=REQUEST_OBJID]:checked");
|
|
|
|
if(0 < selectedObj.length){
|
|
if(confirm("선택된 정보를 삭제하시겠습니까?")){
|
|
|
|
$.ajax({
|
|
url:"/salesMng/deleteSalesRequestMng.do",
|
|
type:"POST",
|
|
data:$("#form1").serialize(),
|
|
dataType:"json",
|
|
success:function(data){
|
|
Swal.fire(data.msg);
|
|
fn_search();
|
|
},
|
|
error: function(jqxhr, status, error){
|
|
}
|
|
});
|
|
}
|
|
}else{
|
|
Swal.fire("선택된 정보가 없습니다.");
|
|
return false;
|
|
}
|
|
}
|
|
|
|
//구매의뢰서(BOM) 작성 시 사용
|
|
function fn_salesRequestTargetBOMListPopUp(){
|
|
var url = "/salesMng/salesRequestTargetBOMList.do";
|
|
|
|
window.open(url,"salesRequestTargetBOMListPopUp","width=1300,height=550");
|
|
}
|
|
|
|
//구매의뢰 요청 팝업
|
|
function fn_openSalesRequestPopUp(objId){
|
|
var url = "";
|
|
|
|
if("" == objId){
|
|
url = "/salesMng/salesRequestFormPopUp.do?SALES_REQUEST_MASTER_OBJID="+objId;
|
|
}else{
|
|
url = "/salesMng/salesRequestDetailPopUp.do?SALES_REQUEST_MASTER_OBJID="+objId;
|
|
}
|
|
window.open(url,"salesRequestPopUp","width=1100,height=900");
|
|
}
|
|
|
|
function fn_releaseSalesRequest(){
|
|
var checkArr = new Array();
|
|
var ngCnt = 0;
|
|
$("input[name=REQUEST_OBJID]:checked").each(function(){
|
|
var objId = $(this).val();
|
|
var status = $(this).attr("data-STATUS");
|
|
|
|
if("create" != status){
|
|
ngCnt++;
|
|
}
|
|
|
|
checkArr.push(objId);
|
|
});
|
|
|
|
if(0 < ngCnt){
|
|
Swal.fire("이미 제출된 정보입니다.\n대상을 확인하시기 바랍니다.");
|
|
return false;
|
|
}else{
|
|
if(confirm("선택된 정보를 구매당당자에게 제출 하시겠습니까?")){
|
|
$.ajax({
|
|
type : "POST",
|
|
url : "/salesMng/releaseSalesRequest.do",
|
|
data: {"checkArr":checkArr.join(),"status":"release"},
|
|
dataType:"json",
|
|
success:function(data){
|
|
Swal.fire(data.msg);
|
|
if(data.result){
|
|
fn_search();
|
|
}
|
|
}
|
|
,error: function(jqxhr, status, error){
|
|
}
|
|
});
|
|
}
|
|
}
|
|
}
|
|
|
|
//양산제품에 해당하는 SPEC 정보 목록을 가져온다.
|
|
function fn_productSpecList(productObjId,selectboxId,selectedVal){
|
|
$("#"+selectboxId).empty();
|
|
|
|
$("#"+selectboxId).append("<option value=''>선택</option>");
|
|
|
|
if("" != productObjId){
|
|
$.ajax({
|
|
url:"/common/getProductSPECList.do",
|
|
type:"POST",
|
|
data:{"isJson":true,"TARGET_OBJID":productObjId},
|
|
dataType:"json",
|
|
async:false,
|
|
success:function(data){
|
|
resultList = data
|
|
|
|
if(0 < resultList.length){
|
|
for (var i = 0; i < resultList.length; i++) {
|
|
var commonCodeId = resultList[i].OBJID;
|
|
var commonCodeName = resultList[i].SPEC_NAME;
|
|
|
|
$("#"+selectboxId).append("<option value='"+commonCodeId+"'>"+commonCodeName+"</option>");
|
|
}
|
|
$("#"+selectboxId).val(selectedVal);
|
|
}
|
|
},
|
|
error: function(jqxhr, status, error){
|
|
}
|
|
});
|
|
}
|
|
}
|
|
|
|
function fn_search() {
|
|
document.form1.action = "/salesMng/salesRequestMngList.do";
|
|
document.form1.submit();
|
|
}
|
|
|
|
function fn_excelExport(pGridObj,pFileName){
|
|
var mya = pGridObj.getDataIDs();
|
|
var data = pGridObj.getRowData(mya[0]);
|
|
var colNames=new Array();
|
|
var ii=0;
|
|
for (var d in data){ colNames[ii++] = d; }
|
|
|
|
//컬럼 헤더 가져오기
|
|
var columnHeader = pGridObj.jqGrid('getGridParam','colNames') + '';
|
|
var arrHeader = columnHeader.split(',');
|
|
var html="<table border=1><tr>";
|
|
for ( var y = 0; y < arrHeader.length; y++ ) {
|
|
var hName = arrHeader[y];
|
|
if("PART_OBJID" == hName || "EO_OBJID" == hName){
|
|
continue;
|
|
}
|
|
|
|
html = html + "<td><b>" + arrHeader[y] + "</b></td>";
|
|
}
|
|
|
|
|
|
html = html + "</tr>";
|
|
|
|
//값 불러오기
|
|
for(var i=0;i< mya.length;i++) {
|
|
var datac= pGridObj.getRowData(mya[i]);
|
|
html = html +"<tr>";
|
|
for(var j=0; j< colNames.length;j++){
|
|
if("PART_OBJID" == colNames[j] || "EO_OBJID" == colNames[j]){
|
|
continue;
|
|
}
|
|
html=html + '<td>' + datac[colNames[j]]+"</td>";
|
|
}
|
|
html = html+"</tr>";
|
|
}
|
|
|
|
|
|
html=html+"</table>"; // end of line at the end
|
|
document.EXCEL_.csvBuffer.value = html;
|
|
document.EXCEL_.fileName.value = pFileName;
|
|
document.EXCEL_.target='_new';
|
|
document.EXCEL_.submit();
|
|
}
|
|
|
|
function fn_str_openPopup(bom_report_objid, product_code, product_mgmt_spec, upg_no, search_partNo, search_partName){
|
|
var param = "actionType=search"
|
|
+"&bom_report_objid=" + bom_report_objid
|
|
+"&product_code=" + product_code
|
|
+"&product_mgmt_spec=" + product_mgmt_spec
|
|
+"&upg_no=" + upg_no
|
|
+"&search_partNo=" + search_partNo
|
|
+"&search_partName=" + search_partName
|
|
;
|
|
window.open("/partmgmt/structureAscendingListPopup.do?"+param, "_strListPopup", "width=1200, height=800, toolbar=no, status=no, menubar=no, location=no, scrollbars=yes, resizable=yes");
|
|
}
|
|
|
|
//구매 BOM 팝업
|
|
function fn_salesMngBOMOpenPopUp(bom_report_objid){
|
|
var param = "actionType=search"
|
|
+"&bom_report_objid=" + bom_report_objid
|
|
;
|
|
window.open("/salesMng/salesMngBOMListPopUp.do?"+param, "_strListPopup", "width=1200, height=800, toolbar=no, status=no, menubar=no, location=no, scrollbars=yes, resizable=yes");
|
|
}
|
|
|
|
function fn_salesMngBOMOpenPopUp(bom_report_objid){
|
|
var param = "actionType=search"
|
|
+"&bom_report_objid=" + bom_report_objid
|
|
;
|
|
window.open("/salesMng/salesRequestDetailPopUp.do?"+param, "_strListPopup", "width=1200, height=800, toolbar=no, status=no, menubar=no, location=no, scrollbars=yes, resizable=yes");
|
|
}
|
|
|
|
</script>
|
|
</head>
|
|
<body class="backcolor">
|
|
<form name="hiddenForm" id="hiddenForm" method="post">
|
|
<input type="hidden" name="OBJID" id="OBJID">
|
|
</form>
|
|
<form name="form1" id="form1" action="" method="post">
|
|
<input type="hidden" name="actionType" id="actionType" value="" />
|
|
<div class="min_part_enroll">
|
|
<div class="content-box">
|
|
<div class="content-box-s">
|
|
<div class="plm_menu_name">
|
|
<h2>
|
|
<span>구매의뢰서 조회</span>
|
|
</h2>
|
|
</div>
|
|
<div id="plmSearchZon">
|
|
<table>
|
|
<tbody>
|
|
<tr>
|
|
<td><label for="">기종(모델)명</label></td>
|
|
<td>
|
|
<select name="SEARCH_PRODUCT_CODE" id="SEARCH_PRODUCT_CODE" style="" class="select2" autocomplete="off"></select>
|
|
</td>
|
|
|
|
<td class="align_r">
|
|
<label for="" class="">Part No</label>
|
|
</td>
|
|
<td>
|
|
<input type="text" name="SEARCH_PART_NO" id="SEARCH_PART_NO" value="${param.SEARCH_PART_NO}"/>
|
|
</td>
|
|
<td class="align_r">
|
|
<label for="" class="">Part Name</label>
|
|
</td>
|
|
<td>
|
|
<input type="text" name="SEARCH_PART_NAME" id="SEARCH_PART_NAME" value="${param.SEARCH_PART_NAME}" placeholder="ex) HEX. BOLT"/>
|
|
</td>
|
|
<td class="align_r">
|
|
<label for="" class="">상태</label>
|
|
</td>
|
|
<td>
|
|
<select name="SEARCH_STATUS" id="SEARCH_STATUS" style="" class="select2" autocomplete="off">
|
|
<option value="">선택</option>
|
|
<option value="create">등록</option>
|
|
<option value="requestComplete">요청완료</option>
|
|
<option value="reception">의뢰접수</option>
|
|
<option value="approvalRequest">결제중</option>
|
|
<option value="reject">반려</option>
|
|
<option value="approvalComplete">결제완료</option>
|
|
</select>
|
|
</td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
</div>
|
|
<div class="contents_page_basic_margin">
|
|
<div class="btn_wrap">
|
|
<div class="plm_btn_wrap">
|
|
<input type="button" value="조회" class="plm_btns" id="btnSearch">
|
|
</div>
|
|
</div>
|
|
<div class="plm_table_wrap">
|
|
<div style="overflow-y:scroll;">
|
|
<table class="plm_table">
|
|
<colgroup>
|
|
<col width="1.5%" />
|
|
<col width="4%" /> <!-- No -->
|
|
<col width="6%" /> <!-- 관리번호 -->
|
|
<col width="6%" /> <!-- 기종 -->
|
|
<col width="*" /> <!-- 제목 -->
|
|
<col width="8%" /> <!-- 구매담당자 -->
|
|
<col width="8%" /> <!-- 요청승인여부 -->
|
|
<col width="9%" /> <!-- 요청자 -->
|
|
<col width="7%" /> <!-- 등록일 -->
|
|
<col width="7%" /> <!-- 상태 -->
|
|
</colgroup>
|
|
<tr class="plm_thead">
|
|
<td><input type="checkbox" name="allCheck" id="allCheck"></td>
|
|
<td>No</td>
|
|
<td>구매의뢰번호</td>
|
|
<td>기종(모델)명</td>
|
|
<td>대표 파트</td>
|
|
<td>구매담당자</td>
|
|
<td>요청승인여부</td>
|
|
<td>요청자</td>
|
|
<td>등록일</td>
|
|
<td>상태</td>
|
|
</tr>
|
|
</table>
|
|
</div>
|
|
<div class="plm_scroll_table" style="width:100%; height:500px;">
|
|
<table class="plm_table">
|
|
<colgroup>
|
|
<col width="1.5%" />
|
|
<col width="4%" /> <!-- No -->
|
|
<col width="6%" /> <!-- 관리번호 -->
|
|
<col width="6%" /> <!-- 기종 -->
|
|
<col width="*" /> <!-- 제목 -->
|
|
<col width="8%" /> <!-- 구매담당자 -->
|
|
<col width="8%" /> <!-- 요청승인여부 -->
|
|
<col width="9%" /> <!-- 요청자 -->
|
|
<col width="7%" /> <!-- 등록일 -->
|
|
<col width="7%" /> <!-- 상태 -->
|
|
</colgroup>
|
|
<tbody>
|
|
<c:choose>
|
|
<c:when test="${!empty LIST}">
|
|
<c:forEach var="item" items="${LIST}" varStatus="status">
|
|
<tr>
|
|
<td>
|
|
<input type="checkbox" name="REQUEST_OBJID" value="${item.OBJID}" data-STATUS="${item.STATUS}" data-WRITER="${item.WRITER}">
|
|
</td>
|
|
<td>${item.RNUM}</td>
|
|
<td><a href="#" onclick="fn_openSalesRequestPopUp('${item.OBJID}')">${item.REQUEST_MNG_NO}</a></td>
|
|
<td>${item.PRODUCT_CODE_NAME}</td>
|
|
<td>${item.TARGET_TITLE}</td>
|
|
<td>${item.SALES_MNG_USER_NAME}</td>
|
|
<td>${item.REQUEST_STATUS_TITLE}</td>
|
|
<td>${item.WRITER_NAME}</td>
|
|
<td>${item.REGDATE_TITLE}</td>
|
|
<td>
|
|
<c:choose>
|
|
<c:when test="${item.STATUS ne 'create' && item.STATUS ne 'requestComplete' && item.STATUS ne 'reception'}">
|
|
<a href="#" class="btnApprovalDetail" data-APPROVAL_OBJID="${item.APPROVAL_OBJID}" data-ROUTE_OBJID="${item.ROUTE_OBJID}">${item.STATUS_TITLE}</a>
|
|
</c:when>
|
|
<c:otherwise>
|
|
${item.STATUS_TITLE}
|
|
</c:otherwise>
|
|
</c:choose>
|
|
</td>
|
|
</tr>
|
|
</c:forEach>
|
|
</c:when>
|
|
<c:otherwise>
|
|
<tr>
|
|
<td colspan="12" align="center">조회된 정보가 없습니다.</td>
|
|
</tr>
|
|
</c:otherwise>
|
|
</c:choose>
|
|
</tbody>
|
|
</table>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</form>
|
|
</body>
|
|
<style>
|
|
.container::-webkit-scrollbar-thumb {background: linear-gradient(to bottom, #f5d78e, #f5d78e) !important;}
|
|
.container::-webkit-scrollbar-track {background-color: white !important;}
|
|
.container::-webkit-scrollbar-button { display: none !important;}
|
|
</style>
|
|
</html> |