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