|
|
@@ -3,16 +3,18 @@
|
|
|
<z-paging ref="pagingRef" v-model="treeData" :loading-more-enabled="false" :auto="false" @query="loadKnowledgeList">
|
|
|
<template #top>
|
|
|
<ie-navbar :title="pageTitle" />
|
|
|
- <uv-tabs :list="subjectList" key-name="subjectName" @click="handleChangeTab" :scrollable="true"></uv-tabs>
|
|
|
- <view class="px-30 py-16 bg-back">
|
|
|
- <view class="flex items-center justify-end gap-x-4" @click="handleViewHistory">
|
|
|
- <uv-icon name="clock" size="16" color="#31A0FC"></uv-icon>
|
|
|
- <text class="text-28 text-primary">查看记录</text>
|
|
|
- <uv-icon name="arrow-right" size="16" color="#31A0FC"></uv-icon>
|
|
|
+ <template v-if="subjectList.length">
|
|
|
+ <uv-tabs :list="subjectList" key-name="subjectName" @click="handleChangeTab" :scrollable="true"></uv-tabs>
|
|
|
+ <view class="px-30 py-16 bg-back">
|
|
|
+ <view class="flex items-center justify-end gap-x-4" @click="handleViewHistory">
|
|
|
+ <uv-icon name="clock" size="16" color="#31A0FC"></uv-icon>
|
|
|
+ <text class="text-28 text-primary">查看记录</text>
|
|
|
+ <uv-icon name="arrow-right" size="16" color="#31A0FC"></uv-icon>
|
|
|
+ </view>
|
|
|
</view>
|
|
|
- </view>
|
|
|
+ </template>
|
|
|
</template>
|
|
|
- <view class="px-40 safe-area-inset-bottom">
|
|
|
+ <view class="px-40">
|
|
|
<knowledgeTree :tree-data="treeData" @start-practice="handleStartPractice" />
|
|
|
</view>
|
|
|
</z-paging>
|
|
|
@@ -24,7 +26,7 @@ import IePage from '@/components/ie-page/ie-page.vue';
|
|
|
import { useTransferPage } from '@/hooks/useTransferPage';
|
|
|
import { getSubjectList, getKnowledgeList } from '@/api/modules/study';
|
|
|
import knowledgeTree from '@/pagesStudy/components/knowledge-tree.vue';
|
|
|
-import * as Study from '@/types/study';
|
|
|
+import type { Study, Transfer } from '@/types';
|
|
|
import { EnumPaperType, EnumUserRole } from '@/common/enum';
|
|
|
import { useUserStore } from '@/store/userStore';
|
|
|
import { useAuth } from '@/hooks/useAuth';
|
|
|
@@ -32,14 +34,24 @@ import { useAuth } from '@/hooks/useAuth';
|
|
|
const { prevData, transferTo } = useTransferPage();
|
|
|
const currentSubjectIndex = ref<number>(-1);
|
|
|
const userStore = useUserStore();
|
|
|
-const pagingRef = ref();
|
|
|
+const pagingRef = ref<ZPagingInstance>();
|
|
|
|
|
|
const { hasPermission } = useAuth();
|
|
|
const pageTitle = computed(() => {
|
|
|
- if (prevData.value.directed) {
|
|
|
- return '定向刷题';
|
|
|
+ const { isVHS, directed, questionType } = prevData.value;
|
|
|
+ if (isVHS) {
|
|
|
+ if (questionType === 0) {
|
|
|
+ return '知识点练习';
|
|
|
+ } else if (questionType === 2) {
|
|
|
+ return '必刷题';
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ if (directed) {
|
|
|
+ return '定向刷题';
|
|
|
+ } else {
|
|
|
+ return '全量刷题';
|
|
|
+ }
|
|
|
}
|
|
|
- return '全量刷题';
|
|
|
});
|
|
|
const currentSubjectId = computed(() => {
|
|
|
if (subjectList.value.length > 0 && currentSubjectIndex.value >= 0) {
|
|
|
@@ -70,10 +82,10 @@ const loadKnowledgeList = async () => {
|
|
|
directed: prevData.value.directed
|
|
|
});
|
|
|
treeData.value = data as Study.KnowledgeNode[];
|
|
|
- pagingRef.value.complete(data);
|
|
|
+ pagingRef.value?.complete(data);
|
|
|
} catch (error) {
|
|
|
console.log(error);
|
|
|
- pagingRef.value.complete(false);
|
|
|
+ pagingRef.value?.complete(false);
|
|
|
} finally {
|
|
|
uni.$ie.hideLoading();
|
|
|
}
|
|
|
@@ -84,29 +96,35 @@ const handleStartPractice = async (node: Study.KnowledgeNode) => {
|
|
|
if (hasAuth) {
|
|
|
transferTo('/pagesStudy/pages/exam-start/exam-start', {
|
|
|
data: {
|
|
|
- name: '知识点练习-' + node.name,
|
|
|
paperType: EnumPaperType.PRACTICE,
|
|
|
practiceInfo: {
|
|
|
name: node.name,
|
|
|
relateId: node.id,
|
|
|
- directed: prevData.value.directed
|
|
|
- },
|
|
|
- }
|
|
|
+ directed: prevData.value.directed,
|
|
|
+ // 对口升学
|
|
|
+ questionType: prevData.value.questionType
|
|
|
+ }
|
|
|
+ } as Transfer.ExamAnalysisPageOptions
|
|
|
});
|
|
|
}
|
|
|
}
|
|
|
|
|
|
watch(() => currentSubjectIndex.value, () => {
|
|
|
- pagingRef.value.reload();
|
|
|
+ pagingRef.value?.reload();
|
|
|
}, {
|
|
|
immediate: false
|
|
|
});
|
|
|
|
|
|
const loadData = async () => {
|
|
|
+ const { isVHS, directed, subjectType } = prevData.value;
|
|
|
try {
|
|
|
- const { data } = await getSubjectList({
|
|
|
- directed: !!prevData.value.directed
|
|
|
- });
|
|
|
+ const params = {} as Study.SubjectListRequestDTO;
|
|
|
+ if (isVHS) {
|
|
|
+ params.subjectType = subjectType;
|
|
|
+ } else {
|
|
|
+ params.directed = !!directed;
|
|
|
+ }
|
|
|
+ const { data } = await getSubjectList(params);
|
|
|
subjectList.value = data.map(item => ({ subjectId: item.subjectId, subjectName: item.subjectName }));
|
|
|
currentSubjectIndex.value = 0;
|
|
|
} catch (error) { }
|
|
|
@@ -117,10 +135,10 @@ onLoad(() => {
|
|
|
onShow(() => {
|
|
|
nextTick(() => {
|
|
|
if (subjectList.value.length > 0) {
|
|
|
- pagingRef.value.refresh();
|
|
|
+ pagingRef.value?.refresh();
|
|
|
}
|
|
|
});
|
|
|
});
|
|
|
</script>
|
|
|
|
|
|
-<style></style>
|
|
|
+<style></style>
|