南昌市物联网技防平台-前端
zengh
2021-02-01 2d1fab36d2be3101ed292152891fc92d899dd8ac
Merge remote-tracking branch 'origin/master' into master
1 files modified
137 ■■■■■ changed files
src/views/realTimePolice/real.vue 137 ●●●●● patch | view | raw | blame | history
src/views/realTimePolice/real.vue
@@ -89,7 +89,7 @@
          icon="el-icon-location-outline"
          :size="size"
          :type="type"
          @click.stop="handleAdd11()"
          @click.stop="handleMap()"
          >定位</el-button
        >
      </template>
@@ -99,6 +99,7 @@
      title="警情处置"
      :visible.sync="dialogTableVisible"
      append-to-body="true"
      @close="innerVisibleVideo = false"
    >
      <el-dialog
        class="old-video-dialog"
@@ -108,7 +109,7 @@
        :visible.sync="innerVisibleVideo"
        :close-on-press-escape="false"
        append-to-body
        @opened="openOldVideoBox()"
        @opened="openOldVideoBox"
        @close="closeOldVideoBox"
      >
        <video
@@ -273,18 +274,8 @@
      </el-form>
    </el-dialog>
    <el-drawer
      title="我是标题"
      append-to-body="true"
      :visible.sync="qwe"
      :direction="direction"
    >
      <iframe
        src="http://www.baidu.com"
        frameborder="0"
        width="100%"
        height="600px"
      ></iframe>
    <el-drawer title="电子地图" append-to-body="true" :visible.sync="showMap">
      <iframe :src="mapUrl" frameborder="0" width="100%" height="100%"></iframe>
    </el-drawer>
  </basic-container>
</template>
@@ -302,12 +293,12 @@
export default {
  data() {
    return {
      qwe: false,
      showMap: false,
      mapUrl: "https://s16s652780.51mypc.cn/jfpt/map/index.html",
      hls: "",
      videoSource: "",
      dialogTableVisible: false,
      innerVisibleVideo: false,
      direction: "rtl",
      form: {},
      query: {},
      dateTime: [],
@@ -481,7 +472,8 @@
        ]
      },
      data: [],
      isActive: false
      isActive: false,
      recorder: null
    };
  },
  computed: {
@@ -504,6 +496,13 @@
  },
  created() {
    this.dateTime = this.getDate();
    this.recorder = new Recorder({
      sampleBits: 16, // 采样位数,支持 8 或 16,默认是16
      sampleRate: 16000, // 采样率,支持 11025、16000、22050、24000、44100、48000,根据浏览器默认值,我的chrome是48000
      numChannels: 1 // 声道,支持 1 或 2, 默认是1
      // compiling: false,(0.x版本中生效,1.x增加中)  // 是否边录边转换,默认是false
    });
  },
  methods: {
    rowSave(row, done, loading) {
@@ -761,8 +760,10 @@
    handleHistory(row) {
      this.$router.push({ path: `/real/history/${row.deviceNumber}` });
    },
    handleAdd11() {
      this.qwe = true;
    handleMap() {
      this.showMap = true;
      this.mapUrl =
        "https://s16s652780.51mypc.cn/jfpt/map/index.html?openid=PatrolManagement";
    },
    handleManage(row) {
      this.form = row;
@@ -904,9 +905,8 @@
      };
    },
    queryOldVideo(data) {
      console.log(data);
      var newAxios = axios.create({
        baseURL: "http://s16s652780.51mypc.cn",
        baseURL: "https://s16s652780.51mypc.cn",
        withCredentials: false,
        headers: {
          "Content-type": "application/x-www-form-urlencoded"
@@ -926,8 +926,6 @@
          }
        )
        .then(res => {
          console.log(res.data.data.accessToken);
          newAxios
            .get(
              `/GetPlayUrl?deviceCode=${data.channelNumber}&chl=${data.serialNumber}`
@@ -972,11 +970,7 @@
        this.hls = new Hls();
        console.log(this.videoSource, "19028321321r073");
        var m3u8Url = decodeURIComponent(this.videoSource);
        console.log(m3u8Url);
        this.hls.loadSource(m3u8Url);
@@ -993,45 +987,76 @@
      if (dom.getAttribute("src") != "") {
        dom.pause();
        dom.setAttribute("");
        dom.setAttribute("src", "");
        this.hls.destroy();
      }
    },
    aKeyToCall(e, form) {
      var newCallAxios = axios.create({
        baseURL: "https://s16s652780.51mypc.cn",
        withCredentials: false,
        headers: {
          "Content-Type": "application/json;"
        }
      });
      // 一键呼叫相关函数
      if (this.isActive == true) {
        this.isActive = false;
        newCallAxios
          .post(
            `/api_control`,
            {},
            {
              params: {
                param: { PktType: "GetAccessToken" }
              }
            }
          )
          .then(result => {
            var formData = new FormData();
            var blob = this.recorder.getPCMBlob(); //获取pcm格式音频数据
            //此处获取到blob对象后需要设置fileName满足当前项目上传需求,其它项目可直接传把blob作为file塞入formData
            var newbolb = new Blob([blob], { type: "audio/pcm" });
            var fileOfBlob = new File([newbolb], new Date().getTime() + ".pcm");
            formData.append("file", fileOfBlob);
            document
              .getElementById("real_audio")
              .setAttribute("src", URL.createObjectURL(blob));
            console.log(
              blob,
              newbolb,
              fileOfBlob,
              window.URL.createObjectURL(blob),
              99999
            );
            this.recorder.play();
            newCallAxios
              .post(`/api_control`, blob, {
                params: {
                  param: {
                    PktType: "Talk",
                    accessToken: result.data.data.accessToken,
                    deviceCode: form.channelNumber
                  }
                }
              })
              .then(result => {});
          });
      } else {
        this.isActive = true;
        let recorder = new Recorder({
          sampleBits: 16, // 采样位数,支持 8 或 16,默认是16
          sampleRate: 16000, // 采样率,支持 11025、16000、22050、24000、44100、48000,根据浏览器默认值,我的chrome是48000
          numChannels: 1 // 声道,支持 1 或 2, 默认是1
          // compiling: false,(0.x版本中生效,1.x增加中)  // 是否边录边转换,默认是false
        Recorder.getPermission().then(() => {
          this.recorder.start().then(() => {
            // 开始录音
          });
        });
        var newAxios = axios.create({
          baseURL: "http://s16s652780.51mypc.cn",
          withCredentials: false,
          headers: {
            "Content-type": "application/x-www-form-urlencoded"
          }
        });
        //    newAxios
        //       .post(
        //         `/talk?deviceCode=${form.channelNumber}`,
        //         '12345',
        //       )
        //       .then(result => {
        //           console.log(result)
        //       });
      }
    }
  }