let checkList = []; let allIds = ''; let loadingMsg; var form; var element; //保存显示页面的类型 (1列表,2文件夹) var displayType = 1; var example; layui.use(['layer', 'form', 'element', 'laydate'], function () { var layer = layui.layer; form = layui.form; element = layui.element; $("#proId").val(localStorage.getItem("proId-pro")); $("#month").val(localStorage.getItem("month-pro")); $("#name").val(localStorage.getItem("name-pro")); $("#months").val(localStorage.getItem("months-pro")); $("#proName").val(localStorage.getItem("proName-pro")); displayType = localStorage.getItem("displayType-pro"); localStorage.setItem("displayType-pro", "1"); var proId = $("#proId").val(); var month = $("#month").val(); var name = $("#name").val(); $(".layui-breadcrumb").append(`  >   ${name}`) if (displayType == 1) { init(); } else { switchFolder(this) } //查询 $("#searchBt").click(function () { example.ajax.reload(); initFolder(); }); $("#resetBt").click(function () { $("#subName").val(""); example.ajax.reload(); initFolder(); }); //文件夹页面 全选按钮监听 $("#AddCheckBox").change(function () { if (this.checked) { $("#folder input[type=checkbox]").prop("checked", true) } else { $("#folder input[type=checkbox]").prop("checked", false) } }) }); /** * 分包查询页面tab * @param value */ function init() { example = $('#dt-table').DataTable({ "sort": false, "searching": false, "processing": true, //加载数据时显示进度状态 "serverSide": true, //表头固定 "fixedHeader": true, "scrollX": "500px", "scrollY": "650px", "scrollCollapse": true, "language": { "url": "../../../js/plugin/datatables/Chinese.lang" }, "ajax": { "url": smz_ht_url + "/salaryFile/getSalaryFileBySub", "type": "post", "data": function (d) { d.proId = $("#proId").val(); d.month = $("#month").val(); d.subName = $("#subName").val(); }, "error": function (xhr, textStatus, errorThrown) { var msg = xhr.responseText; console.log(msg); 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("smz-token"); layer.msg("token过期,请先登录", {shift: -1, time: 1000}, function () { location.href = smz_ht_url + '/login.html'; }); } else if (code == 403) { console.log("未授权:" + message); layer.msg('未授权'); } else if (code == 500) { console.log('系统错误:' + message); } } }, "drawCallback": function () { // alert( '表格重绘了' ); var thisDataTable = $('#dt-table').DataTable(); $(".pagination").append("
  • " + "" + "确认
  • "); //点击按钮跳转指定页数 $('#dataTable-btn').click(function (e) { if ($("#changePage").val() && $("#changePage").val() > 0) { var redirectpage = $("#changePage").val() - 1; } else { var redirectpage = 0; } thisDataTable.page(redirectpage).draw('page'); }); //敲击回车键跳转指定页数 $("#changePage").keypress(function (e) { if (event.keyCode == 13) { if ($("#changePage").val() && $("#changePage").val() > 0) { var redirectpage = $("#changePage").val() - 1; } else { var redirectpage = 0; } thisDataTable.page(redirectpage).draw('page'); } }); }, "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": [ { "width": "3%", "data": "", "render": function (data, type, row) { let node = '' + ''; return node; }, "sClass": "text-center" }, { width: '4%', data: function (row, type, set, meta) { var c = meta.settings._iDisplayStart + meta.row + 1; return c; } }, { "data": "", "defaultContent": "", "orderable": false, "width": "50%", "render": function (data, type, row) { var rewordId = row["rewordId"]; var month = row["month"]; var name = row["subName"]; var html = ""; //文件夹,可以点击 html += `
    `; html += `
    `; html += `  `; html += `${name}`; html += "
    "; html += `
    `; return html; } }, {"data": "fileNum", "defaultContent": ""}, {"data": "month", "defaultContent": ""}, {"data": "rewordId", "defaultContent": ""}, {"data": "uploadTime", "defaultContent": ""} ], }); } function initFile(rewordId, month, name, nums) { localStorage.setItem("rewordId-sub", rewordId); localStorage.setItem("month-sub", month); localStorage.setItem("name-sub", name); localStorage.setItem("subName-sub", $("#subName").val()); localStorage.setItem("displayType-sub", displayType); var parentWindow = window.parent; // 发送消息到父窗口 parentWindow.postMessage({ action: 'changeSrc', newUrl: 'fileAllLibrary.html' }, '*'); // 使用 * 表示允许任何源接收消息 } function navClickPro() { var parentWindow = window.parent; // 发送消息到父窗口 parentWindow.postMessage({ action: 'changeSrc', newUrl: 'proLibrary.html' }, '*'); // 使用 * 表示允许任何源接收消息 } //面包屑点击 function navClick(id, month, name, e, nums) { //重载文件夹页面 // initFolder(); } //文件夹点击 function folderClick(rewordId, month, name) { //加载分包商菜单 initFile(rewordId, month, name, 2); } //下载 function downloadClick() { loadingMsg = top.layer.msg('加载中,请稍候...', {icon: 16, scrollbar: false, time: 0, shade: [0.8, '#393D49']}); //列表 let map = getAllCheckedValue(); if (map.get("checkedArr").length > 0) { var listFile = map.get("checkedArr"); $.ajax({ type: 'POST', async: true, // 默认异步true,false表示同步 url: smz_ht_url + "/salaryFile/checkSalaryFileIsActive", // 请求地址 contentType: "application/json; charset=utf-8", dataType: 'json', // 服务器返回数据类型 data: JSON.stringify({ type: "2", listFile: listFile }), //获取提交的表单字段 success: function (data) { if (data.code == 200) { exportFullFile(listFile) } else { top.layer.close(loadingMsg); layer.alert(data.msg); } }, error: function (XMLHttpRequest, textStatus, e) { top.layer.close(loadingMsg); layer.msg('数据请求发生异常,请稍后重试', {icon: 16, scrollbar: false}); } }); } else if (map.get("checkedArr").length == 0) { layer.alert("请勾选数据", {icon: 0}) } else { layer.alert("系统错误,请联系管理员", {icon: 2}) } } function exportFullFile(listFile, token) { var token = localStorage.getItem("smz-token"); let url = smz_ht_url + "/salaryFile/exportSalaryFile"; let xhr = new XMLHttpRequest(); xhr.open("post", url, true); //设置xhr请求的超时时间 //设置响应返回的数据格式 xhr.responseType = "blob"; // 转换流 // 设置请求头 xhr.setRequestHeader("Authorization", `Bearer ${token}`); xhr.setRequestHeader('Content-Type', 'application/json'); xhr.setRequestHeader('token', token); const data = { type: "2", listFile: listFile }; const str = JSON.stringify(data); xhr.send(str) //构造表单数据 xhr.onload = function () { if (this.status === 200) { let blob = this.response; var a = document.createElement("a"); var url = window.URL.createObjectURL(blob); a.href = url; // 假设服务器在响应中设置了 Content-Disposition 头部,可以通过此方式获取文件名 var disposition = xhr.getResponseHeader('Content-Disposition'); var filenameRegex = /filename[^;=\n]*=((['"]).*?\2|[^;\n]*)/; var match = filenameRegex.exec(disposition); var filename = match ? decodeURIComponent(match[1]) : 'unknown'; a.download = filename || 'downloadedFile.xlsx'; // 默认文件名 a.click(); top.layer.close(loadingMsg); } else if (this.status === 401) { localStorage.removeItem("token"); layer.msg('用户登录过期,请重新登录', {icon: 5, time: 2000}, function () { location.href = smz_ht_url + '/login.html'; }); }else { // 其他错误处理 console.error('Error downloading file:', this.status); layer.msg('下载文件失败,请稍后再试', {icon: 5, time: 2000}); } }; } //切换到列表 function switchList(e) { displayType = 1; $(e).css("border", "1px solid #409EFF"); $(e).next().css("border", "1px solid #E4E4E4") $(e).prop("src", "../../../img/exam/list1.jpg") $(e).next().prop("src", "../../../img/exam/folder2.jpg") $("#table").css("display", ""); $("#folder").css("display", "none"); example.ajax.reload(); } //切换到文件夹 function switchFolder(e) { displayType = 2; $(e).css("border", "1px solid #409EFF"); $(e).prev().css("border", "1px solid #E4E4E4") $(e).prop("src", "../../../img/exam/1.jpg") $(e).prev().prop("src", "../../../img/exam/folder1.jpg") $("#table").css("display", "none"); $("#folder").css("display", ""); initFolder(); } //加载文件夹页面 function initFolder(value) { //加载文件夹页面 loadingMsg = top.layer.msg('数据加载中,请稍候...', {icon: 16, scrollbar: false, time: 0, shade: [0.8, '#393D49']}); var json = { "proId": $("#proId").val(), "month": $("#month").val(), "subName": $("#subName").val() } $.ajax({ type: 'POST', async: true, // 默认异步true,false表示同步 url: smz_ht_url + "/salaryFile/getSalaryFileBySubList", // 请求地址 // contentType: "application/json; charset=utf-8", contentType: "application/x-www-form-urlencoded", dataType: 'json', // 服务器返回数据类型 data: json, //获取提交的表单字段 success: function (data) { top.layer.close(loadingMsg); if (data.code == 200) { //加载文件夹页面 var html = "
    "; $("#folder>hr").remove(); $("#folder>div").remove(); for (let i = 0; i < data.data.length; i++) { html += `
    `; html += ``; html += ``; html += `
    `; } $("#folder").append(html) } else { var html = "
    "; $("#folder>hr").remove(); $("#folder>div").remove(); $("#folder").append(html) layer.alert(data.msg, {icon: 2}); } }, error: function (XMLHttpRequest, textStatus, e) { top.layer.close(loadingMsg); layer.msg('数据请求发生异常,请稍后重试', {icon: 16, scrollbar: false}); } }); } // 设置表格全选(disabled不选) $(document).on("click", ".checkAll", function () { if ($(this).prop("checked")) { var disable = $('.checkOne'); for (let i = 0; i < disable.length; i++) { if (!$(disable[i]).prop("disabled")) { $(disable[i]).prop("checked", true); } } } else { $(".checkOne").prop("checked", false); } }) // 获取复选框选中的值 function getAllCheckedValue() { let proId = $("#proId").val(); let checkedArr = []; let map = new Map(); $('input[type="checkbox"]:checked').each(function () { if ($(this).val() !== 'on') { const foreignId = $(this).val(); const month = $(this).attr("month"); // 将信息存入对象,并将对象添加到数组中 checkedArr.push({ "foreignId": proId +"|"+foreignId, "month": month }); } }); map.set('checkedArr', checkedArr); return map; }