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 | 154 ++++++++++++++++++-------------------------------- 1 files changed, 56 insertions(+), 98 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 c50e4ce..c78cd1c --- a/web_src/src/components/dialog/recordDownload.vue +++ b/web_src/src/components/dialog/recordDownload.vue @@ -6,19 +6,7 @@ <el-progress :percentage="percentage"></el-progress> </el-col> <el-col :span="6" > -<!-- <el-dropdown size="mini" title="鎾斁鍊嶉��" style="margin-left: 1px;" @command="gbScale">--> -<!-- <el-button-group>--> -<!-- <el-button size="mini" style="width: 100%">--> -<!-- {{scale}}鍊嶉�� <i class="el-icon-arrow-down el-icon--right"></i>--> -<!-- </el-button>--> -<!-- </el-button-group>--> -<!-- <el-dropdown-menu slot="dropdown">--> -<!-- <el-dropdown-item command="1">1鍊嶉��</el-dropdown-item>--> -<!-- <el-dropdown-item command="2">2鍊嶉��</el-dropdown-item>--> -<!-- <el-dropdown-item command="4">4鍊嶉��</el-dropdown-item>--> -<!-- </el-dropdown-menu>--> -<!-- </el-dropdown>--> - <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> @@ -33,12 +21,12 @@ export default { name: 'recordDownload', created() { - + window.addEventListener('beforeunload', this.stopDownloadRecord) }, data() { return { - title: "鍥涘�嶉�熶笅杞戒腑...", + title: "涓嬭浇涓�...", deviceId: "", channelId: "", app: "", @@ -50,7 +38,8 @@ streamInfo: null, taskId: null, getProgressRun: false, - getProgressForFileRun: false, + timer: null, + downloadFile: null, }; }, @@ -66,12 +55,12 @@ this.percentage = 0.0; this.getProgressTimer() }, - getProgressTimer(){ + getProgressTimer: function (){ if (!this.getProgressRun) { return; } if (this.percentage == 100 ) { - this.getFileDownload(); + return; } setTimeout( ()=>{ @@ -84,43 +73,52 @@ method: 'get', url: `/api/gb_record/download/progress/${this.deviceId}/${this.channelId}/${this.stream}` }).then((res)=> { - console.log(res) - console.log(res.data.progress) - this.streamInfo = res.data; - if (parseFloat(res.data.progress) == 1) { - this.percentage = 100; + 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 { - this.percentage = (res.data.progress*100).toFixed(1); + this.$message({ + showClose: true, + message: res.data.msg, + type: "error", + }); + this.close(); } - if (callback)callback(); - }).catch((e) =>{ + }).catch((e) =>{ + console.log(e) }); }, close: function (){ - if (this.streamInfo.progress < 100) { + 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,64 +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 && res.data.msg === "success") { - // 鏌ヨ杩涘害 - 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) { - 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