罗广辉
2025-10-22 91bd84221266214464d85aac19640c9c7a28f457
feat: 喊话和广播
4 files modified
45 ■■■■ changed files
src/api/drone.js 12 ●●●●● patch | view | raw | blame | history
src/config/env.js 2 ●●● patch | view | raw | blame | history
src/subPackages/droneConsole/index.vue 29 ●●●● patch | view | raw | blame | history
vite.config.js 2 ●●● patch | view | raw | blame | history
src/api/drone.js
@@ -7,3 +7,15 @@
    data,
  })
}
// 上传音频文件
export const uploadSpeak = data => {
  return request({
    url:'/drone-device-core/speak/api/v1/uploadSpeak',
    method: 'post',
    headers: {
      'Content-Type': 'multipart/form-data',
    },
    data,
  })
}
src/config/env.js
@@ -3,7 +3,7 @@
const development = {
  VITE_APP_ENV:'development',
  // 开发环境这里改为自己的
  VITE_APP_WEBVIEW_URL: 'https://wrj.shuixiongit.com/drone-app-web-view/#/webViewWrapper',
  VITE_APP_WEBVIEW_URL: 'http://localhost:5173/drone-app-web-view/#/webViewWrapper',
  VITE_API_BASE_URL: 'https://wrj.shuixiongit.com/api',
}
src/subPackages/droneConsole/index.vue
@@ -7,7 +7,7 @@
import {getWebViewUrl} from "@/utils/index.js";
import Recorder from "js-audio-recorder";
import dayjs from "dayjs";
import {startVoice} from "@/api/drone.js";
import {startVoice, uploadSpeak} from "@/api/drone.js";
import {showToast} from "@dcloudio/uni-h5";
const wayLineJodInfoId = ref(null)
@@ -25,7 +25,7 @@
function onPostMessage(data) {
  if (data.type === 'record') {
    startState.value = 1
    startState.value = '1'
    recorder = new Recorder({
      sampleBits: 16, // 采样位数,支持8或16,默认16
      sampleRate: 16000, // 采样率,支持11025、16000、22050、24000、44100、48000
@@ -33,8 +33,7 @@
    })
    nextTick(() => {
      recorder.start().then(() => {
        recorder.onprocess = duration => {
        }
        recorder.onprocess = duration => {}
      })
    })
  }else if (data.type === 'stopRecord') {
@@ -48,19 +47,33 @@
      recorder = null // 释放资源
    })
  }else if(data.type === 'pushToDrone'){
    pushToDrone()
    pushToDrone(data)
  }else if(data.type === 'saveSound'){
    saveSound(data)
  }
}
// 保存喊话至广播列表内
function saveSound(data) {
  const wavFile = new File([recorder.getWAVBlob()], '.wav')
  let formData = new FormData()
  formData.append('file', wavFile)
  formData.append('fileName', data.soundName)
  formData.append('sn', data.dockSn)
  uploadSpeak(formData).then(res => {
    showToast('保存成功')
  })
}
// 无人机开始喊话
function pushToDrone() {
function pushToDrone(data) {
  let formData = new FormData()
  const wavBlob = recorder.getWAVBlob()
  const wavform = new File([wavBlob], new Date().getTime() + '.wav')
  formData.append('file', wavform)
  formData.append('sn', dockSn.value)
  formData.append('sn', data.dockSn)
  formData.append('psdk_index', 2)
  formData.append('name', soundVideoName.value)
  formData.append('name', data.soundName)
  formData.append('volumn', 100)
  startVoice(formData).then(res => {
    showToast('喊话成功')
vite.config.js
@@ -13,7 +13,7 @@
  const { UNI_PLATFORM,UNI_CUSTOM_DEFINE } = process.env
  const ENV_NAME = UNI_CUSTOM_DEFINE && JSON.parse(UNI_CUSTOM_DEFINE)?.ENV_NAME
  console.log("平台 -> ", UNI_PLATFORM) // 得到 mp-weixin, h5, app 等
  console.log("环境 -> ", ENV_NAME) // 得到 development,test 等
  console.log("环境 -> ", ENV_NAME || 'development') // 得到 development,test 等
  const env = loadEnv(mode, fileURLToPath(new URL("./env", import.meta.url)))
  // console.log("环境变量 env -> ", env)