fix: 阅卷页面
continuous-integration/drone/push Build is passing
Details
continuous-integration/drone/push Build is passing
Details
This commit is contained in:
parent
28f847de75
commit
fbc35a7849
|
|
@ -8,7 +8,7 @@
|
||||||
</route>
|
</route>
|
||||||
|
|
||||||
<script lang="ts" setup>
|
<script lang="ts" setup>
|
||||||
import type { TeacherMarkingTasksResponse } from '@/service/types'
|
import type { ExamMarkingTaskResponse, TeacherMarkingTasksResponse } from '@/service/types'
|
||||||
import { useQuery } from '@tanstack/vue-query'
|
import { useQuery } from '@tanstack/vue-query'
|
||||||
import { computed, ref } from 'vue'
|
import { computed, ref } from 'vue'
|
||||||
import TaskCard from '@/components/marking/TaskCard.vue'
|
import TaskCard from '@/components/marking/TaskCard.vue'
|
||||||
|
|
@ -22,6 +22,10 @@ defineOptions({
|
||||||
// 主要Tab:阅卷任务 | 阅卷监控
|
// 主要Tab:阅卷任务 | 阅卷监控
|
||||||
const activeTab = ref<'tasks' | 'monitoring'>('tasks')
|
const activeTab = ref<'tasks' | 'monitoring'>('tasks')
|
||||||
|
|
||||||
|
// 收缩展开状态
|
||||||
|
const currentTasksExpanded = ref(true)
|
||||||
|
const historyTasksExpanded = ref(true)
|
||||||
|
|
||||||
// 历次任务学年筛选
|
// 历次任务学年筛选
|
||||||
const historyAcademicYear = ref<string>('') // 空字符串表示全部
|
const historyAcademicYear = ref<string>('') // 空字符串表示全部
|
||||||
|
|
||||||
|
|
@ -48,23 +52,40 @@ const responseData = computed<TeacherMarkingTasksResponse | undefined>(() => {
|
||||||
return tasksData.value
|
return tasksData.value
|
||||||
})
|
})
|
||||||
|
|
||||||
// 当前任务
|
// 按统分字段过滤科目,返回新的任务列表
|
||||||
const currentTask = computed(() => {
|
function filterTasksByCalculated(tasks: ExamMarkingTaskResponse[], isCalculated: number): ExamMarkingTaskResponse[] {
|
||||||
return responseData.value?.current_task ? [responseData.value?.current_task] : []
|
return tasks
|
||||||
|
.map((task) => {
|
||||||
|
const filteredSubjects = (task.subjects || []).filter(
|
||||||
|
subject => subject.is_calculated === isCalculated,
|
||||||
|
)
|
||||||
|
if (filteredSubjects.length === 0)
|
||||||
|
return null
|
||||||
|
return {
|
||||||
|
...task,
|
||||||
|
subjects: filteredSubjects,
|
||||||
|
} as ExamMarkingTaskResponse
|
||||||
|
})
|
||||||
|
.filter((task): task is ExamMarkingTaskResponse => task !== null)
|
||||||
|
}
|
||||||
|
|
||||||
|
// 当前任务(current_tasks 中未统分科目 is_calculated = 0)
|
||||||
|
const currentTasks = computed(() => {
|
||||||
|
const tasksList = responseData.value?.current_tasks?.list || []
|
||||||
|
return filterTasksByCalculated(tasksList, 0)
|
||||||
})
|
})
|
||||||
|
|
||||||
// 历史任务(支持学年筛选)
|
// 历史任务(history_tasks 中已统分科目 is_calculated = 1,支持学年筛选)
|
||||||
const historyTasks = computed(() => {
|
const historyTasks = computed(() => {
|
||||||
const historyList = responseData.value?.history_tasks?.list || []
|
const tasksList = responseData.value?.history_tasks?.list || []
|
||||||
|
let calculatedTasks = filterTasksByCalculated(tasksList, 1)
|
||||||
|
|
||||||
if (!historyAcademicYear.value) {
|
if (!historyAcademicYear.value) {
|
||||||
return historyList
|
return calculatedTasks
|
||||||
}
|
}
|
||||||
|
|
||||||
// 根据学年筛选
|
// 根据学年筛选
|
||||||
return historyList.filter((task) => {
|
return calculatedTasks.filter((task) => {
|
||||||
// 这里需要根据实际的学年字段进行筛选
|
|
||||||
// 假设考试日期可以推断学年
|
|
||||||
if (!task.exam_date)
|
if (!task.exam_date)
|
||||||
return false
|
return false
|
||||||
|
|
||||||
|
|
@ -128,18 +149,23 @@ function handleRefresh() {
|
||||||
<wd-tabs v-model:active="activeTab" class="mb-4 px-4">
|
<wd-tabs v-model:active="activeTab" class="mb-4 px-4">
|
||||||
<wd-tab name="tasks" title="阅卷任务">
|
<wd-tab name="tasks" title="阅卷任务">
|
||||||
<view class="p-2 space-y-4">
|
<view class="p-2 space-y-4">
|
||||||
<!-- 当前任务区域 -->
|
<!-- 当前任务区域(未统分科目) -->
|
||||||
<view>
|
<view>
|
||||||
<view class="mb-3 flex items-center">
|
<view class="mb-3 flex cursor-pointer items-center" @click="currentTasksExpanded = !currentTasksExpanded">
|
||||||
|
<wd-icon :name="currentTasksExpanded ? 'arrow-down' : 'arrow-right'" size="16" class="mr-1" />
|
||||||
<text class="text-base font-semibold">当前任务</text>
|
<text class="text-base font-semibold">当前任务</text>
|
||||||
|
<text class="ml-2 text-sm text-gray-500">({{ currentTasks.length }})</text>
|
||||||
</view>
|
</view>
|
||||||
|
|
||||||
<!-- 当前任务卡片 -->
|
<!-- 当前任务卡片 -->
|
||||||
<view v-if="!currentTask" class="py-8 text-center">
|
<view v-if="currentTasksExpanded">
|
||||||
|
<view v-if="currentTasks.length === 0" class="py-8 text-center">
|
||||||
<text class="text-sm text-gray-500">暂无当前任务</text>
|
<text class="text-sm text-gray-500">暂无当前任务</text>
|
||||||
</view>
|
</view>
|
||||||
<view v-for="task in currentTask" :key="task.exam_id">
|
<view v-else class="space-y-3">
|
||||||
<TaskCard
|
<TaskCard
|
||||||
|
v-for="task in currentTasks"
|
||||||
|
:key="task.exam_id"
|
||||||
:task="task"
|
:task="task"
|
||||||
:is-current="true"
|
:is-current="true"
|
||||||
:is-monitor="false"
|
:is-monitor="false"
|
||||||
|
|
@ -149,11 +175,16 @@ function handleRefresh() {
|
||||||
/>
|
/>
|
||||||
</view>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
|
</view>
|
||||||
|
|
||||||
<!-- 历次任务区域 -->
|
<!-- 历史任务区域(已统分科目) -->
|
||||||
<view>
|
<view>
|
||||||
<view class="mb-3 flex items-center justify-between">
|
<view class="mb-3 flex cursor-pointer items-center justify-between" @click="historyTasksExpanded = !historyTasksExpanded">
|
||||||
<text class="text-base font-semibold">历次任务</text>
|
<view class="flex items-center">
|
||||||
|
<wd-icon :name="historyTasksExpanded ? 'arrow-down' : 'arrow-right'" size="16" class="mr-1" />
|
||||||
|
<text class="text-base font-semibold">历史任务</text>
|
||||||
|
<text class="ml-2 text-sm text-gray-500">({{ historyTasks.length }})</text>
|
||||||
|
</view>
|
||||||
<!-- 学年筛选 -->
|
<!-- 学年筛选 -->
|
||||||
<wd-picker
|
<wd-picker
|
||||||
v-model="historyAcademicYear"
|
v-model="historyAcademicYear"
|
||||||
|
|
@ -161,12 +192,14 @@ function handleRefresh() {
|
||||||
placeholder="选择学年"
|
placeholder="选择学年"
|
||||||
size="small"
|
size="small"
|
||||||
style="width: 120px"
|
style="width: 120px"
|
||||||
|
@click.stop
|
||||||
/>
|
/>
|
||||||
</view>
|
</view>
|
||||||
|
|
||||||
<!-- 历次任务列表 -->
|
<!-- 历史任务列表 -->
|
||||||
|
<view v-if="historyTasksExpanded">
|
||||||
<view v-if="historyTasks.length === 0" class="py-8 text-center">
|
<view v-if="historyTasks.length === 0" class="py-8 text-center">
|
||||||
<text class="text-sm text-gray-500">暂无历次任务</text>
|
<text class="text-sm text-gray-500">暂无历史任务</text>
|
||||||
</view>
|
</view>
|
||||||
<view v-else class="space-y-3">
|
<view v-else class="space-y-3">
|
||||||
<TaskCard
|
<TaskCard
|
||||||
|
|
@ -182,22 +215,26 @@ function handleRefresh() {
|
||||||
</view>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
|
</view>
|
||||||
</wd-tab>
|
</wd-tab>
|
||||||
|
|
||||||
<wd-tab name="monitoring" title="阅卷监控">
|
<wd-tab name="monitoring" title="阅卷监控">
|
||||||
<view class="p-2 space-y-4">
|
<view class="p-2 space-y-4">
|
||||||
<!-- 当前任务区域 -->
|
<!-- 当前任务区域(未统分科目) -->
|
||||||
<view>
|
<view>
|
||||||
<view class="mb-3 flex items-center">
|
<view class="mb-3 flex items-center">
|
||||||
<text class="text-base font-semibold">当前任务</text>
|
<text class="text-base font-semibold">当前任务</text>
|
||||||
|
<text class="ml-2 text-sm text-gray-500">({{ currentTasks.length }})</text>
|
||||||
</view>
|
</view>
|
||||||
|
|
||||||
<!-- 当前任务卡片 -->
|
<!-- 当前任务卡片 -->
|
||||||
<view v-if="!currentTask" class="py-8 text-center">
|
<view v-if="currentTasks.length === 0" class="py-8 text-center">
|
||||||
<text class="text-sm text-gray-500">暂无当前任务</text>
|
<text class="text-sm text-gray-500">暂无当前任务</text>
|
||||||
</view>
|
</view>
|
||||||
<view v-for="task in currentTask" :key="task.exam_id">
|
<view v-else class="space-y-3">
|
||||||
<TaskCard
|
<TaskCard
|
||||||
|
v-for="task in currentTasks"
|
||||||
|
:key="task.exam_id"
|
||||||
:task="task"
|
:task="task"
|
||||||
:is-current="true"
|
:is-current="true"
|
||||||
:is-monitor="true"
|
:is-monitor="true"
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue