|
|
@@ -83,34 +83,69 @@
|
|
|
<el-radio label="1" :disabled="!(!!form.ti_ku_id_)">开启</el-radio>
|
|
|
</el-radio-group>
|
|
|
</el-form-item>
|
|
|
+ <el-form-item v-if="form.sui_ji_chou_ti_ === '1'">
|
|
|
+ <template slot="label">
|
|
|
+ 抽题方式
|
|
|
+ <el-tooltip
|
|
|
+ effect="dark"
|
|
|
+ content="随机抽题的依据。"
|
|
|
+ placement="top"
|
|
|
+ >
|
|
|
+ <i class="el-icon-question question-icon">:</i>
|
|
|
+ </el-tooltip>
|
|
|
+ </template>
|
|
|
+ <el-radio-group v-model="form.chou_ti_fang_shi_" :disabled="isDisabled">
|
|
|
+ <el-radio label="1">按照题型分类抽题</el-radio>
|
|
|
+ <el-radio label="2">按照难度分类抽题</el-radio>
|
|
|
+ </el-radio-group>
|
|
|
+ </el-form-item>
|
|
|
<el-form-item v-if="form.sui_ji_chou_ti_ === '1'" class="handrand">
|
|
|
<template slot="label">
|
|
|
抽题规则
|
|
|
<el-tooltip
|
|
|
effect="dark"
|
|
|
- content="设置每类题型的抽题数量,相同题型相同分值可以自由选择抽题数量,相同题型不同分值只能全抽或不抽。"
|
|
|
+ :content="ruleContent"
|
|
|
placement="top"
|
|
|
>
|
|
|
<i class="el-icon-question question-icon">:</i>
|
|
|
</el-tooltip>
|
|
|
</template>
|
|
|
- <div v-for="item in handList" :key="item.itemType" class="hand-item">
|
|
|
- <template v-if="item.list.length>0">
|
|
|
- <span>{{ item.itemType }}:</span>
|
|
|
- <el-input-number
|
|
|
- v-model="item.questionNumber"
|
|
|
- style="width:120px"
|
|
|
- :min="0"
|
|
|
- :max="item.list.length"
|
|
|
- :precision="0"
|
|
|
- :disabled="form.sui_ji_chou_ti_ === '0' || isDisabled"
|
|
|
- placeholder="请输入抽题数量"
|
|
|
- :step="item.step"
|
|
|
- step-strictly
|
|
|
- />
|
|
|
- </template>
|
|
|
-
|
|
|
- </div>
|
|
|
+ <template v-if="form.chou_ti_fang_shi_==='1'">
|
|
|
+ <div v-for="item in handList" :key="item.itemType" class="hand-item">
|
|
|
+ <template v-if="item.list.length>0">
|
|
|
+ <span>{{ item.itemType }}:</span>
|
|
|
+ <el-input-number
|
|
|
+ v-model="item.questionNumber"
|
|
|
+ style="width:120px"
|
|
|
+ :min="0"
|
|
|
+ :max="item.list.length"
|
|
|
+ :precision="0"
|
|
|
+ :disabled="form.sui_ji_chou_ti_ === '0' || isDisabled"
|
|
|
+ placeholder="请输入抽题数量"
|
|
|
+ :step="item.step"
|
|
|
+ step-strictly
|
|
|
+ />
|
|
|
+ </template>
|
|
|
+ </div>
|
|
|
+ </template>
|
|
|
+ <template v-if="form.chou_ti_fang_shi_==='2'">
|
|
|
+ <div v-for="item in levelList" :key="item.itemType" class="hand-item">
|
|
|
+ <template v-if="item.list.length>0">
|
|
|
+ <span>{{ item.label }}:</span>
|
|
|
+ <el-input-number
|
|
|
+ v-model="item.questionNumber"
|
|
|
+ style="width:120px"
|
|
|
+ :min="0"
|
|
|
+ :max="item.list.length"
|
|
|
+ :precision="0"
|
|
|
+ :disabled="form.sui_ji_chou_ti_ === '0' || isDisabled"
|
|
|
+ placeholder="请输入抽题数量"
|
|
|
+ :step="item.step"
|
|
|
+ step-strictly
|
|
|
+ />
|
|
|
+ </template>
|
|
|
+ </div>
|
|
|
+ </template>
|
|
|
|
|
|
</el-form-item>
|
|
|
<el-form-item prop="xian_kao_shi_jian">
|
|
|
@@ -351,6 +386,14 @@ export default {
|
|
|
{ itemType: '填空题', questionNumber: 0, list: [], step: 1 },
|
|
|
{ itemType: '简答题', questionNumber: 0, list: [], step: 1 }
|
|
|
],
|
|
|
+ levelList: [
|
|
|
+ { label: '未知', itemType: '0', questionNumber: 0, list: [], step: 1 },
|
|
|
+ { label: '易', itemType: '1', questionNumber: 0, list: [], step: 1 },
|
|
|
+ { label: '偏易', itemType: '2', questionNumber: 0, list: [], step: 1 },
|
|
|
+ { label: '适中', itemType: '3', questionNumber: 0, list: [], step: 1 },
|
|
|
+ { label: '偏难', itemType: '4', questionNumber: 0, list: [], step: 1 },
|
|
|
+ { label: '难', itemType: '5', questionNumber: 0, list: [], step: 1 }
|
|
|
+ ],
|
|
|
userList,
|
|
|
examTypeOptions,
|
|
|
deptList: deptList.filter((i) => i.depth === 4),
|
|
|
@@ -384,7 +427,8 @@ export default {
|
|
|
ti_mu_zong_shu_: 0,
|
|
|
sui_ji_ti_shu_: [],
|
|
|
hours: 2,
|
|
|
- minutes: 30
|
|
|
+ minutes: 30,
|
|
|
+ chou_ti_fang_shi_: '1'
|
|
|
},
|
|
|
pickerOptions: {
|
|
|
disabledDate (time) {
|
|
|
@@ -427,6 +471,17 @@ export default {
|
|
|
}
|
|
|
}
|
|
|
},
|
|
|
+ computed: {
|
|
|
+ ruleContent () {
|
|
|
+ switch (this.form.chou_ti_fang_shi_) {
|
|
|
+ case '1':
|
|
|
+ return '设置每类题型的抽题数量,相同题型相同分值可以自由选择抽题数量,相同题型不同分值只能全抽或不抽。'
|
|
|
+ case '2':
|
|
|
+ return '设置每种难度的抽题数量,相同难度相同分值可以自由选择抽题数量,相同难度不同分值只能全抽或不抽。未设置难度的题目会自动过滤。'
|
|
|
+ }
|
|
|
+ return '设置每类题型的抽题数量,相同题型相同分值可以自由选择抽题数量,相同题型不同分值只能全抽或不抽。'
|
|
|
+ }
|
|
|
+ },
|
|
|
watch: {
|
|
|
visible: {
|
|
|
handler: function (val, oldVal) {
|
|
|
@@ -450,23 +505,34 @@ export default {
|
|
|
this.getExamData()
|
|
|
},
|
|
|
methods: {
|
|
|
- // 题型分类
|
|
|
+ // 分类计算
|
|
|
getHandList (data) {
|
|
|
// 确定每种类型的题目
|
|
|
this.handList.forEach(hand => {
|
|
|
hand.list = data.filter(item => item.ti_xing_ === hand.itemType)
|
|
|
})
|
|
|
+ // 确定每种难度的题目
|
|
|
+ this.levelList.forEach(level => {
|
|
|
+ level.list = data.filter(item => item.nan_du_ === level.itemType)
|
|
|
+ })
|
|
|
|
|
|
if (this.$utils.isEmpty(this.id)) {
|
|
|
// 设置每种类型题目的默认题数
|
|
|
this.handList.forEach(hand => {
|
|
|
hand.questionNumber = hand.list.length
|
|
|
})
|
|
|
+ // 设置每种难度题目的默认题数
|
|
|
+ this.levelList.forEach(level => {
|
|
|
+ level.questionNumber = level.list.length
|
|
|
+ })
|
|
|
} else {
|
|
|
if (!this.isFirst) {
|
|
|
this.handList.forEach(hand => {
|
|
|
hand.questionNumber = hand.list.length
|
|
|
})
|
|
|
+ this.levelList.forEach(level => {
|
|
|
+ level.questionNumber = level.list.length
|
|
|
+ })
|
|
|
} else {
|
|
|
this.isFirst = false
|
|
|
}
|
|
|
@@ -479,6 +545,13 @@ export default {
|
|
|
hand.step = isSame ? 1 : hand.list.length
|
|
|
}
|
|
|
})
|
|
|
+ // 设置每种难度题目的步数
|
|
|
+ this.levelList.forEach(level => {
|
|
|
+ if (level.list.length > 0) {
|
|
|
+ const isSame = level.list.every(item => item.fen_zhi_ === level.list[0].fen_zhi_)
|
|
|
+ level.step = isSame ? 1 : level.list.length
|
|
|
+ }
|
|
|
+ })
|
|
|
},
|
|
|
changeLimit (e, type, defaultValue) {
|
|
|
this.form[type] = e === '1' ? defaultValue : '不限'
|
|
|
@@ -504,7 +577,7 @@ export default {
|
|
|
this.randButtonDisabled = true
|
|
|
this.$message.info('非未发布状态的考试仅可修改限考时间!')
|
|
|
}
|
|
|
- const sql = `select id_, create_by_, ti_ku_id_, guan_lian_id_, kao_shi_ming_chen, kao_shi_lei_xing_, chuang_jian_shi_j, fa_bu_shi_jian_, fa_bu_ren_, xian_kao_shi_jian, xian_kao_ci_shu_, kao_shi_shi_chang, can_kao_ren_yuan_, zhuang_tai_, da_biao_zhan_bi_, ji_fen_fang_shi_, kao_shi_miao_shu_, yun_xu_bao_ming_, sui_ji_chou_ti_, sui_ji_ti_shu_,chou_ti_zong_fen_,ti_mu_zong_shu_ from t_exams where id_ = '${this.id}'`
|
|
|
+ const sql = `select id_, create_by_, ti_ku_id_, guan_lian_id_, kao_shi_ming_chen, kao_shi_lei_xing_, chuang_jian_shi_j, fa_bu_shi_jian_, fa_bu_ren_, xian_kao_shi_jian, xian_kao_ci_shu_, kao_shi_shi_chang, can_kao_ren_yuan_, zhuang_tai_, da_biao_zhan_bi_, ji_fen_fang_shi_, kao_shi_miao_shu_, yun_xu_bao_ming_, sui_ji_chou_ti_, sui_ji_ti_shu_,chou_ti_zong_fen_,ti_mu_zong_shu_,chou_ti_fang_shi_ from t_exams where id_ = '${this.id}'`
|
|
|
this.$common.request('sql', sql).then((res) => {
|
|
|
const { data = [] } = res.variables || {}
|
|
|
if (!data.length) {
|
|
|
@@ -525,9 +598,15 @@ export default {
|
|
|
this.form = data[0]
|
|
|
if (this.form.sui_ji_chou_ti_ === '1') {
|
|
|
this.form.sui_ji_ti_shu_ = this.form.sui_ji_ti_shu_.split(',')
|
|
|
- this.form.sui_ji_ti_shu_.forEach((item, index) => {
|
|
|
- this.handList[index].questionNumber = item
|
|
|
- })
|
|
|
+ if (this.form.chou_ti_fang_shi_ === '1') {
|
|
|
+ this.form.sui_ji_ti_shu_.forEach((item, index) => {
|
|
|
+ this.handList[index].questionNumber = item
|
|
|
+ })
|
|
|
+ } else if (this.form.chou_ti_fang_shi_ === '2') {
|
|
|
+ this.form.sui_ji_ti_shu_.forEach((item, index) => {
|
|
|
+ this.levelList[index].questionNumber = item
|
|
|
+ })
|
|
|
+ }
|
|
|
}
|
|
|
})
|
|
|
},
|
|
|
@@ -550,24 +629,36 @@ export default {
|
|
|
this.form.ti_mu_zong_shu_ = 0
|
|
|
if (this.form.sui_ji_chou_ti_ === '1') {
|
|
|
// 计算总分 总数量
|
|
|
- this.handList.forEach(item => {
|
|
|
- if (item.list.length > 0) {
|
|
|
- this.form.sui_ji_ti_shu_.push(item.questionNumber)
|
|
|
- this.form.ti_mu_zong_shu_ += item.questionNumber
|
|
|
- this.form.chou_ti_zong_fen_ += item.list.slice(0, item.questionNumber).reduce((pre, cur) => {
|
|
|
- return pre + +cur.fen_zhi_
|
|
|
- }, 0)
|
|
|
- } else {
|
|
|
- this.form.sui_ji_ti_shu_.push(0)
|
|
|
- }
|
|
|
- })
|
|
|
+ if (this.form.chou_ti_fang_shi_ === '1') {
|
|
|
+ this.handList.forEach(item => {
|
|
|
+ if (item.list.length > 0) {
|
|
|
+ this.form.sui_ji_ti_shu_.push(item.questionNumber)
|
|
|
+ this.form.ti_mu_zong_shu_ += item.questionNumber
|
|
|
+ this.form.chou_ti_zong_fen_ += item.list.slice(0, item.questionNumber).reduce((pre, cur) => {
|
|
|
+ return pre + +cur.fen_zhi_
|
|
|
+ }, 0)
|
|
|
+ } else {
|
|
|
+ this.form.sui_ji_ti_shu_.push(0)
|
|
|
+ }
|
|
|
+ })
|
|
|
+ } else if (this.form.chou_ti_fang_shi_ === '2') {
|
|
|
+ this.levelList.forEach(item => {
|
|
|
+ if (item.list.length > 0) {
|
|
|
+ this.form.sui_ji_ti_shu_.push(item.questionNumber)
|
|
|
+ this.form.ti_mu_zong_shu_ += item.questionNumber
|
|
|
+ this.form.chou_ti_zong_fen_ += item.list.slice(0, item.questionNumber).reduce((pre, cur) => {
|
|
|
+ return pre + +cur.fen_zhi_
|
|
|
+ }, 0)
|
|
|
+ } else {
|
|
|
+ this.form.sui_ji_ti_shu_.push(0)
|
|
|
+ }
|
|
|
+ })
|
|
|
+ }
|
|
|
|
|
|
if (this.form.ti_mu_zong_shu_ === 0) {
|
|
|
return this.$message.warning('请填写需要抽取的题目数量!')
|
|
|
}
|
|
|
}
|
|
|
- this.form.chou_ti_zong_fen_ += ''
|
|
|
- this.form.ti_mu_zong_shu_ += ''
|
|
|
this.form.sui_ji_ti_shu_ = this.form.sui_ji_ti_shu_.join(',')
|
|
|
|
|
|
const { isTimeLimit, xian_kao_shi_jian = '' } = this.form || {}
|