feat(grade): 实现年级管理的新增与删除功能
- 后端新增AddGradeReqVO和DeleteGradeReqVO请求对象 - GradeController添加新增和删除年级两个接口 - GradeService及其实现类实现新增和删除年级逻辑 - MyBatis映射新增插入和删除SQL语句 - 前端API新增addGrade和deleteGrade方法 - class.vue新增年级列表操作列及相关事件处理 - 新增AddGradeDialog组件用于输入新增年级名称 - 增加页面新增按钮及弹窗显示控制 - 实现删除年级的API调用与界面删除操作反馈
This commit is contained in:
@@ -71,12 +71,21 @@
|
||||
:current-row-key="selectedGradeId" @row-click="onGradeRowClick">
|
||||
<el-table-column prop="id" label="ID" width="80" />
|
||||
<el-table-column prop="title" label="年级名称" min-width="160" />
|
||||
<el-table-column label="操作" width="120" fixed="right">
|
||||
<template #default="{ row }">
|
||||
<el-button type="danger" size="small" @click.stop="onDeleteGrade(row)">删除</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
<div class="mt-4 flex justify-end">
|
||||
<el-pagination background layout="prev, pager, next, sizes, total" :total="gradeTotalCount"
|
||||
:page-size="gradePageSize" :current-page="gradePageNo"
|
||||
@current-change="handleGradePageChange" @size-change="handleGradeSizeChange" />
|
||||
</div>
|
||||
<div class="mt-3 flex justify-end">
|
||||
<el-button type="primary" @click="showAddGradeDialog = true">新增年级</el-button>
|
||||
</div>
|
||||
<AddGradeDialog v-model="showAddGradeDialog" @success="fetchGrades" />
|
||||
</div>
|
||||
|
||||
</div>
|
||||
@@ -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()
|
||||
|
||||
Reference in New Issue
Block a user