完善设备数列展示

This commit is contained in:
ChenYi 2025-09-18 13:45:54 +08:00
parent ed9ef19805
commit 572cad895a
2 changed files with 40 additions and 34 deletions

View File

@ -13,22 +13,22 @@ export const fieldNameMapping: FieldMapping = {
IoTDataType: 'IoT数据类型', IoTDataType: 'IoT数据类型',
DeviceType: '设备类型', DeviceType: '设备类型',
DeviceAddress: '设备ID', DeviceAddress: '设备ID',
Timestamps: '时间戳', // Timestamps: '时间戳', // 已隐藏使用TimestampStr替代
// 可以根据需要添加更多映射 // 可以根据需要添加更多映射
}; };
// 字段类型配置 // 字段类型配置
export const fieldTypeConfig: FieldTypeConfig = { export const fieldTypeConfig: FieldTypeConfig = {
Timestamps: { // Timestamps: { // 已隐藏使用TimestampStr替代
formatter: (value: string) => { // formatter: (value: string) => {
if (!value) return ''; // if (!value) return '';
try { // try {
return new Date(value).toLocaleString(); // return new Date(value).toLocaleString();
} catch { // } catch {
return value; // return value;
} // }
}, // },
}, // },
// 可以根据需要添加更多类型配置 // 可以根据需要添加更多类型配置
}; };
@ -40,6 +40,7 @@ const FIXED_FIELDS = [
'DeviceAddress', 'DeviceAddress',
'TimestampStr', 'TimestampStr',
'FormattedTimestamps', 'FormattedTimestamps',
'Timestamps', // 添加Timestamps到固定字段列表确保它被隐藏
'DeviceAddress', 'DeviceAddress',
]; ];

View File

@ -8,8 +8,10 @@ import { useRoute } from 'vue-router';
import { Page } from '@vben/common-ui'; import { Page } from '@vben/common-ui';
import { useVbenVxeGrid } from '#/adapter/vxe-table'; import { useVbenVxeGrid } from '#/adapter/vxe-table';
import { postDeviceInfoPage } from '#/api-client'; import {
import { postTreeModelDeviceDataInfoPage } from '#/api-client'; postDeviceInfoPage,
postTreeModelDeviceDataInfoPage,
} from '#/api-client';
import { $t } from '#/locales'; import { $t } from '#/locales';
import { generateDynamicColumns } from './dynamicColumns'; import { generateDynamicColumns } from './dynamicColumns';
@ -44,10 +46,16 @@ const fetchDeviceOptions = async () => {
// //
const getDeviceInfoByAddress = (deviceAddress: string) => { const getDeviceInfoByAddress = (deviceAddress: string) => {
if (!deviceAddress || !deviceOptions.value || deviceOptions.value.length === 0) { if (
!deviceAddress ||
!deviceOptions.value ||
deviceOptions.value.length === 0
) {
return null; return null;
} }
return deviceOptions.value.find((device) => device.deviceAddress === deviceAddress); return deviceOptions.value.find(
(device) => device.deviceAddress === deviceAddress,
);
}; };
// yyyy-MM-dd HH:mm:ss // yyyy-MM-dd HH:mm:ss
@ -77,7 +85,7 @@ const dynamicColumns = ref<any[]>([]);
const fixedColumns = [ const fixedColumns = [
{ title: '序号', type: 'seq', width: 50, field: 'seq', slots: {} }, { title: '序号', type: 'seq', width: 50, field: 'seq', slots: {} },
{ {
field: 'Timestamps', field: 'TimestampStr',
title: $t('abp.IoTDBBase.Timestamps'), title: $t('abp.IoTDBBase.Timestamps'),
minWidth: 150, minWidth: 150,
showOverflow: true, showOverflow: true,
@ -273,20 +281,20 @@ const gridOptions: VxeGridProps<any> = {
formValues || formValues ||
(gridApi?.formApi ? await gridApi.formApi.getValues() : {}) || (gridApi?.formApi ? await gridApi.formApi.getValues() : {}) ||
{}; {};
// DeviceAddress使 // DeviceAddress使
if (!currentFormValues.DeviceAddress && DeviceAddress) { if (!currentFormValues.DeviceAddress && DeviceAddress) {
currentFormValues.DeviceAddress = DeviceAddress as string; currentFormValues.DeviceAddress = DeviceAddress as string;
} }
// IoTDataType使 // IoTDataType使
if (!currentFormValues.IoTDataType && IoTDataType) { if (!currentFormValues.IoTDataType && IoTDataType) {
currentFormValues.IoTDataType = IoTDataType as string; currentFormValues.IoTDataType = IoTDataType as string;
} }
// IoTDataType // IoTDataType
const ioTDataTypeValue = currentFormValues.IoTDataType; const ioTDataTypeValue = currentFormValues.IoTDataType;
// //
console.log('表单值:', currentFormValues); console.log('表单值:', currentFormValues);
console.log('路由参数:', { IoTDataType, DeviceAddress }); console.log('路由参数:', { IoTDataType, DeviceAddress });
@ -328,7 +336,7 @@ const gridOptions: VxeGridProps<any> = {
EndCreationTime: endCreationTime, EndCreationTime: endCreationTime,
}); });
console.log('调用来源:', new Error().stack); console.log('调用来源:', new Error().stack);
const { data } = await postTreeModelDeviceDataInfoPage({ const { data } = await postTreeModelDeviceDataInfoPage({
body: { body: {
pageIndex: page.currentPage, pageIndex: page.currentPage,
@ -451,21 +459,21 @@ const initializeGrid = async () => {
// //
const currentValues = await gridApi.formApi.getValues(); const currentValues = await gridApi.formApi.getValues();
const updatedValues = { ...currentValues }; const updatedValues = { ...currentValues };
if (!currentValues.DeviceAddress && DeviceAddress) { if (!currentValues.DeviceAddress && DeviceAddress) {
updatedValues.DeviceAddress = DeviceAddress as string; updatedValues.DeviceAddress = DeviceAddress as string;
} }
if (!currentValues.IoTDataType && IoTDataType) { if (!currentValues.IoTDataType && IoTDataType) {
updatedValues.IoTDataType = IoTDataType as string; updatedValues.IoTDataType = IoTDataType as string;
} }
if (updatedValues !== currentValues) { if (updatedValues !== currentValues) {
await gridApi.formApi.setValues(updatedValues); await gridApi.formApi.setValues(updatedValues);
// //
await nextTick(); await nextTick();
} }
// //
setTimeout(() => { setTimeout(() => {
isInitializing.value = false; isInitializing.value = false;
@ -486,19 +494,18 @@ const initializeGrid = async () => {
// //
watch( watch(
() => [IoTDataType, DeviceAddress], () => [IoTDataType, DeviceAddress],
async (newValues, oldValues) => { async (newValues, oldValues) => {
// //
if (isInitializing.value || !isGridInitialized.value) { if (isInitializing.value || !isGridInitialized.value) {
return; return;
} }
// //
const hasChanged = oldValues && ( const hasChanged =
newValues[0] !== oldValues[0] || oldValues &&
newValues[1] !== oldValues[1] (newValues[0] !== oldValues[0] || newValues[1] !== oldValues[1]);
);
if (hasChanged && newValues.some(Boolean) && gridApi) { if (hasChanged && newValues.some(Boolean) && gridApi) {
// //
setTimeout(() => { setTimeout(() => {
@ -509,8 +516,6 @@ watch(
{ immediate: false }, // false { immediate: false }, // false
); );
// //
onMounted(async () => { onMounted(async () => {
// VXE // VXE