648540858
2023-10-11 7de73ebd2bc07a51f0f9db031d6f616bdcfe549c
web_src/src/components/dialog/recordDownload.vue
old mode 100644 new mode 100755
@@ -6,19 +6,8 @@
        <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&#45;&#45;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,7 +22,7 @@
export default {
    name: 'recordDownload',
    created() {
      window.addEventListener('beforeunload', this.stopDownloadRecord)
    },
    data() {
@@ -51,6 +40,8 @@
          taskId: null,
          getProgressRun: false,
          getProgressForFileRun: false,
          timer: null,
          downloadFile: null,
        };
    },
@@ -66,7 +57,7 @@
            this.percentage = 0.0;
            this.getProgressTimer()
        },
        getProgressTimer(){
        getProgressTimer: function (){
          if (!this.getProgressRun) {
            return;
          }
@@ -84,22 +75,36 @@
            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;
            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.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;
@@ -140,7 +145,7 @@
              endTime: null,
            }
          }).then((res) =>{
            if (res.data.code === 0 && res.data.msg === "success") {
            if (res.data.code === 0 ) {
              // 查询进度
              this.title = "录像文件处理中..."
              this.taskId = res.data.data;
@@ -158,7 +163,7 @@
          }
          setTimeout( ()=>{
            if (!this.showDialog) return;
            this.getProgressForFile(this.getProgressForFileTimer())
            this.getProgressForFile(this.getProgressForFileTimer)
          }, 1000)
        },
        getProgressForFile: function (callback){
@@ -173,12 +178,20 @@
            }
          }).then((res) => {
            console.log(res)
            if (res.data.code == 0) {
                this.percentage = parseFloat(res.data.data.percentage)*100
            if (res.data.code === 0) {
              if (res.data.data.length === 0){
                this.percentage = 0
                // 往往在多次请求后(实验五分钟的视频是三次请求),才会返回数据,第一次请求通常是返回空数组
                if (callback)callback()
                return
              }
              // res.data.data应是数组类型
                this.percentage = parseFloat(res.data.data[0].percentage)*100
                 if (res.data.data[0].percentage === '1') {
                   this.getProgressForFileRun = false;
                   window.open(res.data.data[0].downloadFile)
                   this.close();
                   this.downloadFile = res.data.data[0].downloadFile
                   this.title = "文件处理完成,点击按扭下载"
                   // window.open(res.data.data[0].downloadFile)
                 }else {
                   if (callback)callback()
                 }
@@ -186,7 +199,13 @@
          }).catch(function (error) {
            console.log(error);
          });
        }
        },
      downloadFileClientEvent: function (){
        window.open(this.downloadFile )
      }
    },
    destroyed() {
      window.removeEventListener('beforeunload', this.stopDownloadRecord)
    }
};
</script>