parent
87c0095064
commit
274bf4a3c5
@ -0,0 +1,100 @@
|
||||
<!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="{{ url_for('static', filename='css/style.css') }}">
|
||||
</head>
|
||||
<body>
|
||||
<div class="container">
|
||||
<header>
|
||||
<h1>智慧点名系统</h1>
|
||||
<p>软工K班 - 结对编程项目</p>
|
||||
</header>
|
||||
|
||||
<nav class="main-nav">
|
||||
<a href="/" class="nav-item active">首页</a>
|
||||
<a href="/roll_call" class="nav-item">随机点名</a>
|
||||
<a href="/scores" class="nav-item">积分管理</a>
|
||||
</nav>
|
||||
|
||||
<main class="dashboard">
|
||||
<div class="stats-grid">
|
||||
<div class="stat-card">
|
||||
<h3>今日点名次数</h3>
|
||||
<div class="stat-number" id="todayCalls">0</div>
|
||||
</div>
|
||||
<div class="stat-card">
|
||||
<h3>班级总人数</h3>
|
||||
<div class="stat-number" id="totalStudents">0</div>
|
||||
</div>
|
||||
<div class="stat-card">
|
||||
<h3>平均积分</h3>
|
||||
<div class="stat-number" id="avgScore">0</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="quick-actions">
|
||||
<h2>快速操作</h2>
|
||||
<div class="action-buttons">
|
||||
<a href="/roll_call" class="btn btn-primary">开始点名</a>
|
||||
<a href="/scores" class="btn btn-secondary">查看积分</a>
|
||||
<button onclick="exportScores()" class="btn btn-success">导出积分</button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="recent-activity">
|
||||
<h2>最近点名记录</h2>
|
||||
<div id="recentRecords" class="records-list">
|
||||
<!-- 动态加载记录 -->
|
||||
</div>
|
||||
</div>
|
||||
</main>
|
||||
</div>
|
||||
|
||||
<script src="{{ url_for('static', filename='js/main.js') }}"></script>
|
||||
<script>
|
||||
// 初始化首页数据
|
||||
document.addEventListener('DOMContentLoaded', function() {
|
||||
loadDashboardData();
|
||||
});
|
||||
|
||||
function loadDashboardData() {
|
||||
// 模拟数据
|
||||
document.getElementById('todayCalls').textContent = '5';
|
||||
document.getElementById('totalStudents').textContent = '35';
|
||||
document.getElementById('avgScore').textContent = '12.5';
|
||||
|
||||
// 加载最近记录
|
||||
fetch('/api/roll_call/history')
|
||||
.then(response => response.json())
|
||||
.then(data => {
|
||||
if (data.success) {
|
||||
displayRecentRecords(data.data);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
function displayRecentRecords(records) {
|
||||
const container = document.getElementById('recentRecords');
|
||||
if (records.length === 0) {
|
||||
container.innerHTML = '<p>暂无记录</p>';
|
||||
return;
|
||||
}
|
||||
|
||||
container.innerHTML = records.map(record => `
|
||||
<div class="record-item">
|
||||
<span class="student-name">${record.student_name}</span>
|
||||
<span class="call-time">${record.call_time}</span>
|
||||
${record.score_change ? `<span class="score-change ${record.score_change > 0 ? 'positive' : 'negative'}">${record.score_change > 0 ? '+' : ''}${record.score_change}</span>` : ''}
|
||||
</div>
|
||||
`).join('');
|
||||
}
|
||||
|
||||
function exportScores() {
|
||||
window.open('/api/scores/export?class_name=软工K班');
|
||||
}
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
Loading…
Reference in new issue