From c6321027e188d729891eecc1f0fd45b87e0da0ac Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=99=88=E6=98=B1=E8=BE=BE?= Date: Tue, 25 Nov 2025 18:14:56 +0800 Subject: [PATCH] =?UTF-8?q?feat(course):=20=E6=96=B0=E5=A2=9E=E8=AF=BE?= =?UTF-8?q?=E7=A8=8B=E8=AF=84=E4=BC=B0=E7=BB=84=E4=BB=B6=E5=B9=B6=E5=AE=8C?= =?UTF-8?q?=E5=96=84=E7=9B=B8=E5=85=B3=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 创建 AccessComp.vue 组件用于课程评估配置 - 在 createCourse.vue 中引入并注册评估组件 - 添加评估数据结构及默认内容 - 实现评估表单的展示与交互逻辑 - 增加 copyChooseItemData 用于取消操作时的数据恢复 - 修改取消按钮逻辑以支持数据回滚 - 调整组件间通信逻辑以适配新评估功能 --- .../CreatedCourse/preview/AccessComp.vue | 165 ++++++++++++++++++ .../courselibrary/components/createCourse.vue | 23 ++- 2 files changed, 186 insertions(+), 2 deletions(-) create mode 100644 src/components/CreatedCourse/preview/AccessComp.vue diff --git a/src/components/CreatedCourse/preview/AccessComp.vue b/src/components/CreatedCourse/preview/AccessComp.vue new file mode 100644 index 00000000..b83105f0 --- /dev/null +++ b/src/components/CreatedCourse/preview/AccessComp.vue @@ -0,0 +1,165 @@ + + + + + diff --git a/src/views/courselibrary/components/createCourse.vue b/src/views/courselibrary/components/createCourse.vue index 9f4768c5..330f7a6b 100644 --- a/src/views/courselibrary/components/createCourse.vue +++ b/src/views/courselibrary/components/createCourse.vue @@ -16,6 +16,7 @@ import LinkComp from "@/components/CreatedCourse/preview/LinkComp.vue"; import ScormComp from "@/components/CreatedCourse/preview/ScormComp.vue"; import PaperComp from "@/components/CreatedCourse/preview/PaperComp.vue"; import HomeWorkComp from "@/components/CreatedCourse/preview/HomeWorkComp.vue"; +import AccessComp from "@/components/CreatedCourse/preview/AccessComp.vue"; import { getType } from "@/hooks/useCreateCourseMaps"; const mapComponents = [ VideoComp, @@ -26,6 +27,7 @@ const mapComponents = [ ScormComp, PaperComp, HomeWorkComp, + AccessComp, ]; // 使用课程数据hook @@ -41,6 +43,8 @@ const showTablePreview = ref(false); const showDialog = ref(false); const classId = ref(""); + +const copyChooseItemData = ref({}); watch( () => courseMetadata.chooseIndex, (newVal) => { @@ -93,13 +97,16 @@ const courseOperations = { showSettingDialog.value = true; }, addAssessment: () => { - console.log("添加评估功能调用"); + courseMetadata.resType = 62; + chooseItemData.value.resType = 62; + showSettingDialog.value = true; }, }; // 执行课程操作 const executeCourseOperation = (operationName, data) => { courseMetadata.chooseIndex = data; courseMetadata.selectionIndex = null; + copyChooseItemData.value = {}; isPreview.value = false; isNext.value = true; chooseItemData.value = {}; @@ -123,6 +130,16 @@ const choosePreviewItem = (data) => { showSettingDialog.value = true; isPreview.value = true; }; + +const cancelSave = () => { + showSettingDialog.value = false; + chooseItemData.value = copyChooseItemData.value; + courseList.value[courseMetadata.chooseIndex].data[ + courseMetadata.selectionIndex + ] = chooseItemData.value; + console.log(chooseItemData); +}; + // 保存 const saveContent = () => { console.log(chooseItemData.value); @@ -160,6 +177,7 @@ const settingRow = (data) => { courseMetadata.chooseIndex = data.index; courseMetadata.selectionIndex = data.selectionIndex; chooseItemData.value = data.record; + copyChooseItemData.value = JSON.parse(JSON.stringify(data.record)); isPreview.value = false; showSettingDialog.value = true; }; @@ -167,6 +185,7 @@ const previewRow = (data) => { courseMetadata.chooseIndex = data.index; courseMetadata.selectionIndex = data.selectionIndex; chooseItemData.value = data.record; + copyChooseItemData.value = JSON.parse(JSON.stringify(data.record)); isPreview.value = true; showSettingDialog.value = true; }; @@ -258,7 +277,7 @@ const chooseCusExam = (data) => {