提交 44e574ad authored 作者: 王鹏飞's avatar 王鹏飞

班级新增考试

上级 ca22cfc2
......@@ -25,9 +25,9 @@
"eslint-plugin-import": "^2.25.4",
"eslint-plugin-node": "^11.1.0",
"eslint-plugin-promise": "^5.2.0",
"eslint-plugin-vue": "^8.4.1",
"sass": "1.49.8",
"vite": "^2.8.4",
"eslint-plugin-vue": "^8.5.0",
"sass": "1.49.9",
"vite": "^2.8.6",
"vite-plugin-checker": "^0.4.2",
"vite-plugin-vue2": "^1.9.3",
"vue-template-compiler": "^2.6.14"
......@@ -2546,9 +2546,9 @@
}
},
"node_modules/eslint-plugin-vue": {
"version": "8.4.1",
"resolved": "https://registry.npmjs.org/eslint-plugin-vue/-/eslint-plugin-vue-8.4.1.tgz",
"integrity": "sha512-nmWOhNmDx9TZ+yP9ZhezTkZUupSHsYA2TocRm+efPSXMOyFrVczVlaIuQcLBjCtI8CbkBiUQ3VcyQsjlIhDrhA==",
"version": "8.5.0",
"resolved": "https://registry.npmjs.org/eslint-plugin-vue/-/eslint-plugin-vue-8.5.0.tgz",
"integrity": "sha512-i1uHCTAKOoEj12RDvdtONWrGzjFm/djkzqfhmQ0d6M/W8KM81mhswd/z+iTZ0jCpdUedW3YRgcVfQ37/J4zoYQ==",
"dev": true,
"dependencies": {
"eslint-utils": "^3.0.0",
......@@ -4845,9 +4845,9 @@
"dev": true
},
"node_modules/sass": {
"version": "1.49.8",
"resolved": "https://registry.npmjs.org/sass/-/sass-1.49.8.tgz",
"integrity": "sha512-NoGOjvDDOU9og9oAxhRnap71QaTjjlzrvLnKecUJ3GxhaQBrV6e7gPuSPF28u1OcVAArVojPAe4ZhOXwwC4tGw==",
"version": "1.49.9",
"resolved": "https://registry.npmjs.org/sass/-/sass-1.49.9.tgz",
"integrity": "sha512-YlYWkkHP9fbwaFRZQRXgDi3mXZShslVmmo+FVK3kHLUELHHEYrCmL1x6IUjC7wLS6VuJSAFXRQS/DxdsC4xL1A==",
"dev": true,
"dependencies": {
"chokidar": ">=3.0.0 <4.0.0",
......@@ -5556,9 +5556,9 @@
}
},
"node_modules/vite": {
"version": "2.8.4",
"resolved": "https://registry.npmjs.org/vite/-/vite-2.8.4.tgz",
"integrity": "sha512-GwtOkkaT2LDI82uWZKcrpRQxP5tymLnC7hVHHqNkhFNknYr0hJUlDLfhVRgngJvAy3RwypkDCWtTKn1BjO96Dw==",
"version": "2.8.6",
"resolved": "https://registry.npmjs.org/vite/-/vite-2.8.6.tgz",
"integrity": "sha512-e4H0QpludOVKkmOsRyqQ7LTcMUDF3mcgyNU4lmi0B5JUbe0ZxeBBl8VoZ8Y6Rfn9eFKYtdXNPcYK97ZwH+K2ug==",
"dev": true,
"dependencies": {
"esbuild": "^0.14.14",
......@@ -7999,9 +7999,9 @@
"requires": {}
},
"eslint-plugin-vue": {
"version": "8.4.1",
"resolved": "https://registry.npmjs.org/eslint-plugin-vue/-/eslint-plugin-vue-8.4.1.tgz",
"integrity": "sha512-nmWOhNmDx9TZ+yP9ZhezTkZUupSHsYA2TocRm+efPSXMOyFrVczVlaIuQcLBjCtI8CbkBiUQ3VcyQsjlIhDrhA==",
"version": "8.5.0",
"resolved": "https://registry.npmjs.org/eslint-plugin-vue/-/eslint-plugin-vue-8.5.0.tgz",
"integrity": "sha512-i1uHCTAKOoEj12RDvdtONWrGzjFm/djkzqfhmQ0d6M/W8KM81mhswd/z+iTZ0jCpdUedW3YRgcVfQ37/J4zoYQ==",
"dev": true,
"requires": {
"eslint-utils": "^3.0.0",
......@@ -9628,9 +9628,9 @@
"dev": true
},
"sass": {
"version": "1.49.8",
"resolved": "https://registry.npmjs.org/sass/-/sass-1.49.8.tgz",
"integrity": "sha512-NoGOjvDDOU9og9oAxhRnap71QaTjjlzrvLnKecUJ3GxhaQBrV6e7gPuSPF28u1OcVAArVojPAe4ZhOXwwC4tGw==",
"version": "1.49.9",
"resolved": "https://registry.npmjs.org/sass/-/sass-1.49.9.tgz",
"integrity": "sha512-YlYWkkHP9fbwaFRZQRXgDi3mXZShslVmmo+FVK3kHLUELHHEYrCmL1x6IUjC7wLS6VuJSAFXRQS/DxdsC4xL1A==",
"dev": true,
"requires": {
"chokidar": ">=3.0.0 <4.0.0",
......@@ -10199,9 +10199,9 @@
}
},
"vite": {
"version": "2.8.4",
"resolved": "https://registry.npmjs.org/vite/-/vite-2.8.4.tgz",
"integrity": "sha512-GwtOkkaT2LDI82uWZKcrpRQxP5tymLnC7hVHHqNkhFNknYr0hJUlDLfhVRgngJvAy3RwypkDCWtTKn1BjO96Dw==",
"version": "2.8.6",
"resolved": "https://registry.npmjs.org/vite/-/vite-2.8.6.tgz",
"integrity": "sha512-e4H0QpludOVKkmOsRyqQ7LTcMUDF3mcgyNU4lmi0B5JUbe0ZxeBBl8VoZ8Y6Rfn9eFKYtdXNPcYK97ZwH+K2ug==",
"dev": true,
"requires": {
"esbuild": "^0.14.14",
......
......@@ -28,9 +28,9 @@
"eslint-plugin-import": "^2.25.4",
"eslint-plugin-node": "^11.1.0",
"eslint-plugin-promise": "^5.2.0",
"eslint-plugin-vue": "^8.4.1",
"sass": "1.49.8",
"vite": "^2.8.4",
"eslint-plugin-vue": "^8.5.0",
"sass": "1.49.9",
"vite": "^2.8.6",
"vite-plugin-checker": "^0.4.2",
"vite-plugin-vue2": "^1.9.3",
"vue-template-compiler": "^2.6.14"
......
......@@ -29,6 +29,7 @@ export default {
}
.app-card-hd {
display: flex;
align-items: center;
}
.app-card-hd__title {
flex: 1;
......
......@@ -34,52 +34,59 @@ export function updateClass(data) {
export function deleteClass(data) {
return httpRequest.post('/api/zy-admin/school/class/delete', data)
}
/**
* 获取添加课程列表
*/
export function getAddCourseList(params) {
return httpRequest.get('/api/zy-admin/school/class/add-course', { params })
}
/**
* 添加(删除)课程
*/
export function addCourse(data) {
return httpRequest.post('/api/zy-admin/school/class/add-course', data)
}
/**
* 添加(删除)课程
*/
export function updateCourse(data) {
return httpRequest.post('/api/zy-admin/school/class/update-course', data)
}
/**
* 获取添加教师列表
*/
export function addTeacher(params) {
return httpRequest.get('/api/zy-admin/school/class/add-teacher', { params })
}
/**
* 添加教师
*/
export function addTeachers(data) {
return httpRequest.post('/api/zy-admin/school/class/add-teacher', data)
}
/**
* 获取添加学员列表
*/
export function addStudent(params) {
return httpRequest.get('/api/zy-admin/school/class/add-student', { params })
}
/**
* 添加学员
*/
export function addStudents(data) {
return httpRequest.post('/api/zy-admin/school/class/add-student', data)
}
/**
* 学员导入
*/
export function importStudents(data) {
return httpRequest({
url: '/api/zy-admin/school/class/import-student',
......@@ -90,3 +97,17 @@ export function importStudents(data) {
withCredentials: true
})
}
/**
* 搜索考试
*/
export function searchClassExam(params) {
return httpRequest.get('/api/zy-admin/school/class/add-exam', { params })
}
/**
* 班级考试添加和删除
*/
export function updateClassExam(data) {
return httpRequest.post('/api/zy-admin/school/class/add-exam', data)
}
<template>
<app-card title="考试">
<app-list v-bind="tableOptions" ref="list">
<template #header-aside>
<el-button type="primary" icon="el-icon-plus" @click="visible = true">添加</el-button>
</template>
<template v-slot:table-x="{ row }">
<el-button @click="onRemove(row)" type="danger" size="mini" plain>删除</el-button>
</template>
</app-list>
<class-exam-add :visible.sync="visible" @update="$emit('update')" v-if="visible"></class-exam-add>
</app-card>
</template>
<script>
import ClassExamAdd from './ClassExamAdd.vue'
import { updateClassExam } from '../api'
export default {
props: {
detail: { type: Object, default: () => ({}) }
},
components: { ClassExamAdd },
data() {
return {
visible: false
}
},
computed: {
classId() {
return this.$route.query.id
},
// 列表配置
tableOptions() {
return {
data: this.detail.exams,
columns: [
{ label: 'ID', align: 'center', prop: 'exam_id' },
{ label: '考试名称', align: 'center', prop: 'name' },
{ label: '操作', slots: 'table-x', align: 'center', width: '120', fixed: 'right' }
]
}
}
},
methods: {
// 删除
onRemove(row) {
this.$confirm('你确定要删除此项吗', '确认提示', {
confirmButtonText: '删除',
cancelButtonText: '取消',
type: 'warning'
}).then(() => {
this.handleRemove(row)
})
},
// 删除
handleRemove(row) {
const params = { id: this.classId, exams_id: row.exam_id, type: 'delete' }
// 删除学员
updateClassExam(params).then(res => {
this.$message.success('删除成功')
this.$emit('update')
})
}
}
}
</script>
<template>
<el-dialog title="添加考试" v-bind="$attrs" v-on="$listeners" width="400px" align="center">
<el-form ref="form" :model="form" :rules="rules">
<el-form-item prop="exams_id">
<el-select v-model="form.exams_id" multiple filterable placeholder="请选择考试" style="width: 100%">
<el-option v-for="item in list" :key="item.exam_id" :value="item.exam_id" :label="item.name"></el-option>
</el-select>
</el-form-item>
</el-form>
<template #footer>
<el-button @click="$emit('update:visible', false)">取消</el-button>
<el-button type="primary" @click="handleSubmit">提交</el-button>
</template>
</el-dialog>
</template>
<script>
import { searchClassExam, updateClassExam } from '../api'
export default {
data() {
return {
list: [], // 考试列表
form: { id: '', type: 'add', exams_id: [] },
rules: {
exams_id: [{ required: true, message: '请选择考试', trigger: 'change' }]
}
}
},
computed: {
classId() {
return this.$route.query.id
}
},
beforeMount() {
this.searchClassExam()
},
methods: {
// 获取添加考试列表
searchClassExam() {
// 调用接口
searchClassExam({ id: this.classId }).then(res => {
this.list = res.data
})
},
// 提交
handleSubmit() {
this.$refs.form.validate().then(this.handleAdd)
},
handleAdd() {
const params = Object.assign({}, this.form, { id: this.classId, exams_id: this.form.exams_id.join(',') })
updateClassExam(params).then(res => {
this.$message.success('添加成功')
this.$emit('update:visible', false)
this.$emit('update')
})
}
}
}
</script>
......@@ -8,6 +8,8 @@
<app-card title="课程安排">
<CourseList :detail="detail" :id="id" />
</app-card>
<!-- 考试 -->
<class-exam :detail="detail" @update="getDetail"></class-exam>
<!-- 教务 -->
<app-card title="教师">
<TeachList :detail="detail" :id="id" />
......@@ -18,14 +20,17 @@
</app-card>
</div>
</template>
<script>
import StudentList from '../components/StudentList.vue'
import TeachList from '../components/TeachList.vue'
import CourseList from '../components/CourseList.vue'
import ClassForm from '../components/ClassForm.vue'
import ClassExam from '../components/ClassExam.vue'
import { getClassDetail } from '../api'
export default {
components: { CourseList, StudentList, TeachList, ClassForm },
components: { CourseList, StudentList, TeachList, ClassForm, ClassExam },
data() {
return {
id: '',
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论