[1078] 完善录像下载

This commit is contained in:
lin
2025-07-10 18:48:25 +08:00
parent 1655e5903b
commit b7a2b6816b
20 changed files with 691 additions and 107 deletions

View File

@@ -169,6 +169,22 @@ export function startPlayback(params) {
}
})
}
export function getRecordTempUrl({ phoneNumber, channelId, startTime, endTime, alarmSign, mediaType, streamType, storageType }) {
return request({
method: 'get',
url: '/api/jt1078/playback/downloadUrl',
params: {
phoneNumber: phoneNumber,
channelId: channelId,
startTime: startTime,
endTime: endTime,
alarmSign: alarmSign,
mediaType: mediaType,
streamType: streamType,
storageType: storageType
}
})
}
export function controlPlayback(params) {
const { phoneNumber, channelId, command, playbackSpeed, time } = params
return request({

View File

@@ -1,7 +1,7 @@
import {
add,
addChannel, controlPlayback, deleteDevice,
fillLight,
fillLight, getRecordTempUrl,
play, ptz,
queryChannels, queryConfig,
queryDeviceById,
@@ -200,6 +200,16 @@ const actions = {
reject(error)
})
})
},
getRecordTempUrl({ commit }, params) {
return new Promise((resolve, reject) => {
getRecordTempUrl(params).then(response => {
const { data } = response
resolve(data)
}).catch(error => {
reject(error)
})
})
}
}

View File

@@ -475,36 +475,62 @@ export default {
spinner: 'el-icon-loading',
background: 'rgba(0, 0, 0, 0.7)'
})
const baseUrl = window.baseUrl ? window.baseUrl : ''
const downloadFileUrl = ((process.env.NODE_ENV === 'development') ? process.env.VUE_APP_BASE_API : baseUrl) +
`/api/jt1078/playback/download?phoneNumber=${this.phoneNumber}&channelId=${this.channelId}&startTime=${row.startTime}&endTime=${row.endTime}` +
`&alarmSign=${row.alarmSign}&mediaType=${row.mediaType}&streamType=${row.streamType}&storageType=${row.storageType}&access-token=${this.$store.getters.token}`
const x = new XMLHttpRequest()
x.open('GET', downloadFileUrl, true)
x.responseType = 'blob'
x.onload = (e) => {
const url = window.URL.createObjectURL(x.response)
const a = document.createElement('a')
a.href = url
a.download = this.phoneNumber + '-' + this.channelId + '.mp4'
a.click()
// 获取下载地址
this.$store.dispatch('jtDevice/getRecordTempUrl', {
phoneNumber: this.phoneNumber,
channelId: this.channelId,
startTime: row.startTime,
endTime: row.endTime,
alarmSign: row.alarmSign,
mediaType: row.mediaType,
streamType: row.streamType,
storageType: row.storageType
}).then(data => {
console.log(data)
// const a = document.createElement('a')
const baseUrl = window.baseUrl
let dev = (process.env.NODE_ENV === 'development' ? process.env.VUE_APP_BASE_API : baseUrl)
// a.href =
// a.download = data + '.mp4'
// a.click()
window.open(`${dev}/api/jt1078/playback/download?path=${data}`)
}).finally(() => {
loading.close()
}
x.ontimeout = (e) => {
loading.close()
this.$message.error({
showClose: true,
message: '加载超时'
})
}
x.onerror = (e) => {
loading.close()
this.$message.error({
showClose: true,
message: e.error
})
}
x.send()
})
// const baseUrl = window.baseUrl ? window.baseUrl : ''
// const downloadFileUrl = ((process.env.NODE_ENV === 'development') ? process.env.VUE_APP_BASE_API : baseUrl) +
// `/api/jt1078/playback/download?phoneNumber=${this.phoneNumber}&channelId=${this.channelId}&startTime=${row.startTime}&endTime=${row.endTime}` +
// `&alarmSign=${row.alarmSign}&mediaType=${row.mediaType}&streamType=${row.streamType}&storageType=${row.storageType}&access-token=${this.$store.getters.token}`
// const x = new XMLHttpRequest()
// x.open('GET', downloadFileUrl, true)
// x.responseType = 'blob'
// x.onload = (e) => {
// const url = window.URL.createObjectURL(x.response)
// const a = document.createElement('a')
// a.href = url
// a.download = this.phoneNumber + '-' + this.channelId + '.mp4'
// a.click()
// loading.close()
// }
// x.ontimeout = (e) => {
// loading.close()
// this.$message.error({
// showClose: true,
// message: '加载超时'
// })
// }
// x.onerror = (e) => {
// loading.close()
// this.$message.error({
// showClose: true,
// message: e.error
// })
// }
// x.send()
},
getFileShowName(item) {
return moment(item.startTime).format('HH:mm:ss') + '-' + moment(item.endTime).format('HH:mm:ss')