Add files via upload

This commit is contained in:
公明
2026-01-24 15:45:10 +08:00
committed by GitHub
parent 6321df417b
commit 42e9ad3bda
5 changed files with 75 additions and 79 deletions
+15 -2
View File
@@ -3273,7 +3273,12 @@ header {
}
.pagination-container {
margin-top: 10px;
margin-top: 0;
}
/* 漏洞管理页面的分页栏间距优化 */
#vulnerability-pagination.pagination-fixed {
margin-top: 12px;
}
/* Skills管理页面分页优化 */
@@ -3310,6 +3315,9 @@ header {
/* 确保底部左右角都是圆角 */
border-bottom-left-radius: 8px;
border-bottom-right-radius: 8px;
/* 添加边框和阴影,使圆角更明显 */
border: 1px solid var(--border-color);
box-shadow: 0 1px 3px rgba(0, 0, 0, 0.05);
}
.pagination-fixed .pagination {
@@ -3331,6 +3339,8 @@ header {
/* 确保底部左右角都是圆角 */
border-bottom-left-radius: 8px;
border-bottom-right-radius: 8px;
/* 移除顶部边框,因为外层容器已有边框 */
border-top: none;
}
/* 左侧:信息显示和每页数量选择器 - 更自然的设计 */
@@ -3453,7 +3463,7 @@ header {
white-space: nowrap;
font-weight: 400;
/* 添加圆角设计,四个角都是圆的 */
border-radius: 6px !important;
border-radius: 8px !important;
background: var(--bg-secondary) !important;
border: 1px solid var(--border-color) !important;
display: inline-flex !important;
@@ -7754,6 +7764,7 @@ header {
display: flex;
flex-direction: column;
gap: 16px;
margin-bottom: 0;
}
.vulnerability-card {
@@ -9576,6 +9587,7 @@ header {
/* 限制标题最多显示2行 */
display: -webkit-box;
-webkit-line-clamp: 2;
line-clamp: 2;
-webkit-box-orient: vertical;
overflow: hidden;
}
@@ -9593,6 +9605,7 @@ header {
/* 限制描述的最大行数,保持卡片整洁 */
display: -webkit-box;
-webkit-line-clamp: 3;
line-clamp: 3;
-webkit-box-orient: vertical;
overflow: hidden;
}
+12 -1
View File
@@ -1260,7 +1260,8 @@ function renderProcessDetails(messageId, processDetails) {
addTimelineItem(timeline, eventType, {
title: itemTitle,
message: detail.message || '',
data: data
data: data,
createdAt: detail.createdAt // 传递实际的事件创建时间
});
});
@@ -1980,6 +1981,16 @@ async function deleteConversation(conversationId, skipConfirm = false) {
addAttackChainButton(null);
}
// 更新缓存 - 立即删除,确保后续加载时能正确识别
delete conversationGroupMappingCache[conversationId];
// 同时从待保留映射中移除
delete pendingGroupMappings[conversationId];
// 如果当前在分组详情页面,重新加载分组对话
if (currentGroupId) {
await loadGroupConversations(currentGroupId);
}
// 刷新对话列表
loadConversations();
} catch (error) {
+20 -1
View File
@@ -835,7 +835,26 @@ function addTimelineItem(timeline, type, options) {
item.id = itemId;
item.className = `timeline-item timeline-item-${type}`;
const time = new Date().toLocaleTimeString('zh-CN', { hour: '2-digit', minute: '2-digit', second: '2-digit' });
// 使用传入的createdAt时间,如果没有则使用当前时间(向后兼容)
let eventTime;
if (options.createdAt) {
// 处理字符串或Date对象
if (typeof options.createdAt === 'string') {
eventTime = new Date(options.createdAt);
} else if (options.createdAt instanceof Date) {
eventTime = options.createdAt;
} else {
eventTime = new Date(options.createdAt);
}
// 如果解析失败,使用当前时间
if (isNaN(eventTime.getTime())) {
eventTime = new Date();
}
} else {
eventTime = new Date();
}
const time = eventTime.toLocaleTimeString('zh-CN', { hour: '2-digit', minute: '2-digit', second: '2-digit' });
let content = `
<div class="timeline-item-header">
+27 -74
View File
@@ -262,88 +262,41 @@ function renderVulnerabilityPagination() {
return;
}
// 计算显示的页码范围
let startPage = Math.max(1, currentPage - 2);
let endPage = Math.min(totalPages, currentPage + 2);
// 确保显示5个页码(如果可能)
if (endPage - startPage < 4) {
if (startPage === 1) {
endPage = Math.min(totalPages, startPage + 4);
} else if (endPage === totalPages) {
startPage = Math.max(1, endPage - 4);
}
}
// 计算显示范围
const start = total === 0 ? 0 : (currentPage - 1) * pageSize + 1;
const end = total === 0 ? 0 : Math.min(currentPage * pageSize, total);
let paginationHTML = '<div class="pagination">';
// 显示总数和当前范围
const startItem = (currentPage - 1) * pageSize + 1;
const endItem = Math.min(currentPage * pageSize, total);
paginationHTML += `<div class="pagination-info">显示 ${startItem}-${endItem} / 共 ${total} 条</div>`;
// 每页条数选择器(始终显示)
const savedPageSize = getVulnerabilityPageSize();
// 左侧:显示范围信息和每页数量选择器(参考Skills样式)
paginationHTML += `
<div class="pagination-page-size">
<label for="vulnerability-page-size-pagination">每页:</label>
<select id="vulnerability-page-size-pagination" onchange="changeVulnerabilityPageSize()">
<option value="10" ${savedPageSize === 10 ? 'selected' : ''}>10</option>
<option value="20" ${savedPageSize === 20 ? 'selected' : ''}>20</option>
<option value="50" ${savedPageSize === 50 ? 'selected' : ''}>50</option>
<option value="100" ${savedPageSize === 100 ? 'selected' : ''}>100</option>
</select>
<div class="pagination-info">
<span>显示 ${start}-${end} / ${total} </span>
<label class="pagination-page-size">
每页显示
<select id="vulnerability-page-size-pagination" onchange="changeVulnerabilityPageSize()">
<option value="10" ${pageSize === 10 ? 'selected' : ''}>10</option>
<option value="20" ${pageSize === 20 ? 'selected' : ''}>20</option>
<option value="50" ${pageSize === 50 ? 'selected' : ''}>50</option>
<option value="100" ${pageSize === 100 ? 'selected' : ''}>100</option>
</select>
</label>
</div>
`;
// 只有当有多页时才显示页码导航
if (totalPages > 1) {
paginationHTML += '<div class="pagination-controls">';
// 上一页按钮
if (currentPage > 1) {
paginationHTML += `<button class="pagination-btn" onclick="loadVulnerabilities(${currentPage - 1})" title="上一页"></button>`;
} else {
paginationHTML += '<button class="pagination-btn disabled" disabled></button>';
}
// 第一页
if (startPage > 1) {
paginationHTML += `<button class="pagination-btn" onclick="loadVulnerabilities(1)">1</button>`;
if (startPage > 2) {
paginationHTML += '<span class="pagination-ellipsis">...</span>';
}
}
// 页码按钮
for (let i = startPage; i <= endPage; i++) {
if (i === currentPage) {
paginationHTML += `<button class="pagination-btn active">${i}</button>`;
} else {
paginationHTML += `<button class="pagination-btn" onclick="loadVulnerabilities(${i})">${i}</button>`;
}
}
// 最后一页
if (endPage < totalPages) {
if (endPage < totalPages - 1) {
paginationHTML += '<span class="pagination-ellipsis">...</span>';
}
paginationHTML += `<button class="pagination-btn" onclick="loadVulnerabilities(${totalPages})">${totalPages}</button>`;
}
// 下一页按钮
if (currentPage < totalPages) {
paginationHTML += `<button class="pagination-btn" onclick="loadVulnerabilities(${currentPage + 1})" title="下一页"></button>`;
} else {
paginationHTML += '<button class="pagination-btn disabled" disabled></button>';
}
paginationHTML += '</div>';
}
// 右侧:分页按钮(参考Skills样式:首页、上一页、第X/Y页、下一页、末页)
paginationHTML += `
<div class="pagination-controls">
<button class="btn-secondary" onclick="loadVulnerabilities(1)" ${currentPage === 1 || total === 0 ? 'disabled' : ''}>首页</button>
<button class="btn-secondary" onclick="loadVulnerabilities(${currentPage - 1})" ${currentPage === 1 || total === 0 ? 'disabled' : ''}>上一页</button>
<span class="pagination-page"> ${currentPage} / ${totalPages || 1} </span>
<button class="btn-secondary" onclick="loadVulnerabilities(${currentPage + 1})" ${currentPage >= totalPages || total === 0 ? 'disabled' : ''}>下一页</button>
<button class="btn-secondary" onclick="loadVulnerabilities(${totalPages || 1})" ${currentPage >= totalPages || total === 0 ? 'disabled' : ''}>末页</button>
</div>
`;
paginationHTML += '</div>';
paginationContainer.innerHTML = paginationHTML;
}
+1 -1
View File
@@ -624,7 +624,7 @@
</div>
<!-- 分页控件 -->
<div id="vulnerability-pagination"></div>
<div id="vulnerability-pagination" class="pagination-container pagination-fixed"></div>
</div>
</div>