Compare commits
No commits in common. "af9fd8af11dcf9159057a4ea534410b1c45dd31a" and "5fb451fa9707e5a8de44f64ea1785ab6861a2907" have entirely different histories.
af9fd8af11
...
5fb451fa97
|
|
@ -58,7 +58,8 @@
|
|||
<th>课程名称</th>
|
||||
<th>课程代码</th>
|
||||
<th>学分</th>
|
||||
<th>班级专业</th>
|
||||
<th>班级名称</th>
|
||||
<th>专业</th>
|
||||
<th>签到</th>
|
||||
</tr>
|
||||
</thead>
|
||||
|
|
@ -92,11 +93,13 @@
|
|||
$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 + item.major}</td>`);
|
||||
$row.append(`<td><div class="layui-btn-container">
|
||||
<button type="button" class="layui-btn">签到</button>
|
||||
</div>
|
||||
</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>`)
|
||||
$tbody.append($row);
|
||||
|
||||
});
|
||||
|
|
@ -115,6 +118,11 @@
|
|||
});
|
||||
}
|
||||
|
||||
function toggleDropdown(dropdown) {
|
||||
$(dropdown).find('.dropdown-menu').toggle(); // 显示或隐藏下拉菜单
|
||||
}
|
||||
|
||||
|
||||
// 初始加载第一页
|
||||
renderTable(1);
|
||||
});
|
||||
|
|
|
|||
|
|
@ -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="/files/template.xlsx" class="layui-btn layui-btn-primary">下载模板</a>
|
||||
<a href="path/to/your/template.xlsx" class="layui-btn layui-btn-primary">下载模板</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
|||
16
app/views.py
16
app/views.py
|
|
@ -1,4 +1,4 @@
|
|||
from flask import Flask, redirect, url_for, render_template, session, jsonify,request,send_file
|
||||
from flask import Flask, redirect, url_for, render_template, session, jsonify,request
|
||||
from db.connection import MySQLPool
|
||||
from config import SECRET_KEY
|
||||
from db.database_manager import DatabaseManager
|
||||
|
|
@ -7,15 +7,14 @@ 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():
|
||||
|
|
@ -225,6 +224,7 @@ 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,12 +250,6 @@ 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)
|
||||
|
|
|
|||
|
|
@ -1,7 +1,6 @@
|
|||
# config.py
|
||||
import pymysql
|
||||
import logging
|
||||
import os
|
||||
# 设置session SECRET_KEY
|
||||
SECRET_KEY = 'sUNiJ7QPulxrbmZD'
|
||||
|
||||
|
|
@ -10,8 +9,6 @@ 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 = {
|
||||
|
|
|
|||
|
|
@ -71,28 +71,9 @@ class DatabaseManager:
|
|||
result = self.fetch(sql)
|
||||
return result
|
||||
|
||||
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_current_teacher_courses(self, number):
|
||||
sql = ""
|
||||
return None
|
||||
|
||||
def get_course_type(self):
|
||||
sql = "SELECT course_name, course_type FROM course"
|
||||
|
|
|
|||
Binary file not shown.
|
|
@ -181,15 +181,13 @@ 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 (major_id) REFERENCES major (major_id)
|
||||
FOREIGN KEY (course_id) REFERENCES course (course_id)
|
||||
);
|
||||
|
||||
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_number, course_id, class_name) VALUES
|
||||
('G0000',1,'2023级01班');
|
||||
|
||||
INSERT INTO teacher_class_course(teacher_id, course_id, class_id)
|
||||
VALUES (1, 1, 1),
|
||||
|
|
@ -251,3 +249,4 @@ VALUES ('一、二节', '08:00:00', '09:30:00'),
|
|||
('五、六节', '14:30:00', '16:00:00'),
|
||||
('七、八节', '16:30:00', '18:00:00');
|
||||
|
||||
|
||||
|
|
|
|||
Reference in New Issue