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