534 lines
16 KiB
Plaintext
534 lines
16 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.jsp"%>
|
|
<%
|
|
PersonBean person = (PersonBean)session.getAttribute(Constants.PERSON_BEAN);
|
|
String connector = person.getUserId();
|
|
%>
|
|
<!DOCTYPE html>
|
|
<html>
|
|
<head>
|
|
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
|
|
<title><%=Constants.SYSTEM_NAME%></title>
|
|
|
|
<!-- //JSTL 페이징 변수선언 -->
|
|
<c:set var="totalCount" value="${empty TOTAL_COUNT?0:TOTAL_COUNT}" />
|
|
<c:set var="maxPage" value="${empty MAX_PAGE_SIZE?1:MAX_PAGE_SIZE}" />
|
|
<c:set var="nPage" value="${empty param.page?1:param.page}" />
|
|
<c:set var="pageIndex" value="${(nPage-1)/10}" />
|
|
<c:set var="nextPage" value="${empty NEXT_PAGE?1:NEXT_PAGE}" />
|
|
<c:set var="prevPage" value="${empty PREV_PAGE?1:PREV_PAGE}" />
|
|
<c:set var="now" value="<%=new java.util.Date() %>" />
|
|
<c:set var="sysYear"><fmt:formatDate value="${now}" pattern="yyyy" /></c:set>
|
|
<c:set var="connector" value="<%=connector %>" />
|
|
|
|
<style>
|
|
.select2-selection__choice {
|
|
font-size: 11px;
|
|
background-color: #fff !important;
|
|
border: none !important;
|
|
margin-right: 0px !important;
|
|
}
|
|
.select2-selection__choice__remove {
|
|
display: contents !important;
|
|
}
|
|
.select2-container .select2-selection--multiple {
|
|
min-height: 20px !important;
|
|
}
|
|
.select2-container--default .select2-selection--multiple .select2-selection__choice {
|
|
margin-top: 3.5px !important;
|
|
}
|
|
.select2-selection__rendered {
|
|
height: 18px !important;
|
|
}
|
|
.select2-container .select2-selection--multiple .select2-selection__rendered {
|
|
overflow: auto !important;
|
|
}
|
|
</style>
|
|
|
|
<script type="text/javascript">
|
|
var grid;
|
|
|
|
$(document).ready(function(){
|
|
$('.select2').select2();
|
|
/* $('#Year_ex' ).select2();
|
|
$('#Year' ).select2();
|
|
$('#expSortCd' ).select2();
|
|
$('#expStatusCd' ).select2();
|
|
$('#expCompanyCd' ).select2();
|
|
$('#expAreaCd' ).select2();
|
|
|
|
$('#projectNo' ).select2();
|
|
$('#busUsersDeptId').select2();
|
|
$('#regUserId' ).select2();
|
|
$('#vehicelUsed' ).select2(); */
|
|
|
|
$("#btnSearch").click(function(){
|
|
var expense_Year = $("#Year_ex").val();
|
|
|
|
$("#page").val("1");
|
|
fn_search();
|
|
});
|
|
$("#btnApply").click(function(){
|
|
fn_apply("","regist");
|
|
});
|
|
|
|
$("#btnConfirm").click(function(){
|
|
var targetObj = _tabulGrid.getSelectedData();
|
|
|
|
if(1 == targetObj.length){
|
|
var ObjId = fnc_checkNull(targetObj[0].EXPENSE_MASTER_OBJID);
|
|
var status = fnc_checkNull(targetObj[0].STATUS);
|
|
var settleAmount = fnc_checkNull(targetObj[0].SETTLE_AMOUNT);
|
|
|
|
if(status == '결재완료'){
|
|
fn_expensePayment(ObjId,settleAmount);
|
|
}else{
|
|
alert("결재완료상태인 데이터만 지급완료 가능합니다.");
|
|
return false;
|
|
}
|
|
//var productGroup = fnc_checkNull(targetObj[0].PRODUCT_GROUP);
|
|
//var product = fnc_checkNull(targetObj[0].PRODUCT);
|
|
//var releaseObjId = fnc_checkNull(targetObj[0].RELEASE_OBJID);
|
|
}else if(0 == targetObj.length){
|
|
Swal.fire("선택된 내용이 없습니다.");
|
|
return false;
|
|
}else if(1 < targetObj.length){
|
|
Swal.fire("한번에 1개의 내용만 등록 가능합니다. ");
|
|
return false;
|
|
}
|
|
//fn_confirm();
|
|
});
|
|
|
|
$(".btnApprovalDetail").click(function(){
|
|
var approvalObjId = $(this).attr("data-APPROVAL_OBJID");
|
|
var routeObjId = $(this).attr("data-ROUTE_OBJID");
|
|
//Swal.fire("approvalObjId : "+approvalObjId+", routeObjId : "+routeObjId);
|
|
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");
|
|
});
|
|
|
|
fn_search();
|
|
});
|
|
|
|
var columns = [
|
|
{title:'EXPENSE_MASTER_OBJID',field:'EXPENSE_MASTER_OBJID' ,visible:false },
|
|
{
|
|
title : '신청번호',
|
|
field : 'EXPENSE_ID',
|
|
headerHozAlign : 'center',
|
|
hozAlign : 'center',
|
|
width : '100',
|
|
formatter : fnc_createGridAnchorTag,
|
|
cellClick : function(e, cell) {
|
|
fn_apply(cell.getData().EXPENSE_MASTER_OBJID);
|
|
}
|
|
},
|
|
{
|
|
title : '구분',
|
|
field : 'EXP_SORT_NAME',
|
|
headerHozAlign : 'center',
|
|
hozAlign : 'center',
|
|
width : '90'
|
|
},
|
|
{
|
|
title : '프로젝트번호',
|
|
field : 'PROJECT_NO',
|
|
headerHozAlign : 'center',
|
|
hozAlign : 'left',
|
|
width : '110'
|
|
},
|
|
{
|
|
title : '단계',
|
|
field : 'EXP_STATUS_NAME',
|
|
headerHozAlign : 'center',
|
|
hozAlign : 'left',
|
|
width : '50'
|
|
},
|
|
{
|
|
title : '출장목적',
|
|
field : 'BUS_CONTENT_NAME',
|
|
headerHozAlign : 'center',
|
|
hozAlign : 'left',
|
|
headerSort : false/* ,
|
|
width : '200' */
|
|
},
|
|
{
|
|
title : '업체명',
|
|
field : 'EXP_COMPANY_NAME',
|
|
headerHozAlign : 'center',
|
|
hozAlign : 'left',
|
|
headerSort : false,
|
|
width : '160'
|
|
},
|
|
{
|
|
title : '출장지',
|
|
field : 'EXP_AREA_NAME',
|
|
headerHozAlign : 'center',
|
|
hozAlign : 'center',
|
|
headerSort : false,
|
|
width : '90'
|
|
},
|
|
{
|
|
title : '출장기간',
|
|
field : 'BNS_START_DATE',
|
|
headerHozAlign : 'center',
|
|
hozAlign : 'center',
|
|
headerSort : false,
|
|
width : '80'
|
|
},
|
|
{
|
|
title : '출장기간',
|
|
field : 'BNS_END_DATE',
|
|
headerHozAlign : 'center',
|
|
hozAlign : 'center',
|
|
headerSort : false,
|
|
width : '80'
|
|
},
|
|
{
|
|
title : '정산금액',
|
|
field : 'SETTLE_AMOUNT',
|
|
headerHozAlign : 'center',
|
|
hozAlign : 'right',
|
|
headerSort : false,
|
|
width : '100',
|
|
formatter:"money",
|
|
formatterParams:{
|
|
thousand:",",
|
|
symbolAfter:"p",
|
|
precision:false,
|
|
}
|
|
},
|
|
{
|
|
title : '팀명',
|
|
field : 'BUS_USERS_DEPT_NAME',
|
|
headerHozAlign : 'center',
|
|
hozAlign : 'center',
|
|
headerSort : false,
|
|
width : '80'
|
|
},
|
|
{
|
|
title : '작성자',
|
|
field : 'REG_USER_NAME', //WRITER_NAME
|
|
headerHozAlign : 'center',
|
|
hozAlign : 'center',
|
|
width : '80'
|
|
},
|
|
{
|
|
title : '작성일',
|
|
field : 'REG_DATE',
|
|
headerHozAlign : 'center',
|
|
hozAlign : 'center',
|
|
width : '80'
|
|
},
|
|
{
|
|
title : '지급금액',
|
|
field : 'AMOUNT_PAYMENT',
|
|
headerHozAlign : 'center',
|
|
hozAlign : 'right',
|
|
headerSort : false,
|
|
width : '100',
|
|
formatter:"money",
|
|
formatterParams:{
|
|
thousand:",",
|
|
symbolAfter:"p",
|
|
precision:false,
|
|
}
|
|
},
|
|
{
|
|
title : '지급일',
|
|
field : 'PAYMENT_DATE',
|
|
headerHozAlign : 'center',
|
|
hozAlign : 'center',
|
|
width : '80'
|
|
},
|
|
{
|
|
title : '비고',
|
|
field : 'REMARK',
|
|
headerHozAlign : 'center',
|
|
hozAlign : 'left',
|
|
width : '170'
|
|
},
|
|
, {
|
|
title : '상태',
|
|
field : 'STATUS',
|
|
headerHozAlign : 'center',
|
|
hozAlign : 'center',
|
|
width : '80',
|
|
formatter : fnc_createGridAnchorTag,
|
|
cellClick:function(e, cell){
|
|
var targetStatus = fnc_checkNull(cell.getData().APPR_STATUS).toUpperCase();
|
|
var status = fnc_checkNull(cell.getData().STATUS).toUpperCase();
|
|
//alert(targetStatus);
|
|
if("결재중" === targetStatus || "결재완료" === targetStatus) {
|
|
fnc_approvalDetail(cell.getData().APPROVAL_OBJID, cell.getData().ROUTE_OBJID);
|
|
}
|
|
}
|
|
}
|
|
];
|
|
|
|
//var grid;
|
|
function fn_search(){
|
|
var selectedValues = $("#projectNo").val();
|
|
|
|
$('<input>').attr({
|
|
type: 'hidden',
|
|
name: 'project_nos',
|
|
value: selectedValues
|
|
}).appendTo('#form1');
|
|
|
|
_tabulGrid = fnc_tabul_search(_tabul_layout_fitColumns, _tabulGrid, "/costMgmt/contractGridList.do", columns, true);
|
|
}
|
|
|
|
/* function fn_tabul_search(layoutParam, grid, searchURL, columnParam) {
|
|
if(!grid){
|
|
grid = new Tabulator("#mainGrid", {
|
|
height : "auto",
|
|
layout : fnc_checkNullDefaultValue(layoutParam, _tabul_layout_fitDataStretch),
|
|
placeholder : "조회된 정보가 없습니다.",
|
|
movableColumns : true,
|
|
selectable : true,
|
|
columns : columnParam
|
|
});
|
|
}else{
|
|
fn_tabu_searchAjax(grid, searchURL);
|
|
}
|
|
grid.on("tableBuilt", function(){
|
|
$(".tabulator-footer").hide();
|
|
fn_tabu_searchAjax(grid, searchURL);
|
|
});
|
|
}
|
|
|
|
function fn_tabu_searchAjax(grid, searchURL) {
|
|
$.ajax({
|
|
url: searchURL,
|
|
type:"POST",
|
|
data:$("#form1").serializeObject(),
|
|
dataType:"json",
|
|
async:false,
|
|
success:function(response){
|
|
grid.setData(response.RESULTLIST);
|
|
$(".table_paging_wrap").html(response.PAGE_HTML);
|
|
},
|
|
error: function(jqxhr, status, error){
|
|
}
|
|
});
|
|
} */
|
|
|
|
function fn_expenseSearch(expense_Year){
|
|
document.form1.action = "/costMgmt/expenseList.do?Year="+expense_Year;
|
|
document.form1.submit();
|
|
}
|
|
|
|
function fn_apply(objId,val){
|
|
var param = "&" + $("#form1").serialize();
|
|
var url = "/costMgmt/expenseApply.do";
|
|
|
|
if(objId != ""){
|
|
url = "/costMgmt/expenseApplyDetail.do";
|
|
}
|
|
|
|
window.open(url+"?objId="+objId+"&insertVal="+val+param, "", "width=1200, height=1000");
|
|
}
|
|
|
|
//지급완료 상태값 변경
|
|
function fn_confirm() {
|
|
var checkedObj = _tabulGrid.getSelectedData();
|
|
if(0 < checkedObj.length){
|
|
var checkArr = new Array();
|
|
|
|
for(var i=0;i<checkedObj.length;i++){
|
|
var objId = fnc_checkNull(checkedObj[i].EXPENSE_MASTER_OBJID);
|
|
var status = fnc_checkNull(checkedObj[i].STATUS);
|
|
if(status=='결재완료'){
|
|
checkArr.push(objId);
|
|
}
|
|
}
|
|
|
|
if(checkArr.length > 0){
|
|
//if(confirm("선택된 Part를 삭제하시겠습니까?")){
|
|
Swal.fire({
|
|
title: '선택된 데이터를 지급완료 처리하시겠습니까?',
|
|
text: '',
|
|
icon: 'warning',
|
|
|
|
showCancelButton: true, // cancel버튼 보이기. 기본은 원래 없음
|
|
confirmButtonColor: '#3085d6', // confrim 버튼 색깔 지정
|
|
cancelButtonColor: '#d33', // cancel 버튼 색깔 지정
|
|
confirmButtonText: '확인', // confirm 버튼 텍스트 지정
|
|
cancelButtonText: '취소', // cancel 버튼 텍스트 지정
|
|
reverseButtons: false, // 버튼 순서 거꾸로
|
|
|
|
}).then(result => {
|
|
// 만약 Promise리턴을 받으면,
|
|
if (result.isConfirmed) { // 만약 모달창에서 confirm 버튼을 눌렀다면
|
|
$.ajax({
|
|
url:"/costMgmt/expenseConfirm.do",
|
|
type:"POST",
|
|
data: {"checkArr":checkArr.join()},
|
|
dataType:"json",
|
|
success:function(data){
|
|
Swal.fire(data.msg);
|
|
fn_search();
|
|
},
|
|
error: function(jqxhr, status, error){
|
|
}
|
|
});
|
|
}
|
|
});
|
|
}else{
|
|
Swal.fire("결재완료상태인 데이터만 지급완료 가능합니다.");
|
|
return false;
|
|
}
|
|
}else{
|
|
Swal.fire("선택된 데이터가 없습니다.");
|
|
}
|
|
}
|
|
|
|
//경비지급 popup
|
|
function fn_expensePayment(ObjId,settleAmount){
|
|
var popup_width = 450;
|
|
var popup_height = 400;
|
|
|
|
var hiddenForm = document.hiddenForm;
|
|
var url = "";
|
|
var target = "openPopup"+ObjId;
|
|
var params = "?OBJID="+ObjId;
|
|
url = "/costMgmt/expensePaymentPopUp.do"+params;
|
|
|
|
fn_centerPopup(popup_width, popup_height, url, target);
|
|
|
|
hiddenForm.action = url;
|
|
hiddenForm.SETTLE_AMOUNT.value = settleAmount;
|
|
hiddenForm.target = target;
|
|
hiddenForm.submit();
|
|
}
|
|
</script>
|
|
|
|
</head>
|
|
<body>
|
|
<form name="hiddenForm" id="hiddenForm" method="post">
|
|
<input type="hidden" name="SETTLE_AMOUNT" id="SETTLE_AMOUNT">
|
|
</form>
|
|
<form name="form1" id="form1" action="" method="post">
|
|
<input type="hidden" name="delKey" id="delKey">
|
|
<input type="hidden" name="nemu" value="${param.menu}">
|
|
<input type="hidden" name="contractObjid" id="contractObjid" value="${param.contractObjid}">
|
|
<div class="content-box">
|
|
<div class="content-box-s">
|
|
<div class="plm_menu_name_gdnsi">
|
|
<h2>
|
|
<span>투입원가관리_경비관리</span>
|
|
</h2>
|
|
<div class="btnArea">
|
|
<input type="button" value="조회" class="plm_btns" id="btnSearch" name="btnSearch">
|
|
<c:choose>
|
|
<c:when test="${param.menu ne 'costMgmt'}">
|
|
<input type="button" value="경비신청" class="plm_btns" id="btnApply" name="btnApply">
|
|
</c:when>
|
|
<c:otherwise>
|
|
<input type="button" value="경비지급" class="plm_btns" id="btnConfirm" name="btnConfirm">
|
|
</c:otherwise>
|
|
</c:choose>
|
|
</div>
|
|
</div>
|
|
<div id="plmSearchZon">
|
|
<table>
|
|
<tr>
|
|
<td><label for="Year">년도</label></td> <!-- 경비현황 연도 -->
|
|
<td>
|
|
<select name="Year_ex" id="Year_ex" class="select2" autocomplete="off">
|
|
<option value="">선택</option>
|
|
<c:forEach begin="${sysYear-4}" end="${sysYear+1}" var="req_year">
|
|
<%-- <option value="${req_year}">${req_year}</option> --%>
|
|
<option value="${req_year}" ${param.Year eq req_year ? 'selected':'' }>${req_year}</option>
|
|
</c:forEach>
|
|
</select>
|
|
</td>
|
|
<td><label for="expSortCd">구분</label></td>
|
|
<td>
|
|
<select name="expSortCd" id="expSortCd" required reqTitle="구분" type="select" class="select2" autocomplete="off">
|
|
<option value="">선택</option>
|
|
${code_map.expSortCd}
|
|
</select>
|
|
</td>
|
|
<td><label for="expSortCd">출장목적</label></td>
|
|
<td>
|
|
<select name="busContent" id="busContent" required reqTitle="출장목적" type="select" class="select2" autocomplete="off">
|
|
<option value="">선택</option>
|
|
${code_map.busContent}
|
|
</select>
|
|
</td>
|
|
<%-- <td><label for="projectNo">프로젝트번호</label></td>
|
|
<td>
|
|
<select name="projectNo" id="projectNo" required reqTitle="Project No" type="select" style="width:200px;" class="select2" autocomplete="off">
|
|
<option value="">선택</option>
|
|
${code_map.projectNo}
|
|
</select>
|
|
</td> --%>
|
|
<td><label for="projectNo">프로젝트번호</label></td>
|
|
<td>
|
|
<select name="projectNo" id="projectNo" style="width:300px;" class="select2" autocomplete="off" multiple="multiple">
|
|
<option value="">선택</option>
|
|
${code_map.projectNo}
|
|
</select>
|
|
</td>
|
|
<td><label for="busUsersDeptId">팀명</label></td>
|
|
<td>
|
|
<select name="busUsersDeptId" id="busUsersDeptId" required reqTitle="팀명" type="select" class="select2" autocomplete="off">
|
|
<option value="">선택</option>
|
|
${code_map.busUsersDeptId}
|
|
</select>
|
|
</td>
|
|
<td><label for="regUserId">작성자</label></td>
|
|
<td>
|
|
<select name="regUserId" id="regUserId" required reqTitle="작성자" type="select" class="select2" autocomplete="off">
|
|
<option value="">선택</option>
|
|
${code_map.regUserId}
|
|
</select>
|
|
</td>
|
|
<td><label for="expStatusCd">단계</label></td>
|
|
<td>
|
|
<select name="expStatusCd" id="expStatusCd" required reqTitle="단계" type="select" class="select2" autocomplete="off">
|
|
<option value="">선택</option>
|
|
${code_map.expStatusCd}
|
|
</select>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
|
|
<td><label for="expCompanyCd">업체명</label></td>
|
|
<td>
|
|
<select name="expCompanyCd" id="expCompanyCd" required reqTitle="업체명" type="select" class="select2" autocomplete="off">
|
|
<option value="">선택</option>
|
|
${code_map.expCompanyCd}
|
|
</select>
|
|
</td>
|
|
<td><label for="expAreaCd">지역</label></td>
|
|
<td>
|
|
<select name="expAreaCd" id="expAreaCd" required reqTitle="지역" type="select" class="select2" autocomplete="off">
|
|
<option value="">선택</option>
|
|
${code_map.expAreaCd}
|
|
</select>
|
|
</td>
|
|
<td><label for="vehicelUsed">이용차량</label></td>
|
|
<td>
|
|
<select name="vehicelUsed" id="vehicelUsed" required reqTitle="이용차량" type="select" class="select2" autocomplete="off">
|
|
<option value="">선택</option>
|
|
${code_map.vehicelUsed}
|
|
</select>
|
|
</td>
|
|
</tr>
|
|
</table>
|
|
</div>
|
|
|
|
<%@include file= "/WEB-INF/view/common/common_gridArea.jsp" %>
|
|
</div>
|
|
</div>
|
|
</form>
|
|
</body>
|
|
</html> |