HnRealNameBmwWeb/js/work/person/wagesManage/wagesPaymentForm.js

457 lines
18 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 year = localStorage.getItem("year");
var month = localStorage.getItem("month");
var proId = localStorage.getItem("proId");
var proName = localStorage.getItem("proName");
var teamId = localStorage.getItem("teamId");
var teamName = localStorage.getItem("teamName");
var subId = localStorage.getItem("subId");
var subName = localStorage.getItem("subName");
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);
init();
pers = checkPermission();
$("#searchBt").click(function () {
example.ajax.reload();
});
/**
* 监听开关 状态 操作
*/
form.on('switch(switchTest)', function (data) {
/**
* 禁用标签
* 状态 赋值为 0
*/
var id = data.elem.getAttribute("switchId");
var ids = id.split("isjx");
var layerIndex = layer.load(3);
if ((this.checked ? 'true' : 'false') == 'false') {
$("#"+id).val("0");
var payNums = $("#yfgz"+ids[1]).val();
var performanceCount = 0; //应发绩效
var str = $("#dk"+ids[1]).val();
var realPay = Number(payNums) + Number(performanceCount) - Number(str) ;
$("#sfgz"+ids[1]).val(realPay);
totalPay();
} else {
/**
* 启动标签
* 状态 赋值为 1
*/
$("#"+id).val("1");
var payNums = $("#yfgz"+ids[1]).val();
var performanceCount = $("#yfjx"+ids[1]).val();; //应发绩效
var str = $("#dk"+ids[1]).val();
var realPay = Number(payNums) + Number(performanceCount) - Number(str) ;
$("#sfgz"+ids[1]).val(realPay);
totalPay();
}
layer.close(layerIndex);
});
$("#download").click(function () {
getDownloads();
});
$("#saveZipButton").click(function(){
importExcel();
});
});
})
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 + "/wagesPayment/getTeamPaymentByTeamPro",
"type": "get",
"data": function (d) {
d.id = id;
d.keyWord = $("#keyWord").val();
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);
}
}
},
"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": [
//复选框通过render渲染复选框
{
width: '5%',
"data": null,
"bSortable": false,
render: function (data, type, full, meta) {
var node = '';
for (var i = 0; i < isSelected.length; i++) {
if (full.id == isSelected[i]) {
full.isSelected = 1;
}
}
node = '<input class="checkall" name="checked" checked="checked" value=\"' + full.id + '\" type="checkbox" disabled />';
return node;
}
},
{
width: '5%',
data: function (row, type, set, meta) {
var c = meta.settings._iDisplayStart + meta.row + 1;
return c;
}
},
{"data": "teamMembers",width: '8%'},
{"data": "idNumber",width: '8%'},
{"data": "teamName",width: '5%'},
{"data": "postName",width: '5%'},
{"data": "checkNum",width: '5%'},
{"data": "",width: '8%',
//应发工资
"render":function (data,type,row) {
var payNum = row['payNum'];
if(payNum==null|| payNum=="null"){
payNum=0;
}
var payNums = Number(payNum);
payNums =payNums.toFixed(2);
var id = "yfgz"+ row['id'] ;
var html = '';
html += "<input type='text' class='checkall' style='text-align: center;border: 0px;' id='" + id + "' value='" + payNums + "' readonly />";
return html;
}
},
// { //绩效是否发放 1是0否
// "data": "",
// "defaultContent": "",width: '8%',
// "orderable": false,
// "render": function (data, type, row) {
// var id = "isjx"+ row['id'];
// var performanceFlage = row['performanceFlage'];
// var html = '';
// console.log(performanceFlage)
// if(performanceFlage==1){
// html += '<form class="layui-form"> <input type="checkbox" id='+id+' checked name="codeSwitch" lay-skin="switch" id="open" lay-filter="switchTest" ' +
// 'switchId=' + id + '' + ' lay-text="是|否" value=' + performanceFlage + '></form>';
// }else{
// html = '<form class="layui-form"> <input type="checkbox" id='+id+' name="codeSwitch" lay-skin="switch" switchId=' + id + ' lay-filter="switchTest"' +
// 'lay-text="是|否" value=' + performanceFlage + '></form>';
// }
// return html;
// }
// },
// {"data": "",width: '8%',
// //应发绩效
// "render":function (data,type,row) {
// var performanceCount = row['performanceCount'];
// if(performanceCount==null|| performanceCount=="null"){
// performanceCount=0;
// }
// var id = "yfjx"+ row['id'] ;
// var html = '';
// html += "<input type='text' style='text-align: center;border: 0px;' id='" + id + "' value='" + performanceCount + "' readonly />";
// return html;
// }
// },
{"data": "",width: '8%',
"render": function (data, type, row) {
var withhold = row['withhold'];
if(withhold == null || withhold=="null"){
withhold = 0;
}
var payNum = row['payNum'];
var id = row['id'] ;
var ids = "dk"+row['id'] ;
var html = '';
html += "<input type='text' maxlength='8' style='text-align: center;' id='" + ids + "' value='" + withhold + "' onchange='getWithhold(this,\""+id+"\",\""+payNum+"\")' onkeyup='clearNoNum(this)' />";
return html;
}
},
{"data": "",width: '8%',
"render":function (data,type,row) {
var realPay = row['realPay'];
if(realPay==null|| realPay=="null"){
realPay=0;
}
var realPays = Number(realPay);
realPays =realPays.toFixed(2);
var id = "sfgz"+ row['id'] ;
var html = '';
html += "<input type='text' maxlength='8' style='text-align: center;border: 0px;' id='" + id + "' value='" + realPays + "' readonly />";
return html;
}
},
{"data": "bankName",width: '10%'},
{"data": "bankCardNum",width: '8%'},
{"data": "autograph",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;
};
totalPay();
},
"fnDrawCallback": function() {
//重绘表格
layui.form.render('checkbox');//刷新值
},
"order": [ [1, "asc"]] //在栏目列上显示排序功能
});
}
function clearNoNum(obj){
//修复第一个字符是小数点 的情况.
if(obj.value !=''&& obj.value.substr(0,1) == '.'){
obj.value="";
}
obj.value = obj.value.replace(/^0*(0\.|[1-9])/, '$1');//解决 粘贴不生效
obj.value = obj.value.replace(/[^\d.]/g,""); //清除“数字”和“.”以外的字符
obj.value = obj.value.replace(/\.{2,}/g,"."); //只保留第一个. 清除多余的
obj.value = obj.value.replace(".","$#$").replace(/\./g,"").replace("$#$",".");
obj.value = obj.value.replace(/^(\-)*(\d+)\.(\d\d).*$/,'$1$2.$3');//只能输入二位个小数
if(obj.value.indexOf(".")< 0 && obj.value !=""){//以上已经过滤,此处控制的是如果没有小数点,首位不能为类似于 01、02的金额
if(obj.value.substr(0,1) == '0' && obj.value.length == 2){
obj.value= obj.value.substr(1,obj.value.length);
}
}
}
function getWithhold(that,id,payNum) {
var str = that.value; //代扣
if(Number(str) < Number(payNum)){
that.value = str;
var payNums = $("#yfgz"+id).val();
var isChock = $("#isjx"+id).val();
var performanceCount = 0;
if(isChock==1){
performanceCount = $("#yfjx"+id).val();
}
var realPay = Number(payNums) + Number(performanceCount) - Number(str) ;
if(realPay>0){
realPay =realPay.toFixed(2);
}else{
realPay = "0";
}
$("#sfgz"+id).val(realPay);
}else{
layer.confirm('不能大于'+payNum, {icon: 1, time: 10000});
that.value = "0";
return;
}
totalPay();
}
function totalPay() {
//出勤天数
var checkNums = 0;
//应发工资
var payNums = 0;
//其中代扣/代缴
var withholds = 0;
//实发工资
var realPays = 0;
var oTable = $('#dt-table').dataTable();
var rowcollection = oTable.$(".checkall:checked", {"page": "all"});
rowcollection.each(function (index, elem) {
var checkNum = $(elem).parent().next().next().next().next().next().next().text();
checkNums = Number(checkNums) + Number(checkNum);
var payNum = $(elem).parent().next().next().next().next().next().next().next().children().val();
payNums = Number(payNums) + Number(payNum);
var withhold = $(elem).parent().next().next().next().next().next().next().next().next().children().val();
withholds = Number(withholds) + Number(withhold);
var realPay = $(elem).parent().next().next().next().next().next().next().next().next().next().children().val();
realPays = Number(realPays) + Number(realPay);
});
$("#checkNums").html(checkNums.toFixed(2));
$("#payNums").html(payNums.toFixed(2));
$("#withholds").html(withholds.toFixed(2));
$("#realPays").html(realPays.toFixed(2));
}
//保存
function recordsBt(){
var id = [];
var performanceFlages =[]; //绩效发放和代扣状态修改
var withholds = []; //代扣
var oTable = $('#dt-table').dataTable();
var rowcollection = oTable.$(".checkall:checked", {"page": "all"});
console.log(rowcollection)
rowcollection.each(function (index, elem) {
// var performanceFlage = $(elem).parent().next().next().next().next().next().next().next().next().text();
// if(performanceFlage==" 是" || performanceFlage=="是"){
// performanceFlage = "1";
// }else{
// performanceFlage= "0"
// }
var performanceFlage = "1";
var withhold = $(elem).parent().next().next().next().next().next().next().next().next().children().val();
var checkbox_value = $(elem).val();
console.log(checkbox_value)
var strArr = checkbox_value.split(",");
id.push(strArr[0]);
performanceFlages.push(performanceFlage);
withholds.push(withhold);
});
$.ajax({
type: 'POST',
async: true, // 默认异步true,false表示同步
url: ctxPath + "/wagesPayment/updatePerformanceAndWithholdForPerson",
data: {
"id": id.toString(),
"performanceFlage": performanceFlages.toString(),
"withhold":withholds.toString(),
}, //获取提交的表单字段
success: function (data) {
console.log(data)
if (data.resMsg == "修改成功") {
parent.layer.msg('修改成功', {icon: 1, time: 2000});
setTimeout("reloading()", 2100);
} else if (data.resMsg == "修改失败") {
parent.layer.msg('修改失败', {icon: 2, time: 2000});
} else {
parent.layer.msg(data.resMsg, {icon: 2, time: 2000});
}
},
error: function (XMLHttpRequest, textStatus, e) {
layer.msg('数据请求发生异常,请稍后重试', {icon: 16, scrollbar: false});
}
});
}
//设置弹窗关闭
function reloading() {
var index = parent.layer.getFrameIndex(window.name); //先得到当前 iframe层的索引
parent.layer.close(index); //再执行关闭
window.parent.example.ajax.reload( null, false ); // 刷新页面
}
//下载
function getDownloads() {
var seTimeSe = seTime.split("~");
var startTime = seTimeSe[0];
var endTime = seTimeSe[1];
var keyWord = $("#keyWord").val();
var token = localStorage.getItem("token");
var loadingMsg = layer.msg('下载中,请稍候...', {icon: 16, scrollbar: false, time: 0});
var url = ctxPath + "/wagesPayment/exportWagesPaymentDownloads?id=" + id + "&type=3" + "&startTime=" + startTime + "&endTime=" + endTime + "&keyWord=" + keyWord + "&token=" + token;
console.log(url)
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();
}
//导入excel文件
function importExcel(){
var formData = new FormData($('form')[0]);
var name = $("#articleImageFile").val();
if(name==null|| name == "") {
return;
}
if(!(name.endsWith(".xls") || name.endsWith(".xlsx") || name.endsWith(".xlsm"))) {
layer.msg("请上传正确的Excel表格!");
$("#articleImageFile").val("");
return;
}
formData.append("id", id);
formData.append("year", year);
formData.append("month", month);
formData.append("file", $("#articleImageFile")[0].files[0]);
var idx = layer.msg('正在提交数据,请稍等...', {
icon: 16
,shade: 0.01
,time:'-1'
});
$.ajax({
url : ctxPath + "/wagesPayment/importExcel",
type : 'POST',
async : false,
data : formData,
timeout:20000,
// 告诉jQuery不要去处理发送的数据
processData : false,
// 告诉jQuery不要去设置Content-Type请求头
contentType : false,
success : function(data) {
layer.close(idx);
if(data.indexOf("导入成功") !=-1){
layer.alert(data, {icon: 1});
}else if(data.indexOf("导入失败") !=-1){
console.log(data)
layer.alert(data, {icon: 2});
}
example.ajax.reload(); // 刷新页面
},
error:function(XMLHttpRequest, textStatus, errorThrown) {
console.log(JSON.stringify(errorThrown));
layer.close(idx);
}
});
$("#articleImageFile").val("");
}