feat(course): 添加SCORM文件预览功能

- 在chooseFileList组件中增加SCORM文件的预览按钮及逻辑处理
- 新增ScormComp.vue组件用于展示SCORM内容
- 更新createCourse.vue以支持SCORM类型的添加与预览操作
- 调整dragTable.vue中的显示控制逻辑,适配SCORM类型
- 修改useCreateCourseMaps.js中SCORM类型的名称为大写格式
- 扩展上传文件类型判断和相关参数传递逻辑
- 优化代码结构和可读性,确保SCORM资源正确加载和显示
This commit is contained in:
陈昱达
2025-11-24 19:16:19 +08:00
parent 6ac50b1fe9
commit 8d9775b77a
5 changed files with 145 additions and 28 deletions

View File

@@ -13,8 +13,16 @@ import AudioComp from "@/components/CreatedCourse/preview/AudioComp.vue";
import EditorComp from "@/components/CreatedCourse/preview/EditorComp.vue";
import DocComp from "@/components/CreatedCourse/preview/DocComp.vue";
import LinkComp from "@/components/CreatedCourse/preview/LinkComp.vue";
import ScormComp from "@/components/CreatedCourse/preview/ScormComp.vue";
import { getType } from "@/hooks/useCreateCourseMaps";
const mapComponents = [VideoComp, AudioComp, EditorComp, DocComp, LinkComp];
const mapComponents = [
VideoComp,
AudioComp,
EditorComp,
DocComp,
LinkComp,
ScormComp,
];
// 使用课程数据hook
const { courseMetadata, courseList, courseActionButtons, addChapter } =
@@ -52,7 +60,9 @@ const courseOperations = {
showSettingDialog.value = true;
},
addScorm: () => {
console.log("添加SCORM功能调用");
courseMetadata.resType = 50;
showDialog.value = true;
isNext.value = false;
},
addExam: () => {
console.log("添加考试功能调用");
@@ -69,6 +79,7 @@ const executeCourseOperation = (operationName, data) => {
courseMetadata.chooseIndex = data;
courseMetadata.selectionIndex = null;
isPreview.value = false;
isNext.value = true;
chooseItemData.value = {};
if (courseOperations[operationName]) {
courseOperations[operationName](data);
@@ -77,6 +88,7 @@ const executeCourseOperation = (operationName, data) => {
}
};
const chooseItem = (data) => {
console.log(data);
chooseItemData.value = data;
if (!isNext.value) {
saveContent();
@@ -84,6 +96,11 @@ const chooseItem = (data) => {
}
showSettingDialog.value = true;
};
const choosePreviewItem = (data) => {
chooseItemData.value = data;
showSettingDialog.value = true;
isPreview.value = true;
};
// 保存
const saveContent = () => {
if (courseMetadata.selectionIndex !== null) {
@@ -180,6 +197,7 @@ const previewRow = (data) => {
<chooseFileList
v-if="showDialog"
@chooseItem="chooseItem"
@choosePreviewItem="choosePreviewItem"
:resType="courseMetadata.resType"
:showTablePreview="showTablePreview"
></chooseFileList>