From 2b1f7a47394363e95deb4dfa0f1c67d41e747f7f Mon Sep 17 00:00:00 2001
From: 648540858 <648540858@qq.com>
Date: 星期三, 01 二月 2023 10:56:40 +0800
Subject: [PATCH] Merge branch 'wvp-28181-2.0' into fix-269
---
web_src/src/components/dialog/recordDownload.vue | 200 ++++++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 200 insertions(+), 0 deletions(-)
diff --git a/web_src/src/components/dialog/recordDownload.vue b/web_src/src/components/dialog/recordDownload.vue
new file mode 100644
index 0000000..3e8c427
--- /dev/null
+++ b/web_src/src/components/dialog/recordDownload.vue
@@ -0,0 +1,200 @@
+<template>
+<div id="recordDownload" >
+ <el-dialog :title="title" v-if="showDialog" width="45rem" :append-to-body="true" :close-on-click-modal="false" :visible.sync="showDialog" :destroy-on-close="true" @close="close()" center>
+ <el-row>
+ <el-col :span="18" style="padding-top: 7px;">
+ <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-col>
+ </el-row>
+ </el-dialog>
+</div>
+</template>
+
+
+<script>
+
+import moment from "moment";
+
+export default {
+ name: 'recordDownload',
+ created() {
+
+
+ },
+ data() {
+ return {
+ title: "鍥涘�嶉�熶笅杞戒腑...",
+ deviceId: "",
+ channelId: "",
+ app: "",
+ stream: "",
+ mediaServerId: "",
+ showDialog: false,
+ scale: 1,
+ percentage: 0.00,
+ streamInfo: null,
+ taskId: null,
+ getProgressRun: false,
+ getProgressForFileRun: false,
+ timer: null
+
+ };
+ },
+ methods: {
+ openDialog: function (deviceId, channelId, app, stream, mediaServerId) {
+ this.deviceId = deviceId;
+ this.channelId = channelId;
+ this.app = app;
+ this.stream = stream;
+ this.mediaServerId = mediaServerId;
+ this.showDialog = true;
+ this.getProgressRun = true;
+ this.percentage = 0.0;
+ this.getProgressTimer()
+ },
+ getProgressTimer: function (){
+ if (!this.getProgressRun) {
+ return;
+ }
+ if (this.percentage == 100 ) {
+ this.getFileDownload();
+ return;
+ }
+ setTimeout( ()=>{
+ if (!this.showDialog) return;
+ this.getProgress(this.getProgressTimer())
+ }, 5000)
+ },
+ getProgress: function (callback){
+ this.$axios({
+ 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 (callback)callback();
+ }else {
+ this.$message({
+ showClose: true,
+ message: res.data.msg,
+ type: "error",
+ });
+ this.close();
+ }
+
+ }).catch((e) =>{
+ console.log(e)
+ });
+ },
+ close: function (){
+ 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',
+ url: '/api/gb_record/download/stop/' + this.deviceId + "/" + this.channelId+ "/" + this.stream
+ }).then((res)=> {
+ 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);
+ });
+ }
+ }
+};
+</script>
+
+<style>
+
+</style>
--
Gitblit v1.8.0