473 lines
16 KiB
Plaintext
473 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_jqGrid.jsp"%>
|
|
|
|
<!DOCTYPE html>
|
|
<html>
|
|
<head>
|
|
<title><%=Constants.SYSTEM_NAME%></title>
|
|
<script>
|
|
var grid;
|
|
$(document).ready(function() {
|
|
|
|
//닫기
|
|
$("#btnClose").click(function(){
|
|
self.close(0);
|
|
});
|
|
|
|
$("#btnDel").click(function(){
|
|
gridFn.delRow();
|
|
});
|
|
|
|
fnc_datepick(); //달력
|
|
|
|
var gridDivisionCd = $.parseJSON($("#gridDivisionCd").val()); //jqGrid 업무구분
|
|
var gridProjectNo = $.parseJSON($("#gridProjectNo").val()); //jqGrid 프로젝트 no
|
|
var gridDeptselect = $.parseJSON($("#gridDeptselect").val()); //jqGrid 프로젝트 no
|
|
var gridFactoryCd = $.parseJSON($("#gridFactoryCd").val()); //jqGrid 출장지
|
|
var gridCustomerCd = $.parseJSON($("#gridCustomerCd").val()); //jqGrid 업체명
|
|
|
|
var gridUserselectArr = $.parseJSON($("#gridUserselect").val()); //jqGrid 팀원
|
|
var gridUserselect = {"":"선택"};
|
|
|
|
for(var i=0; i<gridUserselectArr.length; i++){
|
|
cd = gridUserselectArr[i];
|
|
gridUserselect[cd["CODE_ID"]] = cd["CODE_NAME"];
|
|
};
|
|
gridUserselect["OUT1"] = "외주인A";
|
|
gridUserselect["OUT2"] = "외주인B";
|
|
|
|
gridProjectNo["1"] ="공통";
|
|
//-------------------------------------------------
|
|
/* 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; */
|
|
//-------------------------------------------------
|
|
|
|
|
|
grid = $("#timeSheetPopupGrid").jqGrid({
|
|
url: ""
|
|
,datatype: "local"
|
|
,colNames: ["TIME_SHEET_OBJID","SYSTEM_REG_USER_ID","Project No.","Date","팀명","등록인","업무구분","상세내용","출장지","업체명","근무시간","작성자"]
|
|
,colModel: [
|
|
{name:"TIME_SHEET_OBJID" ,index:"TIME_SHEET_OBJID", width: 10, align:"center", hidden: true, sortable:false, editable:false}
|
|
,{name:"SYSTEM_REG_USER_ID" ,index:"SYSTEM_REG_USER_ID", width: 10, align:"center", hidden: true, sortable:false, editable:true}
|
|
,{name:"PROJECTNO" ,index:"PROJECTNO" , width:100, align:"center", hidden:false, sortable:false, editable: true
|
|
,edittype :"select"
|
|
,editoptions:{
|
|
value: gridProjectNo
|
|
,dataInit: function(e){
|
|
e.style.width = "92%";
|
|
e.style.fontSize = 13;
|
|
}
|
|
}
|
|
}
|
|
,{name:"WORK_DATE" ,index:"WORK_DATE" , width:100, align:"center", hidden:false, sortable:false, editable: true
|
|
,editrules:{custom:false,required:false}
|
|
//,formatter: "date"
|
|
,editoptions:{
|
|
//value: now_date
|
|
dataInit: function(e){
|
|
e.style.width = "92%";
|
|
e.style.fontSize = 13;
|
|
e.style.textAlign = "center";
|
|
$(e).datepicker({dateFormat:'yy-mm-dd'});
|
|
/* $(e).datepicker({
|
|
changeMonth:true,
|
|
changeYear:true
|
|
}); */
|
|
}
|
|
}
|
|
}
|
|
,{name:"DEPT_ID" ,index:"DEPT_ID" , width:100, align:"center", hidden:false, sortable:false, editable: true
|
|
,edittype :"select"
|
|
,formatter :"select"
|
|
,editoptions:{
|
|
value: gridDeptselect
|
|
,dataEvents: [
|
|
{type:"change", fn:function(e) {
|
|
var row = $(e.target).closest("tr.jqgrow");
|
|
gridFn.getStep2Cd(this);
|
|
}}
|
|
]
|
|
,dataInit: function(e){
|
|
e.style.width = "92%";
|
|
e.style.fontSize = 13;
|
|
}
|
|
}
|
|
}
|
|
,{name:"REG_USER_ID" ,index:"REG_USER_ID" , width:100, align:"center", hidden:false, sortable:false, editable: true
|
|
,edittype :"select"
|
|
,formatter :"select"
|
|
,editoptions:{
|
|
value: gridUserselect
|
|
,dataInit: function(e){
|
|
e.style.width = "92%";
|
|
e.style.fontSize = 13;
|
|
}
|
|
}
|
|
}
|
|
,{name:"BUS_CD" ,index:"BUS_CD" , width:100, align:"center", hidden:false, sortable:false, editable: true
|
|
,edittype :"select"
|
|
,formatter :"select"
|
|
,editoptions:{
|
|
value: gridDivisionCd
|
|
,dataInit: function(e){
|
|
e.style.width = "92%";
|
|
e.style.fontSize = 13;
|
|
}
|
|
}
|
|
}
|
|
,{name:"TITLE" ,index:"TITLE" , width:375, align:"center", hidden:false, sortable:false, editable: true
|
|
,editoptions:{
|
|
dataInit: function(e){
|
|
e.style.width = "92%";
|
|
e.style.fontSize = 13;
|
|
}
|
|
}
|
|
}
|
|
,{name:"TRIP_CD" ,index:"TRIP_CD" , width:100, align:"center", hidden:false, sortable:false, editable: true
|
|
,edittype :"select"
|
|
,formatter :"select"
|
|
,editoptions:{
|
|
value: gridFactoryCd
|
|
,dataInit: function(e){
|
|
e.style.width = "92%";
|
|
e.style.fontSize = 13;
|
|
}
|
|
}
|
|
}
|
|
,{name:"COMPANY_CD" ,index:"COMPANY_CD" , width:150, align:"center", hidden:false, sortable:false, editable: true
|
|
,edittype :"select"
|
|
,formatter :"select"
|
|
,editoptions:{
|
|
value: gridCustomerCd
|
|
,dataInit: function(e){
|
|
e.style.width = "92%";
|
|
e.style.textAlign = "right";
|
|
e.style.fontSize = 13;
|
|
}
|
|
}
|
|
}
|
|
,{name:"WORK_TIME" ,index:"WORK_TIME" , width:70, align:"center", hidden:false, sortable:false, editable: true
|
|
,formatter: "integer"
|
|
,editoptions:{
|
|
dataInit: function(e){
|
|
e.style.textAlign = "center";
|
|
e.style.fontSize = 13;
|
|
},
|
|
dataEvents: [
|
|
{
|
|
type:"change", fn:function(e) {
|
|
//gridFn.timeSummary(this);
|
|
}
|
|
,type:"click", fn:function(e) {
|
|
var v = $(e.target).val();
|
|
if(v == 0){
|
|
$(e.target).val("");
|
|
}
|
|
}
|
|
}
|
|
|
|
]
|
|
}
|
|
}
|
|
,{name:"WRITER" ,index:"WRITER", width: 0, align:"center", hidden: true, sortable:false, editable:false}
|
|
/* ,{name:"ADD_WORK_TIME" ,index:"ADD_WORK_TIME" , width:100, align:"right", hidden:false, sortable:false, editable: true
|
|
,formatter: "integer"
|
|
,editoptions:{
|
|
dataInit: function(e){
|
|
e.style.textAlign = "right";
|
|
e.style.fontSize = 13;
|
|
}
|
|
}
|
|
} */
|
|
]
|
|
,rownumbers : true
|
|
,viewrecords : true
|
|
,height : 420
|
|
,multiselect : true
|
|
,shrinkToFit : false
|
|
,autowidth : true
|
|
,sortable : false
|
|
,rowNum : 1000
|
|
,forceFit : false //컬럼의 width를 변화시킬때 그리드의 width를 고정 여부
|
|
,jsonReader : {repeatitems: false}
|
|
,mtype :"POST"
|
|
,loadComplete: function(){}
|
|
});
|
|
|
|
//gridFn.search();
|
|
|
|
//gridFn.addRow();
|
|
|
|
if("${insertVal}" == 'regist'){
|
|
setTimeout(function() {
|
|
gridFn.addRowAuto();
|
|
}, 1000);
|
|
}else{
|
|
gridFn.search();
|
|
}
|
|
|
|
});
|
|
</script>
|
|
<script>
|
|
|
|
var gridFn = {
|
|
addRow : function() {
|
|
var newId = grid.getGridParam("reccount")+1;
|
|
var addData = {
|
|
"TIME_SHEET_OBJID": "${objId}",
|
|
"SYSTEM_REG_USER_ID" : "${writer}",
|
|
"WORK_DATE" : "",
|
|
"PROJECTNO" : "",
|
|
"DEPT_ID" : "",
|
|
"REG_USER_ID" : "",
|
|
"BUS_CD" : "",
|
|
"TITLE" : "",
|
|
"TRIP_CD" : "",
|
|
"COMPANY_CD" : "",
|
|
"WORK_TIME" : "",
|
|
};
|
|
grid.addRowData(newId, addData);
|
|
grid.jqGrid("editRow", newId);
|
|
}
|
|
,addRowAuto : function() {
|
|
for(var i = 0; i < 10; i++){
|
|
var newId = grid.getGridParam("reccount")+1;
|
|
var addData = {
|
|
"TIME_SHEET_OBJID": "${objId}",
|
|
"SYSTEM_REG_USER_ID" : "${writer}",
|
|
"WORK_DATE" : "",
|
|
"PROJECTNO" : "",
|
|
"DEPT_ID" : "",
|
|
"REG_USER_ID" : "",
|
|
"BUS_CD" : "",
|
|
"TITLE" : "",
|
|
"TRIP_CD" : "",
|
|
"COMPANY_CD" : "",
|
|
"WORK_TIME" : "",
|
|
};
|
|
grid.addRowData(newId, addData);
|
|
grid.jqGrid("editRow", newId);
|
|
}
|
|
//grid.jqGrid("setSelection","1",true);
|
|
}
|
|
,getStep2Cd : function(obj){ //2단계연결코드 재설정
|
|
var gridUserselectArr = $.parseJSON($("#gridUserselect").val());
|
|
var targetObj = $("#"+$(obj).attr("rowid")+"_REG_USER_ID");
|
|
targetObj.empty(); //초기화
|
|
targetObj.append("<option value=\"\">선택</option>");
|
|
for(var i=0; i<gridUserselectArr.length; i++){
|
|
cd = gridUserselectArr[i];
|
|
if(cd["DEPT_CODE_ID"]==obj.value){
|
|
targetObj.append("<option role=\"option\" value=\""+cd["CODE_ID"]+"\">"+cd["CODE_NAME"]+"</option>");
|
|
}
|
|
};
|
|
if($("#"+$(obj).attr("rowid")+"_DEPT_ID").val() == "MM"){
|
|
targetObj.append("<option role=\"option\" value=\""+ "OUT1" +"\">"+"외주인A"+"</option>");
|
|
targetObj.append("<option role=\"option\" value=\""+ "OUT2" +"\">"+"외주인B"+"</option>");
|
|
}
|
|
|
|
}
|
|
,search : function() {
|
|
grid.setGridParam({
|
|
url: "/costMgmt/laborCostTimeSheetDetailList.do"
|
|
,datatype : "json"
|
|
,postData : {"objId" : "${objId}","dpet_val" : "${dpet_val}","regUserId" : "${regUserId}","outVal":"${outVal}"}
|
|
,loadComplete : function(data) {
|
|
//gridFn.timeSummary();
|
|
//gridFn.setExpSortCd();
|
|
//console.log(data);
|
|
|
|
for(var i = 0; data.rows.length > i; i++){
|
|
if("${writer}" != $("#"+(i+1)+"_SYSTEM_REG_USER_ID" ).val()){
|
|
$("#"+(i+1)+"_TIME_SHEET_OBJID" ).attr('disabled', 'disabled');
|
|
$("#"+(i+1)+"_SYSTEM_REG_USER_ID" ).attr('disabled', 'disabled');
|
|
$("#"+(i+1)+"_WORK_DATE" ).attr('disabled', 'disabled');
|
|
$("#"+(i+1)+"_PROJECTNO" ).attr('disabled', 'disabled');
|
|
$("#"+(i+1)+"_DEPT_ID" ).attr('disabled', 'disabled');
|
|
$("#"+(i+1)+"_REG_USER_ID" ).attr('disabled', 'disabled');
|
|
$("#"+(i+1)+"_BUS_CD" ).attr('disabled', 'disabled');
|
|
$("#"+(i+1)+"_TITLE" ).attr('disabled', 'disabled');
|
|
$("#"+(i+1)+"_TRIP_CD" ).attr('disabled', 'disabled');
|
|
$("#"+(i+1)+"_COMPANY_CD" ).attr('disabled', 'disabled');
|
|
$("#"+(i+1)+"_WORK_TIME" ).attr('disabled', 'disabled');
|
|
}
|
|
}
|
|
gridFn.setAddWorkTime();
|
|
}
|
|
,gridComplete : function() {
|
|
gridFn.opennEdit(); //수정가능
|
|
}
|
|
}).trigger("reloadGrid");
|
|
grid.setGridParam({url: "", datatype : "local"});
|
|
}
|
|
,opennEdit : function() { //수정가능
|
|
var ids = grid.jqGrid("getDataIDs");
|
|
for (var i = 0; i < ids.length; i++) {
|
|
grid.jqGrid("editRow",ids[i]);
|
|
}
|
|
}
|
|
,closeEdit2 : function() { //수정불가
|
|
var ids = grid.jqGrid("getDataIDs");
|
|
|
|
for (var i = 0; i < ids.length; i++) {
|
|
var num = i+1;
|
|
var wtCnt =$("#"+num+"_PROJECTNO option:selected").val();
|
|
if(wtCnt != ""){
|
|
grid.jqGrid("saveRow", ids[i], /*successFunction*/null, /*url*/"clientArray"/*, extraparam, aftersavefunc,errorfunc, afterrestorefunc*/);
|
|
}
|
|
}
|
|
}
|
|
,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*/);
|
|
}
|
|
}
|
|
,timeSummary: function(e){ //자동합계
|
|
var targetId = e.id;
|
|
var num = targetId.substring(0,1);
|
|
var PROJECTNO = $("#"+num+"_PROJECTNO option:selected").val();
|
|
var REG_USER_ID = $("#"+num+"_REG_USER_ID option:selected").val();
|
|
var DEPT_ID = $("#"+num+"_DEPT_ID option:selected").val();
|
|
var WORK_TIME = $("input[id="+num+"_WORK_TIME]").val();
|
|
|
|
$.ajax({
|
|
url:"/costMgmt/getTimeSheetAddworkTime.do"
|
|
,type:"POST"
|
|
,data: {"PROJECTNO":PROJECTNO,"REG_USER_ID":REG_USER_ID,"DEPT_ID":DEPT_ID}
|
|
,dataType:"json"
|
|
,success:function(data){
|
|
var ADD_WORK_TIME = data.rows[0].ADD_WORK_TIME;
|
|
if("${insertVal}" == 'regist'){
|
|
var all = parseInt(WORK_TIME) + parseInt(ADD_WORK_TIME);
|
|
} else {
|
|
var all = parseInt(WORK_TIME);
|
|
}
|
|
|
|
$("input[id="+num+"_ADD_WORK_TIME]").val(parseInt(all));
|
|
|
|
}
|
|
,error: function(jqxhr, status, error){
|
|
}
|
|
});
|
|
}
|
|
,setAddWorkTime: function(){
|
|
var add = 0;
|
|
|
|
$("input[id*=WORK_TIME]").each(function(){
|
|
add += Number($(this).val());
|
|
});
|
|
|
|
if("${insertVal}" != 'regist'){
|
|
$(".add_time").text("누적시간: "+add);
|
|
}
|
|
},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--){
|
|
if(grid.jqGrid('getCell', selectedRowIds[i], 'WRITER')=="${connectUserId}"){
|
|
//Swal.fire(grid.jqGrid('getCell', selectedRowIds[i], 'TIME_SHEET_OBJID'));
|
|
fn_del(grid.jqGrid('getCell', selectedRowIds[i], 'TIME_SHEET_OBJID'));
|
|
grid.delRowData(selectedRowIds[i]);
|
|
}
|
|
if(grid.jqGrid('getCell', selectedRowIds[i], 'WRITER')==""){
|
|
grid.delRowData(selectedRowIds[i]);
|
|
}
|
|
|
|
if(selectedRowIds.length==i){
|
|
if(typeof opener.fn_search =="function"){ opener.fn_search() };
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
function fn_save(){
|
|
if(fnc_valitate("form1")){
|
|
//console.log(encodeURIComponent(JSON.stringify(grid.getRowData())));
|
|
//Swal.fire(encodeURIComponent(JSON.stringify(grid.getRowData())));
|
|
if(confirm("저장 하시겠습니까?")){
|
|
gridFn.closeEdit();
|
|
$.ajax({
|
|
url:"/costMgmt/timeSheetListSave.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 fn_del(objId){
|
|
$.ajax({
|
|
url:"/costMgmt/timeSheetListDelete.do"
|
|
,type:"POST"
|
|
,data: {"TIME_SHEET_OBJID":objId}
|
|
,dataType:"json"
|
|
,success:function(data){
|
|
|
|
}
|
|
,error: function(jqxhr, status, error){
|
|
}
|
|
});
|
|
}
|
|
</script>
|
|
</head>
|
|
<body>
|
|
<form name="form1" id="form1" action="" method="post">
|
|
<input type="hidden" name="objId" id="objId">
|
|
<div sytle="">
|
|
<section>
|
|
<div class="plm_menu_name">
|
|
<h2>
|
|
<span>원가관리_Time Sheet</span>
|
|
</h2>
|
|
</div></section>
|
|
<section class="contents_page_basic_margin">
|
|
<div class="btn_wrap" style="margin-top:10px">
|
|
<span style="font-size:13px; color:red; text-align: left;" class="add_time"></span>
|
|
<div class="plm_btn_wrap">
|
|
<input type="button" class="plm_btns" value="저장" onclick="fn_save();">
|
|
<input type="button" class="plm_btns" value="삭제" id="btnDel">
|
|
<input type="button" value="닫기" id="btnClose" class="plm_btns">
|
|
</div>
|
|
</div>
|
|
<div id="plm_table_wrap1" style="padding:0;">
|
|
<div style="">
|
|
<div style="height: 250px;">
|
|
<table id="timeSheetPopupGrid"></table>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</section>
|
|
</div>
|
|
<input type="hidden" name="objId" id="objId" value="${objId}">
|
|
<textarea style="width:0px; height:0px; visibility: hidden;" id="gridProjectNo">${code_map.gridProjectNo}</textarea>
|
|
<textarea style="width:0px; height:0px; visibility: hidden;" id="gridDeptselect">${code_map.gridDeptselect}</textarea>
|
|
<textarea style="width:0px; height:0px; visibility: hidden;" id="gridDivisionCd">${code_map.gridDivisionCd}</textarea>
|
|
<textarea style="width:0px; height:0px; visibility: hidden;" id="gridFactoryCd">${code_map.gridFactoryCd}</textarea>
|
|
<textarea style="width:0px; height:0px; visibility: hidden;" id="gridCustomerCd">${code_map.gridCustomerCd}</textarea>
|
|
<textarea style="width:0px; height:0px; visibility: hidden;" id="gridUserselect">${code_map.gridUserselect}</textarea>
|
|
|
|
</form>
|
|
</body>
|
|
</html> |