From 84239d0199b4934d60bf2f0a2b594674cd264809 Mon Sep 17 00:00:00 2001 From: lbw <1192299468@qq.com> Date: Mon, 15 Dec 2025 14:59:40 +0800 Subject: [PATCH] =?UTF-8?q?feat(grade):=20=E5=AE=9E=E7=8E=B0=E5=B9=B4?= =?UTF-8?q?=E7=BA=A7=E7=AE=A1=E7=90=86=E7=9A=84=E6=96=B0=E5=A2=9E=E4=B8=8E?= =?UTF-8?q?=E5=88=A0=E9=99=A4=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 后端新增AddGradeReqVO和DeleteGradeReqVO请求对象 - GradeController添加新增和删除年级两个接口 - GradeService及其实现类实现新增和删除年级逻辑 - MyBatis映射新增插入和删除SQL语句 - 前端API新增addGrade和deleteGrade方法 - class.vue新增年级列表操作列及相关事件处理 - 新增AddGradeDialog组件用于输入新增年级名称 - 增加页面新增按钮及弹窗显示控制 - 实现删除年级的API调用与界面删除操作反馈 --- .../service/controller/GradeController.java | 14 +++++ .../service/domain/mapper/GradeDOMapper.java | 4 ++ .../service/model/vo/grade/AddGradeReqVO.java | 15 ++++++ .../model/vo/grade/DeleteGradeReqVO.java | 15 ++++++ .../enlish/service/service/GradeService.java | 4 ++ .../service/grade/GradeServiceImpl.java | 10 ++++ .../main/resources/mapper/GradeDOMapper.xml | 12 +++++ enlish-vue/src/api/grade.js | 14 ++++- .../src/layouts/components/AddGradeDialog.vue | 54 +++++++++++++++++++ enlish-vue/src/pages/class.vue | 28 +++++++++- 10 files changed, 168 insertions(+), 2 deletions(-) create mode 100644 enlish-service/src/main/java/com/yinlihupo/enlish/service/model/vo/grade/AddGradeReqVO.java create mode 100644 enlish-service/src/main/java/com/yinlihupo/enlish/service/model/vo/grade/DeleteGradeReqVO.java create mode 100644 enlish-vue/src/layouts/components/AddGradeDialog.vue diff --git a/enlish-service/src/main/java/com/yinlihupo/enlish/service/controller/GradeController.java b/enlish-service/src/main/java/com/yinlihupo/enlish/service/controller/GradeController.java index db7105e..0fbda30 100644 --- a/enlish-service/src/main/java/com/yinlihupo/enlish/service/controller/GradeController.java +++ b/enlish-service/src/main/java/com/yinlihupo/enlish/service/controller/GradeController.java @@ -2,6 +2,8 @@ package com.yinlihupo.enlish.service.controller; import com.yinlihupo.enlish.service.domain.dataobject.GradeDO; +import com.yinlihupo.enlish.service.model.vo.grade.AddGradeReqVO; +import com.yinlihupo.enlish.service.model.vo.grade.DeleteGradeReqVO; import com.yinlihupo.enlish.service.model.vo.grade.FindGradeListReqVO; import com.yinlihupo.enlish.service.model.vo.grade.FindGradeListRspVO; import com.yinlihupo.enlish.service.service.GradeService; @@ -38,4 +40,16 @@ public class GradeController { return PageResponse.success(list, page, gradeCount, pageSize); } + + @PostMapping("/add") + @ApiOperationLog(description = "添加年级") + public void addGrade(@RequestBody AddGradeReqVO addGradeReqVO) { + gradeService.insert(addGradeReqVO.getTitle()); + } + + @PostMapping("/delete") + @ApiOperationLog(description = "删除年级") + public void deleteGrade(@RequestBody DeleteGradeReqVO deleteGradeReqVO) { + gradeService.delete(deleteGradeReqVO.getId()); + } } diff --git a/enlish-service/src/main/java/com/yinlihupo/enlish/service/domain/mapper/GradeDOMapper.java b/enlish-service/src/main/java/com/yinlihupo/enlish/service/domain/mapper/GradeDOMapper.java index 74a4821..178c4c0 100644 --- a/enlish-service/src/main/java/com/yinlihupo/enlish/service/domain/mapper/GradeDOMapper.java +++ b/enlish-service/src/main/java/com/yinlihupo/enlish/service/domain/mapper/GradeDOMapper.java @@ -14,4 +14,8 @@ public interface GradeDOMapper { List selectList(@Param("startIndex") Integer startIndex, @Param("pageSize") Integer pageSize); Integer selectCount(); + + int insert(String name); + + void deleteById(Integer id); } \ No newline at end of file diff --git a/enlish-service/src/main/java/com/yinlihupo/enlish/service/model/vo/grade/AddGradeReqVO.java b/enlish-service/src/main/java/com/yinlihupo/enlish/service/model/vo/grade/AddGradeReqVO.java new file mode 100644 index 0000000..7f87531 --- /dev/null +++ b/enlish-service/src/main/java/com/yinlihupo/enlish/service/model/vo/grade/AddGradeReqVO.java @@ -0,0 +1,15 @@ +package com.yinlihupo.enlish.service.model.vo.grade; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +@AllArgsConstructor +@NoArgsConstructor +@Data +@Builder +public class AddGradeReqVO { + + private String title; +} diff --git a/enlish-service/src/main/java/com/yinlihupo/enlish/service/model/vo/grade/DeleteGradeReqVO.java b/enlish-service/src/main/java/com/yinlihupo/enlish/service/model/vo/grade/DeleteGradeReqVO.java new file mode 100644 index 0000000..9f9b6fc --- /dev/null +++ b/enlish-service/src/main/java/com/yinlihupo/enlish/service/model/vo/grade/DeleteGradeReqVO.java @@ -0,0 +1,15 @@ +package com.yinlihupo.enlish.service.model.vo.grade; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +@AllArgsConstructor +@NoArgsConstructor +@Data +@Builder +public class DeleteGradeReqVO { + + private Integer id; +} diff --git a/enlish-service/src/main/java/com/yinlihupo/enlish/service/service/GradeService.java b/enlish-service/src/main/java/com/yinlihupo/enlish/service/service/GradeService.java index fdaa5de..ba4b797 100644 --- a/enlish-service/src/main/java/com/yinlihupo/enlish/service/service/GradeService.java +++ b/enlish-service/src/main/java/com/yinlihupo/enlish/service/service/GradeService.java @@ -11,4 +11,8 @@ public interface GradeService { List findGradeList(Integer page, Integer PageSize); Integer findGradeCount(); + + void insert(String name); + + void delete(Integer id); } diff --git a/enlish-service/src/main/java/com/yinlihupo/enlish/service/service/grade/GradeServiceImpl.java b/enlish-service/src/main/java/com/yinlihupo/enlish/service/service/grade/GradeServiceImpl.java index 0aba5bd..4b35ff3 100644 --- a/enlish-service/src/main/java/com/yinlihupo/enlish/service/service/grade/GradeServiceImpl.java +++ b/enlish-service/src/main/java/com/yinlihupo/enlish/service/service/grade/GradeServiceImpl.java @@ -28,4 +28,14 @@ public class GradeServiceImpl implements GradeService { public Integer findGradeCount() { return gradeDOMapper.selectCount(); } + + @Override + public void insert(String name) { + gradeDOMapper.insert(name); + } + + @Override + public void delete(Integer id) { + gradeDOMapper.deleteById(id); + } } diff --git a/enlish-service/src/main/resources/mapper/GradeDOMapper.xml b/enlish-service/src/main/resources/mapper/GradeDOMapper.xml index b27b294..e0f212b 100644 --- a/enlish-service/src/main/resources/mapper/GradeDOMapper.xml +++ b/enlish-service/src/main/resources/mapper/GradeDOMapper.xml @@ -33,4 +33,16 @@ from grade + + insert into grade + (title, time) + values + (#{name}, now()) + + + + delete from grade + where id = #{id} + + \ No newline at end of file diff --git a/enlish-vue/src/api/grade.js b/enlish-vue/src/api/grade.js index 4435307..d7c1b6d 100644 --- a/enlish-vue/src/api/grade.js +++ b/enlish-vue/src/api/grade.js @@ -5,4 +5,16 @@ export function getGradeList(page, size) { page: page, pageSize: size }) -} \ No newline at end of file +} + +export function addGrade(name) { + return axios.post('/grade/add', { + title: name + }) +} + +export function deleteGrade(id) { + return axios.post('/grade/delete', { + id: id + }) +} diff --git a/enlish-vue/src/layouts/components/AddGradeDialog.vue b/enlish-vue/src/layouts/components/AddGradeDialog.vue new file mode 100644 index 0000000..3123abb --- /dev/null +++ b/enlish-vue/src/layouts/components/AddGradeDialog.vue @@ -0,0 +1,54 @@ + + + + + diff --git a/enlish-vue/src/pages/class.vue b/enlish-vue/src/pages/class.vue index 2bd8ef1..75ea8a5 100644 --- a/enlish-vue/src/pages/class.vue +++ b/enlish-vue/src/pages/class.vue @@ -71,12 +71,21 @@ :current-row-key="selectedGradeId" @row-click="onGradeRowClick"> + + +
+
+ 新增年级 +
+ @@ -90,9 +99,10 @@ import Header from '@/layouts/components/Header.vue' import { ref, onMounted } from 'vue' import { getClassList } from '@/api/class' -import { getGradeList } from '@/api/grade' +import { getGradeList, deleteGrade } from '@/api/grade' import { getStudentList } from '@/api/student' import ExamGenerateDialog from '@/layouts/components/ExamGenerateDialog.vue' +import AddGradeDialog from '@/layouts/components/AddGradeDialog.vue' const classes = ref([]) const pageNo = ref(1) @@ -111,6 +121,7 @@ const gradeLoading = ref(false) const gradeTableRef = ref(null) const selectedGradeId = ref(null) const selectedGradeTitle = ref('') +const showAddGradeDialog = ref(false) const students = ref([]) const studentPageNo = ref(1) @@ -229,6 +240,21 @@ function resetStudentFilters() { fetchStudents() } +async function onDeleteGrade(row) { + try { + await deleteGrade(row.id) + ElMessage.success('删除成功') + if (selectedGradeId.value === row.id) { + selectedGradeId.value = null + selectedGradeTitle.value = '' + gradeTableRef.value?.setCurrentRow() + } + await fetchGrades() + } catch (e) { + ElMessage.error('删除失败') + } +} + onMounted(() => { fetchClasses() fetchGrades()