ERP-node/WebContent/WEB-INF/view/materMgmt/materViwerFormPopup.jsp

559 lines
18 KiB
Plaintext
Raw Normal View History

2025-08-21 09:41:46 +09:00
<%@ 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_jqGrid.jsp"%>
<!DOCTYPE html>
<html>
<head>
<style>body{height:auto!important}</style>
<!-- //JSTL 페이징 변수선언 -->
<c:set var="now" value="<%=new java.util.Date() %>" />
<c:set var="sysYear"><fmt:formatDate value="${now}" pattern="yyyy" /></c:set>
<c:set var="fileDocType" value="MATER_MASTER" />
<c:set var="fileDocTypeName" value="발주등록" />
<script type="text/javascript">
var grid;
$(document).ready(function(){
//결재라인 가져오기
fn_getApprLine();
$("#downFile").click(function(){
hiddenForm.action = "/materMgmt/packgeingPartFile.do?objId=${info.MATERIAL_MASTER_OBJID}&order_no=${info.ORDER_NO}";
hiddenForm.submit();
});
$("#sup_cd").change(function(){
fn_change_sup_cd(this.value);
});
$('input').prop('readonly', true);
$('input').prop('disabled', true);
$('select').prop('readonly', true);
$('select').prop('disabled', true);
$('textarea').prop('readonly', true);
$('textarea').prop('disabled', true);
//$(".select2").select2();
$("#close").prop('readonly', false);
$("#close").prop('disabled', false);
$("#downFile").prop('readonly', false);
$("#downFile").prop('disabled', false);
//fnc_datepick(); //달력
fnc_setFileDropZone("file1DropZone", "${objId}", "${fileDocType}", "${fileDocTypeName}", "file1AreaDraw",false,null,null); //첨부파일
file1AreaDraw(); //첨부파일목록조회
//default value
//setDefault();
grid = $("#expenseDetailGrid").jqGrid({
url: ""
,datatype: "local"
,colNames: ["OBJID","품명","규격","Unit","발주수량","단가","공급가","비고/용처"]
,colModel: [
{name:"RESOURCE_OBJID",index:"RESOURCE_OBJID", width: 0, align:"center", hidden: true, sortable:false, editable:true}
,{name:"PRODUCT_TITLE_NAME",index:"PRODUCT_TITLE_NAME", width: 200, align:"center", hidden: false, sortable:false, editable:false
,editoptions:{
dataInit : function(e){
e.style.fontSize = 13;
}
}
}
,{name:"STANDARD_NAME",index:"STANDARD_NAME", width: 200, align:"center", hidden: false, sortable:false, editable:false
,editoptions:{
dataInit : function(e){
e.style.fontSize = 13;
}
}
}
,{name:"UNIT",index:"UNIT", width: 80, align:"center", hidden: false, sortable:false, editable:false
,editoptions:{
dataInit : function(e){
e.style.fontSize = 13;
}
}
}
,{name:"QTY",index:"QTY", width: 60, align:"right", hidden: false, sortable:false, editable:false ,formatter: "integer", formatoptions:{thousandsSeparator:","}}
,{name:"PRICE",index:"PRICE", width: 100, align:"right", hidden: false, sortable:false, editable:false ,formatter: "integer", formatoptions:{thousandsSeparator:","}}
,{name:"UNIT_PRICE",index:"UNIT_PRICE", width: 100, align:"right", hidden: false, sortable:false, editable:false ,formatter: "integer", formatoptions:{thousandsSeparator:","}}
,{name:"BIGO",index:"BIGO", width: 100, align:"center", hidden: false, sortable:false, editable:false
,editoptions:{
dataInit : function(e){
e.style.fontSize = 13;
}
}
}
]
,rownumbers : true
,viewrecords : true
,height : 250
,multiselect : false
,shrinkToFit : false
,autowidth : true
,sortable : false
,rowNum : 10000
,forceFit : false //컬럼의 width를 변화시킬때 그리드의 width를 고정 여부
,jsonReader : {repeatitems: false}
,mtype :"POST"
,footerrow : false //바닥합계
,userDataOnFooter: true //바닥합계
,loadComplete: function(){
//footer 커스텀..
}
});
gridFn.modify_search();
});
function fn_appr_status(){
$("#status_cd").val("PURSTCD00200");
gridFn.closeEdit();
$.ajax({
url:"/materMgmt/materMgmtSave.do"
,type:"POST"
,data: $("#form1").serialize() + "&jqGrid="+ encodeURIComponent(JSON.stringify(grid.getRowData()))
,dataType:"json"
,success:function(data){
/* if(data =="SUCCESS"){
Swal.fire("저장되었습니다.");
};
if(typeof opener.fn_search =="function"){ opener.fn_search() }; */
self.close();
}
,error: function(jqxhr, status, error){
}
});
}
var gridFn = {
opennEdit : function() { //수정가능
var ids = grid.jqGrid("getDataIDs");
for (var i = 0; i < ids.length; i++) {
grid.jqGrid("editRow",ids[i]);
}
}
,closeEdit : function() { //수정불가
var ids = grid.jqGrid("getDataIDs");
for (var i = 0; i < ids.length; i++) {
grid.jqGrid("saveRow", ids[i], /*successFunction*/null, /*url*/"clientArray"/*, extraparam, aftersavefunc,errorfunc, afterrestorefunc*/);
}
}
,delRow : function(){
var selectedRowIds = grid.jqGrid("getGridParam","selarrrow");
if(selectedRowIds.length==0){
Swal.fire("삭제할 행을 선택해주십시오.");
return false;
}
for(var i = selectedRowIds.length - 1; i >= 0; i--){
grid.delRowData(selectedRowIds[i]);
}
}
,search : function() {
grid.setGridParam({
url: "/materMgmt/searchPartMgmt.do"
,datatype : "json"
,postData : $("#form1").serialize()
,loadComplete : function(data) {
gridFn.footerSummary();
}
,gridComplete : function() {
gridFn.opennEdit(); //수정가능
}
}).trigger("reloadGrid");
grid.setGridParam({url: "", datatype : "local"});
}
,modify_search : function() {
grid.setGridParam({
url: "/materMgmt/modifysearchPartMgmt.do"
,datatype : "json"
,postData : "material_master_objid=${info.MATERIAL_MASTER_OBJID}"
,loadComplete : function(data) {
gridFn.footerSummary();
}
,gridComplete : function() {
gridFn.opennEdit(); //수정가능
}
}).trigger("reloadGrid");
grid.setGridParam({url: "", datatype : "local"});
}
,footerSummary: function(){ //자동합계
var ids = grid.jqGrid("getDataIDs");
var total =0;
for (var i = 0; i < ids.length; i++) {
if($.isNumeric(grid.jqGrid('getCell', i+1, 'UNIT_PRICE'))){
//Swal.fire(parseInt(grid.jqGrid('getCell', i+1, 'UNIT_PRICE')));
total = parseInt(total) + parseInt(grid.jqGrid('getCell', i+1, 'UNIT_PRICE'));
}
}
$("#total").text(total);
//$("#final_order_amount").val(total);
}
}
//코드값을 받아와서 동적으로 selectbox 생성
function fn_change_sup_cd(code){
var val=code;
var params = "codeId="+val;
//초기화
$("#supply_name").empty();
$("#reg_no").empty();
$("#supply_address").empty();
$("#supply_busname").empty();
$("#supply_stockname").empty();
$("#supply_tel_no").empty();
$("#supply_fax_no").empty();
$.ajax({
type : "POST",
url : "/admin/makeSupCdSelect.do",
data : params,
dataType:"json",
async: false,
success: function(data){
if(data.RESULT.length > 0){
console.log(data.RESULT[0]);
$("#supply_name").text(data.RESULT[0].SUPPLY_NAME);
$("#reg_no").text(data.RESULT[0].REG_NO);
$("#supply_address").text(data.RESULT[0].SUPPLY_ADDRESS);
$("#supply_busname").text(data.RESULT[0].SUPPLY_BUSNAME);
$("#supply_stockname").text(data.RESULT[0].SUPPLY_STOCKNAME);
$("#supply_tel_no").text(data.RESULT[0].SUPPLY_TEL_NO);
$("#supply_fax_no").text(data.RESULT[0].SUPPLY_FAX_NO);
}
}
});
}
//형상 영역을 display 한다.
function file1AreaDraw(){
fn_fileCallback("file1","${fileDocType}");
}
//첨부파일 목록을 가져온다.
function fn_fileCallback(areaId,fileType){
$.ajax({
url:"/common/getFileList.do",
type:"POST",
data:{"targetObjId":"${objId}", "docType":fileType},
dataType:"json",
async:false,
success:function(data){
if(0 < data.length){
//첨부파일 목록 영역 show
$("#"+areaId+"FileArea").empty();
if(0 < $("#"+areaId+"DefaultRow").length){
$("#"+areaId+"DefaultRow").hide();
}
$.each(data, function(i){
var appendText = "";
var path = data[i].FILE_PATH;
var fileName = data[i].SAVED_FILE_NAME;
var fileExt = data[i].UPPER_FILE_EXT;
appendText += "<colgroup>";
appendText +=" <col width=\"10%\">";
appendText +=" <col width=\"*\">";
appendText +=" <col width=\"20%\">";
appendText +=" </colgroup>";
appendText+= "<tr>";
appendText+= " <td>"+[i+1]+"</td>";
appendText+= " <td class=\"align_l\"><a href='javascript:fnc_downloadFile(\""+data[i].OBJID+"\")'>&nbsp;&nbsp;"+data[i].REAL_FILE_NAME+"</a>";
<c:if test="${param.actionType eq 'regist' or info.WRITER eq connectUserId or 'plm_admin' eq connectUserId}">
appendText+= "<a href=\"javascript:fileDelete('"+data[i].OBJID+"', '"+areaId+"')\"><div class=\"delete_btn\"></div></a>";
</c:if>
appendText+= "</td>";
appendText+= " <td>"+data[i].REGDATE+"</td>";
appendText+= "</tr>";
$("#"+areaId+"FileArea").append(appendText);
});
}else{
$("#"+areaId+"DropZone").show();
$("#"+areaId+"AttachFileList").hide();
$("#"+areaId+"FileArea").empty();
var appendText = "";
appendText += "<tr>";
appendText += "<td>첨부 파일이 없습니다.</td>";
appendText +="</tr>";
$("#"+areaId+"FileArea").append(appendText);
}
},
error: function(jqxhr, status, error){
}
});
}//파일 첨부 END
/*첨부 파일 삭제 */
function fileDelete(fileObjId,areaId){
var type =areaId;
if(confirm("파일을 삭제하시겠습니까?")){
$.ajax({
url:"/common/deleteFileInfo.do",
type:"POST",
data:{"objId":fileObjId},
dataType:"json",
async:true,
success:function(data){
fn_fileCallback("file1","${fileDocType}");
},
error: function(jqxhr, status, error){
}
});
}
}
//첨부파일 목록을 가져온다.
function fn_getApprLine(){
var k=0;
$.ajax({
url:"/common/getApprovalLine.do",
type:"POST",
data:{"objId":"${objId}"},
dataType:"json",
async:false,
success:function(data){
$.each(data, function(i){
/* if("${info.SORT_CD}"=="SRT00020"){
k=2;
for(var j=0;j<data[i].length;j++){
var REGDATE="";
var PROC_DATE="";
if(data[i][j].REGDATE!=undefined){
REGDATE = data[i][j].REGDATE;
}
if(data[i][j].PROC_DATE!=undefined){
PROC_DATE = data[i][j].PROC_DATE;
}
text = data[i][j].WRITER+"<br>"+REGDATE;
$("#appr"+k).html(text);
k++;
text = data[i][j].TARGET_USER_NAME+"<br>"+PROC_DATE;
$("#appr"+k).html(text);
k++;
}
}else{ */
for(var j=0;j<data[i].length;j++){
var REGDATE="";
var PROC_DATE="";
if(data[i][j].REGDATE!=undefined){
REGDATE = data[i][j].REGDATE;
}
if(data[i][j].PROC_DATE!=undefined){
PROC_DATE = data[i][j].PROC_DATE;
}
text = data[i][j].WRITER+"<br>"+REGDATE;
$("#appr"+k).html(text);
k++;
text = data[i][j].TARGET_USER_NAME+"<br>"+PROC_DATE;
$("#appr"+k).html(text);
k++;
}
//}
});
},
error: function(jqxhr, status, error){
}
});
}//파일 첨부 END
function cmaComma(obj) {
var firstNum = obj.value.substring(0,1); // 첫글자 확인 변수
var strNum = /^[/,/,0,1,2,3,4,5,6,7,8,9,/]/; // 숫자와 , 만 가능
var str = "" + obj.value.replace(/,/gi,''); // 콤마 제거
var regx = new RegExp(/(-?\d+)(\d{3})/);
var bExists = str.indexOf(".",0);
var strArr = str.split('.');
if (!strNum.test(obj.value)) {
Swal.fire("숫자만 입력하십시오.\n\n특수문자와 한글/영문은 사용할수 없습니다.");
obj.value = 1;
obj.focus();
return false;
}
if ((firstNum < "0" || "9" < firstNum)){
Swal.fire("숫자만 입력하십시오.");
obj.value = 1;
obj.focus();
return false;
}
while(regx.test(strArr[0])){
strArr[0] = strArr[0].replace(regx,"$1,$2");
}
if (bExists > -1) {
obj.value = strArr[0] + "." + strArr[1];
} else {
obj.value = strArr[0];
}
}
</script>
</head>
<body>
<form name="form1" id="form1" action="" method="post">
<input type="hidden" name="process_cd" id="process_cd">
<input type="hidden" name="status_cd" id="status_cd">
<input type="hidden" name="material_master_objid" id="material_master_objid" value="${info.MATERIAL_MASTER_OBJID}">
<section>
<div class="plm_menu_name">
<h2><span>발주서 작성</span></h2>
</div>
<div id="expenseApplyPopupFormWrap1">
<table class="pmsPopupForm">
<colgroup>
<col width="15%" />
<col width="35%" />
<col width="15%" />
<col width="11%" />
<col width="12%" />
<col width="12%" />
</colgroup>
<tr>
<td colspan="2" rowspan="4" style="text-align:center;font-size:25px;"><b>발주서<br>(Purchase order)</b></td>
<td class="input_title">회사명</td>
<td colspan="3" id="supply_name">${info.SUPPLY_NAME}</td>
</tr>
<tr>
<td class="input_title">주소</td>
<td colspan="3" id="supply_address">${info.SUPPLY_ADDRESS}</td>
</tr>
<tr>
<td class="input_title">전화</td>
<td colspan="3" id="supply_tel_no">${info.SUPPLY_TEL_NO}</td>
</tr>
<tr>
<td class="input_title">팩스</td>
<td colspan="3" id="supply_fax_no">${info.SUPPLY_FAX_NO}</td>
</tr>
<tr>
<td class="input_title">발주번호</td>
<td>${info.ORDER_NO}</td>
<td class="input_title">대표</td>
<td colspan="3" id="charge_user_name">${info.CHARGE_USER_NAME}</td>
</tr>
<tr>
<td class="input_title">공급업체명</td>
<td>
<select name="sup_cd" id="sup_cd" required reqTitle="업체명" type="select" class="select2" autocomplete="off">
<option value="">선택</option>
${code_map.supply_cd}
</select>
</td>
<td class="input_title">전화</td>
<td colspan="3" id="supply_tel_no1">${info.SUPPLY_TEL_NO}</td>
</tr>
<tr>
<td class="input_title">제목</td>
<td colspan="5"><input type="text" name="title" id="title" value="${info.TITLE}" style="font-size:13px; padding:0px 0px 0px 8px;" /></td>
</tr>
</table>
</div>
<div id="plm_table_wrap1" style="padding:0 8 0 8;">
<div style="">
<div style="height: 270px;">
<table id="expenseDetailGrid""></table>
<!-- <div id="jqGridPager"></div> -->
</div>
</div>
</div>
<div id="expenseApplyPopupFormWrap1">
<table class="pmsPopupForm">
<colgroup>
<col width="15%" />
<col width="35%" />
<col width="15%" />
<col width="11%" />
<col width="12%" />
<col width="12%" />
</colgroup>
<tr>
<td class="input_title">발주금액(원)</td>
<td id="total" style="text-align:right;background:#fff;font-weight:bolder; font-size: 18px;"></td>
<td class="input_title">확정가(원)</td>
<td colspan="3"><input type="text" name="final_order_amount" id="final_order_amount" value="<fmt:formatNumber value="${info.FINAL_ORDER_AMOUNT}" pattern="#,###" />" style="text-align:right;background:#fff;font-weight:bolder; font-size: 18px;" onkeyup="cmaComma(this);" onchange="cmaComma(this);" /></td>
</tr>
<tr>
<td class="input_title">특이사항</td>
<td colspan="5">
<textarea style="width:100%; height: 100px;background-color: #fff;" name="reason" id="reason">${info.REASON}</textarea>
</td>
</tr>
<tr>
<td class="input_title">1.납품장소</td>
<td colspan="5"><input type="text" name="delivery_place" id="delivery_place" value="${info.DELIVERY_PLACE}" style="font-size:13px; padding:0px 0px 0px 8px;" /></td>
</tr>
<tr>
<td class="input_title">2.입고요청일</td>
<td><input type="text" name="recv_date" id="recv_date" value="${info.RECV_DATE}" class="date_icon" required reqTitle="입고요청일" ></td>
<td rowspan="3" style="text-align:center;" class="input_title">결<br>재</td>
<td style="text-align:center;" class="input_title">담당</td>
<td style="text-align:center;" class="input_title">부장</td>
<td style="text-align:center;" class="input_title">대표</td>
</tr>
<tr>
<td class="input_title">3.발주자</td>
<td>${info.REG_USER_NAME}</td>
<td rowspan="2" style="text-align:center;" id="appr0"></td>
<td rowspan="2" style="text-align:center;" id="appr1"></td>
<td rowspan="2" style="text-align:center;" id="appr3"></td>
</tr>
<tr>
<td class="input_title">4.수주자</td>
<td><input type="text" name="recv_userid" id="recv_userid" value="${info.RECV_USERID}" style="font-size:13px; padding:0px 0px 0px 8px;" /></td>
</tr>
</table>
</div>
<div class="btn_wrap">
<div class="plm_btn_wrap" style="margin-right:8px">
<input type="button" class="plm_btns" value="파일일괄저장" id="downFile">
<input type="button" class="plm_btns" value="닫기" id="close" onclick="window.close();" >
</div>
</div>
</section>
<%-- <textarea style="width:0px; height:0px; visibility: hidden;" id="gridExpSortCd">${code_map.gridExpSortCd}</textarea>
<textarea style="width:0px; height:0px; visibility: hidden;" id="gridExpSubmCd">${code_map.gridExpSubmCd}</textarea><!-- 코드동적설정 -->
<textarea style="width:0px; height:0px; visibility: hidden;" id="gridExpSubdCd">${code_map.gridExpSubdCd}</textarea><!-- 코드동적설정 --> --%>
</form>
<form name="hiddenForm" id="hiddenForm" action="" method="post">
<input type="hidden" name="objId" id="objId" value="${info.MATERIAL_MASTER_OBJID}">
</form>
</body>
</html>