import http from '../utils/http'; /** * @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} 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} [values] */ /** * @typedef {object} UpdateDeviceTemplateRequest * @property {string} name * @property {string} [description] * @property {string} [manufacturer] * @property {DeviceCategory} category * @property {object} commands * @property {Array} [values] */ /** * 获取系统中所有设备模板的列表 * @returns {Promise>} */ const getDeviceTemplates = () => { return http.get('/api/v1/device-templates'); }; /** * 根据提供的信息创建一个新设备模板 * @param {CreateDeviceTemplateRequest} deviceTemplateData - 设备模板信息 * @returns {Promise} */ const createDeviceTemplate = (deviceTemplateData) => { return http.post('/api/v1/device-templates', deviceTemplateData); }; /** * 根据设备模板ID获取单个设备模板的详细信息 * @param {string} id - 设备模板ID * @returns {Promise} */ const getDeviceTemplateById = (id) => { return http.get(`/api/v1/device-templates/${id}`); }; /** * 根据设备模板ID更新一个已存在的设备模板信息 * @param {string} id - 设备模板ID * @param {UpdateDeviceTemplateRequest} deviceTemplateData - 要更新的设备模板信息 * @returns {Promise} */ const updateDeviceTemplate = (id, deviceTemplateData) => { return http.put(`/api/v1/device-templates/${id}`, deviceTemplateData); }; /** * 根据设备模板ID删除一个设备模板(软删除) * @param {string} id - 设备模板ID * @returns {Promise<*>} */ const deleteDeviceTemplate = (id) => { return http.delete(`/api/v1/device-templates/${id}`); }; export const DeviceTemplateApi = { getDeviceTemplates, createDeviceTemplate, getDeviceTemplateById, updateDeviceTemplate, deleteDeviceTemplate, };