fix : 修改考试中 试题的备注

This commit is contained in:
zty 2024-08-27 18:02:54 +08:00
parent 38ce78b8ee
commit a371730008
7 changed files with 84 additions and 37 deletions

View File

@ -23,7 +23,10 @@
</template> </template>
</el-table-column> </el-table-column>
</el-table> </el-table>
<pagination v-show="total > 0" :total="total" :page.sync="listQuery.page" :limit.sync="listQuery.page_size" <pagination v-show="total > 0"
:total="total"
:page.sync="listQuery.page"
:limit.sync="listQuery.page_size"
@pagination="getList" /> @pagination="getList" />
<el-dialog :visible.sync="dialogVisible" :title="dialogType === 'edit' ? '编辑分类' : '新增分类'"> <el-dialog :visible.sync="dialogVisible" :title="dialogType === 'edit' ? '编辑分类' : '新增分类'">
<el-form :model="questioncat" label-width="80px" label-position="right" :rules="rule1" ref="commonForm"> <el-form :model="questioncat" label-width="80px" label-position="right" :rules="rule1" ref="commonForm">
@ -35,6 +38,7 @@
<el-button type="danger" @click="dialogVisible = false">取消</el-button> <el-button type="danger" @click="dialogVisible = false">取消</el-button>
<el-button type="primary" @click="confirm('commonForm')">确认</el-button> <el-button type="primary" @click="confirm('commonForm')">确认</el-button>
</div> </div>
</el-dialog> </el-dialog>
</div> </div>
</template> </template>
@ -84,21 +88,20 @@ export default {
methods: { methods: {
checkPermission, checkPermission,
getList(query = this.listQuery) { getList() {
this.listLoading = true; this.listLoading = true;
getQuestioncatList(query).then(response => { getQuestioncatList(this.listQuery).then(response => {
this.tableData = response.data.results; this.tableData = response.data.results;
this.total = response.data.count; this.total = response.data.count;
this.listLoading = false; this.listLoading = false;
}); });
}, },
resetFilter() { resetFilter() {
this.search = ""
this.listQuery = listQuery this.listQuery = listQuery
this.getList(); this.getList();
}, },
handleFilter() { handleFilter() {
this.listQuery.page = 1;
this.getList(); this.getList();
}, },
handleAdd() { handleAdd() {

View File

@ -10,8 +10,17 @@
@change="handleFilter"> @change="handleFilter">
<el-option v-for="item in typeOptions" :key="item.key" :label="item.label" :value="item.value" /> <el-option v-for="item in typeOptions" :key="item.key" :label="item.label" :value="item.value" />
</el-select> </el-select>
<el-input v-model="listQuery.search" placeholder="输入题干进行搜索" style="width: 200px;" class="filter-item" <!-- <el-input v-model="listQuery.search" placeholder="备注"
clearable
style="width: 200px;"
class="filter-item"
@keyup.enter.native="handleSearch" /> @keyup.enter.native="handleSearch" />
-->
<el-input v-model="listQuery.search" placeholder="输入题干、备注或创建日期搜索"
style="width: 200px;"
class="filter-item"
clearable
@keyup.enter.native="handleSearch" />
<el-button class="filter-item" type="primary" icon="el-icon-search" @click="handleSearch">搜索</el-button> <el-button class="filter-item" type="primary" icon="el-icon-search" @click="handleSearch">搜索</el-button>
<el-button class="filter-item" type="primary" icon="el-icon-refresh-left" @click="resetFilter">刷新重置 <el-button class="filter-item" type="primary" icon="el-icon-refresh-left" @click="resetFilter">刷新重置
</el-button> </el-button>
@ -103,16 +112,17 @@
<el-tag v-else type="danger"></el-tag> <el-tag v-else type="danger"></el-tag>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="真题年份">
<template slot-scope="scope">
<span v-if="scope.row.year">{{ scope.row.year }}</span>
</template>
</el-table-column>
<el-table-column label="创建日期" sortable='custom' prop="create_time"> <el-table-column label="创建日期" sortable='custom' prop="create_time">
<template slot-scope="scope"> <template slot-scope="scope">
<span>{{ scope.row.create_time }}</span> <span>{{ scope.row.create_time }}</span>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="备注">
<template slot-scope="scope">
<span v-if="scope.row.year">{{ scope.row.year }}</span>
</template>
</el-table-column>
<el-table-column align="center" label="操作"> <el-table-column align="center" label="操作">
<template slot-scope="scope"> <template slot-scope="scope">
<el-button type="primary" size="small" @click="handleDetail(scope)" icon="el-icon-more"></el-button> <el-button type="primary" size="small" @click="handleDetail(scope)" icon="el-icon-more"></el-button>
@ -122,7 +132,10 @@
</template> </template>
</el-table-column> </el-table-column>
</el-table> </el-table>
<pagination v-show="total > 0" :total="total" :page.sync="listQuery.page" :limit.sync="listQuery.page_size" <pagination v-show="total > 0"
:total="total"
:page.sync="listQuery.page"
:limit.sync="listQuery.page_size"
@pagination="getList" /> @pagination="getList" />
<el-dialog title="题目详情" :visible.sync="dialogVisible" width="30%"> <el-dialog title="题目详情" :visible.sync="dialogVisible" width="30%">
<div>{{ question.type }}</div> <div>{{ question.type }}</div>
@ -164,7 +177,9 @@ const listQuery = {
page: 1, page: 1,
page_size: 20, page_size: 20,
search: '', search: '',
questioncat:'' questioncat:'',
year:'',
type:''
}; };
export default { export default {
components: { Pagination }, components: { Pagination },
@ -237,8 +252,8 @@ export default {
}); });
}, },
getQuestioncatList() { getQuestioncatList() {
getQuestioncatList().then(response => { getQuestioncatList({page:0}).then(response => {
this.questioncatData = response.data.results; this.questioncatData = response.data;
}); });
}, },
handleImport(){ handleImport(){

View File

@ -1,18 +0,0 @@
# Generated by Django 3.2.12 on 2024-06-24 03:16
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('exam', '0005_alter_paper_questions'),
]
operations = [
migrations.AlterField(
model_name='paper',
name='paper_types',
field=models.IntegerField(choices=[(10, '押题'), (20, '抽考')], default=10, verbose_name='试卷类型'),
),
]

View File

@ -0,0 +1,28 @@
# Generated by Django 3.2.12 on 2024-08-27 09:31
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('exam', '0005_alter_paper_questions'),
]
operations = [
migrations.AlterField(
model_name='paper',
name='category',
field=models.ManyToManyField(blank=True, null=True, related_name='paper_category', to='exam.Questioncat', verbose_name='题库分类'),
),
migrations.AlterField(
model_name='paper',
name='paper_types',
field=models.CharField(choices=[('押题', '押题'), ('抽考', '抽考')], default='押题', max_length=50, verbose_name='试卷类型'),
),
migrations.AlterField(
model_name='question',
name='year',
field=models.CharField(blank=True, max_length=200, null=True, verbose_name='真题年份'),
),
]

View File

@ -0,0 +1,18 @@
# Generated by Django 3.2.12 on 2024-08-27 09:45
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('exam', '0006_auto_20240827_1731'),
]
operations = [
migrations.AlterField(
model_name='question',
name='year',
field=models.CharField(blank=True, max_length=200, null=True, verbose_name='真题年份和备注'),
),
]

