修bug
This commit is contained in:
@@ -7,30 +7,26 @@ class DeviceService {
|
|||||||
*/
|
*/
|
||||||
async getDevices() {
|
async getDevices() {
|
||||||
try {
|
try {
|
||||||
// 1. 分别、正确地调用接口获取区域主控和所有设备
|
// 1. 并行发起两个独立的API请求:一个获取区域主控,一个获取普通设备
|
||||||
const [areaControllersResponse, allDevicesResponse] = await Promise.all([
|
const [areaControllersResponse, devicesResponse] = await Promise.all([
|
||||||
AreaControllerApi.list(), // 现在调用 GET /api/v1/area-controllers
|
AreaControllerApi.list(), // 调用 GET /api/v1/area-controllers
|
||||||
DeviceApi.list() // 现在调用 GET /api/v1/devices
|
DeviceApi.list() // 调用 GET /api/v1/devices
|
||||||
]);
|
]);
|
||||||
|
|
||||||
// 2. 处理区域主控数据
|
// 2. 处理区域主控数据,并添加前端所需的'type'标识
|
||||||
const areaControllers = (areaControllersResponse.data || []).map(controller => ({
|
const areaControllers = (areaControllersResponse.data || []).map(controller => ({
|
||||||
...controller,
|
...controller,
|
||||||
type: 'area_controller' // 添加类型标识,用于前端区分
|
type: 'area_controller'
|
||||||
}));
|
}));
|
||||||
|
|
||||||
// 3. 处理普通设备数据
|
// 3. 处理普通设备数据,并添加'type'和'parent_id'以构建树形结构
|
||||||
const devices = (allDevicesResponse.data || [])
|
const devices = (devicesResponse.data || []).map(device => ({
|
||||||
// 注意:后端的 /api/v1/devices 可能也包含了区域主控,前端需要做筛选
|
...device,
|
||||||
.filter(device => !areaControllers.some(ac => ac.id === device.id && device.type === 'area_controller'))
|
type: 'device',
|
||||||
.map(device => ({
|
parent_id: device.area_controller_id
|
||||||
...device,
|
}));
|
||||||
type: 'device', // 添加类型标识
|
|
||||||
// 使用 area_controller_id 作为 parent_id 以构建树形结构
|
|
||||||
parent_id: device.area_controller_id
|
|
||||||
}));
|
|
||||||
|
|
||||||
// 4. 合并数据,返回给组件
|
// 4. 合并两份数据,形成完整的列表,返回给UI组件
|
||||||
return [...areaControllers, ...devices];
|
return [...areaControllers, ...devices];
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
console.error('获取设备列表失败:', error);
|
console.error('获取设备列表失败:', error);
|
||||||
|
|||||||
Reference in New Issue
Block a user