HnRealNameBmwWeb/js/work/person/wagesManage/wagesGrantForm.js

731 lines
28 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 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 = '<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'];
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'];
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;
}
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 += "<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": [ [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 = '<option value="">请选择分包商</option>';
if (data.length > 0) {
for (var i = 0;i < data.length; i++){
str += '<option value=\'' + data[i].id + '\'>' + data[i].name + '</option>';
}
}
$("#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 = '<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();
}