393 lines
12 KiB
Plaintext
393 lines
12 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_jqGrid.jsp"%>
|
|
<!DOCTYPE html>
|
|
<html>
|
|
<head>
|
|
|
|
<!-- //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="EXPENSE_MASTER" />
|
|
<c:set var="fileDocTypeName" value="경비신청서" />
|
|
<script type="text/javascript">
|
|
var grid;
|
|
$(document).ready(function(){
|
|
$('.select2').select2();
|
|
var gridProjectNo = $.parseJSON($("#gridProjectNo").val()); //jqGrid 계정과목
|
|
var gridrelCd = $.parseJSON($("#gridrelCd").val()); //jqGrid 계정과목
|
|
var griduserid = $.parseJSON($("#griduserid").val()); //jqGrid 계정과목
|
|
|
|
$("#btnSave").click(function(){
|
|
fn_save();
|
|
});
|
|
|
|
$("#btnDel").click(function(){
|
|
gridFn.delRow();
|
|
});
|
|
|
|
|
|
$("#btnAdd").click(function(){
|
|
gridFn.addRow();
|
|
});
|
|
|
|
fnc_datepick(); //달력
|
|
|
|
grid = $("#expenseDetailGrid").jqGrid({
|
|
url: ""
|
|
,datatype: "local"
|
|
,colNames: ["대상 프로젝트","불출수량","용도","불출일","인수자"]
|
|
,colModel: [
|
|
{name:"PROJECT_MGMT_OBJID" ,index:"PROJECT_MGMT_OBJID" , width:120, align:"center", hidden:false, sortable:false, editable: true
|
|
,edittype :"select"
|
|
,formatter :"select"
|
|
,editoptions:{
|
|
value: gridProjectNo
|
|
,dataInit: function(e){
|
|
e.style.width = "92%";
|
|
e.style.fontSize = 12;
|
|
|
|
}
|
|
}
|
|
}
|
|
,{name:"REL_QTY" ,index:"REL_QTY" , width:100, align: "right", hidden:false, sortable:false, editable: true
|
|
,formatter: "integer", formatoptions:{ defaultValue: " ",thousandsSeparator:","}
|
|
,editoptions:{
|
|
dataEvents: [
|
|
{type:"change", fn:function(e) {
|
|
gridFn.footerSummary();
|
|
}}
|
|
]
|
|
,dataInit: function(e){
|
|
e.style.textAlign = "right";
|
|
e.style.fontSize = 13;
|
|
|
|
$(e).keypress(function(e){
|
|
if (e.which != 8 && e.which != 0 && (e.which < 48 || e.which > 57)) {
|
|
return false;
|
|
}
|
|
});
|
|
|
|
}
|
|
},editrules: {
|
|
custom: true,
|
|
custom_func: validNum }
|
|
}
|
|
,{name:"REL_PUR_CD" ,index:"REL_PUR_CD" , width:120, align:"center", hidden:false, sortable:false, editable: true
|
|
,edittype :"select"
|
|
,formatter :"select"
|
|
,editoptions:{
|
|
value: gridrelCd
|
|
,dataInit: function(e){
|
|
e.style.width = "92%";
|
|
e.style.fontSize = 12;
|
|
|
|
}
|
|
}
|
|
}
|
|
|
|
,{name:"REL_DATE" ,index:"REL_DATE" , width:120, align: "center", hidden:false, sortable:false, editable: true,
|
|
editoptions : { dataInit : function(e)
|
|
{
|
|
$(e).datepicker();
|
|
e.style.fontSize = 12;
|
|
e.style.textAlign = "center";
|
|
}
|
|
}
|
|
}
|
|
|
|
,{name:"REL_USER_ID" ,index:"REL_USER_ID" , width:120, align:"center", hidden:false, sortable:false, editable: true
|
|
,edittype :"select"
|
|
,formatter :"select"
|
|
,editoptions:{
|
|
value: griduserid
|
|
,dataInit: function(e){
|
|
e.style.width = "92%";
|
|
e.style.fontSize = 12;
|
|
|
|
}
|
|
}
|
|
}
|
|
|
|
]
|
|
,rownumbers : true
|
|
,viewrecords : true
|
|
,height : 240
|
|
,multiselect : true
|
|
,shrinkToFit : false
|
|
,autowidth : true
|
|
,sortable : false
|
|
,rowNum : 100
|
|
,forceFit : false //컬럼의 width를 변화시킬때 그리드의 width를 고정 여부
|
|
,jsonReader : {repeatitems: false}
|
|
,mtype :"POST"
|
|
,footerrow : true //바닥합계
|
|
,userDataOnFooter: true //바닥합계
|
|
,loadComplete: function(){
|
|
|
|
|
|
//footer 커스텀..
|
|
$(".ui-jqgrid-ftable td:eq(1)").remove();
|
|
$(".ui-jqgrid-ftable td:eq(1)").remove();
|
|
$(".ui-jqgrid-ftable td:eq(1)").remove();
|
|
$(".ui-jqgrid-ftable td:eq(0)").attr({"colspan":"3"});
|
|
$(".ui-jqgrid-ftable td:eq(0)").css({"width":"","font-size":"20px"});
|
|
|
|
$(".ui-jqgrid-ftable td:eq(1)").attr({id:"summuryTotalCARD_USED"});
|
|
$(".ui-jqgrid-ftable td:eq(2)").attr({id:"summuryTotalCASH_USED"});
|
|
$(".ui-jqgrid-ftable td:eq(3)").attr({id:"summuryTotalPAYMENT" });
|
|
/* $(".ui-jqgrid-ftable tbody").append("<tr class=\"ui-widget-content footrow footrow-ltr\"><td colspan=\"3\" id=\"summuryTotal\" style=\"text-align:right\"></td></tr>"); */
|
|
$("#expenseDetailGrid").jqGrid("footerData", "set", { "rn":"재고/불출/잔여"});
|
|
|
|
$("#summuryTotalCARD_USED").text(numberWithCommas("${info.QTY}"));
|
|
//$("#summuryTotalCASH_USED").text(numberWithCommas("2"));
|
|
//$("#summuryTotalPAYMENT" ).text(numberWithCommas("3"));
|
|
|
|
|
|
}
|
|
});
|
|
|
|
gridFn.search();
|
|
|
|
});
|
|
|
|
|
|
function validNum(val, nm, valref){
|
|
|
|
if($.isNumeric(val)){
|
|
return [true, ""];
|
|
}else{
|
|
|
|
return [false, "숫자만 입력 가능 합니다."];
|
|
}
|
|
|
|
}
|
|
|
|
|
|
function setDefault(){
|
|
var date = new Date();
|
|
var _yyyy = date.getFullYear();
|
|
var _mm = (date.getMonth() <10?"0":"") + (date.getMonth()+1);
|
|
var _dd = (date.getDate() <10?"0":"") + date.getDate();
|
|
var now_date = _yyyy+"-"+_mm+"-"+_dd;
|
|
|
|
if($("#bnsStartDate").val()==""){
|
|
$("#bnsStartDate").val(now_date);
|
|
}
|
|
if($("#bnsEndDate").val()==""){
|
|
$("#bnsEndDate").val(now_date);
|
|
}
|
|
if($("#regDate").val()==""){
|
|
$("#regDate").val(now_date);
|
|
}
|
|
}
|
|
|
|
var gridFn = {
|
|
addRow : function() {
|
|
var newId = grid.getGridParam("reccount")+1;
|
|
var addData = {
|
|
"PROJECT_MGMT_OBJID": "",
|
|
"REL_QTY": "",
|
|
"REL_PUR_CD" : "",
|
|
"REL_DATE" : "",
|
|
"REL_USER_ID" : ""
|
|
};
|
|
grid.addRowData(newId, addData);
|
|
grid.jqGrid("editRow", newId);
|
|
}
|
|
,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]);
|
|
}
|
|
}
|
|
,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*/);
|
|
}
|
|
}
|
|
,getStep2Cd : function(obj){ //2단계연결코드 재설정
|
|
var gridExpSubdCdArr = $.parseJSON($("#gridExpSubdCd").val());
|
|
var targetObj = $("#"+$(obj).attr("rowid")+"_EXP_SUBD_CD");
|
|
targetObj.empty(); //초기화
|
|
targetObj.append("<option value=\"\">선택</option>");
|
|
for(var i=0; i<gridExpSubdCdArr.length; i++){
|
|
cd = gridExpSubdCdArr[i];
|
|
if(cd["PARENT_CODE_ID"]==obj.value){
|
|
targetObj.append("<option value=\""+cd["CODE_ID"]+"\">"+cd["CODE_NAME"]+"</option>");
|
|
}
|
|
};
|
|
}
|
|
,search : function() {
|
|
grid.setGridParam({
|
|
url: "/materMgmt/searchreleaseList.do"
|
|
,datatype : "json"
|
|
,postData : $("#form1").serialize()
|
|
,loadComplete : function(data) {
|
|
gridFn.footerSummary();
|
|
}
|
|
,gridComplete : function() {
|
|
gridFn.opennEdit(); //수정가능
|
|
}
|
|
}).trigger("reloadGrid");
|
|
grid.setGridParam({url: "", datatype : "local"});
|
|
}
|
|
,footerSummary: function(){ //자동합계
|
|
var colSum1 = 0;
|
|
$("input[id*=REL_QTY]").each(function(){ if($.isNumeric($(this).val())){ colSum1 += parseInt($(this).val()); } });
|
|
|
|
var summuryTotalCARD_USED = $("#summuryTotalCARD_USED").text();
|
|
|
|
$("#summuryTotalCASH_USED").text(numberWithCommas(colSum1+""));
|
|
$("#summuryTotalPAYMENT").text(numberWithCommas(summuryTotalCARD_USED-colSum1)+"");
|
|
|
|
/* var ids = grid.jqGrid("getDataIDs");
|
|
var total =0;
|
|
for (var i = 0; i < ids.length; i++) {
|
|
if($.isNumeric(grid.jqGrid('getCell', i+1, 'PRICE'))){
|
|
total = parseInt(total) + parseInt(grid.jqGrid('getCell', i+1, 'PRICE'));
|
|
}
|
|
|
|
}
|
|
|
|
$("#total_amount").val(total); */
|
|
}
|
|
}
|
|
|
|
function fn_save(){
|
|
|
|
var check =false;
|
|
$("input[id*=REL_QTY]").each(function(){
|
|
|
|
if($(this).val()!=" "){
|
|
check=true;
|
|
}else{
|
|
check =false;
|
|
}
|
|
});
|
|
|
|
if(!check){
|
|
Swal.fire('불출수량을 입력해 주세요');
|
|
return;
|
|
}
|
|
|
|
if(fnc_valitate("form1")){
|
|
|
|
/* if(""==grid.getRowData()){
|
|
Swal.fire('저장할 내용이 존재 하지 않습니다.');
|
|
return;
|
|
} */
|
|
if(confirm("저장 하시겠습니까?")){
|
|
//return;
|
|
/* Swal.fire($("#form1").serialize());
|
|
return; */
|
|
gridFn.closeEdit();
|
|
$.ajax({
|
|
url:"/materMgmt/saverelmaterMgmtInfo.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){
|
|
}
|
|
});
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
/*실시간 콤마 삽입 */
|
|
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>
|
|
<body>
|
|
<form name="form1" id="form1" action="" method="post">
|
|
<input type="hidden" name="inventory_mgmt_objid" id="inventory_mgmt_objid" value="${info.INVENTORY_MGMT_OBJID}">
|
|
<section>
|
|
<div class="plm_menu_name">
|
|
<h2><span>자재관리_재고현황</span></h2>
|
|
</div>
|
|
<div class="btn_wrap" style="margin-right:8px">
|
|
<div class="plm_btn_wrap">
|
|
<c:if test="${'plm_admin' eq connectUserId or 'js_seo' eq connectUserId }">
|
|
<input type="button" value="추가" class="plm_btns" id="btnAdd" name="btnDel" style="background:#dfeffc">
|
|
<input type="button" value="삭제" class="plm_btns" id="btnDel" name="btnDel" style="background:#dfeffc">
|
|
<input type="button" value="저장" class="plm_btns" id="btnSave" name="btnSave" style="background:#dfeffc">
|
|
</c:if>
|
|
<input type="button" value="닫기" class="plm_btns" style="background:#dfeffc" onclick="window.close();" >
|
|
</div>
|
|
</div>
|
|
<div style="clear:both"></div><br>
|
|
<style>.ui-jqgrid .ui-jqgrid-bdiv {height:225px!important}</style>
|
|
<div id="plm_table_wrap1" style="padding:0 8 0 8;;margin-top:-8px">
|
|
<div style="">
|
|
<div style="height: 200px;">
|
|
<table id="expenseDetailGrid"></table>
|
|
<!-- <div id="jqGridPager"></div> -->
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
</section>
|
|
|
|
<textarea style="width:0px; height:0px; visibility: hidden;" id="gridProjectNo">${code_map.gridProjectNo}</textarea><!-- 코드동적설정 -->
|
|
<textarea style="width:0px; height:0px; visibility: hidden;" id="gridrelCd">${code_map.gridrelCd}</textarea><!-- 코드동적설정 -->
|
|
<textarea style="width:0px; height:0px; visibility: hidden;" id="griduserid">${code_map.griduserid}</textarea><!-- 코드동적설정 -->
|
|
|
|
|
|
<%-- <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>
|
|
</body>
|
|
</html> |