364 lines
14 KiB
HTML
364 lines
14 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>DataTools Pro - 专业数据处理工具平台</title>
|
||
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.1.3/dist/css/bootstrap.min.css" rel="stylesheet">
|
||
<link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.0.0/css/all.min.css" rel="stylesheet">
|
||
<style>
|
||
body {
|
||
background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
|
||
min-height: 100vh;
|
||
font-family: 'Microsoft YaHei', Arial, sans-serif;
|
||
}
|
||
|
||
.hero-section {
|
||
padding: 80px 0;
|
||
text-align: center;
|
||
color: white;
|
||
}
|
||
|
||
.hero-title {
|
||
font-size: 3.5rem;
|
||
font-weight: bold;
|
||
margin-bottom: 1rem;
|
||
text-shadow: 2px 2px 4px rgba(0,0,0,0.3);
|
||
}
|
||
|
||
.hero-subtitle {
|
||
font-size: 1.3rem;
|
||
margin-bottom: 3rem;
|
||
opacity: 0.9;
|
||
}
|
||
|
||
.tools-section {
|
||
padding: 60px 0;
|
||
background: rgba(255, 255, 255, 0.95);
|
||
backdrop-filter: blur(10px);
|
||
}
|
||
|
||
.tool-card {
|
||
background: white;
|
||
border-radius: 15px;
|
||
padding: 2rem;
|
||
margin-bottom: 2rem;
|
||
box-shadow: 0 10px 30px rgba(0, 0, 0, 0.1);
|
||
transition: all 0.3s ease;
|
||
border: none;
|
||
height: 100%;
|
||
}
|
||
|
||
.tool-card:hover {
|
||
transform: translateY(-10px);
|
||
box-shadow: 0 20px 40px rgba(0, 0, 0, 0.15);
|
||
}
|
||
|
||
.tool-icon {
|
||
font-size: 3rem;
|
||
margin-bottom: 1.5rem;
|
||
color: #667eea;
|
||
}
|
||
|
||
.tool-title {
|
||
font-size: 1.5rem;
|
||
font-weight: bold;
|
||
margin-bottom: 1rem;
|
||
color: #333;
|
||
}
|
||
|
||
.tool-description {
|
||
color: #666;
|
||
margin-bottom: 2rem;
|
||
line-height: 1.6;
|
||
}
|
||
|
||
.tool-features {
|
||
text-align: left;
|
||
margin-bottom: 2rem;
|
||
}
|
||
|
||
.tool-features li {
|
||
margin-bottom: 0.5rem;
|
||
color: #555;
|
||
}
|
||
|
||
.tool-btn {
|
||
background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
|
||
border: none;
|
||
border-radius: 25px;
|
||
padding: 0.75rem 2rem;
|
||
color: white;
|
||
font-weight: bold;
|
||
text-decoration: none;
|
||
transition: all 0.3s ease;
|
||
display: inline-block;
|
||
}
|
||
|
||
.tool-btn:hover {
|
||
transform: scale(1.05);
|
||
color: white;
|
||
text-decoration: none;
|
||
}
|
||
|
||
.stats-section {
|
||
padding: 40px 0;
|
||
background: rgba(255, 255, 255, 0.1);
|
||
color: white;
|
||
}
|
||
|
||
.stat-item {
|
||
text-align: center;
|
||
margin-bottom: 2rem;
|
||
}
|
||
|
||
.stat-number {
|
||
font-size: 3rem;
|
||
font-weight: bold;
|
||
display: block;
|
||
}
|
||
|
||
.stat-label {
|
||
font-size: 1.1rem;
|
||
opacity: 0.9;
|
||
}
|
||
|
||
.footer {
|
||
background: rgba(0, 0, 0, 0.8);
|
||
color: white;
|
||
text-align: center;
|
||
padding: 2rem 0;
|
||
}
|
||
|
||
.feature-badge {
|
||
background: #28a745;
|
||
color: white;
|
||
padding: 0.25rem 0.75rem;
|
||
border-radius: 15px;
|
||
font-size: 0.8rem;
|
||
font-weight: bold;
|
||
display: inline-block;
|
||
margin-bottom: 1rem;
|
||
}
|
||
|
||
.coming-soon {
|
||
background: #ffc107;
|
||
color: #333;
|
||
}
|
||
</style>
|
||
</head>
|
||
<body>
|
||
<!-- 导航栏 -->
|
||
<nav class="navbar navbar-expand-lg navbar-dark" style="background: rgba(0,0,0,0.1);">
|
||
<div class="container">
|
||
<a class="navbar-brand" href="/">
|
||
<i class="fas fa-code-branch"></i> DataTools Pro
|
||
</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 ms-auto">
|
||
<li class="nav-item">
|
||
<a class="nav-link active" href="/">首页</a>
|
||
</li>
|
||
<li class="nav-item">
|
||
<a class="nav-link" href="/cassandra-compare">Cassandra比对</a>
|
||
</li>
|
||
<li class="nav-item">
|
||
<a class="nav-link" href="/redis-compare">Redis比对</a>
|
||
</li>
|
||
</ul>
|
||
</div>
|
||
</div>
|
||
</nav>
|
||
|
||
<!-- 主标题区域 -->
|
||
<div class="hero-section">
|
||
<div class="container">
|
||
<h1 class="hero-title">
|
||
<i class="fas fa-rocket"></i> DataTools Pro
|
||
</h1>
|
||
<p class="hero-subtitle">
|
||
企业级数据处理与比对工具平台<br>
|
||
高效、精准、可视化的数据分析解决方案
|
||
</p>
|
||
</div>
|
||
</div>
|
||
|
||
<!-- 统计信息 -->
|
||
<div class="stats-section">
|
||
<div class="container">
|
||
<div class="row">
|
||
<div class="col-md-4">
|
||
<div class="stat-item">
|
||
<span class="stat-number">2</span>
|
||
<span class="stat-label">核心工具</span>
|
||
</div>
|
||
</div>
|
||
<div class="col-md-4">
|
||
<div class="stat-item">
|
||
<span class="stat-number">∞</span>
|
||
<span class="stat-label">数据处理能力</span>
|
||
</div>
|
||
</div>
|
||
<div class="col-md-4">
|
||
<div class="stat-item">
|
||
<span class="stat-number">24/7</span>
|
||
<span class="stat-label">稳定运行</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
<!-- 工具展示区域 -->
|
||
<div class="tools-section">
|
||
<div class="container">
|
||
<div class="row justify-content-center">
|
||
<div class="col-lg-8">
|
||
<div class="text-center mb-5">
|
||
<h2 class="mb-3">核心工具模块</h2>
|
||
<p class="text-muted">选择适合的工具来解决您的数据处理挑战</p>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
<div class="row">
|
||
<!-- Cassandra数据库比对工具 -->
|
||
<div class="col-lg-6 col-md-12">
|
||
<div class="tool-card">
|
||
<div class="text-center">
|
||
<div class="feature-badge">生产就绪</div>
|
||
<div class="tool-icon">
|
||
<i class="fas fa-database"></i>
|
||
</div>
|
||
<h3 class="tool-title">Cassandra数据比对工具</h3>
|
||
<p class="tool-description">
|
||
企业级Cassandra数据库比对平台,支持生产环境与测试环境数据差异分析,
|
||
提供批量查询、分表查询、多主键查询和详细统计报告。
|
||
</p>
|
||
</div>
|
||
|
||
<div class="tool-features">
|
||
<h5><i class="fas fa-star text-warning"></i> 核心特性:</h5>
|
||
<ul>
|
||
<li><i class="fas fa-check text-success"></i> 多环境数据库配置管理</li>
|
||
<li><i class="fas fa-check text-success"></i> 分表查询(TWCS时间分表)</li>
|
||
<li><i class="fas fa-check text-success"></i> 多主键查询和复合主键支持</li>
|
||
<li><i class="fas fa-check text-success"></i> 可视化差异展示和智能统计</li>
|
||
<li><i class="fas fa-check text-success"></i> 查询历史管理和结果导出</li>
|
||
<li><i class="fas fa-check text-success"></i> 详细的查询日志和性能监控</li>
|
||
</ul>
|
||
</div>
|
||
|
||
<div class="text-center">
|
||
<a href="/cassandra-compare" class="tool-btn">
|
||
<i class="fas fa-rocket"></i> 立即使用
|
||
</a>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
<!-- Redis集群比对工具 -->
|
||
<div class="col-lg-6 col-md-12">
|
||
<div class="tool-card">
|
||
<div class="text-center">
|
||
<div class="feature-badge">生产就绪</div>
|
||
<div class="tool-icon">
|
||
<i class="fab fa-redis"></i>
|
||
</div>
|
||
<h3 class="tool-title">Redis集群比对工具</h3>
|
||
<p class="tool-description">
|
||
专业的Redis集群数据比对平台,支持多种数据类型比对分析,
|
||
提供随机采样、指定Key查询和全面的性能监控。
|
||
</p>
|
||
</div>
|
||
|
||
<div class="tool-features">
|
||
<h5><i class="fas fa-star text-warning"></i> 核心特性:</h5>
|
||
<ul>
|
||
<li><i class="fas fa-check text-success"></i> Redis集群连接和配置管理</li>
|
||
<li><i class="fas fa-check text-success"></i> 智能随机采样和指定Key查询</li>
|
||
<li><i class="fas fa-check text-success"></i> 全数据类型支持(String/Hash/List/Set/ZSet)</li>
|
||
<li><i class="fas fa-check text-success"></i> 实时性能统计和详细报告</li>
|
||
<li><i class="fas fa-check text-success"></i> 批量操作和历史记录管理</li>
|
||
<li><i class="fas fa-check text-success"></i> 可视化数据展示和导出功能</li>
|
||
</ul>
|
||
</div>
|
||
|
||
<div class="text-center">
|
||
<a href="/redis-compare" class="tool-btn">
|
||
<i class="fas fa-rocket"></i> 立即使用
|
||
</a>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
<!-- 页脚 -->
|
||
<div class="footer">
|
||
<div class="container">
|
||
<p>© 2024 DataTools Pro. 企业级数据处理与比对解决方案.</p>
|
||
<p class="mb-0">
|
||
<small class="text-muted">
|
||
Version 2.0 | Powered by Flask & Bootstrap |
|
||
<i class="fas fa-heart text-danger"></i> Made with passion for data professionals
|
||
</small>
|
||
</p>
|
||
</div>
|
||
</div>
|
||
|
||
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.1.3/dist/js/bootstrap.bundle.min.js"></script>
|
||
<!-- 新的模块化JS结构 -->
|
||
<script type="module" src="/static/js/app-main.js"></script>
|
||
|
||
<!-- 页面特定脚本 -->
|
||
<script type="module">
|
||
// 首页特定的功能
|
||
import app from '/static/js/app-main.js';
|
||
|
||
// 首页初始化完成后的操作
|
||
document.addEventListener('DOMContentLoaded', function() {
|
||
// 为工具卡片添加悬停效果
|
||
document.querySelectorAll('.tool-card').forEach(card => {
|
||
card.addEventListener('mouseenter', function() {
|
||
this.style.transform = 'translateY(-5px)';
|
||
});
|
||
|
||
card.addEventListener('mouseleave', function() {
|
||
this.style.transform = 'translateY(0)';
|
||
});
|
||
});
|
||
|
||
// 统计数字动画效果
|
||
function animateNumbers() {
|
||
const stats = document.querySelectorAll('.stat-number');
|
||
stats.forEach(stat => {
|
||
const target = stat.textContent;
|
||
if (target === '∞' || target === '24/7') return;
|
||
|
||
const num = parseInt(target);
|
||
if (isNaN(num)) return;
|
||
|
||
let current = 0;
|
||
const increment = num / 20;
|
||
const timer = setInterval(() => {
|
||
current += increment;
|
||
if (current >= num) {
|
||
current = num;
|
||
clearInterval(timer);
|
||
}
|
||
stat.textContent = Math.floor(current);
|
||
}, 50);
|
||
});
|
||
}
|
||
|
||
// 页面加载后延迟执行动画
|
||
setTimeout(animateNumbers, 500);
|
||
});
|
||
</script>
|
||
</body>
|
||
</html> |