From fb336f319c71291fa09de3e7f67f1ccfab3cb7c8 Mon Sep 17 00:00:00 2001
From: guoshilong <123456>
Date: Sat, 23 Sep 2023 15:58:40 +0800
Subject: [PATCH] 媒体搜索框

---
 src/pages/page-web/projects/tsa.vue |   90 ++++++++++++++++++++++++++++++++++++---------
 1 files changed, 72 insertions(+), 18 deletions(-)

diff --git a/src/pages/page-web/projects/tsa.vue b/src/pages/page-web/projects/tsa.vue
index 9a630cb..15740ef 100644
--- a/src/pages/page-web/projects/tsa.vue
+++ b/src/pages/page-web/projects/tsa.vue
@@ -1,5 +1,5 @@
 <template>
-  <div class="project-tsa-wrapper ">
+  <div class="project-tsa-wrapper">
     <div>
       <a-row>
         <a-col :span="1"></a-col>
@@ -243,21 +243,21 @@
 <script lang="ts" setup>
 import { computed, onMounted, reactive, ref, watch, WritableComputedRef } from 'vue'
 import { EDeviceTypeName, ELocalStorageKey } from '/@/types'
-import JessibucaVideo from '/@/components/Jessibuca/Jessibuca.vue'
 import noData from '/@/assets/icons/no-data.png'
 import rc from '/@/assets/icons/rc.png'
 import { OnlineDevice, EModeCode, OSDVisible, EDockModeCode, DeviceOsd, EDockModeText, EModeText } from '/@/types/device'
 import { useMyStore } from '/@/store'
-import { getDeviceTopo, getUnreadDeviceHms, updateDeviceHms } from '/@/api/manage'
+import { getDeviceTopo, getUnreadDeviceHms, updateDeviceHms, testBind } from '/@/api/manage'
 import { RocketOutlined, EyeInvisibleOutlined, EyeOutlined, RobotOutlined, DoubleRightOutlined } from '@ant-design/icons-vue'
 import { EHmsLevel } from '/@/types/enums'
+import { cesiumOperation } from '/@/hooks/use-cesium-tsa'
 const { appContext } = getCurrentInstance()
 const global = appContext.config.globalProperties
 const route = useRoute()
 // const simpleImage = Empty.PRESENTED_IMAGE_SIMPLE
 const store = useMyStore()
 const username = ref(localStorage.getItem(ELocalStorageKey.Username))
-const workspaceId = ref(localStorage.getItem(ELocalStorageKey.WorkspaceId)!)
+// const workSpaceId = ref(localStorage.getItem(ELocalStorageKey.workSpaceId)!)
 const osdVisible = ref({} as OSDVisible)
 const hmsVisible = new Map<string, boolean>()
 const scorllHeight = ref()
@@ -271,13 +271,69 @@
 
 const deviceInfo = computed(() => store.state.deviceState.deviceInfo)
 const dockInfo = computed(() => store.state.deviceState.dockInfo)
+const workSpaceId = computed(() => store.state.common.projectId)
 const hmsInfo = computed({
   get: () => store.state.hmsInfo,
   set: (val) => {
     return val
   }
 })
