Initial commit
This commit is contained in:
275
前端集成说明.md
Normal file
275
前端集成说明.md
Normal file
@@ -0,0 +1,275 @@
|
||||
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)
|
||||
- 设备序列号:输入设备SN(如:1581F5FHC248A00DXGLU)
|
||||
- 载荷类型:选择或输入载荷类型(如:标准载荷)
|
||||
- 侦察范围:输入侦察范围(如:5km)
|
||||
- 续航时间:输入续航时间(如:45分钟)
|
||||
- 设备描述:输入设备描述(可选)
|
||||
|
||||
3. **提交保存**:点击保存按钮,系统会调用后端API将数据保存到MySQL数据库
|
||||
|
||||
4. **查看结果**:添加成功后,新装备会出现在设备列表中,并且数据会永久保存在MySQL数据库中
|
||||
|
||||
#### 数据同步:
|
||||
|
||||
- **实时数据**:设备的位置、电量、高度等实时数据仍然通过WebSocket获取
|
||||
- **基础信息**:设备的基础信息(名称、编号、类型等)存储在MySQL中
|
||||
- **状态更新**:设备状态变更时会同时更新MySQL数据库
|
||||
|
||||
## 注意事项
|
||||
|
||||
1. **设备编号唯一性**:每个设备的编号必须唯一,系统会检查重复
|
||||
2. **租户隔离**:不同租户的设备数据是隔离的
|
||||
3. **数据一致性**:确保MongoDB和MySQL数据的一致性
|
||||
4. **错误处理**:前端需要处理API调用失败的情况
|
||||
5. **权限控制**:确保只有有权限的用户才能添加设备
|
||||
|
||||
## 测试建议
|
||||
|
||||
1. **功能测试**:测试添加、查询、更新、删除功能
|
||||
2. **数据验证**:验证必填字段的校验
|
||||
3. **并发测试**:测试同时添加多个设备的情况
|
||||
4. **异常测试**:测试网络异常、服务器异常等情况
|
||||
|
||||
## 联系支持
|
||||
|
||||
如有问题或需要技术支持,请联系开发团队。
|
||||
Reference in New Issue
Block a user