7.8 KiB
7.8 KiB
s# 无人装备前端集成说明
概述
本文档说明如何在前端界面中集成无人装备的添加功能,实现装备数据的永久化存储。
后端API接口
1. 添加无人装备
接口地址: POST /manage/api/v1/devices/{workspace_id}/ue-device/create
请求参数:
{
"deviceCode": "DEV001",
"deviceName": "Mavic 3E",
"deviceType": 0,
"serialNumber": "1581F5FHC248A00DXGLU",
"parentCode": "",
"domain": 0,
"height": 100.0,
"payloadType": "标准载荷",
"flightSpeed": 65.0,
"longitude": 116.397128,
"latitude": 39.916527,
"batteryLevel": 85,
"strikeRange": 5.0,
"enduranceTime": 45,
"deviceStatus": 0,
"description": "高性能无人机",
"tenantId": 1
}
参数说明:
deviceCode: 设备编号(必填,唯一)deviceName: 设备名称(必填)deviceType: 设备类型(必填,0: 无人机 1: 无人车 2: 巡飞弹)serialNumber: 设备序列号(必填)parentCode: 父设备编号(可选)domain: 设备域(可选,0: 设备本身 1: 遥控类 2: 架内设备 3: 架外设备)height: 高度(米,可选)payloadType: 载荷类型(可选)flightSpeed: 飞行速度(km/h,可选)longitude: 经度(可选)latitude: 纬度(可选)batteryLevel: 电量百分比(可选)strikeRange: 侦察范围(km,可选)enduranceTime: 续航时间(分钟,可选)deviceStatus: 设备状态(可选,0: 离线 1: 在线 2: 故障 3: 维护中)description: 设备描述(可选)tenantId: 租户ID(必填)
响应示例:
{
"code": 0,
"message": "success",
"data": {
"id": 1,
"deviceCode": "DEV001",
"deviceName": "Mavic 3E",
"deviceType": 0,
"deviceTypeName": "无人机",
"serialNumber": "1581F5FHC248A00DXGLU",
"parentCode": "",
"onlineStatus": 0,
"domain": 0,
"height": 100.0,
"payloadType": "标准载荷",
"flightSpeed": 65.0,
"longitude": 116.397128,
"latitude": 39.916527,
"batteryLevel": 85,
"strikeRange": 5.0,
"enduranceTime": 45,
"deviceStatus": 0,
"deviceStatusName": "离线",
"lastOnlineTime": null,
"lastLocationTime": null,
"description": "高性能无人机",
"tenantId": 1,
"createTime": "2025-01-20T10:30:00",
"updateTime": "2025-01-20T10:30:00"
}
}
2. 获取无人装备列表
接口地址: GET /manage/api/v1/devices/{workspace_id}/ue-devices
请求参数:
domain: 设备域(可选,0: 无人机 1: 无人车 2: 巡飞弹)page: 页码(可选,默认1)pageSize: 页大小(可选,默认1000)
响应示例:
{
"code": 0,
"message": "success",
"data": [
{
"id": 1,
"deviceCode": "DEV001",
"deviceName": "Mavic 3E",
"deviceType": 0,
"deviceTypeName": "无人机",
"serialNumber": "1581F5FHC248A00DXGLU",
"parentCode": "",
"onlineStatus": 0,
"domain": 0,
"height": 100.0,
"payloadType": "标准载荷",
"flightSpeed": 65.0,
"longitude": 116.397128,
"latitude": 39.916527,
"batteryLevel": 85,
"strikeRange": 5.0,
"enduranceTime": 45,
"deviceStatus": 0,
"deviceStatusName": "离线",
"lastOnlineTime": null,
"lastLocationTime": null,
"description": "高性能无人机",
"tenantId": 1,
"createTime": "2025-01-20T10:30:00",
"updateTime": "2025-01-20T10:30:00"
}
]
}
前端集成示例
1. 修改现有的getDeviceList函数
在您的前端代码中,修改 getDeviceList 函数以支持无人装备:
// 获取无人机列表
export const getDeviceList = async (domain) => {
let res = await req.get(`/manage/api/v1/devices/${workspace_id}/devices/bound`, {
params: {
page: 1,
page_size: 1000,
domain
}
});
return res.data;
};
// 新增:获取无人装备列表(MySQL存储)
export const getUeDeviceList = async (domain) => {
let res = await req.get(`/manage/api/v1/devices/${workspace_id}/ue-devices`, {
params: {
domain,
page: 1,
page_size: 1000
}
});
return res.data;
};
2. 添加装备创建函数
// 创建无人装备
export const createUeDevice = async (deviceData) => {
let res = await req.post(`/manage/api/v1/devices/${workspace_id}/ue-device/create`, deviceData);
return res.data;
};
3. 修改前端界面逻辑
在您的前端界面中,修改装备添加逻辑:
// 无人机数据初始化(修改版)
const flyDeviceInit = async () => {
try {
// 获取原有设备列表
let resFly = await getDeviceList(0); // 获取无人机列表
let resRc = await getDeviceList(2); // 获取遥控器列表
// 获取MySQL存储的无人装备列表
let resUeDevices = await getUeDeviceList(0); // 获取无人机装备
// 合并数据
let allDevices = [...resFly.data, ...resUeDevices];
// 处理数据...
console.log('设备列表:', allDevices);
} catch (error) {
console.error('设备初始化失败:', error);
}
};
// 添加新装备
const addNewDevice = async (deviceInfo) => {
try {
const deviceData = {
deviceCode: deviceInfo.deviceCode,
deviceName: deviceInfo.deviceName,
deviceType: 0, // 0: 无人机
serialNumber: deviceInfo.serialNumber,
payloadType: deviceInfo.payloadType || "标准载荷",
strikeRange: deviceInfo.strikeRange || 5.0,
enduranceTime: deviceInfo.enduranceTime || 45,
deviceStatus: 0, // 默认离线
description: deviceInfo.description || "",
tenantId: 1 // 根据实际情况设置
};
const result = await createUeDevice(deviceData);
if (result.code === 0) {
// 添加成功,刷新列表
await flyDeviceInit();
console.log('装备添加成功:', result.data);
} else {
console.error('装备添加失败:', result.message);
}
} catch (error) {
console.error('添加装备时发生错误:', error);
}
};
4. 界面操作说明
添加装备的步骤:
-
点击"+"按钮:在无人装备界面点击右上角的"+"按钮
-
填写装备信息:
- 设备编号:输入唯一的设备编号(如:DEV001)
- 设备名称:输入设备名称(如:Mavic 3E)
- 设备序列号:输入设备SN(如:1581F5FHC248A00DXGLU)
- 载荷类型:选择或输入载荷类型(如:标准载荷)
- 侦察范围:输入侦察范围(如:5km)
- 续航时间:输入续航时间(如:45分钟)
- 设备描述:输入设备描述(可选)
-
提交保存:点击保存按钮,系统会调用后端API将数据保存到MySQL数据库
-
查看结果:添加成功后,新装备会出现在设备列表中,并且数据会永久保存在MySQL数据库中
数据同步:
- 实时数据:设备的位置、电量、高度等实时数据仍然通过WebSocket获取
- 基础信息:设备的基础信息(名称、编号、类型等)存储在MySQL中
- 状态更新:设备状态变更时会同时更新MySQL数据库
注意事项
- 设备编号唯一性:每个设备的编号必须唯一,系统会检查重复
- 租户隔离:不同租户的设备数据是隔离的
- 数据一致性:确保MongoDB和MySQL数据的一致性
- 错误处理:前端需要处理API调用失败的情况
- 权限控制:确保只有有权限的用户才能添加设备
测试建议
- 功能测试:测试添加、查询、更新、删除功能
- 数据验证:验证必填字段的校验
- 并发测试:测试同时添加多个设备的情况
- 异常测试:测试网络异常、服务器异常等情况
联系支持
如有问题或需要技术支持,请联系开发团队。