230 lines
5.4 KiB
JavaScript
230 lines
5.4 KiB
JavaScript
var currentDate = new Date();
|
|
// 获取当前月份的第一天
|
|
var firstDay = new Date(currentDate.getFullYear(), currentDate.getMonth(), 1);
|
|
// 获取下一个月的第一天
|
|
var nextMonthFirstDay = new Date(currentDate.getFullYear(), currentDate.getMonth() + 1, 1);
|
|
// 获取当前月份的天数 //本月多少天
|
|
var daysInMonth = Math.floor((nextMonthFirstDay.getTime() - firstDay.getTime()) / (24 * 60 * 60 * 1000));
|
|
// console.log(daysInMonth);
|
|
var pers = []
|
|
var table, form, laydate, excel;
|
|
|
|
var excelData = [];
|
|
|
|
var cols = [],
|
|
tableDatas = [];
|
|
|
|
|
|
layui.use(['form', 'layer', 'table', 'laydate', 'excel'], function() {
|
|
excel = layui.excel;
|
|
table = layui.table;
|
|
form = layui.form;
|
|
laydate = layui.laydate;
|
|
//初始化日期选择框
|
|
laydate.render({
|
|
elem: '#makeMonth',
|
|
type: 'month',
|
|
value: (new Date()).toISOString().substr(0, 7), // 获取当前日期并转换为'yyyy-MM'格式
|
|
btns: ['now', 'confirm']
|
|
});
|
|
init();
|
|
});
|
|
|
|
|
|
|
|
function init() {
|
|
let userName = $('#userName').val();
|
|
let proName = $('#proName').val();
|
|
let yjName = $('#yjName').val();
|
|
let makeMonth = $('#makeMonth').val();
|
|
|
|
// 静态数据
|
|
var tableData = [];
|
|
|
|
//保存表头
|
|
var col = [
|
|
[{
|
|
title: '序号',
|
|
field: 'zizeng',
|
|
align: 'center',
|
|
type: 'numbers'
|
|
},
|
|
{
|
|
field: 'userName',
|
|
title: '姓 名',
|
|
align: 'center',
|
|
width: '80'
|
|
},
|
|
{
|
|
field: 'proName',
|
|
title: '管辖线路名称',
|
|
align: 'center',
|
|
width: '200'
|
|
},
|
|
{
|
|
field: 'yjName',
|
|
title: '所属运检站',
|
|
align: 'center',
|
|
width: '200'
|
|
},
|
|
{
|
|
field: 'special',
|
|
title: '总计(天)',
|
|
align: 'center',
|
|
width: '100'
|
|
},
|
|
]
|
|
]
|
|
|
|
$.ajax({
|
|
type: 'POST',
|
|
url: PATH_URL + '/attendance/getSpecialPatrolList', // 请求地址
|
|
data: {
|
|
"userName": userName,
|
|
"proName": proName,
|
|
"yjName": yjName,
|
|
"makeMonth": makeMonth,
|
|
"fgsId": "26"
|
|
}, //获取提交的表单字段
|
|
success: function(data) {
|
|
for (var i = 0; i < data.length; i++) {
|
|
var json = {
|
|
'userName': data[i].userName,
|
|
'proName': data[i].proName,
|
|
'yjName': data[i].yjName,
|
|
'special': data[i].special,
|
|
'makeMonth': data[i].makeMonth,
|
|
'proId': data[i].proId
|
|
}
|
|
var spMakeList = data[i].spMakeList;
|
|
for (var j = 0; j < spMakeList.length; j++) {
|
|
json[`${ spMakeList[j].currDay }`] = spMakeList[j].isAtt;
|
|
}
|
|
tableData.push(json)
|
|
}
|
|
console.log('tableData', tableData)
|
|
|
|
if (data.length > 0) {
|
|
for (var i = 0; i < data[0].spMakeList.length; i++) {
|
|
var spMake = data[0].spMakeList[i];
|
|
var json = {
|
|
field: `${ spMake.currDay }`,
|
|
title: `${ spMake.currDay }`,
|
|
align: 'center'
|
|
}
|
|
col[0].push(json);
|
|
}
|
|
}
|
|
d = table.render({
|
|
id: 'layui_table',
|
|
elem: '#table',
|
|
page: true, //开启分页
|
|
skin: 'line', // 表格样式
|
|
cols: col,
|
|
data: tableData,
|
|
title: '特勤考勤台账' //导出数据excel的表名称
|
|
});
|
|
console.log("col", col)
|
|
console.log("tableData", tableData)
|
|
cols = col[0]
|
|
tableDatas = tableData;
|
|
// // 使用 cols 和 data 构造一个包含表头的新数组
|
|
// excelData.push(col[0].map(function(item) {
|
|
// return item.title;
|
|
// })); // 构建表头行
|
|
// tableData.forEach(function(row, index) {
|
|
// var newRow = [];
|
|
// col[0].forEach(function(colItem) {
|
|
// if (colItem.type === 'numbers') {
|
|
// newRow.push(index + 1); // 序号从 1 开始
|
|
// } else {
|
|
// newRow.push(row[colItem.field]); // 添加对应字段的值
|
|
// }
|
|
// });
|
|
// excelData.push(newRow); // 将新行添加到 excelData
|
|
// });
|
|
// console.log(excelData); // 输出结果,检查是否正确
|
|
},
|
|
error: function(XMLHttpRequest, textStatus, e) {
|
|
layer.msg('数据请求发生异常,请稍后重试', {
|
|
icon: 16,
|
|
scrollbar: false
|
|
});
|
|
top.layer.close(addLoadingMsg); //再执行关闭
|
|
}
|
|
});
|
|
}
|
|
|
|
//查询
|
|
function queryClick() {
|
|
init();
|
|
}
|
|
//重置
|
|
function resetClick() {
|
|
$('#userName').val("");
|
|
$('#proName').val("");
|
|
$('#yjName').val("");
|
|
|
|
var today = new Date();
|
|
var year = today.getFullYear();
|
|
var month = today.getMonth() + 1;
|
|
if (month < 10) {
|
|
month = '0' + month;
|
|
}
|
|
var currentMonth = year + '-' + month;
|
|
$('#makeMonth').val(currentMonth);
|
|
init();
|
|
}
|
|
|
|
//导出
|
|
function exportData() {
|
|
const XLSX = window.XLSX;
|
|
|
|
// 创建一个新的工作簿
|
|
var workbook = XLSX.utils.book_new();
|
|
// 创建一个新的工作表
|
|
var worksheet = XLSX.utils.aoa_to_sheet([
|
|
['特勤考勤台账'], // 标题行
|
|
cols.map(function(item) {
|
|
return item.title;
|
|
}), // 表头行
|
|
]);
|
|
|
|
// 添加数据行
|
|
tableDatas.forEach(function(row, index) {
|
|
var newRow = [];
|
|
cols.forEach(function(colItem) {
|
|
if (colItem.type === 'numbers') {
|
|
newRow.push(index + 1); // 序号从 1 开始
|
|
} else {
|
|
newRow.push(row[colItem.field]); // 添加对应字段的值
|
|
}
|
|
});
|
|
XLSX.utils.sheet_add_aoa(worksheet, [newRow], {
|
|
origin: -1
|
|
}); // 添加数据行
|
|
});
|
|
|
|
// 设置合并单元格
|
|
worksheet['!merges'] = [{
|
|
s: {
|
|
r: 0,
|
|
c: 0,
|
|
},
|
|
e: {
|
|
r: 0,
|
|
c: cols.length - 1,
|
|
}
|
|
} // 合并 A1 到 E1 单元格
|
|
];
|
|
|
|
// 添加工作表到工作簿
|
|
XLSX.utils.book_append_sheet(workbook, worksheet, 'Sheet1');
|
|
|
|
// 导出 Excel 文件
|
|
XLSX.writeFile(workbook, '特勤考勤台账.xlsx');
|
|
|
|
// console.log(XLSX);
|
|
// layui.excel.exportExcel(excelData, '特勤考勤台账.xlsx', 'xlsx')
|
|
// table.exportFile(d.config.id, excelData, 'xlsx');
|
|
} |