guoshilong
2023-09-23 fb336f319c71291fa09de3e7f67f1ccfab3cb7c8
src/components/GMap.vue
@@ -367,7 +367,7 @@
          </a-row>
          <!-- 机场控制面板 -->
          <DockControlPanel v-if="dockControlPanelVisible" :sn="osdVisible.gateway_sn" :deviceInfo="deviceInfo"
            @close-control-panel="onCloseControlPanel">
            @close-control-panel="closeOperate">
          </DockControlPanel>
        </div>
      </div>
@@ -708,8 +708,6 @@
    const showMonitor = ref(false)
    // 操作显示
    const showOption = ref(false)
    // 飞行控制显示
    const showFly = ref(false)
    const mouseMode = ref(false)
    const store = useMyStore()
    // 机场直播地址
@@ -725,7 +723,6 @@
    // 视频列表选择值
    const videoList = ref()
    const videoIndex = ref(0)
    // 机场加载值
    // 飞机视频播放地址
    const aircraftUrl = ref('')
@@ -780,9 +777,7 @@
    const drawVisible = computed(() => {
      return store.state.drawVisible
    })
    const osdVisible = computed(() => {
      return store.state.osdVisible
    })
    const osdVisible = computed(() => JSON.parse(JSON.stringify(store.state.osdVisible)))
    const sn = computed(() => {
      return store.state.hmsInfoDetailSn
    })
@@ -817,19 +812,18 @@
      videoList.value = []
      droneIndex.value = 0
      cameraIndex.value = 0
      await getLiveCapacity({})
      await getLiveCapacity({ id: store.state.common.projectId })
        .then(res => {
          if (res.code === 0) {
            if (res.data === null) {
              console.warn('warning: get live capacity is null!!!')
              return
            }
            const resData: Array<[]> = res.data
            // 机场数据
            const airport = res.data.find(v => v.sn === sn.value)
            const temp: Array<SelectOption> = []
            if (resData) {
              resData.forEach((ele: any) => {
                temp.push({ label: ele.name, value: ele.sn, more: ele.cameras_list })
              })
            if (airport) {
              temp.push({ label: airport.name, value: airport.sn, more: airport.cameras_list })
              // 设备列表
              droneList.value = temp.filter(v => v.value === sn.value)
              // 设备直播处理
@@ -862,7 +856,7 @@
    // 加载无人机的视频信息
    const loadDroneVideo = async () => {
      aircraftList.value = []
      await getLiveCapacity({})
      await getLiveCapacity({ id: store.state.common.projectId })
        .then(res => {
          if (res.code === 0) {
            if (res.data === null) {
@@ -870,29 +864,26 @@
              return
            }
            const resData: Array<[]> = res.data
            const drone = res.data.find(v => v.sn === deviceInfo.dock.basic_osd.sub_device?.device_sn)
            const temp: Array<SelectOption> = []
            if (resData) {
              resData.forEach((ele: any) => {
                temp.push({ label: ele.name, value: ele.sn, more: ele.cameras_list })
            if (drone) {
              temp.push({ label: drone.name, value: drone.sn, more: drone.cameras_list })
            } // 无人机列表
            const airList = temp.filter(v => v.value === deviceInfo.dock.basic_osd?.sub_device?.device_sn)
            // 无人机设备处理
            if (airList[0].more && airList[0].more.length > 0) {
              aircraftList.value = airList[0].more.map(v => {
                return {
                  label: v.name,
                  value: v.index,
                  vadeosList: v.videos_list
                }
              })
              // 无人机列表
              const airList = temp.filter(v => v.value === deviceInfo.dock.basic_osd?.sub_device?.device_sn)
              // 无人机设备处理
              if (airList[0].more && airList[0].more.length > 0) {
                aircraftList.value = airList[0].more.map(v => {
                  return {
                    label: v.name,
                    value: v.index,
                    vadeosList: v.videos_list
                  }
                })
                aircraSelected.value = aircraftList.value[0].value
                console.log(aircraftList.value, 'aircraftList.value')
                flyOnStart()
              } else {
                showAircraft.value = false
                message.error('该无人机暂无直播设备开启')
              }
              aircraSelected.value = aircraftList.value[0].value
              flyOnStart()
            } else {
              showAircraft.value = false
              message.error('该无人机暂无直播设备开启')
            }
          }
        })
@@ -989,7 +980,6 @@
        deep: true
      }
    )
    watch(() => store.state.deviceState, data => {
      if (data.currentType === EDeviceTypeName.Gateway && data.gatewayInfo[data.currentSn]) {
        if (osdVisible.value.visible && osdVisible.value.gateway_sn !== '') {
@@ -1008,9 +998,24 @@
        }
      }
    }, {
      deep: true
      deep: true,
    })
    watch(() => osdVisible.value, (data, oldData) => {
      showMonitor.value = false
      aircraftUrl.value = ''
      showAircraft.value = false
      aircraftList.value = []
      aircraSelected.value = ''
      airPortUrl.value = ''
      droneList.value = []
      if (deviceInfo.dock.basic_osd?.mode_code === 2) {
        onCloseControlPanel(oldData.gateway_sn)
      } else {
        setDockControlPanelVisible(false)
      }
    }, {
      deep: true,
    })
    watch(
      () => store.state.wsEvent,
      newData => {
@@ -1077,7 +1082,14 @@
      setDockControlPanelVisible,
      onCloseControlPanel,
    } = useDockControl()
    // 关闭设备控制方法
    const closeOperate = (sn:string) => {
      if (deviceInfo.dock.basic_osd?.mode_code === 2) {
        onCloseControlPanel(sn)
      } else {
        setDockControlPanelVisible(false)
      }
    }
    // 连接或断开drc
    useConnectMqtt()
@@ -1266,7 +1278,6 @@
      sn,
      showMonitor,
      showOption,
      showFly,
      airPortUrl,
      openMonitor,
      droneIndex,
@@ -1276,6 +1287,7 @@
      aircraftList,
      aircraSelected,
      selectChange,
      closeOperate,
    }
  }
})
@@ -1402,4 +1414,5 @@
  position: absolute;
  min-height: 2px;
  border-radius: 2px;
}</style>
}
</style>