dailiip/public/index.html

273 lines
12 KiB
HTML
Raw Permalink 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.

<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>代理IP管理系统 - 仪表板</title>
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.1.3/dist/css/bootstrap.min.css" rel="stylesheet">
<link href="https://cdn.jsdelivr.net/npm/bootstrap-icons@1.7.2/font/bootstrap-icons.css" rel="stylesheet">
<link href="css/dashboard.css" rel="stylesheet">
</head>
<body>
<!-- 导航栏 -->
<nav class="navbar navbar-expand-lg navbar-dark bg-primary">
<div class="container-fluid">
<a class="navbar-brand" href="index.html">
<i class="bi bi-shield-check"></i>
代理IP管理系统
</a>
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarNav">
<span class="navbar-toggler-icon"></span>
</button>
<div class="collapse navbar-collapse" id="navbarNav">
<ul class="navbar-nav me-auto">
<li class="nav-item">
<a class="nav-link active" href="index.html">
<i class="bi bi-speedometer2"></i> 仪表板
</a>
</li>
<li class="nav-item">
<a class="nav-link" href="proxies.html">
<i class="bi bi-list-ul"></i> 代理管理
</a>
</li>
<li class="nav-item">
<a class="nav-link" href="history.html">
<i class="bi bi-clock-history"></i> 执行历史
</a>
</li>
<li class="nav-item">
<a class="nav-link" href="monitoring.html">
<i class="bi bi-activity"></i> 系统监控
</a>
</li>
<li class="nav-item">
<a class="nav-link" href="logs.html">
<i class="bi bi-journal-text"></i> 实时日志
</a>
</li>
</ul>
<div class="navbar-nav">
<span class="navbar-text" id="currentTime"></span>
<button class="btn btn-outline-light btn-sm ms-2" onclick="refreshData()">
<i class="bi bi-arrow-clockwise"></i> 刷新
</button>
</div>
</div>
</div>
</nav>
<!-- 主要内容 -->
<div class="container-fluid mt-4">
<!-- 状态卡片 -->
<div class="row mb-4">
<div class="col-xl-3 col-md-6 mb-3">
<div class="card bg-primary text-white h-100">
<div class="card-body">
<div class="d-flex justify-content-between">
<div>
<h6 class="card-title">总代理数量</h6>
<h3 class="mb-0" id="totalProxies">-</h3>
</div>
<div class="align-self-center">
<i class="bi bi-hdd-network fs-2"></i>
</div>
</div>
</div>
</div>
</div>
<div class="col-xl-3 col-md-6 mb-3">
<div class="card bg-success text-white h-100">
<div class="card-body">
<div class="d-flex justify-content-between">
<div>
<h6 class="card-title">可用代理</h6>
<h3 class="mb-0" id="validProxies">-</h3>
</div>
<div class="align-self-center">
<i class="bi bi-check-circle fs-2"></i>
</div>
</div>
</div>
</div>
</div>
<div class="col-xl-3 col-md-6 mb-3">
<div class="card bg-danger text-white h-100">
<div class="card-body">
<div class="d-flex justify-content-between">
<div>
<h6 class="card-title">无效代理</h6>
<h3 class="mb-0" id="invalidProxies">-</h3>
</div>
<div class="align-self-center">
<i class="bi bi-x-circle fs-2"></i>
</div>
</div>
</div>
</div>
</div>
<div class="col-xl-3 col-md-6 mb-3">
<div class="card bg-info text-white h-100">
<div class="card-body">
<div class="d-flex justify-content-between">
<div>
<h6 class="card-title">可用率</h6>
<h3 class="mb-0" id="validRate">-</h3>
</div>
<div class="align-self-center">
<i class="bi bi-percent fs-2"></i>
</div>
</div>
</div>
</div>
</div>
</div>
<!-- 快速操作和图表 -->
<div class="row mb-4">
<!-- 快速操作 -->
<div class="col-lg-4 mb-3">
<div class="card h-100">
<div class="card-header">
<h5 class="card-title mb-0">
<i class="bi bi-lightning"></i> 快速操作
</h5>
</div>
<div class="card-body">
<div class="d-grid gap-2">
<button class="btn btn-primary" onclick="startScrape()">
<i class="bi bi-download"></i> 立即抓取代理
</button>
<button class="btn btn-success" onclick="startValidate()">
<i class="bi bi-check2-square"></i> 立即验证代理
</button>
<button class="btn btn-warning" onclick="cleanupInvalid()">
<i class="bi bi-trash"></i> 清理无效代理
</button>
<button class="btn btn-info" onclick="exportProxies()">
<i class="bi bi-download"></i> 导出代理数据
</button>
</div>
<hr>
<div class="text-center">
<small class="text-muted">下次执行时间</small>
<div class="mt-2">
<small class="d-block">抓取: <span id="nextScrape">-</span></small>
<small class="d-block">验证: <span id="nextValidation">-</span></small>
</div>
</div>
</div>
</div>
</div>
<!-- 代理趋势图 -->
<div class="col-lg-8 mb-3">
<div class="card h-100">
<div class="card-header">
<h5 class="card-title mb-0">
<i class="bi bi-graph-up"></i> 代理数量趋势7天
</h5>
</div>
<div class="card-body">
<canvas id="proxyTrendChart" height="100"></canvas>
</div>
</div>
</div>
</div>
<!-- 最近执行历史和系统状态 -->
<div class="row">
<!-- 最近抓取历史 -->
<div class="col-lg-6 mb-3">
<div class="card">
<div class="card-header">
<h5 class="card-title mb-0">
<i class="bi bi-clock-history"></i> 最近抓取历史
</h5>
</div>
<div class="card-body">
<div id="recentScrapeHistory" class="table-responsive">
<div class="text-center p-4">
<div class="spinner-border text-primary" role="status">
<span class="visually-hidden">加载中...</span>
</div>
</div>
</div>
</div>
</div>
</div>
<!-- 最近验证历史 -->
<div class="col-lg-6 mb-3">
<div class="card">
<div class="card-header">
<h5 class="card-title mb-0">
<i class="bi bi-check2-square"></i> 最近验证历史
</h5>
</div>
<div class="card-body">
<div id="recentValidationHistory" class="table-responsive">
<div class="text-center p-4">
<div class="spinner-border text-success" role="status">
<span class="visually-hidden">加载中...</span>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<!-- 系统信息 -->
<div class="row mt-4">
<div class="col-12">
<div class="card">
<div class="card-header">
<h5 class="card-title mb-0">
<i class="bi bi-info-circle"></i> 系统信息
</h5>
</div>
<div class="card-body">
<div class="row">
<div class="col-md-3">
<small class="text-muted">运行时间</small>
<div id="systemUptime">-</div>
</div>
<div class="col-md-3">
<small class="text-muted">内存使用</small>
<div id="memoryUsage">-</div>
</div>
<div class="col-md-3">
<small class="text-muted">今日抓取</small>
<div id="todayScrape">-</div>
</div>
<div class="col-md-3">
<small class="text-muted">今日验证</small>
<div id="todayValidation">-</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<!-- 提示消息容器 -->
<div class="position-fixed top-0 end-0 p-3" style="z-index: 1050">
<div id="alertContainer"></div>
</div>
<!-- JavaScript -->
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.1.3/dist/js/bootstrap.bundle.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/chart.js"></script>
<script src="js/dashboard.js"></script>
</body>
</html>