From dea99acd78da19216063677bbb2f8b3c8b50d643 Mon Sep 17 00:00:00 2001 From: Administrator <425053404@qq.com> Date: Sun, 12 Oct 2025 18:57:29 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8Diot=E5=A4=A7=E9=87=8F?= =?UTF-8?q?=E9=A1=B5=E9=9D=A2=E9=97=AE=E9=A2=98=20=E4=BA=A7=E5=93=81=20?= =?UTF-8?q?=E8=AE=BE=E5=A4=87=20=E6=96=B0=E5=A2=9E=E7=BC=96=E8=BE=91?= =?UTF-8?q?=E7=AD=89=E5=8A=9F=E8=83=BD=E4=BF=AE=E5=A4=8D=EF=BC=8C=E7=89=A9?= =?UTF-8?q?=E6=A8=A1=E5=9E=8B=E5=88=97=E8=A1=A8=E5=92=8C=E7=9B=B8=E5=85=B3?= =?UTF-8?q?=E5=8A=9F=E8=83=BD=E4=BF=AE=E5=A4=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/views/iot/alert/config/data.ts | 5 +- .../src/views/iot/alert/config/index.vue | 21 +- .../src/views/iot/alert/record/data.ts | 5 +- .../src/views/iot/alert/record/index.vue | 11 +- .../src/views/iot/device/device/data.ts | 4 +- .../src/views/iot/device/device/index.vue | 6 +- .../device/device/modules/DeviceCardView.vue | 4 +- .../device/modules/DeviceImportForm.vue | 8 +- .../modules/components/DeviceTableSelect.vue | 3 +- .../modules/detail/DeviceDetailConfig.vue | 7 +- .../modules/detail/DeviceDetailsHeader.vue | 4 +- .../modules/detail/DeviceDetailsInfo.vue | 10 +- .../modules/detail/DeviceDetailsMessage.vue | 2 +- .../modules/detail/DeviceDetailsSimulator.vue | 27 ++- .../detail/DeviceDetailsThingModel.vue | 6 +- .../detail/DeviceDetailsThingModelEvent.vue | 12 +- .../DeviceDetailsThingModelProperty.vue | 12 +- .../detail/DeviceDetailsThingModelService.vue | 12 +- .../device/device/modules/detail/index.vue | 8 +- .../src/views/iot/device/group/data.ts | 3 +- .../iot/ota/modules/task/OtaTaskForm.vue | 6 +- .../src/views/iot/product/category/data.ts | 2 +- .../src/views/iot/product/product/data.ts | 129 +++++++--- .../product/modules/ProductCardView.vue | 4 +- .../product/product/modules/ProductForm.vue | 12 +- .../modules/detail/ProductDetailsInfo.vue | 2 +- apps/web-antd/src/views/iot/rule/data/data.ts | 5 +- .../src/views/iot/rule/data/rule/data.ts | 5 +- .../views/iot/rule/data/sink/DataSinkForm.vue | 8 +- .../rule/data/sink/config/HttpConfigForm.vue | 20 +- .../data/sink/config/KafkaMQConfigForm.vue | 3 +- .../rule/data/sink/config/MqttConfigForm.vue | 3 +- .../data/sink/config/RabbitMQConfigForm.vue | 3 +- .../sink/config/RedisStreamConfigForm.vue | 3 +- .../data/sink/config/RocketMQConfigForm.vue | 3 +- .../sink/config/components/KeyValueEditor.vue | 5 +- .../src/views/iot/rule/data/sink/data.ts | 5 +- .../web-antd/src/views/iot/rule/scene/data.ts | 5 +- .../iot/rule/scene/form/RuleSceneForm.vue | 37 +-- .../rule/scene/form/configs/AlertConfig.vue | 5 +- .../scene/form/configs/ConditionConfig.vue | 47 ++-- .../configs/CurrentTimeConditionConfig.vue | 37 +-- .../form/configs/DeviceControlConfig.vue | 45 ++-- .../form/configs/DeviceTriggerConfig.vue | 25 +- .../form/configs/MainConditionInnerConfig.vue | 25 +- .../form/configs/SubConditionGroupConfig.vue | 6 +- .../scene/form/inputs/JsonParamsInput.vue | 33 +-- .../iot/rule/scene/form/inputs/ValueInput.vue | 3 +- .../scene/form/sections/ActionSection.vue | 42 ++-- .../scene/form/sections/BasicInfoSection.vue | 4 +- .../scene/form/sections/TriggerSection.vue | 44 ++-- .../scene/form/selectors/DeviceSelector.vue | 5 +- .../scene/form/selectors/OperatorSelector.vue | 1 + .../scene/form/selectors/ProductSelector.vue | 3 +- .../scene/form/selectors/PropertySelector.vue | 31 ++- .../web-antd/src/views/iot/thingmodel/data.ts | 3 +- .../src/views/iot/thingmodel/index.vue | 118 +++++++--- .../thingmodel/modules/ThingModelEvent.vue | 36 +-- .../iot/thingmodel/modules/ThingModelForm.vue | 222 ++++++++++++++---- .../modules/ThingModelInputOutputParam.vue | 83 ++++--- .../thingmodel/modules/ThingModelProperty.vue | 88 ++++--- .../thingmodel/modules/ThingModelService.vue | 42 ++-- .../iot/thingmodel/modules/ThingModelTSL.vue | 105 +++++++-- .../modules/components/DataDefinition.vue | 22 +- .../dataSpecs/ThingModelArrayDataSpecs.vue | 19 +- .../dataSpecs/ThingModelEnumDataSpecs.vue | 128 ++-------- .../dataSpecs/ThingModelNumberDataSpecs.vue | 128 ++-------- .../dataSpecs/ThingModelStructDataSpecs.vue | 71 +++--- .../web-antd/src/views/iot/utils/constants.ts | 6 +- 69 files changed, 996 insertions(+), 861 deletions(-) diff --git a/apps/web-antd/src/views/iot/alert/config/data.ts b/apps/web-antd/src/views/iot/alert/config/data.ts index 09ca905c7..935385b0e 100644 --- a/apps/web-antd/src/views/iot/alert/config/data.ts +++ b/apps/web-antd/src/views/iot/alert/config/data.ts @@ -1,12 +1,9 @@ import type { VbenFormSchema } from '#/adapter/form'; import type { VxeTableGridOptions } from '#/adapter/vxe-table'; -import { DICT_TYPE } from '@vben/constants'; -import { getDictOptions } from '@vben/hooks'; - import { getSimpleRuleSceneList } from '#/api/iot/rule/scene'; import { getSimpleUserList } from '#/api/system/user'; -import { getRangePickerDefaultProps } from '#/utils'; +import { DICT_TYPE, getDictOptions, getRangePickerDefaultProps } from '#/utils'; /** 新增/修改告警配置的表单 */ export function useFormSchema(): VbenFormSchema[] { diff --git a/apps/web-antd/src/views/iot/alert/config/index.vue b/apps/web-antd/src/views/iot/alert/config/index.vue index bae250661..5309a6ebb 100644 --- a/apps/web-antd/src/views/iot/alert/config/index.vue +++ b/apps/web-antd/src/views/iot/alert/config/index.vue @@ -9,6 +9,7 @@ import { message } from 'ant-design-vue'; import { ACTION_ICON, TableAction, useVbenVxeGrid } from '#/adapter/vxe-table'; import { deleteAlertConfig, getAlertConfigPage } from '#/api/iot/alert/config'; import { $t } from '#/locales'; +import { DICT_TYPE, getDictLabel } from '#/utils'; import { useGridColumns, useGridFormSchema } from './data'; import AlertConfigForm from '../modules/AlertConfigForm.vue'; @@ -27,14 +28,8 @@ function onRefresh() { // 获取告警级别文本 const getLevelText = (level?: number) => { - const levelMap: Record = { - 1: '提示', - 2: '一般', - 3: '警告', - 4: '严重', - 5: '紧急', - }; - return level ? levelMap[level] || `级别${level}` : '-'; + if (!level) return '-'; + return getDictLabel(DICT_TYPE.IOT_ALERT_LEVEL, level); }; // 获取告警级别颜色 @@ -51,14 +46,8 @@ const getLevelColor = (level?: number) => { // 获取接收类型文本 const getReceiveTypeText = (type?: number) => { - const typeMap: Record = { - 1: '站内信', - 2: '邮箱', - 3: '短信', - 4: '微信', - 5: '钉钉', - }; - return type ? typeMap[type] || `类型${type}` : '-'; + if (!type) return '-'; + return getDictLabel(DICT_TYPE.IOT_ALERT_RECEIVE_TYPE, type); }; /** 创建告警配置 */ diff --git a/apps/web-antd/src/views/iot/alert/record/data.ts b/apps/web-antd/src/views/iot/alert/record/data.ts index 10ebb12f3..e81222b40 100644 --- a/apps/web-antd/src/views/iot/alert/record/data.ts +++ b/apps/web-antd/src/views/iot/alert/record/data.ts @@ -1,13 +1,10 @@ import type { VbenFormSchema } from '#/adapter/form'; import type { VxeTableGridOptions } from '#/adapter/vxe-table'; -import { DICT_TYPE } from '@vben/constants'; -import { getDictOptions } from '@vben/hooks'; - import { getSimpleAlertConfigList } from '#/api/iot/alert/config'; import { getSimpleDeviceList } from '#/api/iot/device/device'; import { getSimpleProductList } from '#/api/iot/product/product'; -import { getRangePickerDefaultProps } from '#/utils'; +import { DICT_TYPE, getDictOptions, getRangePickerDefaultProps } from '#/utils'; /** 列表的搜索表单 */ export function useGridFormSchema(): VbenFormSchema[] { diff --git a/apps/web-antd/src/views/iot/alert/record/index.vue b/apps/web-antd/src/views/iot/alert/record/index.vue index 0cdb9b513..cd3efb8ed 100644 --- a/apps/web-antd/src/views/iot/alert/record/index.vue +++ b/apps/web-antd/src/views/iot/alert/record/index.vue @@ -12,6 +12,7 @@ import type { AlertRecord } from '#/api/iot/alert/record'; import { getAlertRecordPage, processAlertRecord } from '#/api/iot/alert/record'; import { getSimpleDeviceList } from '#/api/iot/device/device'; import { getSimpleProductList } from '#/api/iot/product/product'; +import { DICT_TYPE, getDictLabel } from '#/utils'; import { useGridColumns, useGridFormSchema } from './data'; @@ -33,14 +34,8 @@ const loadData = async () => { // 获取告警级别文本 const getLevelText = (level?: number) => { - const levelMap: Record = { - 1: '提示', - 2: '一般', - 3: '警告', - 4: '严重', - 5: '紧急', - }; - return level ? levelMap[level] || `级别${level}` : '-'; + if (!level) return '-'; + return getDictLabel(DICT_TYPE.IOT_ALERT_LEVEL, level); }; // 获取告警级别颜色 diff --git a/apps/web-antd/src/views/iot/device/device/data.ts b/apps/web-antd/src/views/iot/device/device/data.ts index 903c1d9f0..f8becb77a 100644 --- a/apps/web-antd/src/views/iot/device/device/data.ts +++ b/apps/web-antd/src/views/iot/device/device/data.ts @@ -1,10 +1,8 @@ import type { VbenFormSchema } from '#/adapter/form'; import type { VxeTableGridOptions } from '#/adapter/vxe-table'; -import { DICT_TYPE } from '@vben/constants'; -import { getDictOptions } from '@vben/hooks'; - import { z } from '#/adapter/form'; +import { DICT_TYPE, getDictOptions } from '#/utils'; import { getSimpleDeviceGroupList } from '#/api/iot/device/group'; import { DeviceTypeEnum, getSimpleProductList } from '#/api/iot/product/product'; diff --git a/apps/web-antd/src/views/iot/device/device/index.vue b/apps/web-antd/src/views/iot/device/device/index.vue index 5d694f3cb..788a5122f 100644 --- a/apps/web-antd/src/views/iot/device/device/index.vue +++ b/apps/web-antd/src/views/iot/device/device/index.vue @@ -6,11 +6,11 @@ import { useRoute, useRouter } from 'vue-router'; import { Button, Card, Input, message, Select, Space, Tag } from 'ant-design-vue'; import { Page, useVbenModal } from '@vben/common-ui'; -import { DICT_TYPE } from '@vben/constants'; -import { getDictOptions } from '@vben/hooks'; import { downloadFileFromBlobPart } from '@vben/utils'; import { IconifyIcon } from '@vben/icons'; +import { DICT_TYPE, getDictOptions } from '#/utils'; + import { ACTION_ICON, TableAction, useVbenVxeGrid } from '#/adapter/vxe-table'; import { deleteDevice, @@ -295,7 +295,7 @@ onMounted(async () => { style="width: 200px" > diff --git a/apps/web-antd/src/views/iot/device/device/modules/DeviceCardView.vue b/apps/web-antd/src/views/iot/device/device/modules/DeviceCardView.vue index 924d6d7db..64257dd3c 100644 --- a/apps/web-antd/src/views/iot/device/device/modules/DeviceCardView.vue +++ b/apps/web-antd/src/views/iot/device/device/modules/DeviceCardView.vue @@ -11,10 +11,10 @@ import { Row, Tag, } from 'ant-design-vue'; -import { DICT_TYPE } from '@vben/constants'; -import { getDictLabel } from '@vben/hooks'; import { IconifyIcon } from '@vben/icons'; +import { DICT_TYPE, getDictLabel } from '#/utils'; + import { DeviceStateEnum, getDevicePage } from '#/api/iot/device/device'; defineOptions({ name: 'DeviceCardView' }); diff --git a/apps/web-antd/src/views/iot/device/device/modules/DeviceImportForm.vue b/apps/web-antd/src/views/iot/device/device/modules/DeviceImportForm.vue index 9d12d3228..e6fa542c9 100644 --- a/apps/web-antd/src/views/iot/device/device/modules/DeviceImportForm.vue +++ b/apps/web-antd/src/views/iot/device/device/modules/DeviceImportForm.vue @@ -3,12 +3,16 @@ import { computed } from 'vue'; import { message } from 'ant-design-vue'; import { useVbenForm, useVbenModal } from '@vben/common-ui'; +import { useAppConfig } from '@vben/hooks'; +import { downloadFileFromBlobPart } from '@vben/utils'; import { importDeviceTemplate } from '#/api/iot/device/device'; -import { downloadFileFromBlobPart } from '@vben/utils'; import { useImportFormSchema } from '../data'; +// @ts-ignore - Vite environment variables +const { apiURL } = useAppConfig(import.meta.env, import.meta.env.PROD); + defineOptions({ name: 'IoTDeviceImportForm' }); const emit = defineEmits(['success']); @@ -50,7 +54,7 @@ const [Modal, modalApi] = useVbenModal({ // 使用 fetch 上传文件 const accessToken = localStorage.getItem('accessToken') || ''; const response = await fetch( - `${import.meta.env.VITE_GLOB_API_URL}/iot/device/import?updateSupport=${values.updateSupport}`, + `${apiURL}/iot/device/import?updateSupport=${values.updateSupport}`, { method: 'POST', headers: { diff --git a/apps/web-antd/src/views/iot/device/device/modules/components/DeviceTableSelect.vue b/apps/web-antd/src/views/iot/device/device/modules/components/DeviceTableSelect.vue index 9e73072c2..c6c8c4bc1 100644 --- a/apps/web-antd/src/views/iot/device/device/modules/components/DeviceTableSelect.vue +++ b/apps/web-antd/src/views/iot/device/device/modules/components/DeviceTableSelect.vue @@ -168,8 +168,7 @@ diff --git a/apps/web-antd/src/views/iot/rule/scene/form/configs/CurrentTimeConditionConfig.vue b/apps/web-antd/src/views/iot/rule/scene/form/configs/CurrentTimeConditionConfig.vue index 92b64223a..472ee9cb1 100644 --- a/apps/web-antd/src/views/iot/rule/scene/form/configs/CurrentTimeConditionConfig.vue +++ b/apps/web-antd/src/views/iot/rule/scene/form/configs/CurrentTimeConditionConfig.vue @@ -7,7 +7,7 @@ @@ -86,6 +86,7 @@ - diff --git a/apps/web-antd/src/views/iot/thingmodel/modules/ThingModelEvent.vue b/apps/web-antd/src/views/iot/thingmodel/modules/ThingModelEvent.vue index d7ed21543..ec2a42861 100644 --- a/apps/web-antd/src/views/iot/thingmodel/modules/ThingModelEvent.vue +++ b/apps/web-antd/src/views/iot/thingmodel/modules/ThingModelEvent.vue @@ -1,32 +1,29 @@ diff --git a/apps/web-antd/src/views/iot/thingmodel/modules/components/DataDefinition.vue b/apps/web-antd/src/views/iot/thingmodel/modules/components/DataDefinition.vue index 516cdb9fb..85aeb8cce 100644 --- a/apps/web-antd/src/views/iot/thingmodel/modules/components/DataDefinition.vue +++ b/apps/web-antd/src/views/iot/thingmodel/modules/components/DataDefinition.vue @@ -1,6 +1,6 @@