徐景良 2 months ago
commit fdb579d42b

@ -283,7 +283,6 @@
import { columns, searchFormSchema } from './modal.data';
import dayjs from 'dayjs';
import { cloneDeep } from 'lodash-es';
import dataJson from './data.json';
const { createConfirm, createMessage } = useMessage();
@ -447,13 +446,6 @@
// },
],
},
{
id: '4',
name: '新建计划1 2025-06-11 16:28:23 (UTC+08)',
createtime: '2025-06-11 16:28:23',
type: 'folder',
children: dataJson,
},
// {
// id: '4',
// name: '',

@ -139,7 +139,7 @@
const allMarkDataList = ref(markJson);
//
function setNowShowMarkData(value) {
if (value) {
if (value.id) {
markInfoShow.value = true;
} else {
markInfoShow.value = false;
@ -173,7 +173,7 @@
//
function setNowShowAreaData(value) {
if (value) {
if (value.id) {
areaInfoShow.value = true;
} else {
areaInfoShow.value = false;
@ -202,7 +202,7 @@
//
function setNowShowImageData(value) {
if (value) {
if (value.id) {
imageInfoShow.value = true;
} else {
imageInfoShow.value = false;

@ -1,124 +1,76 @@
[
{
"id": "f8a1ba2f-3d75-45e3-8c37-c305b8a8a18f",
"name": "noland-2025-07-03 09:37",
"status": "enable",
"type": "noland",
"content": {
"type": "Feature",
"geometry": {
"type": "Polyline",
"coordinates": [
[
[
113.94250795742009,
22.58060189921086
],
[
113.94251951924755,
22.580338767560157
],
[
113.94278841610303,
22.580473014976874
],
[
113.94264963349448,
22.580583102519093
],
[
113.9425571112225,
22.580658284012188
]
]
]
},
"properties": {
"color": "#FF9900",
"width": 50,
"clampToGround": true
}
},
"area_hash": "enable_noland_64e037d7470402c7ab2fac8e314dcfd6",
"created_time": 1751506632716,
"created_by": "1921832882836627456",
"created_nickname": "17854119262",
"updated_time": 1751506632716,
"updated_by": "1921832882836627456",
"updated_nickname": "17854119262"
},
{
"id": "4b312405-a1f9-4326-b7ad-f684912931c7",
"name": "fence-2025-07-03 09:36",
"id": "84b09cdc-8138-461a-9008-2ac2fd2dabe1",
"name": "fence-2025-07-09 10:58",
"status": "enable",
"type": "dfence",
"content": {
"type": "Feature",
"geometry": {
"type": "Circle",
"radius": 15.568918453415524,
"radius": 25.98278531053457,
"coordinates": [
113.94244540081064,
22.581260697110643
113.94260619946274,
22.581532991805254
]
},
"properties": {
"color": "#00FF00"
}
},
"area_hash": "enable_dfence_cec1fe6f1bdf6ba3de183332ec941336",
"created_time": 1751506620283,
"area_hash": "enable_dfence_602389930bf13745ad901786a991ee0a",
"created_time": 1752029923657,
"created_by": "1921832882836627456",
"created_nickname": "17854119262",
"updated_time": 1751699622015,
"updated_time": 1752029923657,
"updated_by": "1921832882836627456",
"updated_nickname": "17854119262"
},
{
"id": "5ef9074f-332e-4c2c-8caf-0d5e9c2d4bb0",
"name": "fence-2025-07-03 09:36",
"id": "f8a1ba2f-3d75-45e3-8c37-c305b8a8a18f",
"name": "noland-2025-07-03 09:37",
"status": "enable",
"type": "dfence",
"type": "noland",
"content": {
"type": "Feature",
"geometry": {
"type": "Polygon",
"type": "Polyline",
"coordinates": [
[
[
113.94217071448199,
22.580710270949893
113.94250795742009,
22.58060189921086
],
[
113.94234419200872,
22.580557223329823
113.94251951924755,
22.580338767560157
],
[
113.94234708696375,
22.580804244635136
113.94278841610303,
22.580473014976874
],
[
113.942101324811,
22.580866002541086
113.94264963349448,
22.580583102519093
],
[
113.94217071448199,
22.580710270949893
113.9425571112225,
22.580658284012188
]
]
]
},
"properties": {
"color": "#00FF00",
"color": "#FF9900",
"width": 50,
"clampToGround": true
}
},
"area_hash": "enable_dfence_491bd3ba995a30b943fce12cd277f319",
"created_time": 1751506610758,
"area_hash": "enable_noland_64e037d7470402c7ab2fac8e314dcfd6",
"created_time": 1751506632716,
"created_by": "1921832882836627456",
"created_nickname": "17854119262",
"updated_time": 1751506610758,
"updated_time": 1752051379960,
"updated_by": "1921832882836627456",
"updated_nickname": "17854119262"
},
@ -149,58 +101,10 @@
"updated_by": "1921832882836627456",
"updated_nickname": "17854119262"
},
{
"id": "8fb48c63-b840-448d-b331-0e0dd505cdb2",
"name": "nfz-2025-07-03 09:36",
"status": "enable",
"type": "nfz",
"content": {
"type": "Feature",
"geometry": {
"type": "Polygon",
"coordinates": [
[
[
113.94081757610996,
22.581070072300122
],
[
113.94103442563689,
22.580927765651026
],
[
113.94117610149931,
22.581056645867445
],
[
113.94095925169468,
22.58111303220476
],
[
113.94081757610996,
22.581070072300122
]
]
]
},
"properties": {
"color": "#FF0000",
"width": 50,
"clampToGround": true
}
},
"area_hash": "enable_nfz_069b0cdcae471e9849ff2af1c407cb63",
"created_time": 1751506590102,
"created_by": "1921832882836627456",
"created_nickname": "17854119262",
"updated_time": 1751506590102,
"updated_by": "1921832882836627456",
"updated_nickname": "17854119262"
},
{
"id": "53d34e36-83a1-4f27-9379-59916ac22f94",
"name": "作业区",
"status": "disable",
"status": "enable",
"type": "dfence",
"content": {
"type": "Feature",
@ -240,18 +144,18 @@
"color": "#00FF00"
}
},
"area_hash": "disable_dfence_d0dc9ea80f32a4ddf9737ed27059da89",
"area_hash": "enable_dfence_d0dc9ea80f32a4ddf9737ed27059da89",
"created_time": 1747035695040,
"created_by": "",
"created_nickname": "",
"updated_time": 1751700024743,
"updated_time": 1751870133102,
"updated_by": "1921832882836627456",
"updated_nickname": "17854119262"
},
{
"id": "189b2247-a5be-49ef-83cb-768056a00ed6",
"name": "限飞区",
"status": "disable",
"status": "enable",
"type": "nfz",
"content": {
"type": "Feature",
@ -291,11 +195,11 @@
"clampToGround": true
}
},
"area_hash": "disable_nfz_d362c13ac83407d94d7e8754f25b1f8d",
"area_hash": "enable_nfz_d362c13ac83407d94d7e8754f25b1f8d",
"created_time": 1747035694853,
"created_by": "",
"created_nickname": "",
"updated_time": 1751700027203,
"updated_time": 1751870135023,
"updated_by": "1921832882836627456",
"updated_nickname": "17854119262"
}

@ -10,9 +10,9 @@
<div
v-if="props.nowShowAreaData.type == 'noland'"
:style="{
width: '13px',
height: '13px',
outline: `2px solid ${props.nowShowAreaData.content.properties.color}`,
width: '15px',
height: '15px',
background: `linear-gradient(to bottom right, transparent 45%, ${props.nowShowAreaData.content.properties.color} 45%, ${props.nowShowAreaData.content.properties.color} 60%, transparent 60%), #ffffff00`,
'margin-left': '2px',
'margin-right': '12px',
}"
@ -81,21 +81,21 @@
<div class="markTitle">水平距离</div>
</a-col>
<a-col :span="18" v-if="props.nowShowAreaData.type == 'noland'">
<div class="markContent"> m</div>
<div class="markContent"> {{ distance.toFixed(1) }}m</div>
</a-col>
<!-- 水平面积 -->
<a-col :span="6">
<div class="markTitle">水平面积</div>
</a-col>
<a-col :span="18">
<div class="markContent"> </div>
<div class="markContent"> {{ area.toFixed(2) }}</div>
</a-col>
<!-- 水平周长 -->
<a-col :span="6" v-if="props.nowShowAreaData.content.geometry.type == 'Polygon'">
<div class="markTitle">水平周长</div>
</a-col>
<a-col :span="18" v-if="props.nowShowAreaData.content.geometry.type == 'Polygon'">
<div class="markContent"> m</div>
<div class="markContent"> {{ distance2 }}m</div>
</a-col>
<!-- 半径 -->
<a-col :span="6" v-if="props.nowShowAreaData.content.geometry.type == 'Circle'">
@ -166,6 +166,8 @@
</template>
<script lang="ts" setup>
import { ref, watch, nextTick } from 'vue';
import * as mars3d from 'mars3d';
import * as Cesium from 'mars3d-cesium';
import {
CloseOutlined,
DeleteOutlined,
@ -267,10 +269,50 @@
emits('deleteArea', props.nowShowAreaData);
}
//
const distance = ref(0);
async function getDistance() {
distance.value = mars3d.MeasureUtil.getSurfaceDistance(
props.nowShowAreaData.content.geometry.coordinates[0],
);
}
//
const area = ref(0);
async function getArea() {
if (props.nowShowAreaData.content.geometry.type == 'Circle') {
let radius = props.nowShowAreaData.content.geometry.radius;
area.value = Math.PI * radius * radius;
} else {
area.value = mars3d.MeasureUtil.getSurfaceArea(
props.nowShowAreaData.content.geometry.coordinates[0],
);
}
}
//
const distance2 = ref(0);
async function getDistance2() {
distance.value = mars3d.MeasureUtil.getDistance(
props.nowShowAreaData.content.geometry.coordinates[0],
true,
);
}
watch(
() => props.nowShowAreaData,
() => {
nowAreaData.value = props.nowShowAreaData;
//
getArea();
if (props.nowShowAreaData.type == 'noland') {
//
getDistance();
}
if (props.nowShowAreaData.content.geometry.type == 'Polygon') {
//
getDistance2();
}
},
{
deep: true,

@ -284,9 +284,9 @@
<div
v-if="show.type == 'noland'"
:style="{
width: '13px',
height: '13px',
outline: `2px solid ${show.content.properties.color}`,
width: '15px',
height: '15px',
background: `linear-gradient(to bottom right, transparent 45%, ${show.content.properties.color} 45%, ${show.content.properties.color} 60%, transparent 60%), #ffffff00`,
'margin-right': '6px',
}"
/>

File diff suppressed because it is too large Load Diff

@ -1,4 +1,78 @@
<template>
<div class="setting-control-title">机场</div>
<div class="setting-control-list" style="gap: 0px;">
<div class="show-info-item">
<div class="info-value">{{ (props.deviceInfoList[props.controlSN].acc_time / 60 / 60 / 24).toFixed(1) }}</div>
<div class="info-label">累计运行时长</div>
</div>
<div class="show-info-item">
<div class="info-value">{{ props.deviceInfoList[props.controlSN].job_number }}</div>
<div class="info-label">作业架次</div>
</div>
<div class="show-info-item">
<div class="info-value">{{ (props.deviceInfoList[props.controlSN].position_state.gps_number + props.deviceInfoList[props.controlSN].position_state.rtk_number) }}</div>
<div class="info-label">机场搜星</div>
</div>
<div class="show-info-item">
<div class="info-value">{{ sourceTypeOptions[props.deviceInfoList[props.controlSN]?.rtcm_info?.source_type] || '--'}}</div>
<div class="info-label">标定状态</div>
</div>
<div class="show-info-item">
<div class="info-value">{{ `${(props.deviceInfoList[props.controlSN].working_voltage / 1000).toFixed(1)}V` || '--'}}</div>
<div class="info-label">供电电压</div>
</div>
<div class="show-info-item">
<div class="info-value">{{ qualityOptions[props.deviceInfoList[props.controlSN]?.network_state?.quality] || '--'}}</div>
<div class="info-label">网络</div>
</div>
<div class="show-info-item">
<div class="info-value">{{ isConfiguredOptions[props.deviceInfoList[props.controlSN]?.alternate_land_point?.is_configured] || '--'}}</div>
<div class="info-label">备降点</div>
</div>
<div class="show-info-item">
<div class="info-value">--</div>
<div class="info-label">进离场航线</div>
</div>
<div class="show-info-item">
<div class="info-value">{{ airConditionerStateOptions[props.deviceInfoList[props.controlSN]?.air_conditioner?.air_conditioner_state] || '--'}}</div>
<div class="info-label">空调状态</div>
</div>
<div class="show-info-item">
<div class="info-value">{{ `${(props.deviceInfoList[props.controlSN]?.drone_battery_maintenance_info?.batteries[0].voltage / 1000).toFixed(1)}V` || '--' }}</div>
<div class="info-label">蓄电池电压</div>
</div>
<div class="show-info-item">
<div class="info-value">{{ `${props.deviceInfoList[props.controlSN]?.drone_battery_maintenance_info?.batteries[0].temperature}` || '--' }}</div>
<div class="info-label">蓄电池温度</div>
</div>
<div class="show-info-item">
<div class="info-value">{{ props.deviceInfoList[props.controlSN].temperature }}</div>
<div class="info-label">舱内温度</div>
</div>
<div class="show-info-item">
<div class="info-value">{{ props.deviceInfoList[props.controlSN].humidity }}%RH</div>
<div class="info-label">舱内湿度</div>
</div>
<div class="show-info-item">
<div class="info-value">{{ props.deviceInfoList[props.controlSN].environment_temperature }}</div>
<div class="info-label">舱外温度</div>
</div>
<div class="show-info-item">
<div class="info-value">{{ rainfallOptions[props.deviceInfoList[props.controlSN].rainfall] }}</div>
<div class="info-label">雨量</div>
</div>
<div class="show-info-item">
<div class="info-value">{{ props.deviceInfoList[props.controlSN].wind_speed }}m/s</div>
<div class="info-label">风速</div>
</div>
</div>
<!-- <div class="setting-control-title">飞行器</div>
<div class="setting-control-list" style="gap: 0px;">
<div class="show-info-item">
<div class="info-value">{{ (props.deviceInfoList[props.controlSN].acc_time / 60 / 60 / 24).toFixed(1) }}</div>
<div class="info-label">累计运行时长</div>
</div>
</div> -->
<div class="open-control-div">
<div class="control-content">
<span class="open-title">远程调试</span>
@ -233,9 +307,9 @@
<div class="button-div">
<a-button
class="control-button"
@click="changeDeviceState(props.deviceInfoList[props.controlSN].drone_charge_state.state == 0? 'charge_open': 'charge_close')"
@click="changeDeviceState(props.deviceInfoList[props.controlSN]?.drone_charge_state?.state == 0? 'charge_open': 'charge_close')"
:disabled="props.deviceInfoList[props.controlSN].mode_code != 2">
{{props.deviceInfoList[props.controlSN].drone_charge_state.state == 0? '充电': '停止'}}
{{props.deviceInfoList[props.controlSN]?.drone_charge_state?.state == 0? '充电': '停止'}}
</a-button>
</div>
</div>
@ -247,7 +321,7 @@
<div>
<div class="show-span">
{{
fourgLinkStateOptions[props.deviceInfoList[props.controlSN].wireless_link["4g_link_state"]]
fourgLinkStateOptions[props.deviceInfoList[props.controlSN]?.wireless_link['4g_link_state']]
}}
</div>
<div class="show-span">增强图传</div>
@ -256,9 +330,9 @@
<div class="button-div">
<a-button
class="control-button"
@click="changeDeviceState('sdr_workmode_switch',props.deviceInfoList[props.controlSN].wireless_link['4g_link_state'] == 0? 1: 0, 'link_workmode')"
@click="changeDeviceState('sdr_workmode_switch',props.deviceInfoList[props.controlSN]?.wireless_link['4g_link_state'] == 0? 1: 0, 'link_workmode')"
:disabled="props.deviceInfoList[props.controlSN].mode_code != 2">
{{props.deviceInfoList[props.controlSN].wireless_link["4g_link_state"] == 0? '开启': '关闭'}}
{{props.deviceInfoList[props.controlSN]?.wireless_link['4g_link_state'] == 0? '开启': '关闭'}}
</a-button>
</div>
</div>
@ -315,7 +389,8 @@ import { clientPublish } from '@/utils/mqtt'
import { buildGUID } from '@/utils/uuid';
import Icon from '@/components/Icon/Icon.vue';
import { modeCodeOptions, deviceOnlineStatusOptions, coverStateOptions, airConditionerStateOptions, silentModeOptions,
alarmStateOptions, droneChargeStateOptions, fourgLinkStateOptions, linkWorkmodeOptions } from './util'
alarmStateOptions, droneChargeStateOptions, fourgLinkStateOptions, linkWorkmodeOptions, sourceTypeOptions, qualityOptions,
isConfiguredOptions, rainfallOptions } from './util'
const props = defineProps(['deviceInfoList', 'controlSN'])
const openDebug = () => {
@ -407,5 +482,23 @@ const changeDeviceState = (method, action?, type?) => {
height: 30px;
}
}
.show-info-item{
width: 190px;
height: 79px;
.info-value{
display: flex;
justify-content: center;
font-size: 14px;
font-weight: 600;
line-height: 20px;
}
.info-label{
display: flex;
justify-content: center;
font-size: 14px;
line-height: 20px;
color: rgba(0,0,0,0.8);
}
}
}
</style>

@ -17,7 +17,7 @@ export const coverStateOptions = {
3: '舱盖状态异常',
}
export const airConditionerStateOptions = {
0: '空闲模式(无制冷、制热、除湿等)',
0: '空闲模式',
1: '制冷模式',
2: '制热模式',
3: '除湿模式',
@ -53,4 +53,28 @@ export const fourgLinkStateOptions = {
export const linkWorkmodeOptions = {
0: 'SDR 模式',
1: '4G 融合模式',
}
export const sourceTypeOptions = {
0: '未标定',
1: '自收敛标定',
2: '手动标定',
3: '网络RTK标定',
}
export const qualityOptions = {
0: '无信号',
1: '差',
2: '较差',
3: '一般',
4: '较好',
5: '好',
}
export const isConfiguredOptions = {
0: '未设置',
1: '已设置',
}
export const rainfallOptions = {
0: '无雨',
1: '小雨',
2: '中雨',
3: '大雨',
}
Loading…
Cancel
Save