mirror of
https://codeup.aliyun.com/67762337eccfc218f6110e0e/vue/fe-manage.git
synced 2025-12-20 00:06:47 +08:00
feat(course): 新增课程评估组件并完善相关功能
- 创建 AccessComp.vue 组件用于课程评估配置 - 在 createCourse.vue 中引入并注册评估组件 - 添加评估数据结构及默认内容 - 实现评估表单的展示与交互逻辑 - 增加 copyChooseItemData 用于取消操作时的数据恢复 - 修改取消按钮逻辑以支持数据回滚 - 调整组件间通信逻辑以适配新评估功能
This commit is contained in:
@@ -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) => {
|
||||
|
||||
<template #footer>
|
||||
<div class="dialog-footer">
|
||||
<el-button @click="showSettingDialog = false">取消</el-button>
|
||||
<el-button @click="cancelSave()">取消</el-button>
|
||||
<el-button type="primary" @click="saveContent()" v-if="!isPreview">
|
||||
保存
|
||||
</el-button>
|
||||
|
||||
Reference in New Issue
Block a user