var example = null;
var pers = null;
var isSelected = [];
var teamId;
var proName;
var teamName;
var year;
var month;
var form = null;
var teamSel;
let teamIds = [];
$(function () {
layui.use(['layer', 'laydate', 'form'], function () {
var layer = layui.layer;
var laydate = layui.laydate;
form = layui.form;
teamSel = xmSelect.render({
el: '#teamId',
language: 'zn',
toolbar: {show: true},
data: []
})
//年选择器
laydate.render({
elem: '#year'
,type: 'year'
});
//月选择器year
laydate.render({
elem: '#month'
,type: 'month',
format: "M"
});
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
});
//查询工程
getProject(form);
form.on('select(proId)', function (data) {
//根据工程查询分包商
getSubsByProId($("#proId").val())
});
form.on('select(subId)', function (data) {
//根据分包商查询班组
getTeam($("#subId").val());
});
init();
pers = checkPermission();
$("#searchBt").click(function () {
//劳动报酬确认单抬头时间自动代入年和月份
var date = $("#endTime").val();
date = date.split("-");
$("#year").val(date[0]);
$("#month").val(date[1]);
//获取当前多选选中的值
var selectArr = teamSel.getValue();
console.log(selectArr)
//teamId = $("#teamId").val();
if(selectArr.length === 0){
parent.layer.msg("请选择班组", {icon: 2, time: 2000});
return;
}else {
teamIds = [];
for (let i = 0; i < selectArr.length; i++) {
teamIds.push(selectArr[i].value);
}
}
console.log(teamIds)
proName =$("#proId option:selected").text(); //获取选中的项
teamName =$("#teamId option:selected").text(); //获取选中的项
$("#proName").html(proName);
$("#teamName").html(teamName);
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/getWagesAddInfos",
"type": "get",
"data": function (d) {
d.teamIds = teamIds.toString();
d.proId = $("#proId").val();
d.startTime = $("#startTime").val();
d.endTime = $("#endTime").val();
},
"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 = '';
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 += "";
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 += "";
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 += "";
return html;
}
},
{ //小计
"data": "",
"defaultContent": "",width: '5%',
"orderable": false,
"render": function (data, type, row,meta) {
var overtimePay = row['overtimePay'];
var id = "jbxj" + meta.row ;
var html = '';
html += "";
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 += "";
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 += "";
return html;
}
},
{ //小计
"data": "",
"defaultContent": "",width: '5%',
"orderable": false,
"render": function (data, type, row,meta) {
var performanceFeePay = row['performanceFeePay'];
var id = "jxxj" + meta.row ;
var html = '';
html += "";
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;
}
var basePay = row['basePay'];
var overtimePay = row['overtimePay'];
var performanceFeePay = row['performanceFeePay'];
payNum = (Number(basePay) + Number(overtimePay) + Number(performanceFeePay)).toFixed(2);;
var id = "bcxj" + meta.row ;
var html = '';
html += "";
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": [ [3, "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 getSubs() {
$("#subId").empty();
$.ajax({
type: 'POST',
url: ctxPath + '/WorkRecord/getSubs',
dataType: 'json',
data: {},
success: function (data) {
var str = '';
if (data.length > 0) {
for (var i = 0;i < data.length; i++){
str += '';
}
}
$("#subId").html(str);
form.render();
}
})
}
//计算合计的
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;
}
// if(Number(str) > Number(minAchievementsMoney)){
// that.value = str;
// }else if(Number(str) < Number(maxAchievementsMoney)) {
// that.value = "0";
// }
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{
layer.confirm('加班天数不能大于1200', {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 recordsBtn(){
// var teamId = $("#teamId").val();
let teamId = [];
var selectArr = teamSel.getValue();
console.log(selectArr)
if(selectArr.length === 0){
parent.layer.msg("请选择班组", {icon: 2, time: 2000});
return;
}else {
for (let i = 0; i < selectArr.length; i++) {
teamId.push(selectArr[i].value);
}
}
var proId = $("#proId").val();
var year = $("#year").val();
var month = $("#month").val();
if(month.indexOf("0") !=-1){
}else{
month = Number(month);
if(month<"10"){
month = "0" + month;
}
}
var idNumber = [];//考勤人员身份证
var overtimeday = []; //加班天数
var unitOvertimePay = []; //单价
var unitPerformanceFee = []; //单价
var performanceDay = []; //考勤天数
var flagOvertimedays = 1;
var flagUnitOvertimePays = 1;
var flagUnitPerformanceFees = 1;
var flagPerformanceDays = 1;
var isValue = 0;
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]);
if(strArr[0] != "" || strArr[0] != null ){
isValue = 1;
}
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;
}
if(isValue != 1){
parent.layer.msg("请先查询数据后,再重试", {icon: 2, time: 2000});
return;
}
var startTime = $("#startTime").val();
var endTime = $("#endTime").val();
$.ajax({
type: 'POST',
async: true, // 默认异步true,false表示同步
url: ctxPath + "/wagesGrant/insertPayForPerson", // 请求地址
data: {
"proId": proId,
"teamId": teamId,
"year": year,
"month": month,
"startTime":startTime,
"endTime":endTime,
"idNumber": idNumber.toString(),
"overtimeday":overtimeday.toString(),
"unitOvertimePay":unitOvertimePay.toString(),
"unitPerformanceFee":unitPerformanceFee.toString(),
"performanceDay":performanceDay.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 getTeam(subId) {
$("#teamId").empty();
$.ajax({
type: 'POST',
url: ctxPath + '/wagesGrant/getTeam',
data: {
subId: subId
},
dataType: 'json',
success: function (data) {
console.log(data)
teamSel.update({
data: data,
autoRow: true,
})
/*if(data.length>0){
var str = '';
for(var i = 0; i < data.length; i++) {
if(teamId == data[i].id) {
str += '';
} else {
str += '';
}
}
$("#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();
}