fix: exam/view 考试试题删除

This commit is contained in:
zty 2024-06-14 13:36:53 +08:00
parent 2f067ff199
commit 24552d5b28
3 changed files with 34 additions and 6 deletions

View File

@ -92,7 +92,8 @@
<div slot="header" style="display: flex;"> <div slot="header" style="display: flex;">
<span>{{ index+1 }}</span> <span>{{ index+1 }}</span>
<el-link style="margin-left: auto; margin-right: 8px" type="primary" @click="handleEdit(item, index)" icon="el-icon-edit"></el-link> <el-link style="margin-left: auto; margin-right: 8px" type="primary" @click="handleEdit(item, index)" icon="el-icon-edit"></el-link>
<el-link style="margin-right: 4px" type="danger" @click="handleDelete(index)" icon="el-icon-delete"></el-link> <el-link style="margin-right: 4px" type="danger" @click="handleDelete(index)" icon="el-icon-remove"></el-link>
<el-link style="margin-right: 4px" type="danger" @click="handleDelete2(item, index)" icon="el-icon-delete"></el-link>
</div> </div>
<div style="font-weight: bold;"> <div style="font-weight: bold;">
<el-tag>{{item.type}}</el-tag> <el-tag>{{item.type}}</el-tag>
@ -113,7 +114,7 @@
</template> </template>
<script> <script>
import { getQuestioncatList, createPaper, UploadPaper } from "@/api/exam"; import { getQuestioncatList, createPaper, UploadPaper, deleteQuestion } from "@/api/exam";
import Questionchoose from "@/views/exam/questionChoose"; import Questionchoose from "@/views/exam/questionChoose";
import { upUrl, upHeaders } from "@/api/file"; import { upUrl, upHeaders } from "@/api/file";
import draggable from 'vuedraggable'; import draggable from 'vuedraggable';
@ -256,6 +257,17 @@
handleDelete(val) { handleDelete(val) {
this.questions.splice(val, 1); this.questions.splice(val, 1);
}, },
handleDelete2(item, val){
deleteQuestion(item.id).then(res=>{
if (res.code == 200) {
this.questions.splice(val, 1);
this.$message({
type: "success",
message: "删除成功!"
});
}
})
},
calScore() { calScore() {
let danxuan_count = 0, let danxuan_count = 0,
duoxuan_count = 0, duoxuan_count = 0,

View File

@ -1,5 +1,5 @@
from django.db import models from django.db import models
from apps.system.models import CommonAModel, CommonBModel from apps.system.models import CommonAModel, CommonBModel, CommonBDModel
from django.contrib.postgres.fields import JSONField from django.contrib.postgres.fields import JSONField
from utils.model import BaseModel from utils.model import BaseModel
from apps.edu.models import Course from apps.edu.models import Course
@ -99,7 +99,7 @@ class Exam(CommonAModel):
return self.name return self.name
class ExamRecord(CommonBModel): class ExamRecord(CommonBDModel):
''' '''
考试记录表 考试记录表
''' '''

View File

@ -11,7 +11,7 @@ from rest_framework.permissions import IsAuthenticated
from rest_framework.exceptions import ParseError from rest_framework.exceptions import ParseError
from openpyxl import Workbook, load_workbook from openpyxl import Workbook, load_workbook
from django.conf import settings from django.conf import settings
from apps.exam.models import Paper, Exam, ExamRecord, AnswerDetail from apps.exam.models import Paper, Exam, ExamRecord, AnswerDetail, PaperQuestion
from django.utils import timezone from django.utils import timezone
from django.db import transaction from django.db import transaction
from rest_framework.serializers import Serializer from rest_framework.serializers import Serializer
@ -68,6 +68,18 @@ class QuestionViewSet(CreateUpdateCustomMixin, ModelViewSet):
filterset_fields = ['level', 'type', 'year', 'questioncat'] filterset_fields = ['level', 'type', 'year', 'questioncat']
search_fields = ['name', 'options', 'resolution'] search_fields = ['name', 'options', 'resolution']
def destroy(self, request, *args, **kwargs):
"""
删除题目
"""
instance = self.get_object()
id = instance.id
# 删除前进行校验,如果存在考试中不允许删除。
paperquestion = PaperQuestion.objects.filter(question_id=id).exists()
if paperquestion:
return Response(('此试题存在考试中不允许删除'),status=403)
instance.delete(soft=False)
return Response(status=204)
@action(methods=['post'], detail=False, url_name='enable_question', perms_map={'post': 'question'}, serializer_class=Serializer) @action(methods=['post'], detail=False, url_name='enable_question', perms_map={'post': 'question'}, serializer_class=Serializer)
def enable(self, request): def enable(self, request):
@ -88,9 +100,13 @@ class QuestionViewSet(CreateUpdateCustomMixin, ModelViewSet):
""" """
ids = request.data.get('ids', []) ids = request.data.get('ids', [])
if request.user.is_superuser: if request.user.is_superuser:
# 删除前进行校验,如果存在考试中不允许删除。
paperquestion = PaperQuestion.objects.filter(question__id__in=ids).exists()
if paperquestion:
return Response(('此试题存在考试中不允许删除'),status=403)
Question.objects.filter(id__in=ids).update(is_deleted=True) Question.objects.filter(id__in=ids).update(is_deleted=True)
return Response() return Response()
return Response({'error':'权限不足'}) return Response({'msg':'权限不足'},status=401)
@action(methods=['get'], detail=False, perms_map={'get':'export_question'}) @action(methods=['get'], detail=False, perms_map={'get':'export_question'})
def export(self, request): def export(self, request):