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": contentPath + "/js/plugin/datatables/Chinese.lang"
},
"ajax": {
"url": ctxPath + "/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 = ctxPath + '/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: ctxPath + "/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("token");
let url = ctxPath + "/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 = ctxPath + '/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: ctxPath + "/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;
}