| | |
| | | |
| | | import type { GradeExamListItem, GradeSessionListItem } from './types'; |
| | | |
| | | import { onMounted, ref } from 'vue'; |
| | | import { onActivated, onMounted, ref } from 'vue'; |
| | | import { useRoute, useRouter } from 'vue-router'; |
| | | |
| | | import { useMessage } from '@jnpf/hooks'; |
| | | import { BasicVxeTable, TableAction, useVxeTable } from '@jnpf/ui/vxeTable'; |
| | | |
| | | import { getGradeExamList, getGradeSessionInfo } from '#/api/x/tms/examGrade'; |
| | | import { TMS_BTN } from '#/views/x/tms/shared/ui'; |
| | | |
| | | import { colorOfGradeStatus, labelOfGradeStatus } from './constants'; |
| | | import { colorOfGradeStatus, labelOfGradeStatus, loadExamGradeDics } from './constants'; |
| | | |
| | | import '#/views/x/tms/shared/page.css'; |
| | | |
| | | defineOptions({ name: 'TmsExamGradeSession' }); |
| | | |
| | |
| | | return; |
| | | } |
| | | try { |
| | | session.value = await getGradeSessionInfo(sessionId); |
| | | reload(); |
| | | await loadExamGradeDics(); |
| | | await refreshSession(); |
| | | } catch (e: any) { |
| | | createMessage.error(e?.message || '加载失败'); |
| | | router.replace('/tms/examGrade'); |
| | | } |
| | | }); |
| | | |
| | | onActivated(() => { |
| | | if (!sessionId) return; |
| | | void refreshSession(); |
| | | }); |
| | | |
| | | async function refreshSession() { |
| | | session.value = await getGradeSessionInfo(sessionId); |
| | | reload(); |
| | | } |
| | | |
| | | async function fetchList() { |
| | | return { data: await getGradeExamList(sessionId) }; |
| | | const list = await getGradeExamList(sessionId); |
| | | return { data: Array.isArray(list) ? list : [] }; |
| | | } |
| | | |
| | | function goBack() { |
| | |
| | | |
| | | function getTableActions(record: GradeExamListItem): ActionItem[] { |
| | | if (record.gradeStatus === 'pending') { |
| | | return [{ label: '阅卷', onClick: handleMark.bind(null, record) }]; |
| | | return [{ label: TMS_BTN.grade, onClick: handleMark.bind(null, record) }]; |
| | | } |
| | | return [{ label: '查看', onClick: handleMark.bind(null, record) }]; |
| | | return [{ label: TMS_BTN.detail, onClick: handleMark.bind(null, record) }]; |
| | | } |
| | | </script> |
| | | |
| | |
| | | <div class="jnpf-content-wrapper-content"> |
| | | <BasicVxeTable @register="registerTable"> |
| | | <template #tableTitle> |
| | | <div class="flex items-center gap-3"> |
| | | <a-button @click="goBack">返回</a-button> |
| | | <div class="tms-page-header" style="margin-bottom: 0"> |
| | | <div> |
| | | <div class="text-base font-medium"> |
| | | {{ session?.paperName || '答卷列表' }} |
| | | <div class="tms-page-header__title">{{ session?.paperName || '答卷列表' }}</div> |
| | | <div class="tms-page-header__sub">{{ session?.taskNo }} · {{ session?.taskSubject }}</div> |
| | | </div> |
| | | <div class="mt-1 text-gray-400 text-sm"> |
| | | {{ session?.taskNo }} · {{ session?.taskSubject }} |
| | | </div> |
| | | <div class="tms-page-header__actions"> |
| | | <a-button @click="goBack">{{ TMS_BTN.back }}</a-button> |
| | | </div> |
| | | </div> |
| | | </template> |