diff --git a/reading-platform-frontend/src/components/course-edit/Step2CourseIntro.vue b/reading-platform-frontend/src/components/course-edit/Step2CourseIntro.vue index 6dffe1a..ae84057 100644 --- a/reading-platform-frontend/src/components/course-edit/Step2CourseIntro.vue +++ b/reading-platform-frontend/src/components/course-edit/Step2CourseIntro.vue @@ -2,7 +2,6 @@
课程介绍 - 已填写 {{ filledCount }} / 8
@@ -176,20 +175,6 @@ watch( // 计算当前tab索引 const currentTabIndex = computed(() => tabKeys.indexOf(activeTab.value)); -// 计算已填写的数量 -const filledCount = computed(() => { - let count = 0; - if (formData.introSummary) count++; - if (formData.introHighlights) count++; - if (formData.introGoals) count++; - if (formData.introSchedule) count++; - if (formData.introKeyPoints) count++; - if (formData.introMethods) count++; - if (formData.introEvaluation) count++; - if (formData.introNotes) count++; - return count; -}); - // 上一个tab const prevTab = () => { const index = currentTabIndex.value; @@ -221,7 +206,6 @@ const validate = () => { defineExpose({ validate, formData, - filledCount, }); diff --git a/reading-platform-frontend/src/components/course/FileUploader.vue b/reading-platform-frontend/src/components/course/FileUploader.vue index f3c3a66..0f2654a 100644 --- a/reading-platform-frontend/src/components/course/FileUploader.vue +++ b/reading-platform-frontend/src/components/course/FileUploader.vue @@ -120,15 +120,6 @@ const imagePreviewLoading = ref(false); const imagePreviewLoaded = ref(false); const imagePreviewError = ref(false); -// 监听 previewUrl 变化,重置加载状态 -watch(() => previewUrl.value, (newUrl) => { - if (newUrl && props.fileType === 'image') { - imagePreviewLoading.value = true; - imagePreviewLoaded.value = false; - imagePreviewError.value = false; - } -}, { immediate: true }); - const buttonText = computed(() => { const typeMap: Record = { video: '上传视频', @@ -181,6 +172,19 @@ const previewUrl = computed(() => { return `/uploads/${props.filePath}`; }); +// 须在 previewUrl 定义之后:watch 回调会读 previewUrl,避免 TDZ(Cannot access before initialization) +watch( + () => previewUrl.value, + (newUrl) => { + if (newUrl && props.fileType === 'image') { + imagePreviewLoading.value = true; + imagePreviewLoaded.value = false; + imagePreviewError.value = false; + } + }, + { immediate: true } +); + // 检查是否为 PDF 文件(用于 ppt 类型也支持 PDF 预览) const isPdfFile = computed(() => { if (props.fileType === 'ppt' && props.filePath) { diff --git a/reading-platform-frontend/src/components/course/LessonConfigPanel.vue b/reading-platform-frontend/src/components/course/LessonConfigPanel.vue index 7bf2005..b606050 100644 --- a/reading-platform-frontend/src/components/course/LessonConfigPanel.vue +++ b/reading-platform-frontend/src/components/course/LessonConfigPanel.vue @@ -25,7 +25,9 @@ style="width: 100%" @change="handleChange" /> - 分钟 + + 分钟 + @@ -137,11 +139,13 @@
至少添加一个环节,每个环节需填写名称、内容、目标
- + + + diff --git a/reading-platform-frontend/src/views/admin/courses/CourseEditView.vue b/reading-platform-frontend/src/views/admin/courses/CourseEditView.vue index 488a1d4..4fd40d4 100644 --- a/reading-platform-frontend/src/views/admin/courses/CourseEditView.vue +++ b/reading-platform-frontend/src/views/admin/courses/CourseEditView.vue @@ -18,8 +18,11 @@
- - + +
+ +
+ @@ -62,12 +65,11 @@ @change="handleDataChange" /> -