Files
SaleShow/templates/index.html
T

163 lines
7.1 KiB
HTML

<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">
<title>销售数据分析器</title>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css">
<link rel="stylesheet" href="{{ url_for('static', filename='css/style.css') }}">
<link href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700&display=swap" rel="stylesheet">
</head>
<body>
<div class="app-container">
<header class="main-header">
<div class="logo">
<i class="fas fa-chart-pie"></i>
<h1>SaleShow</h1>
</div>
<p class="subtitle">智能销售分析助手</p>
</header>
<main class="content-area">
<!-- 上传区域 -->
<section class="upload-section glass-card">
<div class="section-header">
<h2><i class="fas fa-magic"></i> 开始分析</h2>
</div>
<div class="upload-controls">
<button class="btn btn-primary btn-lg btn-block" onclick="openUploadModal()">
<i class="fas fa-plus-circle"></i> 上传新文件
</button>
<div class="file-selector-wrapper" id="fileSelector" style="display: none;">
<span class="label">当前分析:</span>
<div class="file-tags" id="fileList">
<!-- 文件标签 -->
</div>
</div>
<button class="btn btn-text btn-sm" onclick="cleanupFiles()" title="清理旧文件">
<i class="fas fa-trash-alt"></i> 清理
</button>
</div>
</section>
<!-- 状态提示 -->
<div id="noData" class="empty-state">
<div class="illustration">
<i class="fas fa-chart-area"></i>
</div>
<h3>暂无数据</h3>
<p>上传 Excel 文件即可生成精美报表</p>
</div>
<!-- 数据展示 -->
<div id="dataDisplay" class="data-dashboard" style="display: none;">
<!-- 概览卡片 -->
<section class="summary-cards">
<div class="card stat-card total-sales">
<div class="icon-circle"><i class="fas fa-yen-sign"></i></div>
<div class="stat-content">
<span class="stat-label">总销售额</span>
<span class="stat-value" id="totalAmount">0.00</span>
</div>
</div>
<div class="card stat-card total-count">
<div class="icon-circle"><i class="fas fa-shopping-bag"></i></div>
<div class="stat-content">
<span class="stat-label">销售件数</span>
<span class="stat-value" id="totalQuantity">0</span>
</div>
</div>
<div class="card stat-card total-days">
<div class="icon-circle"><i class="fas fa-calendar-alt"></i></div>
<div class="stat-content">
<span class="stat-label">统计天数</span>
<span class="stat-value" id="totalDays">0</span>
</div>
</div>
<div class="card stat-card total-products">
<div class="icon-circle"><i class="fas fa-box-open"></i></div>
<div class="stat-content">
<span class="stat-label">商品种类</span>
<span class="stat-value" id="totalProducts">0</span>
</div>
</div>
</section>
<!-- 工具栏 -->
<div class="toolbar glass-card">
<div class="search-wrapper">
<i class="fas fa-search"></i>
<input type="text" id="searchInput" placeholder="搜索商品...">
</div>
<div class="filter-group">
<button class="filter-chip active" onclick="filterByAmount('all')">全部</button>
<button class="filter-chip" onclick="filterByAmount('high')">高额</button>
<button class="filter-chip" onclick="filterByAmount('medium')">中等</button>
<button class="filter-chip" onclick="filterByAmount('low')">低额</button>
</div>
<button class="btn btn-outline btn-sm action-btn" onclick="exportData()">
<i class="fas fa-download"></i> 导出
</button>
</div>
<!-- 每日详情 -->
<section class="daily-list" id="dailyData">
<!-- 动态生成 -->
</section>
</div>
</main>
</div>
<!-- 上传弹窗 -->
<div id="uploadModal" class="modal-overlay">
<div class="modal-card bounce-in">
<div class="modal-header">
<h3>上传文件</h3>
<button class="btn-close" onclick="closeUploadModal()"><i class="fas fa-times"></i></button>
</div>
<div class="modal-body">
<div class="drop-zone" id="uploadArea">
<div class="icon-wrapper"><i class="fas fa-cloud-upload-alt"></i></div>
<p>点击或拖拽文件至此</p>
<span class="support-text">支持 .xlsx / .xls</span>
<input type="file" id="fileInput" hidden accept=".xlsx,.xls">
</div>
</div>
</div>
</div>
<!-- 加载层 -->
<div id="loadingOverlay" class="loading-overlay">
<div class="loading-box">
<div class="loader-dots">
<div></div>
<div></div>
<div></div>
</div>
<p id="loadingText">处理中...</p>
</div>
</div>
<script src="{{ url_for('static', filename='js/main.js') }}"></script>
<script>
// 覆盖部分 JS 逻辑以适应新的 DOM 结构
// 特别是 ID 变更后的 element 获取
// 为了方便,我们在 main.js 中尽量保持 ID 不变,或者在这里做少量适配
// 更新统计数据显示的逻辑需要适配新的 DOM 结构
const originalDisplayData = window.displayData;
// 我们需要重新定义 displayData 因为 DOM 结构变了
// 或者我们直接修改 main.js?
// 更好的做法是修改 main.js 适配新的 ID。
// 这里我尽量保持了 main.js 中使用的 ID (uploadArea, fileInput, loading... etc)
// 但是 summaryStats 的结构变了,需要更新 main.js。
</script>
</body>
</html>