Files
xiaomubiao-master/前端集成说明.md
2026-05-22 16:13:20 +08:00

276 lines
7.8 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

s# 无人装备前端集成说明
## 概述
本文档说明如何在前端界面中集成无人装备的添加功能,实现装备数据的永久化存储。
## 后端API接口
### 1. 添加无人装备
**接口地址:** `POST /manage/api/v1/devices/{workspace_id}/ue-device/create`
**请求参数:**
```json
{
"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必填
**响应示例:**
```json
{
"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
**响应示例:**
```json
{
"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` 函数以支持无人装备:
```typescript
// 获取无人机列表
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. 添加装备创建函数
```typescript
// 创建无人装备
export const createUeDevice = async (deviceData) => {
let res = await req.post(`/manage/api/v1/devices/${workspace_id}/ue-device/create`, deviceData);
return res.data;
};
```
### 3. 修改前端界面逻辑
在您的前端界面中,修改装备添加逻辑:
```typescript
// 无人机数据初始化(修改版)
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. 界面操作说明
#### 添加装备的步骤:
1. **点击"+"按钮**:在无人装备界面点击右上角的"+"按钮
2. **填写装备信息**
- 设备编号输入唯一的设备编号DEV001
- 设备名称输入设备名称Mavic 3E
- 设备序列号输入设备SN1581F5FHC248A00DXGLU
- 载荷类型:选择或输入载荷类型(如:标准载荷)
- 侦察范围输入侦察范围5km
- 续航时间输入续航时间45分钟
- 设备描述:输入设备描述(可选)
3. **提交保存**点击保存按钮系统会调用后端API将数据保存到MySQL数据库
4. **查看结果**添加成功后新装备会出现在设备列表中并且数据会永久保存在MySQL数据库中
#### 数据同步:
- **实时数据**设备的位置、电量、高度等实时数据仍然通过WebSocket获取
- **基础信息**设备的基础信息名称、编号、类型等存储在MySQL中
- **状态更新**设备状态变更时会同时更新MySQL数据库
## 注意事项
1. **设备编号唯一性**:每个设备的编号必须唯一,系统会检查重复
2. **租户隔离**:不同租户的设备数据是隔离的
3. **数据一致性**确保MongoDB和MySQL数据的一致性
4. **错误处理**前端需要处理API调用失败的情况
5. **权限控制**:确保只有有权限的用户才能添加设备
## 测试建议
1. **功能测试**:测试添加、查询、更新、删除功能
2. **数据验证**:验证必填字段的校验
3. **并发测试**:测试同时添加多个设备的情况
4. **异常测试**:测试网络异常、服务器异常等情况
## 联系支持
如有问题或需要技术支持,请联系开发团队。