From 2a177a25321e231bb86c88704feb94f4a7130780 Mon Sep 17 00:00:00 2001 From: yj <2077506045@qq.com> Date: 星期四, 11 四月 2024 17:27:52 +0800 Subject: [PATCH] 优化LAQ、CIAQ、MAQ、API、JAQ产品的答题逻辑,防止客户误操作导致的流程卡点。 --- src/views/exam/paper/job.vue | 20 ++++++++- src/views/exam/components/QuestionEdit.vue | 1 src/views/exam/paper/career_interests.vue | 20 ++++++++- src/views/exam/paper/personality.vue | 21 +++++++++- src/views/exam/components/QuestionJobEdit.vue | 1 5 files changed, 54 insertions(+), 9 deletions(-) diff --git a/src/views/exam/components/QuestionEdit.vue b/src/views/exam/components/QuestionEdit.vue index c9ac768..cafdbec 100644 --- a/src/views/exam/components/QuestionEdit.vue +++ b/src/views/exam/components/QuestionEdit.vue @@ -93,6 +93,7 @@ if (this.answer.content === null || this.answer.content.trim() === '') { return } + _this.$emit('callSelected') setTimeout(function () { _this.$emit('callNextSubject') }, 500) diff --git a/src/views/exam/components/QuestionJobEdit.vue b/src/views/exam/components/QuestionJobEdit.vue index bc856bd..b2b5abb 100644 --- a/src/views/exam/components/QuestionJobEdit.vue +++ b/src/views/exam/components/QuestionJobEdit.vue @@ -101,6 +101,7 @@ if (this.answer.content === null || this.answer.content.trim() === '') { return } + _this.$emit('callSelected') setTimeout(function () { _this.$emit('callNextSubject') }, 500) diff --git a/src/views/exam/paper/career_interests.vue b/src/views/exam/paper/career_interests.vue index 0051930..3a79cce 100644 --- a/src/views/exam/paper/career_interests.vue +++ b/src/views/exam/paper/career_interests.vue @@ -16,15 +16,15 @@ <div class="align-center"><span style="font-size: small; float: left">{{$t('examinee')}}{{memberName}}</span><span style="margin-top: 0px;padding-right: 11%">鈼弡{form.name}}鈼�</span></div> <hr style="border : 1px dashed #b3d8ff;" /> <el-form-item :key="itemOrder" label-width="1px"> - <QuestionEdit @callNextSubject="nextSubject" :qType="questionItem.questionType" :question="questionItem" + <QuestionEdit @callSelected="callSelected" @callNextSubject="nextSubject" :qType="questionItem.questionType" :question="questionItem" :answer="answer.answerItems[questionItem.itemOrder-1]" :qLabel="questionItem.serialNumber+'/'+questionItem.serialNumberCount"/> </el-form-item> <hr style="border : 0.5px dashed #b3d8ff;" /> <div style="color: red;font-size: smaller" v-if="partOrder == 1">{{$t('pleaseAnswerCarefullyCiaq')}}</div> <div style="color: red;font-size: smaller" v-if="partOrder != 1">{{$t('pleaseAnswerCarefully')}}</div> <el-row class="do-align-center" v-if="order < problemLength"> - <el-button @click="preSubject" type="warning" v-if ="preDisable" round>{{$t('lastQuestion')}}</el-button> - <el-button @click="nextSubject" type="primary" v-if ="nextDisable" round>{{$t('nextQuestion')}}</el-button> + <el-button @click="preSubject" type="warning" v-if ="preDisable" :disabled="preDisable2" round>{{$t('lastQuestion')}}</el-button> + <el-button @click="nextSubject" type="primary" v-if ="nextDisable" :disabled="nextDisable2" round>{{$t('nextQuestion')}}</el-button> </el-row> <el-row class="do-align-center" v-else> <el-button @click="preSubject" type="warning" v-if ="preDisable" round>{{$t('lastQuestion')}}</el-button> @@ -88,7 +88,9 @@ submitDisable: true, doTime: 0, preDisable: false, + preDisable2: false, nextDisable: false, + nextDisable2: false, partOrder: 0, parts: [], guideTitle: '', @@ -363,6 +365,8 @@ }, nextSubject: function () { let _this = this + _this.preDisable2 = true + _this.nextDisable2 = true _this.isShowGuide(false) let nowPartOrder = _this.partOrder // 璁剧疆涓婁竴棰樼殑缁撴潫鏃堕棿 @@ -416,9 +420,18 @@ } else { this.nextQuestionOrder(nowPartOrder) } + _this.preDisable2 = false + _this.nextDisable2 = false }).catch(e => { _this.reloadPage(e) + _this.preDisable2 = false + _this.nextDisable2 = false }) + }, + callSelected: function () { + let _this = this + _this.preDisable2 = true + _this.nextDisable2 = true }, getSubmitAnswerValue (nowPartOrder) { let _this = this @@ -439,6 +452,7 @@ }, preSubject () { let _this = this + _this.nextDisable2 = false _this.isShowGuide(false) if (_this.order > 0) { // 娓呯┖鏈鐨勯�夋嫨 diff --git a/src/views/exam/paper/job.vue b/src/views/exam/paper/job.vue index 13d0f9b..98b0fe8 100644 --- a/src/views/exam/paper/job.vue +++ b/src/views/exam/paper/job.vue @@ -23,13 +23,13 @@ <el-card class="exampaper-item-box" v-if="titleItem.questionItems.length!==0"> <el-form-item :key="questionItem.itemOrder" class="exam-question-item" label-width="0%" v-for="questionItem in titleItem.questionItems" :id="'question-'+ questionItem.itemOrder"> - <QuestionJobEdit @callNextSubject="callNext" :qType="questionItem.questionType" :question="questionItem" + <QuestionJobEdit @callSelected="callSelected" @callNextSubject="callNext" :qType="questionItem.questionType" :question="questionItem" :answer="answer.answerItems[questionItem.itemOrder-1]" :isReadOnly="autoNext"/> </el-form-item> </el-card> </el-row> <el-row class="do-align-center" v-if="order < form.titleItems.length - 1"> - <el-button @click="preSubject" type="warning" v-if ="preDisable" round>{{$t('lastQuestion')}}</el-button> + <el-button @click="preSubject" type="warning" v-if ="preDisable" :disabled="preDisable2" round>{{$t('lastQuestion')}}</el-button> <el-button @click="nextSubject" type="primary" v-if ="nextDisable" round>{{$t('nextQuestion')}}</el-button> </el-row> <el-row class="do-align-center" v-else> @@ -92,11 +92,13 @@ submitDisable: false, doTime: 0, preDisable: false, + preDisable2: false, nextDisable: false, autoNext: true, isCallTain: false, // 鏄惁瑕佽皟鐢ㄦ嘲鍥藉洟闃熸帴鍙� isLangKaiStyle: false, - totalTitleNum: 0 + totalTitleNum: 0, + selectedCount: 0 } }, created () { @@ -228,6 +230,7 @@ }, nextSubject: function () { let _this = this + _this.preDisable2 = false // 璁剧疆涓婁竴棰樼粨鏉熸椂闂� _this.form.titleItems[_this.order].endTime = _this.formatDate(new Date(), 'yyyy-MM-dd hh:mm:ss') _this.isShowGuide(false) @@ -304,6 +307,17 @@ _this.nextSubject() } }, + // 瑙﹀彂閫変腑閫夐」 + callSelected () { + let _this = this + if (!_this.preDisable) { + return + } + _this.selectedCount += 1 + if (_this.selectedCount % 2 === 0) { + _this.preDisable2 = true + } + }, submitForm () { let _this = this _this.submitDisable = true diff --git a/src/views/exam/paper/personality.vue b/src/views/exam/paper/personality.vue index 4422e2a..9c28327 100644 --- a/src/views/exam/paper/personality.vue +++ b/src/views/exam/paper/personality.vue @@ -16,14 +16,14 @@ <div class="align-center"><span style="font-size: small; float: left">{{$t('examinee')}}{{memberName}}</span><span style="margin-top: 0px;padding-right: 11%">鈼弡{form.name}}鈼�</span></div> <hr style="border : 1px dashed #b3d8ff;" /> <el-form-item :key="itemOrder" label-width="1px"> - <QuestionEdit @callNextSubject="nextSubject" :qType="questionItem.questionType" :question="questionItem" + <QuestionEdit @callSelected="callSelected" @callNextSubject="nextSubject" :qType="questionItem.questionType" :question="questionItem" :answer="answer.answerItems[questionItem.itemOrder-1]" :qLabel="itemOrder+'/'+itemSize"/> </el-form-item> <hr style="border : 0.5px dashed #b3d8ff;" /> <div style="color: red;font-size: smaller">{{$t('pleaseAnswerCarefully')}}</div> <el-row class="do-align-center" v-if="order < problemLength"> - <el-button @click="preSubject" type="warning" v-if ="preDisable" round>{{$t('lastQuestion')}}</el-button> - <el-button @click="nextSubject" type="primary" v-if ="nextDisable" round>{{$t('nextQuestion')}}</el-button> + <el-button @click="preSubject" type="warning" v-if ="preDisable" :disabled="preDisable2" round>{{$t('lastQuestion')}}</el-button> + <el-button @click="nextSubject" type="primary" v-if ="nextDisable" :disabled="nextDisable2" round>{{$t('nextQuestion')}}</el-button> </el-row> <el-row class="do-align-center" v-else> <el-button @click="preSubject" type="warning" v-if ="preDisable" round>{{$t('lastQuestion')}}</el-button> @@ -88,7 +88,9 @@ submitDisable: true, doTime: 0, preDisable: false, + preDisable2: false, nextDisable: false, + nextDisable2: false, partOrder: 0, parts: [], guideTitle: '', @@ -327,6 +329,8 @@ }, nextSubject: function () { let _this = this + _this.preDisable2 = true + _this.nextDisable2 = true _this.isShowGuide(false) let nowPartOrder = _this.partOrder // 璁剧疆涓婁竴棰樼殑缁撴潫鏃堕棿 @@ -357,6 +361,7 @@ } this.answer.answerItems[_this.order].readOnly = true let answerSubmit = _this.getSubmitAnswerValue(nowPartOrder) + // 宸茬粡绛斿埌浜嗘渶鍚庝竴棰樹簡,涓嶇敤鑷姩璺冲埌涓嬩竴棰� if (this.order + 1 > this.problemLength) { this.submitDisable = false @@ -388,12 +393,21 @@ } else { this.nextQuestionOrder(nowPartOrder) } + _this.preDisable2 = false + _this.nextDisable2 = false }).catch(e => { if (_this.isNotEmpty(loading)) { loading.close() } _this.reloadPage(e) + _this.preDisable2 = false + _this.nextDisable2 = false }) + }, + callSelected: function () { + let _this = this + _this.preDisable2 = true + _this.nextDisable2 = true }, getSubmitAnswerValue (nowPartOrder) { let _this = this @@ -413,6 +427,7 @@ }, preSubject () { let _this = this + _this.nextDisable2 = false _this.isShowGuide(false) if (_this.order > 0) { // 娓呯┖鏈鐨勯�夋嫨 -- Gitblit v1.9.1