Compare commits

..

8 Commits

Author SHA1 Message Date
wangsiyuan af9fd8af11 更新 .DS_Store 2023-12-28 18:54:02 +08:00
wangsiyuan 0cf81af5e9 更新 mysql.sql 2023-12-28 18:54:00 +08:00
wangsiyuan 8d91463dd0 创建 template.xlsx 2023-12-28 18:53:57 +08:00
wangsiyuan d365c3c466 更新 database_manager.py 2023-12-28 18:53:55 +08:00
wangsiyuan 3e3d32c20e 更新 config.py 2023-12-28 18:53:52 +08:00
wangsiyuan df2c025c63 更新 views.py 2023-12-28 18:53:48 +08:00
wangsiyuan f1fac2037a 更新 import-class.html 2023-12-28 18:53:46 +08:00
wangsiyuan ebd95f9413 更新 attendance-teacher.html 2023-12-28 18:53:44 +08:00
8 changed files with 48 additions and 27 deletions

BIN
.DS_Store vendored

Binary file not shown.

View File

@ -58,8 +58,7 @@
<th>课程名称</th>
<th>课程代码</th>
<th>学分</th>
<th>班级名称</th>
<th>专业</th>
<th>班级专业</th>
<th>签到</th>
</tr>
</thead>
@ -93,13 +92,11 @@
$row.append(`<td>${item.course_name}</td>`);
$row.append(`<td>${item.course_code}</td>`);
$row.append(`<td>${item.credits}</td>`);
$row.append(`<td>${item.class_name}</td>`);
$row.append(`<td>${item.major}</td>`);
$row.append(`<td>
<div class="btn-container">
<a class="layui-btn layui-btn-normal layui-btn-sm" lay-event="checkin">签到<i class="layui-icon layui-icon-down"></i></a>
</div>
</td>`)
$row.append(`<td>${item.class_name + item.major}</td>`);
$row.append(`<td><div class="layui-btn-container">
<button type="button" class="layui-btn">签到</button>
</div>
</td>`)
$tbody.append($row);
});
@ -118,11 +115,6 @@
});
}
function toggleDropdown(dropdown) {
$(dropdown).find('.dropdown-menu').toggle(); // 显示或隐藏下拉菜单
}
// 初始加载第一页
renderTable(1);
});

View File

@ -70,7 +70,7 @@
<div class="layui-col-md12" style="padding-top: 20px;">
<button type="button" class="layui-btn" id="uploadExcel">上传Excel文件</button>
<!-- 可以添加一个下载模板的链接 -->
<a href="path/to/your/template.xlsx" class="layui-btn layui-btn-primary">下载模板</a>
<a href="/files/template.xlsx" class="layui-btn layui-btn-primary">下载模板</a>
</div>
</div>
</div>

View File

@ -1,4 +1,4 @@
from flask import Flask, redirect, url_for, render_template, session, jsonify,request
from flask import Flask, redirect, url_for, render_template, session, jsonify,request,send_file
from db.connection import MySQLPool
from config import SECRET_KEY
from db.database_manager import DatabaseManager
@ -7,14 +7,15 @@ from models.Teacher import Teacher
from models.User import User
import logging
from config import LOGGING_CONFIG
from config import FILE_PATH
app = Flask(__name__, static_folder='static')
app.secret_key = SECRET_KEY # 从配置文件设置
logging.basicConfig(**LOGGING_CONFIG)
# 一个全局MySQLPool对象用于管理数据库连接
mysql_pool = MySQLPool()
# 配置文件路径,例如指向一个 'files' 目录
app.config['FILE_PATH'] = FILE_PATH
@app.route('/')
def index():
@ -224,7 +225,6 @@ def teacher_attendance():
@app.route('/api/get-teacher-attendance-table', methods=['GET'])
def get_current_teacher_courses():
number = session.get('number')
logging.info(number)
# 获取分页参数
page = request.args.get('page', 1, type=int) # 如果没有提供,默认为第一页
limit = request.args.get('limit', 10, type=int) # 如果没有提供默认每页10条
@ -232,7 +232,7 @@ def get_current_teacher_courses():
# 获取所有课程数据
db_manager = DatabaseManager()
all_course_data = db_manager.get_current_teacher_courses(number)
logging.info(f"all_course_data: {all_course_data}")
# 计算分页的起始和结束索引
start = (page - 1) * limit
end = start + limit
@ -250,6 +250,12 @@ def get_current_teacher_courses():
# 将查询结果转换为JSON格式并返回
return jsonify(response)
@app.route('/files/<filename>')
def download_template():
print(FILE_PATH)
# 确保这个路径是你的文件实际所在的服务器路径
path = "./files/template.xlsx"
return send_file(path, as_attachment=True)
if __name__ == '__main__':
app.run(debug=True)

View File

@ -1,6 +1,7 @@
# config.py
import pymysql
import logging
import os
# 设置session SECRET_KEY
SECRET_KEY = 'sUNiJ7QPulxrbmZD'
@ -9,6 +10,8 @@ LOGGING_CONFIG = {
'level': logging.INFO,
'format': '%(asctime)s - %(levelname)s - [%(filename)s:%(funcName)s] - %(message)s'
}
# 配置文件下载路径
FILE_PATH = os.path.join(os.getcwd(), 'files')
# 数据库连接配置
DB_CONFIG = {

View File

@ -71,9 +71,28 @@ class DatabaseManager:
result = self.fetch(sql)
return result
def get_current_teacher_courses(self, number):
sql = ""
return None
def get_current_teacher_courses(self, teacher_number):
# 使用INNER JOIN连接teacher_class_course表和course表
sql = """
SELECT
c.course_name,
c.course_code,
c.credits,
tcc.class_name,
m.major
FROM
teacher_class_course tcc
JOIN
course c ON tcc.course_id = c.course_id
JOIN
major m ON tcc.major_id = m.major_id
WHERE
tcc.teacher_number = %s;
"""
# 执行查询并返回结果
result = self.fetch(sql, (teacher_number,))
return result
def get_course_type(self):
sql = "SELECT course_name, course_type FROM course"

BIN
files/template.xlsx Normal file

Binary file not shown.

View File

@ -181,13 +181,15 @@ CREATE TABLE teacher_class_course
teacher_number VARCHAR(20) NOT NULL,
course_id INT NOT NULL,
class_name VARCHAR(20) NOT NULL,
major_id VARCHAR(20) NOT NULL,
PRIMARY KEY (id),
FOREIGN KEY (teacher_number) REFERENCES teacher (teacher_number),
FOREIGN KEY (course_id) REFERENCES course (course_id)
FOREIGN KEY (course_id) REFERENCES course (course_id),
FOREIGN KEY (major_id) REFERENCES major (major_id)
);
INSERT INTO teacher_class_course(teacher_number, course_id, class_name) VALUES
('G0000',1,'2023级01班');
INSERT INTO teacher_class_course(teacher_number, course_id, class_name,major_id) VALUES
('G0000',1,'2023级01班','000');
INSERT INTO teacher_class_course(teacher_id, course_id, class_id)
VALUES (1, 1, 1),
@ -249,4 +251,3 @@ VALUES ('一、二节', '08:00:00', '09:30:00'),
('五、六节', '14:30:00', '16:00:00'),
('七、八节', '16:30:00', '18:00:00');