567 lines
23 KiB
JavaScript
567 lines
23 KiB
JavaScript
var example = null;
|
||
var pers = null;
|
||
var isSelected = [];
|
||
|
||
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 seTime = localStorage.getItem("seTime");
|
||
|
||
var date = seTime.split("~");
|
||
var startTime = date[0];
|
||
var endTime = date[1];
|
||
$(function () {
|
||
layui.use(['layer', 'laydate', 'form'], function () {
|
||
var layer = layui.layer;
|
||
var laydate = layui.laydate;
|
||
var form = layui.form;
|
||
$("#proName").html(proName);
|
||
$("#teamName").html(teamName);
|
||
$("#year").html(year);
|
||
$("#month").html(month);
|
||
init();
|
||
pers = checkPermission();
|
||
$("#searchBt").click(function () {
|
||
example.ajax.reload();
|
||
});
|
||
});
|
||
})
|
||
function init() {
|
||
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 + "/wagesGrant/getWagesInfos",
|
||
"type": "get",
|
||
"data": function (d) {
|
||
d.teamId = teamId;
|
||
d.proId = proId;
|
||
d.year = year;
|
||
d.month = month;
|
||
d.keyWord = $("#keyWord").val();
|
||
d.startTime = startTime;
|
||
d.endTime = endTime;
|
||
},
|
||
"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.idNumber + '\" type="checkbox" disabled />';
|
||
if (full.isSelected == 1) {
|
||
isSelected.push(full.id);
|
||
node = '<input class="checkall" name="checked" checked="checked" value=\"' + full.idNumber + '\" 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": "postName",width: '8%',},
|
||
|
||
{"data": "unitPrice",width: '8%'},
|
||
{"data": "checkNum",width: '8%'},
|
||
{"data": "",width: '8%',
|
||
"orderable": false,
|
||
"render": function (data, type, row,meta) {
|
||
var basePay = row['basePay'];
|
||
if(basePay==null|| basePay=="null"){
|
||
basePay=0;
|
||
}
|
||
var id = "dyxj"+ meta.row ;
|
||
var html = '';
|
||
html += "<input type='text' maxlength='8' style='text-align: center;border: 0px;width: 100%;' id='" + id + "' value='" + basePay + "' readonly />";
|
||
return html;
|
||
}
|
||
},
|
||
|
||
{ //加班天数
|
||
"data": "",
|
||
"defaultContent": "",width: '5%',
|
||
"orderable": false,
|
||
"render": function (data, type, row,meta) {
|
||
var overtimeday = row['overtimeday'];
|
||
if(overtimeday==null|| overtimeday=="null"){
|
||
overtimeday=0;
|
||
}
|
||
var id = "jbts"+ meta.row ;
|
||
var html = '';
|
||
html += "<input type='text' maxlength='8' style='text-align: center;width: 100%;' id='" + id + "' value='" + overtimeday + "' onchange='getOvertimePay(this,\""+meta.row+"\")' onkeyup='clearNoNum(this)' />";
|
||
return html;
|
||
}
|
||
},
|
||
{ //单价
|
||
"data": "",
|
||
"defaultContent": "",width: '5%',
|
||
"orderable": false,
|
||
"render": function (data, type, row,meta) {
|
||
var unitOvertimePay = row['unitOvertimePay'];
|
||
var id = "jbdj" + meta.row ;
|
||
var html = '';
|
||
html += "<input type='text' maxlength='8' style='text-align: center;width: 100%;' id='" + id + "' value='" + unitOvertimePay + "' onchange='getOvertimePays(this,\""+meta.row+"\")' onkeyup='clearNoNum(this)' />";
|
||
return html;
|
||
}
|
||
},
|
||
{ //小计
|
||
"data": "",
|
||
"defaultContent": "",width: '5%',
|
||
"orderable": false,
|
||
"render": function (data, type, row,meta) {
|
||
var overtimePay = row['overtimePay'];
|
||
overtimePay = Number(overtimePay)
|
||
overtimePay = overtimePay.toFixed(2);
|
||
var id = "jbxj" + meta.row ;
|
||
var html = '';
|
||
html += "<input type='text' maxlength='8' id='" + id + "' value='" + overtimePay + "' readonly style='border: 0px;text-align: center;width: 100%;' />";
|
||
return html;
|
||
}
|
||
},
|
||
{ //绩效奖金 单价
|
||
"data": "",
|
||
"defaultContent": "",width: '5%',
|
||
"orderable": false,
|
||
"render": function (data, type, row,meta) {
|
||
var unitPerformanceFee = row['unitPerformanceFee'];
|
||
var minAchievementsMoney = row['minAchievementsMoney'];
|
||
if(minAchievementsMoney==null|| minAchievementsMoney=="null"){
|
||
minAchievementsMoney=0;
|
||
}else{
|
||
minAchievementsMoney = minAchievementsMoney;
|
||
}
|
||
var maxAchievementsMoney = row['maxAchievementsMoney'];
|
||
if(maxAchievementsMoney==null|| maxAchievementsMoney=="null"){
|
||
maxAchievementsMoney=600;
|
||
}else{
|
||
maxAchievementsMoney = maxAchievementsMoney;
|
||
}
|
||
var id = "jxdj" + meta.row ;
|
||
var html = '';
|
||
html += "<input type='text' maxlength='8' style='text-align: center;width: 100%;' id='" + id + "' value='" + unitPerformanceFee + "' onchange='getNumAchievements(this,\""+meta.row+"\",\""+minAchievementsMoney+"\",\""+maxAchievementsMoney+"\")' onkeyup='clearNoNum(this)' />";
|
||
return html;
|
||
}
|
||
},
|
||
{ //考勤天数
|
||
"data": "",
|
||
"defaultContent": "",width: '5%',
|
||
"orderable": false,
|
||
"render": function (data, type, row,meta) {
|
||
var performanceDay = row['performanceDay'];
|
||
var checknumTotal = row['checknumTotal'];
|
||
if(checknumTotal==null|| checknumTotal=="null"){
|
||
checknumTotal = 0;
|
||
}
|
||
var id = "jxts" + meta.row ;
|
||
var html = '';
|
||
html += "<input type='text' maxlength='8' style='text-align: center;width: 100%;' id='" + id + "' value='" + performanceDay + "' onchange='getNumst(this,\""+meta.row+"\",\""+checknumTotal+"\")' onkeyup='clearNoNum(this)' />";
|
||
return html;
|
||
}
|
||
},
|
||
{ //小计
|
||
"data": "",
|
||
"defaultContent": "",width: '5%',
|
||
"orderable": false,
|
||
"render": function (data, type, row,meta) {
|
||
var performanceFeePay = row['performanceFeePay'];
|
||
performanceFeePay = Number(performanceFeePay)
|
||
performanceFeePay = performanceFeePay.toFixed(2);
|
||
var id = "jxxj" + meta.row ;
|
||
var html = '';
|
||
html += "<input type='text' maxlength='8' readonly id='" + id + "' value='" + performanceFeePay + "' style='text-align: center;border: 0px;width: 100%;'/>";
|
||
return html;
|
||
}
|
||
},
|
||
{ //报酬小计
|
||
"data": "",
|
||
"defaultContent": "",width: '5%',
|
||
"orderable": false,
|
||
"render": function (data, type, row,meta) {
|
||
var payNum = row['payNum'];
|
||
if(payNum==null||payNum=="null"){
|
||
payNum=0;
|
||
}
|
||
payNum = Number(payNum)
|
||
payNum = payNum.toFixed(2);
|
||
var id = "bcxj" + meta.row ;
|
||
var html = '';
|
||
html += "<input type='text' maxlength='8' id='" + id + "' value='" + payNum + "' readonly style='text-align: center;border: 0px;width: 100%;' />";
|
||
return html;
|
||
}
|
||
},
|
||
{"data": "performanceCount",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;
|
||
|
||
};
|
||
total();
|
||
},
|
||
"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 payNums(type) {
|
||
var dyxj = $("#dyxj"+type).val();
|
||
var jbxj = $("#jbxj"+type).val();
|
||
var jxxj = $("#jxxj"+type).val();
|
||
var bcxj = Number(dyxj) + Number(jbxj) + Number(jxxj);
|
||
bcxj =bcxj.toFixed(2);
|
||
$("#bcxj"+type).val(bcxj);
|
||
}
|
||
|
||
//计算合计的
|
||
function total() {
|
||
//当月发放基本工资
|
||
var basePayTotal = 0;
|
||
//加班费
|
||
var overtimePayTotal = 0;
|
||
//绩效奖金
|
||
var bonusTotal = 0;
|
||
//绩效奖金累计(含本月)
|
||
var bonusTotals = 0;
|
||
|
||
//报酬小计
|
||
var remunerationTotals = 0 ;
|
||
|
||
var oTable = $('#dt-table').dataTable();
|
||
var rowcollection = oTable.$(".checkall:checked", {"page": "all"});
|
||
rowcollection.each(function (index, elem) {
|
||
var basePay = $(elem).parent().next().next().next().next().next().next().next().children().val();
|
||
basePayTotal = Number(basePay) + Number(basePayTotal);
|
||
|
||
var overtimePay = $(elem).parent().next().next().next().next().next().next().next().next().next().next().children().val();
|
||
overtimePayTotal = Number(overtimePay) + Number(overtimePayTotal);
|
||
|
||
var bonus = $(elem).parent().next().next().next().next().next().next().next().next().next().next().next().next().next().children().val();
|
||
bonusTotal = Number(bonus) + Number(bonusTotal);
|
||
|
||
var bonusToo = $(elem).parent().next().next().next().next().next().next().next().next().next().next().next().next().next().next().next().text();
|
||
bonusTotals = Number(bonusToo) + Number(bonusTotals);
|
||
|
||
var remuneration = $(elem).parent().next().next().next().next().next().next().next().next().next().next().next().next().next().next().children().val();
|
||
remunerationTotals = Number(remuneration) + Number(remunerationTotals);
|
||
});
|
||
basePayTotal =basePayTotal.toFixed(2);
|
||
overtimePayTotal =overtimePayTotal.toFixed(2);
|
||
$("#basePays").html(basePayTotal);
|
||
$("#overtimePays").html(overtimePayTotal);
|
||
|
||
bonusTotal =bonusTotal.toFixed(2);
|
||
bonusTotals =bonusTotals.toFixed(2);
|
||
remunerationTotals =remunerationTotals.toFixed(2);
|
||
|
||
$("#performanceDays").html(bonusTotal);
|
||
$("#monthPerformanceDays").html(bonusTotals);
|
||
$("#remuneration").html(remunerationTotals);
|
||
|
||
}
|
||
|
||
function getNumAchievements(that,type,minAchievementsMoney,maxAchievementsMoney) {
|
||
var str = that.value;
|
||
if(Number(str) >= Number(minAchievementsMoney)){
|
||
if(Number(str) <= Number(maxAchievementsMoney) ){
|
||
that.value = str;
|
||
}else{
|
||
layer.confirm('请填写小于等于'+maxAchievementsMoney, {icon: 1, time: 10000});
|
||
that.value = "0";
|
||
return;
|
||
}
|
||
}else{
|
||
layer.confirm('请填写大于等于'+minAchievementsMoney, {icon: 1, time: 10000});
|
||
that.value = "0";
|
||
return;
|
||
}
|
||
var unitPerformanceFee = $("#jxdj"+type).val();
|
||
var performanceDay = $("#jxts"+type).val();
|
||
var performanceFeePay = Number(unitPerformanceFee) * Number(performanceDay);
|
||
performanceFeePay =performanceFeePay.toFixed(2);
|
||
$("#jxxj"+type).val(performanceFeePay);
|
||
payNums(type)
|
||
total();
|
||
}
|
||
|
||
function getNumst(that,type,checknumTotal) {
|
||
var str = that.value;
|
||
if(Number(str) <= Number(checknumTotal)){
|
||
that.value = str;
|
||
}else{
|
||
layer.confirm('请填写小于等于'+checknumTotal, {icon: 1, time: 10000});
|
||
that.value = "0";
|
||
return;
|
||
}
|
||
var unitPerformanceFee = $("#jxdj"+type).val();
|
||
var performanceDay = $("#jxts"+type).val();
|
||
var performanceFeePay = Number(unitPerformanceFee) * Number(performanceDay);
|
||
performanceFeePay =performanceFeePay.toFixed(2);
|
||
$("#jxxj"+type).val(performanceFeePay);
|
||
payNums(type)
|
||
total();
|
||
}
|
||
|
||
//计算加班费用 加班天数
|
||
function getOvertimePay(that,type) {
|
||
var str = that.value;
|
||
if(Number(str) < Number(31)){
|
||
that.value = str;
|
||
}else{
|
||
layer.confirm('加班天数不能大于30天', {icon: 1, time: 10000});
|
||
that.value = "0";
|
||
return;
|
||
}
|
||
var overtimeday = $("#jbts"+type).val();
|
||
var unitOvertimePay = $("#jbdj"+type).val();
|
||
var overtimePay = Number(overtimeday) * Number(unitOvertimePay);
|
||
overtimePay =overtimePay.toFixed(2);
|
||
$("#jbxj"+type).val(overtimePay);
|
||
payNums(type)
|
||
total();
|
||
}
|
||
|
||
//计算加班费用 单价
|
||
function getOvertimePays(that,type) {
|
||
var str = that.value;
|
||
if(Number(str) < Number(1201)){
|
||
that.value = str;
|
||
}else{
|
||
that.value = "0";
|
||
}
|
||
var overtimeday = $("#jbts"+type).val();
|
||
var unitOvertimePay = $("#jbdj"+type).val();
|
||
var overtimePay = Number(overtimeday) * Number(unitOvertimePay);
|
||
overtimePay =overtimePay.toFixed(2);
|
||
$("#jbxj"+type).val(overtimePay);
|
||
payNums(type)
|
||
total();
|
||
}
|
||
|
||
//修改
|
||
function editBtn(){
|
||
var idNumber = [];//考勤人员身份证
|
||
var overtimeday = []; //加班天数
|
||
var unitOvertimePay = []; //单价
|
||
var unitPerformanceFee = []; //单价
|
||
var performanceDay = []; //考勤天数
|
||
|
||
var flagOvertimedays = 1;
|
||
var flagUnitOvertimePays = 1;
|
||
var flagUnitPerformanceFees = 1;
|
||
var flagPerformanceDays = 1;
|
||
|
||
var oTable = $('#dt-table').dataTable();
|
||
var rowcollection = oTable.$(".checkall:checked", {"page": "all"});
|
||
rowcollection.each(function (index, elem) {
|
||
var overtimedays = $(elem).parent().next().next().next().next().next().next().next().next().children().val();
|
||
if(overtimedays == "" || overtimedays == null){
|
||
flagOvertimedays = 2;
|
||
}
|
||
var unitOvertimePays = $(elem).parent().next().next().next().next().next().next().next().next().next().children().val();
|
||
if(unitOvertimePays == "" || unitOvertimePays == null){
|
||
flagUnitOvertimePays = 2;
|
||
}
|
||
var unitPerformanceFees = $(elem).parent().next().next().next().next().next().next().next().next().next().next().next().children().val();
|
||
if(unitPerformanceFees == "" || unitPerformanceFees == null){
|
||
flagUnitPerformanceFees = 2;
|
||
}
|
||
var performanceDays = $(elem).parent().next().next().next().next().next().next().next().next().next().next().next().next().children().val();
|
||
if(performanceDays == "" || performanceDays == null){
|
||
flagPerformanceDays = 2;
|
||
}
|
||
var checkbox_value = $(elem).val();
|
||
var strArr = checkbox_value.split(",");
|
||
idNumber.push(strArr[0]);
|
||
overtimeday.push(overtimedays);
|
||
unitOvertimePay.push(unitOvertimePays);
|
||
unitPerformanceFee.push(unitPerformanceFees);
|
||
performanceDay.push(performanceDays);
|
||
});
|
||
|
||
|
||
if(flagOvertimedays == 2){
|
||
parent.layer.msg("请填写加班天数", {icon: 2, time: 2000});
|
||
return;
|
||
}
|
||
if(flagUnitOvertimePays == 2){
|
||
parent.layer.msg("请填写加班单价", {icon: 2, time: 2000});
|
||
return;
|
||
}
|
||
if(flagUnitPerformanceFees == 2){
|
||
parent.layer.msg("请填写单价", {icon: 2, time: 2000});
|
||
return;
|
||
}
|
||
if(flagPerformanceDays == 2){
|
||
parent.layer.msg("请填写考勤天数", {icon: 2, time: 2000});
|
||
return;
|
||
}
|
||
$.ajax({
|
||
type: 'POST',
|
||
async: true, // 默认异步true,false表示同步
|
||
url: ctxPath + "/wagesGrant/updatePayForPerson", // 请求地址
|
||
data: {
|
||
"proId": proId,
|
||
"teamId": teamId,
|
||
"year": year,
|
||
"month": month,
|
||
"idNumber": idNumber.toString(),
|
||
"overtimeday":overtimeday.toString(),
|
||
"unitOvertimePay":unitOvertimePay.toString(),
|
||
"unitPerformanceFee":unitPerformanceFee.toString(),
|
||
"performanceDay":performanceDay.toString(),
|
||
"startTime":startTime,
|
||
"endTime":endTime
|
||
}, //获取提交的表单字段
|
||
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, {icon: 2, time: 2000});
|
||
}
|
||
},
|
||
error: function (XMLHttpRequest, textStatus, e) {
|
||
layer.msg('数据请求发生异常,请稍后重试', {icon: 16, scrollbar: false});
|
||
}
|
||
});
|
||
}
|
||
|
||
|
||
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'); //这里就是我们要渲染的地方了
|
||
}
|
||
}
|
||
})
|
||
}
|
||
function getTeam(proId,teamId) {
|
||
|
||
$("#teamId").empty();
|
||
$.ajax({
|
||
type: 'POST',
|
||
url: ctxPath + '/noSignalTeamRecords/getTeam',
|
||
data: {
|
||
id: proId
|
||
},
|
||
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(teamId == 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>';
|
||
}
|
||
}
|
||
$("#teamId").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();
|
||
} |