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

417 lines
18 KiB
JavaScript
Raw Normal View History

2025-11-27 16:55:35 +08:00
var token = localStorage.getItem("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": {
2025-12-02 14:22:34 +08:00
"url": contentPath + "/js/plugin/datatables/Chinese.lang"
2025-11-27 16:55:35 +08:00
},
"ajax": {
"url": ctxPath + "/salaryFile/getSalaryFileByQueryType",
"type": "post",
"data": function (d) {
var months = $("#months").val();
if(months ==""){
months = times2[0]+"-" +times2[1] +" - " +times1[0]+"-" +times1[1]
}
var startMonth="";
var endMonth="";
if(months){
startMonth = months.split(" - ")[0];
endMonth = months.split(" - ")[1];
}
d.queryType = 2;
d.startMonth = startMonth;
d.endMonth = endMonth;
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="downloadClickStar(${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 downloadClickStar(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 downloadClickAllStar() {
//列表
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("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
});
}
}