|
|
@@ -3,11 +3,27 @@
|
|
|
<!-- v-if="work.type == " -->
|
|
|
<div class="w-work">
|
|
|
<div class="work" v-if="work.type == 0" @click="imageView(work.works)"><img :src="work.works" alt="" /></div>
|
|
|
+ <div class="work" v-else-if="work.type == 3" @click="mediaPreview(work.works)">
|
|
|
+ <img src="@/assets/images/works/isVideo.png" alt="" />
|
|
|
+ </div>
|
|
|
<div class="work" v-else><img src="@/assets/images/works/noImg.png" alt="" /></div>
|
|
|
</div>
|
|
|
<div class="s-name">
|
|
|
<span>{{ work.sName }}</span>
|
|
|
</div>
|
|
|
+ <van-overlay :show="show" @click="overlayShow" style="display: flex; align-items: center">
|
|
|
+ <div class="wrapper" @click.stop>
|
|
|
+ <video-player
|
|
|
+ class="video-player vjs-custom-skin"
|
|
|
+ ref="videoPlayer"
|
|
|
+ :playsinline="playsinline"
|
|
|
+ @canplay="onPlayerCanplay($event)"
|
|
|
+ :options="playerO"
|
|
|
+ @play="onPlayerPlay($event)"
|
|
|
+ style="width: 100%; height: 100%"
|
|
|
+ ></video-player>
|
|
|
+ </div>
|
|
|
+ </van-overlay>
|
|
|
</div>
|
|
|
</template>
|
|
|
|
|
|
@@ -20,13 +36,65 @@ export default {
|
|
|
}
|
|
|
},
|
|
|
data() {
|
|
|
- return {}
|
|
|
+ return {
|
|
|
+ playerOptions: {
|
|
|
+ playbackRates: [0.7, 1.0, 1.5, 2.0], // 播放速度
|
|
|
+ autoplay: false, // 如果true,浏览器准备好时开始回放。
|
|
|
+ muted: false, // 默认情况下将会消除任何音频。
|
|
|
+ loop: false, // 导致视频一结束就重新开始。
|
|
|
+ preload: 'auto', // 建议浏览器在<video>加载元素后是否应该开始下载视频数据。auto浏览器选择最佳行为,立即开始加载视频(如果浏览器支持)
|
|
|
+ language: 'zh-CN',
|
|
|
+ aspectRatio: '16:9', // 将播放器置于流畅模式,并在计算播放器的动态大小时使用该值。值应该代表一个比例 - 用冒号分隔的两个数字(例如"16:9"或"4:3")
|
|
|
+ fluid: true, // 当true时,Video.js player将拥有流体大小。换句话说,它将按比例缩放以适应其容器。
|
|
|
+ sources: [
|
|
|
+ {
|
|
|
+ type: 'video/mp4', // 这里的种类支持很多种:基本视频格式、直播、流媒体等,具体可以参看git网址项目 || "video/ogg"|| "video/webm"
|
|
|
+ src: '' // url地址require("../../assets/media/aaa.mp4")
|
|
|
+ }
|
|
|
+ ],
|
|
|
+ // poster: require("../../assets/tu31.png"), //你的封面地址
|
|
|
+ // poster: dataRes.imgUrl, //你的封面地址
|
|
|
+ notSupportedMessage: '此视频暂无法播放,请稍后再试', // 允许覆盖Video.js无法播放媒体源时显示的默认信息。
|
|
|
+ controlBar: {
|
|
|
+ timeDivider: true, // 当前时间和持续时间的分隔符
|
|
|
+ durationDisplay: true, // 显示持续时间
|
|
|
+ remainingTimeDisplay: false, // 是否显示剩余时间功能
|
|
|
+ fullscreenToggle: true // 全屏按钮
|
|
|
+ }
|
|
|
+ },
|
|
|
+ show: false,
|
|
|
+ playerO: {}
|
|
|
+ }
|
|
|
+ },
|
|
|
+ computed: {
|
|
|
+ playsinline() {
|
|
|
+ const ua = navigator.userAgent.toLocaleLowerCase()
|
|
|
+ // x5内核
|
|
|
+ if (ua.match(/tencenttraveler/) != null || ua.match(/qqbrowse/) != null) {
|
|
|
+ return false
|
|
|
+ } else {
|
|
|
+ // ios端
|
|
|
+ return true
|
|
|
+ }
|
|
|
+ }
|
|
|
},
|
|
|
methods: {
|
|
|
imageView(src) {
|
|
|
// ImagePreview([src]);
|
|
|
this.$hevueImgPreview({ url: src, clickMaskCLose: true })
|
|
|
- }
|
|
|
+ },
|
|
|
+ mediaPreview(file) {
|
|
|
+ console.log(file)
|
|
|
+ this.show = true
|
|
|
+ this.playerOptions.sources[0].src = file
|
|
|
+ this.playerO = JSON.parse(JSON.stringify(this.playerOptions))
|
|
|
+ },
|
|
|
+ overlayShow() {
|
|
|
+ this.show = false
|
|
|
+ this.$refs.videoPlayer.player.pause()
|
|
|
+ },
|
|
|
+ onPlayerCanplay() {},
|
|
|
+ onPlayerPlay() {}
|
|
|
}
|
|
|
}
|
|
|
</script>
|
|
|
@@ -67,5 +135,12 @@ export default {
|
|
|
@include textoverflow();
|
|
|
}
|
|
|
}
|
|
|
+
|
|
|
+ .wrapper {
|
|
|
+ display: flex;
|
|
|
+ align-items: center;
|
|
|
+ justify-content: center;
|
|
|
+ width: 100%;
|
|
|
+ }
|
|
|
}
|
|
|
</style>
|