feat:视频列表新增分页
This commit is contained in:
@@ -40,7 +40,12 @@
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div v-if="videoLog == 1" class="video-wrapper">
|
<div v-if="videoLog == 1" class="video-wrapper">
|
||||||
<div class="video-list">
|
<div
|
||||||
|
class="video-list"
|
||||||
|
v-infinite-scroll="getVideoList"
|
||||||
|
:infinite-scroll-immediate="false"
|
||||||
|
:infinite-scroll-distance="50"
|
||||||
|
>
|
||||||
<div
|
<div
|
||||||
class="video-item"
|
class="video-item"
|
||||||
v-for="(item, index) in videoList"
|
v-for="(item, index) in videoList"
|
||||||
@@ -130,11 +135,17 @@
|
|||||||
let showNav = ref(true)
|
let showNav = ref(true)
|
||||||
let videoLog = ref(1)
|
let videoLog = ref(1)
|
||||||
let videoRef = ref()
|
let videoRef = ref()
|
||||||
let scenicSpotId = ref('')
|
|
||||||
let regionList = ref()
|
let regionList = ref()
|
||||||
let monitorChange = null
|
let monitorChange = null
|
||||||
let videoSrc = ref('')
|
let videoSrc = ref('')
|
||||||
let show = ref(false)
|
let show = ref(false)
|
||||||
|
let loading = ref(false)
|
||||||
|
let params = reactive({
|
||||||
|
pageNum: 1,
|
||||||
|
pageSize: 16,
|
||||||
|
businessScenicArea: '',
|
||||||
|
businessVideoDisplayPosition: ''
|
||||||
|
})
|
||||||
|
|
||||||
// const postVideoRemain = async () => {
|
// const postVideoRemain = async () => {
|
||||||
// setInterval(() => {
|
// setInterval(() => {
|
||||||
@@ -170,6 +181,7 @@
|
|||||||
const handleNav = (e) => {
|
const handleNav = (e) => {
|
||||||
if (current.value == e) return
|
if (current.value == e) return
|
||||||
videoLog.value = 1
|
videoLog.value = 1
|
||||||
|
params.pageNum = 1
|
||||||
videoList.value = []
|
videoList.value = []
|
||||||
current.value = e
|
current.value = e
|
||||||
getVideoList()
|
getVideoList()
|
||||||
@@ -203,27 +215,33 @@
|
|||||||
videoSrc.value = res.data.url
|
videoSrc.value = res.data.url
|
||||||
}
|
}
|
||||||
const getVideoList = async () => {
|
const getVideoList = async () => {
|
||||||
let res = await getVideoListApi({
|
params.businessVideoDisplayPosition = navList.value[current.value].dictValue
|
||||||
businessScenicArea: scenicSpotId.value,
|
let res = await getVideoListApi(params)
|
||||||
businessVideoDisplayPosition: navList.value[current.value].dictValue
|
if (res.data.length > 0) {
|
||||||
})
|
let list = res.data
|
||||||
videoList.value = res.data
|
list.forEach(async (i) => {
|
||||||
// postVideoRemain()
|
|
||||||
nextTick(() => {
|
|
||||||
videoList.value.forEach(async (item, index) => {
|
|
||||||
const video = document.getElementById(`monitorVideo${index}`)
|
|
||||||
let res = await postRefreshApi({
|
let res = await postRefreshApi({
|
||||||
type: 'hls',
|
type: 'hls',
|
||||||
businessVideoDisplayPosition: item.businessVideoDisplayPosition,
|
businessVideoDisplayPosition: i.businessVideoDisplayPosition,
|
||||||
cameraIndexCode: item.cameraIndexCode
|
cameraIndexCode: i.cameraIndexCode
|
||||||
})
|
})
|
||||||
item.hlsUrl = res.data.hlsUrl
|
return {
|
||||||
|
...i,
|
||||||
|
hlsUrl: res.data.hlsUrl
|
||||||
|
}
|
||||||
|
})
|
||||||
|
videoList.value = [...videoList.value, ...res.data]
|
||||||
|
params.pageNum++
|
||||||
|
// postVideoRemain()
|
||||||
|
nextTick(() => {
|
||||||
|
videoList.value.forEach(async (x, index) => {
|
||||||
|
const video = document.getElementById(`monitorVideo${index}`)
|
||||||
const hls = new Hls({
|
const hls = new Hls({
|
||||||
maxBufferLength: 10, // 最大缓冲长度(秒)
|
maxBufferLength: 10, // 最大缓冲长度(秒)
|
||||||
maxMaxBufferLength: 15, // 缓冲区长度的上限
|
maxMaxBufferLength: 15, // 缓冲区长度的上限
|
||||||
maxBufferSize: 30 * 1000 * 1000 // 最大缓冲大小(字节)
|
maxBufferSize: 30 * 1000 * 1000 // 最大缓冲大小(字节)
|
||||||
})
|
})
|
||||||
hls.loadSource(res.data.hlsUrl)
|
hls.loadSource(x.hlsUrl)
|
||||||
hls.attachMedia(video)
|
hls.attachMedia(video)
|
||||||
hls.on(Hls.Events.MANIFEST_PARSED, () => {
|
hls.on(Hls.Events.MANIFEST_PARSED, () => {
|
||||||
video.play()
|
video.play()
|
||||||
@@ -231,9 +249,10 @@
|
|||||||
})
|
})
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
}
|
||||||
const getVideoType = async (id) => {
|
const getVideoType = async (id) => {
|
||||||
let res = await getVideoTypeApi({
|
let res = await getVideoTypeApi({
|
||||||
businessScenicArea: scenicSpotId.value
|
businessScenicArea: params.businessScenicArea
|
||||||
})
|
})
|
||||||
if (res.data.length > 0) {
|
if (res.data.length > 0) {
|
||||||
navList.value = res.data
|
navList.value = res.data
|
||||||
@@ -244,15 +263,23 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
const getVideoRegions = async () => {
|
const getVideoRegions = async () => {
|
||||||
|
if (loading.value) return
|
||||||
|
loading.value = true
|
||||||
|
try {
|
||||||
let res = await getVideoRegionsApi({
|
let res = await getVideoRegionsApi({
|
||||||
businessScenicArea: scenicSpotId.value
|
businessScenicArea: params.businessScenicArea
|
||||||
})
|
})
|
||||||
regionList.value = res.data
|
regionList.value = res.data
|
||||||
console.log(regionList.value, 'regionList')
|
loading.value = false
|
||||||
|
} catch (error) {
|
||||||
|
loading.value = false
|
||||||
|
}
|
||||||
}
|
}
|
||||||
const onMonitorChange = () => {
|
const onMonitorChange = () => {
|
||||||
monitorChange = PubSub.subscribe('monitorChange', (res, data) => {
|
monitorChange = PubSub.subscribe('monitorChange', (res, data) => {
|
||||||
scenicSpotId.value = data.scenicSpotId
|
params.businessScenicArea = data.scenicSpotId
|
||||||
|
params.pageNum = 1
|
||||||
|
videoList.value = []
|
||||||
regionList.value = []
|
regionList.value = []
|
||||||
getVideoType()
|
getVideoType()
|
||||||
getVideoRegions()
|
getVideoRegions()
|
||||||
|
|||||||
Reference in New Issue
Block a user