This commit is contained in:
2025-10-20 14:52:25 +08:00
parent a457b9713c
commit c68dff6123
6 changed files with 93 additions and 28 deletions

View File

@@ -54,3 +54,42 @@ export const deleteDevice = (id) => {
export const manualControlDevice = (id, manualControlData) => { export const manualControlDevice = (id, manualControlData) => {
return http.post(`/api/v1/devices/manual-control/${id}`, manualControlData); return http.post(`/api/v1/devices/manual-control/${id}`, manualControlData);
}; };
// AreaControllerApi 封装
export const AreaControllerApi = {
list: async () => {
const response = await getDevices();
return {
...response,
data: response.data.filter(device => device.type === 'area_controller')
};
},
create: (deviceData) => {
return createDevice({ ...deviceData, type: 'area_controller' });
},
getById: (id) => {
return getDeviceById(id);
},
update: (id, deviceData) => {
return updateDevice(id, { ...deviceData, type: 'area_controller' });
},
delete: (id) => {
return deleteDevice(id);
}
};
// DeviceApi 封装
export const DeviceApi = {
create: (deviceData) => {
return createDevice({ ...deviceData, type: 'device' });
},
getById: (id) => {
return getDeviceById(id);
},
update: (id, deviceData) => {
return updateDevice(id, { ...deviceData, type: 'device' });
},
delete: (id) => {
return deleteDevice(id);
}
};

View File

@@ -4,7 +4,7 @@ import http from '../utils/http';
* 获取系统中所有设备模板的列表 * 获取系统中所有设备模板的列表
* @returns {Promise<*>} * @returns {Promise<*>}
*/ */
export const getDeviceTemplates = () => { const getDeviceTemplates = () => {
return http.get('/api/v1/device-templates'); return http.get('/api/v1/device-templates');
}; };
@@ -13,7 +13,7 @@ export const getDeviceTemplates = () => {
* @param {object} deviceTemplateData - 设备模板信息,对应 dto.CreateDeviceTemplateRequest * @param {object} deviceTemplateData - 设备模板信息,对应 dto.CreateDeviceTemplateRequest
* @returns {Promise<*>} * @returns {Promise<*>}
*/ */
export const createDeviceTemplate = (deviceTemplateData) => { const createDeviceTemplate = (deviceTemplateData) => {
return http.post('/api/v1/device-templates', deviceTemplateData); return http.post('/api/v1/device-templates', deviceTemplateData);
}; };
@@ -22,7 +22,7 @@ export const createDeviceTemplate = (deviceTemplateData) => {
* @param {string} id - 设备模板ID * @param {string} id - 设备模板ID
* @returns {Promise<*>} * @returns {Promise<*>}
*/ */
export const getDeviceTemplateById = (id) => { const getDeviceTemplateById = (id) => {
return http.get(`/api/v1/device-templates/${id}`); return http.get(`/api/v1/device-templates/${id}`);
}; };
@@ -32,7 +32,7 @@ export const getDeviceTemplateById = (id) => {
* @param {object} deviceTemplateData - 要更新的设备模板信息,对应 dto.UpdateDeviceTemplateRequest * @param {object} deviceTemplateData - 要更新的设备模板信息,对应 dto.UpdateDeviceTemplateRequest
* @returns {Promise<*>} * @returns {Promise<*>}
*/ */
export const updateDeviceTemplate = (id, deviceTemplateData) => { const updateDeviceTemplate = (id, deviceTemplateData) => {
return http.put(`/api/v1/device-templates/${id}`, deviceTemplateData); return http.put(`/api/v1/device-templates/${id}`, deviceTemplateData);
}; };
@@ -41,6 +41,14 @@ export const updateDeviceTemplate = (id, deviceTemplateData) => {
* @param {string} id - 设备模板ID * @param {string} id - 设备模板ID
* @returns {Promise<*>} * @returns {Promise<*>}
*/ */
export const deleteDeviceTemplate = (id) => { const deleteDeviceTemplate = (id) => {
return http.delete(`/api/v1/device-templates/${id}`); return http.delete(`/api/v1/device-templates/${id}`);
}; };
export const DeviceTemplateApi = {
getDeviceTemplates,
createDeviceTemplate,
getDeviceTemplateById,
updateDeviceTemplate,
deleteDeviceTemplate,
};

View File

@@ -1,7 +1,7 @@
import { AreaControllerApi, DeviceApi } from './device.js'; import { AreaControllerApi, DeviceApi } from './device.js';
import PlanApi from './plan.js'; import { PlanApi } from './plan.js';
import UserApi from './user.js'; import { UserApi } from './user.js';
import DeviceTemplateApi from './deviceTemplate.js'; // 导入设备模板API import { DeviceTemplateApi } from './deviceTemplate.js'; // 导入设备模板API
/** /**
* API客户端 * API客户端

View File

@@ -4,7 +4,7 @@ import http from '../utils/http';
* 获取所有计划的列表 * 获取所有计划的列表
* @returns {Promise<*>} * @returns {Promise<*>}
*/ */
export const getPlans = () => { const getPlans = () => {
return http.get('/api/v1/plans'); return http.get('/api/v1/plans');
}; };
@@ -13,7 +13,7 @@ export const getPlans = () => {
* @param {object} planData - 计划信息,对应 dto.CreatePlanRequest * @param {object} planData - 计划信息,对应 dto.CreatePlanRequest
* @returns {Promise<*>} * @returns {Promise<*>}
*/ */
export const createPlan = (planData) => { const createPlan = (planData) => {
return http.post('/api/v1/plans', planData); return http.post('/api/v1/plans', planData);
}; };
@@ -22,7 +22,7 @@ export const createPlan = (planData) => {
* @param {number} id - 计划ID * @param {number} id - 计划ID
* @returns {Promise<*>} * @returns {Promise<*>}
*/ */
export const getPlanById = (id) => { const getPlanById = (id) => {
return http.get(`/api/v1/plans/${id}`); return http.get(`/api/v1/plans/${id}`);
}; };
@@ -32,7 +32,7 @@ export const getPlanById = (id) => {
* @param {object} planData - 更新后的计划信息,对应 dto.UpdatePlanRequest * @param {object} planData - 更新后的计划信息,对应 dto.UpdatePlanRequest
* @returns {Promise<*>} * @returns {Promise<*>}
*/ */
export const updatePlan = (id, planData) => { const updatePlan = (id, planData) => {
return http.put(`/api/v1/plans/${id}`, planData); return http.put(`/api/v1/plans/${id}`, planData);
}; };
@@ -41,7 +41,7 @@ export const updatePlan = (id, planData) => {
* @param {number} id - 计划ID * @param {number} id - 计划ID
* @returns {Promise<*>} * @returns {Promise<*>}
*/ */
export const deletePlan = (id) => { const deletePlan = (id) => {
return http.delete(`/api/v1/plans/${id}`); return http.delete(`/api/v1/plans/${id}`);
}; };
@@ -50,7 +50,7 @@ export const deletePlan = (id) => {
* @param {number} id - 计划ID * @param {number} id - 计划ID
* @returns {Promise<*>} * @returns {Promise<*>}
*/ */
export const startPlan = (id) => { const startPlan = (id) => {
return http.post(`/api/v1/plans/${id}/start`); return http.post(`/api/v1/plans/${id}/start`);
}; };
@@ -59,6 +59,16 @@ export const startPlan = (id) => {
* @param {number} id - 计划ID * @param {number} id - 计划ID
* @returns {Promise<*>} * @returns {Promise<*>}
*/ */
export const stopPlan = (id) => { const stopPlan = (id) => {
return http.post(`/api/v1/plans/${id}/stop`); return http.post(`/api/v1/plans/${id}/stop`);
}; };
export const PlanApi = {
getPlans,
createPlan,
getPlanById,
updatePlan,
deletePlan,
startPlan,
stopPlan,
};

View File

@@ -5,7 +5,7 @@ import http from '../utils/http';
* @param {object} userData - 用户信息,对应 dto.CreateUserRequest * @param {object} userData - 用户信息,对应 dto.CreateUserRequest
* @returns {Promise<*>} * @returns {Promise<*>}
*/ */
export const createUser = (userData) => { const createUser = (userData) => {
return http.post('/api/v1/users', userData); return http.post('/api/v1/users', userData);
}; };
@@ -14,7 +14,7 @@ export const createUser = (userData) => {
* @param {object} credentials - 登录凭证,对应 dto.LoginRequest * @param {object} credentials - 登录凭证,对应 dto.LoginRequest
* @returns {Promise<*>} * @returns {Promise<*>}
*/ */
export const login = (credentials) => { const login = (credentials) => {
return http.post('/api/v1/users/login', credentials); return http.post('/api/v1/users/login', credentials);
}; };
@@ -24,6 +24,12 @@ export const login = (credentials) => {
* @param {object} params - 查询参数 * @param {object} params - 查询参数
* @returns {Promise<*>} * @returns {Promise<*>}
*/ */
export const getUserHistory = (id, params) => { const getUserHistory = (id, params) => {
return http.get(`/api/v1/users/${id}/history`, { params }); return http.get(`/api/v1/users/${id}/history`, { params });
}; };
export const UserApi = {
createUser,
login,
getUserHistory,
};

View File

@@ -1,4 +1,4 @@
import {AreaControllerApi, DeviceApi} from '../api/device.js'; import {AreaControllerApi, DeviceApi, getDevices} from '../api/device.js';
class DeviceService { class DeviceService {
/** /**
@@ -7,9 +7,9 @@ class DeviceService {
*/ */
async getDevices() { async getDevices() {
try { try {
const [areaControllersResponse, devicesResponse] = await Promise.all([ const [areaControllersResponse, allDevicesResponse] = await Promise.all([
AreaControllerApi.list(), AreaControllerApi.list(),
DeviceApi.list() getDevices() // 使用通用的getDevices函数获取所有设备
]); ]);
const areaControllers = (areaControllersResponse.data || []).map(controller => ({ const areaControllers = (areaControllersResponse.data || []).map(controller => ({
@@ -17,11 +17,13 @@ class DeviceService {
type: 'area_controller' // 添加类型标识 type: 'area_controller' // 添加类型标识
})); }));
const devices = (devicesResponse.data || []).map(device => ({ const devices = (allDevicesResponse.data || [])
...device, .filter(device => device.type === 'device') // 过滤出普通设备
type: 'device', // 添加类型标识 .map(device => ({
parent_id: device.area_controller_id // 适配前端树形结构 ...device,
})); type: 'device', // 添加类型标识
parent_id: device.area_controller_id // 适配前端树形结构
}));
return [...areaControllers, ...devices]; return [...areaControllers, ...devices];
} catch (error) { } catch (error) {
@@ -60,10 +62,10 @@ class DeviceService {
async getDevice(id, type) { async getDevice(id, type) {
try { try {
if (type === 'area_controller') { if (type === 'area_controller') {
const response = await AreaControllerApi.get(id); const response = await AreaControllerApi.getById(id);
return {...response.data, type: 'area_controller'}; return {...response.data, type: 'area_controller'};
} else { } else {
const response = await DeviceApi.get(id); const response = await DeviceApi.getById(id);
return {...response.data, type: 'device', parent_id: response.data.area_controller_id}; return {...response.data, type: 'device', parent_id: response.data.area_controller_id};
} }
} catch (error) { } catch (error) {