/*******************************************************************************
*
* 考勤管理-考勤计算js
*
*
*
* 作者:hugh zhuang
* 邮箱:zhuangxh@jee-soft.cn
* 日期:2015-06-01-上午11:10:52
* 版权:广州宏天软件有限公司版权所有
*
*
******************************************************************************/
var AtsAttenceCalculatePlugin = null;
;(function($, window, document, undefined) {
var pluginName = "AtsAttenceCalculate",
defaults = {
},
me,
_attencePolicyId = null,
_startTime = null,
_endTime = null,
_sidValue = [];
function Plugin(element, options) {
this.settings = $.extend({}, defaults, options);
this._defaults = defaults;
this._name = pluginName;
this.init();
}
Plugin.prototype = {
init:function(){
me = this;
AtsAttenceCalculatePlugin = this;
this.initAttenceCycle();
//选择tab
$('.nav-tabs > li').click(function(){
var $this = $(this);
if($this.hasClass('active'))
return ;
$this.siblings('li').removeClass('active');
$this.addClass("active");
me. searchGrid();
});
//加载数据
this.loadGrid();
//查询
$('a.fa-search').click(function(){
me.searchGrid();
});
$('a.allCalculate').click(function(){
me.startUpdateCalculatingStatus();
me.calculate();
});
$('a.calculateSelect').click(function(){
var selectedIds = $("#reportGrid").jqGrid('getGridParam','selarrrow');
if (selectedIds == null || selectedIds.length < 1) {
$.ligerDialog.alert("请选择要计算的人员!","提示信息");
return;
}
var fileIds = [];
for (var i = 0; i < selectedIds.length; i++) {
var rowData = $("#reportGrid").jqGrid("getRowData", selectedIds[i]);
if(!rowData.fileId) continue
fileIds.push(rowData.fileId);
}
me.startUpdateCalculatingStatus();
me.calculate(fileIds.join(","));
});
$('a.summary').click(function(){
var url=__ctx + "/platform/ats/atsAttenceCalculateSet/edit.ht?type=1";
url=url.getNewUrl();
DialogUtil.open({
height:400,
width: 500,
title : '汇总显示',
url: url,
isResize: true,
sucCall:function(rtn){
// me.loadGrid();
}
});
});
$('a.detail').click(function(){
var url=__ctx + "/platform/ats/atsAttenceCalculateSet/edit.ht?type=2";
url=url.getNewUrl();
DialogUtil.open({
height:400,
width: 500,
title : '明细显示',
url: url,
isResize: true,
sucCall:function(rtn){
// me.loadGrid();
}
});
});
$('a.export').click(function(){
var action = $('.nav-tabs > li.active').attr("action");
$('#action').val(action);
$('#orgPath1').val($('#orgId').val())
$('#fullname1').val($('#fullname').val())
$('#attencePolicy1').val($('#attencePolicy').val());
// var attenceCycleOption = $("#attenceCycle").find("option:selected");
$('#startTime1').val($('#startTime').val());
$('#endTime1').val($('#endTime').val());
var type = $('#attenceType').val();
if(!$.isEmpty(type))
type =type.join(",");
else
type ="";
$('#attenceType1').val(type);
$.ligerDialog.waitting("请稍后……");
$("#exportForm").submit();
var isDownload = window.setInterval(function() {
$.ajax({
type : "POST",
dataType:"json",
url :__ctx+"/platform/ats/atsAttenceCalculate/isDownload.ht",
success : function(data) {
if(data.success){
$.ligerDialog.closeWaitting();
clearInterval(isDownload);
}
}
});
}, 1000);
});
this.handleSearchKeyPress();
$("#attenceType").multiselect({
noneSelectedText: "=请选择=",
checkAllText: "全选",
uncheckAllText: '全不选',
selectedText: '# 已选择'
});
},
//开启检测后台计算session的状态的定时器,更新数据
startUpdateCalculatingStatus:function(){
var updateCalculatingStatus=window.setInterval(function() {
$.post(__ctx+"/platform/ats/atsAttenceCalculate/getCalculatingState.ht",{},
function (data, textStatus){
if(data.status){
$.ligerDialog.closeWaitting();
$.ligerDialog.waitting(data.msg);
}else{
clearInterval(updateCalculatingStatus);
}
},
"json");
}, 3000);
},
/**
* 处理回车查询
*/
handleSearchKeyPress:function (){
$(".search-form :input").keypress(function(e) {
if( e.keyCode == 13){//回车
$("a.fa-search").click();
}else if(e.keyCode == 27){//ESC
}
})
},
initAttenceCycle:function(){
var date = new Date();
var ydate = date.Format("yyyy-MM");
$('#attenceCycle').val(ydate);
},
searchGrid:function(){
var flag= me.getInitVal();
if(flag){
return;
}
$.ligerDialog.waitting("请稍后……");
var action = $('.nav-tabs > li.active').attr("action");
$('#attenceTypeLi').hide();
$('#abnormityLi').hide();
if(action == "1"){//已计算人员
me.loadGrid();
} else if(action == "2"){//未计算人员
me.loadNoUserGrid();
} else if(action == "3"){//结果明细
$('#abnormityLi').show();
$('#attenceTypeLi').show();
me.loadResultDetailGrid();
}
},
/**
* 计算数据
*/
calculate:function(fileIds){
var action = $('.nav-tabs > li.active').attr("action");
if(action == "3"){
$.ligerDialog.alert("该视图不进行计算!","提示信息");
return;
}
var flag = me.getInitVal();
if(flag){
return;
}
$.ligerDialog.waitting("请稍后……");
me.remoteCall(
{method : "calculate",
param : {
"startTime" : _startTime,
"endTime" : _endTime,
"attencePolicyId" : _attencePolicyId,
"fileIds":fileIds?fileIds:''
},
success : function(data) {
$.ligerDialog.closeWaitting();
if(data.success)
me.searchGrid();
}
});
},
getInitVal: function(){
_attencePolicyId = $('#attencePolicy').val();
// var attenceCycleOption = $("#attenceCycle").find("option:selected");attenceCycleOption.
_startTime = $('#startTime').val();
_endTime = $('#endTime').val();
if($.isEmpty(_attencePolicyId) ){
$.ligerDialog.alert("请选择考勤制度");
return true;
}
if($.isEmpty(_startTime) ){
$.ligerDialog.alert("请输入开始时间");
return true;
}
if($.isEmpty(_endTime) ){
$.ligerDialog.alert("请输入结束时间");
return true;
}
return false;
},
remoteCall:function(conf){
var url = conf.url;
if(conf.method)
url = __ctx+"/platform/ats/atsAttenceCalculate/"+conf.method+".ht";
$.ajax({
type : "POST",
url :url,
data : conf.param?conf.param:{},
success : function(data) {
conf.success.call(this,data);
}
});
},
loadGrid:function(){
$('#dataGrid').empty();
$('#dataGrid')
.append(
' ');
this.renderDataGrid("getGridColModel");
},
renderDataGrid:function(method){
me.getInitVal();
me.remoteCall({
method : method,
param : {
"startTime" : _startTime,
"endTime" : _endTime,
"attencePolicyId" : _attencePolicyId
},
success : function(data) {
me.doRenderDataGrid(data);
}
});
},
doRenderDataGrid : function(data) {
var table = $("#reportGrid");
var url = __ctx+"/platform/ats/atsAttenceCalculate/reportGrid.ht";
var colNames = data.colNames;
var colModel = data.colModel;
var options = {
url : url,
postData:{
"orgPath":$('#orgId').val(),
"Q_fullname_SL":$('#fullname').val(),
"Q_beginattenceTime_DL":_startTime,
"Q_endattenceTime_DE":_endTime,
"Q_attencePolicy_L":_attencePolicyId,
"Q_account_S":$('#account').val()
},
datatype : "json",
multiselect : true,
rownumbers : false,
colNames : colNames,
colModel : colModel,
rowNum : 30,
// pager : '#gridPager1',
autoheight : true,
height : 'auto',
width:document.body.clientWidth-30,
gridview : true,
pginput : true,
shrinkToFit :colModel.length > 10 ? false
: true,
autoScroll: true,
viewrecords : true,
rowNum : 10,// 每页显示记录数
rowList : [ 10, 20, 50, 100],// 用于改变显示行数的下拉列表框的元素数组。
jsonReader : {
root : "results",// json中代表实际模型数据的入口
total : "total", // json中代表总页数的数据
page : "page", // json中代表当前页码的数据
records : "records",// json中代表数据行总数的数据
repeatitems :false
// 如果设为false,则jqGrid在解析json时,会根据name来搜索对应的数据元素(即可以json中元素可以不按顺序);而所使用的name是来自于colModel中的name设定。
},
prmNames : {
page : "page", // 表示请求页码的参数名称
rows : "pageSize" // 表示请求行数的参数名称
},
pager : $('#gridPager1'),
grouping : true,
groupingView : {
groupField : [ 'orgName' ],
groupColumnShow : [ false ],
groupText : [ '{0}' ],
groupCollapse : false,
groupOrder : [ 'asc' ],
groupSummary : [ true ],
groupDataSorted : true,
showSummaryOnHide : true
},
onCellSelect : function(rowid, index, contents,event) {
if (index == 0)
return;
var data = $("#reportGrid").jqGrid("getRowData", rowid),
fileId = data['fileId'],colName = colModel[index - 1].name,
userName = data['userName'];
//
if ( colName == 'account' ||colName == 'userName') {
me.showCalendarDetailAction(fileId,userName,_startTime,_endTime);
}else if (colName.substring(0, 1) == "S") {
if (contents == 0) {
$.ligerDialog.alert("该汇总项没有明细!","提示信息");
return;
}
me.showSummaryDetailAction(fileId,userName,colName,colModel[index - 1].label,_startTime,_endTime);
}else {
me.showBillDetailAction(fileId,userName,colModel[index - 1].index);
}
},
onSelectRow : function(id) {
jQuery('#reportGrid').jqGrid('editRow', id,
false, function() {
});
//_sidValue
// sidValue.push(id);
// lastsel2 = id;
// $("#reportGrid")
// .attr("sid", sidValue.join(","));
},
gridComplete : function() {
$.ligerDialog.closeWaitting();
}
};
$("#reportGrid").html();
$("#reportGrid").jqGrid(options);
// $("#reportGrid").jqGrid('setFrozenColumns');
var h= (document.body.clientHeight)+'px';
$('#reportGrid .ui-jqgrid-bdiv').css('height', h).css(
'width', '100%').css('overflow-y', 'scroll',
'overflow-x', 'scroll');
$('#reportGrid .ui-jqgrid .ui-jqgrid-htable th div').css('height','35px');
},
/**
* 展示日历
*/
showCalendarDetailAction:function(fileId,userName,startTime,endTime){
var url=__ctx + "/platform/ats/atsAttenceCalculate/calendar.ht?fileId="
+fileId+"&startTime="+startTime+"&endTime="+endTime;
url=url.getNewUrl();
DialogUtil.open({
height:600,
width: 800,
title : userName+"("+startTime+"--"+endTime+")",
url: url,
isResize: true
});
},
/**
* 汇总明细
*/
showSummaryDetailAction:function(fileId,userName,colName,collabel,startTime,endTime){
var url=__ctx + "/platform/ats/atsAttenceCalculate/summary.ht?fileId="
+fileId+"&startTime="+startTime+"&endTime="+endTime+"&colName="+colName;
url=url.getNewUrl();
DialogUtil.open({
height:600,
width: 800,
title : userName+"["+collabel+"]("+startTime+"--"+endTime+")",
url: url,
isResize: true
});
},
/**
* 详细明细
*/
showBillDetailAction:function(fileId,userName,colName){
var url=__ctx + "/platform/ats/atsAttenceCalculate/bill.ht?fileId="
+fileId+"&colName="+colName;
url=url.getNewUrl();
DialogUtil.open({
height:600,
width: 800,
title : userName+"["+colName+"]---考勤记录",
url: url,
isResize: true
});
},
/**
* 没有计算的人员数据
*/
loadNoUserGrid:function(){
var conf = {
url:__ctx+"/platform/ats/atsAttenceCalculate/getNoneCalList.ht",
colNames : [ 'fileId', '考勤编号', '工号', '姓名', '组织', '岗位' ],
colModel : [ {
name : 'fileId',
hidden : true
}, {
name : 'cardNumber'
}, {
name : 'account',
width : 80
}, {
name : 'userName'
}, {
name : 'orgName'
}, {
name : 'posName'
} ],
multikey:"fileId",
};
me.renderReportGrid(conf);
},
/**
* 结果汇总明细
*/
loadResultDetailGrid:function(){
var conf = {
url:__ctx+"/platform/ats/atsAttenceCalculate/detailList.ht",
colNames : [ 'id', '姓名', '工号', '组织', '考勤日期',"星期","班次名称","是否异常","类型","第一段上班","第一段下班","第二段上班","第二段下班", "第三段上班","第三段下班"],
colModel : [ {
name : 'id',
hidden : true
}, {
name : 'userName',
width : 80
}, {
name : 'account',
width : 80
}, {
name : 'orgName',
width : 80
}, {
name : 'attenceTime',
width : 80
}, {
name : 'week',
width : 80
},{
name : 'shiftName',
width : 80
},{
name: 'abnormity',
width : 80
},{
name : 'attenceType',
width : 80
},{
name : 'shiftTime11',
width : 80
},{
name : 'shiftTime12',
width : 80
}, {
name : 'shiftTime21',
width : 80
},{
name : 'shiftTime22',
width : 80
},{
name : 'shiftTime31',
width : 80
},{
name : 'shiftTime32',
width : 80
} ],
multikey:"id",
};
me.renderReportGrid(conf);
},
renderReportGrid:function(conf){
$('#dataGrid').empty();
$('#dataGrid').append(' ');
var type = $('#attenceType').val();
if(!$.isEmpty(type))
type =type.join(",");
else
type ="";
var options = {
url:conf.url,
postData:{
"orgPath":$('#orgId').val(),
"Q_fullname_SL":$('#fullname').val(),
"Q_account_S":$('#account').val(),
"Q_beginattenceTime_DL":_startTime,
"Q_endattenceTime_DE":_endTime,
"Q_attencePolicy_L":_attencePolicyId,
"type":type,
"Q_abnormity_S":$("#abnormity").val()
},
datatype : "json", // 数据来源,本地数据
mtype : "POST",// 提交方式
height : document.body.clientHeight - 265,// 高度,表格高度。可为数值、百分比或'auto'
width : document.body.clientWidth - 30,
colNames :conf.colNames,
colModel : conf.colModel,
multikey : conf.multikey?conf.multikey:"id",
multiselect : true,
rownumbers : true,// 添加左侧行号
viewrecords : true,// 是否在浏览导航栏显示记录总数
rowNum : 10,// 每页显示记录数
rowList : [ 10, 20, 50, 100],// 用于改变显示行数的下拉列表框的元素数组。
jsonReader : {
root : "results",// json中代表实际模型数据的入口
total : "total", // json中代表总页数的数据
page : "page", // json中代表当前页码的数据
records : "records",// json中代表数据行总数的数据
repeatitems :false
// 如果设为false,则jqGrid在解析json时,会根据name来搜索对应的数据元素(即可以json中元素可以不按顺序);而所使用的name是来自于colModel中的name设定。
},
prmNames : {
page : "page", // 表示请求页码的参数名称
rows : "pageSize" // 表示请求行数的参数名称
},
shrinkToFit : conf.colModel.length > 10 ? false:true,
pager : $('#gridPager1'),
gridComplete : function() {
$.ligerDialog.closeWaitting();
}
};
$("#reportGrid").html();
$("#reportGrid").jqGrid(options);
}
}
$.fn[pluginName] = function(options) {
return this
.each(function() {
if (!$.data(this, "plugin_" + pluginName)) {
$.data(this, "plugin_" + pluginName, new Plugin(this,
options));
}
});
};
})(jQuery, window, document);
$(document).ready(function() {
$('body').AtsAttenceCalculate();
});
function selectAttencePolicy(){
AtsAttencePolicyDialog({
isSingle:true,
callback:function(data){
$('#attencePolicy').val(data.id);
$('#attencePolicyName').val(data.name);
}
})
}
function selectOrg(){
OrgDialog({isSingle:true,callback:function(orgId,orgName){
$('#orgId').val(orgId);
$('#orgName').val(orgName);
}});
}
function selectUser(){
UserDialog({isSingle:true,callback:function(userId,userName){
$('#userId').val(userId);
$('#userName').val(userName);
}});
}