Compare commits

...

9 Commits

Author SHA1 Message Date
wangsiyuan 892196a827 更新 mysql.sql 2023-12-25 23:02:18 +08:00
wangsiyuan c73997452b 更新 database_manager.py 2023-12-25 23:02:15 +08:00
wangsiyuan 234d9cf5b8 更新 views.py 2023-12-25 23:02:13 +08:00
wangsiyuan 05e0e82736 更新 profile.html 2023-12-25 23:02:11 +08:00
wangsiyuan 9c4d5b8a7d 更新 home.html 2023-12-25 23:02:08 +08:00
wangsiyuan a303a65156 创建 course-info.html 2023-12-25 23:02:06 +08:00
wangsiyuan 6487490ad7 创建 attendance.html 2023-12-25 23:02:04 +08:00
wangsiyuan 5915f30e08 创建 attendance-reminder.html 2023-12-25 23:02:02 +08:00
wangsiyuan 138e1a221e 创建 announcement.html 2023-12-25 23:01:58 +08:00
9 changed files with 348 additions and 17 deletions

View File

@ -0,0 +1,78 @@
<!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-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>
<script src="static/jquery.min.js"></script> <!-- 确保已经引入jQuery -->
<script src="static/layui.js"></script>
<script>
// 请求后端获取菜单数据
$.get('/api/menu', function (menuItems) {
// 清空原有菜单项
var menuList = $('.layui-nav.layui-nav-tree');
menuList.empty();
// 动态添加菜单项
menuItems.forEach(function (item) {
menuList.append('<li class="layui-nav-item"><a href="' + item.path + '">' + item.name + '</a></li>');
});
// 更新菜单布局
layui.element.render('nav', 'test');
});
layui.use(['jquery'], function () {
var $ = layui.jquery; // 获取Layui的jQuery对象
$('#logoutLink').on('click', function () {
// 向后端发送登出请求
$.get('/logout', function (data) {
// 重定向到登录页面,或根据后端响应做其他处理
window.location.href = '/login';
});
});
});
</script>
</body>
</html>

View File

@ -0,0 +1,78 @@
<!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-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>
<script src="static/jquery.min.js"></script> <!-- 确保已经引入jQuery -->
<script src="static/layui.js"></script>
<script>
// 请求后端获取菜单数据
$.get('/api/menu', function (menuItems) {
// 清空原有菜单项
var menuList = $('.layui-nav.layui-nav-tree');
menuList.empty();
// 动态添加菜单项
menuItems.forEach(function (item) {
menuList.append('<li class="layui-nav-item"><a href="' + item.path + '">' + item.name + '</a></li>');
});
// 更新菜单布局
layui.element.render('nav', 'test');
});
layui.use(['jquery'], function () {
var $ = layui.jquery; // 获取Layui的jQuery对象
$('#logoutLink').on('click', function () {
// 向后端发送登出请求
$.get('/logout', function (data) {
// 重定向到登录页面,或根据后端响应做其他处理
window.location.href = '/login';
});
});
});
</script>
</body>
</html>

View File

@ -0,0 +1,78 @@
<!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-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>
<script src="static/jquery.min.js"></script> <!-- 确保已经引入jQuery -->
<script src="static/layui.js"></script>
<script>
// 请求后端获取菜单数据
$.get('/api/menu', function (menuItems) {
// 清空原有菜单项
var menuList = $('.layui-nav.layui-nav-tree');
menuList.empty();
// 动态添加菜单项
menuItems.forEach(function (item) {
menuList.append('<li class="layui-nav-item"><a href="' + item.link + '">' + item.name + '</a></li>');
});
// 更新菜单布局
layui.element.render('nav', 'test');
});
layui.use(['jquery'], function () {
var $ = layui.jquery; // 获取Layui的jQuery对象
$('#logoutLink').on('click', function () {
// 向后端发送登出请求
$.get('/logout', function (data) {
// 重定向到登录页面,或根据后端响应做其他处理
window.location.href = '/login';
});
});
});
</script>
</body>
</html>

View File

@ -0,0 +1,78 @@
<!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-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>
<script src="static/jquery.min.js"></script> <!-- 确保已经引入jQuery -->
<script src="static/layui.js"></script>
<script>
// 请求后端获取菜单数据
$.get('/api/menu', function (menuItems) {
// 清空原有菜单项
var menuList = $('.layui-nav.layui-nav-tree');
menuList.empty();
// 动态添加菜单项
menuItems.forEach(function (item) {
menuList.append('<li class="layui-nav-item"><a href="' + item.path + '">' + item.name + '</a></li>');
});
// 更新菜单布局
layui.element.render('nav', 'test');
});
layui.use(['jquery'], function () {
var $ = layui.jquery; // 获取Layui的jQuery对象
$('#logoutLink').on('click', function () {
// 向后端发送登出请求
$.get('/logout', function (data) {
// 重定向到登录页面,或根据后端响应做其他处理
window.location.href = '/login';
});
});
});
</script>
</body>
</html>

