114 lines
3.6 KiB
JavaScript
114 lines
3.6 KiB
JavaScript
const API_HISTORY = "http://app.wisdompulse.cn/api/v1/doc/fetch-os-upload-history";
|
|
const API_DELETE = "http://app.wisdompulse.cn/api/v1/doc/batch-delete-os-upload"; // 假设后端支持 recordId 数组删除
|
|
|
|
const tableBody = document.getElementById("historyTableBody");
|
|
const pagination = document.getElementById("pagination");
|
|
const pageSizeSelect = document.getElementById("pageSizeSelect");
|
|
const deleteBtn = document.getElementById("deleteSelectedBtn");
|
|
const selectAllCheckbox = document.getElementById("selectAll");
|
|
|
|
let currentPage = 1;
|
|
let total = 0;
|
|
let pageSize = parseInt(pageSizeSelect.value);
|
|
|
|
function loadUploadHistory(page = 1, size = 10) {
|
|
const url = `${API_HISTORY}?page=${page}&size=${size}`;
|
|
fetch(url)
|
|
.then(res => res.json())
|
|
.then(data => {
|
|
renderTable(data.records || []);
|
|
renderPagination(data.total || 0, page, size);
|
|
})
|
|
.catch(err => {
|
|
console.error("加载上传记录失败:", err);
|
|
});
|
|
}
|
|
|
|
function renderTable(records) {
|
|
tableBody.innerHTML = "";
|
|
if (!records.length) {
|
|
const tr = document.createElement("tr");
|
|
tr.innerHTML = `<td colspan="4">暂无记录</td>`;
|
|
tableBody.appendChild(tr);
|
|
return;
|
|
}
|
|
|
|
records.forEach((rec) => {
|
|
const tr = document.createElement("tr");
|
|
tr.innerHTML = `
|
|
<td><input type="checkbox" class="recordCheckbox" data-id="${rec.recordId}" /></td>
|
|
<td><a href="${rec.url}" target="_blank">${rec.fileName}</a></td>
|
|
<td>${rec.uploadTime}</td>
|
|
<td>${rec.daysRemaining}</td>
|
|
`;
|
|
tableBody.appendChild(tr);
|
|
});
|
|
|
|
// 全选功能
|
|
selectAllCheckbox.checked = false;
|
|
selectAllCheckbox.onclick = () => {
|
|
const checkboxes = document.querySelectorAll(".recordCheckbox");
|
|
checkboxes.forEach(cb => cb.checked = selectAllCheckbox.checked);
|
|
};
|
|
}
|
|
|
|
function renderPagination(totalCount, current, size) {
|
|
pagination.innerHTML = "";
|
|
total = totalCount;
|
|
const totalPages = Math.ceil(totalCount / size);
|
|
if (totalPages <= 1) return;
|
|
|
|
for (let i = 1; i <= totalPages; i++) {
|
|
const btn = document.createElement("button");
|
|
btn.textContent = i;
|
|
if (i === current) btn.classList.add("active");
|
|
btn.onclick = () => {
|
|
currentPage = i;
|
|
loadUploadHistory(currentPage, pageSize);
|
|
};
|
|
pagination.appendChild(btn);
|
|
}
|
|
}
|
|
|
|
deleteBtn.onclick = () => {
|
|
const selected = Array.from(document.querySelectorAll(".recordCheckbox:checked"));
|
|
if (!selected.length) {
|
|
alert("请选择要删除的记录");
|
|
return;
|
|
}
|
|
|
|
const recordIds = selected.map(cb => parseInt(cb.getAttribute("data-id")));
|
|
|
|
if (!confirm("删除后文件将无法访问或检索,是否确认删除?")) return;
|
|
|
|
fetch(API_DELETE, {
|
|
method: "DELETE",
|
|
headers: {
|
|
"Content-Type": "application/json"
|
|
},
|
|
body: JSON.stringify({ recordIds })
|
|
})
|
|
.then(res => {
|
|
if (!res.ok) throw new Error("删除失败");
|
|
return res.json();
|
|
})
|
|
.then(() => {
|
|
alert("删除成功");
|
|
loadUploadHistory(currentPage, pageSize);
|
|
})
|
|
.catch(err => {
|
|
console.error("删除出错:", err);
|
|
alert("删除失败,请稍后重试");
|
|
});
|
|
};
|
|
|
|
pageSizeSelect.addEventListener("change", () => {
|
|
pageSize = parseInt(pageSizeSelect.value);
|
|
currentPage = 1;
|
|
loadUploadHistory(currentPage, pageSize);
|
|
});
|
|
|
|
window.addEventListener("DOMContentLoaded", () => {
|
|
loadUploadHistory(currentPage, pageSize);
|
|
});
|