Files
pig-farm-controller-fe/src/api/deviceTemplate.js

104 lines
2.8 KiB
JavaScript
Raw Normal View History

2025-10-19 21:38:04 +08:00
import http from '../utils/http';
2025-09-30 23:17:32 +08:00
2025-10-23 15:17:31 +08:00
/**
* @typedef {('执行器'|'传感器')} DeviceCategory
*/
/**
* @typedef {('信号强度'|'电池电量'|'温度'|'湿度'|'重量')} SensorType
*/
/**
* @typedef {object} ValueDescriptor
* @property {SensorType} type
* @property {number} [multiplier] - 乘数用于原始数据转换
* @property {number} [offset] - 偏移量用于原始数据转换
*/
/**
* @typedef {object} DeviceTemplateResponse
* @property {number} id
* @property {string} name
* @property {string} [description]
* @property {string} [manufacturer]
* @property {DeviceCategory} category
* @property {object} commands
* @property {Array<ValueDescriptor>} values
* @property {string} created_at
* @property {string} updated_at
*/
/**
* @typedef {object} CreateDeviceTemplateRequest
* @property {string} name
* @property {string} [description]
* @property {string} [manufacturer]
* @property {DeviceCategory} category
* @property {object} commands
* @property {Array<ValueDescriptor>} [values]
*/
/**
* @typedef {object} UpdateDeviceTemplateRequest
* @property {string} name
* @property {string} [description]
* @property {string} [manufacturer]
* @property {DeviceCategory} category
* @property {object} commands
* @property {Array<ValueDescriptor>} [values]
*/
2025-09-30 23:17:32 +08:00
/**
2025-10-19 21:38:04 +08:00
* 获取系统中所有设备模板的列表
2025-10-23 15:17:31 +08:00
* @returns {Promise<Array<DeviceTemplateResponse>>}
2025-09-30 23:17:32 +08:00
*/
2025-10-20 14:52:25 +08:00
const getDeviceTemplates = () => {
2025-10-19 21:38:04 +08:00
return http.get('/api/v1/device-templates');
};
2025-09-30 23:17:32 +08:00
2025-10-19 21:38:04 +08:00
/**
* 根据提供的信息创建一个新设备模板
2025-10-23 15:17:31 +08:00
* @param {CreateDeviceTemplateRequest} deviceTemplateData - 设备模板信息
* @returns {Promise<DeviceTemplateResponse>}
2025-10-19 21:38:04 +08:00
*/
2025-10-20 14:52:25 +08:00
const createDeviceTemplate = (deviceTemplateData) => {
2025-10-19 21:38:04 +08:00
return http.post('/api/v1/device-templates', deviceTemplateData);
};
2025-09-30 23:17:32 +08:00
2025-10-19 21:38:04 +08:00
/**
* 根据设备模板ID获取单个设备模板的详细信息
* @param {string} id - 设备模板ID
2025-10-23 15:17:31 +08:00
* @returns {Promise<DeviceTemplateResponse>}
2025-10-19 21:38:04 +08:00
*/
2025-10-20 14:52:25 +08:00
const getDeviceTemplateById = (id) => {
2025-10-19 21:38:04 +08:00
return http.get(`/api/v1/device-templates/${id}`);
};
2025-09-30 23:17:32 +08:00
2025-10-19 21:38:04 +08:00
/**
* 根据设备模板ID更新一个已存在的设备模板信息
* @param {string} id - 设备模板ID
2025-10-23 15:17:31 +08:00
* @param {UpdateDeviceTemplateRequest} deviceTemplateData - 要更新的设备模板信息
* @returns {Promise<DeviceTemplateResponse>}
2025-10-19 21:38:04 +08:00
*/
2025-10-20 14:52:25 +08:00
const updateDeviceTemplate = (id, deviceTemplateData) => {
2025-10-19 21:38:04 +08:00
return http.put(`/api/v1/device-templates/${id}`, deviceTemplateData);
};
2025-09-30 23:17:32 +08:00
2025-10-19 21:38:04 +08:00
/**
* 根据设备模板ID删除一个设备模板软删除
* @param {string} id - 设备模板ID
* @returns {Promise<*>}
*/
2025-10-20 14:52:25 +08:00
const deleteDeviceTemplate = (id) => {
2025-10-19 21:38:04 +08:00
return http.delete(`/api/v1/device-templates/${id}`);
};
2025-10-20 14:52:25 +08:00
export const DeviceTemplateApi = {
getDeviceTemplates,
createDeviceTemplate,
getDeviceTemplateById,
updateDeviceTemplate,
deleteDeviceTemplate,
};