hn_cloud_web/smz-web/js/work/fileLibrary/subLibrary.js

416 lines
16 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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(`<a href="javascript:void(0)" >&nbsp;&nbsp;>&nbsp;&nbsp;<img src="../../../img/fileIcon/folderIcon.png" width="12"/>&nbsp;${name}</a>`)
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": ctxPath + "/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("<li>" +
"<a class='paginate_button' style='padding:4px;' href='#' tabindex='0'>到 <input style='margin:0px;width:40px;' id='changePage'> 页</a>" +
"<a class='paginate_button' style='margin-bottom:1px' href='#' tabindex='0' id='dataTable-btn'>确认</a></li>");
//点击按钮跳转指定页数
$('#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 = '<input type="checkbox" class="checkOne" value=\"' + row.subId + '\" name=\"' + row.subName + '\" month=\"'+row.month+'\" id="check_item_' + row.subId + '">' +
'<label for="check_item_' + row.subId + '" ></label>';
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 += `<div style="display: flex;">`;
html += `<div onclick='initFile("${rewordId}", "${month}","${name}",1)' style="cursor:pointer;">`;
html += `<img src='../../../img/fileIcon/folderIcon.png' width="20" />&nbsp;&nbsp;`;
html += `<span style="color: #409EFF">${name}</span>`;
html += "</div>";
html += `</div>`;
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 = "<hr/>";
$("#folder>hr").remove();
$("#folder>div").remove();
for (let i = 0; i < data.data.length; i++) {
html += `<div class="fileBox" style="width: 9.8%;height: 24%;float: left">`;
html += `<input id="fileBox${i}" type="checkbox" pid="${data.data[i].subId}" name="${data.data[i].subName}" value="${data.data[i].subId}" month="${data.data[i].month}" title="" style="display: block">`;
html += `<label for="fileBox${i}" style="display: block">`;
html += `<div style="text-align: center;" ondblclick="folderClick('${data.data[i].rewordId}', '${data.data[i].month}', '${data.data[i].subName}')">`;
html += `<img src="../../../img/fileIcon/folderIcon.png" width="120" height="120"/>`;
html += `</div>`;
html += `<div style="text-align: center">${getSubString(data.data[i].subName, 12, 12)}</div>`;
html += `</label>`;
html += `</div>`;
}
$("#folder").append(html)
} else {
var html = "<hr/>";
$("#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;
}