From 509d9b3cbba7ba8fdc7466c34e46db70d41517a8 Mon Sep 17 00:00:00 2001
From: 648540858 <648540858@qq.com>
Date: 星期二, 27 二月 2024 10:22:13 +0800
Subject: [PATCH] Merge branch 'wvp-28181-2.0' into main-dev
---
web_src/src/components/dialog/recordDownload.vue | 145 ++++++++++++++++--------------------------------
1 files changed, 49 insertions(+), 96 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 df3880c..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( ()=>{
@@ -89,39 +78,47 @@
if (parseFloat(res.data.progress) == 1) {
this.percentage = 100;
}else {
- this.percentage = (res.data.data.progress*100).toFixed(1);
+ 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.$message({
+ showClose: true,
+ message: res.data.msg,
+ type: "error",
+ });
+ this.close();
}
}).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',
@@ -130,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