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 @@
@@ -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" />
-