[测评系统]--前端(用户答题页面)
优化LAQ、CIAQ、MAQ、API、JAQ产品的答题逻辑,防止客户误操作导致的流程卡点。
5个文件已修改
63 ■■■■ 已修改文件
src/views/exam/components/QuestionEdit.vue 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/exam/components/QuestionJobEdit.vue 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/exam/paper/career_interests.vue 20 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/exam/paper/job.vue 20 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/exam/paper/personality.vue 21 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
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)
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)
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) {
        // 清空本题的选择
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
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) {
        // 清空本题的选择