Parcourir la source

修改问卷保存传参和按题填写跳转逻辑

lm il y a 1 semaine
Parent
commit
815eed54ae

+ 8 - 2
src/views/appView/QuestionnaireCommit.vue

@@ -28,8 +28,8 @@ import { useStore } from 'vuex'
 import AppQuestionnaireQuestionList from '@/components/AppQuestionnaireQuestionList.vue';
 
 import {getEvaluationProcessMsgApi} from '@/api/selfQuestionnaireProcess'
-
 import { getEvaluationQuestionDataApi, saveEvaluationQuestionDataApi } from '@/api/questionnaireCommit'
+import { unioformDateTransform } from '@/utils/dateTransform';
 
 
 const store = useStore()
@@ -47,6 +47,8 @@ interface TeacherItm {
 /**
  * 2. 问卷整体数据
  */
+// 进入某个问卷(整卷)或者 某个试题(按题) 的时间
+const enterTime = ref<any>('')
 
  // 问卷填写截止时间
 const deadlineTime = ref('')
@@ -164,7 +166,7 @@ const questionaireMsg = computed(()=>{
 
 watch(()=>questionaireMsg?.value?.deadlineTime,async (newVal)=>{
     deadlineTime.value = newVal
-})
+},{deep:true})
 
 // 接收问卷表单填写信息的变更
 const HandleQuestionnaireFormChange = (val)=>{
@@ -177,6 +179,7 @@ const HandleFinishReview = async ()=>{
     let params = {
         evaluationCodeRelationId: currentSelectedQuestionnaireData.value?.evaluationCodeRelationId,
         assessmentId: currentSelectedQuestionnaireData.value?.assessmentId,
+        evaluationStartDatetime: enterTime.value,
         answerData: Object.values(fullQuestionnaireAnswer.value)
     }
 
@@ -204,6 +207,7 @@ const HandleFinishReview = async ()=>{
             }
             // 跳转到下一个教师的问卷
             currentActiveTeacherId.value = teacherList.value?.[currentIndex + 1]?.id || ''
+            enterTime.value = unioformDateTransform(new Date())
             store.commit('updateSubjectQuestionnaireTitle',teacherList.value?.[currentIndex + 1]?.evaluationSubjectName + '-' + teacherList.value?.[currentIndex + 1]?.teacherName + '问卷')
         }else{
             // 重新查询教师状态和问卷状态
@@ -252,6 +256,7 @@ const GetFullQuestionnaireData = async ()=>{
                     
     // 这个要默认打开最新的 第一个进行中  或第一个待评价 
     currentActiveTeacherId.value = teacherList.value?.[finalIndex]?.id || ''
+    enterTime.value = unioformDateTransform(new Date())
     store.commit('updateSubjectQuestionnaireTitle',teacherList.value?.[finalIndex]?.evaluationSubjectName + '-' + teacherList.value?.[finalIndex]?.teacherName + '问卷')
 }
 
@@ -266,6 +271,7 @@ onMounted(()=>{
     if(currentEditTeacherQuestionnaire){
         let localQuestionnaire = JSON.parse(currentEditTeacherQuestionnaire || '{}')
         currentActiveTeacherId.value = localQuestionnaire?.id
+        enterTime.value = unioformDateTransform(new Date())
         store.commit('updateSubjectQuestionnaireTitle',localQuestionnaire?.subjectName + '-' + localQuestionnaire?.teacherName+ '问卷')
         sessionStorage.removeItem('currentEditTeacherQuestionnaire')
     }

+ 11 - 6
src/views/questionnaireCommit/QuestionnaireCommit.vue

@@ -5,7 +5,6 @@
                 <el-icon class="img"><ArrowLeftBold /></el-icon>
                 返回
             </el-button>
-            {{  enterTime }}
             <!-- 如该任务勾选了所有单科统一模板后,则会出现"整卷填写”和“按题填写”的页面,默认按照整卷填写 -->
             <TabSearch v-if="isUnifyTemplate" tabType="box" 
                 :defaultTabKey="defaultQuestionnaireMode" :tabList="[
@@ -590,6 +589,7 @@ const HandleFinishReview = async ()=>{
             }
             // 跳转到下一个教师的问卷
             currentActiveTeacherId.value = teacherList.value?.[currentIndex + 1]?.id || ''
+            enterTime.value = unioformDateTransform(new Date())
         }else{
             // 重新查询教师状态和问卷状态
             await ReloadPageData()
@@ -615,7 +615,7 @@ const questionnaireSplitTitleList = computed(()=>{
 })
 
 const isFinishEdit = ref(false)  // 当前试题是否已经编辑完成
-const currentSelectedQuestionIndex = ref(0)  // 当前选中的题目索引
+const currentSelectedQuestionIndex = ref()  // 当前选中的题目索引
 
 // 当前问卷题目的 教师评价答案列表
 const singleQuestionAnswer = ref([])
@@ -649,6 +649,10 @@ const GetSplitQuestionnaireData = async ()=>{
         questionnaireSplitData.value = res.data
     }
 
+    if(currentSelectedQuestionIndex.value || currentSelectedQuestionIndex.value === 0){
+        return 
+    }
+
     // 此处要默认跳转到第一个未提交的题目 编号 ||如果全填完则展示第一个
     const list =  questionaireMsg.value?.questionData || []
     // 获取第一个 未答完的题
@@ -785,16 +789,15 @@ watch(()=>currentEditQuestion.value?.questionType,(newVal)=>{
             break
         }   
     }
-},{immediate:true})
+},{immediate:true,deep:true})
 
 
 // 切换当前选中的试题索引
 const HandleChangeQuestion = (index,question)=>{
     console.log('当前索引--',index)
-    enterTime.value = unioformDateTransform(new Date())
     isFinishEdit.value = false
     currentSelectedQuestionIndex.value = index
-
+    enterTime.value = unioformDateTransform(new Date())
 }
 // 接收问卷试题答案的变更
 const HandleQuestionAnswerChange = (val)=>{
@@ -891,7 +894,9 @@ const HandleFinishCurrentQuestion = async ()=>{
             questionTableColumns.value = []
             // 重新查询 问卷内容和页面内容
             await ReloadPageData()
+            // 上下顺序不要颠倒
             currentSelectedQuestionIndex.value += 1
+            enterTime.value = unioformDateTransform(new Date())
         }else{
             // 重新查询 问卷内容和页面内容
             await ReloadPageData()
@@ -904,7 +909,7 @@ watch(()=>questionaireMsg?.value?.deadlineTime,async (newVal)=>{
     deadlineTime.value = newVal
     await nextTick()
     HandleTimeDeadline()
-})
+},{deep:true})
 
 onMounted( async ()=>{
     await ReloadPageData()