feat: 优化数据分析页面,添加Excel工单导入功能

- 优化数据分析页面,添加可定制的图表功能
- 支持多种图表类型:折线图、柱状图、饼图、环形图、雷达图、极坐标图
- 添加图表定制功能:时间范围选择、数据维度选择
- 实现Excel工单导入功能,支持详情.xlsx文件
- 添加工单编辑功能,包括前端UI和后端API
- 修复WebSocket连接错误,处理invalid Connection header问题
- 简化预警管理参数,改为卡片式选择
- 实现Agent主动调用,无需人工干预
- 改进知识库导入,结合累计工单内容与大模型输出
This commit is contained in:
zhaojie
2025-09-10 23:13:08 +08:00
parent e08b570f22
commit 0c03ff20aa
16 changed files with 3077 additions and 51 deletions

View File

@@ -429,3 +429,178 @@ body {
background-color: #d1ecf1;
border-color: #17a2b8;
}
/* 预设规则卡片样式 */
.preset-card {
cursor: pointer;
transition: all 0.3s ease;
border: 2px solid transparent;
height: 100%;
}
.preset-card:hover {
transform: translateY(-5px);
box-shadow: 0 8px 25px rgba(0,0,0,0.15);
border-color: #007bff;
}
.preset-card.selected {
border-color: #28a745;
background-color: #f8fff9;
}
.preset-card .card-body {
padding: 1.5rem;
text-align: center;
}
.preset-card h6 {
margin-bottom: 0.5rem;
font-weight: 600;
color: #333;
}
.preset-card p {
margin-bottom: 1rem;
color: #6c757d;
font-size: 0.875rem;
line-height: 1.4;
}
.preset-params {
display: flex;
justify-content: center;
gap: 0.5rem;
flex-wrap: wrap;
}
.preset-params .badge {
font-size: 0.7rem;
padding: 0.25rem 0.5rem;
}
/* 预设模板模态框样式 */
#presetModal .modal-dialog {
max-width: 1200px;
}
#presetModal .modal-body {
max-height: 70vh;
overflow-y: auto;
}
/* 预设规则分类标题 */
#presetModal h6 {
font-weight: 600;
margin-bottom: 1rem;
padding-bottom: 0.5rem;
border-bottom: 2px solid;
}
#presetModal h6.text-primary {
border-bottom-color: #007bff;
}
#presetModal h6.text-success {
border-bottom-color: #28a745;
}
#presetModal h6.text-info {
border-bottom-color: #17a2b8;
}
#presetModal h6.text-warning {
border-bottom-color: #ffc107;
}
/* 预设卡片图标样式 */
.preset-card i {
transition: all 0.3s ease;
}
.preset-card:hover i {
transform: scale(1.1);
}
/* 预设卡片选中状态 */
.preset-card.selected i {
color: #28a745 !important;
}
.preset-card.selected h6 {
color: #28a745;
}
/* 响应式预设卡片 */
@media (max-width: 768px) {
.preset-card .card-body {
padding: 1rem;
}
.preset-card h6 {
font-size: 0.9rem;
}
.preset-card p {
font-size: 0.8rem;
}
.preset-params .badge {
font-size: 0.65rem;
padding: 0.2rem 0.4rem;
}
}
/* 预设规则快速选择 */
.preset-quick-select {
display: flex;
gap: 0.5rem;
margin-bottom: 1rem;
flex-wrap: wrap;
}
.preset-quick-select .btn {
font-size: 0.8rem;
padding: 0.25rem 0.75rem;
}
/* 预设规则预览 */
.preset-preview {
background-color: #f8f9fa;
border: 1px solid #e9ecef;
border-radius: 0.375rem;
padding: 1rem;
margin-top: 1rem;
}
.preset-preview h6 {
color: #495057;
margin-bottom: 0.5rem;
}
.preset-preview .preview-params {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
gap: 0.5rem;
}
.preset-preview .preview-param {
display: flex;
justify-content: space-between;
padding: 0.25rem 0;
border-bottom: 1px solid #e9ecef;
}
.preset-preview .preview-param:last-child {
border-bottom: none;
}
.preset-preview .preview-param strong {
color: #495057;
font-size: 0.875rem;
}
.preset-preview .preview-param span {
color: #6c757d;
font-size: 0.8rem;
}