View File

@ -24,7 +24,7 @@
{{ session.nickname }}
</a>
<dl class="layui-nav-child">
<dd><a href="/profile">资料</a></dd> <!-- 修改这里的href指向/profile -->
<dd><a href="/home/profile">资料</a></dd> <!-- 修改这里的href指向/profile -->
<dd><a href="javascript:;" id="logoutLink">登出</a></dd>
</dl>
</li>
@ -55,7 +55,7 @@
// 动态添加菜单项
menuItems.forEach(function (item) {
menuList.append('<li class="layui-nav-item"><a href="' + item.link + '">' + item.name + '</a></li>');
menuList.append('<li class="layui-nav-item"><a href="' + item.path + '">' + item.name + '</a></li>');
});
// 更新菜单布局

View File

@ -12,7 +12,7 @@
<body>
<div class="layui-layout layui-layout-admin">
<div class="layui-header">
<div class="layui-logo layui-hide-xs layui-bg-black">网上上课点名系统</div>
<div class="layui-logo layui-hide-xs layui-bg-black" href="/home">网上上课点名系统</div>
</div>
<div class="layui-body">

View File

@ -97,17 +97,19 @@ def get_menu():
if 'role' in session:
role = session['role']
menu_items = db_manager.get_meun(role)
print(menu_items)
# 转换菜单项为期望的格式并返回
print(menu_items)
formatted_menu_items = [{"name": item['menu_name']} for item in menu_items]
formatted_menu_items = [
{"name": item['menu_name'], "path": item['path']} for item in menu_items
]
return jsonify(formatted_menu_items)
# 如果没有角色信息可能用户未登录或session过期
return jsonify([]), 401 # 未授权状态码
@app.route('/profile', methods=['GET', 'POST'])
@app.route('/home/profile', methods=['GET', 'POST'])
def profile():
if request.method == 'POST':
# 从表单获取数据
@ -123,7 +125,21 @@ def profile():
return render_template('profile.html') # 确保这里渲染的是包含上面表单的HTML页面
@app.route('/course-info', methods=['GET', 'POST'])
def course_info():
return render_template('course-info.html')
@app.route('/attendance', methods=['GET', 'POST'])
def course_checkin():
return render_template('attendance.html')
@app.route('/announcement', methods=['GET', 'POST'])
def announcement():
return render_template('announcement.html')
@app.route('/attendance-reminder', methods=['GET', 'POST'])
def attendance_reminder():
return render_template('attendance-reminder.html')
if __name__ == '__main__':
app.run(debug=True)

View File

@ -63,6 +63,6 @@ class DatabaseManager:
return {'valid': False}
def get_meun(self, role):
sql = "SELECT menu_name FROM menu_items WHERE role=%s ORDER BY `order`"
sql = "SELECT menu_name,path FROM menu_items WHERE role=%s ORDER BY `order`"
result = self.fetch(sql, (role,))
return result

View File

@ -15,20 +15,23 @@ INSERT INTO user (nickname, phone_number, password, identity, status) VALUES
CREATE TABLE menu_items (
id INT AUTO_INCREMENT PRIMARY KEY,
menu_name VARCHAR(100),
path VARCHAR(255),
role ENUM('student', 'teacher'),
`order` INT
);
INSERT INTO menu_items (menu_name, role, `order`) VALUES
('课程信息', 'student', 1),
('课程签到', 'student', 2),
('公告信息', 'student', 3),
('签到提醒', 'student', 4);
INSERT INTO menu_items (menu_name, role, path, `order`) VALUES
('课程信息', 'student', '/course-info', 1),
('课程签到', 'student', '/attendance', 2),
('公告信息', 'student', '/announcement', 3),
('签到提醒', 'student', '/attendance-reminder', 4);
INSERT INTO menu_items (menu_name, role, path, `order`) VALUES
('课程类别', 'teacher', '/course-category', 1),
('课程信息', 'teacher', '/course-info', 2),
('课程签到', 'teacher', '/attendance', 3),
('签到提醒', 'teacher', '/attendance-reminder', 4);
INSERT INTO menu_items (menu_name, role, `order`) VALUES
('课程类别', 'teacher', 1),
('课程信息', 'teacher', 2),
('课程签到', 'teacher', 3),
('签到提醒', 'teacher', 4);