根据后端新接口重构设备管理界面
This commit is contained in:
@@ -1,14 +1,29 @@
|
||||
import apiClient from '../api/index.js';
|
||||
import { AreaControllerApi, DeviceApi } from '../api/device.js';
|
||||
|
||||
class DeviceService {
|
||||
/**
|
||||
* 获取设备列表
|
||||
* @returns {Promise<Array>} 设备列表
|
||||
* 获取所有设备和区域主控的列表,并将其合并为树形结构所需的数据
|
||||
* @returns {Promise<Array>} 合并后的设备列表
|
||||
*/
|
||||
async getDevices() {
|
||||
try {
|
||||
const response = await apiClient.devices.list();
|
||||
return response.data || [];
|
||||
const [areaControllersResponse, devicesResponse] = await Promise.all([
|
||||
AreaControllerApi.list(),
|
||||
DeviceApi.list()
|
||||
]);
|
||||
|
||||
const areaControllers = (areaControllersResponse.data || []).map(controller => ({
|
||||
...controller,
|
||||
type: 'area_controller' // 添加类型标识
|
||||
}));
|
||||
|
||||
const devices = (devicesResponse.data || []).map(device => ({
|
||||
...device,
|
||||
type: 'device', // 添加类型标识
|
||||
parent_id: device.area_controller_id // 适配前端树形结构
|
||||
}));
|
||||
|
||||
return [...areaControllers, ...devices];
|
||||
} catch (error) {
|
||||
console.error('获取设备列表失败:', error);
|
||||
throw error;
|
||||
@@ -16,14 +31,20 @@ class DeviceService {
|
||||
}
|
||||
|
||||
/**
|
||||
* 创建新设备
|
||||
* @param {Object} device 设备信息
|
||||
* @returns {Promise<Object>} 创建的设备信息
|
||||
* 创建新设备或区域主控
|
||||
* @param {Object} deviceData 设备或区域主控信息,包含type字段
|
||||
* @returns {Promise<Object>} 创建结果
|
||||
*/
|
||||
async createDevice(device) {
|
||||
async createDevice(deviceData) {
|
||||
try {
|
||||
const response = await apiClient.devices.create(device);
|
||||
return response.data;
|
||||
if (deviceData.type === 'area_controller') {
|
||||
const response = await AreaControllerApi.create(deviceData);
|
||||
return { ...response.data, type: 'area_controller' };
|
||||
} else {
|
||||
// 默认创建普通设备
|
||||
const response = await DeviceApi.create(deviceData);
|
||||
return { ...response.data, type: 'device', parent_id: response.data.area_controller_id };
|
||||
}
|
||||
} catch (error) {
|
||||
console.error('创建设备失败:', error);
|
||||
throw error;
|
||||
@@ -31,14 +52,20 @@ class DeviceService {
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取设备详情
|
||||
* @param {number} deviceId 设备ID
|
||||
* @returns {Promise<Object>} 设备详情
|
||||
* 获取设备或区域主控详情
|
||||
* @param {number} id ID
|
||||
* @param {string} type 类型 ('area_controller' 或 'device')
|
||||
* @returns {Promise<Object>} 详情
|
||||
*/
|
||||
async getDevice(deviceId) {
|
||||
async getDevice(id, type) {
|
||||
try {
|
||||
const response = await apiClient.devices.get(deviceId);
|
||||
return response.data;
|
||||
if (type === 'area_controller') {
|
||||
const response = await AreaControllerApi.get(id);
|
||||
return { ...response.data, type: 'area_controller' };
|
||||
} else {
|
||||
const response = await DeviceApi.get(id);
|
||||
return { ...response.data, type: 'device', parent_id: response.data.area_controller_id };
|
||||
}
|
||||
} catch (error) {
|
||||
console.error('获取设备详情失败:', error);
|
||||
throw error;
|
||||
@@ -46,15 +73,20 @@ class DeviceService {
|
||||
}
|
||||
|
||||
/**
|
||||
* 更新设备信息
|
||||
* @param {number} deviceId 设备ID
|
||||
* @param {Object} device 更新的设备信息
|
||||
* @returns {Promise<Object>} 更新后的设备信息
|
||||
* 更新设备或区域主控信息
|
||||
* @param {number} id ID
|
||||
* @param {Object} deviceData 更新的设备或区域主控信息,包含type字段
|
||||
* @returns {Promise<Object>} 更新后的信息
|
||||
*/
|
||||
async updateDevice(deviceId, device) {
|
||||
async updateDevice(id, deviceData) {
|
||||
try {
|
||||
const response = await apiClient.devices.update(deviceId, device);
|
||||
return response.data;
|
||||
if (deviceData.type === 'area_controller') {
|
||||
const response = await AreaControllerApi.update(id, deviceData);
|
||||
return { ...response.data, type: 'area_controller' };
|
||||
} else {
|
||||
const response = await DeviceApi.update(id, deviceData);
|
||||
return { ...response.data, type: 'device', parent_id: response.data.area_controller_id };
|
||||
}
|
||||
} catch (error) {
|
||||
console.error('更新设备失败:', error);
|
||||
throw error;
|
||||
@@ -62,13 +94,17 @@ class DeviceService {
|
||||
}
|
||||
|
||||
/**
|
||||
* 删除设备
|
||||
* @param {number} deviceId 设备ID
|
||||
* 删除设备或区域主控
|
||||
* @param {Object} device 包含id和type属性的设备或区域主控对象
|
||||
* @returns {Promise<void>}
|
||||
*/
|
||||
async deleteDevice(deviceId) {
|
||||
async deleteDevice(device) {
|
||||
try {
|
||||
await apiClient.devices.delete(deviceId);
|
||||
if (device.type === 'area_controller') {
|
||||
await AreaControllerApi.delete(device.id);
|
||||
} else {
|
||||
await DeviceApi.delete(device.id);
|
||||
}
|
||||
} catch (error) {
|
||||
console.error('删除设备失败:', error);
|
||||
throw error;
|
||||
@@ -77,4 +113,4 @@ class DeviceService {
|
||||
}
|
||||
|
||||
// 导出设备服务实例
|
||||
export default new DeviceService();
|
||||
export default new DeviceService();
|
||||
|
||||
Reference in New Issue
Block a user