From 360834b437d8d961dc5379d85c90598bbb4abf18 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=98=BF=E6=A2=A6?= Date: Fri, 29 May 2026 20:55:45 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E4=BF=AE=E5=A4=8D=E4=B8=80=E4=BA=9B?= =?UTF-8?q?=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/constants/doWork.ts | 21 +++++++++++++ src/pages/doWork/index.vue | 36 +++++++++++++++++----- src/pages/homework/index.vue | 5 ++- src/pages/homework/reports/index.vue | 3 +- src/pages/parent/analysis/index.vue | 25 ++++++++++++--- src/pages/parent/components/ParentPage.vue | 12 +++++++- src/pages/wrong/index.vue | 3 +- 7 files changed, 86 insertions(+), 19 deletions(-) create mode 100644 src/constants/doWork.ts diff --git a/src/constants/doWork.ts b/src/constants/doWork.ts new file mode 100644 index 0000000..66366b0 --- /dev/null +++ b/src/constants/doWork.ts @@ -0,0 +1,21 @@ +/** 与 Web 端 subject/doWork/index.ts 保持一致 */ +export const resource_type_free = '0'; +export const resource_type_ai = '1'; +export const resource_type_wrong_book = '2'; +export const resource_type_analogy = '3'; +export const resource_type_paper = '7'; +export const resource_type_homework = '8'; +export const resource_type_wrong_retry = '10'; +export const resource_type_similar_recommend = '11'; + +/** 兼容历史错误传参 */ +export const normalizeResourceType = (type?: string) => { + if (!type || type === 'homework') return resource_type_homework; + return type; +}; + +/** 需要走作业保存/提交接口的资源类型 */ +export const isHomeworkExamResourceType = (type: string) => + type === resource_type_homework || + type === resource_type_wrong_retry || + type === resource_type_similar_recommend; diff --git a/src/pages/doWork/index.vue b/src/pages/doWork/index.vue index c7be91e..a226ade 100644 --- a/src/pages/doWork/index.vue +++ b/src/pages/doWork/index.vue @@ -108,11 +108,14 @@ import { submitExam, getPaperRecordDetail, } from '@/api/homework'; +import { + resource_type_homework, + normalizeResourceType, + isHomeworkExamResourceType, +} from '@/constants/doWork'; import Loading from '@/components/Loading/index.vue'; import Question from './components/Question.vue'; -const RESOURCE_TYPE_HOMEWORK = 'homework'; - const pageLoading = ref(true); const submitLoading = ref(false); const menuButtonRightRpx = ref(0); @@ -127,7 +130,9 @@ const params = ref({}); let timer: any = null; const initialIdx = ref(0); -const resourceType = computed(() => params.value.resourceType || RESOURCE_TYPE_HOMEWORK); +const resourceType = computed(() => + normalizeResourceType(params.value.resourceType || paperInfo.value.resourceType), +); const normalizePaperList = (list: any, markUnLook = false) => { if (!Array.isArray(list)) return []; @@ -202,12 +207,24 @@ const timeFilter = computed(() => { onLoad((options: any) => { initialIdx.value = Number(options.idx) || 0; + // 与 Web route.params.id 一致:带 id 时为查看报告 if (options.id) { reportFlag.value = 1; - params.value = { ...options, id: options.id }; + params.value = { + ...options, + id: options.id, + recordId: options.recordId || options.id, + resourceType: normalizeResourceType(options.resourceType), + }; } else { reportFlag.value = Number(options.reportFlag || 0) as 0 | 1; - params.value = { ...options }; + params.value = { + ...options, + resourceType: normalizeResourceType(options.resourceType), + }; + if (reportFlag.value === 1 && params.value.recordId && !params.value.id) { + params.value.id = params.value.recordId; + } } init(); }); @@ -232,19 +249,19 @@ const handleBack = () => { const switchQuestion = async (idx?: number) => { if (idx === activeIdx.value) { - if (!reportFlag.value && resourceType.value === RESOURCE_TYPE_HOMEWORK) { + if (!reportFlag.value && isHomeworkExamResourceType(resourceType.value)) { await saveAnswer(); } return; } if (idx !== undefined) { - if (!reportFlag.value && resourceType.value === RESOURCE_TYPE_HOMEWORK) { + if (!reportFlag.value && isHomeworkExamResourceType(resourceType.value)) { normalizeCurrentMultiAnswer(); await saveAnswer(); } activeIdx.value = idx; } else if (activeIdx.value < paperList.value.length - 1) { - if (!reportFlag.value && resourceType.value === RESOURCE_TYPE_HOMEWORK) { + if (!reportFlag.value && isHomeworkExamResourceType(resourceType.value)) { normalizeCurrentMultiAnswer(); await saveAnswer(); } @@ -364,6 +381,9 @@ const initReport = async () => { }; const initNewTrain = async () => { + if (resourceType.value !== resource_type_homework) { + throw new Error('暂不支持该练习类型'); + } const res: any = await startExam(params.value.recordId); paperInfo.value = res.data || res; if (paperInfo.value.costTime) { diff --git a/src/pages/homework/index.vue b/src/pages/homework/index.vue index ca6de2f..61a1b5f 100644 --- a/src/pages/homework/index.vue +++ b/src/pages/homework/index.vue @@ -149,10 +149,9 @@ import { onShow } from '@dcloudio/uni-app'; import Empty from '@/components/Empty/index.vue'; import Loading from '@/components/Loading/index.vue'; import { getUnfinishedHomework, type PaperRecord } from '@/api/homework'; +import { resource_type_homework } from '@/constants/doWork'; import { formatTime } from '@/utils/format'; -const RESOURCE_TYPE = 'homework'; - interface SubjectItem { id: string; name: string; @@ -222,7 +221,7 @@ const onSelectSubject = (item: SubjectItem) => { const onStartPaper = (paper: PaperRecord) => { uni.navigateTo({ - url: `/pages/doWork/index?resourceType=${RESOURCE_TYPE}&recordId=${paper.id}&reportFlag=0&subjectId=${activeSubjectId.value}`, + url: `/pages/doWork/index?resourceType=${resource_type_homework}&recordId=${paper.id}&reportFlag=0&subjectId=${activeSubjectId.value}`, }); }; diff --git a/src/pages/homework/reports/index.vue b/src/pages/homework/reports/index.vue index 7bc722f..fb8180b 100644 --- a/src/pages/homework/reports/index.vue +++ b/src/pages/homework/reports/index.vue @@ -225,6 +225,7 @@ import Empty from '@/components/Empty/index.vue'; import Loading from '@/components/Loading/index.vue'; import ProgressBar from '@/components/ProgressBar/index.vue'; import { getJobAnalyse, getKnowledgeAnalyse, getPaperRecordDetail } from '@/api/homework'; +import { resource_type_homework } from '@/constants/doWork'; const recordId = ref(''); const paperName = ref(''); @@ -374,7 +375,7 @@ const getKnowledgeColor = (item: any) => { const viewQuestion = (idx: number) => { uni.navigateTo({ - url: `/pages/doWork/index?recordId=${recordId.value}&reportFlag=1&idx=${idx}`, + url: `/pages/doWork/index?id=${recordId.value}&recordId=${recordId.value}&reportFlag=1&resourceType=${resource_type_homework}&idx=${idx}`, }); }; diff --git a/src/pages/parent/analysis/index.vue b/src/pages/parent/analysis/index.vue index a77abd9..f9e818c 100644 --- a/src/pages/parent/analysis/index.vue +++ b/src/pages/parent/analysis/index.vue @@ -1,5 +1,5 @@