View File

@ -40,7 +40,7 @@ class Question(CommonADModel):
right = JSONField(verbose_name='正确答案') right = JSONField(verbose_name='正确答案')
resolution = models.TextField(verbose_name='解析', blank=True) resolution = models.TextField(verbose_name='解析', blank=True)
enabled = models.BooleanField('是否启用', default=False) enabled = models.BooleanField('是否启用', default=False)
year = models.IntegerField('真题年份', null=True, blank=True) year = models.CharField(max_length=200, verbose_name='真题年份和备注', null=True, blank=True)
class Meta: class Meta:
verbose_name = '题目' verbose_name = '题目'
@ -56,7 +56,7 @@ class Paper(CommonAModel):
('抽考', '抽考'), ('抽考', '抽考'),
) )
paper_types = models.CharField(default='押题', max_length=50,choices=cate_types, verbose_name='试卷类型') paper_types = models.CharField(default='押题', max_length=50, choices=cate_types, verbose_name='试卷类型')
name = models.CharField(max_length=200, verbose_name='名称', unique=True) name = models.CharField(max_length=200, verbose_name='名称', unique=True)
questions = models.ManyToManyField(Question, through='PaperQuestion', null=True, blank=True) questions = models.ManyToManyField(Question, through='PaperQuestion', null=True, blank=True)
limit = models.IntegerField(default=0, verbose_name='限时(分钟)') limit = models.IntegerField(default=0, verbose_name='限时(分钟)')

View File

@ -79,8 +79,9 @@ class QuestionViewSet(CreateUpdateCustomMixin, ModelViewSet):
perms_map = {'get': '*', 'post':'question', 'put':'question', 'delete':'question'} perms_map = {'get': '*', 'post':'question', 'put':'question', 'delete':'question'}
queryset = Question.objects.all() queryset = Question.objects.all()
serializer_class = QuestionSerializer serializer_class = QuestionSerializer
filterset_fields = ['level', 'type', 'year', 'questioncat'] filterset_fields = ['level', 'type', 'questioncat']
search_fields = ['name', 'options', 'resolution'] search_fields = ['name', 'options', 'resolution', 'create_time', 'year']
ordering = ['-create_time']
def destroy(self, request, *args, **kwargs): def destroy(self, request, *args, **kwargs):
""" """