-
+const getResource = (name: string) => {
+  return new URL(`/src/assets/icons/${name}`, import.meta.url).href
+}
+// 获取ws连接过来的sn设备号
+const snCode = ref<string[]>([])
+// 添加机场标注
+watch(() => store.state.deviceState, data => {
+  const cesium = cesiumOperation(global.$viewer)
+  if (snCode.value.includes(data.currentSn)) return
+  snCode.value.push(data.currentSn)
+  // cesium.removeAllPoint()
+  if (data.currentType === EDeviceTypeName.Aircraft && data.deviceInfo[data.currentSn]) {
+    // 无人机图标
+    const setting = {
+      longitude: data.deviceInfo[data.currentSn].longitude,
+      latitude: data.deviceInfo[data.currentSn].latitude,
+      billboard: {
+        image: getResource('drone.png'),
+        outlineWidth: 0,
+        width: 36,
+        height: 36,
+        scale: 1.0,
+      }
+    }
+    cesium.addPoint(setting)
+    // if (osdVisible.value.visible && osdVisible.value.sn !== '') {
+    //   deviceInfo.value.device = data.deviceInfo[osdVisible.value.sn]
+    // }
+  }
+  if (data.currentType === EDeviceTypeName.Dock && data.dockInfo[data.currentSn]) {
+    // 机场图标位置
+    const setting = {
+      longitude: data.dockInfo[data.currentSn].basic_osd?.longitude,
+      latitude: data.dockInfo[data.currentSn].basic_osd?.latitude,
+      billboard: {
+        image: getResource('dock.png'),
+        outlineWidth: 0,
+        width: 36,
+        height: 36,
+        scale: 1.0,
+      }
+    }
+    cesium.addPoint(setting)
+    // cesium.flyTo(setting)
+  }
+}, {
+  deep: true,
+})
+const bind = async (sn: string) => {
+  const res = await testBind(sn)
+  if (res.code === 0) {
+    Promise.resolve(true)
+  } else {
+    Promise.resolve(false)
+  }
+}
 onMounted(() => {
   getOnlineTopo()
   setTimeout(() => {
@@ -298,18 +354,13 @@
   const parent = element?.parentNode as HTMLDivElement
   scorllHeight.value = parent?.clientHeight - parent?.firstElementChild?.clientHeight
 })
-const messageHandler = async (payload: any) => {
-  console.log(payload, 'payload')
-  // if (payload.type === 'hms') {
-  //   const { data
-}
-// 监听ws 消息
-// useConnectWebSocket(messageHandler)
+
 function getOnlineTopo () {
-  getDeviceTopo(workspaceId.value).then((res) => {
+  getDeviceTopo(workSpaceId.value).then((res) => {
     if (res.code !== 0) {
       return
     }
+    const snList: any[] = []
     onlineDevices.data = []
     onlineDocks.data = []
     res.data.forEach((gateway: any) => {
@@ -345,7 +396,10 @@
       if (gateway.status && EDeviceTypeName.Gateway === gateway.domain) {
         onlineDevices.data.push(device)
       }
+      snList.push(gateway.device_sn)
+      bind(gateway.device_sn)
     })
+    store.commit('SET_SN_LIST', snList)
   })
 }
 
@@ -367,17 +421,17 @@
     osdVisible.value.gateway_callsign = device.gateway.callsign
     osdVisible.value.payloads = device.payload
   }
-  store.commit('SET_OSD_VISIBLE_INFO', osdVisible)
+  console.log(osdVisible.value, 'value')
+  store.commit('SET_OSD_VISIBLE_INFO', osdVisible.value)
   store.commit('SET_HMSInfo_DetailSn', sn)
 }
 
 function getUnreadHms (sn: string) {
-  getUnreadDeviceHms(workspaceId.value, sn).then(res => {
+  getUnreadDeviceHms(workSpaceId.value, sn).then(res => {
     if (res.data.length !== 0) {
       hmsInfo.value[sn] = res.data
     }
   })
-  console.info(hmsInfo.value)
 }
 
 function getOnlineDeviceHms () {
@@ -399,7 +453,7 @@
 
 function readHms (visiable: boolean, sn: string) {
   if (!visiable) {
-    updateDeviceHms(workspaceId.value, sn).then(res => {
+    updateDeviceHms(workSpaceId.value, sn).then(res => {
       if (res.code === 0) {
         delete hmsInfo.value[sn]
       }
@@ -429,7 +483,7 @@
 }
 
 .ant-collapse>.ant-collapse-item>.ant-collapse-header {
-  color: white;
+  color: white !important;
   border: 0;
   padding-left: 14px;
 }

--
Gitblit v1.9.3