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

402 lines
17 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.

var token = localStorage.getItem("smz-token");
let loadingMsg;
var form;
var element;
var example;
layui.use(['layer', 'form', 'element', 'laydate'], function () {
var layer = layui.layer;
form = layui.form;
element = layui.element;
form.render();
init();
//查询
$("#searchBt").click(function () {
example.ajax.reload();
});
$("#resetBt").click(function () {
$("#fileName").val("");
example.ajax.reload();
});
});
/**
* 查询页面tab
* @param value
*/
function init() {
example =
exampleFile =
$('#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/getSalaryFileByQueryType",
"type": "post",
"data": function (d) {
d.queryType = 3;
d.fileName = $("#fileName").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.fileId + '\" name=\"' + row.fileName + '\" month=\"' + row.month + '\" id="check_item_' + row.fileId + '">' +
'<label for="check_item_' + row.fileId + '" ></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 fileId = row["fileId"];
var filePath = row["filePath"];
var fileName = row["fileName"];
var type = row["type"];
var isStar = row["isStar"];
var month = row["month"];
var html = "";
//文件夹,可以点击
html += `<div style="display: flex;">`;
if(filePath == "" || filePath == null){
html += `<div onclick='fileMiss("${filePath}")' style="cursor:pointer;">`;
}else{
html += `<div onclick='filePreView("${filePath}","","","${fileId}")' style="cursor:pointer;">`;
}
// html += `<div >`;
if (type == "支付表") {
html += `<img src='../../../img/nan.png' width="20" />&nbsp;&nbsp;`;
} else {
html += `<img src='../../../img/lu.png' width="20" />&nbsp;&nbsp;`;
}
html += `<span style="color: #409EFF">${fileName}</span>`;
console.log(isStar)
if (isStar == 1) {
html += `<img src='../../../img/starY.png' width="20" style="margin-left: 5px;color: #FF9900"/>`;
}
html += "</div>";
html += ` <button id="download" style="display: none;color: #2F92FE;background-color: transparent;border: 0px;" class=" overlay layui-btn layui-btn-primary layui-border-blue layui-btn-sm" onclick="downloadClickLately(${fileId},${month})">
<i class="layui-icon layui-icon-download-circle" ></i>
下载
</button>`;
if (isStar != 1) {
html += `<button id="del" style="display: none;color: #2F92FE;background-color: transparent;border: 0px;"
class="overlay layui-btn layui-btn-primary layui-border-blue layui-btn-sm"
onclick="starClick(${fileId},1)">
<i class="layui-icon layui-icon-star-fill"></i>
标记星号
</button>`
}else{
html += `<button id="del" style="display: none;color: #2F92FE;background-color: transparent;border: 0px;"
class="overlay layui-btn layui-btn-primary layui-border-blue layui-btn-sm"
onclick="starClick(${fileId},0)">
<i class="layui-icon layui-icon-star-fill"></i>
取消星号
</button>`
}
html += `</div>`;
return html;
}
},
{"data": "type", "defaultContent": ""},
{"data": "month", "defaultContent": ""},
{"data": "proName", "defaultContent": ""},
{"data": "subName", "defaultContent": ""}
],
"drawCallback": function (settings) {
// 使用 DataTable 实例来获取表格 body
var api = this.api(); // 这里的 `this` 是 DataTable 实例
$('td', api.table().body()).hover(
function () {
$(this).find('.overlay').show();
},
function () {
$(this).find('.overlay').hide();
}
);
}
});
}
// 设置表格全选(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 downloadClickLately(fileId,month) {
//列表
loadingMsg = top.layer.msg('加载中,请稍候...', {icon: 16, scrollbar: false, time: 0, shade: [0.8, '#393D49']});
var listFile = [];
listFile.push({
"foreignId": fileId,
"month": month
});
$.ajax({
type: 'POST',
async: true, // 默认异步true,false表示同步
url: ctxPath + "/salaryFile/checkSalaryFileIsActive", // 请求地址
contentType: "application/json; charset=utf-8",
dataType: 'json', // 服务器返回数据类型
data: JSON.stringify({
type: "3",
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});
}
});
}
//批量下载
function downloadClickAllLately() {
//列表
loadingMsg = top.layer.msg('加载中,请稍候...', {icon: 16, scrollbar: false, time: 0, shade: [0.8, '#393D49']});
//列表
let map = getAllCheckedValueStar();
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: "3",
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) {
top.layer.close(loadingMsg);
layer.alert("请勾选数据", {icon: 0})
} else {
top.layer.close(loadingMsg);
layer.alert("系统错误,请联系管理员", {icon: 2})
}
}
function exportFullFile(listFile) {
var token = localStorage.getItem("smz-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: "3",
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 getAllCheckedValueStar() {
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": foreignId,
"month": month
});
}
});
map.set('checkedArr', checkedArr);
return map;
}
//标星
function starClick(fileId,isStar) {
var index = layer.confirm("确认星标吗?",{icon: 0},function(){
$.ajax({
type: 'POST',
async: true, // 默认异步true,false表示同步
url: ctxPath + "/salaryFile/updateFileViewStar", // 请求地址
// contentType: "application/json; charset=utf-8",
contentType: "application/x-www-form-urlencoded",
dataType: 'json', // 服务器返回数据类型
data: {
fileId: fileId,
isStar:isStar
} , //获取提交的表单字段
success: function (data) {
layer.close(loadingMsg);
if (data.code == 200) {
layer.msg("修改成功", { icon: 1 });
//重载表格
example.ajax.reload();
//关闭弹框
layer.close(index); //再执行关闭
} else {
layer.alert(data.msg);
}
},
error: function (XMLHttpRequest, textStatus, e) {
top.layer.close(loadingMsg);
layer.msg('数据请求发生异常,请稍后重试', {icon: 16, scrollbar: false});
}
});
});
}
function fileMiss(path) {
console.log(path);
layer.msg("文件未转换成功")
}
function filePreView(url,fileName,time,fileId) {
if(url != "" && url != null){
localStorage.setItem("filePaths", url);
localStorage.setItem("fileNames", fileName);
localStorage.setItem("fileTimes", time);
localStorage.setItem("fileId", fileId);
var height = '525px';
var width = '800px';
var index = layer.open({
title: ["查看", 'color:#3B70A1;background-color:#E8ECEB;font-size:20px'],
type: 2,
content: '../publicFileViewNew.html',
area: [width, height],
maxmin: false
});
}
}