|
@@ -8,7 +8,8 @@ import {
|
|
|
ref,
|
|
|
watch,
|
|
|
Transition,
|
|
|
- computed
|
|
|
+ computed,
|
|
|
+ onBeforeUnmount
|
|
|
} from 'vue'
|
|
|
import iconBack from './image/back.svg'
|
|
|
import styles from './index.module.less'
|
|
@@ -16,7 +17,7 @@ import 'plyr/dist/plyr.css'
|
|
|
import request from '@/helpers/request'
|
|
|
import { state } from '@/state'
|
|
|
import { useRoute } from 'vue-router'
|
|
|
-import { postMessage, promisefiyPostMessage } from '@/helpers/native-message'
|
|
|
+import { listenerMessage, postMessage, promisefiyPostMessage } from '@/helpers/native-message'
|
|
|
import MusicScore from './component/musicScore'
|
|
|
import iconDian from './image/icon-dian.svg'
|
|
|
import iconPoint from './image/icon-point.svg'
|
|
@@ -249,6 +250,8 @@ export default defineComponent({
|
|
|
type: 'fullscreen'
|
|
|
}
|
|
|
})
|
|
|
+ //检测是否录屏
|
|
|
+ handleLimitScreenRecord()
|
|
|
setTimeout(() => {
|
|
|
data.animationState = 'end'
|
|
|
}, 500)
|
|
@@ -341,6 +344,49 @@ export default defineComponent({
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+ // 切换播放
|
|
|
+ const togglePlay = (m: any, isPlay: boolean) => {
|
|
|
+ if (isPlay) {
|
|
|
+ m.videoEle?.play()
|
|
|
+ } else {
|
|
|
+ m.videoEle?.pause()
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ //录屏时间触发
|
|
|
+ const handleLimitScreenRecord = async () => {
|
|
|
+ const result = await promisefiyPostMessage({
|
|
|
+ api: 'getDeviceStatus',
|
|
|
+ content: { type: 'video' }
|
|
|
+ })
|
|
|
+ const { status } = result?.content || {}
|
|
|
+ if (status == '1') {
|
|
|
+ data.itemList.forEach((item: any) => (item.autoPlay = false))
|
|
|
+ handleStop()
|
|
|
+ showDialog({
|
|
|
+ title: '温馨提示',
|
|
|
+ message: '课件内容请勿录屏',
|
|
|
+ beforeClose: () => {
|
|
|
+ return new Promise((resolve) => {
|
|
|
+ promisefiyPostMessage({
|
|
|
+ api: 'getDeviceStatus',
|
|
|
+ content: { type: 'video' }
|
|
|
+ }).then((res: any) => {
|
|
|
+ console.log(res, 'res')
|
|
|
+ const content = res.content
|
|
|
+ if (content?.status == '1') {
|
|
|
+ resolve(false)
|
|
|
+ } else {
|
|
|
+ const activeItem = data.itemList[popupData.activeIndex]
|
|
|
+ togglePlay(activeItem, true)
|
|
|
+ resolve(true)
|
|
|
+ }
|
|
|
+ })
|
|
|
+ })
|
|
|
+ }
|
|
|
+ })
|
|
|
+ }
|
|
|
+ }
|
|
|
onMounted(async () => {
|
|
|
if (state.platformType === 'STUDENT') {
|
|
|
await getLookVideoData()
|
|
@@ -364,6 +410,30 @@ export default defineComponent({
|
|
|
}
|
|
|
getCourseSchedule()
|
|
|
window.addEventListener('message', iframeHandle)
|
|
|
+
|
|
|
+ //禁止录屏 ios
|
|
|
+ listenerMessage('setVideoPlayer', (result) => {
|
|
|
+ if (result?.content?.status == 'pause') {
|
|
|
+ handleLimitScreenRecord()
|
|
|
+ }
|
|
|
+ })
|
|
|
+
|
|
|
+ // 安卓
|
|
|
+ postMessage({
|
|
|
+ api: 'limitScreenRecord',
|
|
|
+ content: {
|
|
|
+ type: 1
|
|
|
+ }
|
|
|
+ })
|
|
|
+ })
|
|
|
+
|
|
|
+ onBeforeUnmount(() => {
|
|
|
+ postMessage({
|
|
|
+ api: 'limitScreenRecord',
|
|
|
+ content: {
|
|
|
+ type: 0
|
|
|
+ }
|
|
|
+ })
|
|
|
})
|
|
|
|
|
|
const playRef = ref()
|