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

代码更新

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