优化平台日志
This commit is contained in:
parent
a7c4a19eb5
commit
67261b19c9
@ -218,8 +218,8 @@
|
|||||||
"IoTDataType": "数据类型",
|
"IoTDataType": "数据类型",
|
||||||
"DataBaseName": "所属数据库",
|
"DataBaseName": "所属数据库",
|
||||||
"DeviceType": "设备类型",
|
"DeviceType": "设备类型",
|
||||||
"Timestamps": "时标(纳秒)",
|
"Timestamps": "UTC时标(纳秒)",
|
||||||
"FormattedTimestamps": "时标",
|
"FormattedTimestamps": "本地时间",
|
||||||
"DevicePath": "设备路径",
|
"DevicePath": "设备路径",
|
||||||
"DeviceAddress": "设备地址"
|
"DeviceAddress": "设备地址"
|
||||||
},
|
},
|
||||||
|
|||||||
@ -186,6 +186,11 @@ async function onEdit(record: any) {
|
|||||||
// 根据平台类型设置表单值
|
// 根据平台类型设置表单值
|
||||||
const formValues = { ...record };
|
const formValues = { ...record };
|
||||||
|
|
||||||
|
// 确保ioTPlatform是字符串格式,因为ApiSelect组件的valueField是'key'
|
||||||
|
if (formValues.ioTPlatform !== undefined && formValues.ioTPlatform !== null) {
|
||||||
|
formValues.ioTPlatform = String(formValues.ioTPlatform);
|
||||||
|
}
|
||||||
|
|
||||||
if (record.ioTPlatform === 2 || record.ioTPlatform === '2') {
|
if (record.ioTPlatform === 2 || record.ioTPlatform === '2') {
|
||||||
// OneNET平台
|
// OneNET平台
|
||||||
formValues.oneNETAccountId = record.ioTPlatformAccountId;
|
formValues.oneNETAccountId = record.ioTPlatformAccountId;
|
||||||
|
|||||||
@ -136,11 +136,9 @@ const formOptions: VbenFormProps = {
|
|||||||
// 当任何相关字段发生变化时,刷新表格数据
|
// 当任何相关字段发生变化时,刷新表格数据
|
||||||
const relevantFields = new Set([
|
const relevantFields = new Set([
|
||||||
'DeviceId',
|
'DeviceId',
|
||||||
'DeviceType',
|
|
||||||
'EndCreationTime',
|
'EndCreationTime',
|
||||||
'IoTDataType',
|
'IoTDataType',
|
||||||
'StartCreationTime',
|
'StartCreationTime',
|
||||||
'DataBaseName',
|
|
||||||
]);
|
]);
|
||||||
const hasRelevantChange = changedFields.some((field) =>
|
const hasRelevantChange = changedFields.some((field) =>
|
||||||
relevantFields.has(field),
|
relevantFields.has(field),
|
||||||
@ -183,9 +181,7 @@ const gridOptions: VxeGridProps<any> = {
|
|||||||
const currentFormValues = gridApi?.formApi ? await gridApi.formApi.getValues() : {};
|
const currentFormValues = gridApi?.formApi ? await gridApi.formApi.getValues() : {};
|
||||||
|
|
||||||
// 获取选中的设备信息
|
// 获取选中的设备信息
|
||||||
let deviceId = currentFormValues.DeviceId || '';
|
let deviceAddress = currentFormValues.DeviceId || '';
|
||||||
let dataBaseName = '';
|
|
||||||
const deviceType = currentFormValues.DeviceType || '';
|
|
||||||
|
|
||||||
// 优先使用选中的设备信息
|
// 优先使用选中的设备信息
|
||||||
const deviceInfo =
|
const deviceInfo =
|
||||||
@ -195,28 +191,17 @@ const gridOptions: VxeGridProps<any> = {
|
|||||||
: null);
|
: null);
|
||||||
|
|
||||||
if (deviceInfo) {
|
if (deviceInfo) {
|
||||||
dataBaseName = deviceInfo.businessSystemName || '';
|
deviceAddress = deviceInfo.deviceAddress || deviceAddress;
|
||||||
// 根据设备类型获取正确的 id
|
|
||||||
if (Number(deviceType) === 10) {
|
|
||||||
// 集中器类型使用 focusId
|
|
||||||
deviceId = deviceInfo.focusId || deviceId;
|
|
||||||
} else {
|
|
||||||
// 其他设备类型使用 meterId
|
|
||||||
deviceId = deviceInfo.meterId || deviceId;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
// 构建查询参数
|
// 构建查询参数
|
||||||
const queryParams = {
|
const queryParams = {
|
||||||
pageIndex: page.currentPage,
|
pageIndex: page.currentPage,
|
||||||
pageSize: page.pageSize,
|
pageSize: page.pageSize,
|
||||||
SearchKeyword: currentFormValues.SearchKeyword || '',
|
SearchKeyword: currentFormValues.SearchKeyword || '',
|
||||||
DeviceType: deviceType,
|
|
||||||
IoTDataType: currentFormValues.IoTDataType || '',
|
IoTDataType: currentFormValues.IoTDataType || '',
|
||||||
DeviceId: deviceId,
|
DeviceId: deviceAddress, // 直接使用设备地址
|
||||||
DataBaseName: dataBaseName || currentFormValues.DataBaseName || '',
|
|
||||||
StartCreationTime: formatDate(currentFormValues.StartCreationTime),
|
StartCreationTime: formatDate(currentFormValues.StartCreationTime),
|
||||||
EndCreationTime: formatDate(currentFormValues.EndCreationTime),
|
EndCreationTime: formatDate(currentFormValues.EndCreationTime),
|
||||||
FocusAddress: currentFormValues.FocusAddress || '',
|
|
||||||
};
|
};
|
||||||
|
|
||||||
if (DeviceType) queryParams.DeviceType = DeviceType;
|
if (DeviceType) queryParams.DeviceType = DeviceType;
|
||||||
|
|||||||
@ -8,73 +8,6 @@ import { getCommonGetSelectList } from '#/api-client';
|
|||||||
import { $t } from '#/locales';
|
import { $t } from '#/locales';
|
||||||
|
|
||||||
export const querySchema = computed(() => [
|
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',
|
|
||||||
label: $t('abp.IoTDBBase.DeviceType'),
|
|
||||||
componentProps: {
|
|
||||||
api: getCommonGetSelectList,
|
|
||||||
params: {
|
|
||||||
query: {
|
|
||||||
typeName: 'MeterTypeEnum'
|
|
||||||
},
|
|
||||||
},
|
|
||||||
labelField: 'value',
|
|
||||||
valueField: 'key',
|
|
||||||
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',
|
component: 'ApiSelect',
|
||||||
fieldName: 'IoTDataType',
|
fieldName: 'IoTDataType',
|
||||||
@ -83,11 +16,9 @@ export const querySchema = computed(() => [
|
|||||||
api: getCommonGetSelectList,
|
api: getCommonGetSelectList,
|
||||||
params: {
|
params: {
|
||||||
query: {
|
query: {
|
||||||
input: {
|
|
||||||
typeName: 'IoTDBDataTypeConst',
|
typeName: 'IoTDBDataTypeConst',
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
|
||||||
labelField: 'value',
|
labelField: 'value',
|
||||||
valueField: 'key',
|
valueField: 'key',
|
||||||
optionsPropName: 'options',
|
optionsPropName: 'options',
|
||||||
@ -161,12 +92,7 @@ export const tableSchema: any = computed((): VxeGridProps['columns'] => [
|
|||||||
return cellValue ? dayjs(cellValue).format('YYYY-MM-DD HH:mm:ss') : '';
|
return cellValue ? dayjs(cellValue).format('YYYY-MM-DD HH:mm:ss') : '';
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
{
|
|
||||||
field: 'deviceType',
|
|
||||||
title: $t('abp.IoTDBBase.DeviceType'),
|
|
||||||
minWidth: 150,
|
|
||||||
slots: {},
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
field: 'ioTDataType',
|
field: 'ioTDataType',
|
||||||
title: $t('abp.IoTDBBase.IoTDataType'),
|
title: $t('abp.IoTDBBase.IoTDataType'),
|
||||||
|
|||||||
@ -59,8 +59,8 @@ const fetchData = async () => {
|
|||||||
|
|
||||||
if (data?.items) {
|
if (data?.items) {
|
||||||
options.value = data.items.map((item) => ({
|
options.value = data.items.map((item) => ({
|
||||||
label: item.meterName,
|
label: `${item.deviceName || item.deviceAddress} (${item.deviceAddress})`,
|
||||||
value: item.id,
|
value: item.deviceAddress, // 使用设备地址作为值
|
||||||
...item, // 保留完整数据
|
...item, // 保留完整数据
|
||||||
}));
|
}));
|
||||||
total.value = data.totalCount || 0;
|
total.value = data.totalCount || 0;
|
||||||
|
|||||||
@ -135,11 +135,9 @@ const formOptions: VbenFormProps = {
|
|||||||
// 当任何相关字段发生变化时,刷新表格数据
|
// 当任何相关字段发生变化时,刷新表格数据
|
||||||
const relevantFields = new Set([
|
const relevantFields = new Set([
|
||||||
'DeviceId',
|
'DeviceId',
|
||||||
'DeviceType',
|
|
||||||
'EndCreationTime',
|
'EndCreationTime',
|
||||||
'IoTDataType',
|
'IoTDataType',
|
||||||
'StartCreationTime',
|
'StartCreationTime',
|
||||||
'DataBaseName',
|
|
||||||
]);
|
]);
|
||||||
const hasRelevantChange = changedFields.some((field) =>
|
const hasRelevantChange = changedFields.some((field) =>
|
||||||
relevantFields.has(field),
|
relevantFields.has(field),
|
||||||
@ -181,9 +179,7 @@ const gridOptions: VxeGridProps<any> = {
|
|||||||
const currentFormValues = gridApi?.formApi ? await gridApi.formApi.getValues() : {};
|
const currentFormValues = gridApi?.formApi ? await gridApi.formApi.getValues() : {};
|
||||||
|
|
||||||
// 获取选中的设备信息
|
// 获取选中的设备信息
|
||||||
let deviceId = currentFormValues.DeviceId || '';
|
let deviceAddress = currentFormValues.DeviceId || '';
|
||||||
let dataBaseName = '';
|
|
||||||
const deviceType = currentFormValues.DeviceType || '';
|
|
||||||
|
|
||||||
// 优先使用选中的设备信息
|
// 优先使用选中的设备信息
|
||||||
const deviceInfo =
|
const deviceInfo =
|
||||||
@ -193,15 +189,7 @@ const gridOptions: VxeGridProps<any> = {
|
|||||||
: null);
|
: null);
|
||||||
|
|
||||||
if (deviceInfo) {
|
if (deviceInfo) {
|
||||||
dataBaseName = deviceInfo.businessSystemName || '';
|
deviceAddress = deviceInfo.deviceAddress || deviceAddress;
|
||||||
// 根据设备类型获取正确的 id
|
|
||||||
if (Number(deviceType) === 10) {
|
|
||||||
// 集中器类型使用 focusId
|
|
||||||
deviceId = deviceInfo.focusId || deviceId;
|
|
||||||
} else {
|
|
||||||
// 其他设备类型使用 meterId
|
|
||||||
deviceId = deviceInfo.meterId || deviceId;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// 构建查询参数
|
// 构建查询参数
|
||||||
@ -209,10 +197,8 @@ const gridOptions: VxeGridProps<any> = {
|
|||||||
pageIndex: page.currentPage,
|
pageIndex: page.currentPage,
|
||||||
pageSize: page.pageSize,
|
pageSize: page.pageSize,
|
||||||
SearchKeyword: currentFormValues.SearchKeyword || '',
|
SearchKeyword: currentFormValues.SearchKeyword || '',
|
||||||
DeviceType: deviceType,
|
|
||||||
IoTDataType: currentFormValues.IoTDataType || '',
|
IoTDataType: currentFormValues.IoTDataType || '',
|
||||||
DeviceId: deviceId,
|
DeviceId: deviceAddress, // 直接使用设备地址
|
||||||
DataBaseName: dataBaseName || currentFormValues.DataBaseName || '',
|
|
||||||
StartCreationTime: formatDate(currentFormValues.StartCreationTime),
|
StartCreationTime: formatDate(currentFormValues.StartCreationTime),
|
||||||
EndCreationTime: formatDate(currentFormValues.EndCreationTime),
|
EndCreationTime: formatDate(currentFormValues.EndCreationTime),
|
||||||
};
|
};
|
||||||
|
|||||||
@ -8,72 +8,6 @@ import { getCommonGetSelectList } from '#/api-client';
|
|||||||
import { $t } from '#/locales';
|
import { $t } from '#/locales';
|
||||||
|
|
||||||
export const querySchema = computed(() => [
|
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',
|
|
||||||
label: $t('abp.IoTDBBase.DeviceType'),
|
|
||||||
componentProps: {
|
|
||||||
api: getCommonGetSelectList,
|
|
||||||
params: {
|
|
||||||
query: {
|
|
||||||
typeName: 'MeterTypeEnum',
|
|
||||||
},
|
|
||||||
},
|
|
||||||
labelField: 'value',
|
|
||||||
valueField: 'key',
|
|
||||||
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',
|
component: 'ApiSelect',
|
||||||
fieldName: 'IoTDataType',
|
fieldName: 'IoTDataType',
|
||||||
@ -158,12 +92,7 @@ export const tableSchema: any = computed((): VxeGridProps['columns'] => [
|
|||||||
return cellValue ? dayjs(cellValue).format('YYYY-MM-DD HH:mm:ss') : '';
|
return cellValue ? dayjs(cellValue).format('YYYY-MM-DD HH:mm:ss') : '';
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
{
|
|
||||||
field: 'deviceType',
|
|
||||||
title: $t('abp.IoTDBBase.DeviceType'),
|
|
||||||
minWidth: '120',
|
|
||||||
slots: {},
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
field: 'ioTDataType',
|
field: 'ioTDataType',
|
||||||
title: $t('abp.IoTDBBase.IoTDataType'),
|
title: $t('abp.IoTDBBase.IoTDataType'),
|
||||||
|
|||||||
@ -58,9 +58,6 @@ const [Grid] = useVbenVxeGrid({ formOptions, gridOptions });
|
|||||||
<template>
|
<template>
|
||||||
<Page auto-content-height>
|
<Page auto-content-height>
|
||||||
<Grid>
|
<Grid>
|
||||||
<template #isdeviceType="{ row }">
|
|
||||||
{{ row.deviceType }}
|
|
||||||
</template>
|
|
||||||
<template #ismanualOrNot="{ row }">
|
<template #ismanualOrNot="{ row }">
|
||||||
<component :is="h(Tag, { color: row.manualOrNot ? 'green' : 'red' }, () =>
|
<component :is="h(Tag, { color: row.manualOrNot ? 'green' : 'red' }, () =>
|
||||||
row.manualOrNot ? $t('common.yes') : $t('common.no'),
|
row.manualOrNot ? $t('common.yes') : $t('common.no'),
|
||||||
|
|||||||
@ -19,28 +19,11 @@ export const querySchema = computed(() => [
|
|||||||
|
|
||||||
export const tableSchema: any = computed((): VxeGridProps['columns'] => [
|
export const tableSchema: any = computed((): VxeGridProps['columns'] => [
|
||||||
{ title: $t('common.seq'), type: 'seq', width: 50 },
|
{ title: $t('common.seq'), type: 'seq', width: 50 },
|
||||||
{ field: 'dataBaseName', title: $t('abp.log.dataBaseName'), minWidth: '150' },
|
|
||||||
{
|
{
|
||||||
field: 'projectId',
|
field: 'deviceAddress',
|
||||||
title: $t('abp.log.projectId'),
|
|
||||||
minWidth: '150',
|
|
||||||
},
|
|
||||||
{
|
|
||||||
field: 'meterAddress',
|
|
||||||
title: $t('abp.meters.meterAddress'),
|
|
||||||
minWidth: '150',
|
|
||||||
},
|
|
||||||
{
|
|
||||||
field: 'focusAddress',
|
|
||||||
title: $t('abp.focus.focusAddress'),
|
title: $t('abp.focus.focusAddress'),
|
||||||
minWidth: '100',
|
minWidth: '100',
|
||||||
},
|
},
|
||||||
{
|
|
||||||
field: 'deviceType',
|
|
||||||
title: $t('abp.log.deviceType'),
|
|
||||||
minWidth: '100',
|
|
||||||
slots: { default: 'isdeviceType' },
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
field: 'timestamps',
|
field: 'timestamps',
|
||||||
title: $t('abp.log.timestamps'),
|
title: $t('abp.log.timestamps'),
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user