|
@@ -243,8 +243,8 @@ export default defineComponent({
|
|
|
};
|
|
|
});
|
|
|
setTimeout(() => {
|
|
|
- data.animationState = 'end'
|
|
|
- }, 500)
|
|
|
+ data.animationState = 'end';
|
|
|
+ }, 500);
|
|
|
} catch {
|
|
|
//
|
|
|
}
|
|
@@ -313,7 +313,7 @@ export default defineComponent({
|
|
|
getDetail();
|
|
|
getLessonCoursewareDetail();
|
|
|
if (data.type === 'preview') {
|
|
|
- rightList.splice(1,1)
|
|
|
+ rightList.splice(1, 1);
|
|
|
}
|
|
|
});
|
|
|
|
|
@@ -493,16 +493,16 @@ export default defineComponent({
|
|
|
|
|
|
// ppt iframe 点击事件
|
|
|
// const iframeClick = () => {
|
|
|
- // if(document.all) {
|
|
|
- // document.getElementById("iframe-ppt")?.attachEvent("click", () => {
|
|
|
+ // if(document.all) {
|
|
|
+ // document.getElementById("iframe-ppt")?.attachEvent("click", () => {
|
|
|
// activeData.model = !activeData.model
|
|
|
// });
|
|
|
- // } else {
|
|
|
- // document.getElementById("iframe-ppt")?.contentWindow?.postMessage({
|
|
|
+ // } else {
|
|
|
+ // document.getElementById("iframe-ppt")?.contentWindow?.postMessage({
|
|
|
// api: 'onAttendToggleMenu'
|
|
|
// }, '*');
|
|
|
- // }
|
|
|
- // }
|
|
|
+ // }
|
|
|
+ // }
|
|
|
|
|
|
// 切换播放
|
|
|
// const togglePlay = (m: any, isPlay: boolean) => {
|
|
@@ -578,8 +578,8 @@ export default defineComponent({
|
|
|
const handleSwipeChange = (index: number) => {
|
|
|
// 如果是当前正在播放 或者是视频最后一个
|
|
|
if (popupData.activeIndex == index) return;
|
|
|
- data.animationState = 'start'
|
|
|
- data.videoState = 'init'
|
|
|
+ data.animationState = 'start';
|
|
|
+ data.videoState = 'init';
|
|
|
handleStop();
|
|
|
clearTimeout(acitveTimer.value);
|
|
|
activeData.model = true;
|
|
@@ -589,7 +589,7 @@ export default defineComponent({
|
|
|
acitveTimer.value = setTimeout(
|
|
|
() => {
|
|
|
const item = data.itemList[index];
|
|
|
-
|
|
|
+
|
|
|
if (item) {
|
|
|
if (item.type == 'MUSIC') {
|
|
|
activeData.model = true;
|
|
@@ -614,7 +614,7 @@ export default defineComponent({
|
|
|
item.error = false;
|
|
|
// item.videoEle?.onPlay();
|
|
|
}
|
|
|
- data.animationState = 'end'
|
|
|
+ data.animationState = 'end';
|
|
|
});
|
|
|
}
|
|
|
if (item.type === 'PPT') {
|
|
@@ -860,8 +860,8 @@ export default defineComponent({
|
|
|
const toggleListenerKeyUp = (type: string) => {
|
|
|
if (type === 'remove') {
|
|
|
document.body.removeEventListener('keyup', () => {
|
|
|
- listenerKeyUpState.value = false
|
|
|
- })
|
|
|
+ listenerKeyUpState.value = false;
|
|
|
+ });
|
|
|
} else {
|
|
|
// 监听页面键盘事件 - 上下切换
|
|
|
document.body.addEventListener('keyup', (e: KeyboardEvent) => {
|
|
@@ -876,9 +876,9 @@ export default defineComponent({
|
|
|
handlePreAndNext('down');
|
|
|
}
|
|
|
});
|
|
|
- listenerKeyUpState.value = true
|
|
|
+ listenerKeyUpState.value = true;
|
|
|
}
|
|
|
- }
|
|
|
+ };
|
|
|
|
|
|
// 监听切换到ppt课件时,手动移除键盘监听器
|
|
|
// watch(() => popupData.activeIndex, () => {
|
|
@@ -1098,12 +1098,12 @@ export default defineComponent({
|
|
|
return false;
|
|
|
});
|
|
|
const activeVideoItem = computed(() => {
|
|
|
- const item = data.itemList[popupData.activeIndex]
|
|
|
+ const item = data.itemList[popupData.activeIndex];
|
|
|
if (item && item.type && item.type.toLocaleUpperCase() === 'VIDEO') {
|
|
|
- return item
|
|
|
+ return item;
|
|
|
}
|
|
|
- return {}
|
|
|
- })
|
|
|
+ return {};
|
|
|
+ });
|
|
|
|
|
|
// 右侧菜单栏
|
|
|
const rightList = reactive([
|
|
@@ -1111,43 +1111,43 @@ export default defineComponent({
|
|
|
name: '结束课程',
|
|
|
name2: '结束预览',
|
|
|
icon: rightIconEnd,
|
|
|
- id: 1,
|
|
|
+ id: 1
|
|
|
},
|
|
|
{
|
|
|
name: '布置作业',
|
|
|
icon: rightIconArrange,
|
|
|
- id: 2,
|
|
|
+ id: 2
|
|
|
},
|
|
|
{
|
|
|
name: '批注',
|
|
|
icon: rightIconPostil,
|
|
|
- id: 3,
|
|
|
+ id: 3
|
|
|
},
|
|
|
{
|
|
|
name: '白板',
|
|
|
icon: rightIconWhiteboard,
|
|
|
- id: 4,
|
|
|
+ id: 4
|
|
|
},
|
|
|
{
|
|
|
name: '节拍器',
|
|
|
icon: rightIconMetronome,
|
|
|
- id: 5,
|
|
|
+ id: 5
|
|
|
},
|
|
|
{
|
|
|
name: '调音器',
|
|
|
icon: rightIconTuner,
|
|
|
- id: 6,
|
|
|
+ id: 6
|
|
|
},
|
|
|
{
|
|
|
name: '计时器',
|
|
|
icon: rightIconTimer,
|
|
|
- id: 7,
|
|
|
+ id: 7
|
|
|
},
|
|
|
{
|
|
|
name: '收起',
|
|
|
icon: rightIconPackUp,
|
|
|
- id: 8,
|
|
|
- },
|
|
|
+ id: 8
|
|
|
+ }
|
|
|
]);
|
|
|
|
|
|
// 底部菜单栏
|
|
@@ -1155,26 +1155,25 @@ export default defineComponent({
|
|
|
{
|
|
|
name: '切换章节',
|
|
|
icon: bottomIconSwitch,
|
|
|
- id: 1,
|
|
|
+ id: 1
|
|
|
},
|
|
|
{
|
|
|
name: '资源列表',
|
|
|
icon: bottomIconResource,
|
|
|
- id: 2,
|
|
|
+ id: 2
|
|
|
},
|
|
|
{
|
|
|
name: '上一张',
|
|
|
icon: bottomIconPre,
|
|
|
- id: 3,
|
|
|
+ id: 3
|
|
|
},
|
|
|
{
|
|
|
name: '下一张',
|
|
|
icon: bottomIconNext,
|
|
|
- id: 4,
|
|
|
+ id: 4
|
|
|
}
|
|
|
]);
|
|
|
const rightColumnShow = ref(true);
|
|
|
-
|
|
|
|
|
|
// 右边栏操作
|
|
|
const operateRightBtn = async (id: number) => {
|
|
@@ -1201,50 +1200,49 @@ export default defineComponent({
|
|
|
rows: 99
|
|
|
});
|
|
|
if (res.data.rows && res.data.rows.length) {
|
|
|
- data.modalAttendMessage =
|
|
|
- '本节课已设置课后作业,是否布置?';
|
|
|
+ data.modalAttendMessage = '本节课已设置课后作业,是否布置?';
|
|
|
}
|
|
|
- data.modelAttendStatus = true;
|
|
|
+ data.modelAttendStatus = true;
|
|
|
break;
|
|
|
case 3:
|
|
|
openStudyTool({
|
|
|
type: 'pen',
|
|
|
icon: iconNote,
|
|
|
name: '批注'
|
|
|
- })
|
|
|
+ });
|
|
|
break;
|
|
|
case 4:
|
|
|
openStudyTool({
|
|
|
type: 'whiteboard',
|
|
|
icon: iconWhite,
|
|
|
name: '白板'
|
|
|
- })
|
|
|
+ });
|
|
|
break;
|
|
|
case 5:
|
|
|
- startShowModal('beatIcon')
|
|
|
+ startShowModal('beatIcon');
|
|
|
break;
|
|
|
case 6:
|
|
|
- startShowModal('toneIcon')
|
|
|
+ startShowModal('toneIcon');
|
|
|
break;
|
|
|
case 7:
|
|
|
- startShowModal('setTimeIcon')
|
|
|
+ startShowModal('setTimeIcon');
|
|
|
break;
|
|
|
case 8:
|
|
|
- rightColumnShow.value = false
|
|
|
- break;
|
|
|
+ rightColumnShow.value = false;
|
|
|
+ break;
|
|
|
default:
|
|
|
break;
|
|
|
}
|
|
|
- }
|
|
|
+ };
|
|
|
|
|
|
// 底部悬浮按钮操作
|
|
|
const operateBottomBtn = (id: number) => {
|
|
|
switch (id) {
|
|
|
case 1:
|
|
|
- popupData.chapterOpen = true
|
|
|
+ popupData.chapterOpen = true;
|
|
|
break;
|
|
|
case 2:
|
|
|
- popupData.open = true
|
|
|
+ popupData.open = true;
|
|
|
break;
|
|
|
case 3:
|
|
|
if (!isUpArrow.value) return;
|
|
@@ -1253,11 +1251,11 @@ export default defineComponent({
|
|
|
case 4:
|
|
|
if (!isDownArrow.value) return;
|
|
|
handlePreAndNext('down');
|
|
|
- break;
|
|
|
+ break;
|
|
|
default:
|
|
|
break;
|
|
|
}
|
|
|
- }
|
|
|
+ };
|
|
|
|
|
|
return () => (
|
|
|
<div id="playContent" class={[styles.playContent, 'wrap']}>
|
|
@@ -1288,23 +1286,21 @@ export default defineComponent({
|
|
|
}
|
|
|
: { opacity: 0, zIndex: -1 }
|
|
|
}
|
|
|
- class={styles.itemDiv}
|
|
|
- >
|
|
|
+ class={styles.itemDiv}>
|
|
|
<VideoPlay
|
|
|
- ref={(el: any) => data.videoItemRef = el}
|
|
|
+ ref={(el: any) => (data.videoItemRef = el)}
|
|
|
item={activeVideoItem.value}
|
|
|
showModel={activeData.model}
|
|
|
onClose={setModelOpen}
|
|
|
-
|
|
|
onCanplay={() => {
|
|
|
- data.videoState = 'play'
|
|
|
+ data.videoState = 'play';
|
|
|
}}
|
|
|
onPause={() => {
|
|
|
- clearTimeout(activeData.timer)
|
|
|
- activeData.model = true
|
|
|
+ clearTimeout(activeData.timer);
|
|
|
+ activeData.model = true;
|
|
|
}}
|
|
|
onEnded={() => {
|
|
|
- const _index = popupData.activeIndex + 1
|
|
|
+ const _index = popupData.activeIndex + 1;
|
|
|
if (_index < data.itemList.length) {
|
|
|
handleSwipeChange(_index);
|
|
|
}
|
|
@@ -1362,9 +1358,12 @@ export default defineComponent({
|
|
|
}}>
|
|
|
{m.type === 'VIDEO' ? (
|
|
|
<>
|
|
|
- <img src={m.coverImg} onLoad={() => {
|
|
|
- m.isprepare = true;
|
|
|
- }} />
|
|
|
+ <img
|
|
|
+ src={m.coverImg}
|
|
|
+ onLoad={() => {
|
|
|
+ m.isprepare = true;
|
|
|
+ }}
|
|
|
+ />
|
|
|
{/* <VideoPlay
|
|
|
ref={(v: any) => (data.videoRefs[mIndex] = v)}
|
|
|
item={m}
|
|
@@ -1392,12 +1391,12 @@ export default defineComponent({
|
|
|
}}
|
|
|
/> */}
|
|
|
<Transition name="van-fade">
|
|
|
- { (
|
|
|
+ {
|
|
|
<div class={styles.loadWrap}>
|
|
|
<Vue3Lottie
|
|
|
animationData={playLoadData}></Vue3Lottie>
|
|
|
</div>
|
|
|
- )}
|
|
|
+ }
|
|
|
</Transition>
|
|
|
</>
|
|
|
) : m.type === 'IMG' ? (
|
|
@@ -1430,13 +1429,19 @@ export default defineComponent({
|
|
|
}
|
|
|
}}
|
|
|
/>
|
|
|
- )
|
|
|
- // : m.type === 'PPT' ? <div class={styles.iframePpt}>
|
|
|
+ ) : // : m.type === 'PPT' ? <div class={styles.iframePpt}>
|
|
|
// <div class={styles.pptBox}></div>
|
|
|
// <iframe src={`https://view.officeapps.live.com/op/embed.aspx?src=${encodeURIComponent(m.content)}`} width='100%' height='100%' frameborder='1'></iframe>
|
|
|
// </div>
|
|
|
- : m.type === 'PPT' ? <iframe src={`https://view.officeapps.live.com/op/embed.aspx?src=${encodeURIComponent(m.content)}`} width='100%' height='100%' frameborder='1'></iframe>
|
|
|
- : (
|
|
|
+ m.type === 'PPT' ? (
|
|
|
+ <iframe
|
|
|
+ src={`https://view.officeapps.live.com/op/embed.aspx?src=${encodeURIComponent(
|
|
|
+ m.content
|
|
|
+ )}`}
|
|
|
+ width="100%"
|
|
|
+ height="100%"
|
|
|
+ frameborder="1"></iframe>
|
|
|
+ ) : (
|
|
|
<MusicScore
|
|
|
activeModel={activeData.model}
|
|
|
activeStatus={popupData.activeIndex === mIndex}
|
|
@@ -1602,37 +1607,58 @@ export default defineComponent({
|
|
|
</div> */}
|
|
|
|
|
|
{/* 右边操作栏 */}
|
|
|
- <div class={[styles.rightColumn, !rightColumnShow.value ? styles.rightColumnHide : '', studyData.type !== 'init' && (studyData.penShow || studyData.whiteboardShow) ? styles.rightColumnZ : '' ]}>
|
|
|
+ <div
|
|
|
+ class={[
|
|
|
+ styles.rightColumn,
|
|
|
+ !rightColumnShow.value ? styles.rightColumnHide : '',
|
|
|
+ studyData.type !== 'init' &&
|
|
|
+ (studyData.penShow || studyData.whiteboardShow)
|
|
|
+ ? styles.rightColumnZ
|
|
|
+ : ''
|
|
|
+ ]}>
|
|
|
{rightList.map((item: any, index: number) => (
|
|
|
- <div
|
|
|
- class={[
|
|
|
- styles.rightItem,
|
|
|
- (item.id === 2 && data.preStudentNum <= 0) ? styles.itemDisabled : ''
|
|
|
- ]}
|
|
|
- onClick={() => operateRightBtn(item.id)}>
|
|
|
- <img src={item.icon} />
|
|
|
- <div class={styles.rightTips}>{index === 0 && data.type === 'preview' ? item.name2 : item.name}</div>
|
|
|
+ <div
|
|
|
+ class={[
|
|
|
+ styles.rightItem,
|
|
|
+ item.id === 2 && data.preStudentNum <= 0
|
|
|
+ ? styles.itemDisabled
|
|
|
+ : ''
|
|
|
+ ]}
|
|
|
+ onClick={() => operateRightBtn(item.id)}>
|
|
|
+ <img src={item.icon} />
|
|
|
+ <div class={styles.rightTips}>
|
|
|
+ {index === 0 && data.type === 'preview'
|
|
|
+ ? item.name2
|
|
|
+ : item.name}
|
|
|
</div>
|
|
|
- ))}
|
|
|
- </div>
|
|
|
- {
|
|
|
- !rightColumnShow.value && <img
|
|
|
- class={[styles.rightHideIcon, !rightColumnShow.value ? styles.rightIconShow : '']}
|
|
|
+ </div>
|
|
|
+ ))}
|
|
|
+ </div>
|
|
|
+ {!rightColumnShow.value && (
|
|
|
+ <img
|
|
|
+ class={[
|
|
|
+ styles.rightHideIcon,
|
|
|
+ !rightColumnShow.value ? styles.rightIconShow : ''
|
|
|
+ ]}
|
|
|
src={rightHideIcon}
|
|
|
- onClick={() => rightColumnShow.value = true } />
|
|
|
- }
|
|
|
+ onClick={() => (rightColumnShow.value = true)}
|
|
|
+ />
|
|
|
+ )}
|
|
|
{/* 右下角悬浮按钮 */}
|
|
|
<div class={styles.bottomColumn}>
|
|
|
{bottomList.map((item: any, index: number) => (
|
|
|
- <div
|
|
|
- class={[
|
|
|
- styles.bottomItem,
|
|
|
- ((item.id === 3 && !isUpArrow.value) || (item.id === 4 && !isDownArrow.value)) ? styles.itemDisabled : ''
|
|
|
- ]}
|
|
|
- onClick={() => operateBottomBtn(item.id)}>
|
|
|
- <img src={item.icon} />
|
|
|
- <div class={styles.bottomTips}>{item.name}</div>
|
|
|
- </div>
|
|
|
+ <div
|
|
|
+ class={[
|
|
|
+ styles.bottomItem,
|
|
|
+ (item.id === 3 && !isUpArrow.value) ||
|
|
|
+ (item.id === 4 && !isDownArrow.value)
|
|
|
+ ? styles.itemDisabled
|
|
|
+ : ''
|
|
|
+ ]}
|
|
|
+ onClick={() => operateBottomBtn(item.id)}>
|
|
|
+ <img src={item.icon} />
|
|
|
+ <div class={styles.bottomTips}>{item.name}</div>
|
|
|
+ </div>
|
|
|
))}
|
|
|
</div>
|
|
|
|
|
@@ -1727,7 +1753,7 @@ export default defineComponent({
|
|
|
{/* <div class={styles.modelAttendContent}>
|
|
|
{data.modalAttendMessage}
|
|
|
</div> */}
|
|
|
- <NSpace class={styles.btnGroupModal}>
|
|
|
+ <NSpace class={styles.btnGroupModal} justify="center">
|
|
|
<NButton
|
|
|
type="default"
|
|
|
round
|