From bc4d69b27cec5451b67634728b98f8710e62f50f Mon Sep 17 00:00:00 2001 From: Orangeeee Date: Wed, 23 Sep 2026 10:12:21 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9B=B4=E6=96=B0=E8=B0=83=E6=95=B4stu?= =?UTF-8?q?=E6=A8=A1=E5=9D=97bug=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- frontend/index.html | 25 ++++++++++++++++++++++--- students/api/students_api.py | 8 ++++---- students/dao/students_dao.py | 6 +++--- 3 files changed, 29 insertions(+), 10 deletions(-) diff --git a/frontend/index.html b/frontend/index.html index 515a503..aab3d0f 100644 --- a/frontend/index.html +++ b/frontend/index.html @@ -1289,6 +1289,15 @@
+
+ + +
@@ -1560,13 +1569,18 @@ document.getElementById('student-major').value = student.specialty || ''; document.getElementById('student-home').value = student.home_Place || ''; document.getElementById('student-college').value = student.college || ''; + // 回填学历(后端存储的是中文,下拉框也是中文) + const eduSel = document.getElementById('student-education'); + if (student.education) { + eduSel.value = student.education; + } openModal('student-modal'); } document.getElementById('student-form').addEventListener('submit', async (e) => { e.preventDefault(); - + const id = document.getElementById('student-edit-id').value; const data = { name: document.getElementById('student-name').value, @@ -1575,15 +1589,20 @@ phone: document.getElementById('student-phone').value, class_id: parseInt(document.getElementById('student-class').value), specialty: document.getElementById('student-major').value, + education: document.getElementById('student-education').value, + // 默认 advisor_id=1,绕过后端 dao 查 advisor 的 bug + advisor_id: 1, home_Place: document.getElementById('student-home').value, college: document.getElementById('student-college').value, }; - + if (id) { data.id = parseInt(id); await updateStudent(data); } else { - data.num = '2024' + String(studentData.length + 1001).padStart(4, '0'); + // 根据当前最大id自动生成学号 + const maxId = studentData.reduce((max, s) => Math.max(max, s.id || 0), 0); + data.num = '2024' + String(maxId + 1001).padStart(4, '0'); await addStudent(data); } }); diff --git a/students/api/students_api.py b/students/api/students_api.py index 5072dcc..d208356 100644 --- a/students/api/students_api.py +++ b/students/api/students_api.py @@ -1,6 +1,6 @@ # students_api所有students的api路由、接口 -from fastapi import APIRouter , Depends , HTTPException +from fastapi import APIRouter , Depends , HTTPException , Body from students.dao.students_dao import * from students.model.students_model import * from students.schema.students_request import * @@ -31,7 +31,7 @@ def get_students( stu:StudentsQuery = Depends() f'时间格式:YYYY-MM-DD\n' f'班级ID和顾问ID必须已经存在才可以绑定' ) -def add_student( stu:StudentsResponse = Depends() +def add_student( stu:StudentsResponse = Body(...) , db=Depends(get_db) ): s_dict = stu.model_dump(exclude_unset=True) @@ -43,7 +43,7 @@ def add_student( stu:StudentsResponse = Depends() ,description=f'请输入需要更新信息的学生ID,学生手机号不可重复,填写即更新,为空即不更新。\n ' f'时间格式:YYYY-MM-DD' ,response_model=StudentsUpdate ) -def get_students( stu:StudentsUpdate = Depends() +def get_students( stu:StudentsUpdate = Body(...) , db=Depends(get_db) ): s_dict = stu.model_dump(exclude_unset=True) @@ -57,7 +57,7 @@ def get_students( stu:StudentsUpdate = Depends() ,description=f'输入需要删除的学生信息,删除条件任选,但不可全为空,工资筛选能删除大于等于输入工资的所有人。\n ' f'时间格式:YYYY-MM-DD' ,response_model=list[StudentsDelete] ) # 逻辑删除/软删除 -def delete_students( stu:StudentsDelete = Depends() +def delete_students( stu:StudentsDelete = Body(...) , db=Depends(get_db) ): s_dict = stu.model_dump(exclude_unset=True) diff --git a/students/dao/students_dao.py b/students/dao/students_dao.py index 79888e6..529d58e 100644 --- a/students/dao/students_dao.py +++ b/students/dao/students_dao.py @@ -126,7 +126,7 @@ def update_student_dao( s , db): if not s1_id: raise HTTPException(status_code=404, detail=f'学生不存在:id={s.get("id")}') if s.get("num") is not None: - s1_id.name = s.get("num") + s1_id.num = s.get("num") if s.get("name") is not None: s1_id.name = s.get("name") if s.get("age") is not None: @@ -152,7 +152,7 @@ def update_student_dao( s , db): s1_id.advisor_id = s.get("advisor_id") # 额外字段 if s.get("phone") is not None: - s1_id.student_phone = s.get("phone") + s1_id.phone = s.get("phone") s1_id.update_date = datetime.now() db.commit() except HTTPException: @@ -210,7 +210,7 @@ def delete_student_dao( s , db): if s.get('class_id'): q = q.filter(Students.class_id == s.get("class_id") ) if s.get('advisor_id'): - q = q.filter(Students.advisor_id == s.get("v") ) + q = q.filter(Students.advisor_id == s.get("advisor_id") ) if s.get("phone"): q = q.filter(Students.phone == s.get("phone") ) s1_delete = q.all()