11.9
This commit is contained in:
BIN
月度/11月/家校协同/体育教师端.xlsx
Normal file
BIN
月度/11月/家校协同/体育教师端.xlsx
Normal file
Binary file not shown.
498
月度/11月/家校协同/体育教师端首页.html
Normal file
498
月度/11月/家校协同/体育教师端首页.html
Normal file
@@ -0,0 +1,498 @@
|
||||
<!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>
|
||||
<script src="https://cdn.tailwindcss.com"></script>
|
||||
<link href="https://cdn.tailwindcss.com" rel="stylesheet">
|
||||
<link href="https://cdn.jsdelivr.net/npm/font-awesome@4.7.0/css/font-awesome.min.css" rel="stylesheet">
|
||||
<script src="https://cdn.jsdelivr.net/npm/chart.js@4.4.8/dist/chart.umd.min.js"></script>
|
||||
<script>
|
||||
tailwind.config = {
|
||||
theme: {
|
||||
extend: {
|
||||
colors: {
|
||||
primary: '#2563EB', // 专业蓝
|
||||
secondary: '#10B981', // 健康绿
|
||||
accent: '#F59E0B', // 活力橙
|
||||
warning: '#EF4444',
|
||||
light: '#F3F4F6',
|
||||
dark: '#1F2937'
|
||||
},
|
||||
fontFamily: {
|
||||
sans: ['PingFang SC', 'Microsoft YaHei', 'sans-serif'],
|
||||
},
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
<style type="text/tailwindcss">
|
||||
@layer utilities {
|
||||
.content-auto {
|
||||
content-visibility: auto;
|
||||
}
|
||||
.card {
|
||||
@apply bg-white rounded-xl shadow-sm p-4 transition-all duration-300 hover:shadow-md;
|
||||
}
|
||||
.btn {
|
||||
@apply px-4 py-2.5 rounded-lg font-medium transition-all duration-200;
|
||||
}
|
||||
.btn-primary {
|
||||
@apply bg-primary text-white hover:bg-primary/90;
|
||||
}
|
||||
.badge {
|
||||
@apply px-2 py-0.5 rounded-full text-xs font-medium;
|
||||
}
|
||||
.progress-bar {
|
||||
@apply h-2 rounded-full bg-gray-200 overflow-hidden;
|
||||
}
|
||||
.progress-value {
|
||||
@apply h-full rounded-full transition-all duration-700;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body class="bg-light text-dark font-sans min-h-screen flex flex-col">
|
||||
<!-- 顶部导航栏 -->
|
||||
<header class="bg-primary text-white py-4 px-5 sticky top-0 z-10 shadow-md">
|
||||
<div class="flex items-center justify-between">
|
||||
<div class="flex items-center gap-2">
|
||||
<i class="fa fa-line-chart text-xl"></i>
|
||||
<h1 class="text-lg font-bold">体质提升作业平台</h1>
|
||||
</div>
|
||||
<div class="flex items-center gap-4">
|
||||
<button class="relative">
|
||||
<i class="fa fa-bell text-xl"></i>
|
||||
<span class="absolute -top-1 -right-1 w-4 h-4 bg-accent rounded-full text-white text-xs flex items-center justify-center">4</span>
|
||||
</button>
|
||||
<img src="https://picsum.photos/id/1005/200/200" alt="体育老师头像" class="w-9 h-9 rounded-full border-2 border-white">
|
||||
</div>
|
||||
</div>
|
||||
</header>
|
||||
|
||||
<!-- 主内容区 -->
|
||||
<main class="flex-1 overflow-y-auto">
|
||||
<!-- 体质测试进度概览 -->
|
||||
<div class="px-5 py-4 bg-white">
|
||||
<div class="flex justify-between items-center mb-4">
|
||||
<div>
|
||||
<h2 class="text-base font-bold">体质测试提升计划</h2>
|
||||
<p class="text-xs text-gray-500 mt-1">当前学期:2023-2024学年第一学期</p>
|
||||
</div>
|
||||
<div class="text-right">
|
||||
<p class="text-xs text-gray-500">距离体质测试还有</p>
|
||||
<p class="text-base font-bold text-primary">32天</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="bg-light rounded-xl p-3">
|
||||
<div class="flex justify-between items-center mb-2">
|
||||
<span class="text-sm font-medium">整体提升进度</span>
|
||||
<span class="text-sm font-medium">62%</span>
|
||||
</div>
|
||||
<div class="progress-bar">
|
||||
<div class="progress-value bg-primary" style="width: 62%"></div>
|
||||
</div>
|
||||
<div class="grid grid-cols-3 gap-2 mt-3 text-center text-xs">
|
||||
<div>
|
||||
<p class="text-gray-500">优秀率</p>
|
||||
<p class="font-bold text-secondary">28%</p>
|
||||
</div>
|
||||
<div>
|
||||
<p class="text-gray-500">良好率</p>
|
||||
<p class="font-bold text-secondary">45%</p>
|
||||
</div>
|
||||
<div>
|
||||
<p class="text-gray-500">待提升</p>
|
||||
<p class="font-bold text-warning">27%</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- 快捷操作 -->
|
||||
<div class="px-5 py-3">
|
||||
<div class="grid grid-cols-3 gap-3">
|
||||
<button class="card flex flex-col items-center justify-center p-3">
|
||||
<div class="w-12 h-12 bg-primary/10 rounded-full flex items-center justify-center mb-2">
|
||||
<i class="fa fa-plus text-primary"></i>
|
||||
</div>
|
||||
<span class="text-sm font-medium">布置作业</span>
|
||||
</button>
|
||||
|
||||
<button class="card flex flex-col items-center justify-center p-3">
|
||||
<div class="w-12 h-12 bg-secondary/10 rounded-full flex items-center justify-center mb-2">
|
||||
<i class="fa fa-bar-chart text-secondary"></i>
|
||||
</div>
|
||||
<span class="text-sm font-medium">查看数据</span>
|
||||
</button>
|
||||
|
||||
<button class="card flex flex-col items-center justify-center p-3">
|
||||
<div class="w-12 h-12 bg-accent/10 rounded-full flex items-center justify-center mb-2">
|
||||
<i class="fa fa-file-text-o text-accent"></i>
|
||||
</div>
|
||||
<span class="text-sm font-medium">测试报告</span>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- 家庭打卡任务列表 -->
|
||||
<div class="px-5 py-2">
|
||||
<div class="flex justify-between items-center mb-3">
|
||||
<h3 class="font-bold">家庭打卡任务</h3>
|
||||
<button class="text-primary text-sm">查看全部</button>
|
||||
</div>
|
||||
|
||||
<div class="space-y-3 mb-6">
|
||||
<!-- 进行中的任务 -->
|
||||
<div class="card border-l-4 border-primary">
|
||||
<div class="flex justify-between items-start">
|
||||
<div>
|
||||
<h4 class="font-medium">每日跳绳练习</h4>
|
||||
<p class="text-xs text-gray-500 mt-1">针对:1-6年级 | 提升:协调性、耐力</p>
|
||||
</div>
|
||||
<span class="badge bg-primary/10 text-primary">进行中</span>
|
||||
</div>
|
||||
|
||||
<div class="mt-3">
|
||||
<div class="flex justify-between items-center mb-1">
|
||||
<span class="text-xs text-gray-500">打卡完成率</span>
|
||||
<span class="text-xs font-medium">82%</span>
|
||||
</div>
|
||||
<div class="progress-bar">
|
||||
<div class="progress-value bg-primary" style="width: 82%"></div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="mt-3 flex flex-wrap gap-2">
|
||||
<div class="flex items-center gap-1 bg-light px-2 py-1 rounded text-xs">
|
||||
<i class="fa fa-calendar-o text-gray-500"></i>
|
||||
<span>9.20-10.5</span>
|
||||
</div>
|
||||
<div class="flex items-center gap-1 bg-light px-2 py-1 rounded text-xs">
|
||||
<i class="fa fa-clock-o text-gray-500"></i>
|
||||
<span>每天10分钟</span>
|
||||
</div>
|
||||
<div class="flex items-center gap-1 bg-light px-2 py-1 rounded text-xs">
|
||||
<i class="fa fa-users text-gray-500"></i>
|
||||
<span>187人参与</span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="mt-3 flex justify-between items-center">
|
||||
<button class="text-xs text-gray-500 flex items-center">
|
||||
<i class="fa fa-comment-o mr-1"></i> 查看反馈(12)
|
||||
</button>
|
||||
<button class="text-xs text-primary flex items-center">
|
||||
<i class="fa fa-bar-chart mr-1"></i> 查看详情
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- 新发布的任务 -->
|
||||
<div class="card border-l-4 border-accent">
|
||||
<div class="flex justify-between items-start">
|
||||
<div>
|
||||
<h4 class="font-medium">家庭仰卧起坐训练</h4>
|
||||
<p class="text-xs text-gray-500 mt-1">针对:4-6年级 | 提升:核心力量</p>
|
||||
</div>
|
||||
<span class="badge bg-accent/10 text-accent">新发布</span>
|
||||
</div>
|
||||
|
||||
<div class="mt-3">
|
||||
<div class="flex justify-between items-center mb-1">
|
||||
<span class="text-xs text-gray-500">打卡完成率</span>
|
||||
<span class="text-xs font-medium">36%</span>
|
||||
</div>
|
||||
<div class="progress-bar">
|
||||
<div class="progress-value bg-accent" style="width: 36%"></div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="mt-3 flex flex-wrap gap-2">
|
||||
<div class="flex items-center gap-1 bg-light px-2 py-1 rounded text-xs">
|
||||
<i class="fa fa-calendar-o text-gray-500"></i>
|
||||
<span>9.25-10.10</span>
|
||||
</div>
|
||||
<div class="flex items-center gap-1 bg-light px-2 py-1 rounded text-xs">
|
||||
<i class="fa fa-clock-o text-gray-500"></i>
|
||||
<span>每天8分钟</span>
|
||||
</div>
|
||||
<div class="flex items-center gap-1 bg-light px-2 py-1 rounded text-xs">
|
||||
<i class="fa fa-users text-gray-500"></i>
|
||||
<span>124人参与</span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="mt-3 flex justify-between items-center">
|
||||
<button class="text-xs text-gray-500 flex items-center">
|
||||
<i class="fa fa-comment-o mr-1"></i> 查看反馈(5)
|
||||
</button>
|
||||
<button class="text-xs text-primary flex items-center">
|
||||
<i class="fa fa-bar-chart mr-1"></i> 查看详情
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- 即将开始的任务 -->
|
||||
<div class="card border-l-4 border-secondary">
|
||||
<div class="flex justify-between items-start">
|
||||
<div>
|
||||
<h4 class="font-medium">柔韧性提升训练</h4>
|
||||
<p class="text-xs text-gray-500 mt-1">针对:1-6年级 | 提升:坐位体前屈成绩</p>
|
||||
</div>
|
||||
<span class="badge bg-secondary/10 text-secondary">即将开始</span>
|
||||
</div>
|
||||
|
||||
<div class="mt-3 flex flex-wrap gap-2">
|
||||
<div class="flex items-center gap-1 bg-light px-2 py-1 rounded text-xs">
|
||||
<i class="fa fa-calendar-o text-gray-500"></i>
|
||||
<span>10.6-10.20</span>
|
||||
</div>
|
||||
<div class="flex items-center gap-1 bg-light px-2 py-1 rounded text-xs">
|
||||
<i class="fa fa-clock-o text-gray-500"></i>
|
||||
<span>每天5分钟</span>
|
||||
</div>
|
||||
<div class="flex items-center gap-1 bg-light px-2 py-1 rounded text-xs">
|
||||
<i class="fa fa-users text-gray-500"></i>
|
||||
<span>187人参与</span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="mt-3 flex justify-end">
|
||||
<button class="text-xs text-primary flex items-center">
|
||||
<i class="fa fa-pencil mr-1"></i> 编辑任务
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- 班级打卡情况 -->
|
||||
<div class="px-5 py-2 mb-20">
|
||||
<div class="flex justify-between items-center mb-3">
|
||||
<h3 class="font-bold">班级打卡情况</h3>
|
||||
<button class="text-primary text-sm">全部班级</button>
|
||||
</div>
|
||||
|
||||
<div class="space-y-3">
|
||||
<div class="card">
|
||||
<div class="flex justify-between items-center">
|
||||
<div class="flex items-center gap-3">
|
||||
<div class="w-9 h-9 bg-primary/10 rounded-lg flex items-center justify-center text-primary font-bold">3</div>
|
||||
<div>
|
||||
<h4 class="font-medium">三年级(1)班</h4>
|
||||
<p class="text-xs text-gray-500">32名学生</p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="text-right">
|
||||
<p class="text-sm font-medium">91%</p>
|
||||
<p class="text-xs text-secondary">优秀</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="card">
|
||||
<div class="flex justify-between items-center">
|
||||
<div class="flex items-center gap-3">
|
||||
<div class="w-9 h-9 bg-primary/10 rounded-lg flex items-center justify-center text-primary font-bold">4</div>
|
||||
<div>
|
||||
<h4 class="font-medium">四年级(2)班</h4>
|
||||
<p class="text-xs text-gray-500">30名学生</p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="text-right">
|
||||
<p class="text-sm font-medium">85%</p>
|
||||
<p class="text-xs text-secondary">良好</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="card">
|
||||
<div class="flex justify-between items-center">
|
||||
<div class="flex items-center gap-3">
|
||||
<div class="w-9 h-9 bg-primary/10 rounded-lg flex items-center justify-center text-primary font-bold">5</div>
|
||||
<div>
|
||||
<h4 class="font-medium">五年级(3)班</h4>
|
||||
<p class="text-xs text-gray-500">29名学生</p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="text-right">
|
||||
<p class="text-sm font-medium">76%</p>
|
||||
<p class="text-xs text-accent">一般</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="card">
|
||||
<div class="flex justify-between items-center">
|
||||
<div class="flex items-center gap-3">
|
||||
<div class="w-9 h-9 bg-primary/10 rounded-lg flex items-center justify-center text-primary font-bold">6</div>
|
||||
<div>
|
||||
<h4 class="font-medium">六年级(1)班</h4>
|
||||
<p class="text-xs text-gray-500">31名学生</p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="text-right">
|
||||
<p class="text-sm font-medium">68%</p>
|
||||
<p class="text-xs text-warning">需关注</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</main>
|
||||
|
||||
<!-- 底部导航 -->
|
||||
<footer class="bg-white border-t border-gray-200 py-2 px-4 fixed bottom-0 left-0 right-0 z-10">
|
||||
<div class="flex justify-between">
|
||||
<a href="#" class="flex flex-col items-center justify-center w-1/5 text-primary">
|
||||
<i class="fa fa-home text-lg"></i>
|
||||
<span class="text-xs mt-1">首页</span>
|
||||
</a>
|
||||
<a href="#" class="flex flex-col items-center justify-center w-1/5 text-gray-500">
|
||||
<i class="fa fa-tasks text-lg"></i>
|
||||
<span class="text-xs mt-1">任务管理</span>
|
||||
</a>
|
||||
<a href="#" class="flex flex-col items-center justify-center w-1/5 text-gray-500">
|
||||
<i class="fa fa-bar-chart text-lg"></i>
|
||||
<span class="text-xs mt-1">数据统计</span>
|
||||
</a>
|
||||
<a href="#" class="flex flex-col items-center justify-center w-1/5 text-gray-500">
|
||||
<i class="fa fa-users text-lg"></i>
|
||||
<span class="text-xs mt-1">班级管理</span>
|
||||
</a>
|
||||
<a href="#" class="flex flex-col items-center justify-center w-1/5 text-gray-500">
|
||||
<i class="fa fa-cog text-lg"></i>
|
||||
<span class="text-xs mt-1">设置</span>
|
||||
</a>
|
||||
</div>
|
||||
</footer>
|
||||
|
||||
<!-- 布置作业弹窗 (默认隐藏) -->
|
||||
<div id="assign-task-modal" class="fixed inset-0 bg-black/50 z-50 flex items-center justify-center p-5 hidden">
|
||||
<div class="bg-white rounded-2xl w-full max-w-md max-h-[90vh] overflow-y-auto">
|
||||
<div class="p-5 border-b border-gray-100 flex justify-between items-center">
|
||||
<h3 class="text-lg font-bold">布置家庭打卡任务</h3>
|
||||
<button id="close-modal" class="text-gray-400 hover:text-gray-600">
|
||||
<i class="fa fa-times text-xl"></i>
|
||||
</button>
|
||||
</div>
|
||||
|
||||
<div class="p-5 space-y-4">
|
||||
<div>
|
||||
<label class="block text-sm font-medium text-gray-700 mb-1">选择训练项目</label>
|
||||
<select class="w-full px-3 py-2 border border-gray-300 rounded-lg focus:outline-none focus:ring-2 focus:ring-primary/50 focus:border-primary">
|
||||
<option>一分钟跳绳 - 提升协调性与耐力</option>
|
||||
<option>仰卧起坐 - 提升核心力量</option>
|
||||
<option>坐位体前屈 - 提升柔韧性</option>
|
||||
<option>家庭趣味跑步 - 提升心肺功能</option>
|
||||
<option>平衡练习 - 提升身体协调性</option>
|
||||
<option>开合跳 - 提升爆发力</option>
|
||||
</select>
|
||||
</div>
|
||||
|
||||
<div>
|
||||
<label class="block text-sm font-medium text-gray-700 mb-1">适用班级</label>
|
||||
<div class="grid grid-cols-3 gap-2">
|
||||
<button class="border border-primary bg-primary/5 text-primary py-2 rounded-lg text-sm">1年级</button>
|
||||
<button class="border border-gray-200 hover:border-primary py-2 rounded-lg text-sm">2年级</button>
|
||||
<button class="border border-gray-200 hover:border-primary py-2 rounded-lg text-sm">3年级</button>
|
||||
<button class="border border-gray-200 hover:border-primary py-2 rounded-lg text-sm">4年级</button>
|
||||
<button class="border border-gray-200 hover:border-primary py-2 rounded-lg text-sm">5年级</button>
|
||||
<button class="border border-gray-200 hover:border-primary py-2 rounded-lg text-sm">6年级</button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="grid grid-cols-2 gap-4">
|
||||
<div>
|
||||
<label class="block text-sm font-medium text-gray-700 mb-1">开始日期</label>
|
||||
<input type="date" class="w-full px-3 py-2 border border-gray-300 rounded-lg focus:outline-none focus:ring-2 focus:ring-primary/50 focus:border-primary">
|
||||
</div>
|
||||
<div>
|
||||
<label class="block text-sm font-medium text-gray-700 mb-1">结束日期</label>
|
||||
<input type="date" class="w-full px-3 py-2 border border-gray-300 rounded-lg focus:outline-none focus:ring-2 focus:ring-primary/50 focus:border-primary">
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div>
|
||||
<label class="block text-sm font-medium text-gray-700 mb-1">每日训练时长</label>
|
||||
<select class="w-full px-3 py-2 border border-gray-300 rounded-lg focus:outline-none focus:ring-2 focus:ring-primary/50 focus:border-primary">
|
||||
<option>5分钟</option>
|
||||
<option>10分钟</option>
|
||||
<option>15分钟</option>
|
||||
<option>20分钟</option>
|
||||
</select>
|
||||
</div>
|
||||
|
||||
<div>
|
||||
<label class="block text-sm font-medium text-gray-700 mb-1">训练要求与指导</label>
|
||||
<textarea rows="3" placeholder="请输入具体的训练指导和要求..." class="w-full px-3 py-2 border border-gray-300 rounded-lg focus:outline-none focus:ring-2 focus:ring-primary/50 focus:border-primary"></textarea>
|
||||
</div>
|
||||
|
||||
<div>
|
||||
<label class="block text-sm font-medium text-gray-700 mb-1">体质提升目标</label>
|
||||
<select class="w-full px-3 py-2 border border-gray-300 rounded-lg focus:outline-none focus:ring-2 focus:ring-primary/50 focus:border-primary">
|
||||
<option>提升10%以上</option>
|
||||
<option>提升5-10%</option>
|
||||
<option>巩固现有水平</option>
|
||||
<option>针对薄弱项提升</option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="p-5 border-t border-gray-100 flex gap-3">
|
||||
<button id="cancel-task" class="flex-1 py-2.5 border border-gray-300 rounded-lg font-medium text-gray-700">取消</button>
|
||||
<button class="flex-1 btn btn-primary">发布打卡任务</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<script>
|
||||
// 页面交互逻辑
|
||||
document.addEventListener('DOMContentLoaded', function() {
|
||||
// 获取元素
|
||||
const assignTaskBtn = document.querySelector('.grid .card:first-child');
|
||||
const taskModal = document.getElementById('assign-task-modal');
|
||||
const closeModal = document.getElementById('close-modal');
|
||||
const cancelTask = document.getElementById('cancel-task');
|
||||
|
||||
// 打开弹窗
|
||||
assignTaskBtn.addEventListener('click', function() {
|
||||
taskModal.classList.remove('hidden');
|
||||
document.body.style.overflow = 'hidden'; // 阻止背景滚动
|
||||
});
|
||||
|
||||
// 关闭弹窗
|
||||
function hideModal() {
|
||||
taskModal.classList.add('hidden');
|
||||
document.body.style.overflow = 'auto'; // 恢复背景滚动
|
||||
}
|
||||
|
||||
closeModal.addEventListener('click', hideModal);
|
||||
cancelTask.addEventListener('click', hideModal);
|
||||
|
||||
// 点击弹窗外部关闭
|
||||
taskModal.addEventListener('click', function(e) {
|
||||
if (e.target === taskModal) {
|
||||
hideModal();
|
||||
}
|
||||
});
|
||||
|
||||
// 底部导航切换效果
|
||||
const navItems = document.querySelectorAll('footer a');
|
||||
navItems.forEach(item => {
|
||||
item.addEventListener('click', function(e) {
|
||||
e.preventDefault();
|
||||
navItems.forEach(nav => nav.classList.remove('text-primary'));
|
||||
navItems.forEach(nav => nav.classList.add('text-gray-500'));
|
||||
this.classList.remove('text-gray-500');
|
||||
this.classList.add('text-primary');
|
||||
});
|
||||
});
|
||||
});
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
442
月度/11月/家校协同/数据统计页面.html
Normal file
442
月度/11月/家校协同/数据统计页面.html
Normal file
@@ -0,0 +1,442 @@
|
||||
<!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>
|
||||
<script src="https://cdn.tailwindcss.com"></script>
|
||||
<link href="https://cdn.jsdelivr.net/npm/font-awesome@4.7.0/css/font-awesome.min.css" rel="stylesheet">
|
||||
<script src="https://cdn.jsdelivr.net/npm/chart.js@4.4.8/dist/chart.umd.min.js"></script>
|
||||
<script>
|
||||
tailwind.config = {
|
||||
theme: {
|
||||
extend: {
|
||||
colors: {
|
||||
primary: '#2563EB', // 专业蓝
|
||||
secondary: '#10B981', // 健康绿
|
||||
accent: '#F59E0B', // 活力橙
|
||||
warning: '#EF4444',
|
||||
light: '#F3F4F6',
|
||||
dark: '#1F2937'
|
||||
},
|
||||
fontFamily: {
|
||||
sans: ['PingFang SC', 'Microsoft YaHei', 'sans-serif'],
|
||||
},
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
<style type="text/tailwindcss">
|
||||
@layer utilities {
|
||||
.content-auto {
|
||||
content-visibility: auto;
|
||||
}
|
||||
.card {
|
||||
@apply bg-white rounded-xl shadow-sm p-4 transition-all duration-300 hover:shadow-md;
|
||||
}
|
||||
.stat-card {
|
||||
@apply bg-white rounded-xl shadow-sm p-4 transition-all duration-300 hover:shadow-md border-l-4;
|
||||
}
|
||||
.progress-bar {
|
||||
@apply h-2 rounded-full bg-gray-200 overflow-hidden;
|
||||
}
|
||||
.progress-value {
|
||||
@apply h-full rounded-full transition-all duration-700;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body class="bg-light text-dark font-sans min-h-screen flex flex-col">
|
||||
<!-- 顶部导航栏 -->
|
||||
<header class="bg-primary text-white py-4 px-5 sticky top-0 z-10 shadow-md">
|
||||
<div class="flex items-center justify-between">
|
||||
<button id="back-btn" class="text-white">
|
||||
<i class="fa fa-arrow-left text-xl"></i>
|
||||
</button>
|
||||
<h1 class="text-lg font-bold">体质数据统计分析</h1>
|
||||
<div class="w-6"></div> <!-- 占位元素,保持标题居中 -->
|
||||
</div>
|
||||
</header>
|
||||
|
||||
<!-- 筛选条件 -->
|
||||
<div class="bg-white px-5 py-3 border-b border-gray-100">
|
||||
<div class="flex justify-between items-center">
|
||||
<div class="flex items-center gap-2">
|
||||
<span class="text-sm text-gray-500">统计周期:</span>
|
||||
<select class="text-sm border-none bg-transparent focus:outline-none text-primary font-medium">
|
||||
<option>近30天</option>
|
||||
<option>本学期</option>
|
||||
<option>上月</option>
|
||||
<option>自定义</option>
|
||||
</select>
|
||||
</div>
|
||||
<div class="flex items-center gap-2">
|
||||
<span class="text-sm text-gray-500">班级:</span>
|
||||
<select class="text-sm border-none bg-transparent focus:outline-none text-primary font-medium">
|
||||
<option>全部班级</option>
|
||||
<option>三年级(1)班</option>
|
||||
<option>四年级(2)班</option>
|
||||
<option>五年级(3)班</option>
|
||||
<option>六年级(1)班</option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- 主内容区 -->
|
||||
<main class="flex-1 overflow-y-auto">
|
||||
<!-- 核心指标卡片 -->
|
||||
<div class="px-5 py-4">
|
||||
<h2 class="text-sm font-medium text-gray-500 mb-3">核心指标</h2>
|
||||
<div class="grid grid-cols-2 gap-3">
|
||||
<div class="stat-card border-primary bg-primary/5">
|
||||
<p class="text-xs text-gray-500">平均打卡完成率</p>
|
||||
<h3 class="text-2xl font-bold mt-1 text-primary">78.5%</h3>
|
||||
<div class="flex items-center mt-2 text-xs">
|
||||
<span class="text-secondary flex items-center">
|
||||
<i class="fa fa-arrow-up mr-1"></i> 4.2%
|
||||
</span>
|
||||
<span class="text-gray-500 ml-2">较上周</span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="stat-card border-secondary bg-secondary/5">
|
||||
<p class="text-xs text-gray-500">体质提升幅度</p>
|
||||
<h3 class="text-2xl font-bold mt-1 text-secondary">12.3%</h3>
|
||||
<div class="flex items-center mt-2 text-xs">
|
||||
<span class="text-secondary flex items-center">
|
||||
<i class="fa fa-arrow-up mr-1"></i> 2.8%
|
||||
</span>
|
||||
<span class="text-gray-500 ml-2">较上月</span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="stat-card border-accent bg-accent/5">
|
||||
<p class="text-xs text-gray-500">参与率</p>
|
||||
<h3 class="text-2xl font-bold mt-1 text-accent">92.7%</h3>
|
||||
<div class="flex items-center mt-2 text-xs">
|
||||
<span class="text-secondary flex items-center">
|
||||
<i class="fa fa-arrow-up mr-1"></i> 1.5%
|
||||
</span>
|
||||
<span class="text-gray-500 ml-2">较上周</span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="stat-card border-warning bg-warning/5">
|
||||
<p class="text-xs text-gray-500">待提升学生</p>
|
||||
<h3 class="text-2xl font-bold mt-1 text-warning">24人</h3>
|
||||
<div class="flex items-center mt-2 text-xs">
|
||||
<span class="text-secondary flex items-center">
|
||||
<i class="fa fa-arrow-down mr-1"></i> 6人
|
||||
</span>
|
||||
<span class="text-gray-500 ml-2">较上月</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- 打卡趋势图表 -->
|
||||
<div class="px-5 py-2">
|
||||
<div class="flex justify-between items-center mb-3">
|
||||
<h3 class="font-bold">家庭打卡趋势</h3>
|
||||
<select class="text-xs border-none bg-transparent focus:outline-none text-primary">
|
||||
<option>按周统计</option>
|
||||
<option>按月统计</option>
|
||||
<option>按日统计</option>
|
||||
</select>
|
||||
</div>
|
||||
|
||||
<div class="card h-64">
|
||||
<canvas id="checkInChart"></canvas>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- 各项目完成情况 -->
|
||||
<div class="px-5 py-2">
|
||||
<h3 class="font-bold mb-3">各项目完成情况</h3>
|
||||
|
||||
<div class="card mb-3">
|
||||
<div class="flex justify-between items-center mb-2">
|
||||
<span class="text-sm">一分钟跳绳</span>
|
||||
<span class="text-sm font-medium">82%</span>
|
||||
</div>
|
||||
<div class="progress-bar">
|
||||
<div class="progress-value bg-primary" style="width: 82%"></div>
|
||||
</div>
|
||||
<div class="flex justify-between text-xs text-gray-500 mt-1">
|
||||
<span>平均时长: 9.2分钟</span>
|
||||
<span>提升: +15.3%</span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="card mb-3">
|
||||
<div class="flex justify-between items-center mb-2">
|
||||
<span class="text-sm">仰卧起坐</span>
|
||||
<span class="text-sm font-medium">68%</span>
|
||||
</div>
|
||||
<div class="progress-bar">
|
||||
<div class="progress-value bg-primary" style="width: 68%"></div>
|
||||
</div>
|
||||
<div class="flex justify-between text-xs text-gray-500 mt-1">
|
||||
<span>平均时长: 7.5分钟</span>
|
||||
<span>提升: +9.7%</span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="card mb-3">
|
||||
<div class="flex justify-between items-center mb-2">
|
||||
<span class="text-sm">坐位体前屈</span>
|
||||
<span class="text-sm font-medium">75%</span>
|
||||
</div>
|
||||
<div class="progress-bar">
|
||||
<div class="progress-value bg-primary" style="width: 75%"></div>
|
||||
</div>
|
||||
<div class="flex justify-between text-xs text-gray-500 mt-1">
|
||||
<span>平均时长: 5.8分钟</span>
|
||||
<span>提升: +11.2%</span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="card">
|
||||
<div class="flex justify-between items-center mb-2">
|
||||
<span class="text-sm">家庭趣味跑步</span>
|
||||
<span class="text-sm font-medium">62%</span>
|
||||
</div>
|
||||
<div class="progress-bar">
|
||||
<div class="progress-value bg-primary" style="width: 62%"></div>
|
||||
</div>
|
||||
<div class="flex justify-between text-xs text-gray-500 mt-1">
|
||||
<span>平均时长: 12.3分钟</span>
|
||||
<span>提升: +8.5%</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- 班级对比 -->
|
||||
<div class="px-5 py-2 mb-4">
|
||||
<div class="flex justify-between items-center mb-3">
|
||||
<h3 class="font-bold">班级表现对比</h3>
|
||||
<button class="text-primary text-sm">详情</button>
|
||||
</div>
|
||||
|
||||
<div class="card h-64">
|
||||
<canvas id="classComparisonChart"></canvas>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- 待提升学生 -->
|
||||
<div class="px-5 py-2 mb-20">
|
||||
<div class="flex justify-between items-center mb-3">
|
||||
<h3 class="font-bold">需重点关注学生</h3>
|
||||
<button class="text-primary text-sm">查看全部</button>
|
||||
</div>
|
||||
|
||||
<div class="space-y-3">
|
||||
<div class="card">
|
||||
<div class="flex justify-between items-center">
|
||||
<div class="flex items-center gap-3">
|
||||
<img src="https://picsum.photos/id/1012/100/100" alt="学生头像" class="w-10 h-10 rounded-full object-cover">
|
||||
<div>
|
||||
<h4 class="font-medium">张明 - 四年级(2)班</h4>
|
||||
<p class="text-xs text-gray-500">打卡完成率: 35% | 体质提升: 2.1%</p>
|
||||
</div>
|
||||
</div>
|
||||
<button class="text-xs bg-warning/10 text-warning px-3 py-1 rounded-full">
|
||||
重点关注
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="card">
|
||||
<div class="flex justify-between items-center">
|
||||
<div class="flex items-center gap-3">
|
||||
<img src="https://picsum.photos/id/1027/100/100" alt="学生头像" class="w-10 h-10 rounded-full object-cover">
|
||||
<div>
|
||||
<h4 class="font-medium">李娜 - 五年级(3)班</h4>
|
||||
<p class="text-xs text-gray-500">打卡完成率: 42% | 体质提升: 3.5%</p>
|
||||
</div>
|
||||
</div>
|
||||
<button class="text-xs bg-warning/10 text-warning px-3 py-1 rounded-full">
|
||||
重点关注
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="card">
|
||||
<div class="flex justify-between items-center">
|
||||
<div class="flex items-center gap-3">
|
||||
<img src="https://picsum.photos/id/1025/100/100" alt="学生头像" class="w-10 h-10 rounded-full object-cover">
|
||||
<div>
|
||||
<h4 class="font-medium">王浩 - 六年级(1)班</h4>
|
||||
<p class="text-xs text-gray-500">打卡完成率: 58% | 体质提升: 1.8%</p>
|
||||
</div>
|
||||
</div>
|
||||
<button class="text-xs bg-accent/10 text-accent px-3 py-1 rounded-full">
|
||||
一般关注
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</main>
|
||||
|
||||
<!-- 底部导航 -->
|
||||
<footer class="bg-white border-t border-gray-200 py-2 px-4 fixed bottom-0 left-0 right-0 z-10">
|
||||
<div class="flex justify-between">
|
||||
<a href="#" class="flex flex-col items-center justify-center w-1/5 text-gray-500">
|
||||
<i class="fa fa-home text-lg"></i>
|
||||
<span class="text-xs mt-1">首页</span>
|
||||
</a>
|
||||
<a href="#" class="flex flex-col items-center justify-center w-1/5 text-gray-500">
|
||||
<i class="fa fa-tasks text-lg"></i>
|
||||
<span class="text-xs mt-1">任务管理</span>
|
||||
</a>
|
||||
<a href="#" class="flex flex-col items-center justify-center w-1/5 text-primary">
|
||||
<i class="fa fa-bar-chart text-lg"></i>
|
||||
<span class="text-xs mt-1">数据统计</span>
|
||||
</a>
|
||||
<a href="#" class="flex flex-col items-center justify-center w-1/5 text-gray-500">
|
||||
<i class="fa fa-users text-lg"></i>
|
||||
<span class="text-xs mt-1">班级管理</span>
|
||||
</a>
|
||||
<a href="#" class="flex flex-col items-center justify-center w-1/5 text-gray-500">
|
||||
<i class="fa fa-cog text-lg"></i>
|
||||
<span class="text-xs mt-1">设置</span>
|
||||
</a>
|
||||
</div>
|
||||
</footer>
|
||||
|
||||
<script>
|
||||
// 页面加载完成后初始化图表
|
||||
document.addEventListener('DOMContentLoaded', function() {
|
||||
// 返回按钮功能
|
||||
document.getElementById('back-btn').addEventListener('click', function() {
|
||||
window.history.back();
|
||||
});
|
||||
|
||||
// 打卡趋势图表
|
||||
const checkInCtx = document.getElementById('checkInChart').getContext('2d');
|
||||
const checkInChart = new Chart(checkInCtx, {
|
||||
type: 'line',
|
||||
data: {
|
||||
labels: ['第1周', '第2周', '第3周', '第4周', '第5周', '第6周'],
|
||||
datasets: [
|
||||
{
|
||||
label: '打卡完成率',
|
||||
data: [65, 68, 72, 69, 75, 78.5],
|
||||
borderColor: '#2563EB',
|
||||
backgroundColor: 'rgba(37, 99, 235, 0.1)',
|
||||
tension: 0.3,
|
||||
fill: true
|
||||
},
|
||||
{
|
||||
label: '体质提升幅度',
|
||||
data: [3.2, 5.8, 7.5, 9.1, 10.5, 12.3],
|
||||
borderColor: '#10B981',
|
||||
backgroundColor: 'rgba(16, 185, 129, 0.1)',
|
||||
tension: 0.3,
|
||||
fill: true
|
||||
}
|
||||
]
|
||||
},
|
||||
options: {
|
||||
responsive: true,
|
||||
maintainAspectRatio: false,
|
||||
plugins: {
|
||||
legend: {
|
||||
position: 'top',
|
||||
labels: {
|
||||
boxWidth: 12,
|
||||
font: {
|
||||
size: 11
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
scales: {
|
||||
y: {
|
||||
beginAtZero: true,
|
||||
max: 100,
|
||||
ticks: {
|
||||
callback: function(value) {
|
||||
return value + '%';
|
||||
},
|
||||
font: {
|
||||
size: 10
|
||||
}
|
||||
}
|
||||
},
|
||||
x: {
|
||||
ticks: {
|
||||
font: {
|
||||
size: 10
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
// 班级对比图表
|
||||
const classCtx = document.getElementById('classComparisonChart').getContext('2d');
|
||||
const classChart = new Chart(classCtx, {
|
||||
type: 'bar',
|
||||
data: {
|
||||
labels: ['3(1)班', '4(2)班', '5(3)班', '6(1)班'],
|
||||
datasets: [
|
||||
{
|
||||
label: '打卡完成率',
|
||||
data: [91, 85, 76, 68],
|
||||
backgroundColor: '#2563EB',
|
||||
borderRadius: 4
|
||||
},
|
||||
{
|
||||
label: '体质提升幅度',
|
||||
data: [15.2, 13.8, 11.5, 8.7],
|
||||
backgroundColor: '#10B981',
|
||||
borderRadius: 4
|
||||
}
|
||||
]
|
||||
},
|
||||
options: {
|
||||
responsive: true,
|
||||
maintainAspectRatio: false,
|
||||
plugins: {
|
||||
legend: {
|
||||
position: 'top',
|
||||
labels: {
|
||||
boxWidth: 12,
|
||||
font: {
|
||||
size: 11
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
scales: {
|
||||
y: {
|
||||
beginAtZero: true,
|
||||
max: 100,
|
||||
ticks: {
|
||||
callback: function(value) {
|
||||
return value + '%';
|
||||
},
|
||||
font: {
|
||||
size: 10
|
||||
}
|
||||
}
|
||||
},
|
||||
x: {
|
||||
ticks: {
|
||||
font: {
|
||||
size: 10
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
});
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
Reference in New Issue
Block a user