From 0cefa99d2ae9ba43e60fe3e1beceb000dd186931 Mon Sep 17 00:00:00 2001
From: fuliqi <fuliqi@qq.com>
Date: 星期四, 17 十月 2024 18:31:03 +0800
Subject: [PATCH] 密码失效修改密码,格式校验
---
src/views/exam/paper/edit.vue | 222 +++++++++++++++++++++++++++++++++++++++++--------------
1 files changed, 166 insertions(+), 56 deletions(-)
diff --git a/src/views/exam/paper/edit.vue b/src/views/exam/paper/edit.vue
index 7ac665c..0d92b76 100644
--- a/src/views/exam/paper/edit.vue
+++ b/src/views/exam/paper/edit.vue
@@ -1,11 +1,6 @@
<template>
<div class="app-container">
<el-form :model="form" ref="form" label-width="150px" v-loading="formLoading" :rules="rules">
- <el-form-item label="瀛︾锛�" prop="subjectId" required>
- <el-select v-model="form.subjectId" placeholder="瀛︾">
- <el-option v-for="item in subjects" :key="item.id" :label="item.name" :value="item.id"/>
- </el-select>
- </el-form-item>
<el-form-item label="璇曞嵎绫诲瀷锛�" prop="paperType" required>
<el-select v-model="form.paperType" placeholder="璇曞嵎绫诲瀷">
<el-option v-for="item in paperTypeEnum" :key="item.key" :value="item.key" :label="item.value"></el-option>
@@ -14,8 +9,10 @@
<el-form-item label="璇曞嵎鍚嶇О锛�" prop="name" required>
<el-input style="width: 300px" v-model="form.name"/>
</el-form-item>
+ <!-- 棰樼洰璇︾粏淇℃伅 -->
<el-form-item :key="index" :label="'鏍囬'+(index+1)+'锛�'" required
- v-for="(titleItem,index) in form.questionTitleList" v-show="form.paperType===1">
+ v-for="(titleItem,index) in form.questionTitleList"
+ v-show="form.paperType===1 || (form.paperType ===3 && form.id)">
<el-input v-model="titleItem.title" style="width: 50%"/>
<el-select @change="addQuestionType" v-model="titleItem.questionType" style="margin-left: 20px"
placeholder="璇烽�夋嫨棰樼洰绫诲瀷">
@@ -26,7 +23,8 @@
:value="item.value"
:disabled="addedQuestionTypes.includes(item.value)"/><!-- 绂佺敤宸叉坊鍔犵殑閫夐」 -->
</el-select>
- <el-input-number v-show ="titleItem.questionList.length > 0" v-model="titleItem.eachScore" @change="updateScores(titleItem)" :min="0" :precision="1"
+ <el-input-number v-show="titleItem.questionList.length > 0" v-model="titleItem.eachScore"
+ @change="updateScores(titleItem)" :min="0" :precision="1"
style="margin-left: 20px" placeholder="姣忛鍒嗘暟"></el-input-number>
<el-button type="text" class="link-left" style="margin-left: 20px" size="mini" @click="addQuestion(titleItem)">
娣诲姞棰樼洰
@@ -44,7 +42,7 @@
:controls="false" @change="updateTotalScore"/>
</el-col>
<el-col :span="3">
- <el-button type="text" size="mini" @click="removeQuestion(titleItem,questionItem)">鍒犻櫎
+ <el-button type="text" size="mini" @click="removeQuestion(titleItem,questionIndex)">鍒犻櫎
</el-button>
</el-col>
</el-row>
@@ -72,31 +70,56 @@
<el-radio v-model="form.visibility" :label="'1'">绉佹湁</el-radio>
<el-radio v-model="form.visibility" :label="'2'">鍏紑</el-radio>
</el-form-item>
- <el-form-item v-show="form.paperType ===2 ||form.paperType ===3" :key="index"
- :label="translateQuestionType(item.questionType)+'锛�'" v-for="(item,index) in form.questionSetting">
- <div style="display: flex;">
+ <!-- 棰樼洰閰嶇疆淇℃伅 闅忔満璇曞嵎鎴栨柊寤洪殢搴忔墠鏄剧ず -->
+ <el-form-item v-show="form.paperType ===2 || (form.paperType ===3 && !form.id)" :key="index"
+ :label="translateQuestionType(item.questionType)+'锛�'" v-for="(item,index) in form.questionSetting"
+ >
+ <div>
<span style="margin-right: 10px">{{ '鏍囬' }}</span>
- <el-input v-model="item.title" style="margin-right: 50px;width: 500px"/>
- <span style="margin-right: 10px">{{ '鏁伴噺' }}</span>
- <el-input-number v-model="item.num" :precision="0" :min="0" style="margin-right: 50px"/>
- <span style="margin-right: 10px">{{ '姣忛鍒嗘暟' }}</span>
- <el-input-number v-model="item.score" :min="0" :precision="1"/>
+ <el-input v-model="item.title" style="margin-bottom: 20px;margin-right: 30px;width: 800px"/>
+ <el-button type="primary" @click=addToQuestionSetting(item.questionType)>娣诲姞</el-button>
+
+ <div style="display: flex;margin-bottom: 10px;" :key="index" v-for="(setting,index) in item.settingList">
+ <span style="margin-right: 10px;">{{ '闅惧害' }}</span>
+ <el-rate v-model="setting.difficult" :precision="0" :min="0" style="margin-right: 25px;padding: 5px 0"/>
+ <span style="margin-right: 10px">{{ '绉戠洰' }}</span>
+ <el-select v-model="setting.subjectId" placeholder="瀛︾" style="margin-right: 25px">
+ <el-option v-for="item in subjects" :key="item.id" :label="item.name" :value="item.id"/>
+ </el-select>
+ <span style="margin-right: 10px">{{ '鏁伴噺' }}</span>
+ <el-input-number v-model="setting.num" :precision="0" :min="0" style="margin-right: 25px"/>
+ <span style="margin-right: 10px">{{ '姣忛鍒嗘暟' }}</span>
+ <el-input-number v-model="setting.score" :min="0" :precision="1" style="margin-right: 25px"/>
+ <el-button type="danger" icon="el-icon-delete" circle
+ @click="removeQuestionSetting(item,index)"></el-button>
+ </div>
+
</div>
</el-form-item>
<el-form-item label="鍚堣锛�">
<div style="display: flex;">
<span style="margin-right: 10px">{{ '鏁伴噺锛�' }}</span>
- <span v-if ="form.paperType ===2 || (form.paperType ===3 && !form.id)" style="margin-right: 50px;width: 100px">{{ totalNum }}</span>
- <span v-if ="form.paperType ===1" style="margin-right: 50px;width: 100px">{{ form.num }}</span>
+ <span v-if="form.paperType ===2 || (form.paperType ===3 && !form.id)" style="margin-right: 50px;width: 100px">{{
+ totalNum
+ }}</span>
+ <span v-if="form.paperType ===1 || (form.paperType ===3 && form.id)" style="margin-right: 50px;width: 100px">{{
+ form.num
+ }}</span>
<span style="margin-right: 10px">{{ '鎬诲垎锛�' }}</span>
- <span v-if ="form.paperType ===2 || (form.paperType ===3 && !form.id)" style="width: 100px">{{ totalScore }}</span>
- <span v-if ="form.paperType ===1" style="width: 100px">{{ form.score }}</span>
+ <span v-if="form.paperType ===2 || (form.paperType ===3 && !form.id)" style="width: 100px">{{
+ totalScore
+ }}</span>
+ <span v-if="form.paperType ===1 || (form.paperType ===3 && form.id)" style="width: 100px">{{
+ form.score
+ }}</span>
</div>
</el-form-item>
<el-form-item>
<el-button type="primary" @click="submitForm">鎻愪氦</el-button>
<el-button @click="resetForm">閲嶇疆</el-button>
- <el-button type="success" @click="addTitle" v-show="form.paperType ===1">娣诲姞鏍囬</el-button>
+ <el-button type="success" @click="addTitle" v-show="form.paperType ===1 ||(form.paperType ===3 && form.id)">
+ 娣诲姞鏍囬
+ </el-button>
</el-form-item>
</el-form>
@@ -104,6 +127,11 @@
<el-form :model="questionPage.queryParam" ref="queryForm" :inline="true">
<el-form-item label="ID锛�">
<el-input v-model="questionPage.queryParam.id" clearable></el-input>
+ </el-form-item>
+ <el-form-item label="瀛︾锛�">
+ <el-select v-model="questionPage.queryParam.subjectIdInt" placeholder="瀛︾">
+ <el-option v-for="item in subjects" :key="item.id" :label="item.name" :value="item.id"/>
+ </el-select>
</el-form-item>
<el-form-item>
<el-button type="primary" @click="queryForm">鏌ヨ</el-button>
@@ -146,7 +174,6 @@
return {
form: {
id: null,
- subjectId: null,
paperType: 1,
name: '',
num: 0,
@@ -156,14 +183,46 @@
deductTypeScore: 0,
visibility: '1',
questionSetting: [
- { questionType: 1, title: '鍗曢�夐', score: null, num: null },
- { questionType: 2, title: '澶氶�夐', score: null, num: null },
- { questionType: 3, title: '鍒ゆ柇棰�', score: null, num: null },
- { questionType: 4, title: '濉┖棰�', score: null, num: null },
- { questionType: 5, title: '绠�绛旈', score: null, num: null },
- { questionType: 6, title: '璇煶棰�', score: null, num: null },
- { questionType: 7, title: '璁$畻棰�', score: null, num: null },
- { questionType: 8, title: '鍒嗘瀽棰�', score: null, num: null },
+ {
+ title: '鍗曢�夐',
+ questionType: 1,
+ settingList: [{ difficult: null, score: null, num: null, subjectId: null }]
+ },
+ {
+ title: '澶氶�夐',
+ questionType: 2,
+ settingList: [{ difficult: null, score: null, num: null, subjectId: null }]
+ },
+ {
+ title: '鍒ゆ柇棰�',
+ questionType: 3,
+ settingList: [{ difficult: null, score: null, num: null, subjectId: null }]
+ },
+ {
+ title: '濉┖棰�',
+ questionType: 4,
+ settingList: [{ difficult: null, score: null, num: null, subjectId: null }]
+ },
+ {
+ title: '绠�绛旈',
+ questionType: 5,
+ settingList: [{ difficult: null, score: null, num: null, subjectId: null }]
+ },
+ {
+ title: '璇煶棰�',
+ questionType: 6,
+ settingList: [{ difficult: null, score: null, num: null, subjectId: null }]
+ },
+ {
+ title: '璁$畻棰�',
+ questionType: 7,
+ settingList: [{ difficult: null, score: null, num: null, subjectId: null }]
+ },
+ {
+ title: '鍒嗘瀽棰�',
+ questionType: 8,
+ settingList: [{ difficult: null, score: null, num: null, subjectId: null }]
+ }
],
questionTitleList: []
},
@@ -180,18 +239,12 @@
{ name: '绠�绛旈', value: 5 },
{ name: '璇煶棰�', value: 6 },
{ name: '璁$畻棰�', value: 7 },
- { name: '鍒嗘瀽棰�', value: 8 },
+ { name: '鍒嗘瀽棰�', value: 8 }
],
addedQuestionTypes: [], // 宸叉坊鍔犵殑棰樼洰绫诲瀷
subjects: [],
formLoading: false,
rules: {
- level: [
- { required: true, message: '璇烽�夋嫨骞寸骇', trigger: 'change' }
- ],
- subjectId: [
- { required: true, message: '璇烽�夋嫨瀛︾', trigger: 'change' }
- ],
paperType: [
{ required: true, message: '璇烽�夋嫨璇曞嵎绫诲瀷', trigger: 'change' }
],
@@ -207,6 +260,7 @@
showDialog: false,
queryParam: {
id: null,
+ subjectIdInt: null,
questionType: [],
subjectId: [],
pageIndex: 1,
@@ -228,10 +282,18 @@
examPaperApi.select(id).then(re => {
_this.form = re.data
_this.formLoading = false
+ this.addQuestionType()
})
}
},
methods: {
+ addToQuestionSetting (questionType) {
+ this.form.questionSetting.forEach(item => {
+ if (item.questionType === questionType) {
+ item.settingList.push({ difficult: null, score: null, num: null, subjectId: null })
+ }
+ })
+ },
updateTotalScore () {
this.form.score = 0
this.form.questionTitleList.forEach(titleItem => {
@@ -321,27 +383,39 @@
addQuestion (titleItem) {
this.currentTitleItem = titleItem
this.questionPage.queryParam.questionType = []
+ this.questionPage.queryParam.status = 1
+ if (!titleItem.questionType) {
+ this.$message({
+ message: '璇峰厛閫夋嫨棰樺瀷',
+ type: 'warning'
+ })
+ return
+ }
this.questionPage.queryParam.questionType.push(titleItem.questionType)
this.questionPage.showDialog = true
this.search()
},
- removeTitleItem (titleItem ,index) {
+ removeTitleItem (titleItem, index) {
this.form.questionTitleList.splice(index, 1)
this.form.num = this.form.num - titleItem.questionList.length
- this.updateTotalScore();
+ this.updateTotalScore()
if (!this.form.questionTitleList || this.form.questionTitleList.length === 0) {
this.addedQuestionTypes = []
} else {
this.addQuestionType()
}
},
- removeQuestion (titleItem ,questionIndex) {
- titleItem.questionList.splice(questionIndex ,1)
- this.updateTotalScore();
+ removeQuestion (titleItem, questionIndex) {
+ titleItem.questionList.splice(questionIndex, 1)
+ this.updateTotalScore()
this.form.num = this.form.num - 1
+ },
+ removeQuestionSetting (item, index) {
+ item.settingList.splice(index, 1)
},
queryForm () {
this.questionPage.queryParam.pageIndex = 1
+ this.questionPage.queryParam.subjectId = [this.questionPage.queryParam.subjectIdInt]
this.search()
},
confirmQuestionSelect () {
@@ -355,8 +429,6 @@
this.questionPage.showDialog = false
},
search () {
- this.questionPage.queryParam.subjectId = []
- this.questionPage.queryParam.subjectId.push(this.form.subjectId)
this.questionPage.listLoading = true
questionApi.pageList(this.questionPage.queryParam).then(data => {
const re = data.data
@@ -383,12 +455,46 @@
deductTypeScore: 0,
visibility: '1',
questionSetting: [
- { questionType: 1, title: '鍗曢�夐', score: null, num: null },
- { questionType: 2, title: '澶氶�夐', score: null, num: null },
- { questionType: 3, title: '鍒ゆ柇棰�', score: null, num: null },
- { questionType: 4, title: '濉┖棰�', score: null, num: null },
- { questionType: 5, title: '绠�绛旈', score: null, num: null },
- { questionType: 6, title: '璁$畻棰�', score: null, num: null },
+ {
+ title: '鍗曢�夐',
+ questionType: 1,
+ settingList: [{ difficult: null, score: null, num: null, subjectId: null }]
+ },
+ {
+ title: '澶氶�夐',
+ questionType: 2,
+ settingList: [{ difficult: null, score: null, num: null, subjectId: null }]
+ },
+ {
+ title: '鍒ゆ柇棰�',
+ questionType: 3,
+ settingList: [{ difficult: null, score: null, num: null, subjectId: null }]
+ },
+ {
+ title: '濉┖棰�',
+ questionType: 4,
+ settingList: [{ difficult: null, score: null, num: null, subjectId: null }]
+ },
+ {
+ title: '绠�绛旈',
+ questionType: 5,
+ settingList: [{ difficult: null, score: null, num: null, subjectId: null }]
+ },
+ {
+ title: '璇煶棰�',
+ questionType: 6,
+ settingList: [{ difficult: null, score: null, num: null, subjectId: null }]
+ },
+ {
+ title: '璁$畻棰�',
+ questionType: 7,
+ settingList: [{ difficult: null, score: null, num: null, subjectId: null }]
+ },
+ {
+ title: '鍒嗘瀽棰�',
+ questionType: 8,
+ settingList: [{ difficult: null, score: null, num: null, subjectId: null }]
+ }
],
questionTitleList: []
}
@@ -403,8 +509,10 @@
totalNum () {
if (this.form.paperType === 2 || this.form.paperType === 3) {
let total = 0
- for (let item of this.form.questionSetting) {
- total += parseInt(item.num || 0, 10)
+ for (let settings of this.form.questionSetting) {
+ for (let item of settings.settingList) {
+ total += parseInt(item.num || 0, 10)
+ }
}
this.form.num = total
return total
@@ -415,10 +523,12 @@
totalScore () {
if (this.form.paperType === 2 || this.form.paperType === 3) {
let total = 0
- for (let item of this.form.questionSetting) {
- const num = parseInt(item.num || 0, 10)
- const score = parseFloat(item.score || 0)
- total += num * score
+ for (let settings of this.form.questionSetting) {
+ for (let item of settings.settingList) {
+ const num = parseInt(item.num || 0, 10)
+ const score = parseFloat(item.score || 0)
+ total += num * score
+ }
}
this.form.score = total.toFixed(1)
return total.toFixed(1) // 淇濈暀涓�浣嶅皬鏁�
--
Gitblit v1.8.0