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

542 lines
22 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;
//保存显示页面的类型 1列表2文件夹
var displayType = 1;
var example;
layui.use(['layer', 'form', 'element', 'laydate'], function () {
var layer = layui.layer;
form = layui.form;
element = layui.element;
$("#rewordId").val(localStorage.getItem("rewordId-sub"));
$("#month").val(localStorage.getItem("month-sub"));
$("#name").val(localStorage.getItem("name-sub"));
$("#subName").val(localStorage.getItem("subName-sub"));
var namePro = localStorage.getItem("name-pro");
var proIdPro = localStorage.getItem("proId-pro");
displayType = localStorage.getItem("displayType-sub");
localStorage.setItem("displayType-sub", "1");
var rewordId = $("#rewordId").val();
var month = $("#month").val();
var name = $("#name").val();
$(".layui-breadcrumb").append(`<a href="javascript:void(0)" onclick="navClickSub('${proIdPro}','${month}','${name}', this)" >&nbsp;&nbsp;>&nbsp;&nbsp;<img src="../../../img/fileIcon/folderIcon.png" width="12"/>&nbsp;${namePro}</a>`)
$(".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 () {
$("#fileName").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 =
exampleFile =
$('#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/getSalaryFile",
"type": "post",
"data": function (d) {
d.rewordId = $("#rewordId").val();
d.fileName = $("#fileName").val();
d.month = $("#month").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("<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="downloadClickMe(${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": "userName", "defaultContent": ""},
{"data": "uploadTime", "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();
}
);
}
});
}
function navClickPro() {
var parentWindow = window.parent;
// 发送消息到父窗口
parentWindow.postMessage({
action: 'changeSrc',
newUrl: 'proLibrary.html'
}, '*'); // 使用 * 表示允许任何源接收消息
}
function navClickSub() {
var parentWindow = window.parent;
// 发送消息到父窗口
parentWindow.postMessage({
action: 'changeSrc',
newUrl: 'subLibrary.html'
}, '*'); // 使用 * 表示允许任何源接收消息
}
//文件夹点击
function folderClick(proId, month, name) {
//加载分包商菜单
initSub(proId, month, name);
}
//切换到列表
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 = {
"rewordId": $("#rewordId").val(),
"month": $("#month").val(),
"fileName": $("#fileName").val()
}
$.ajax({
type: 'POST',
async: true, // 默认异步true,false表示同步
url: smz_ht_url + "/salaryFile/getSalaryFileList", // 请求地址
// 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].fileId}" name="${data.data[i].fileName}" value="${data.data[i].fileId}" month="${data.data[i].month}" title="" style="display: block">`;
html += `<label for="fileBox${i}" style="display: block">`;
if (data.data[i].fileType == "1") {
html += `<div style="text-align: center;" ondblclick="folderClick('${data.data[i].id}', '${data.data[i].pid}', '${data.data[i].name}')">`;
html += `<img src="../../../img/fileIcon/folderIcon.png" width="120" height="120"/>`;
} else {
html += `<div style="text-align: center;">`;
html += `<img src="${fileIconType(data.data[i].fileExt)}" width="120" height="120"/>`;
}
html += `</div>`;
html += `<div style="text-align: center">${getSubString(data.data[i].name, 12, 12)}</div>`;
html += `</label>`;
html += `</div>`;
}
$("#folder").append(html)
} else {
layer.alert("数据获取失败", {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 downloadClickMe(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: smz_ht_url + "/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 downloadClickAllMe() {
//列表
loadingMsg = top.layer.msg('加载中,请稍候...', {icon: 16, scrollbar: false, time: 0, shade: [0.8, '#393D49']});
//列表
let map = getAllCheckedValueMe();
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: "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) {
layer.alert("请勾选数据", {icon: 0})
} else {
layer.alert("系统错误,请联系管理员", {icon: 2})
}
}
function exportFullFile(listFile) {
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: "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 = smz_ht_url + '/login.html';
});
}else {
// 其他错误处理
console.error('Error downloading file:', this.status);
layer.msg('下载文件失败,请稍后再试', {icon: 5, time: 2000});
}
};
}
// 获取复选框选中的值
function getAllCheckedValueMe() {
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: smz_ht_url + "/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
});
}
}