applications/drone-command/env/.env.development
@@ -2,7 +2,7 @@ # @Author : yuan # @Date : 2026-01-31 14:34:31 # @LastEditors : yuan # @LastEditTime : 2026-02-03 14:21:15 # @LastEditTime : 2026-02-03 15:52:27 # @FilePath : \applications\drone-command\env\.env.development # @Description : # Copyright 2026 OBKoro1, All Rights Reserved. @@ -16,7 +16,7 @@ #开发环境代理地址(推荐本地新建文件 .env.development.local 来进行覆盖) # VITE_APP_URL=https://wrj.shuixiongit.com/api VITE_APP_URL=http://192.168.1.33 VITE_APP_URL=http://192.168.1.168 #新大屏地址 VITE_APP_DASHBOARD_URL='https://wrj.shuixiongit.com/command-center-dashboard/' applications/drone-command/src/views/api.txt
@@ -3,7 +3,7 @@ ## 列表 **接口地址**:`/area/fwPoliceStation/list` **接口地址**:`/device/fwDevice/list` **请求方式**:`GET` @@ -15,7 +15,7 @@ **响应数据类型**:`*/*` **接口描述**:<p>获取全部派出所</p> **接口描述**:<p>传入isAreaSelect、areaId、areaIds(多个用,隔开获取对应区域绑定设备数据)、status</p> @@ -25,7 +25,13 @@ **请求参数**: 暂无 | 参数名称 | 参数说明 | 请求类型 | 是否必须 | 数据类型 | schema | | -------- | -------- | ----- | -------- | -------- | ------ | |areaId|areaId|query|false|integer(int64)|| |areaIds|areaIds(多个用,隔开)|query|false|string|| |isAreaSelect|isAreaSelect|query|false|integer(int32)|| |isTrack|isTrack|query|false|integer(int32)|| |status|status|query|false|integer(int32)|| **响应状态**: @@ -33,7 +39,7 @@ | 状态码 | 说明 | schema | | -------- | -------- | ----- | |200|OK|R«List«FwPoliceStationVO»»| |200|OK|R«List«FwDeviceVO»»| |401|Unauthorized|| |403|Forbidden|| |404|Not Found|| @@ -45,21 +51,41 @@ | 参数名称 | 参数说明 | 类型 | schema | | -------- | -------- | ----- |----- | |code|状态码|integer(int32)|integer(int32)| |data|承载数据|array|FwPoliceStationVO| |  address|派出所地址|string|| |  areaCode|区域编码|string|| |  contactPerson|联系人|string|| |  contactPhone|联系方式|string|| |data|承载数据|array|FwDeviceVO| |  azimuth|方位角 0-360°|integer(int32)|| |  batteryPct|电量百分比 0-100|integer(int32)|| |  belongDept|所属部门id|integer(int64)|| |  belongDeptName|所属部门名称|string|| |  charger|负责人|string|| |  contactPhone|联系电话|string|| |  createDept|创建部门|integer(int64)|| |  createTime|创建时间|string(date-time)|| |  createUser|创建人|integer(int64)|| |  id|主键id|integer(int64)|| |  latitude|纬度|number(double)|| |  longitude|经度|number(double)|| |  stationName|派出所名称|string|| |  status|状态(0正常 1停用)|integer(int32)|| |  detectTargetCnt|侦测目标数量|integer(int32)|| |  deviceAtt|设备属性(无线电/光电/雷达)|string|| |  deviceModel|型号|string|| |  deviceName|设备名称|string|| |  deviceSn|设备sn|string|| |  deviceSpecification|规格|string|| |  deviceType|设备类型(察打一体/便捷侦测箱/反制枪)|string|| |  effectiveRangeKm|有效范围 km|number|| |  elevation|俯仰角 -90-+90°|integer(int32)|| |  id|主键|integer(int64)|| |  isShared|是否被共享给当前机构|boolean|| |  latitude|纬度|string|| |  longitude|经度|string|| |  manufacturer|生产厂商|string|| |  outTarget|出库去向|string|| |  purpose|用途|string|| |  remark|备注|string|| |  sceneName|场景名称|string|| |  shareId|共享记录ID|integer(int64)|| |  source|来源|string|| |  status|运行状态(0:在线/1:离线/2:故障/3:报废)|integer(int32)|| |  trackStatus|设备出入库状态 0未出库1已出库|integer(int32)|| |  updateTime|更新时间|string(date-time)|| |  updateUser|更新人|integer(int64)|| |  workMode|工作模式:1.侦测中/2.信号干扰中/3.诱导驱离中/4.待机|string|| |msg|返回消息|string|| |success|是否成功|boolean|| @@ -70,23 +96,43 @@ "code": 0, "data": [ { "address": "", "areaCode": "", "contactPerson": "", "azimuth": 0, "batteryPct": 0, "belongDept": 0, "belongDeptName": "", "charger": "", "contactPhone": "", "createDept": 0, "createTime": "", "createUser": 0, "detectTargetCnt": 0, "deviceAtt": "", "deviceModel": "", "deviceName": "", "deviceSn": "", "deviceSpecification": "", "deviceType": "", "effectiveRangeKm": 0, "elevation": 0, "id": 0, "latitude": 0, "longitude": 0, "stationName": "", "isShared": true, "latitude": "", "longitude": "", "manufacturer": "", "outTarget": "", "purpose": "", "remark": "", "sceneName": "", "shareId": 0, "source": "", "status": 0, "trackStatus": 0, "updateTime": "", "updateUser": 0 "updateUser": 0, "workMode": "" } ], "msg": "", "success": true } ``` ``` applications/drone-command/src/views/areaManage/sceneConfig/FormDiaLog.vue
@@ -50,6 +50,20 @@ </el-table> </div> </div> <div class="detail-title">设备列表</div> <div class="command-table-container"> <div class="command-table-content"> <el-table class="command-table" :data="deviceList" :loading="deviceLoading" row-key="id" > <el-table-column prop="deviceName" show-overflow-tooltip label="设备名称" /> <el-table-column prop="deviceType" show-overflow-tooltip label="设备类型" /> </el-table> </div> </div> </div> <el-form @@ -128,6 +142,21 @@ </el-table> </el-form-item> </div> <div class="detail-title">设备列表</div> <div class="command-table-container"> <div class="command-table-content"> <el-table class="command-table" :data="deviceList" :loading="deviceLoading" row-key="id" > <el-table-column prop="deviceName" show-overflow-tooltip label="设备名称" /> <el-table-column prop="deviceType" show-overflow-tooltip label="设备类型" /> </el-table> </div> </div> </el-form> <div class="footer"> @@ -160,6 +189,7 @@ import CommonCesiumMap from '@/components/map-container/common-cesium-map.vue' import * as Cesium from 'cesium' import { fwAreaDivideDetailApi, fwAreaDivideListApi } from '../partition/partitionApi' import { fwDeviceListApi } from '@/views/basicManage/deviceStock/fwDevice' import { addBufferRadiusLabelEntity, buildEllipsePositions, @@ -189,6 +219,8 @@ const searchName = ref('') const areaList = ref([]) // 关联区域列表 const selectedAreaRows = ref([]) //选中列表 const deviceList = ref([]) // 设备列表 const deviceLoading = ref(false) const dictObj = inject('dictObj') const mapRef = ref(null) const route = useRoute() @@ -242,6 +274,20 @@ if (areaList.value.length) return const res = await fwAreaDivideListApi({ filterSelected: 1, sceneId: formData.value.id }) areaList.value = res?.data?.data ?? [] } async function loadDeviceListByAreaIds(areaIdsKey) { if (!areaIdsKey) { deviceList.value = [] return } deviceLoading.value = true try { const res = await fwDeviceListApi({ areaIds: areaIdsKey }) deviceList.value = res?.data?.data ?? [] } finally { deviceLoading.value = false } } // 关联区域变更 @@ -514,6 +560,15 @@ } watch(() => selectedAreaRows.value, renderSelectedAreas) const deviceAreaIdsKey = computed(() => selectedAreaRows.value.map(item => item?.id).filter(Boolean).join(',') ) watch( () => deviceAreaIdsKey.value, val => { loadDeviceListByAreaIds(val) } ) watch( () => visible.value, val => { applications/drone-command/src/views/recordManage/historyTracks/TrajectoryDiaLog.vue
@@ -9,7 +9,15 @@ > <div class="dialog-container"> <div class="left-container"> <div class="leftMap command-cesium" id="leftMapContainer"></div> <CommonCesiumMap ref="mapRef" class="leftMap command-cesium" :active="visible" :flat-mode="false" :terrain="true" :layer-mode="4" :boundary="false" /> </div> <div class="right-container"> <div class="header"> @@ -67,11 +75,10 @@ import { Close } from '@element-plus/icons-vue' import { computed, nextTick, ref } from 'vue' import CommonCesiumMap from '@/components/map-container/common-cesium-map.vue' import { fwDroneFlightRecordDetailApi } from '@/views/recordManage/historyTracks/fwDroneFlightRecord' import { fwDroneFlightRecordDetailPageApi } from '@/views/recordManage/historyTracks/flyTrajectory' import { PublicCesium } from '@/utils/cesium/publicCesium' import * as Cesium from 'cesium' import { flyVisual } from '@ztzf/utils' import { ArrowLineMaterialProperty } from '@/utils/cesium/Material' import droneIcon from '@/assets/images/dataCockpit/map/drone.png' @@ -83,11 +90,11 @@ stayDuration: '', }) let list = ref([]) const emit = defineEmits(['success']) const formData = ref(initForm()) // 表单数据 const visible = ref(false) // 弹框显隐 const dialogMode = ref('add') // 弹框模式 const dialogReadonly = computed(() => dialogMode.value === 'view') const mapRef = ref(null) const dialogTitle = computed(() => { if (dialogMode.value === 'edit') { return '编辑' @@ -170,14 +177,9 @@ let viewer, geometricSource, droneLineEntity, startDroneEntity function initMap() { if (viewer) return const publicCesiumInstance = new PublicCesium({ dom: 'leftMapContainer', flatMode: false, terrain: true, layerMode: 4, boundary: false, }) viewer = publicCesiumInstance.getViewer() const map = mapRef.value?.getMap?.() if (!map?.viewer) return viewer = map.viewer geometricSource = new Cesium.CustomDataSource('geometricSource') viewer.dataSources.add(geometricSource) }