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(); }