From 6c1fdb7adb9e61b58b2ab0ecd20f017cfc52ba1f Mon Sep 17 00:00:00 2001 From: ChenYi <296215406@outlook.com> Date: Thu, 31 Jul 2025 17:34:07 +0800 Subject: [PATCH] =?UTF-8?q?=E8=AE=BE=E5=A4=87=E6=95=B0=E6=8D=AE=E6=9F=A5?= =?UTF-8?q?=E8=AF=A2=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../devicemanagement/deviceinfo/schema.ts | 2 + .../iotdbdatamanagement/ctwingLog/schema.ts | 2 + .../iotdbdatamanagement/deviceData/index.vue | 75 ++++++------------- .../iotdbdatamanagement/deviceData/schema.ts | 46 ++---------- .../iotdbdatamanagement/onenetLog/schema.ts | 2 + 5 files changed, 36 insertions(+), 91 deletions(-) diff --git a/apps/web-antd/src/views/devicemanagement/deviceinfo/schema.ts b/apps/web-antd/src/views/devicemanagement/deviceinfo/schema.ts index 18ff9c1..084cd82 100644 --- a/apps/web-antd/src/views/devicemanagement/deviceinfo/schema.ts +++ b/apps/web-antd/src/views/devicemanagement/deviceinfo/schema.ts @@ -104,6 +104,8 @@ export const addDeviceFormSchema: any = computed(() => [ valueField: 'key', optionsPropName: 'options', immediate: true, + allowClear: true, + placeholder: $t('common.pleaseSelect') + $t('abp.deviceInfos.ioTPlatform'), afterFetch: (res: any) => { // 确保返回的是数组格式 if (Array.isArray(res)) { diff --git a/apps/web-antd/src/views/iotdbdatamanagement/ctwingLog/schema.ts b/apps/web-antd/src/views/iotdbdatamanagement/ctwingLog/schema.ts index 59d8502..92ddc33 100644 --- a/apps/web-antd/src/views/iotdbdatamanagement/ctwingLog/schema.ts +++ b/apps/web-antd/src/views/iotdbdatamanagement/ctwingLog/schema.ts @@ -23,6 +23,8 @@ export const querySchema = computed(() => [ valueField: 'key', optionsPropName: 'options', immediate: true, + allowClear: true, + placeholder: $t('common.pleaseSelect') + $t('abp.IoTDBBase.IoTDataType'), afterFetch: (res: any) => { // 确保返回的是数组格式 if (Array.isArray(res)) { diff --git a/apps/web-antd/src/views/iotdbdatamanagement/deviceData/index.vue b/apps/web-antd/src/views/iotdbdatamanagement/deviceData/index.vue index e0e8e55..5c97079 100644 --- a/apps/web-antd/src/views/iotdbdatamanagement/deviceData/index.vue +++ b/apps/web-antd/src/views/iotdbdatamanagement/deviceData/index.vue @@ -42,12 +42,12 @@ const fetchDeviceOptions = async () => { } }; -// 根据设备ID获取设备信息对象 -const getDeviceInfoById = (deviceId: string) => { - if (!deviceId || !deviceOptions.value || deviceOptions.value.length === 0) { +// 根据设备地址获取设备信息对象 +const getDeviceInfoByAddress = (deviceAddress: string) => { + if (!deviceAddress || !deviceOptions.value || deviceOptions.value.length === 0) { return null; } - return deviceOptions.value.find((device) => device.id === deviceId); + return deviceOptions.value.find((device) => device.deviceAddress === deviceAddress); }; // 格式化日期为 yyyy-MM-dd HH:mm:ss 格式 @@ -68,7 +68,7 @@ const formatDate = (date: Date | string) => { }; const route = useRoute(); -const { DeviceType, DeviceId, FocusAddress, DataBaseName } = route.query; +const { DeviceType, DeviceId } = route.query; // 动态列定义 const dynamicColumns = ref([]); @@ -90,13 +90,6 @@ const fixedColumns = [ showOverflow: true, slots: {}, }, - { - field: 'DataBaseName', - title: $t('abp.IoTDBBase.DataBaseName'), - minWidth: 150, - showOverflow: true, - slots: {}, - }, { field: 'DeviceType', title: $t('abp.IoTDBBase.DeviceType'), @@ -160,10 +153,8 @@ initDefaultColumns(); const formOptions: VbenFormProps = { schema: querySchema.value, initialValues: { - FocusAddress: FocusAddress as string, DeviceType: DeviceType ? Number(DeviceType) : undefined, - DeviceId: DeviceId as string, - DataBaseName: DataBaseName as string, + DeviceAddress: DeviceId as string, // 使用DeviceId作为DeviceAddress的初始值 }, // 禁用表单值变化时自动提交,使用自定义处理函数 submitOnChange: false, @@ -171,27 +162,25 @@ const formOptions: VbenFormProps = { handleValuesChange: async (values, changedFields) => { // 当任何相关字段发生变化时,刷新表格数据 const relevantFields = new Set([ - 'DeviceId', + 'DeviceAddress', 'DeviceType', 'EndCreationTime', - 'FocusAddress', 'IoTDataType', 'StartCreationTime', - 'DataBaseName', ]); const hasRelevantChange = changedFields.some((field) => relevantFields.has(field), ); - // 新增:DeviceId变化时同步selectedDeviceInfo - if (changedFields.includes('DeviceId')) { - const deviceId = values.DeviceId; + // 新增:DeviceAddress变化时同步selectedDeviceInfo + if (changedFields.includes('DeviceAddress')) { + const deviceAddress = values.DeviceAddress; - if (deviceId) { + if (deviceAddress) { // 先尝试从 deviceOptions 中查找(备用方案) let device = deviceOptions.value.length > 0 - ? deviceOptions.value.find((d) => d.id === deviceId) + ? deviceOptions.value.find((d) => d.deviceAddress === deviceAddress) : null; // 如果没找到,尝试从 DeviceSelect 组件中获取 @@ -199,7 +188,7 @@ const formOptions: VbenFormProps = { try { // 获取 DeviceSelect 组件的实例 const deviceSelectRef = - gridApi.formApi.getFieldComponentRef('DeviceId'); + gridApi.formApi.getFieldComponentRef('DeviceAddress'); if (deviceSelectRef && deviceSelectRef.getSelectedDevice) { device = deviceSelectRef.getSelectedDevice(); } @@ -215,7 +204,7 @@ const formOptions: VbenFormProps = { setTimeout(() => { try { const deviceSelectRef = - gridApi.formApi.getFieldComponentRef('DeviceId'); + gridApi.formApi.getFieldComponentRef('DeviceAddress'); if (deviceSelectRef && deviceSelectRef.getSelectedDevice) { const delayedDevice = deviceSelectRef.getSelectedDevice(); if (delayedDevice) { @@ -278,7 +267,7 @@ const gridOptions: VxeGridProps = { (gridApi?.formApi ? await gridApi.formApi.getValues() : {}) || {}; // 处理DeviceType和IoTDataType,确保传递数字类型 - const deviceTypeValue = currentFormValues.DeviceType || DeviceType; + const deviceTypeValue = currentFormValues.DeviceType; const deviceTypeNumber = deviceTypeValue ? Number(deviceTypeValue) : undefined; @@ -293,43 +282,27 @@ const gridOptions: VxeGridProps = { ? formatDate(currentFormValues.EndCreationTime) : undefined; - // 处理DeviceId,当设备类型为集中器(10)时,使用focusId - let finalDeviceId = currentFormValues.DeviceId || DeviceId || ''; - let finalFocusAddress = currentFormValues.FocusAddress || ''; + // 获取选中的设备信息 + let deviceAddress = currentFormValues.DeviceAddress || ''; // 优先使用选中的设备信息 const deviceInfo = selectedDeviceInfo.value || - (currentFormValues.DeviceId && deviceOptions.value.length > 0 - ? getDeviceInfoById(currentFormValues.DeviceId) + (currentFormValues.DeviceAddress && deviceOptions.value.length > 0 + ? getDeviceInfoByAddress(currentFormValues.DeviceAddress) : null); if (deviceInfo) { - finalFocusAddress = deviceInfo.focusAddress || ''; - - if (deviceTypeNumber === 10) { - // 集中器类型使用focusId - if (deviceInfo.focusId) { - finalDeviceId = deviceInfo.focusId; - } - } else { - // 其他设备类型使用meterId - if (deviceInfo.meterId) { - finalDeviceId = deviceInfo.meterId; - } - } + deviceAddress = deviceInfo.deviceAddress || deviceAddress; } try { const { data } = await postTreeModelDeviceDataInfoPage({ body: { pageIndex: page.currentPage, pageSize: page.pageSize, - // 优先使用表单中的值,如果没有则使用路由参数 + // 使用设备地址作为DeviceAddress + DeviceAddress: deviceAddress, DeviceType: deviceTypeNumber || undefined, - DeviceId: finalDeviceId ? finalDeviceId.toString() : '', - FocusAddress: finalFocusAddress || FocusAddress || '', - // 添加其他表单参数 - DataBaseName: currentFormValues.DataBaseName || DataBaseName, IoTDataType: ioTDataTypeValue || undefined, // 添加日期范围参数 StartCreationTime: startCreationTime || undefined, @@ -436,7 +409,7 @@ const initializeGrid = async () => { } // 如果有路由参数,自动触发查询 - if (DeviceType || DeviceId || FocusAddress || DataBaseName) { + if (DeviceType || DeviceId) { // 延迟一下确保表格已完全初始化 setTimeout(() => { if (gridApi) { @@ -451,7 +424,7 @@ const initializeGrid = async () => { // 监听路由参数变化,当有路由参数时自动触发查询 watch( - () => [DeviceType, DeviceId, FocusAddress, DataBaseName], + () => [DeviceType, DeviceId], async (newValues, oldValues) => { // 如果有路由参数,等待设备信息加载完成后自动触发查询 if (newValues.some(Boolean) && gridApi && isGridInitialized.value) { diff --git a/apps/web-antd/src/views/iotdbdatamanagement/deviceData/schema.ts b/apps/web-antd/src/views/iotdbdatamanagement/deviceData/schema.ts index 84ac55d..4f33b44 100644 --- a/apps/web-antd/src/views/iotdbdatamanagement/deviceData/schema.ts +++ b/apps/web-antd/src/views/iotdbdatamanagement/deviceData/schema.ts @@ -6,39 +6,6 @@ import { getCommonGetSelectList } from '#/api-client'; import { $t } from '#/locales'; export const querySchema = computed(() => [ - { - component: 'ApiSelect', - fieldName: 'DataBaseName', - label: $t('abp.IoTDBBase.DataBaseName'), - componentProps: { - api: getCommonGetSelectList, - params: { - query: { - typeName: 'BusinessSystemEnum', - }, - }, - labelField: 'secondValue', - valueField: 'value', - optionsPropName: 'options', - immediate: true, - afterFetch: (res: any) => { - // 确保返回的是数组格式 - if (Array.isArray(res)) { - return res; - } - // 如果是包装在 items 中的,提取出来 - if (res && Array.isArray(res.items)) { - return res.items; - } - // 如果是包装在 data 中的,提取出来 - if (res && Array.isArray(res.data)) { - return res.data; - } - // 如果都不是,返回空数组 - return []; - }, - }, - }, { component: 'ApiSelect', fieldName: 'DeviceType', @@ -47,13 +14,15 @@ export const querySchema = computed(() => [ api: getCommonGetSelectList, params: { query: { - typeName: 'MeterTypeEnum', + typeName: 'DeviceTypeEnum', }, }, labelField: 'value', valueField: 'key', optionsPropName: 'options', immediate: true, + allowClear: true, + placeholder: $t('common.pleaseSelect') + $t('abp.IoTDBBase.DeviceType'), afterFetch: (res: any) => { // 确保返回的是数组格式 if (Array.isArray(res)) { @@ -87,6 +56,8 @@ export const querySchema = computed(() => [ valueField: 'key', optionsPropName: 'options', immediate: true, + allowClear: true, + placeholder: $t('common.pleaseSelect') + $t('abp.IoTDBBase.IoTDataType'), afterFetch: (res: any) => { // 确保返回的是数组格式 if (Array.isArray(res)) { @@ -107,7 +78,7 @@ export const querySchema = computed(() => [ }, { component: 'DeviceSelect', - fieldName: 'DeviceId', + fieldName: 'DeviceAddress', label: $t('abp.log.deviceInfo'), componentProps: { placeholder: $t('common.pleaseSelect') + $t('abp.log.deviceInfo'), @@ -146,11 +117,6 @@ export const tableSchema: any = computed((): VxeGridProps['columns'] => [ title: $t('abp.IoTDBBase.Timestamps'), minWidth: '150', }, - { - field: 'DataBaseName', - title: $t('abp.IoTDBBase.DataBaseName'), - minWidth: '150', - }, { field: 'DeviceType', title: $t('abp.IoTDBBase.DeviceType'), diff --git a/apps/web-antd/src/views/iotdbdatamanagement/onenetLog/schema.ts b/apps/web-antd/src/views/iotdbdatamanagement/onenetLog/schema.ts index 153a79e..9a32997 100644 --- a/apps/web-antd/src/views/iotdbdatamanagement/onenetLog/schema.ts +++ b/apps/web-antd/src/views/iotdbdatamanagement/onenetLog/schema.ts @@ -23,6 +23,8 @@ export const querySchema = computed(() => [ valueField: 'key', optionsPropName: 'options', immediate: true, + allowClear: true, + placeholder: $t('common.pleaseSelect') + $t('abp.IoTDBBase.IoTDataType'), afterFetch: (res: any) => { // 确保返回的是数组格式 if (Array.isArray(res)) {