提交 f9d72fca authored 作者: matian's avatar matian

代码更新

上级 c8c0fca7
......@@ -6,3 +6,21 @@ import httpRequest from '@/utils/axios'
export function getKnowledge(params) {
return httpRequest.get('/admin/v1/knowledge-point/search/x1', { params })
}
/**
* 获取试卷列表
*/
export function getPaperList(params) {
return httpRequest.get('/api/qbs/admin/v1/question-papers/x1', { params })
}
/**
* 新建试卷
*/
export function createNewPaper(data) {
return httpRequest.post('/api/qbs/admin/v1/question-paper', data)
}
/**
* 获取试卷分类
*/
export function getPaperCategory(params) {
return httpRequest.get(`/api/qbs/admin/v1/question-category/tree/${params}`, { params })
}
<template>
<div>
<div v-for="(item, index) in questionList" :key="index">
<!-- 简单题类型 [1,2,3,4] :根据判断题的类型渲染 -->
<!-- 简单题类型 [1,2,3,6] :根据判断题的类型渲染 -->
<el-card class="boxCard" v-if="signQuestionTypes.includes(item.question_type)" :id="`page${index}`">
<div class="boxHeader">
<div class="headerLeft">
......@@ -40,7 +40,7 @@
</div>
</el-card>
<!-- 复杂题类型 [5,6] :根据判断题的类型渲染 复杂利用上面的头部,内部重新写个页面渲染复杂题中的小题-->
<!-- 复杂题类型 [5,7,8] :根据判断题的类型渲染 复杂利用上面的头部,内部重新写个页面渲染复杂题中的小题-->
<el-card class="boxCard" v-if="intricacyQuestionTypes.includes(item.question_type)" :id="`page${index}`">
<div class="boxHeader">
<div class="headerLeft">
......@@ -61,7 +61,7 @@
<div class="headerRight">
<div class="scoreValue">
<span class="lableScore">分数:</span>
<el-input v-model="item.score"></el-input>
<el-input :value="getSubScore(item)"></el-input>
</div>
</div>
</div>
......@@ -110,7 +110,13 @@ export default {
intricacyQuestionTypes: [5, 7, 8] // 复杂题类型
}
},
methods: {
// 根据小题的分数计算大题的分数,以至于监听分数变化 s.score*1 是为了下次修改,返回的是字符串变成number类型才可以计算
getSubScore(item) {
return item?.list?.map(s => parseInt(s.score) * 1).reduce((pre, em) => pre + em, 0)
},
// 返回点击题号的offsettop
handleScroll(key) {
const PageId = document.querySelector('#page' + key)
......@@ -143,7 +149,7 @@ export default {
justify-content: space-around;
.titleType {
width: 200px;
color: #c01c40;
color: #1890ff;
}
}
.checkInpt .title {
......@@ -184,7 +190,7 @@ export default {
display: flex;
align-items: center;
.boxAnswer {
color: #c01c40;
color: #1890ff;
font-size: 14px;
}
}
......@@ -206,7 +212,7 @@ export default {
flex: 0.8;
.intricacyTitle {
width: 200px;
color: #c01c40;
color: #949091;
}
}
.intricacyScoreValue {
......@@ -227,16 +233,10 @@ export default {
display: flex;
align-items: center;
.intricacyAnswer {
color: #c01c40;
color: #1890ff;
font-size: 14px;
}
}
}
}
::v-deep .el-checkbox__label {
color: #c01c40;
}
input {
-webkit-appearance: checkbox;
}
</style>
......@@ -15,7 +15,8 @@
</template>
<script>
const paperMode = [
import { getPaperList, getPaperCategory } from '../api'
const paperType = [
{ label: '选题组卷', value: 0 },
{ label: '自动组卷', value: 1 }
]
......@@ -23,25 +24,35 @@ export default {
data() {
return {
visible: false,
multipleSelection: [] // 选择项
multipleSelection: [], // 选择项
paperCategoryList: []
}
},
computed: {
tableOptions() {
return {
// remote: { httpRequest: getAppList },
remote: {
httpRequest: getPaperList,
params: {
id: '',
paper_title: '',
paper_type: '',
paper_labels: '',
paper_category: ''
}
},
filters: [
{
type: 'input',
prop: 'paperName',
prop: 'paper_title',
placeholder: '请输入试卷名称',
label: '试卷名称:'
},
{
type: 'select',
prop: 'paperMode',
prop: 'paper_type',
placeholder: '请选择组卷模式',
options: paperMode,
options: paperType,
labelKey: 'label',
valueKey: 'value',
label: '组卷模式:'
......@@ -57,8 +68,8 @@ export default {
type: 'select',
prop: 'paperType',
placeholder: '请选择试卷分类',
options: this.natureList,
labelKey: 'name',
options: this.initTree,
labelKey: 'category_name',
valueKey: 'id',
label: '试卷分类:'
}
......@@ -66,30 +77,40 @@ export default {
columns: [
{ type: 'selection', minWidth: '50px', fixed: 'left' },
{ type: 'index', label: '序号', minWidth: '50px', fixed: 'left' },
{ label: '组卷模式', prop: 'paperMode' },
{ label: '试卷分类', prop: 'paperType' },
{ label: '试卷名称', prop: 'paperName' },
{ label: '总分', prop: 'paperTotalScore' },
{ label: '组卷模式', prop: 'paper_type' },
{ label: '试卷分类', prop: 'paper_category' },
{ label: '试卷名称', prop: 'paper_title' },
{ label: '总分', prop: 'paper_total_score' },
{ label: '及格分数', prop: 'paperPassScore' },
{ label: '更新人', prop: 'update_name' },
{ label: '更新时间', prop: 'update_time' },
{ label: '更新人', prop: 'operator.username' },
{ label: '更新时间', prop: 'updated_at' },
{ label: '操作', slots: 'table-x', align: 'right', width: 150 }
],
data: [
{
paperMode: '选题组卷',
paperType: '测试',
paperName: '期中考试',
paperTotalScore: 100,
paperPassScore: 60,
update_name: '张三',
update_time: '2022-02-18'
}
]
// data: [
// {
// paperMode: '选题组卷',
// paperType: '测试',
// paperName: '期中考试',
// paperTotalScore: 100,
// paperPassScore: 60,
// update_name: '张三',
// update_time: '2022-02-18'
// }
// ]
}
}
},
mounted() {
// 获取试卷分类
this.getPaperCategory()
},
methods: {
getPaperCategory() {
getPaperCategory('x1').then(res => {
this.paperCategoryList = res.data
})
},
// 新建试卷
handleCreatePaper() {
this.$router.push({
......
......@@ -4,36 +4,35 @@
<el-col :span="12">
<el-form-item
label="试卷名称"
prop="paperName"
prop="paper_title"
:rules="[{ message: '请输入试卷名称', required: true, trigger: 'blur' }]"
>
<el-input v-model="form.paperName" placeholder="请输入试卷名称" />
<el-input v-model="form.paper_title" placeholder="请输入试卷名称" />
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="12">
<el-form-item label="试卷用途" prop="paperUse">
<el-radio-group v-model="form.paperUse">
<el-radio label="0">考试</el-radio>
<el-radio label="1">作业</el-radio>
<el-radio label="2" v-if="form.paperUse !== '0'">课后作业</el-radio>
<el-radio label="3" v-if="form.paperUse !== '0'">课程测试</el-radio>
<el-col :span="18">
<el-form-item label="试卷用途" prop="paper_uses">
<el-radio-group v-model="form.paper_uses">
<el-radio :label="1">考试</el-radio>
<el-radio :label="2">课后作业</el-radio>
<el-radio :label="3">课程测试</el-radio>
</el-radio-group>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="12">
<el-form-item label="标签" prop="label">
<el-input v-model="form.label" placeholder="请输入试卷标签" />
<el-form-item label="标签" prop="paper_labels">
<el-input v-model="form.paper_labels" placeholder="请输入试卷标签" />
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="12">
<el-form-item label="试卷分类" prop="classification">
<el-select v-model="form.classification" placeholder="请选择试卷分类" style="width: 100%">
<el-form-item label="试卷分类" prop="paper_category">
<el-select v-model="form.paper_category" placeholder="请选择试卷分类" style="width: 100%">
<el-option v-for="item in options" :key="item.value" :label="item.label" :value="item.value"> </el-option>
</el-select>
</el-form-item>
......@@ -41,8 +40,8 @@
</el-row>
<el-row>
<el-col :span="12">
<el-form-item label="组卷模式" prop="paperMode">
<el-select v-model="form.paperMode" placeholder="请选择组卷模式" style="width: 100%">
<el-form-item label="组卷模式" prop="paper_type">
<el-select v-model="form.paper_type" placeholder="请选择组卷模式" style="width: 100%">
<el-option label="自动组卷" :value="0"> </el-option>
<el-option label="选题组卷" :value="1"> </el-option>
</el-select>
......@@ -53,11 +52,11 @@
label="试题顺序"
:rules="[{ message: '请选择试题顺序', required: true, trigger: 'change' }]"
style="padding-left: 20px"
v-if="form.paperMode === 1"
v-if="form.paper_type === 1"
>
<el-radio-group v-model="form.order">
<el-radio label="0">固定</el-radio>
<el-radio label="1">随机</el-radio>
<el-radio-group v-model="form.paper_question_order">
<el-radio :label="1">固定</el-radio>
<el-radio :label="2">随机</el-radio>
</el-radio-group>
</el-form-item>
</el-col>
......@@ -66,13 +65,13 @@
<el-col :span="12">
<el-form-item
label="试卷总分"
prop="paperTotalScore"
prop="paper_total_score"
:rules="[{ message: '请输入试卷总分', required: true, trigger: 'blur' }]"
>
<el-input-number
:controls="false"
:step="1"
v-model="form.paperTotalScore"
v-model="form.paper_total_score"
:min="0"
:max="200"
placeholder="请输入试卷总分"
......@@ -84,14 +83,14 @@
<el-col :span="10">
<el-form-item
label="及格分数"
prop="paperPassScore"
prop="pass_score"
:rules="[{ message: '请输入及格分数', required: true, trigger: 'blur' }]"
style="padding-left: 20px"
>
<el-input-number
:controls="false"
:step="1"
v-model="form.paperPassScore"
v-model="form.pass_score"
:min="0"
:max="200"
placeholder="请输入及格分数"
......@@ -105,11 +104,11 @@
<el-col :span="12">
<el-form-item
label="考试时长"
prop="examDuration"
prop="paper_times"
:rules="[{ message: '请输入考试时长', required: true, trigger: 'blur' }]"
>
<el-input-number
v-model="form.examDuration"
v-model="form.paper_times"
:controls="false"
:min="1"
:max="150"
......@@ -123,12 +122,12 @@
<el-col :span="12">
<el-form-item
label="最短交卷时长"
prop="minSubtime"
prop="minimum_paper_handing_time"
:rules="[{ message: '请输入考试时长', required: true, trigger: 'blur' }]"
style="padding-left: 20px"
>
<el-input-number
v-model="form.minSubtime"
v-model="form.minimum_paper_handing_time"
:controls="false"
:min="1"
:max="150"
......@@ -143,17 +142,17 @@
<el-row>
<el-col :span="12">
<el-form-item label="多次考试" :rules="[{ required: true, trigger: 'blur' }]">
<el-radio-group v-model="form.moreExam">
<el-radio label="0"></el-radio>
<el-radio label="1"></el-radio>
<el-radio-group v-model="form.is_multiple_exams">
<el-radio :label="0"></el-radio>
<el-radio :label="1"></el-radio>
</el-radio-group>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="多次考试成绩计算规则" style="padding-left: 20px" v-if="form.moreExam === '1'">
<el-radio-group v-model="form.rule">
<el-radio label="0">平均计算法</el-radio>
<el-radio label="1">最高得分法</el-radio>
<el-radio-group v-model="form.multiple_test_score_rule">
<el-radio :label="1">平均计算法</el-radio>
<el-radio :label="2">最高得分法</el-radio>
</el-radio-group>
</el-form-item>
</el-col>
......@@ -169,29 +168,30 @@
</template>
<script>
import { createNewPaper } from '../api'
export default {
data() {
return {
labelPosition: 'left',
btnDisabled: false,
options: [
paper_category: [
{ label: '测试', value: 1 },
{ label: '考试', value: 2 },
{ label: '模拟', value: 3 }
],
form: {
paperName: '', // 试卷名称
paperUse: '0', // 试卷用途
label: '', // 标签
classification: 1, // 试卷分类
paperMode: 0, // 组卷模式
order: '0', // 试题顺序
paperTotalScore: undefined, // 试卷总分
paper_title: '', // 试卷名称
paper_uses: 1, // 试卷用途
paper_labels: '', // 标签
paper_category: 1, // 试卷分类
paper_type: 1, // 组卷模式
paper_question_order: 0, // 试题顺序
paper_total_score: undefined, // 试卷总分
paperPassScore: undefined, // 及格分数
examDuration: undefined, // 考试时长
minSubtime: undefined, // 最短交卷时长
moreExam: '1', // 多次考试
rule: '0' // 多次考试成绩计算规则
paper_times: undefined, // 考试时长
minimum_paper_handing_time: undefined, // 最短交卷时长
is_multiple_exams: 1, // 多次考试
multiple_test_score_rule: 1 // 多次考试成绩计算规则
}
}
},
......@@ -230,6 +230,9 @@ export default {
confirmButtonText: '确定'
}).then(() => {
history.go(-1)
createNewPaper(Object.assign(this.form, { project_prefix: 'x1' })).then(res => {
this.$message.sucess('新建试卷成功')
})
})
} else {
setTimeout(() => {
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论