feat(student): 实现学生的新增与删除功能
- 新增AddStudentReqVO和DeleteStudentReqVO请求对象 - 在StudentController中添加新增和删除学生接口 - StudentService及其实现类增加新增和删除学生方法 - 通过StudentDOMapper新增插入和逻辑删除方法 - 新增AddStudentDialog组件,实现学生添加的表单及交互 - 在class.vue页面添加新增学生按钮及删除学生操作列 - API层新增addStudent和deleteStudent接口调用 - 删除学生时更新选中状态及重新加载学生列表 - 初始化新增学生时词汇掌握记录相关数据
This commit is contained in:
@@ -57,6 +57,11 @@
|
||||
<el-table-column prop="name" label="姓名" min-width="120" />
|
||||
<el-table-column prop="classId" label="班级ID" width="100" />
|
||||
<el-table-column prop="gradeId" label="年级ID" width="100" />
|
||||
<el-table-column label="操作" width="120" fixed="right">
|
||||
<template #default="{ row }">
|
||||
<el-button type="danger" size="small" @click.stop="onDeleteStudent(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"
|
||||
@@ -65,6 +70,15 @@
|
||||
</div>
|
||||
<ExamGenerateDialog v-model="showGenerateDialog" :student-ids="selectedStudentIds"
|
||||
:default-grade-id="selectedGradeId" />
|
||||
<div class="mt-3 flex justify-end">
|
||||
<el-button type="primary" @click="showAddStudentDialog = true">新增学生</el-button>
|
||||
</div>
|
||||
<AddStudentDialog
|
||||
v-model="showAddStudentDialog"
|
||||
:default-class-id="selectedClassId"
|
||||
:default-grade-id="selectedGradeId"
|
||||
@success="fetchStudents"
|
||||
/>
|
||||
</div>
|
||||
|
||||
<div class="bg-white dark:bg-gray-800 rounded-lg shadow p-6" v-loading="gradeLoading">
|
||||
@@ -103,10 +117,11 @@ import Header from '@/layouts/components/Header.vue'
|
||||
import { ref, onMounted } from 'vue'
|
||||
import { getClassList, deleteClass } from '@/api/class'
|
||||
import { getGradeList } from '@/api/grade'
|
||||
import { getStudentList } from '@/api/student'
|
||||
import { getStudentList, deleteStudent } from '@/api/student'
|
||||
import ExamGenerateDialog from '@/layouts/components/ExamGenerateDialog.vue'
|
||||
import AddClassDialog from '@/layouts/components/AddClassDialog.vue'
|
||||
import AddGradeDialog from '@/layouts/components/AddGradeDialog.vue'
|
||||
import AddStudentDialog from '@/layouts/components/AddStudentDialog.vue'
|
||||
|
||||
const classes = ref([])
|
||||
const pageNo = ref(1)
|
||||
@@ -137,6 +152,7 @@ const studentName = ref('')
|
||||
const studentTableRef = ref(null)
|
||||
const selectedStudentIds = ref([])
|
||||
const showGenerateDialog = ref(false)
|
||||
const showAddStudentDialog = ref(false)
|
||||
|
||||
async function fetchClasses() {
|
||||
loading.value = true
|
||||
@@ -233,6 +249,19 @@ function onGradeRowClick(row) {
|
||||
studentPageNo.value = 1
|
||||
fetchStudents()
|
||||
}
|
||||
async function onDeleteStudent(row) {
|
||||
try {
|
||||
await deleteStudent(row.id)
|
||||
ElMessage.success('删除成功')
|
||||
if (selectedStudentIds.value?.length) {
|
||||
selectedStudentIds.value = selectedStudentIds.value.filter(id => id !== row.id)
|
||||
studentTableRef.value?.toggleRowSelection(row, false)
|
||||
}
|
||||
await fetchStudents()
|
||||
} catch (e) {
|
||||
ElMessage.error('删除失败')
|
||||
}
|
||||
}
|
||||
async function onDeleteClass(row) {
|
||||
try {
|
||||
await deleteClass(row.id)
|
||||
|
||||
Reference in New Issue
Block a user