|
@@ -1,4 +1,4 @@
|
|
|
-import { closeToast, Icon, Popup, showDialog, showToast } from 'vant';
|
|
|
+import { closeToast, Form, Icon, Popup, showDialog, showToast } from 'vant';
|
|
|
import {
|
|
|
defineComponent,
|
|
|
onMounted,
|
|
@@ -37,20 +37,32 @@ import {
|
|
|
api_classLessonCoursewareQuery,
|
|
|
api_lessonCoursewareKnowledgeDetailDetail
|
|
|
} from './api';
|
|
|
+import {
|
|
|
+ api_lessonDetailCourseware,
|
|
|
+ api_classDetailCourseware
|
|
|
+} from '../courseware-list/api';
|
|
|
import VideoItem from './component/video-item';
|
|
|
import Chapter from './component/chapter';
|
|
|
import {
|
|
|
api_classLessonCoursewareDetail,
|
|
|
api_lessonCoursewareDetail
|
|
|
} from '../courseware-list/api';
|
|
|
-import detail from '../information/help-center/detail';
|
|
|
+// import detail from '../information/help-center/detail';
|
|
|
import { state } from '@/state';
|
|
|
+import Theory from './component/theory';
|
|
|
+import InstrumentInfo from './component/instrument-info';
|
|
|
+// import TempoPractice from '../../views/tempo-practice';
|
|
|
+import SelectCoursewarePop from '@/components/select-courseware-pop';
|
|
|
+import { debounce } from '../../helpers/utils';
|
|
|
+import TempoItem from './component/tempo-item';
|
|
|
|
|
|
export default defineComponent({
|
|
|
name: 'CoursewarePlay',
|
|
|
setup() {
|
|
|
const pageVisibility = usePageVisibility();
|
|
|
const lastTimeKey = 'lastTime' + (state?.user?.data?.phone ?? '');
|
|
|
+ const showSelectCourseware = ref(false);
|
|
|
+ const debounceSkip = ref(false);
|
|
|
/** 设置播放容器 16:9 */
|
|
|
const parentContainer = reactive({
|
|
|
width: '100vw'
|
|
@@ -118,7 +130,7 @@ export default defineComponent({
|
|
|
});
|
|
|
if (res?.code == 200 && Array.isArray(res?.data?.lessonList)) {
|
|
|
data.courseDetails = res.data.lessonList || [];
|
|
|
- console.log('🚀 ~ data.details course:', data.courseDetails);
|
|
|
+ // console.log('🚀 ~ data.details course:', data.courseDetails);
|
|
|
}
|
|
|
} else {
|
|
|
const res = await api_lessonCoursewareDetail({
|
|
@@ -130,7 +142,7 @@ export default defineComponent({
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- console.log(data.courseDetails, 'data.courseDetails');
|
|
|
+ // console.log(data.courseDetails, 'data.courseDetails');
|
|
|
} catch {
|
|
|
//
|
|
|
}
|
|
@@ -140,21 +152,26 @@ export default defineComponent({
|
|
|
const headeRef = ref();
|
|
|
const loadingClass = ref(false); // 重新加载课件
|
|
|
const data = reactive({
|
|
|
- knowledgePointList: [] as any,
|
|
|
+ allList: [] as any, // 所选章节下的所有课件列表
|
|
|
+ kjId: route.query.id as string, // 所选的课件id
|
|
|
+ currentCourse: {} as any, // 当前选中的课件
|
|
|
+ zsdId: '' as string, // 知识点id
|
|
|
+ knowledgePointList: [] as any, //所选课件,所选知识点下所有的资源列表
|
|
|
courseDetails: [] as any,
|
|
|
itemList: [] as any,
|
|
|
videoRefs: {} as any[],
|
|
|
|
|
|
videoState: 'init' as 'init' | 'play',
|
|
|
videoItemRef: null as any,
|
|
|
- animationState: 'start' as 'start' | 'end'
|
|
|
+ animationState: 'start' as 'start' | 'end',
|
|
|
+ coursewareList: []
|
|
|
});
|
|
|
const activeData = reactive({
|
|
|
isAutoPlay: true, // 是否自动播放
|
|
|
subjectId: route.query.subjectId,
|
|
|
lessonCoursewareId: route.query.lessonCoursewareId,
|
|
|
lessonCoursewareDetailId: route.query.lessonCoursewareDetailId,
|
|
|
- coursewareDetailKnowledgeId: route.query.id,
|
|
|
+ coursewareDetailKnowledgeId: route.query.coursewareDetailKnowledgeId,
|
|
|
courseId: route.query.courseId, // 我的课程专用编号
|
|
|
nowTime: 0,
|
|
|
model: true, // 遮罩
|
|
@@ -165,42 +182,79 @@ export default defineComponent({
|
|
|
timer: null as any,
|
|
|
item: null as any
|
|
|
});
|
|
|
+ // 切换单元临时数据
|
|
|
+ const temporaryData = reactive({
|
|
|
+ dyId: '', // 单元id
|
|
|
+ zjId: '' // 章节id
|
|
|
+ });
|
|
|
const getDetail = async () => {
|
|
|
+ data.allList = [];
|
|
|
let courseList: any[] = [];
|
|
|
if (route.query.tab == 'course') {
|
|
|
- const res = await api_classLessonCoursewareQuery({
|
|
|
- coursewareDetailKnowledgeId: activeData.coursewareDetailKnowledgeId,
|
|
|
- subjectId: activeData.subjectId,
|
|
|
- page: 1,
|
|
|
- rows: -1
|
|
|
+ // const res = await api_classLessonCoursewareQuery({
|
|
|
+ // coursewareDetailKnowledgeId: activeData.coursewareDetailKnowledgeId,
|
|
|
+ // subjectId: activeData.subjectId,
|
|
|
+ // page: 1,
|
|
|
+ // rows: -1
|
|
|
+ // });
|
|
|
+ const res = await api_classDetailCourseware({
|
|
|
+ lessonCoursewareKnowledgeDetailId:
|
|
|
+ activeData.coursewareDetailKnowledgeId // 章节id
|
|
|
});
|
|
|
- if (res?.code === 200 && Array.isArray(res.data.rows)) {
|
|
|
- const tempRows = res.data.rows || [];
|
|
|
- tempRows.forEach((item: any) => {
|
|
|
- courseList.push({
|
|
|
- content: item.content,
|
|
|
- coverImg: item.coverImg,
|
|
|
- id: item.id,
|
|
|
- materialId: item.materialId,
|
|
|
- name: item.materialName,
|
|
|
- relOrder: 0,
|
|
|
- sourceFrom: item.source,
|
|
|
- type: item.materialType
|
|
|
+ if (res?.code === 200 && Array.isArray(res.data)) {
|
|
|
+ // const tempRows = res.data.rows || [];
|
|
|
+ // tempRows.forEach((item: any) => {
|
|
|
+ // courseList.push({
|
|
|
+ // content: item.content,
|
|
|
+ // coverImg: item.coverImg,
|
|
|
+ // id: item.id,
|
|
|
+ // materialId: item.materialId,
|
|
|
+ // name: item.materialName,
|
|
|
+ // relOrder: 0,
|
|
|
+ // sourceFrom: item.source,
|
|
|
+ // type: item.materialType
|
|
|
+ // });
|
|
|
+ // });
|
|
|
+ res.data.forEach((item: any) => {
|
|
|
+ item.knowledgeList = item.resourceList;
|
|
|
+ item.resourceList.forEach((n: any) => {
|
|
|
+ n.materialInfo = n.resourceList;
|
|
|
});
|
|
|
});
|
|
|
+ data.allList = res.data;
|
|
|
+ const currentCourse = res.data.find(
|
|
|
+ (item: any) => item.id === data.kjId
|
|
|
+ );
|
|
|
+ data.zsdId = currentCourse?.knowledgeList?.[0].id;
|
|
|
+ courseList = currentCourse?.knowledgeList?.[0].materialInfo || [];
|
|
|
+ data.currentCourse = currentCourse || {}
|
|
|
}
|
|
|
} else {
|
|
|
- const res = await api_lessonCoursewareKnowledgeDetailDetail({
|
|
|
+ // const res = await api_lessonCoursewareKnowledgeDetailDetail({
|
|
|
+ // lessonCoursewareKnowledgeDetailId:
|
|
|
+ // activeData.coursewareDetailKnowledgeId,
|
|
|
+ // subjectId: activeData.subjectId
|
|
|
+ // });
|
|
|
+ const res = await api_lessonDetailCourseware({
|
|
|
lessonCoursewareKnowledgeDetailId:
|
|
|
- activeData.coursewareDetailKnowledgeId,
|
|
|
- subjectId: activeData.subjectId
|
|
|
+ activeData.coursewareDetailKnowledgeId // 章节id
|
|
|
});
|
|
|
if (res?.code === 200 && Array.isArray(res.data)) {
|
|
|
- courseList = res.data || [];
|
|
|
+ data.allList = res.data;
|
|
|
+ const currentCourse = res.data.find(
|
|
|
+ (item: any) => item.id === data.kjId
|
|
|
+ );
|
|
|
+ data.zsdId = currentCourse?.knowledgeList?.[0].id;
|
|
|
+ courseList = currentCourse?.knowledgeList?.[0].materialInfo || [];
|
|
|
+ data.currentCourse = currentCourse || {}
|
|
|
+ // console.log('课件类型', data.allList);
|
|
|
}
|
|
|
}
|
|
|
+ // 当前的资源id
|
|
|
+ let resourceId: any = null;
|
|
|
// 课程
|
|
|
if (courseList.length > 0) {
|
|
|
+ resourceId = courseList[0].id;
|
|
|
data.knowledgePointList = courseList.map((item: any) => {
|
|
|
return {
|
|
|
...item,
|
|
@@ -213,8 +267,49 @@ export default defineComponent({
|
|
|
};
|
|
|
});
|
|
|
}
|
|
|
+ // 当前章节下的所有资源列表
|
|
|
+ let allResource: any = [];
|
|
|
+ data.allList.forEach((item: any) => {
|
|
|
+ item.knowledgeList.forEach((material: any) => {
|
|
|
+ material.materialInfo.forEach((resource: any) => {
|
|
|
+ resource.zsdId = material.id; // 知识点id
|
|
|
+ resource.kjId = item.id; // 课件id
|
|
|
+ resource.bizId =
|
|
|
+ route.query.tab == 'course'
|
|
|
+ ? resource.materialId
|
|
|
+ : resource.bizId;
|
|
|
+ resource.url =
|
|
|
+ resource.type === 'SONG'
|
|
|
+ ? 'https://oss.dayaedu.com/ktqy/1698420034679a22d3f7a.png'
|
|
|
+ : resource.type === 'PPT'
|
|
|
+ ? 'https://oss.dayaedu.com/ktqy/12/1701931810284.png'
|
|
|
+ : resource.coverImg;
|
|
|
+ });
|
|
|
+ allResource = allResource.concat(material.materialInfo);
|
|
|
+ });
|
|
|
+ });
|
|
|
+
|
|
|
+ // 当前章节下,所选的课件所有资源列表
|
|
|
+ let allKjResource: any = [];
|
|
|
+ data.currentCourse?.knowledgeList?.forEach((material: any) => {
|
|
|
+ material.materialInfo.forEach((resource: any) => {
|
|
|
+ resource.zsdId = material.id; // 知识点id
|
|
|
+ resource.kjId = data.currentCourse.id; // 课件id
|
|
|
+ resource.bizId =
|
|
|
+ route.query.tab == 'course'
|
|
|
+ ? resource.materialId
|
|
|
+ : resource.bizId;
|
|
|
+ resource.url =
|
|
|
+ resource.type === 'SONG'
|
|
|
+ ? 'https://oss.dayaedu.com/ktqy/1698420034679a22d3f7a.png'
|
|
|
+ : resource.type === 'PPT'
|
|
|
+ ? 'https://oss.dayaedu.com/ktqy/12/1701931810284.png'
|
|
|
+ : resource.coverImg;
|
|
|
+ });
|
|
|
+ allKjResource = allKjResource.concat(material.materialInfo);
|
|
|
+ });
|
|
|
|
|
|
- data.itemList = data.knowledgePointList.map((m: any, index: number) => {
|
|
|
+ data.itemList = allKjResource.map((m: any, index: number) => {
|
|
|
if (!popupData.itemActive) {
|
|
|
popupData.itemActive = m.id;
|
|
|
popupData.itemName = m.name;
|
|
@@ -228,7 +323,14 @@ export default defineComponent({
|
|
|
isRender: false // 是否渲染了
|
|
|
};
|
|
|
});
|
|
|
+ const resourceIndex = data.itemList.findIndex(
|
|
|
+ (resource: any) => resource.id === resourceId
|
|
|
+ );
|
|
|
+ setTimeout(() => {
|
|
|
+ handleSwipeChange(resourceIndex);
|
|
|
+ }, 0);
|
|
|
|
|
|
+ console.log('资源', data.itemList, resourceIndex);
|
|
|
setTimeout(() => {
|
|
|
data.animationState = 'end';
|
|
|
}, 500);
|
|
@@ -244,6 +346,10 @@ export default defineComponent({
|
|
|
clearInterval(activeData.timer);
|
|
|
activeData.model = !ev.data.state;
|
|
|
}
|
|
|
+
|
|
|
+ if (ev.data?.api === 'clickTempo') {
|
|
|
+ setModelOpen();
|
|
|
+ }
|
|
|
};
|
|
|
|
|
|
onMounted(() => {
|
|
@@ -279,7 +385,21 @@ export default defineComponent({
|
|
|
});
|
|
|
|
|
|
// 切换素材
|
|
|
- const toggleMaterial = (itemActive: any) => {
|
|
|
+ const toggleMaterial = (itemActive: any, zsdId: any, kjId: any) => {
|
|
|
+ // 如果切换了知识点或者切换了课件,需要加载新的
|
|
|
+ // if (zsdId !== data.zsdId || kjId !== data.kjId) {
|
|
|
+ // data.zsdId = zsdId
|
|
|
+ // data.kjId = kjId
|
|
|
+ // let target = { materialInfo: [] }
|
|
|
+ // // 如果是切换了知识点id
|
|
|
+ // const kjIndex = data.allList.findIndex((item: any) => item.id === kjId)
|
|
|
+ // target = data.allList[kjIndex].knowledgeList.find((item: any) => item.id === zsdId)
|
|
|
+ // } else {
|
|
|
+ // const index = data.itemList.findIndex((n: any) => n.id == itemActive);
|
|
|
+ // if (index > -1) {
|
|
|
+ // handleSwipeChange(index);
|
|
|
+ // }
|
|
|
+ // }
|
|
|
const index = data.itemList.findIndex((n: any) => n.id == itemActive);
|
|
|
if (index > -1) {
|
|
|
handleSwipeChange(index);
|
|
@@ -370,7 +490,7 @@ export default defineComponent({
|
|
|
}
|
|
|
];
|
|
|
const handleStop = () => {
|
|
|
- data.videoItemRef.pause();
|
|
|
+ data.videoItemRef?.pause();
|
|
|
};
|
|
|
const acitveTimer = ref();
|
|
|
// 轮播切换
|
|
@@ -383,6 +503,8 @@ export default defineComponent({
|
|
|
clearTimeout(acitveTimer.value);
|
|
|
activeData.model = true;
|
|
|
const item = data.itemList[index];
|
|
|
+ data.kjId = item.kjId;
|
|
|
+ data.zsdId = item.zsdId;
|
|
|
popupData.activeIndex = index;
|
|
|
popupData.itemActive = item.id;
|
|
|
popupData.itemName = item.name;
|
|
@@ -400,6 +522,7 @@ export default defineComponent({
|
|
|
|
|
|
// 上一个知识点, 下一个知识点
|
|
|
const handlePreAndNext = async (type: string) => {
|
|
|
+ // 层级关系:单元〉章节〉知识点〉课件资源
|
|
|
if (type === 'up') {
|
|
|
// 判断上面是否还有章节
|
|
|
if (popupData.activeIndex > 0) {
|
|
@@ -420,6 +543,7 @@ export default defineComponent({
|
|
|
let lessonCoursewareDetailId = '';
|
|
|
let coursewareDetailKnowledgeId = '';
|
|
|
let coursewareDetailKnowledgeName = '';
|
|
|
+ let coursewareItem = {} as any;
|
|
|
while (lessonIndex >= 0) {
|
|
|
lessonIndex--;
|
|
|
|
|
@@ -430,6 +554,7 @@ export default defineComponent({
|
|
|
detailItem[lessonIndex].lessonCoursewareDetailId;
|
|
|
coursewareDetailKnowledgeId = detailItem[lessonIndex].id;
|
|
|
coursewareDetailKnowledgeName = detailItem[lessonIndex].name;
|
|
|
+ coursewareItem = detailItem[lessonIndex];
|
|
|
}
|
|
|
}
|
|
|
|
|
@@ -439,21 +564,29 @@ export default defineComponent({
|
|
|
}
|
|
|
// 判断当前章节下面课程是否有内容,否则往上一个章节走
|
|
|
if (lessonStatus) {
|
|
|
- loadingClass.value = true;
|
|
|
- activeData.coursewareDetailKnowledgeId = coursewareDetailKnowledgeId;
|
|
|
- activeData.lessonCoursewareDetailId = lessonCoursewareDetailId;
|
|
|
- await getDetail();
|
|
|
- popupData.activeIndex = data.itemList.length - 1 || 0;
|
|
|
- popupData.itemActive =
|
|
|
- data.knowledgePointList[data.itemList.length - 1]?.id ||
|
|
|
- data.knowledgePointList[0]?.id;
|
|
|
- popupData.itemPointName = coursewareDetailKnowledgeName;
|
|
|
- popupData.itemName =
|
|
|
- data.knowledgePointList[data.itemList.length - 1]?.name ||
|
|
|
- data.knowledgePointList[0]?.name;
|
|
|
- localStorage.setItem(lastTimeKey, coursewareDetailKnowledgeId);
|
|
|
- popupData.chapterOpen = false;
|
|
|
- loadingClass.value = false;
|
|
|
+ // loadingClass.value = true;
|
|
|
+ // activeData.coursewareDetailKnowledgeId = coursewareDetailKnowledgeId;
|
|
|
+ // activeData.lessonCoursewareDetailId = lessonCoursewareDetailId;
|
|
|
+ // await getDetail();
|
|
|
+ // popupData.activeIndex = data.itemList.length - 1 || 0;
|
|
|
+ // popupData.itemActive =
|
|
|
+ // data.knowledgePointList[data.itemList.length - 1]?.id ||
|
|
|
+ // data.knowledgePointList[0]?.id;
|
|
|
+ // popupData.itemPointName = coursewareDetailKnowledgeName;
|
|
|
+ // popupData.itemName =
|
|
|
+ // data.knowledgePointList[data.itemList.length - 1]?.name ||
|
|
|
+ // data.knowledgePointList[0]?.name;
|
|
|
+ // localStorage.setItem(lastTimeKey, coursewareDetailKnowledgeId);
|
|
|
+ // popupData.chapterOpen = false;
|
|
|
+ // loadingClass.value = false;
|
|
|
+ // console.log
|
|
|
+ temporaryData.zjId = coursewareDetailKnowledgeId;
|
|
|
+ temporaryData.dyId = lessonCoursewareDetailId;
|
|
|
+ // activeData.coursewareDetailKnowledgeId = coursewareDetailKnowledgeId;
|
|
|
+ checkCourseware({
|
|
|
+ ...coursewareItem,
|
|
|
+ itemActive: coursewareDetailKnowledgeId
|
|
|
+ });
|
|
|
return;
|
|
|
}
|
|
|
|
|
@@ -471,6 +604,7 @@ export default defineComponent({
|
|
|
coursewareDetailKnowledgeId = tempDetail[tempLessonLength - 1].id;
|
|
|
coursewareDetailKnowledgeName =
|
|
|
tempDetail[tempLessonLength - 1].name;
|
|
|
+ coursewareItem = tempDetail[tempLessonLength - 1];
|
|
|
}
|
|
|
tempLessonLength--;
|
|
|
if (prevLessonStatus) {
|
|
@@ -485,21 +619,29 @@ export default defineComponent({
|
|
|
|
|
|
// 判断当前章节下面课程是否有内容,否则往上一个章节走
|
|
|
if (prevLessonStatus) {
|
|
|
- loadingClass.value = true;
|
|
|
- activeData.coursewareDetailKnowledgeId = coursewareDetailKnowledgeId;
|
|
|
- activeData.lessonCoursewareDetailId = lessonCoursewareDetailId;
|
|
|
- await getDetail();
|
|
|
- popupData.activeIndex = data.itemList.length - 1 || 0;
|
|
|
- popupData.itemActive =
|
|
|
- data.knowledgePointList[data.itemList.length - 1]?.id ||
|
|
|
- data.knowledgePointList[0]?.id;
|
|
|
- localStorage.setItem(lastTimeKey, coursewareDetailKnowledgeId);
|
|
|
- popupData.itemPointName = coursewareDetailKnowledgeName;
|
|
|
- popupData.itemName =
|
|
|
- data.knowledgePointList[data.itemList.length - 1]?.name ||
|
|
|
- data.knowledgePointList[0]?.name;
|
|
|
- popupData.chapterOpen = false;
|
|
|
- loadingClass.value = false;
|
|
|
+ // loadingClass.value = true;
|
|
|
+ // activeData.coursewareDetailKnowledgeId = coursewareDetailKnowledgeId;
|
|
|
+ // activeData.lessonCoursewareDetailId = lessonCoursewareDetailId;
|
|
|
+ // await getDetail();
|
|
|
+ // popupData.activeIndex = data.itemList.length - 1 || 0;
|
|
|
+ // popupData.itemActive =
|
|
|
+ // data.knowledgePointList[data.itemList.length - 1]?.id ||
|
|
|
+ // data.knowledgePointList[0]?.id;
|
|
|
+ // localStorage.setItem(lastTimeKey, coursewareDetailKnowledgeId);
|
|
|
+ // popupData.itemPointName = coursewareDetailKnowledgeName;
|
|
|
+ // popupData.itemName =
|
|
|
+ // data.knowledgePointList[data.itemList.length - 1]?.name ||
|
|
|
+ // data.knowledgePointList[0]?.name;
|
|
|
+ // popupData.chapterOpen = false;
|
|
|
+ // loadingClass.value = false;
|
|
|
+ // console.log('2', coursewareItem, coursewareDetailKnowledgeId);
|
|
|
+ temporaryData.zjId = coursewareDetailKnowledgeId;
|
|
|
+ temporaryData.dyId = lessonCoursewareDetailId;
|
|
|
+ // activeData.coursewareDetailKnowledgeId = coursewareDetailKnowledgeId;
|
|
|
+ checkCourseware({
|
|
|
+ ...coursewareItem,
|
|
|
+ itemActive: coursewareDetailKnowledgeId
|
|
|
+ });
|
|
|
return;
|
|
|
}
|
|
|
} else {
|
|
@@ -508,11 +650,13 @@ export default defineComponent({
|
|
|
return;
|
|
|
}
|
|
|
|
|
|
- // 获取当前是哪个章节
|
|
|
+ // 获取当前是哪个单元
|
|
|
let detailIndex = data.courseDetails.findIndex(
|
|
|
(item: any) => item.id == activeData.lessonCoursewareDetailId
|
|
|
);
|
|
|
+ // 当前章节列表
|
|
|
const detailItem = data.courseDetails[detailIndex]?.knowledgeList || [];
|
|
|
+ // 获取当前是哪个章节
|
|
|
let lessonIndex = detailItem.findIndex(
|
|
|
(item: any) => item.id == activeData.coursewareDetailKnowledgeId
|
|
|
);
|
|
@@ -521,6 +665,7 @@ export default defineComponent({
|
|
|
let lessonCoursewareDetailId = '';
|
|
|
let coursewareDetailKnowledgeId = '';
|
|
|
let coursewareDetailKnowledgeName = '';
|
|
|
+ let coursewareItem = {} as any;
|
|
|
while (lessonIndex < detailItem.length - 1) {
|
|
|
lessonIndex++;
|
|
|
if (lessonIndex >= 0) {
|
|
@@ -530,6 +675,7 @@ export default defineComponent({
|
|
|
detailItem[lessonIndex].lessonCoursewareDetailId;
|
|
|
coursewareDetailKnowledgeId = detailItem[lessonIndex].id;
|
|
|
coursewareDetailKnowledgeName = detailItem[lessonIndex].name;
|
|
|
+ coursewareItem = detailItem[lessonIndex];
|
|
|
}
|
|
|
}
|
|
|
if (lessonStatus) {
|
|
@@ -538,17 +684,25 @@ export default defineComponent({
|
|
|
}
|
|
|
// 判断当前章节下面课程是否有内容,否则往下一个章节走
|
|
|
if (lessonStatus) {
|
|
|
- loadingClass.value = true;
|
|
|
- activeData.coursewareDetailKnowledgeId = coursewareDetailKnowledgeId;
|
|
|
- activeData.lessonCoursewareDetailId = lessonCoursewareDetailId;
|
|
|
- await getDetail();
|
|
|
- popupData.activeIndex = 0;
|
|
|
- popupData.itemActive = data.knowledgePointList[0].id;
|
|
|
- popupData.itemName = data.knowledgePointList[0].name;
|
|
|
- localStorage.setItem(lastTimeKey, coursewareDetailKnowledgeId);
|
|
|
- popupData.itemPointName = coursewareDetailKnowledgeName;
|
|
|
- popupData.chapterOpen = false;
|
|
|
- loadingClass.value = false;
|
|
|
+ // loadingClass.value = true;
|
|
|
+ // activeData.coursewareDetailKnowledgeId = coursewareDetailKnowledgeId;
|
|
|
+ // activeData.lessonCoursewareDetailId = lessonCoursewareDetailId;
|
|
|
+ // await getDetail();
|
|
|
+ // popupData.activeIndex = 0;
|
|
|
+ // popupData.itemActive = data.knowledgePointList[0].id;
|
|
|
+ // popupData.itemName = data.knowledgePointList[0].name;
|
|
|
+ // localStorage.setItem(lastTimeKey, coursewareDetailKnowledgeId);
|
|
|
+ // popupData.itemPointName = coursewareDetailKnowledgeName;
|
|
|
+ // popupData.chapterOpen = false;
|
|
|
+ // loadingClass.value = false;
|
|
|
+ temporaryData.zjId = coursewareDetailKnowledgeId;
|
|
|
+ temporaryData.dyId = lessonCoursewareDetailId;
|
|
|
+ // activeData.coursewareDetailKnowledgeId = coursewareDetailKnowledgeId;
|
|
|
+ // console.log(coursewareItem, 'coursewareItem', temporaryData);
|
|
|
+ checkCourseware({
|
|
|
+ ...coursewareItem,
|
|
|
+ itemActive: coursewareDetailKnowledgeId
|
|
|
+ });
|
|
|
return;
|
|
|
}
|
|
|
|
|
@@ -565,6 +719,7 @@ export default defineComponent({
|
|
|
tempDetail[tempLessonLength].lessonCoursewareDetailId;
|
|
|
coursewareDetailKnowledgeId = tempDetail[tempLessonLength].id;
|
|
|
coursewareDetailKnowledgeName = tempDetail[tempLessonLength].name;
|
|
|
+ coursewareItem = tempDetail[tempLessonLength];
|
|
|
}
|
|
|
tempLessonLength++;
|
|
|
if (nextLessonStatus) {
|
|
@@ -577,19 +732,27 @@ export default defineComponent({
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- // 判断当前章节下面课程是否有内容,否则往上一个章节走
|
|
|
+ // 判断当前章节下面课程是否有内容,否则往下一个单元走
|
|
|
if (nextLessonStatus) {
|
|
|
- loadingClass.value = true;
|
|
|
- activeData.coursewareDetailKnowledgeId = coursewareDetailKnowledgeId;
|
|
|
- activeData.lessonCoursewareDetailId = lessonCoursewareDetailId;
|
|
|
- await getDetail();
|
|
|
- popupData.activeIndex = 0;
|
|
|
- popupData.itemActive = data.knowledgePointList[0].id;
|
|
|
- localStorage.setItem(lastTimeKey, coursewareDetailKnowledgeId);
|
|
|
- popupData.itemName = data.knowledgePointList[0].name;
|
|
|
- popupData.itemPointName = coursewareDetailKnowledgeName;
|
|
|
- popupData.chapterOpen = false;
|
|
|
- loadingClass.value = false;
|
|
|
+ // loadingClass.value = true;
|
|
|
+ // activeData.coursewareDetailKnowledgeId = coursewareDetailKnowledgeId;
|
|
|
+ // activeData.lessonCoursewareDetailId = lessonCoursewareDetailId;
|
|
|
+ // await getDetail();
|
|
|
+ // popupData.activeIndex = 0;
|
|
|
+ // popupData.itemActive = data.knowledgePointList[0].id;
|
|
|
+ // localStorage.setItem(lastTimeKey, coursewareDetailKnowledgeId);
|
|
|
+ // popupData.itemName = data.knowledgePointList[0].name;
|
|
|
+ // popupData.itemPointName = coursewareDetailKnowledgeName;
|
|
|
+ // popupData.chapterOpen = false;
|
|
|
+ // loadingClass.value = false;
|
|
|
+ temporaryData.zjId = coursewareDetailKnowledgeId;
|
|
|
+ temporaryData.dyId = lessonCoursewareDetailId;
|
|
|
+ // activeData.coursewareDetailKnowledgeId = coursewareDetailKnowledgeId;
|
|
|
+ // console.log(coursewareItem, 'coursewareItem', temporaryData);
|
|
|
+ checkCourseware({
|
|
|
+ ...coursewareItem,
|
|
|
+ itemActive: coursewareDetailKnowledgeId
|
|
|
+ });
|
|
|
return;
|
|
|
}
|
|
|
}
|
|
@@ -673,6 +836,7 @@ export default defineComponent({
|
|
|
|
|
|
// 是否允许下一页
|
|
|
const isDownArrow = computed(() => {
|
|
|
+ console.log(22222222222)
|
|
|
if (popupData.activeIndex < data.itemList.length - 1) {
|
|
|
return true;
|
|
|
}
|
|
@@ -703,6 +867,7 @@ export default defineComponent({
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
+
|
|
|
// 判断当前章节下面课程是否有内容,否则往下一个章节走
|
|
|
if (lessonStatus) {
|
|
|
return true;
|
|
@@ -740,6 +905,86 @@ export default defineComponent({
|
|
|
}
|
|
|
return {};
|
|
|
});
|
|
|
+
|
|
|
+ // 加载新的章节里的课件
|
|
|
+ const loadNewCourseware = async (item: any) => {
|
|
|
+ if(item.id === data.kjId) {
|
|
|
+ showSelectCourseware.value = false;
|
|
|
+ return
|
|
|
+ }
|
|
|
+ if (debounceSkip.value) return;
|
|
|
+ debounceSkip.value = true;
|
|
|
+ data.itemList = [];
|
|
|
+ loadingClass.value = true;
|
|
|
+ // activeData.coursewareDetailKnowledgeId = item.coursewareDetailKnowledgeId;
|
|
|
+ // activeData.lessonCoursewareDetailId = item.lessonCoursewareDetailId;
|
|
|
+ if (route.query.tab == 'all') {
|
|
|
+ activeData.coursewareDetailKnowledgeId =
|
|
|
+ item.coursewareDetailKnowledgeId;
|
|
|
+ activeData.lessonCoursewareDetailId = temporaryData.dyId;
|
|
|
+ localStorage.setItem(lastTimeKey, item.coursewareDetailKnowledgeId);
|
|
|
+ } else {
|
|
|
+ activeData.lessonCoursewareDetailId = temporaryData.dyId;
|
|
|
+ activeData.coursewareDetailKnowledgeId = temporaryData.zjId;
|
|
|
+ localStorage.setItem(lastTimeKey, temporaryData.zjId);
|
|
|
+ }
|
|
|
+ // console.log(item, 'item', route.query.tab);
|
|
|
+ // console.log(activeData, temporaryData, 'active');
|
|
|
+ popupData.chapterOpen = false;
|
|
|
+ showSelectCourseware.value = false;
|
|
|
+ data.kjId = item.id;
|
|
|
+ await getDetail();
|
|
|
+ popupData.activeIndex = 0;
|
|
|
+ popupData.itemActive = data.knowledgePointList[0].id;
|
|
|
+ popupData.itemName = data.knowledgePointList[0].name;
|
|
|
+ // 匹配到当前的章节名称
|
|
|
+ const dyItem = data.courseDetails.find(
|
|
|
+ (unit: any) => unit.id === activeData.lessonCoursewareDetailId
|
|
|
+ );
|
|
|
+ const zjItem = dyItem?.knowledgeList?.find(
|
|
|
+ (chapter: any) => chapter.id === activeData.coursewareDetailKnowledgeId
|
|
|
+ );
|
|
|
+ zjItem && (popupData.itemPointName = zjItem.name);
|
|
|
+ // console.log('章节名称', popupData.itemPointName);
|
|
|
+ loadingClass.value = false;
|
|
|
+ debounceSkip.value = false;
|
|
|
+ };
|
|
|
+ // 通过章节id,检测此章节有几个课件
|
|
|
+ const checkCourseware = async (item: any, checkType?: any) => {
|
|
|
+ // 如果有多个课件,需要选择一个课件进入上课页面
|
|
|
+ if (item.coursewareNum || checkType) {
|
|
|
+ try {
|
|
|
+ if (checkType) {
|
|
|
+ // @ts-ignore
|
|
|
+ temporaryData.zjId = activeData.coursewareDetailKnowledgeId
|
|
|
+ // @ts-ignore
|
|
|
+ temporaryData.dyId = activeData.lessonCoursewareDetailId
|
|
|
+ }
|
|
|
+ const res =
|
|
|
+ route.query.tab == 'all'
|
|
|
+ ? await api_lessonDetailCourseware({
|
|
|
+ lessonCoursewareKnowledgeDetailId: checkType ? activeData.coursewareDetailKnowledgeId : item.itemActive
|
|
|
+ })
|
|
|
+ : await api_classDetailCourseware({
|
|
|
+ lessonCoursewareKnowledgeDetailId: checkType ? activeData.coursewareDetailKnowledgeId : item.itemActive
|
|
|
+ });
|
|
|
+ if (res?.code == 200 && res.data?.length) {
|
|
|
+ data.coursewareList = res.data;
|
|
|
+ // 如果只有一个课件,直接进入该课件
|
|
|
+ // console.log(res.data, 'data');
|
|
|
+ if (res.data.length == 1) {
|
|
|
+ loadNewCourseware({ ...res.data[0] });
|
|
|
+ } else {
|
|
|
+ // 如果有多个课件,需要选择一个课件进入上课页面
|
|
|
+ showSelectCourseware.value = true;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ } catch {
|
|
|
+ //
|
|
|
+ }
|
|
|
+ }
|
|
|
+ };
|
|
|
+
|
|
|
return () => (
|
|
|
<div id="playContent" class={styles.playContent}>
|
|
|
<div
|
|
@@ -906,6 +1151,50 @@ export default defineComponent({
|
|
|
)}
|
|
|
</Transition>
|
|
|
)}
|
|
|
+
|
|
|
+ {/* 新增:RHYTHM:节奏练习,THEORY:乐理知识,MUSIC_WIKI:名曲鉴赏 INSTRUMENT:乐器 MUSICIAN:音乐家 资源类型 */}
|
|
|
+ {m.type === 'RHYTHM' && (
|
|
|
+ <TempoItem
|
|
|
+ key={mIndex}
|
|
|
+ class={styles.tempoPracticeGroup}
|
|
|
+ dataJson={m.dataJson}
|
|
|
+ show={popupData.activeIndex === mIndex}
|
|
|
+ pageVisibility={pageVisibility.value}
|
|
|
+ />
|
|
|
+ // <TempoPractice
|
|
|
+ // key={mIndex}
|
|
|
+ // class={styles.tempoPracticeGroup}
|
|
|
+ // dataJson={m?.dataJson ? JSON.parse(m?.dataJson) : {}}
|
|
|
+ // modeType={'courseware'}
|
|
|
+ // show={popupData.activeIndex === mIndex}
|
|
|
+ // />
|
|
|
+ )}
|
|
|
+ {m.type === 'THEORY' && <Theory id={m.bizId} />}
|
|
|
+ {/* {popupData.activeIndex === mIndex && ( */}
|
|
|
+ <>
|
|
|
+ {m.type === 'MUSIC_WIKI' && (
|
|
|
+ <InstrumentInfo
|
|
|
+ type={'wiki'}
|
|
|
+ id={m.bizId}
|
|
|
+ show={popupData.activeIndex === mIndex}
|
|
|
+ />
|
|
|
+ )}
|
|
|
+ {m.type === 'INSTRUMENT' && (
|
|
|
+ <InstrumentInfo
|
|
|
+ type={'instrument'}
|
|
|
+ id={m.bizId}
|
|
|
+ show={popupData.activeIndex === mIndex}
|
|
|
+ />
|
|
|
+ )}
|
|
|
+ {m.type === 'MUSICIAN' && (
|
|
|
+ <InstrumentInfo
|
|
|
+ type={'musician'}
|
|
|
+ id={m.bizId}
|
|
|
+ show={popupData.activeIndex === mIndex}
|
|
|
+ />
|
|
|
+ )}
|
|
|
+ </>
|
|
|
+ {/* )} */}
|
|
|
</div>
|
|
|
) : (
|
|
|
<div
|
|
@@ -996,13 +1285,22 @@ export default defineComponent({
|
|
|
v-model:show={popupData.open}
|
|
|
onClose={handleClosePopup}>
|
|
|
<Points
|
|
|
+ allList={data.allList}
|
|
|
+ currentCourse={data.currentCourse}
|
|
|
data={data.knowledgePointList}
|
|
|
itemActive={popupData.itemActive}
|
|
|
itemName={popupData.itemPointName}
|
|
|
+ kjId={data.kjId}
|
|
|
+ zsdId={data.zsdId}
|
|
|
+ popShow={popupData.open}
|
|
|
onHandleSelect={(res: any) => {
|
|
|
popupData.open = false;
|
|
|
- toggleMaterial(res.itemActive);
|
|
|
+ toggleMaterial(res.itemActive, res.zsdId, res.kjId);
|
|
|
}}
|
|
|
+ onCourseSelect={ async () => {
|
|
|
+ popupData.open = false;
|
|
|
+ checkCourseware({}, 'same')
|
|
|
+ }}
|
|
|
/>
|
|
|
</Popup>
|
|
|
{/* 知识点列表 */}
|
|
@@ -1018,20 +1316,24 @@ export default defineComponent({
|
|
|
detail={data.courseDetails}
|
|
|
itemActive={activeData.coursewareDetailKnowledgeId as any}
|
|
|
active={activeData.lessonCoursewareDetailId as any}
|
|
|
+ popShow={popupData.chapterOpen}
|
|
|
onHandleSelect={async (item: any) => {
|
|
|
- loadingClass.value = true;
|
|
|
- activeData.coursewareDetailKnowledgeId = item.itemActive;
|
|
|
- activeData.lessonCoursewareDetailId = item.tabActive;
|
|
|
- await getDetail();
|
|
|
- popupData.activeIndex = 0;
|
|
|
- popupData.itemActive = data.knowledgePointList[0].id;
|
|
|
- popupData.itemName = data.knowledgePointList[0].name;
|
|
|
+ temporaryData.dyId = item.tabActive;
|
|
|
+ temporaryData.zjId = item.itemActive;
|
|
|
popupData.itemPointName = item.itemName;
|
|
|
- popupData.chapterOpen = false;
|
|
|
- loadingClass.value = false;
|
|
|
+ checkCourseware(item);
|
|
|
}}
|
|
|
/>
|
|
|
</Popup>
|
|
|
+ {showSelectCourseware.value && (
|
|
|
+ <SelectCoursewarePop
|
|
|
+ list={data.coursewareList}
|
|
|
+ kjId={data.kjId}
|
|
|
+ onClose={() => {
|
|
|
+ showSelectCourseware.value = false;
|
|
|
+ }}
|
|
|
+ onSelect={item => loadNewCourseware(item)}></SelectCoursewarePop>
|
|
|
+ )}
|
|
|
</div>
|
|
|
);
|
|
|
}
|