56 lines
1.4 KiB
Vue
56 lines
1.4 KiB
Vue
<template>
|
||
<CourseLearning
|
||
v-if="courseId"
|
||
:course-id="courseId"
|
||
:chapter-index="chapterIndex"
|
||
:node-index="nodeIndex"
|
||
:back-button-text="taskId ? '返回任务详情' : '返回课程详情'"
|
||
@back="handleBack"
|
||
/>
|
||
</template>
|
||
|
||
<script setup lang="ts">
|
||
import { computed } from 'vue';
|
||
import { useRouter, useRoute } from 'vue-router';
|
||
import { CourseLearning } from '@/views/public/course/components';
|
||
|
||
defineOptions({
|
||
name: 'CourseStudyView'
|
||
});
|
||
|
||
const router = useRouter();
|
||
const route = useRoute();
|
||
|
||
// 从路由参数获取课程ID和节点索引
|
||
const courseId = computed(() => route.query.courseId as string || '');
|
||
const chapterIndex = computed(() => parseInt(route.query.chapterIndex as string) || 0);
|
||
const nodeIndex = computed(() => parseInt(route.query.nodeIndex as string) || 0);
|
||
const taskId = computed(() => route.query.taskId as string || '');
|
||
|
||
// 返回到上一页
|
||
function handleBack() {
|
||
// 如果有 taskId,返回任务详情页
|
||
if (taskId.value) {
|
||
router.push({
|
||
path: '/study-plan/task-detail',
|
||
query: {
|
||
taskId: taskId.value
|
||
}
|
||
});
|
||
} else {
|
||
// 否则返回课程详情页
|
||
router.push({
|
||
path: '/study-plan/course-detail',
|
||
query: {
|
||
courseId: courseId.value
|
||
}
|
||
});
|
||
}
|
||
}
|
||
</script>
|
||
|
||
<style lang="scss" scoped>
|
||
// 此组件只是容器,样式由子组件处理
|
||
</style>
|
||
|