From c68dff6123104b577419cfde8f744597eb05a0bd Mon Sep 17 00:00:00 2001 From: huang <1724659546@qq.com> Date: Mon, 20 Oct 2025 14:52:25 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AEbug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/api/device.js | 39 +++++++++++++++++++++++++++++++++++ src/api/deviceTemplate.js | 18 +++++++++++----- src/api/index.js | 6 +++--- src/api/plan.js | 24 ++++++++++++++------- src/api/user.js | 12 ++++++++--- src/services/deviceService.js | 22 +++++++++++--------- 6 files changed, 93 insertions(+), 28 deletions(-) diff --git a/src/api/device.js b/src/api/device.js index 92635213..97255fe6 100644 --- a/src/api/device.js +++ b/src/api/device.js @@ -54,3 +54,42 @@ export const deleteDevice = (id) => { export const manualControlDevice = (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); + } +}; diff --git a/src/api/deviceTemplate.js b/src/api/deviceTemplate.js index f34e33ff..d45f9d55 100644 --- a/src/api/deviceTemplate.js +++ b/src/api/deviceTemplate.js @@ -4,7 +4,7 @@ import http from '../utils/http'; * 获取系统中所有设备模板的列表 * @returns {Promise<*>} */ -export const getDeviceTemplates = () => { +const getDeviceTemplates = () => { return http.get('/api/v1/device-templates'); }; @@ -13,7 +13,7 @@ export const getDeviceTemplates = () => { * @param {object} deviceTemplateData - 设备模板信息,对应 dto.CreateDeviceTemplateRequest * @returns {Promise<*>} */ -export const createDeviceTemplate = (deviceTemplateData) => { +const createDeviceTemplate = (deviceTemplateData) => { return http.post('/api/v1/device-templates', deviceTemplateData); }; @@ -22,7 +22,7 @@ export const createDeviceTemplate = (deviceTemplateData) => { * @param {string} id - 设备模板ID * @returns {Promise<*>} */ -export const getDeviceTemplateById = (id) => { +const getDeviceTemplateById = (id) => { return http.get(`/api/v1/device-templates/${id}`); }; @@ -32,7 +32,7 @@ export const getDeviceTemplateById = (id) => { * @param {object} deviceTemplateData - 要更新的设备模板信息,对应 dto.UpdateDeviceTemplateRequest * @returns {Promise<*>} */ -export const updateDeviceTemplate = (id, deviceTemplateData) => { +const updateDeviceTemplate = (id, deviceTemplateData) => { return http.put(`/api/v1/device-templates/${id}`, deviceTemplateData); }; @@ -41,6 +41,14 @@ export const updateDeviceTemplate = (id, deviceTemplateData) => { * @param {string} id - 设备模板ID * @returns {Promise<*>} */ -export const deleteDeviceTemplate = (id) => { +const deleteDeviceTemplate = (id) => { return http.delete(`/api/v1/device-templates/${id}`); }; + +export const DeviceTemplateApi = { + getDeviceTemplates, + createDeviceTemplate, + getDeviceTemplateById, + updateDeviceTemplate, + deleteDeviceTemplate, +}; diff --git a/src/api/index.js b/src/api/index.js index eacb715a..c720d1db 100644 --- a/src/api/index.js +++ b/src/api/index.js @@ -1,7 +1,7 @@ import { AreaControllerApi, DeviceApi } from './device.js'; -import PlanApi from './plan.js'; -import UserApi from './user.js'; -import DeviceTemplateApi from './deviceTemplate.js'; // 导入设备模板API +import { PlanApi } from './plan.js'; +import { UserApi } from './user.js'; +import { DeviceTemplateApi } from './deviceTemplate.js'; // 导入设备模板API /** * API客户端 diff --git a/src/api/plan.js b/src/api/plan.js index fdd692ec..28db6e86 100644 --- a/src/api/plan.js +++ b/src/api/plan.js @@ -4,7 +4,7 @@ import http from '../utils/http'; * 获取所有计划的列表 * @returns {Promise<*>} */ -export const getPlans = () => { +const getPlans = () => { return http.get('/api/v1/plans'); }; @@ -13,7 +13,7 @@ export const getPlans = () => { * @param {object} planData - 计划信息,对应 dto.CreatePlanRequest * @returns {Promise<*>} */ -export const createPlan = (planData) => { +const createPlan = (planData) => { return http.post('/api/v1/plans', planData); }; @@ -22,7 +22,7 @@ export const createPlan = (planData) => { * @param {number} id - 计划ID * @returns {Promise<*>} */ -export const getPlanById = (id) => { +const getPlanById = (id) => { return http.get(`/api/v1/plans/${id}`); }; @@ -32,7 +32,7 @@ export const getPlanById = (id) => { * @param {object} planData - 更新后的计划信息,对应 dto.UpdatePlanRequest * @returns {Promise<*>} */ -export const updatePlan = (id, planData) => { +const updatePlan = (id, planData) => { return http.put(`/api/v1/plans/${id}`, planData); }; @@ -41,7 +41,7 @@ export const updatePlan = (id, planData) => { * @param {number} id - 计划ID * @returns {Promise<*>} */ -export const deletePlan = (id) => { +const deletePlan = (id) => { return http.delete(`/api/v1/plans/${id}`); }; @@ -50,7 +50,7 @@ export const deletePlan = (id) => { * @param {number} id - 计划ID * @returns {Promise<*>} */ -export const startPlan = (id) => { +const startPlan = (id) => { return http.post(`/api/v1/plans/${id}/start`); }; @@ -59,6 +59,16 @@ export const startPlan = (id) => { * @param {number} id - 计划ID * @returns {Promise<*>} */ -export const stopPlan = (id) => { +const stopPlan = (id) => { return http.post(`/api/v1/plans/${id}/stop`); }; + +export const PlanApi = { + getPlans, + createPlan, + getPlanById, + updatePlan, + deletePlan, + startPlan, + stopPlan, +}; diff --git a/src/api/user.js b/src/api/user.js index 466d5fef..54fcb500 100644 --- a/src/api/user.js +++ b/src/api/user.js @@ -5,7 +5,7 @@ import http from '../utils/http'; * @param {object} userData - 用户信息,对应 dto.CreateUserRequest * @returns {Promise<*>} */ -export const createUser = (userData) => { +const createUser = (userData) => { return http.post('/api/v1/users', userData); }; @@ -14,7 +14,7 @@ export const createUser = (userData) => { * @param {object} credentials - 登录凭证,对应 dto.LoginRequest * @returns {Promise<*>} */ -export const login = (credentials) => { +const login = (credentials) => { return http.post('/api/v1/users/login', credentials); }; @@ -24,6 +24,12 @@ export const login = (credentials) => { * @param {object} params - 查询参数 * @returns {Promise<*>} */ -export const getUserHistory = (id, params) => { +const getUserHistory = (id, params) => { return http.get(`/api/v1/users/${id}/history`, { params }); }; + +export const UserApi = { + createUser, + login, + getUserHistory, +}; diff --git a/src/services/deviceService.js b/src/services/deviceService.js index 58cf0f9c..a9cfebb1 100644 --- a/src/services/deviceService.js +++ b/src/services/deviceService.js @@ -1,4 +1,4 @@ -import {AreaControllerApi, DeviceApi} from '../api/device.js'; +import {AreaControllerApi, DeviceApi, getDevices} from '../api/device.js'; class DeviceService { /** @@ -7,9 +7,9 @@ class DeviceService { */ async getDevices() { try { - const [areaControllersResponse, devicesResponse] = await Promise.all([ + const [areaControllersResponse, allDevicesResponse] = await Promise.all([ AreaControllerApi.list(), - DeviceApi.list() + getDevices() // 使用通用的getDevices函数获取所有设备 ]); const areaControllers = (areaControllersResponse.data || []).map(controller => ({ @@ -17,11 +17,13 @@ class DeviceService { type: 'area_controller' // 添加类型标识 })); - const devices = (devicesResponse.data || []).map(device => ({ - ...device, - type: 'device', // 添加类型标识 - parent_id: device.area_controller_id // 适配前端树形结构 - })); + const devices = (allDevicesResponse.data || []) + .filter(device => device.type === 'device') // 过滤出普通设备 + .map(device => ({ + ...device, + type: 'device', // 添加类型标识 + parent_id: device.area_controller_id // 适配前端树形结构 + })); return [...areaControllers, ...devices]; } catch (error) { @@ -60,10 +62,10 @@ class DeviceService { async getDevice(id, type) { try { if (type === 'area_controller') { - const response = await AreaControllerApi.get(id); + const response = await AreaControllerApi.getById(id); return {...response.data, type: 'area_controller'}; } 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}; } } catch (error) {