|
|
@@ -1,36 +1,233 @@
|
|
|
<template>
|
|
|
<el-row>
|
|
|
- <span>音频文件</span>
|
|
|
+ <el-row>
|
|
|
+ <el-button size="mini" type="danger" @click="loadAll">加载视频</el-button>
|
|
|
+ </el-row>
|
|
|
+ <el-row>
|
|
|
+ <el-col v-for="(item, index) in dataList" :key="index" :md="6" :sm="12" :xs="12">
|
|
|
+ <el-row style="padding-right: 5px; padding-left: 5px; padding-bottom: 5px">
|
|
|
+ <el-card class="box-card">
|
|
|
+ <div slot="header" class="clearfix">
|
|
|
+ <span style="left: 0;margin-bottom: 0px;color: black;">{{ item.filename }}</span>
|
|
|
+ </div>
|
|
|
+ <div class="text item">
|
|
|
+ <audio-player
|
|
|
+ :id="item.fileId"
|
|
|
+ ref="audioPlayer"
|
|
|
+ :is-loop="false"
|
|
|
+ :show-prev-button="false"
|
|
|
+ :show-next-button="false"
|
|
|
+ :show-playback-rate="false"
|
|
|
+ :audio-list="audioList.map(elm => elm.url)"
|
|
|
+ :before-play="handleBeforePlay"
|
|
|
+ theme-color="#87CEFA"
|
|
|
+ @playing="onPlaying"
|
|
|
+ @on-progress-move="onProgressMove"
|
|
|
+ @ended="onEnd"
|
|
|
+ />
|
|
|
+ </div>
|
|
|
+ </el-card>
|
|
|
+ </el-row>
|
|
|
+ </el-col>
|
|
|
+ </el-row>
|
|
|
</el-row>
|
|
|
</template>
|
|
|
|
|
|
<script>
|
|
|
+import DPlayer from 'dplayer'
|
|
|
+import {
|
|
|
+ getImageList
|
|
|
+} from '@/api/disk'
|
|
|
+import SocketInstance from '@/utils/ws/socket-instance'
|
|
|
+
|
|
|
export default {
|
|
|
- name: 'FileAudio',
|
|
|
+ name: 'FileVideo',
|
|
|
data() {
|
|
|
return {
|
|
|
+ DPlayer,
|
|
|
+ dplayer: null,
|
|
|
// 屏幕宽度, 为了控制分页条的大小
|
|
|
screenWidth: document.body.clientWidth,
|
|
|
- data: {
|
|
|
- },
|
|
|
+ currentPage: 1,
|
|
|
+ pageSize: 10,
|
|
|
+ totalSize: 0,
|
|
|
+ dataList: [],
|
|
|
+ audioList: [],
|
|
|
+ searchForm: {
|
|
|
+ pageNumber: 1,
|
|
|
+ fileType: 1003
|
|
|
+ }
|
|
|
}
|
|
|
},
|
|
|
created() {
|
|
|
document.title = '我的音频'
|
|
|
+ this.getData()
|
|
|
},
|
|
|
- mounted() {
|
|
|
- // 当窗口宽度改变时获取屏幕宽度
|
|
|
- window.onresize = () => {
|
|
|
- return () => {
|
|
|
- window.screenWidth = document.body.clientWidth
|
|
|
- this.screenWidth = window.screenWidth
|
|
|
+ methods: {
|
|
|
+ getData() {
|
|
|
+ this.dataList = []
|
|
|
+ getImageList(this.searchForm).then(resp => {
|
|
|
+ if (resp.code === 0) {
|
|
|
+ this.dataList = resp.data.list
|
|
|
+ this.totalSize = resp.data.totalSize
|
|
|
+ for (const item of this.dataList) {
|
|
|
+ console.log(item)
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ this.$notify({
|
|
|
+ title: '提示',
|
|
|
+ message: resp.msg,
|
|
|
+ type: 'warning',
|
|
|
+ duration: 3000
|
|
|
+ })
|
|
|
+ }
|
|
|
+ }).catch(error => {
|
|
|
+ this.$notify({
|
|
|
+ title: '提示',
|
|
|
+ message: error.message,
|
|
|
+ type: 'error',
|
|
|
+ duration: 3000
|
|
|
+ })
|
|
|
+ })
|
|
|
+ },
|
|
|
+ initMp4Player(fileId, videoUrl) {
|
|
|
+ return new DPlayer({
|
|
|
+ container: document.getElementById(fileId),
|
|
|
+ lang: 'zh-cn',
|
|
|
+ screenshot: false,
|
|
|
+ autoplay: false,
|
|
|
+ volume: 0.1,
|
|
|
+ mutex: false,
|
|
|
+ video: {
|
|
|
+ url: videoUrl
|
|
|
+ }
|
|
|
+ })
|
|
|
+ },
|
|
|
+ loadAll() {
|
|
|
+ for (const item of this.dataList) {
|
|
|
+ /* const elem = document.getElementById(item.fileId)
|
|
|
+ console.log(elem)*/
|
|
|
+ this.initMp4Player(item.fileId, item.url)
|
|
|
}
|
|
|
+ },
|
|
|
+ // 播放前做的事
|
|
|
+ handleBeforePlay(next) {
|
|
|
+ // 这里可以做一些事情...
|
|
|
+ // this.audioList[this.$refs.audioPlayer.currentPlayIndex].name
|
|
|
+ this.$refs.audioPlayer.$refs.audio.currentTime = this.audioInfo.currentTime
|
|
|
+ // 开始播放
|
|
|
+ next()
|
|
|
+ },
|
|
|
+ handlePlaySpecify() {
|
|
|
+ this.$refs.audioPlayer.currentPlayIndex = 1
|
|
|
+ this.$nextTick(() => {
|
|
|
+ this.$refs.audioPlayer.play()
|
|
|
+ this.title = this.audioList[
|
|
|
+ this.$refs.audioPlayer.currentPlayIndex
|
|
|
+ ].name
|
|
|
+ })
|
|
|
+ },
|
|
|
+ onPlaying() {
|
|
|
+ const jsonData = {}
|
|
|
+ jsonData.videoId = this.audioInfo.audioId
|
|
|
+ jsonData.currentTime = this.$refs.audioPlayer.$refs.audio.currentTime
|
|
|
+ SocketInstance.send(jsonData)
|
|
|
+ },
|
|
|
+ onProgressMove(event) {
|
|
|
+ },
|
|
|
+ onEnd(event) {
|
|
|
}
|
|
|
- },
|
|
|
- methods: {
|
|
|
}
|
|
|
}
|
|
|
</script>
|
|
|
|
|
|
<style scoped>
|
|
|
+.time {
|
|
|
+ font-size: 15px;
|
|
|
+ color: #999;
|
|
|
+}
|
|
|
+
|
|
|
+.bottom {
|
|
|
+ margin-top: 13px;
|
|
|
+ line-height: 12px;
|
|
|
+}
|
|
|
+
|
|
|
+.tit {
|
|
|
+ font-weight: 700;
|
|
|
+ font-size: 18px;
|
|
|
+
|
|
|
+ height: 50px;
|
|
|
+ overflow: hidden;
|
|
|
+ text-overflow: ellipsis;
|
|
|
+ display: -webkit-box;
|
|
|
+ -webkit-line-clamp: 2; /*行数*/
|
|
|
+ -webkit-box-orient: vertical;
|
|
|
+}
|
|
|
+
|
|
|
+.num {
|
|
|
+ position: relative;
|
|
|
+ font-size: 15px;
|
|
|
+ padding-top: 9px;
|
|
|
+}
|
|
|
+
|
|
|
+/*处于手机屏幕时*/
|
|
|
+@media screen and (max-width: 768px) {
|
|
|
+ .tit {
|
|
|
+ font-weight: 600;
|
|
|
+ font-size: 12px;
|
|
|
+ height: 32px;
|
|
|
+ }
|
|
|
+ .time {
|
|
|
+ font-size: 10px;
|
|
|
+ color: #999;
|
|
|
+ }
|
|
|
+ .num {
|
|
|
+ font-size: 9px;
|
|
|
+ padding-top: 3px;
|
|
|
+ }
|
|
|
+ .bottom {
|
|
|
+ margin-top: 2px;
|
|
|
+ line-height: 7px;
|
|
|
+ }
|
|
|
+ .coverImg {
|
|
|
+ height: 120px !important;
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+.coverImg {
|
|
|
+ width: 100%;
|
|
|
+ height: 175px;
|
|
|
+ display: block;
|
|
|
+}
|
|
|
+
|
|
|
+.clearfix:before,
|
|
|
+.clearfix:after {
|
|
|
+ display: table;
|
|
|
+ content: "";
|
|
|
+}
|
|
|
+
|
|
|
+.clearfix:after {
|
|
|
+ clear: both;
|
|
|
+}
|
|
|
+
|
|
|
+.card {
|
|
|
+ margin-bottom: 20px;
|
|
|
+ transition: all 0.6s; /*所有属性变化在0.6秒内执行动画*/
|
|
|
+}
|
|
|
+
|
|
|
+/*.card:hover {
|
|
|
+ !*鼠标放上之后元素变成1.06倍大小*!
|
|
|
+ transform: scale(1.06);
|
|
|
+}*/
|
|
|
+.imgs {
|
|
|
+ position: relative;
|
|
|
+}
|
|
|
+.play-icon {
|
|
|
+ position: absolute;
|
|
|
+ /*top: -15px;*/
|
|
|
+ right: 2%;
|
|
|
+ bottom: 5px;
|
|
|
+ z-index: 7;
|
|
|
+ width: 40px;
|
|
|
+}
|
|
|
</style>
|