832 lines
32 KiB
JavaScript
832 lines
32 KiB
JavaScript
var idNumber = localStorage.getItem("idNumber");
|
||
var startTime = localStorage.getItem("startTime");
|
||
var endTime = localStorage.getItem("endTime");
|
||
var proId = localStorage.getItem("proId");
|
||
var name = localStorage.getItem("name");
|
||
var subId = localStorage.getItem("subId");
|
||
var teamId = localStorage.getItem("teamId");
|
||
var exitTime = localStorage.getItem("exitTime");
|
||
var einTime = localStorage.getItem("einTime");
|
||
var gz = localStorage.getItem("gz");
|
||
var effectDate = localStorage.getItem("effectDate");
|
||
var pers = null;
|
||
|
||
let form,layer;
|
||
$(function() {
|
||
layui.use(['layer', 'form'], function () {
|
||
layer = layui.layer;
|
||
form = layui.form;
|
||
});
|
||
jeDate({
|
||
dateCell: "#startTime", // isinitVal:true,
|
||
format: "YYYY-MM-DD",
|
||
isTime: false, // isClear:false,
|
||
minDate: "2015-10-19 00:00:00",
|
||
maxDate: "2026-11-08 00:00:00"
|
||
});
|
||
jeDate({
|
||
dateCell: "#endTime", // isinitVal:true,
|
||
format: "YYYY-MM-DD",
|
||
isTime: false, // isClear:false,
|
||
minDate: "2015-10-19 00:00:00",
|
||
maxDate: "2026-11-08 00:00:00"
|
||
});
|
||
$("#startTime").val(startTime);
|
||
$("#endTime").val(endTime);
|
||
|
||
pers = checkPermission();
|
||
|
||
$.ajax({
|
||
url: ctxPath + '/faceContrast/getNameByIdNumber',
|
||
type: "post",
|
||
data: {
|
||
idNumber: idNumber
|
||
},
|
||
success: function(data) {
|
||
leftTitle2( "合同生效日期:"+effectDate);
|
||
leftTitle(startTime + "~" + endTime + "(" + data[0].name + ")");
|
||
},
|
||
error: function(e) {
|
||
alert(e);
|
||
}
|
||
});
|
||
|
||
initDate();
|
||
initTable();
|
||
|
||
|
||
});
|
||
|
||
// 子页面调用的刷新父页面方法
|
||
function reloadData() {
|
||
initDate();
|
||
initTable();
|
||
}
|
||
|
||
function initDate() {
|
||
//初始化Table
|
||
var startTime = $("#startTime").val();
|
||
var endTime = $("#endTime").val();
|
||
$.ajax({
|
||
url: ctxPath + '/faceContrast/getWorkerAttendanceCurrentDay',
|
||
type: "post",
|
||
cache: false,
|
||
data: {
|
||
startTime: startTime,
|
||
endTime: endTime,
|
||
idNumber: idNumber,
|
||
gz: gz,
|
||
effectDate: effectDate,
|
||
proId: proId,
|
||
subId:subId,
|
||
teamId:teamId,
|
||
exitTime:exitTime,
|
||
einTime:einTime
|
||
},
|
||
success: function(data) {
|
||
assignmentMonthTest(data, startTime, endTime);
|
||
},
|
||
error: function(e) {
|
||
alert(e);
|
||
}
|
||
});
|
||
}
|
||
function responseHandler(res) {
|
||
console.log(res);
|
||
var datas=[];
|
||
console.log(res.total);
|
||
datas.push({total:res.total,rows:res.list});
|
||
return datas[0];
|
||
}
|
||
function initTable() {
|
||
//初始化Table
|
||
var index = top.layer.msg('数据较多,请稍等。。。', {
|
||
icon: 4,
|
||
time: 3000 //2秒关闭(如果不配置,默认是3秒)
|
||
});
|
||
var startTime = $("#startTime").val();
|
||
var endTime = $("#endTime").val();
|
||
$("#table").bootstrapTable('destroy').bootstrapTable({
|
||
classes: 'table table-hover',
|
||
url: ctxPath + '/faceContrast/getWorkerAttendanceOne',
|
||
method: 'post',
|
||
responseHandler: responseHandler, //处理服务器返回的数据格式
|
||
height: $(window).height() - ($(window).height() * 0.13) - 40,
|
||
undefinedText: '', //当数据为 undefined 时显示的字符
|
||
queryParams: function(param) {
|
||
param = {
|
||
startTime: startTime,
|
||
endTime: endTime,
|
||
idNumber: idNumber,
|
||
proId: proId,
|
||
subId:subId,
|
||
gz:gz,
|
||
teamId:teamId,
|
||
pageSize: param.limit,
|
||
pageNum: param.offset / param.limit + 1
|
||
}
|
||
return param;
|
||
},
|
||
sortable: false, //是否启用排序
|
||
sortOrder: "asc", //排序方式
|
||
cache: false, //是否使用缓存,默认为true,所以一般情况下需要设置一下这个属性(*)
|
||
pagination: true,
|
||
pageNumber: 1,
|
||
pageSize: 50,
|
||
pageList: [50, 100, 200, 300],
|
||
smartDisplay: false,
|
||
showColumns: false,
|
||
sidePagination: "server", //分页方式:client客户端分页,server服务端分页(*)
|
||
contentType: "application/x-www-form-urlencoded",
|
||
minimumCountColumns: 2, //最少允许的列数
|
||
uniqueId: "no", //每一行的唯一标识,一般为主键列
|
||
columns: [{
|
||
title: '序号',
|
||
formatter: function(value, row, index) {
|
||
return index + 1;
|
||
},
|
||
rowspan: 1,
|
||
align: 'center',
|
||
valign: 'middle',
|
||
width: 50
|
||
},
|
||
{
|
||
title: '工程名称',
|
||
field: 'proName',
|
||
rowspan: 1,
|
||
align: 'center',
|
||
valign: 'middle',
|
||
sortable: true,
|
||
width: 230
|
||
},
|
||
{
|
||
title: '考勤日期',
|
||
formatter: function(value, row, index) {
|
||
var cent = "";
|
||
if(row.success=="已打卡"){
|
||
cent += '<a href="#" style="color: dodgerblue;" onclick="openImg(\'' + row.currentDay + '\')">' + row.currentDay + '</a>'
|
||
}else if(row.success=="未打卡"){
|
||
cent += '<span>' + row.currentDay + '</span>';
|
||
}
|
||
return cent;
|
||
},
|
||
rowspan: 1,
|
||
align: 'center',
|
||
valign: 'middle',
|
||
sortable: true,
|
||
width: 140
|
||
},
|
||
{
|
||
title: '打卡状态',
|
||
field: 'success',
|
||
rowspan: 1,
|
||
align: 'center',
|
||
valign: 'middle',
|
||
sortable: true,
|
||
width: 100,
|
||
cellStyle:function (value, row, index) {
|
||
var cent = '<span style="color: red">休息</span>';
|
||
if(row.success=="已打卡"){
|
||
return {css:{'color':'#3cb371'}};
|
||
}else if(row.success=="未打卡"){
|
||
return {css:{'color':'red'}};
|
||
}
|
||
if(row.auditStatus=="休息"){
|
||
return cent;
|
||
}
|
||
return '';
|
||
}//更具条件修改某行样式
|
||
},
|
||
{
|
||
title: '上班时长',
|
||
field: 'workHours',
|
||
rowspan: 1,
|
||
align: 'center',
|
||
valign: 'middle',
|
||
sortable: true,
|
||
width: 100
|
||
},
|
||
{
|
||
title: '审核结果',
|
||
field: 'auditStatus',
|
||
rowspan: 1,
|
||
align: 'center',
|
||
valign: 'middle',
|
||
sortable: true,
|
||
width: 100,
|
||
cellStyle:function (value, row, index) {
|
||
if(row.auditStatus=="有效"){
|
||
return {css:{'color':'#3cb371'}};
|
||
}else if(row.auditStatus=="无效"){
|
||
return {css:{'color':'red'}};
|
||
}else{
|
||
return {css:{'color':'orange'}};
|
||
}
|
||
return '';
|
||
}//更具条件修改某行样式
|
||
},{
|
||
title: '审核人',
|
||
field: 'auditor',
|
||
rowspan: 1,
|
||
align: 'center',
|
||
valign: 'middle',
|
||
sortable: true,
|
||
width: 100
|
||
},{
|
||
title: '审核时间',
|
||
field: 'auditTime',
|
||
rowspan: 1,
|
||
align: 'center',
|
||
valign: 'middle',
|
||
sortable: true,
|
||
width: 150
|
||
},{
|
||
title: '打卡位置',
|
||
formatter: function(value, row, index) {
|
||
if (row.success=="未打卡"){
|
||
var cent = "";
|
||
return cent;
|
||
}else {
|
||
var cent = "";
|
||
cent += '<a href="#" style="color: dodgerblue;" onclick="openMap(\'' + row.proName + '\',\'' + row.name + '\',\'' + row.addTime + '\',\'' + row.lon + '\',\'' + row.lat + '\')">查看定位</a>'
|
||
return cent;
|
||
}
|
||
|
||
},
|
||
rowspan: 1,
|
||
align: 'center',
|
||
valign: 'middle',
|
||
sortable: true,
|
||
width: 100
|
||
},
|
||
{
|
||
title: '打卡地址',
|
||
formatter: function(value, row, index) {
|
||
var address = row.address;
|
||
var cent = "";
|
||
if(address =="null" || address ==null){
|
||
|
||
}else{
|
||
if(address.indexOf("null") >= 0 ){
|
||
cent += '<span>未获取到</span>';
|
||
}else {
|
||
cent += '<span>' + address + '</span>';
|
||
}
|
||
}
|
||
return cent;
|
||
},
|
||
|
||
rowspan: 1,
|
||
align: 'center',
|
||
valign: 'middle',
|
||
sortable: true,
|
||
width: 100
|
||
},{
|
||
title: '打卡图片', align: "center",
|
||
width: 200,formatter: function (value, row, index) {
|
||
if(row.imgPath==null||row.imgPath=="null"||row.imgPath==""||row.imgPath==undefined){
|
||
return "无";
|
||
}else{
|
||
var image = '<div><img style="width: 180px;height: 120px;margin: auto" alt="" src="'+dataPath+'/' + row.imgPath + '"></img></a></div>';
|
||
return image;
|
||
}
|
||
}
|
||
},
|
||
{
|
||
title: '备注',
|
||
field: 'auditRemark',
|
||
rowspan: 1,
|
||
align: 'center',
|
||
valign: 'middle',
|
||
sortable: true,
|
||
width: 100
|
||
},
|
||
],
|
||
onLoadSuccess: function(data) {
|
||
top.layer.close(index);
|
||
$("#dataCount").html( "数量:" + data.total);
|
||
},
|
||
onLoadError: function() {
|
||
top.layer.close(index);
|
||
$("#dataCount").html("数量:0");
|
||
$("#table").bootstrapTable('removeAll');
|
||
}
|
||
});
|
||
}
|
||
|
||
// 模糊查询数据、重置查询
|
||
function querys(type) {
|
||
var startTime = $("#startTime").val();
|
||
var endTime = $("#endTime").val();
|
||
var dateStart = new Date(startTime);
|
||
var dateEnd = new Date(endTime);
|
||
var difValue = (dateEnd - dateStart) / (1000 * 60 * 60 * 24);
|
||
if (endTime < startTime) {
|
||
parent.layer.msg('结束时间不能小于开始时间', {
|
||
icon: 2,
|
||
time: 1500
|
||
});
|
||
} else {
|
||
if (difValue >= 0 && difValue < 31) {
|
||
initDate();
|
||
var index = top.layer.load(0, {
|
||
shade: false
|
||
}); // 0代表加载的风格,支持0-2
|
||
$("#query").css("background-image", "url(../../../img/info/查询点击.png)");
|
||
$("#export").css("background-image", "url(../../../img/info/导出.png)");
|
||
var opt = {
|
||
url: ctxPath + '/faceContrast/getWorkerAttendanceOne',
|
||
silent: true,
|
||
query: {
|
||
startTime: startTime,
|
||
endTime: endTime,
|
||
idNumber: idNumber,
|
||
proId: proId,
|
||
}
|
||
};
|
||
$("#table").bootstrapTable('refresh', opt);
|
||
top.layer.close(index);
|
||
leftTitle(startTime + "~" + endTime);
|
||
} else {
|
||
parent.layer.msg('请将日期控制在31天之内', {
|
||
icon: 2,
|
||
time: 1500
|
||
});
|
||
}
|
||
}
|
||
}
|
||
function exportBtn() {
|
||
var token = localStorage.getItem("token");
|
||
var name = $("#name").val();
|
||
var teamName = $("#teamName").val();
|
||
var orgId = $("#orgId").val();
|
||
var proId = $("#proId").val();
|
||
var status = $("#status").val();
|
||
var startTime = $("#startTime").val();
|
||
var endTime = $("#endTime").val();
|
||
window.location.href = ctxPath + "/faceContrast/exportWorkerAttendance?idNumber=" + idNumber + "&startTime=" + startTime + "&endTime=" + endTime+"&token=" + token;
|
||
}
|
||
|
||
function leftTitle(time) {
|
||
console.log("time", time);
|
||
$("#personnelAttendanceTitle").html("人员考勤 " + time);
|
||
}
|
||
function leftTitle2(eff) {
|
||
console.log("eff", eff);
|
||
$("#personnelAttendanceTitle2").html(eff);
|
||
}
|
||
Date.prototype.format = function() {
|
||
var y = this.getFullYear();
|
||
var m = this.getMonth() + 1;
|
||
if (m < 10) {
|
||
m = "0" + m;
|
||
}
|
||
var d = this.getDate();
|
||
if (d < 10) {
|
||
d = "0" + d;
|
||
}
|
||
var s = '';
|
||
s += y + '-'; // 获取年份。
|
||
s += m + "-"; // 获取月份。
|
||
s += d; // 获取日。
|
||
return (s); // 返回日期。
|
||
};
|
||
var dateArr = new Array();
|
||
function assignmentMonthTest(data, startTime, endTime) {
|
||
console.log("data", data);
|
||
console.log("startTime", startTime);
|
||
console.log("endTime", endTime);
|
||
// $("#currentDay").html("");
|
||
if (data.length > 0) {
|
||
getAll(data);
|
||
console.log("dateArr",dateArr);
|
||
var len = dateArr.length;
|
||
var cs = parseInt(len / 7);
|
||
var ys = len % 7;
|
||
var html = '';
|
||
$("#currentDay").html(html);
|
||
if (cs == 0 && ys > 0) {
|
||
html += '<tr style="width: 100%;">';
|
||
var rate = 14 * ys;
|
||
$("#currentDay").css("width", rate + "%");
|
||
for (var i = 0; i < ys; i++) {
|
||
var date = dateArr[i].split("-");
|
||
var auditStatus = data[i].auditStatus;
|
||
var currentDay = data[i].currentDay;
|
||
var id = data[i].faceId;
|
||
html += '<td style="width: 13%;">';
|
||
html += ' <div class="month">' + date[1] + '</div>';
|
||
if (auditStatus == "有效") {
|
||
html += ' <div class="day" onclick="cancelAttendance(\''+dateArr[i]+'\',\'sys:faceContrast:cancelCard\')" style="width:100%;background-color:rgb(88,228,153)"><span>' + date[2] +
|
||
'</span></div>';
|
||
} else if (auditStatus == "待审核") {
|
||
html += ' <div class="day" onclick="getOpen(\''+dateArr[i]+'\')" style="width:100%;background-color:rgb(252,177,96)"><span>' + date[2] +
|
||
'</span></div>';
|
||
} else if (auditStatus == "无效") {
|
||
console.log("currentDay:" + currentDay + ",attendStatus:" + auditStatus);
|
||
html += ' <div class="day" onclick="makeAttendanceCard(\''+dateArr[i]+'\',\'sys:faceContrast:makeCard\')" style="width:100%;background-color:rgb(228,81,84)"><span>' + date[2] + '</span></div>';
|
||
}else if (auditStatus == "休息") {
|
||
html += ' <div class="day" style="width:100%;background-color:rgb(253, 223, 126)"><span>' + date[2] + '</span></div>';
|
||
}
|
||
html += '</td>';
|
||
if (i == ys - 1) {
|
||
html += '</tr>';
|
||
}
|
||
}
|
||
$("#currentDay").html(html);
|
||
} else {
|
||
$("#currentDay").css("width", "98%");
|
||
for (var i = 0; i < cs; i++) {
|
||
html += '<tr style="width: 100%;">';
|
||
for (var j = 0; j < 7; j++) {
|
||
var k = i * 7 + j;
|
||
var auditStatus = data[k].auditStatus;
|
||
var currentDay = data[k].currentDay;
|
||
var id = data[k].faceId;
|
||
var date = (dateArr[k] || "").split("-");
|
||
html += '<td style="width: 13%;">';
|
||
html += ' <div class="month">' + date[1] + '</div>';
|
||
if (auditStatus == "有效") {
|
||
html += ' <div class="day" onclick="cancelAttendance(\''+dateArr[k]+'\',\'sys:faceContrast:cancelCard\')" style="width:98%;background-color:rgb(88,228,153)"><span>' + date[2] +
|
||
'</span></div>';
|
||
} else if (auditStatus == "待审核") {
|
||
html += ' <div class="day" onclick="getOpen(\''+dateArr[k]+'\')" style="width:98%;background-color:rgb(252,177,96)"><span>' + date[2] +
|
||
'</span></div>';
|
||
} else if (auditStatus == "无效") {
|
||
console.log("currentDay:" + currentDay + ",auditStatus:" + auditStatus);
|
||
html += ' <div class="day" onclick="makeAttendanceCard(\''+dateArr[k]+'\',\'sys:faceContrast:makeCard\')" style="width:100%;background-color:rgb(228,81,84)"><span>' + date[2] + '</span></div>';
|
||
}else if (auditStatus == "休息") {
|
||
html += ' <div class="day" style="width:100%;background-color:rgb(253, 223, 126)"><span>' + date[2] + '</span></div>';
|
||
}
|
||
html += '</td>';
|
||
if (j == 6) {
|
||
html += '</tr>';
|
||
}
|
||
}
|
||
}
|
||
if (ys > 0) {
|
||
html += '<tr style="width: 100%;">';
|
||
for (var i = 0; i < ys; i++) {
|
||
var k = cs * 7 + i;
|
||
var date = dateArr[k].split("-");
|
||
var auditStatus = data[k].auditStatus;
|
||
var currentDay = data[k].currentDay;
|
||
var id = data[k].faceId;
|
||
html += '<td style="width: 13%;">';
|
||
html += ' <div class="month">' + date[1] + '</div>';
|
||
if (auditStatus == "有效") {
|
||
html += ' <div class="day" onclick="cancelAttendance(\''+dateArr[k]+'\',\'sys:faceContrast:cancelCard\')" style="width:100%;background-color:rgb(88,228,153)"><span>' + date[2] +
|
||
'</span></div>';
|
||
} else if (auditStatus == "待审核") {
|
||
html += ' <div class="day" onclick="getOpen(\''+dateArr[k]+'\')" style="width:100%;background-color:rgb(252,177,96)"><span>' + date[2] +
|
||
'</span></div>';
|
||
} else if (auditStatus == "无效"){
|
||
console.log("currentDay:" + currentDay + ",auditStatus:" + auditStatus);
|
||
html += ' <div class="day" onclick="makeAttendanceCard(\''+dateArr[k]+'\',\'sys:faceContrast:makeCard\')" style="width:100%;background-color:rgb(228,81,84)"><span>' + date[2] + '</span></div>';
|
||
}else if (auditStatus == "休息") {
|
||
html += ' <div class="day" style="width:100%;background-color:rgb(253, 223, 126)"><span>' + date[2] + '</span></div>';
|
||
}
|
||
html += '</td>';
|
||
if (i == ys - 1) {
|
||
html += '</tr>';
|
||
}
|
||
}
|
||
}
|
||
$("#currentDay").html(html);
|
||
}
|
||
}else{
|
||
var html = '<div style = "display: flex;justify-content: center;text-align: center;align-items: center;height: 100%;font-size: 18px;color: #FF0000;">无考勤日期</div>'
|
||
$('#currentDay').append(html);
|
||
}
|
||
}
|
||
|
||
function getAll(data) {
|
||
dateArr = new Array();
|
||
for (var k = 0; k < data.length; k++) {
|
||
dateArr.push(data[k].currentDay);
|
||
}
|
||
}
|
||
|
||
function openImg(currentDay){
|
||
localStorage.setItem("idNumber", idNumber);
|
||
localStorage.setItem("proId", proId);
|
||
localStorage.setItem("currentDay", currentDay);
|
||
var index = layer.open({
|
||
title: false,
|
||
type: 2,
|
||
content: 'facePhotoDetail.html',
|
||
area: ['75%', '75%'],
|
||
maxmin: false
|
||
});
|
||
}
|
||
|
||
function openMap(proName,name,addTime,lon,lat){
|
||
localStorage.setItem("proName", proName);
|
||
localStorage.setItem("name", name);
|
||
localStorage.setItem("addTime", addTime);
|
||
localStorage.setItem("lon", lon);
|
||
localStorage.setItem("lat", lat);
|
||
var index = layer.open({
|
||
title: ['考勤定位', 'color:#fff;background-color:#1AA094;font-size:20px;text-indent: 49%'],
|
||
type: 2,
|
||
content: 'faceMap.html',
|
||
area: ['75%', '75%'],
|
||
maxmin: false
|
||
});
|
||
}
|
||
|
||
// 取消考勤
|
||
function cancelAttendance(currentDay,permission) {
|
||
var dd=currentDay.substring(5,7);
|
||
var myDate = new Date;
|
||
var month=myDate.getMonth()+1;
|
||
if(month-dd>1){
|
||
layer.msg("超出期限!");
|
||
return;
|
||
}
|
||
if (permission != "") {
|
||
if ($.inArray(permission, pers) < 0) {
|
||
layer.msg("无取消考勤权限");
|
||
return;
|
||
}
|
||
}
|
||
let height = getDefaultHeight2().toFixed(0) + 'px';
|
||
let width = getDefaultWidth2().toFixed(0) + 'px';
|
||
let layerIndex = layer.open({
|
||
title: ['取消考勤', 'color:#3A81AD;font-size:22px;background-color:#eee;'],
|
||
type: 1,
|
||
id: 'layer-cancelAttendance-checker',
|
||
maxmin: false,
|
||
shade: 0.1,
|
||
shadeClose: false, //开启遮罩关闭
|
||
content: cancelAttendanceHtml(name,currentDay),
|
||
area: [width, height],
|
||
move: false,
|
||
success: function (layero, index) {
|
||
$(window).resize(function () {
|
||
if (autoResizeWidth2) {
|
||
autoResizeWidth2(index);
|
||
}
|
||
if (autoResizeHeight2) {
|
||
autoResizeHeight2(index);
|
||
}
|
||
})
|
||
},
|
||
});
|
||
}
|
||
|
||
function cancelAttendanceHtml(name,attendanceDate) {
|
||
return '<div style="width: 100%;height: 100%;display: flex;align-items: center;flex-direction: column;justify-content: space-between;padding: 5% 0;">' +
|
||
'<p style="font-size: 20px;font-weight: bold;">确定取消<span style="color: red;">'+(" "+name + " " + attendanceDate+ " ")+'</span>的考勤?</p>' +
|
||
'<div class="layui-form">' +
|
||
'<form class="layui-form" action="#" onsubmit="return false;">' +
|
||
'<div class="layui-form-item" style="display: flex;align-items: center;">' +
|
||
'<label class="layui-form-label"> <i style="color: red">*</i>取消原因</label>' +
|
||
'<div class="layui-inline" style="width: 360px;">' +
|
||
'<textarea class="layui-textarea" name="cancelCardReason"></textarea>' +
|
||
'</div>' +
|
||
'</div>' +
|
||
'<div class="layui-form-item" style="display: flex;align-items: center;padding-left: 0%;justify-content: center;">' +
|
||
'<button type="button" class="layui-btn layui-btn-normal" onclick="requestAddOrEdit(\''+attendanceDate+'\',\'2\')">提交</button>' +
|
||
'<button type="button" class="layui-btn layui-btn-primary" onclick="closePage(2)">取消</button>' +
|
||
'</div>' +
|
||
'</form>' +
|
||
'</div>' +
|
||
'</div>';
|
||
}
|
||
|
||
//待审核的数据
|
||
function getOpen(currentDay) {
|
||
let height = getDefaultHeight2().toFixed(0) + 'px';
|
||
let width = getDefaultWidth2().toFixed(0) + 'px';
|
||
let layerIndex = layer.open({
|
||
title: ['待审核', 'color:#3A81AD;font-size:22px;background-color:#eee;'],
|
||
type: 1,
|
||
id: 'layer-attendanceCard-checker',
|
||
maxmin: false,
|
||
shade: 0.1,
|
||
shadeClose: false, //开启遮罩关闭
|
||
content: openHtml(name,currentDay),
|
||
area: [width, height],
|
||
move: false,
|
||
success: function (layero, index) {
|
||
form.render();
|
||
$(window).resize(function () {
|
||
if (autoResizeWidth2) {
|
||
autoResizeWidth2(index);
|
||
}
|
||
if (autoResizeHeight2) {
|
||
autoResizeHeight2(index);
|
||
}
|
||
})
|
||
},
|
||
});
|
||
}
|
||
|
||
function openHtml(name,attendanceDate) {
|
||
return '<div style="width: 100%;height: 100%;display: flex;align-items: center;flex-direction: column;justify-content: space-between;padding: 3% 0;">' +
|
||
'<p style="font-size: 20px;font-weight: bold;"><span style="padding-right: 60px;">'+name+'</span><span>'+attendanceDate+'</span></p>' +
|
||
'<div class="layui-form">' +
|
||
'<form class="layui-form" action="#" onsubmit="return false;">' +
|
||
'<div class="layui-form-item" style="display: flex;align-items: center;">' +
|
||
'<label class="layui-form-label"> <i style="color: red">*</i>审核是否通过</label>' +
|
||
'<div class="layui-inline" style="width: 360px;">' +
|
||
'<input type="radio" name="workHours" value="1" title="通过" checked="">' +
|
||
'<input type="radio" name="workHours" value="2" title="不通过" >' +
|
||
'</div>' +
|
||
'</div>' +
|
||
'<div class="layui-form-item" style="display: flex;align-items: center;">' +
|
||
'<label class="layui-form-label"> <i style="color: red">*</i>原因</label>' +
|
||
'<div class="layui-inline" style="width: 360px;">' +
|
||
'<textarea class="layui-textarea" name="unauditedCardReason" ></textarea>' +
|
||
'</div>' +
|
||
'</div>' +
|
||
'<div class="layui-form-item" style="display: flex;align-items: center;padding-left: 0%;justify-content: center;">' +
|
||
'<button type="button" class="layui-btn layui-btn-normal" onclick="requestAddOrEditHtml(\''+attendanceDate+'\')">提交</button>' +
|
||
'<button type="button" class="layui-btn layui-btn-primary" onclick="closePage(2)">取消</button>' +
|
||
'</div>' +
|
||
'</form>' +
|
||
'</div>' +
|
||
'</div>';
|
||
}
|
||
|
||
// 提交数据
|
||
function requestAddOrEditHtml(currentDay) {
|
||
|
||
let url,data,reason;
|
||
let workHours = $('input[name="workHours"]:checked').val();
|
||
let unauditedCardReason = $('textarea[name="unauditedCardReason"]').val();
|
||
reason = unauditedCardReason;
|
||
url = ctxPath + '/faceContrast/unauditedCard';
|
||
data = {
|
||
idNumber:idNumber,
|
||
name:name,
|
||
proId:proId,
|
||
teamId: teamId,
|
||
subId: subId,
|
||
currentDay:currentDay,
|
||
workHours:workHours,
|
||
unauditedCardReason:unauditedCardReason
|
||
};
|
||
if(reason){
|
||
let loadingMsg = layer.msg('数据上传中,请稍候...', {icon: 16, scrollbar: false, time: 0});
|
||
$.ajax({
|
||
type: "post",
|
||
url: url,
|
||
contentType: "application/json; charset=utf-8",
|
||
data: JSON.stringify(data),
|
||
dataType: "json",
|
||
success: function (data) {
|
||
layer.close(loadingMsg); // 关闭提示层
|
||
if (data.res === 1) {
|
||
parent.layer.msg('操作成功', {icon: 1});
|
||
closePage(1);
|
||
} else {
|
||
parent.layer.msg( data.resMsg , {icon: 2});
|
||
}
|
||
},
|
||
error: function (jqXHR, textStatus, errorThrown) {
|
||
layer.close(loadingMsg);
|
||
layer.msg('数据上传发生异常,请稍后重试', {icon: 16, scrollbar: false, time: 2000});
|
||
}
|
||
});
|
||
}else{
|
||
layer.msg("请填写原因");
|
||
}
|
||
}
|
||
|
||
// 考勤补卡
|
||
function makeAttendanceCard(currentDay,permission) {
|
||
// if (permission != "") {
|
||
// if ($.inArray(permission, pers) < 0) {
|
||
// layer.msg("无考勤补卡权限");
|
||
// }
|
||
// }
|
||
var dd=currentDay.substring(5,7);
|
||
var myDate = new Date;
|
||
var month=myDate.getMonth()+1;
|
||
if(month-dd>1){
|
||
layer.msg("超出补卡期限!");
|
||
return;
|
||
}
|
||
let height = getDefaultHeight2().toFixed(0) + 'px';
|
||
let width = getDefaultWidth2().toFixed(0) + 'px';
|
||
let layerIndex = layer.open({
|
||
title: ['考勤补卡', 'color:#3A81AD;font-size:22px;background-color:#eee;'],
|
||
type: 1,
|
||
id: 'layer-attendanceCard-checker',
|
||
maxmin: false,
|
||
shade: 0.1,
|
||
shadeClose: false, //开启遮罩关闭
|
||
content: attendanceCardHtml(name,currentDay),
|
||
area: [width, height],
|
||
move: false,
|
||
success: function (layero, index) {
|
||
form.render();
|
||
$(window).resize(function () {
|
||
if (autoResizeWidth2) {
|
||
autoResizeWidth2(index);
|
||
}
|
||
if (autoResizeHeight2) {
|
||
autoResizeHeight2(index);
|
||
}
|
||
})
|
||
},
|
||
});
|
||
}
|
||
|
||
function attendanceCardHtml(name,attendanceDate) {
|
||
return '<div style="width: 100%;height: 100%;display: flex;align-items: center;flex-direction: column;justify-content: space-between;padding: 3% 0;">' +
|
||
'<p style="font-size: 20px;font-weight: bold;"><span style="padding-right: 60px;">'+name+'</span><span>'+attendanceDate+'</span></p>' +
|
||
'<div class="layui-form">' +
|
||
'<form class="layui-form" action="#" onsubmit="return false;">' +
|
||
'<div class="layui-form-item" style="display: flex;align-items: center;">' +
|
||
'<label class="layui-form-label"> <i style="color: red">*</i>上班时长</label>' +
|
||
'<div class="layui-inline" style="width: 360px;">' +
|
||
// '<input type="radio" name="workHours" value="0.5" title="0.5天">' +
|
||
'<input type="radio" name="workHours" value="1" title="1天" checked="">' +
|
||
'</div>' +
|
||
'</div>' +
|
||
'<div class="layui-form-item" style="display: flex;align-items: center;">' +
|
||
'<label class="layui-form-label"> <i style="color: red">*</i>补卡原因</label>' +
|
||
'<div class="layui-inline" style="width: 360px;">' +
|
||
'<textarea class="layui-textarea" name="makeCardReason" ></textarea>' +
|
||
'</div>' +
|
||
'</div>' +
|
||
'<div class="layui-form-item" style="display: flex;align-items: center;padding-left: 0%;justify-content: center;">' +
|
||
'<button type="button" class="layui-btn layui-btn-normal" onclick="requestAddOrEdit(\''+attendanceDate+'\',\'1\')">提交</button>' +
|
||
'<button type="button" class="layui-btn layui-btn-primary" onclick="closePage(2)">取消</button>' +
|
||
'</div>' +
|
||
'</form>' +
|
||
'</div>' +
|
||
'</div>';
|
||
}
|
||
|
||
// 提交数据
|
||
function requestAddOrEdit(currentDay,type) {
|
||
let url,data,reason;
|
||
if(type == '1'){//补卡
|
||
let workHours = $('input[name="workHours"]:checked').val();
|
||
let makeCardReason = $('textarea[name="makeCardReason"]').val();
|
||
reason = makeCardReason;
|
||
url = ctxPath + '/faceContrast/makeAttendanceCard';
|
||
data = {
|
||
idNumber:idNumber,
|
||
name:name,
|
||
proId:proId,
|
||
teamId: teamId,
|
||
subId: subId,
|
||
currentDay:currentDay,
|
||
workHours:workHours,
|
||
makeCardReason:makeCardReason
|
||
};
|
||
}else{//取消打卡
|
||
let cancelCardReason = $('textarea[name="cancelCardReason"]').val();
|
||
reason = cancelCardReason;
|
||
url = ctxPath + '/faceContrast/cancelAttendance';
|
||
data = {
|
||
idNumber:idNumber,
|
||
name:name,
|
||
proId:proId,
|
||
teamId: teamId,
|
||
subId: subId,
|
||
currentDay:currentDay,
|
||
cancelCardReason:cancelCardReason
|
||
};
|
||
}
|
||
if(reason){
|
||
let loadingMsg = layer.msg('数据上传中,请稍候...', {icon: 16, scrollbar: false, time: 0});
|
||
$.ajax({
|
||
type: "post",
|
||
url: url,
|
||
contentType: "application/json; charset=utf-8",
|
||
data: JSON.stringify(data),
|
||
dataType: "json",
|
||
success: function (data) {
|
||
layer.close(loadingMsg); // 关闭提示层
|
||
if (data.res === 1) {
|
||
parent.layer.msg('操作成功', {icon: 1});
|
||
closePage(1);
|
||
} else {
|
||
parent.layer.msg( data.resMsg , {icon: 2});
|
||
}
|
||
},
|
||
error: function (jqXHR, textStatus, errorThrown) {
|
||
layer.close(loadingMsg);
|
||
layer.msg('数据上传发生异常,请稍后重试', {icon: 16, scrollbar: false, time: 2000});
|
||
}
|
||
});
|
||
}else{
|
||
layer.msg("请填写原因");
|
||
}
|
||
}
|
||
|
||
function closePage(type) {
|
||
closePage2();
|
||
if (type === 1) {
|
||
reloadData();
|
||
}
|
||
}
|
||
function closePage2() {
|
||
layer.closeAll(); //再执行关闭
|
||
} |