From 9f16b5c553b479ea12fe368a7ecc748872ea8b98 Mon Sep 17 00:00:00 2001 From: zxl <763096477@qq.com> Date: 星期四, 12 六月 2025 11:11:27 +0800 Subject: [PATCH] 修改配置文件 --- web_src/src/components/dialog/recordDownload.vue | 120 ++++++++++++++++++----------------------------------------- 1 files changed, 37 insertions(+), 83 deletions(-) diff --git a/web_src/src/components/dialog/recordDownload.vue b/web_src/src/components/dialog/recordDownload.vue old mode 100644 new mode 100755 index 3e8c427..c78cd1c --- a/web_src/src/components/dialog/recordDownload.vue +++ b/web_src/src/components/dialog/recordDownload.vue @@ -6,7 +6,7 @@ <el-progress :percentage="percentage"></el-progress> </el-col> <el-col :span="6" > - <el-button icon="el-icon-download" v-if="percentage < 100" size="mini" title="鐐瑰嚮涓嬭浇鍙皢浠ョ紦瀛橀儴鍒嗕笅杞藉埌鏈湴" @click="download()">鍋滄缂撳瓨骞朵笅杞�</el-button> + <el-button icon="el-icon-download" v-if="downloadFile" size="mini" title="鐐瑰嚮涓嬭浇" @click="downloadFileClientEvent()">涓嬭浇</el-button> </el-col> </el-row> </el-dialog> @@ -21,12 +21,12 @@ export default { name: 'recordDownload', created() { - + window.addEventListener('beforeunload', this.stopDownloadRecord) }, data() { return { - title: "鍥涘�嶉�熶笅杞戒腑...", + title: "涓嬭浇涓�...", deviceId: "", channelId: "", app: "", @@ -38,8 +38,8 @@ streamInfo: null, taskId: null, getProgressRun: false, - getProgressForFileRun: false, - timer: null + timer: null, + downloadFile: null, }; }, @@ -60,7 +60,7 @@ return; } if (this.percentage == 100 ) { - this.getFileDownload(); + return; } setTimeout( ()=>{ @@ -73,13 +73,21 @@ method: 'get', url: `/api/gb_record/download/progress/${this.deviceId}/${this.channelId}/${this.stream}` }).then((res)=> { - console.log(res) if (res.data.code === 0) { this.streamInfo = res.data.data; if (parseFloat(res.data.progress) == 1) { this.percentage = 100; }else { this.percentage = (parseFloat(res.data.data.progress)*100).toFixed(1); + } + if (this.streamInfo.downLoadFilePath) { + if (location.protocol === "https:") { + this.downloadFile = this.streamInfo.downLoadFilePath.httpsPath; + }else { + this.downloadFile = this.streamInfo.downLoadFilePath.httpPath; + } + this.getProgressRun = false; + this.downloadFileClientEvent() } if (callback)callback(); }else { @@ -96,31 +104,21 @@ }); }, close: function (){ - this.stopDownloadRecord(); + if (this.streamInfo.progress < 1) { + this.stopDownloadRecord(); + } + if (this.timer !== null) { window.clearTimeout(this.timer); this.timer = null; } this.showDialog=false; this.getProgressRun = false; - this.getProgressForFileRun = false; }, gbScale: function (scale){ this.scale = scale; }, - download: function (){ - this.getProgressRun = false; - if (this.streamInfo != null ) { - if (this.streamInfo.progress < 1) { - // 鍙戦�佸仠姝㈢紦瀛� - this.stopDownloadRecord((res)=>{ - this.getFileDownload() - }) - }else { - this.getFileDownload() - } - } - }, + stopDownloadRecord: function (callback) { this.$axios({ method: 'get', @@ -129,68 +127,24 @@ if (callback) callback(res) }); }, - getFileDownload: function (){ - this.$axios({ - method: 'get', - url:`/record_proxy/${this.mediaServerId}/api/record/file/download/task/add`, - params: { - app: this.app, - stream: this.stream, - startTime: null, - endTime: null, - } - }).then((res) =>{ - if (res.data.code === 0 ) { - // 鏌ヨ杩涘害 - this.title = "褰曞儚鏂囦欢澶勭悊涓�..." - this.taskId = res.data.data; - this.percentage = 0.0; - this.getProgressForFileRun = true; - this.getProgressForFileTimer(); - } - }).catch(function (error) { - console.log(error); - }); - }, - getProgressForFileTimer: function (){ - if (!this.getProgressForFileRun || this.percentage == 100) { - return; - } - setTimeout( ()=>{ - if (!this.showDialog) return; - this.getProgressForFile(this.getProgressForFileTimer()) - }, 1000) - }, - getProgressForFile: function (callback){ - this.$axios({ - method: 'get', - url:`/record_proxy/${this.mediaServerId}/api/record/file/download/task/list`, - params: { - app: this.app, - stream: this.stream, - taskId: this.taskId, - isEnd: true, - } - }).then((res) => { - console.log(res) - if (res.data.code === 0) { - if (res.data.data.length === 0){ - this.percentage = 0 - return - } - this.percentage = parseFloat(res.data.data.percentage)*100 - if (res.data.data[0].percentage === '1') { - this.getProgressForFileRun = false; - window.open(res.data.data[0].downloadFile) - this.close(); - }else { - if (callback)callback() - } - } - }).catch(function (error) { - console.log(error); - }); + downloadFileClientEvent: function (){ + // window.open(this.downloadFile ) + + let x = new XMLHttpRequest(); + x.open("GET", this.downloadFile, true); + x.responseType = 'blob'; + x.onload=(e)=> { + let url = window.URL.createObjectURL(x.response) + let a = document.createElement('a'); + a.href = url + a.download = this.deviceId + "-" + this.channelId + ".mp4"; + a.click() } + x.send(); + } + }, + destroyed() { + window.removeEventListener('beforeunload', this.stopDownloadRecord) } }; </script> -- Gitblit v1.8.0