HnRealNameBmwWeb/js/work/person/reportStatistics/salaryPaymentStatisticsForm.js

380 lines
15 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

var example = null;
var pers = null;
var isSelected = [];
var id=localStorage.getItem("id");
var teamName = localStorage.getItem("teamName");
var subName = localStorage.getItem("subName");
var proName = localStorage.getItem("proName");
var year = localStorage.getItem("year");
var month = localStorage.getItem("month");
var seTime = localStorage.getItem("seTime");
$(function () {
layui.use(['layer', 'laydate', 'form'], function () {
var layer = layui.layer;
var laydate = layui.laydate;
var form = layui.form;
$("#years").html(year+"年"+month+"月");
$("#proName").html("工程名称:"+proName);
$("#subName").html(subName+" "+teamName);
var minListDate = $('#hidMinListDate').val();//最小可选时间1990-02-01
var maxListDate = $('#hidMaxListDate').val();//最大可选时间2200-12-31
$('#startTime').val(getNowTime());
$('#endTime').val(getNowTime());
var begin = "#startTime", end = "#endTime";//开始时间选择框、结束时间选择框:文本框
var endChange = function (val, date) {
if (date && date.year)
begindate.config.max = {
year: date.year,
month: date.month - 1,//必须减1才是正确值
date: date.date,
hours: date.hours,
minutes: date.minutes,
seconds: date.seconds
};
else {
var dateInit = new Date(maxListDate.replace(/-/g, "/"));
begindate.config.max = {
year: dateInit.getFullYear(),
month: dateInit.getMonth(),
date: dateInit.getDate(),
hours: dateInit.getHours(),
minutes: dateInit.getMinutes(),
seconds: dateInit.getSeconds()
};
}
};
var beginChange = function (val, date) {
if (date && date.year)
enddate.config.min = {
year: date.year,
month: date.month - 1,
date: date.date,
hours: date.hours,
minutes: date.minutes,
seconds: date.seconds
};
else {
var dateInit = new Date(minListDate.replace(/-/g, "/"));
enddate.config.min = {
year: dateInit.getFullYear(),
month: dateInit.getMonth(),
date: dateInit.getDate(),
hours: dateInit.getHours(),
minutes: dateInit.getMinutes(),
seconds: dateInit.getSeconds()
};
}
};
var enddate = laydate.render({
elem: end,
format: 'yyyy-MM-dd',
min: minListDate,
max: maxListDate,
done: endChange
});
var begindate = laydate.render({
elem: begin,
format: 'yyyy-MM-dd',
min: minListDate,
max: maxListDate,
done: beginChange
});
getPro("");
form.on('select(proId)', function (data) {
getTeam(data.value,"");
});
init();
pers = checkPermission();
$("#searchBt").click(function () {
example.ajax.reload();
});
});
})
function init() {
var seTimes = seTime.split("~");
example =
$('#dt-table').DataTable({
"sort": false,
'paging':false, //取消分页
"searching": false,
"processing": true, //加载数据时显示进度状态
"serverSide": true,
"language": {
"url": ctxPath + "/js/plugin/datatables/Chinese.lang"
},
"ajax": {
"url": ctxPath + "/salaryPaymentStatistics/getSalaryPaymentStatisticsByTeamPro",
"type": "get",
"data": function (d) {
d.keyWord = $("#keyWord").val();
d.id=id;
d.startTime = seTimes[0];
d.endTime = seTimes[1];
},
"error": function (xhr, textStatus, errorThrown) {
var msg = xhr.responseText;
var response = JSON.parse(msg);
var code = response.code;
var message = response.message;
if (code == 400) {
layer.msg(message);
} else if (code == 401) {
localStorage.removeItem("token");
layer.msg("token过期请先登录", {shift: -1, time: 1000}, function () {
location.href = ctxPath + '/login.html';
});
} else if (code == 403) {
console.log("未授权:" + message);
layer.msg('未授权');
} else if (code == 500) {
console.log('系统错误:' + message);
}
}
},
"drawCallback": function() {
// alert( '表格重绘了' );
var thisDataTable = $('#dt-table').DataTable();
$(".pagination").append("<li>" +
"<a class='paginate_button' style='padding:4px;' href='#' tabindex='0'>到 <input style='margin:0px;width:40px;' id='changePage'> 页</a>" +
"<a class='paginate_button' style='margin-bottom:1px' href='#' tabindex='0' id='dataTable-btn'>确认</a></li>");
//点击按钮跳转指定页数
$('#dataTable-btn').click(function (e) {
if ($("#changePage").val() && $("#changePage").val() > 0) {
var redirectpage = $("#changePage").val() - 1;
} else {
var redirectpage = 0;
}
thisDataTable.page(redirectpage).draw( 'page' );
});
//敲击回车键跳转指定页数
$("#changePage").keypress(function (e) {
if(event.keyCode==13){
if ($("#changePage").val() && $("#changePage").val() > 0) {
var redirectpage = $("#changePage").val() - 1;
} else {
var redirectpage = 0;
}
thisDataTable.page(redirectpage).draw( 'page' );
}
});
$("#num").text("已选0人");
},
"dom": "<'dt-toolbar'r>t<'dt-toolbar-footer'<'col-sm-4 col-xs-4 hidden-xs'i><'col-xs-8 col-sm-8' p v>>",
"columns": [
{
width: '40px',
data: function (row, type, set, meta) {
var c = meta.settings._iDisplayStart + meta.row + 1;
return c;
}
},
{"data": "teamMembers","width": '8%',},
{"data": "idNumber","width": '10%',},
{"data": "teamName","width": '8%',},
{"data": "postName","width": '8%',},
{"data": "checkNum","width": '8%',},
{"data": "payNum","width": '8%',},
{"data": "performanceCount","width": '8%',},
{"data": "withhold","width": '8%',},
{"data": "realPay","width": '8%',},
{"data": "bankName","width": '10%',},
{"data": "bankCardNum","width": '10%',},
/*{
"data": "",
"width":"6%",
"defaultContent": "",
"orderable": false,
"render": function (data, type, row) {
var paymentFlage = row['paymentFlage'];
var html = '';
html +="<div>";
if(paymentFlage == "1"){
html +="<span style='color:#9BCB6F;'>成功</span>";
}else {
html +="<span style='color:#DD365D;'>失败</span>";
}
html +="</div>";
return html;
}
},*/
// {"data": "remark","width": '8%',},
],
footerCallback: function (row, data, start, end, display) {
var api = this.api(), data;
var intVal = function (i) {
return typeof i === 'string' ?
i.replace(/[\$,]/g, '') * 1 :
typeof i === 'number' ? i : 0;
};
//出勤天数 api.column(0).data()是获取对应的数据 下标从0开始。
var checkNums = api.column(5).data().reduce(function (a, b) { return intVal(a) + intVal(b); }, 0);
checkNums = Number(checkNums);
checkNums = checkNums.toFixed(2);
//应发工资
var payNums = api.column(6).data().reduce(function (a, b) { return intVal(a) + intVal(b); }, 0);
payNums = Number(payNums);
payNums = payNums.toFixed(2);
//代扣
var withholds = api.column(8).data().reduce(function (a, b) { return intVal(a) + intVal(b); }, 0);
withholds = Number(withholds);
withholds = withholds.toFixed(2);
//实发工资
var realPays = api.column(9).data().reduce(function (a, b) { return intVal(a) + intVal(b); }, 0);
realPays = Number(realPays);
realPays = realPays.toFixed(2);
//api.column(0).footer 是放到对应的列表 下标从0开始。
$(api.column(5).footer()).html(
checkNums
);
$(api.column(6).footer()).html(
payNums
);
$(api.column(8).footer()).html(
withholds
);
$(api.column(9).footer()).html(
realPays
);
},
"order": [ [1, "asc"]] //在栏目列上显示排序功能
});
}
function getNums(that) {
// that.value = that.value.replace(/^0\.[5]$|^[1]d*$/,'');
var str = that.value;
if(str =="0.5" || str ==0.5){
that.value = str;
}else if(str =="1" || str ==1){
that.value = str;
}else{
that.value = "";
}
}
/**
* 详情
* */
function detailsView(id) {
$.ajax({
type: 'POST',
contentType: "application/x-www-form-urlencoded",
url: ctxPath + '/noSignalTeamApply/getNoSignalTeamApplyById',
data: {"id": id},
dataType: 'json',
success: function (data) {
var height = '750px';
var width = '850px';
var index = layer.open({
title: ['无信号班组申请web端打卡', 'color:#3B70A1;background-color:#E8ECEB;font-size:20px'],
type: 2,
content: 'noSignalTeamApplyForm.html',
area: [width, height],
maxmin: false,
btn: ['确定', '关闭'],
success: function (layero, index) {
var myIframe = window[layero.find('iframe')[0]['name']];
myIframe.setData(data);
},
yes: function (index, layero) {
// 获取弹出层中的form表单元素
var formSubmit = layer.getChildFrame('form', index);
console.log(formSubmit.find('button')[2]);
var submited = formSubmit.find('button')[2];
submited.click();
}
});
}
})
}
// 详情
function detailsBtn(id, permission, pers) {
if (permission != "") {
if ($.inArray(permission, pers) < 0) {
return "";
}
}
var btn = $("<button class='layui-btn layui-btn-xs' title='详情' onclick='detailsView(" + id + ")'>详情</button>");
return btn.prop("outerHTML");
}
/**
* 下载
*/
function download(){
var seTimea = seTime.split("~");
var startTime = seTimea[0];
var endTime = seTimea[1];
var token = localStorage.getItem("token");
var keyWord = $("#keyWord").val();
var loadingMsg = layer.msg('下载中,请稍候...', {icon: 16, scrollbar: false, time: 0});
var url = ctxPath + "/salaryPaymentStatistics/exportSalaryPaymentStatisticsByTeamPro?id=" + id + "&startTime=" + startTime+ "&endTime=" + endTime+ "&keyWord=" + keyWord + "&token=" + token;
var xhr = new XMLHttpRequest();
xhr.open("get", url, true);
xhr.responseType = "blob"; // 转换流
xhr.onload = function () {
layer.close(loadingMsg);
if (this.status === 200) {
var blob = this.response;
var a = document.createElement("a");
var url = window.URL.createObjectURL(blob);
a.href = url;
a.download = "工资支付结果详情表-"+proName + "项目"+ teamName + "班组" + year+ "年"+ month+"月" + ".xlsx"; // 文件名
}else {
layer.msg('发生异常,请稍后重试', {icon: 16, scrollbar: false, time: 2000});
}
a.click()
window.URL.revokeObjectURL(url)
};
xhr.send();
}
function getPro(proId) {
$("#proId").empty();
$.ajax({
type: 'POST',
url: ctxPath + '/noSignalTeamRecords/getPro',
data: {},
dataType: 'json',
success: function (data) {
if(data.length>0){
var str = '<option selected value="-1">请选择工程</option>';
for(var i = 0; i < data.length; i++) {
if(proId == data[i].id) {
str += '<option selected value=\'' + data[i].id + '\'>' + data[i].name + '</option>';
} else {
str += '<option value=\'' + data[i].id + '\'>' + data[i].name + '</option>';
}
}
$("#proId").append(str);
layui.form.render('select'); //这里就是我们要渲染的地方了
}
}
})
}
/**
* 获得当前时间 yyyy-MM-dd
* @returns {string}
*/
function getNowTime() {
var time = new Date();
var year = time.getFullYear();
var month = time.getMonth() + 1 >= 10 ? time.getMonth() + 1 : '0' + (time.getMonth() + 1);
var day = time.getDate() >= 10 ? time.getDate() : '0' + time.getDate();
return year + "-" + month + "-" + day;
}
//设置弹窗关闭
function reloading() {
var index = parent.layer.getFrameIndex(window.name); //先得到当前 iframe层的索引
parent.layer.close(index); //再执行关闭
window.parent.location.reload();
}