|
|
@@ -7,7 +7,6 @@
|
|
|
</el-button>
|
|
|
<!-- 如该任务勾选了所有单科统一模板后,则会出现"整卷填写”和“按题填写”的页面,默认按照整卷填写 -->
|
|
|
<TabSearch v-if="isUnifyTemplate" tabType="box"
|
|
|
- :disabled="QuestionnaireModeDisabled"
|
|
|
:defaultTabKey="defaultQuestionnaireMode" :tabList="[
|
|
|
{
|
|
|
label:'整卷填写',
|
|
|
@@ -229,6 +228,9 @@ interface TeacherItm {
|
|
|
|
|
|
const router = useRouter()
|
|
|
|
|
|
+/**
|
|
|
+ * 头部变量
|
|
|
+ */
|
|
|
// 是否 所有单科统一模板
|
|
|
const isUnifyTemplate = computed(()=>{
|
|
|
// 统一模板状态,0-否(未勾选),1-是(已勾选)
|
|
|
@@ -236,6 +238,9 @@ const isUnifyTemplate = computed(()=>{
|
|
|
return unifyTemplateStatus ? true : false
|
|
|
})
|
|
|
|
|
|
+// 问卷填写截止时间
|
|
|
+const deadlineTime = ref('')
|
|
|
+
|
|
|
// 倒计时相关参数
|
|
|
const {
|
|
|
DestoryInterval,
|
|
|
@@ -243,9 +248,16 @@ const {
|
|
|
StartCounDown
|
|
|
} = useTimeCountDown()
|
|
|
|
|
|
+ // 处理页面的倒计时
|
|
|
+const HandleTimeDeadline = ()=>{
|
|
|
+ DestoryInterval()
|
|
|
+ // 获取到剩余时间后,开始执行倒计时
|
|
|
+ StartCounDown(deadlineTime.value,1000)
|
|
|
+}
|
|
|
+
|
|
|
|
|
|
/**
|
|
|
- * 1. 左侧教师相关变量
|
|
|
+ * 1. 左侧教师 和 右侧问卷标题 相关变量
|
|
|
*/
|
|
|
// 待评价教师列表
|
|
|
const teacherList = ref<TeacherItm[]>([])
|
|
|
@@ -287,7 +299,8 @@ const isTeacherEdit = computed(() => {
|
|
|
};
|
|
|
});
|
|
|
|
|
|
-// 问卷标题是否可以切换
|
|
|
+// 问卷标题是否可以切换
|
|
|
+// studentAnswerStatus 已答题(1) 未答题(0)
|
|
|
const isQuestionTitleEdit = computed(()=>{
|
|
|
const list = questionaireMsg.value?.questionData || []
|
|
|
// 获取第一个 未答完的题
|
|
|
@@ -305,9 +318,23 @@ const isQuestionTitleEdit = computed(()=>{
|
|
|
return false;
|
|
|
};
|
|
|
})
|
|
|
+
|
|
|
+// 获取评价教师列表
|
|
|
+const GetEvaluationProcessMsg = async ()=>{
|
|
|
+ let res = await getEvaluationProcessMsgApi()
|
|
|
+ if(res?.code == 200){
|
|
|
+ teacherList.value = res.data.dataList
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
/**
|
|
|
* 2. 问卷整体数据
|
|
|
*/
|
|
|
+// 默认的问卷填写模式
|
|
|
+const defaultQuestionnaireMode = ref('full') // split full
|
|
|
+// 问卷填写模式是否允许修改
|
|
|
|
|
|
// 当前问卷任务是否全部完成 ———— 以及问卷是否结束
|
|
|
const isCurrentQuestionnaireTaskFinish = computed(()=>{
|
|
|
@@ -318,11 +345,7 @@ const isCurrentQuestionnaireTaskFinish = computed(()=>{
|
|
|
return allTaskFinish || deadlineCountDown.value?.abort
|
|
|
})
|
|
|
|
|
|
-// 问卷填写截止时间
|
|
|
-const deadlineTime = ref('')
|
|
|
-
|
|
|
-
|
|
|
-// 每个问卷的进度
|
|
|
+// 问卷的进度
|
|
|
const questionnaireProgress= computed(()=>{
|
|
|
if(defaultQuestionnaireMode.value == 'full'){
|
|
|
return questionaireMsg.value?.progress
|
|
|
@@ -343,22 +366,6 @@ const questionnaireProgress= computed(()=>{
|
|
|
})
|
|
|
|
|
|
|
|
|
-// 【按题填写】时候的全部数据内容
|
|
|
-const questionnaireSplitData = ref<any[]>([])
|
|
|
-// 按题填写时候的题目列表
|
|
|
-const questionnaireSplitTitleList = computed(()=>{
|
|
|
- return questionnaireSplitData.value?.map((item:any)=>{
|
|
|
- return {
|
|
|
- id:item.questionId,
|
|
|
- studentAnswerStatus:item.studentAnswerStatus,
|
|
|
- questionTitleName:item.questionTitleName,
|
|
|
- }
|
|
|
- })
|
|
|
-})
|
|
|
-
|
|
|
-// 【整卷填写】 —— 全部数据内容
|
|
|
-const teacherQuestionnaireData = ref([])
|
|
|
-
|
|
|
// 当前选择的教师问卷(整卷填写) 或者 题目问卷(按题填写) 全部信息
|
|
|
const currentSelectedQuestionnaireData = computed(()=>{
|
|
|
// 整卷填写
|
|
|
@@ -452,15 +459,6 @@ const questionaireMsg = computed(()=>{
|
|
|
})
|
|
|
|
|
|
|
|
|
-// 历史选择的问卷填写方式
|
|
|
-// //无 '' , full 整卷填写 , split 按题填写
|
|
|
-const HistoryQuestionnaireFillMode = ref('')
|
|
|
-
|
|
|
-// 默认的问卷填写模式
|
|
|
-const defaultQuestionnaireMode = ref('full') // split full
|
|
|
-// 问卷填写模式是否允许修改
|
|
|
-const QuestionnaireModeDisabled = ref(false)
|
|
|
-
|
|
|
// 问卷填写模式变更
|
|
|
const HandleQuestionnaireModeChange = async (val)=>{
|
|
|
console.log('当前选中的值',val)
|
|
|
@@ -472,13 +470,33 @@ const HandleQuestionnaireModeChange = async (val)=>{
|
|
|
}
|
|
|
}
|
|
|
|
|
|
-// 监听从接口获取到的 历史问卷填写方式,变更当前页面的模式和模式的禁选状态
|
|
|
-watch(()=>HistoryQuestionnaireFillMode.value,(newVal)=>{
|
|
|
- if(newVal){
|
|
|
- defaultQuestionnaireMode.value = newVal
|
|
|
- QuestionnaireModeDisabled.value = true
|
|
|
+
|
|
|
+// 重新加载页面数据
|
|
|
+const ReloadPageData = async ()=>{
|
|
|
+ await GetEvaluationProcessMsg()
|
|
|
+ if(defaultQuestionnaireMode.value == 'full'){
|
|
|
+ await GetFullQuestionnaireData()
|
|
|
+ }else if(defaultQuestionnaireMode.value == 'split'){
|
|
|
+ await GetSplitQuestionnaireData()
|
|
|
}
|
|
|
-})
|
|
|
+}
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+/**
|
|
|
+ * 3. 整卷填写相关变量 和操作
|
|
|
+ */
|
|
|
+
|
|
|
+// 【整卷填写】 —— 全部数据内容
|
|
|
+const teacherQuestionnaireData = ref([])
|
|
|
+
|
|
|
+// 问卷试题 dom
|
|
|
+const questionListRef = ref()
|
|
|
+// 当前选中的待评价科目教师
|
|
|
+const currentActiveTeacherId = ref<number|string>('')
|
|
|
+
|
|
|
+// 整卷填写 教师问卷的答案
|
|
|
+const fullQuestionnaireAnswer = ref({})
|
|
|
|
|
|
// 获取整卷填写问卷数据
|
|
|
const GetFullQuestionnaireData = async ()=>{
|
|
|
@@ -512,28 +530,7 @@ const GetFullQuestionnaireData = async ()=>{
|
|
|
currentActiveTeacherId.value = teacherList.value?.[finalIndex]?.id || ''
|
|
|
}
|
|
|
|
|
|
-// 获取按题填写问卷数据
|
|
|
-const GetSplitQuestionnaireData = async ()=>{
|
|
|
- let teacherIds = teacherList.value.map(item=>{
|
|
|
- return item.id
|
|
|
- })
|
|
|
- let res = await getEvaluationQuestionDataSplitApi(teacherIds)
|
|
|
- if(res?.code == 200){
|
|
|
- questionnaireSplitData.value = res.data
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-
|
|
|
-/**
|
|
|
- * 3. 整卷填写相关变量 和操作
|
|
|
- */
|
|
|
-// 问卷试题 dom
|
|
|
-const questionListRef = ref()
|
|
|
-// 当前选中的待评价科目教师
|
|
|
-const currentActiveTeacherId = ref<number|string>('')
|
|
|
|
|
|
-// 整卷填写 教师问卷的答案
|
|
|
-const fullQuestionnaireAnswer = ref({})
|
|
|
|
|
|
// 切换 评价的科目教师
|
|
|
const HandleSubjectTeacherChange = (index,teacher)=>{
|
|
|
@@ -595,12 +592,30 @@ const HandleFinishReview = async ()=>{
|
|
|
/**
|
|
|
* 4. 按题填写相关变量 和操作
|
|
|
*/
|
|
|
+// 【按题填写】时候的全部数据内容
|
|
|
+const questionnaireSplitData = ref<any[]>([])
|
|
|
+// 按题填写时候的题目列表
|
|
|
+const questionnaireSplitTitleList = computed(()=>{
|
|
|
+ return questionnaireSplitData.value?.map((item:any)=>{
|
|
|
+ return {
|
|
|
+ id:item.questionId,
|
|
|
+ studentAnswerStatus:item.studentAnswerStatus,
|
|
|
+ questionTitleName:item.questionTitleName,
|
|
|
+ }
|
|
|
+ })
|
|
|
+})
|
|
|
+
|
|
|
const isFinishEdit = ref(false) // 当前试题是否已经编辑完成
|
|
|
const currentSelectedQuestionIndex = ref(0) // 当前选中的题目索引
|
|
|
|
|
|
// 当前问卷题目的 教师评价答案列表
|
|
|
const singleQuestionAnswer = ref([])
|
|
|
|
|
|
+// 按题填写的表格数据渲染 _ 不同题目类型渲染不同的内容
|
|
|
+const questionTableColumns = ref<any[]>([]) //按题填写的表列数据
|
|
|
+const questionTableData = ref<any[]>([]) //按题填写的表行数据
|
|
|
+
|
|
|
+
|
|
|
// 当前编辑的试题
|
|
|
const currentEditQuestion = computed(()=>{
|
|
|
let currentQuestion = questionnaireSplitData.value?.[currentSelectedQuestionIndex.value]
|
|
|
@@ -614,10 +629,16 @@ const currentEditQuestion = computed(()=>{
|
|
|
return {...currentQuestion,extraConfig}
|
|
|
})
|
|
|
|
|
|
-
|
|
|
-// 按题填写的表格数据渲染 _ 不同题目类型渲染不同的内容
|
|
|
-const questionTableColumns = ref<any[]>([]) //按题填写的表列数据
|
|
|
-const questionTableData = ref<any[]>([]) //按题填写的表行数据
|
|
|
+// 获取按题填写问卷数据
|
|
|
+const GetSplitQuestionnaireData = async ()=>{
|
|
|
+ let teacherIds = teacherList.value.map(item=>{
|
|
|
+ return item.id
|
|
|
+ })
|
|
|
+ let res = await getEvaluationQuestionDataSplitApi(teacherIds)
|
|
|
+ if(res?.code == 200){
|
|
|
+ questionnaireSplitData.value = res.data
|
|
|
+ }
|
|
|
+}
|
|
|
|
|
|
|
|
|
// 监听【按题填写】时候的 表格数据渲染
|
|
|
@@ -857,31 +878,6 @@ const HandleFinishCurrentQuestion = async ()=>{
|
|
|
}
|
|
|
}
|
|
|
|
|
|
-//
|
|
|
-// 处理页面的倒计时
|
|
|
-const HandleTimeDeadline = ()=>{
|
|
|
- DestoryInterval()
|
|
|
- // 获取到剩余时间后,开始执行倒计时
|
|
|
- StartCounDown(deadlineTime.value,1000)
|
|
|
-}
|
|
|
-
|
|
|
-// 获取评价教师列表
|
|
|
-const GetEvaluationProcessMsg = async ()=>{
|
|
|
- let res = await getEvaluationProcessMsgApi()
|
|
|
- if(res?.code == 200){
|
|
|
- teacherList.value = res.data.dataList
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-// 重新加载页面数据
|
|
|
-const ReloadPageData = async ()=>{
|
|
|
- await GetEvaluationProcessMsg()
|
|
|
- if(defaultQuestionnaireMode.value == 'full'){
|
|
|
- await GetFullQuestionnaireData()
|
|
|
- }else if(defaultQuestionnaireMode.value == 'split'){
|
|
|
- await GetSplitQuestionnaireData()
|
|
|
- }
|
|
|
-}
|
|
|
|
|
|
watch(()=>questionaireMsg?.value?.deadlineTime,async (newVal)=>{
|
|
|
deadlineTime.value = newVal
|