Files
param-auto-manager/templates/index.html
T
hz4th_coder d18e80016b fix: 修复首页产品处理启动问题
- 首页点击处理现在使用新的处理监控流程
- 处理启动后自动跳转到处理监控页面
- 首页添加'处理监控'入口按钮
- 修复错误消息显示 undefined 的问题
2026-07-14 12:33:40 +08:00

365 lines
16 KiB
HTML

<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>参数数据自动化管理系统</title>
<link rel="stylesheet" href="/static/css/style.css">
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/remixicon@3.5.0/fonts/remixicon.css">
</head>
<body>
<div class="container">
<!-- 头部 -->
<header class="header">
<h1><i class="ri-robot-line"></i> 参数数据自动化管理系统</h1>
<div class="header-actions">
<a href="/process" class="btn btn-primary">
<i class="ri-cpu-line"></i> 处理监控
</a>
<button onclick="refreshData()" class="btn btn-secondary">
<i class="ri-refresh-line"></i> 刷新数据
</button>
<div class="status-badge">
<span id="system-status" class="status-dot"></span>
<span id="status-text">系统正常</span>
</div>
</div>
</header>
<!-- 统计卡片 -->
<div class="stats-grid">
<div class="stat-card">
<div class="stat-icon"><i class="ri-file-list-3-line"></i></div>
<div class="stat-content">
<div class="stat-label">内容库文章</div>
<div class="stat-value" id="articles-count">0</div>
</div>
</div>
<div class="stat-card">
<div class="stat-icon"><i class="ri-time-line"></i></div>
<div class="stat-content">
<div class="stat-label">待处理产品</div>
<div class="stat-value" id="pending-count">0</div>
</div>
</div>
<div class="stat-card">
<div class="stat-icon processing"><i class="ri-loader-4-line"></i></div>
<div class="stat-content">
<div class="stat-label">处理中</div>
<div class="stat-value" id="processing-count">0</div>
</div>
</div>
<div class="stat-card">
<div class="stat-icon success"><i class="ri-check-line"></i></div>
<div class="stat-content">
<div class="stat-label">最近成功</div>
<div class="stat-value" id="success-count">0</div>
</div>
</div>
<div class="stat-card">
<div class="stat-icon error"><i class="ri-close-circle-line"></i></div>
<div class="stat-content">
<div class="stat-label">最近失败</div>
<div class="stat-value" id="failed-count">0</div>
</div>
</div>
</div>
<!-- 主内容区域 -->
<div class="main-content">
<!-- 左侧:待处理产品 -->
<div class="panel">
<div class="panel-header">
<h2><i class="ri-list-check-2"></i> 待处理产品列表</h2>
<div class="panel-actions">
<button onclick="showAddProductModal()" class="btn btn-primary">
<i class="ri-add-line"></i> 添加产品
</button>
<button onclick="processBatch()" class="btn btn-success">
<i class="ri-play-line"></i> 批量处理
</button>
</div>
</div>
<div class="panel-body">
<table class="data-table">
<thead>
<tr>
<th>产品名称</th>
<th>分类</th>
<th>子分类</th>
<th>优先级</th>
<th>来源</th>
<th>添加时间</th>
<th>操作</th>
</tr>
</thead>
<tbody id="pending-table">
<tr><td colspan="7" class="empty-text">暂无待处理产品</td></tr>
</tbody>
</table>
</div>
</div>
<!-- 右侧:内容库和搜索入口 -->
<div class="panel">
<div class="panel-header">
<h2><i class="ri-folder-line"></i> 内容库</h2>
<a href="/library" class="btn btn-primary btn-sm">
<i class="ri-external-link-line"></i> 进入
</a>
</div>
<div class="panel-body">
<div class="quick-stats">
<div class="quick-stat-item">
<span class="quick-stat-value" id="quick-articles-count">-</span>
<span class="quick-stat-label">篇文章</span>
</div>
<div class="quick-stat-item">
<span class="quick-stat-value" id="quick-categories-count">-</span>
<span class="quick-stat-label">个分类</span>
</div>
<div class="quick-stat-item">
<span class="quick-stat-value" id="quick-today-count">-</span>
<span class="quick-stat-label">今日新增</span>
</div>
</div>
</div>
</div>
<div class="panel">
<div class="panel-header">
<h2><i class="ri-search-line"></i> 互联网搜索</h2>
<a href="/search" class="btn btn-primary btn-sm">
<i class="ri-external-link-line"></i> 进入
</a>
</div>
<div class="panel-body">
<div class="quick-stats">
<div class="quick-stat-item">
<span class="quick-stat-value" id="quick-failed-count">-</span>
<span class="quick-stat-label">抓取失败</span>
</div>
<div class="quick-stat-item">
<span class="quick-stat-label">支持引擎</span>
<span class="quick-stat-value">Bing/百度/Google</span>
</div>
</div>
<div class="search-quick-info">
<small>支持一键保存所有结果到内容库</small>
</div>
</div>
</div>
</div>
<!-- 处理历史 -->
<div class="panel full-width">
<div class="panel-header">
<h2><i class="ri-history-line"></i> 处理历史</h2>
<button onclick="loadHistory()" class="btn btn-secondary btn-sm">
<i class="ri-refresh-line"></i>
</button>
</div>
<div class="panel-body">
<table class="data-table">
<thead>
<tr>
<th>产品名称</th>
<th>分类</th>
<th>子分类</th>
<th>状态</th>
<th>审核ID</th>
<th>提交时间</th>
<th>详情</th>
</tr>
</thead>
<tbody id="history-table">
<tr><td colspan="7" class="empty-text">暂无处理历史</td></tr>
</tbody>
</table>
</div>
</div>
<!-- 系统配置 -->
<div class="panel full-width">
<div class="panel-header">
<h2><i class="ri-settings-3-line"></i> 系统配置</h2>
<button onclick="saveConfig()" class="btn btn-primary btn-sm">
<i class="ri-save-line"></i> 保存配置
</button>
</div>
<div class="panel-body">
<div class="config-form">
<div class="config-item">
<label>自动处理</label>
<select id="auto-process-enabled">
<option value="true">启用</option>
<option value="false">禁用</option>
</select>
</div>
<div class="config-item">
<label>处理间隔(秒)</label>
<input type="number" id="process-interval" value="300" min="60" max="3600">
</div>
<div class="config-item">
<label>批量处理数量</label>
<input type="number" id="batch-size" value="5" min="1" max="20">
</div>
</div>
</div>
</div>
</div>
<!-- 添加产品模态框 -->
<div id="add-product-modal" class="modal">
<div class="modal-content">
<div class="modal-header">
<h3><i class="ri-add-circle-line"></i> 添加待处理产品</h3>
<button onclick="closeModal('add-product-modal')" class="close-btn">
<i class="ri-close-line"></i>
</button>
</div>
<div class="modal-body">
<form id="add-product-form">
<div class="form-group">
<label>产品名称 *</label>
<input type="text" id="product-name" required placeholder="例如:GPT-4o">
</div>
<div class="form-group">
<label>分类</label>
<input type="text" id="product-category" placeholder="例如:AI模型">
</div>
<div class="form-group">
<label>子分类</label>
<input type="text" id="product-subcategory" placeholder="例如:model">
</div>
<div class="form-group">
<label>优先级</label>
<input type="number" id="product-priority" value="5" min="0" max="100">
</div>
<div class="form-group">
<label>批量添加(JSON格式)</label>
<textarea id="batch-products" rows="5" placeholder='[{"product_name":"产品1"},{"product_name":"产品2"}]'></textarea>
<small class="hint">批量添加时,单产品字段将被忽略</small>
</div>
</form>
</div>
<div class="modal-footer">
<button onclick="closeModal('add-product-modal')" class="btn btn-secondary">取消</button>
<button onclick="addProduct()" class="btn btn-primary">添加</button>
</div>
</div>
</div>
<!-- 添加文章模态框 -->
<div id="add-article-modal" class="modal">
<div class="modal-content large">
<div class="modal-header">
<h3><i class="ri-file-add-line"></i> 添加文章到内容库</h3>
<button onclick="closeModal('add-article-modal')" class="close-btn">
<i class="ri-close-line"></i>
</button>
</div>
<div class="modal-body">
<form id="add-article-form">
<div class="form-row">
<div class="form-group">
<label>产品名称 *(多个用逗号分隔)</label>
<input type="text" id="article-products" required placeholder="GPT-4o, Claude 3">
</div>
<div class="form-group">
<label>分类</label>
<input type="text" id="article-category" placeholder="AI模型">
</div>
</div>
<div class="form-group">
<label>关键词(多个用逗号分隔)</label>
<input type="text" id="article-keywords" placeholder="大模型, 多模态, 推理">
</div>
<div class="form-group">
<label>摘要总结 *</label>
<textarea id="article-summary" rows="3" required placeholder="文章简要总结..."></textarea>
</div>
<div class="form-group">
<label>具体内容 *</label>
<textarea id="article-content" rows="10" required placeholder="文章详细内容..."></textarea>
</div>
<div class="form-row">
<div class="form-group">
<label>来源 *</label>
<input type="text" id="article-source" required placeholder="官方网站/新闻">
</div>
<div class="form-group">
<label>URL</label>
<input type="url" id="article-url" placeholder="https://...">
</div>
</div>
</form>
</div>
<div class="modal-footer">
<button onclick="closeModal('add-article-modal')" class="btn btn-secondary">取消</button>
<button onclick="addArticle()" class="btn btn-primary">添加</button>
</div>
</div>
</div>
<!-- 搜索结果详情模态框 -->
<div id="search-result-modal" class="modal">
<div class="modal-content large">
<div class="modal-header">
<h3><i class="ri-external-link-line"></i> 搜索结果详情</h3>
<button onclick="closeModal('search-result-modal')" class="close-btn">
<i class="ri-close-line"></i>
</button>
</div>
<div class="modal-body" id="search-result-body">
</div>
<div class="modal-footer">
<button onclick="closeModal('search-result-modal')" class="btn btn-secondary">关闭</button>
<button onclick="saveSearchResultToLibrary()" class="btn btn-success">
<i class="ri-save-line"></i> 保存到内容库
</button>
</div>
</div>
</div>
<!-- 文章详情模态框 -->
<div id="article-detail-modal" class="modal">
<div class="modal-content large">
<div class="modal-header">
<h3><i class="ri-file-text-line"></i> 文章详情</h3>
<button onclick="closeModal('article-detail-modal')" class="close-btn">
<i class="ri-close-line"></i>
</button>
</div>
<div class="modal-body" id="article-detail-body">
</div>
<div class="modal-footer">
<button onclick="closeModal('article-detail-modal')" class="btn btn-secondary">关闭</button>
<button onclick="deleteArticle()" class="btn btn-danger">删除</button>
</div>
</div>
</div>
<!-- 处理详情模态框 -->
<div id="process-detail-modal" class="modal">
<div class="modal-content">
<div class="modal-header">
<h3><i class="ri-information-line"></i> 处理详情</h3>
<button onclick="closeModal('process-detail-modal')" class="close-btn">
<i class="ri-close-line"></i>
</button>
</div>
<div class="modal-body" id="process-detail-body">
</div>
<div class="modal-footer">
<button onclick="closeModal('process-detail-modal')" class="btn btn-secondary">关闭</button>
</div>
</div>
</div>
<!-- 提示消息 -->
<div id="toast" class="toast"></div>
<script src="/static/js/app.js"></script>
</body>
</html>