chenyao
2025-10-24 4cb614975ad7e3d96421ed40aa9709e24f8a703d
src/subPackages/droneConsole/index.vue
@@ -1,20 +1,79 @@
<template>
  <WebViewPlus :src="`${viewUrl}`" @webMessage="onPostMessage"/>
  <up-toast ref="uNotifyRef"></up-toast>
</template>
<script setup>
import {onHide, onLoad, onShow} from "@dcloudio/uni-app";
import WebViewPlus from "@/components/WebViewPlus.vue";
import {getWebViewUrl} from "@/utils/index.js";
import {getEnvObj, getWebViewUrl} from "@/utils/index.js";
import Recorder from "js-audio-recorder";
import dayjs from "dayjs";
import {useUserStore} from "@/store/index.js";
const viewUrl = ref('')
const wayLineJodInfoId = ref(null)
function onPostMessage(event) {
const viewUrl = computed(() => {
  return getWebViewUrl('/DroneConsole', {
    wayLineJodInfoId: wayLineJodInfoId.value,
  })
})
// 文件上传demo
const {VITE_API_BASE_URL} = getEnvObj()
function uploadUtil(options) {
  const {formData, file, url} = options
  return new Promise((resolve, reject) => {
    let accessToken = useUserStore()?.$state?.userInfo?.access_token;
    const file = new File([recorder.getWAVBlob()], '.wav')
    uni.uploadFile({
      url: `${VITE_API_BASE_URL}${url}`,
      name: 'file',
      header: {'Blade-Auth': 'bearer ' + accessToken},
      file,
      formData,
      success: (res) => {
        const resData = JSON.parse(res.data)
        if (resData.code === 200 || resData.code === 0) {
          resolve(res)
        } else {
          showToast(resData.message)
          reject(res)
        }
      },
      fail: (err) => {
        reject(err)
      }
    });
  })
}
function showToast(message) {
  uNotifyRef.value.show({
    type: 'default',
    message,
  });
}
// 保存喊话至广播列表内
function saveSound(data) {
  const recorder = 'xxx'
  const file = new File([recorder?.getWAVBlob()], '.wav')
  uploadUtil({
    file,
    formData: {
      fileName: 'xxx',
      sn: 'xxx',
    },
    url: '/drone-device-core/speak/api/v1/uploadSpeak'
  }).then(res => {
    showToast('保存成功')
  })
}
onLoad((options) => {
  wayLineJodInfoId.value = options.wayLineJodInfoId
  viewUrl.value = getWebViewUrl('/DroneConsole', {wayLineJodInfoId: wayLineJodInfoId.value})
})