2021-11-08 19:03:09 +08:00
|
|
|
<template>
|
|
|
|
<el-row ref="mainPlayer">
|
2021-12-01 18:04:53 +08:00
|
|
|
<div v-if="element.videoLinks[element.videoLinks.videoType].sources[0].src" class="player">
|
2021-11-08 19:03:09 +08:00
|
|
|
<video-player
|
|
|
|
ref="videoPlayer"
|
|
|
|
class="vjs-custom-skin"
|
2021-12-01 10:45:17 +08:00
|
|
|
:options="editMode==='preview'?pOption:playerOptions"
|
2021-11-08 19:03:09 +08:00
|
|
|
:playsinline="true"
|
|
|
|
@play="onPlayerPlay($event)"
|
|
|
|
@pause="onPlayerPause($event)"
|
|
|
|
@ended="onPlayerEnded($event)"
|
|
|
|
@loadeddata="onPlayerLoadeddata($event)"
|
|
|
|
@waiting="onPlayerWaiting($event)"
|
|
|
|
@playing="onPlayerPlaying($event)"
|
|
|
|
@timeupdate="onPlayerTimeupdate($event)"
|
|
|
|
@canplay="onPlayerCanplay($event)"
|
|
|
|
@canplaythrough="onPlayerCanplaythrough($event)"
|
|
|
|
@ready="playerReadied"
|
|
|
|
@statechanged="playerStateChanged($event)"
|
|
|
|
/>
|
|
|
|
</div>
|
|
|
|
<div v-else class="info-class">
|
2021-11-09 16:23:50 +08:00
|
|
|
{{ $t('panel.video_add_tips') }}
|
2021-11-08 19:03:09 +08:00
|
|
|
</div>
|
|
|
|
</el-row>
|
|
|
|
</template>
|
|
|
|
|
|
|
|
<script>
|
|
|
|
// custom skin css
|
|
|
|
import '@/custom-theme.css'
|
|
|
|
import { mapState } from 'vuex'
|
2021-11-09 16:23:50 +08:00
|
|
|
// import SWF_URL from 'videojs-swf/dist/video-js.swf'
|
2021-11-08 19:03:09 +08:00
|
|
|
|
|
|
|
export default {
|
|
|
|
props: {
|
|
|
|
// eslint-disable-next-line vue/require-default-prop
|
|
|
|
propValue: {
|
|
|
|
type: String,
|
|
|
|
require: true
|
|
|
|
},
|
|
|
|
// eslint-disable-next-line vue/require-default-prop
|
|
|
|
element: {
|
|
|
|
type: Object
|
|
|
|
},
|
|
|
|
editMode: {
|
|
|
|
type: String,
|
|
|
|
require: false,
|
2021-12-01 10:45:17 +08:00
|
|
|
default: 'edit'
|
2021-11-08 19:03:09 +08:00
|
|
|
},
|
|
|
|
active: {
|
|
|
|
type: Boolean,
|
|
|
|
require: false,
|
|
|
|
default: false
|
|
|
|
},
|
|
|
|
h: {
|
|
|
|
type: Number,
|
|
|
|
default: 200
|
|
|
|
}
|
|
|
|
},
|
|
|
|
data() {
|
|
|
|
return {
|
2021-12-01 10:45:17 +08:00
|
|
|
pOption: {}
|
2021-11-08 19:03:09 +08:00
|
|
|
}
|
|
|
|
},
|
2021-12-01 18:04:53 +08:00
|
|
|
|
2021-11-08 19:03:09 +08:00
|
|
|
computed: {
|
2021-11-16 16:49:15 +08:00
|
|
|
moveFlag() {
|
|
|
|
return (this.element.optStatus.dragging || this.element.optStatus.resizing)
|
|
|
|
},
|
2021-11-16 17:02:22 +08:00
|
|
|
curGap() {
|
2021-11-29 19:18:12 +08:00
|
|
|
return this.element.auxiliaryMatrix ? this.componentGap : 0
|
2021-11-16 17:02:22 +08:00
|
|
|
},
|
2021-11-08 19:03:09 +08:00
|
|
|
player() {
|
|
|
|
return this.$refs.videoPlayer.player
|
|
|
|
},
|
|
|
|
playerOptions() {
|
2021-11-09 16:23:50 +08:00
|
|
|
const videoPlayerOptions = this.element.videoLinks[this.element.videoLinks.videoType]
|
2021-11-16 17:02:22 +08:00
|
|
|
videoPlayerOptions.height = this.h - (this.curGap * 2)
|
2021-11-09 16:23:50 +08:00
|
|
|
return videoPlayerOptions
|
2021-11-08 19:03:09 +08:00
|
|
|
},
|
|
|
|
...mapState([
|
|
|
|
'componentGap',
|
|
|
|
'canvasStyleData'
|
|
|
|
])
|
|
|
|
},
|
2021-12-01 18:04:53 +08:00
|
|
|
created() {
|
|
|
|
this.pOption = this.element.videoLinks[this.element.videoLinks.videoType]
|
|
|
|
this.pOption.height = this.h - (this.curGap * 2)
|
|
|
|
},
|
2021-11-08 19:03:09 +08:00
|
|
|
mounted() {
|
|
|
|
},
|
|
|
|
methods: {
|
|
|
|
// listen event
|
|
|
|
onPlayerPlay(player) {
|
|
|
|
// console.log('player play!', player)
|
|
|
|
},
|
|
|
|
onPlayerPause(player) {
|
|
|
|
// console.log('player pause!', player)
|
|
|
|
},
|
|
|
|
onPlayerEnded(player) {
|
|
|
|
// console.log('player ended!', player)
|
|
|
|
},
|
|
|
|
onPlayerLoadeddata(player) {
|
|
|
|
// console.log('player Loadeddata!', player)
|
|
|
|
},
|
|
|
|
onPlayerWaiting(player) {
|
|
|
|
// console.log('player Waiting!', player)
|
|
|
|
},
|
|
|
|
onPlayerPlaying(player) {
|
|
|
|
// console.log('player Playing!', player)
|
|
|
|
},
|
|
|
|
onPlayerTimeupdate(player) {
|
|
|
|
// console.log('player Timeupdate!', player.currentTime())
|
|
|
|
},
|
|
|
|
onPlayerCanplay(player) {
|
|
|
|
// console.log('player Canplay!', player)
|
|
|
|
},
|
|
|
|
onPlayerCanplaythrough(player) {
|
|
|
|
// console.log('player Ca
|
|
|
|
// console.log('example 01nplaythrough!', player)
|
|
|
|
},
|
|
|
|
|
|
|
|
// or listen state event
|
|
|
|
playerStateChanged(playerCurrentState) {
|
|
|
|
// console.log('player current update state', playerCurrentState)
|
|
|
|
},
|
|
|
|
|
|
|
|
// player is ready
|
|
|
|
playerReadied(player) {
|
|
|
|
// seek to 10s
|
2021-11-16 16:49:15 +08:00
|
|
|
// console.log('example player 1 readied', player)
|
2021-11-08 19:03:09 +08:00
|
|
|
// player.currentTime(10): the player is readied', player)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
</script>
|
|
|
|
|
|
|
|
<style>
|
|
|
|
.info-class{
|
|
|
|
text-align: center;
|
|
|
|
height: 100%;
|
|
|
|
display: flex;
|
|
|
|
align-items: center;
|
|
|
|
justify-content: center;
|
|
|
|
background-color: #FFFFFF;
|
|
|
|
font-size: 12px;
|
|
|
|
color: #9ea6b2;
|
|
|
|
}
|
2021-11-16 16:49:15 +08:00
|
|
|
.move-bg {
|
|
|
|
height: 100%;
|
|
|
|
width: 100%;
|
|
|
|
background-color: #000000;
|
|
|
|
}
|
2021-11-08 19:03:09 +08:00
|
|
|
</style>
|
|
|
|
|