zxl
2025-06-12 9f16b5c553b479ea12fe368a7ecc748872ea8b98
web_src/src/components/CloudRecord.vue
@@ -74,6 +74,8 @@
        <template slot-scope="scope">
          <el-button size="medium" icon="el-icon-video-play" type="text" @click="play(scope.row)">播放
          </el-button>
          <el-button size="medium" icon="el-icon-download" type="text" @click="downloadFile(scope.row)">下载
          </el-button>
          <!--            <el-button size="medium" icon="el-icon-delete" type="text" style="color: #f56c6c"-->
          <!--                       @click="deleteRecord(scope.row)">删除-->
          <!--            </el-button>-->
@@ -213,20 +215,51 @@
      console.log(row)
      this.chooseRecord = row;
      this.showPlayer = true;
      let videoPath = row.filePath.substring(row.filePath.length - 25);
      console.log(videoPath)
      this.videoUrl = `${this.getFileBasePath(row)}/download/${row.app}/${row.stream}/${videoPath}`
      console.log(this.videoUrl)
    },
      getFileBasePath(item) {
          let basePath = ""
          if (axios.defaults.baseURL.startsWith("http")) {
              basePath = `${axios.defaults.baseURL}/record_proxy/${item.mediaServerId}`
      this.$axios({
        method: 'get',
        url: `/api/cloud/record/play/path`,
        params: {
          recordId: row.id,
        }
      }).then((res) => {
        console.log(res)
        if (res.data.code === 0) {
          if (location.protocol === "https:") {
            this.videoUrl = res.data.data.httpsPath;
          }else {
              basePath = `${window.location.origin}${axios.defaults.baseURL}/record_proxy/${item.mediaServerId}`
            this.videoUrl = res.data.data.httpPath;
          }
          return basePath;
      },
          console.log(222 )
          console.log(this.videoUrl )
        }
      }).catch((error) => {
        console.log(error);
      });
    },
    downloadFile(file){
      console.log(file)
      this.$axios({
        method: 'get',
        url: `/api/cloud/record/play/path`,
        params: {
          recordId: file.id,
        }
      }).then((res) => {
        console.log(res)
        const link = document.createElement('a');
        link.target = "_blank";
        if (res.data.code === 0) {
          if (location.protocol === "https:") {
            link.href = res.data.data.httpsPath + "&save_name=" + file.fileName;
          }else {
            link.href = res.data.data.httpPath + "&save_name=" + file.fileName;
          }
          link.click();
        }
      }).catch((error) => {
        console.log(error);
      });
    },
    deleteRecord() {
      // TODO
      let that = this;
@@ -248,14 +281,16 @@
      });
    },
    formatTime(time) {
      const h = parseInt(time / 3600)
      const minute = parseInt(time / 60 % 60)
      const second = Math.ceil(time % 60)
      return (h > 0 ? h + `小时` : '') + (minute > 0 ? minute + '分' : '') + second + '秒'
      const h = parseInt(time / 3600 / 1000)
      const minute = parseInt((time - h * 3600 * 1000) / 60 / 1000)
      let second = Math.ceil((time - h * 3600 * 1000 - minute * 60 * 1000) / 1000)
      if (second < 0) {
        second = 0;
      }
      return (h > 0 ? h + `小时` : '') + (minute > 0 ? minute + '分' : '') + (second > 0 ? second + '秒' : '')
    },
    formatTimeStamp(time) {
      return moment.unix(time).format('yyyy-MM-DD HH:mm:ss')
      return moment.unix(time/1000).format('yyyy-MM-DD HH:mm:ss')
    }
  }