104 lines
2.8 KiB
JavaScript
104 lines
2.8 KiB
JavaScript
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<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]
|
||
*/
|
||
|
||
|
||
/**
|
||
* 获取系统中所有设备模板的列表
|
||
* @returns {Promise<Array<DeviceTemplateResponse>>}
|
||
*/
|
||
const getDeviceTemplates = () => {
|
||
return http.get('/api/v1/device-templates');
|
||
};
|
||
|
||
/**
|
||
* 根据提供的信息创建一个新设备模板
|
||
* @param {CreateDeviceTemplateRequest} deviceTemplateData - 设备模板信息
|
||
* @returns {Promise<DeviceTemplateResponse>}
|
||
*/
|
||
const createDeviceTemplate = (deviceTemplateData) => {
|
||
return http.post('/api/v1/device-templates', deviceTemplateData);
|
||
};
|
||
|
||
/**
|
||
* 根据设备模板ID获取单个设备模板的详细信息
|
||
* @param {string} id - 设备模板ID
|
||
* @returns {Promise<DeviceTemplateResponse>}
|
||
*/
|
||
const getDeviceTemplateById = (id) => {
|
||
return http.get(`/api/v1/device-templates/${id}`);
|
||
};
|
||
|
||
/**
|
||
* 根据设备模板ID更新一个已存在的设备模板信息
|
||
* @param {string} id - 设备模板ID
|
||
* @param {UpdateDeviceTemplateRequest} deviceTemplateData - 要更新的设备模板信息
|
||
* @returns {Promise<DeviceTemplateResponse>}
|
||
*/
|
||
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,
|
||
};
|