137 lines
5.7 KiB
HTML
137 lines
5.7 KiB
HTML
<!DOCTYPE html>
|
||
<html>
|
||
<head>
|
||
<meta charset="utf-8"/>
|
||
<title>课程签到</title>
|
||
<meta name="renderer" content="webkit"/>
|
||
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"/>
|
||
<meta name="viewport" content="width=device-width, initial-scale=1"/>
|
||
<link href="/static/css/layui.css" rel="stylesheet">
|
||
</head>
|
||
|
||
<body>
|
||
<div class="layui-layout layui-layout-admin">
|
||
<div class="layui-header">
|
||
<div class="layui-logo layui-hide-xs layui-bg-black">网上上课点名系统</div>
|
||
<!-- 头部区域(可配合layui 已有的水平导航) -->
|
||
<ul class="layui-nav layui-layout-left">
|
||
<!-- 移动端显示 -->
|
||
<li class="layui-nav-item layui-show-xs-inline-block layui-hide-sm" lay-header-event="menuLeft">
|
||
<i class="layui-icon layui-icon-spread-left"></i>
|
||
</li>
|
||
<li class="layui-nav-item layui-hide-xs"><a href="/attendance-teacher/attendance">签到</a></li>
|
||
<li class="layui-nav-item layui-hide-xs"><a href="/attendance-teacher/import-class">导入班级</a></li>
|
||
</ul>
|
||
<ul class="layui-nav layui-layout-right">
|
||
<li class="layui-nav-item layui-hide layui-show-sm-inline-block">
|
||
<a href="javascript:;">
|
||
<img
|
||
src="//unpkg.com/outeres@0.0.10/img/layui/icon-v2.png"
|
||
class="layui-nav-img"
|
||
/>
|
||
{{ session.nickname }}
|
||
</a>
|
||
<dl class="layui-nav-child">
|
||
<dd><a href="/home/profile">资料</a></dd> <!-- 修改这里的href指向/profile -->
|
||
<dd><a href="javascript:;" id="logoutLink">登出</a></dd>
|
||
</dl>
|
||
</li>
|
||
<li
|
||
class="layui-nav-item"
|
||
lay-header-event="menuRight"
|
||
lay-unselect
|
||
></li>
|
||
</ul>
|
||
</div>
|
||
<div class="layui-side layui-bg-black">
|
||
<div class="layui-side-scroll">
|
||
<!-- 动态加载菜单栏 -->
|
||
<ul class="layui-nav layui-nav-tree" lay-filter="test">
|
||
</ul>
|
||
</div>
|
||
</div>
|
||
<div class="layui-body">
|
||
<!-- 内容主体区域 -->
|
||
<div style="margin: 20px;">
|
||
<div class="layui-row">
|
||
<div class="layui-col-md12">
|
||
<fieldset class="layui-elem-field">
|
||
<legend>学生信息上传 - 要求</legend>
|
||
<div class="layui-field-box">
|
||
<p>请按照以下格式准备Excel文件:</p>
|
||
<ul>
|
||
<li>必须包含表头:班级、姓名、学号、课程、专业</li>
|
||
<li>确保数据格式正确无误</li>
|
||
</ul>
|
||
<p><b>注:</b>错误的数据格式可能导致上传失败</p>
|
||
</div>
|
||
</fieldset>
|
||
</div>
|
||
<div class="layui-col-md12" style="padding-top: 20px;">
|
||
<!-- 隐藏的文件输入,用户选择文件 -->
|
||
<input type="file" id="excelFile" style="display:none;" accept=".xlsx, .xls">
|
||
<!-- 上传按钮 -->
|
||
<button type="button" class="layui-btn" id="uploadExcel">上传Excel文件</button>
|
||
<!-- 下载模板链接 -->
|
||
<a href="/files/template.xlsx" class="layui-btn layui-btn-primary">下载模板</a>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
<script src="/static/jquery.min.js"></script> <!-- 确保已经引入jQuery -->
|
||
<script src="/static/layui.js"></script>
|
||
<script src="/static/js/menu.js"></script>
|
||
<script src="/static/js/logout.js"></script>
|
||
<script>
|
||
// 获取上传按钮和文件输入元素
|
||
var uploadBtn = document.getElementById('uploadExcel');
|
||
var fileInput = document.getElementById('excelFile');
|
||
|
||
// 当点击上传按钮时触发文件输入的点击事件
|
||
uploadBtn.addEventListener('click', function () {
|
||
fileInput.click();
|
||
});
|
||
|
||
// 处理文件选择事件
|
||
fileInput.addEventListener('change', function () {
|
||
var file = this.files[0]; // 获取文件对象
|
||
if (file) {
|
||
// 检查文件类型
|
||
var fileName = file.name;
|
||
var fileExt = fileName.split('.').pop().toLowerCase();
|
||
if (fileExt === 'xlsx' || fileExt === 'xls') {
|
||
// 使用 FormData 上传文件
|
||
var formData = new FormData();
|
||
formData.append('file', file, fileName); // 'file' 是你的服务器端期待的字段名
|
||
|
||
// 使用 fetch 发送文件
|
||
fetch('/api/receive-excel', {
|
||
method: 'POST',
|
||
body: formData // 传递表单数据
|
||
})
|
||
.then(response => {
|
||
if (response.ok) {
|
||
return response.json(); // 如果上传成功,解析JSON响应
|
||
}
|
||
throw new Error('Network response was not ok.'); // 如果上传失败,抛出错误
|
||
})
|
||
.then(data => {
|
||
// 处理响应数据
|
||
layer.msg('上传成功!'); // 弹出成功消息
|
||
})
|
||
.catch(error => {
|
||
console.error('Upload failed:', error);
|
||
alert("文件上传失败!"); // 弹出失败消息
|
||
});
|
||
} else {
|
||
alert("请上传Excel文件!");
|
||
}
|
||
}
|
||
});
|
||
</script>
|
||
|
||
</body>
|
||
</html>
|