diff --git a/.vscode/settings.json b/.vscode/settings.json index f145f386..cc1dae50 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -87,7 +87,7 @@ "source.fixAll.stylelint": "explicit" }, "[vue]": { - "editor.defaultFormatter": "esbenp.prettier-vscode" + "editor.defaultFormatter": "octref.vetur" }, "i18n-ally.localesPaths": ["src/locales"], "i18n-ally.keystyle": "nested", diff --git a/src/api/iot/device/device/index.ts b/src/api/iot/device/device/index.ts index ec80bfab..b489a04f 100644 --- a/src/api/iot/device/device/index.ts +++ b/src/api/iot/device/device/index.ts @@ -63,6 +63,16 @@ export enum DeviceStatusEnum { DISABLED = 3 // 已禁用 } +// IoT 模拟设备数据 +export interface SimulatorDataVO { + productKey: string + deviceKey: string + type: string + subType: string + reportTime: number // 时间戳 + content: string // 存储 JSON 字符串 +} + // 设备 API export const DeviceApi = { // 查询设备分页 @@ -136,5 +146,14 @@ export const DeviceApi = { // 获取导入模板 importDeviceTemplate: async () => { return await request.download({ url: `/iot/device/get-import-template` }) + }, + + // 模拟设备 + simulatorDevice: async (data: SimulatorDataVO) => { + return await request.post({ url: `/iot/device/data/simulator`, data }) + }, + //查询设备日志分页 + getDeviceLogPage: async (params: any) => { + return await request.get({ url: `/iot/device/data/log/page`, params }) } } diff --git a/src/api/iot/thingmodel/index.ts b/src/api/iot/thingmodel/index.ts index a5ac9527..0c3ccdb4 100644 --- a/src/api/iot/thingmodel/index.ts +++ b/src/api/iot/thingmodel/index.ts @@ -17,6 +17,13 @@ export interface ThingModelData { service?: ThingModelService // 服务 } +/** + * IoT 模拟设备 + */ +export interface SimulatorData extends ThingModelData { + simulateValue?: string | number // 用于存储模拟值 +} + /** * ThingModelProperty 类型 */ @@ -45,6 +52,11 @@ export const ThingModelApi = { return await request.get({ url: `/iot/thing-model/page`, params }) }, + // 获得产品物模型列表 + getThingModelList: async (params: any) => { + return await request.get({ url: `/iot/thing-model/list`, params }) + }, + // 获得产品物模型 getThingModelListByProductId: async (params: any) => { return await request.get({ diff --git a/src/views/iot/device/device/detail/DeviceDetailsLog.vue b/src/views/iot/device/device/detail/DeviceDetailsLog.vue new file mode 100644 index 00000000..e703ca4f --- /dev/null +++ b/src/views/iot/device/device/detail/DeviceDetailsLog.vue @@ -0,0 +1,164 @@ + + + diff --git a/src/views/iot/device/device/detail/DeviceDetailsSimulator.vue b/src/views/iot/device/device/detail/DeviceDetailsSimulator.vue new file mode 100644 index 00000000..7718f1a5 --- /dev/null +++ b/src/views/iot/device/device/detail/DeviceDetailsSimulator.vue @@ -0,0 +1,387 @@ + + + diff --git a/src/views/iot/device/device/detail/index.vue b/src/views/iot/device/device/detail/index.vue index f67d6312..8e342590 100644 --- a/src/views/iot/device/device/detail/index.vue +++ b/src/views/iot/device/device/detail/index.vue @@ -16,6 +16,12 @@ + + + + + + @@ -26,7 +32,8 @@ import { DeviceTypeEnum, ProductApi, ProductVO } from '@/api/iot/product/product import DeviceDetailsHeader from './DeviceDetailsHeader.vue' import DeviceDetailsInfo from './DeviceDetailsInfo.vue' import DeviceDetailsModel from './DeviceDetailsModel.vue' - +import DeviceDetailsLog from './DeviceDetailsLog.vue' +import DeviceDetailsSimulator from './DeviceDetailsSimulator.vue' defineOptions({ name: 'IoTDeviceDetail' }) const route = useRoute()