feat: 新增EMS基础模块的报警通知组、推送日志及相关功能
新增报警通知组管理页面及API 新增报警通知组成员管理页面及API 新增报警推送日志管理页面及API 新增相关类型定义和接口实现 兼容历史图表组件导入路径main
parent
45878f8bf4
commit
97ee812fe6
@ -0,0 +1,10 @@
|
||||
import type { AlarmNotifyGroupVO as AlarmNotifyGroupEntity, EmsCrudForm, EmsCrudQuery, EmsId } from '@/api/ems/types';
|
||||
|
||||
export type AlarmNotifyGroupId = EmsId;
|
||||
export type AlarmNotifyGroupIds = AlarmNotifyGroupId[];
|
||||
|
||||
export interface AlarmNotifyGroupVO extends AlarmNotifyGroupEntity {}
|
||||
|
||||
export interface AlarmNotifyGroupForm extends EmsCrudForm<AlarmNotifyGroupVO> {}
|
||||
|
||||
export interface AlarmNotifyGroupQuery extends EmsCrudQuery<AlarmNotifyGroupVO> {}
|
||||
@ -0,0 +1,99 @@
|
||||
import request from '@/utils/request';
|
||||
import { AxiosPromise } from 'axios';
|
||||
import { AlarmNotifyGroupUserVO, AlarmNotifyGroupUserForm, AlarmNotifyGroupUserId, AlarmNotifyGroupUserIds, AlarmNotifyGroupUserQuery } from '@/api/ems/base/alarmNotifyGroupUser/types';
|
||||
|
||||
/**
|
||||
* 查询报警通知组成员列表
|
||||
* @param query
|
||||
* @returns {*}
|
||||
*/
|
||||
|
||||
export const listAlarmNotifyGroupUser = (query?: AlarmNotifyGroupUserQuery): AxiosPromise<AlarmNotifyGroupUserVO[]> => {
|
||||
return request({
|
||||
url: '/ems/base/alarmNotifyGroupUser/list',
|
||||
method: 'get',
|
||||
params: query
|
||||
});
|
||||
};
|
||||
|
||||
/**
|
||||
* 查询报警通知组成员详细
|
||||
* @param id
|
||||
*/
|
||||
export const getAlarmNotifyGroupUser = (id: AlarmNotifyGroupUserId): AxiosPromise<AlarmNotifyGroupUserVO> => {
|
||||
return request({
|
||||
url: '/ems/base/alarmNotifyGroupUser/' + id,
|
||||
method: 'get'
|
||||
});
|
||||
};
|
||||
|
||||
/**
|
||||
* 批量查询报警通知组成员详细
|
||||
* @param ids
|
||||
*/
|
||||
export const getAlarmNotifyGroupUserByIds = (ids: AlarmNotifyGroupUserIds): AxiosPromise<AlarmNotifyGroupUserVO[]> => {
|
||||
return request({
|
||||
url: '/ems/base/alarmNotifyGroupUser/listByIds',
|
||||
method: 'post',
|
||||
data: ids
|
||||
});
|
||||
};
|
||||
|
||||
/**
|
||||
* 统计报警通知组成员数量
|
||||
* @param query
|
||||
*/
|
||||
export const countAlarmNotifyGroupUser = (query?: AlarmNotifyGroupUserQuery): AxiosPromise<number> => {
|
||||
return request({
|
||||
url: '/ems/base/alarmNotifyGroupUser/count',
|
||||
method: 'get',
|
||||
params: query
|
||||
});
|
||||
};
|
||||
|
||||
/**
|
||||
* 判断是否存在符合条件的报警通知组成员
|
||||
* @param query
|
||||
*/
|
||||
export const existsAlarmNotifyGroupUser = (query?: AlarmNotifyGroupUserQuery): AxiosPromise<boolean> => {
|
||||
return request({
|
||||
url: '/ems/base/alarmNotifyGroupUser/exists',
|
||||
method: 'get',
|
||||
params: query
|
||||
});
|
||||
};
|
||||
|
||||
/**
|
||||
* 新增报警通知组成员
|
||||
* @param data
|
||||
*/
|
||||
export const addAlarmNotifyGroupUser = (data: AlarmNotifyGroupUserForm) => {
|
||||
return request({
|
||||
url: '/ems/base/alarmNotifyGroupUser',
|
||||
method: 'post',
|
||||
data: data
|
||||
});
|
||||
};
|
||||
|
||||
/**
|
||||
* 修改报警通知组成员
|
||||
* @param data
|
||||
*/
|
||||
export const updateAlarmNotifyGroupUser = (data: AlarmNotifyGroupUserForm) => {
|
||||
return request({
|
||||
url: '/ems/base/alarmNotifyGroupUser',
|
||||
method: 'put',
|
||||
data: data
|
||||
});
|
||||
};
|
||||
|
||||
/**
|
||||
* 删除报警通知组成员
|
||||
* @param id
|
||||
*/
|
||||
export const delAlarmNotifyGroupUser = (id: AlarmNotifyGroupUserId | AlarmNotifyGroupUserIds) => {
|
||||
return request({
|
||||
url: '/ems/base/alarmNotifyGroupUser/' + id,
|
||||
method: 'delete'
|
||||
});
|
||||
};
|
||||
@ -0,0 +1,10 @@
|
||||
import type { AlarmNotifyGroupUserVO as AlarmNotifyGroupUserEntity, EmsCrudForm, EmsCrudQuery, EmsId } from '@/api/ems/types';
|
||||
|
||||
export type AlarmNotifyGroupUserId = EmsId;
|
||||
export type AlarmNotifyGroupUserIds = AlarmNotifyGroupUserId[];
|
||||
|
||||
export interface AlarmNotifyGroupUserVO extends AlarmNotifyGroupUserEntity {}
|
||||
|
||||
export interface AlarmNotifyGroupUserForm extends EmsCrudForm<AlarmNotifyGroupUserVO> {}
|
||||
|
||||
export interface AlarmNotifyGroupUserQuery extends EmsCrudQuery<AlarmNotifyGroupUserVO> {}
|
||||
@ -0,0 +1,99 @@
|
||||
import request from '@/utils/request';
|
||||
import { AxiosPromise } from 'axios';
|
||||
import { AlarmPushLogVO, AlarmPushLogForm, AlarmPushLogId, AlarmPushLogIds, AlarmPushLogQuery } from '@/api/ems/base/alarmPushLog/types';
|
||||
|
||||
/**
|
||||
* 查询报警推送日志列表
|
||||
* @param query
|
||||
* @returns {*}
|
||||
*/
|
||||
|
||||
export const listAlarmPushLog = (query?: AlarmPushLogQuery): AxiosPromise<AlarmPushLogVO[]> => {
|
||||
return request({
|
||||
url: '/ems/base/alarmPushLog/list',
|
||||
method: 'get',
|
||||
params: query
|
||||
});
|
||||
};
|
||||
|
||||
/**
|
||||
* 查询报警推送日志详细
|
||||
* @param id
|
||||
*/
|
||||
export const getAlarmPushLog = (id: AlarmPushLogId): AxiosPromise<AlarmPushLogVO> => {
|
||||
return request({
|
||||
url: '/ems/base/alarmPushLog/' + id,
|
||||
method: 'get'
|
||||
});
|
||||
};
|
||||
|
||||
/**
|
||||
* 批量查询报警推送日志详细
|
||||
* @param ids
|
||||
*/
|
||||
export const getAlarmPushLogByIds = (ids: AlarmPushLogIds): AxiosPromise<AlarmPushLogVO[]> => {
|
||||
return request({
|
||||
url: '/ems/base/alarmPushLog/listByIds',
|
||||
method: 'post',
|
||||
data: ids
|
||||
});
|
||||
};
|
||||
|
||||
/**
|
||||
* 统计报警推送日志数量
|
||||
* @param query
|
||||
*/
|
||||
export const countAlarmPushLog = (query?: AlarmPushLogQuery): AxiosPromise<number> => {
|
||||
return request({
|
||||
url: '/ems/base/alarmPushLog/count',
|
||||
method: 'get',
|
||||
params: query
|
||||
});
|
||||
};
|
||||
|
||||
/**
|
||||
* 判断是否存在符合条件的报警推送日志
|
||||
* @param query
|
||||
*/
|
||||
export const existsAlarmPushLog = (query?: AlarmPushLogQuery): AxiosPromise<boolean> => {
|
||||
return request({
|
||||
url: '/ems/base/alarmPushLog/exists',
|
||||
method: 'get',
|
||||
params: query
|
||||
});
|
||||
};
|
||||
|
||||
/**
|
||||
* 新增报警推送日志
|
||||
* @param data
|
||||
*/
|
||||
export const addAlarmPushLog = (data: AlarmPushLogForm) => {
|
||||
return request({
|
||||
url: '/ems/base/alarmPushLog',
|
||||
method: 'post',
|
||||
data: data
|
||||
});
|
||||
};
|
||||
|
||||
/**
|
||||
* 修改报警推送日志
|
||||
* @param data
|
||||
*/
|
||||
export const updateAlarmPushLog = (data: AlarmPushLogForm) => {
|
||||
return request({
|
||||
url: '/ems/base/alarmPushLog',
|
||||
method: 'put',
|
||||
data: data
|
||||
});
|
||||
};
|
||||
|
||||
/**
|
||||
* 删除报警推送日志
|
||||
* @param id
|
||||
*/
|
||||
export const delAlarmPushLog = (id: AlarmPushLogId | AlarmPushLogIds) => {
|
||||
return request({
|
||||
url: '/ems/base/alarmPushLog/' + id,
|
||||
method: 'delete'
|
||||
});
|
||||
};
|
||||
@ -0,0 +1,10 @@
|
||||
import type { AlarmPushLogVO as AlarmPushLogEntity, EmsCrudForm, EmsCrudQuery, EmsId } from '@/api/ems/types';
|
||||
|
||||
export type AlarmPushLogId = EmsId;
|
||||
export type AlarmPushLogIds = AlarmPushLogId[];
|
||||
|
||||
export interface AlarmPushLogVO extends AlarmPushLogEntity {}
|
||||
|
||||
export interface AlarmPushLogForm extends EmsCrudForm<AlarmPushLogVO> {}
|
||||
|
||||
export interface AlarmPushLogQuery extends EmsCrudQuery<AlarmPushLogVO> {}
|
||||
@ -0,0 +1,99 @@
|
||||
import request from '@/utils/request';
|
||||
import { AxiosPromise } from 'axios';
|
||||
import { ControlCommandLogVO, ControlCommandLogForm, ControlCommandLogId, ControlCommandLogIds, ControlCommandLogQuery } from '@/api/ems/base/controlCommandLog/types';
|
||||
|
||||
/**
|
||||
* 查询回写命令日志列表
|
||||
* @param query
|
||||
* @returns {*}
|
||||
*/
|
||||
|
||||
export const listControlCommandLog = (query?: ControlCommandLogQuery): AxiosPromise<ControlCommandLogVO[]> => {
|
||||
return request({
|
||||
url: '/ems/base/controlCommandLog/list',
|
||||
method: 'get',
|
||||
params: query
|
||||
});
|
||||
};
|
||||
|
||||
/**
|
||||
* 查询回写命令日志详细
|
||||
* @param id
|
||||
*/
|
||||
export const getControlCommandLog = (id: ControlCommandLogId): AxiosPromise<ControlCommandLogVO> => {
|
||||
return request({
|
||||
url: '/ems/base/controlCommandLog/' + id,
|
||||
method: 'get'
|
||||
});
|
||||
};
|
||||
|
||||
/**
|
||||
* 批量查询回写命令日志详细
|
||||
* @param ids
|
||||
*/
|
||||
export const getControlCommandLogByIds = (ids: ControlCommandLogIds): AxiosPromise<ControlCommandLogVO[]> => {
|
||||
return request({
|
||||
url: '/ems/base/controlCommandLog/listByIds',
|
||||
method: 'post',
|
||||
data: ids
|
||||
});
|
||||
};
|
||||
|
||||
/**
|
||||
* 统计回写命令日志数量
|
||||
* @param query
|
||||
*/
|
||||
export const countControlCommandLog = (query?: ControlCommandLogQuery): AxiosPromise<number> => {
|
||||
return request({
|
||||
url: '/ems/base/controlCommandLog/count',
|
||||
method: 'get',
|
||||
params: query
|
||||
});
|
||||
};
|
||||
|
||||
/**
|
||||
* 判断是否存在符合条件的回写命令日志
|
||||
* @param query
|
||||
*/
|
||||
export const existsControlCommandLog = (query?: ControlCommandLogQuery): AxiosPromise<boolean> => {
|
||||
return request({
|
||||
url: '/ems/base/controlCommandLog/exists',
|
||||
method: 'get',
|
||||
params: query
|
||||
});
|
||||
};
|
||||
|
||||
/**
|
||||
* 新增回写命令日志
|
||||
* @param data
|
||||
*/
|
||||
export const addControlCommandLog = (data: ControlCommandLogForm) => {
|
||||
return request({
|
||||
url: '/ems/base/controlCommandLog',
|
||||
method: 'post',
|
||||
data: data
|
||||
});
|
||||
};
|
||||
|
||||
/**
|
||||
* 修改回写命令日志
|
||||
* @param data
|
||||
*/
|
||||
export const updateControlCommandLog = (data: ControlCommandLogForm) => {
|
||||
return request({
|
||||
url: '/ems/base/controlCommandLog',
|
||||
method: 'put',
|
||||
data: data
|
||||
});
|
||||
};
|
||||
|
||||
/**
|
||||
* 删除回写命令日志
|
||||
* @param id
|
||||
*/
|
||||
export const delControlCommandLog = (id: ControlCommandLogId | ControlCommandLogIds) => {
|
||||
return request({
|
||||
url: '/ems/base/controlCommandLog/' + id,
|
||||
method: 'delete'
|
||||
});
|
||||
};
|
||||
@ -0,0 +1,10 @@
|
||||
import type { ControlCommandLogVO as ControlCommandLogEntity, EmsCrudForm, EmsCrudQuery, EmsId } from '@/api/ems/types';
|
||||
|
||||
export type ControlCommandLogId = EmsId;
|
||||
export type ControlCommandLogIds = ControlCommandLogId[];
|
||||
|
||||
export interface ControlCommandLogVO extends ControlCommandLogEntity {}
|
||||
|
||||
export interface ControlCommandLogForm extends EmsCrudForm<ControlCommandLogVO> {}
|
||||
|
||||
export interface ControlCommandLogQuery extends EmsCrudQuery<ControlCommandLogVO> {}
|
||||
@ -0,0 +1,99 @@
|
||||
import request from '@/utils/request';
|
||||
import { AxiosPromise } from 'axios';
|
||||
import { DataExportTaskVO, DataExportTaskForm, DataExportTaskId, DataExportTaskIds, DataExportTaskQuery } from '@/api/ems/base/dataExportTask/types';
|
||||
|
||||
/**
|
||||
* 查询数据导出任务列表
|
||||
* @param query
|
||||
* @returns {*}
|
||||
*/
|
||||
|
||||
export const listDataExportTask = (query?: DataExportTaskQuery): AxiosPromise<DataExportTaskVO[]> => {
|
||||
return request({
|
||||
url: '/ems/base/dataExportTask/list',
|
||||
method: 'get',
|
||||
params: query
|
||||
});
|
||||
};
|
||||
|
||||
/**
|
||||
* 查询数据导出任务详细
|
||||
* @param id
|
||||
*/
|
||||
export const getDataExportTask = (id: DataExportTaskId): AxiosPromise<DataExportTaskVO> => {
|
||||
return request({
|
||||
url: '/ems/base/dataExportTask/' + id,
|
||||
method: 'get'
|
||||
});
|
||||
};
|
||||
|
||||
/**
|
||||
* 批量查询数据导出任务详细
|
||||
* @param ids
|
||||
*/
|
||||
export const getDataExportTaskByIds = (ids: DataExportTaskIds): AxiosPromise<DataExportTaskVO[]> => {
|
||||
return request({
|
||||
url: '/ems/base/dataExportTask/listByIds',
|
||||
method: 'post',
|
||||
data: ids
|
||||
});
|
||||
};
|
||||
|
||||
/**
|
||||
* 统计数据导出任务数量
|
||||
* @param query
|
||||
*/
|
||||
export const countDataExportTask = (query?: DataExportTaskQuery): AxiosPromise<number> => {
|
||||
return request({
|
||||
url: '/ems/base/dataExportTask/count',
|
||||
method: 'get',
|
||||
params: query
|
||||
});
|
||||
};
|
||||
|
||||
/**
|
||||
* 判断是否存在符合条件的数据导出任务
|
||||
* @param query
|
||||
*/
|
||||
export const existsDataExportTask = (query?: DataExportTaskQuery): AxiosPromise<boolean> => {
|
||||
return request({
|
||||
url: '/ems/base/dataExportTask/exists',
|
||||
method: 'get',
|
||||
params: query
|
||||
});
|
||||
};
|
||||
|
||||
/**
|
||||
* 新增数据导出任务
|
||||
* @param data
|
||||
*/
|
||||
export const addDataExportTask = (data: DataExportTaskForm) => {
|
||||
return request({
|
||||
url: '/ems/base/dataExportTask',
|
||||
method: 'post',
|
||||
data: data
|
||||
});
|
||||
};
|
||||
|
||||
/**
|
||||
* 修改数据导出任务
|
||||
* @param data
|
||||
*/
|
||||
export const updateDataExportTask = (data: DataExportTaskForm) => {
|
||||
return request({
|
||||
url: '/ems/base/dataExportTask',
|
||||
method: 'put',
|
||||
data: data
|
||||
});
|
||||
};
|
||||
|
||||
/**
|
||||
* 删除数据导出任务
|
||||
* @param id
|
||||
*/
|
||||
export const delDataExportTask = (id: DataExportTaskId | DataExportTaskIds) => {
|
||||
return request({
|
||||
url: '/ems/base/dataExportTask/' + id,
|
||||
method: 'delete'
|
||||
});
|
||||
};
|
||||
@ -0,0 +1,10 @@
|
||||
import type { DataExportTaskVO as DataExportTaskEntity, EmsCrudForm, EmsCrudQuery, EmsId } from '@/api/ems/types';
|
||||
|
||||
export type DataExportTaskId = EmsId;
|
||||
export type DataExportTaskIds = DataExportTaskId[];
|
||||
|
||||
export interface DataExportTaskVO extends DataExportTaskEntity {}
|
||||
|
||||
export interface DataExportTaskForm extends EmsCrudForm<DataExportTaskVO> {}
|
||||
|
||||
export interface DataExportTaskQuery extends EmsCrudQuery<DataExportTaskVO> {}
|
||||
@ -0,0 +1,57 @@
|
||||
import type { EmsCrudForm, EmsCrudQuery, EmsId, IntegrationEndpointVO as IntegrationEndpointEntity } from '@/api/ems/types';
|
||||
import type { ControlCommandLogVO, IntegrationPointMapVO } from '@/api/ems/types';
|
||||
|
||||
export type IntegrationEndpointId = EmsId;
|
||||
export type IntegrationEndpointIds = IntegrationEndpointId[];
|
||||
|
||||
export interface IntegrationEndpointVO extends IntegrationEndpointEntity {}
|
||||
|
||||
export interface IntegrationEndpointForm extends EmsCrudForm<IntegrationEndpointVO> {}
|
||||
|
||||
export interface IntegrationEndpointQuery extends EmsCrudQuery<IntegrationEndpointVO> {}
|
||||
|
||||
export interface IntegrationConnectionTestForm {
|
||||
endpointId?: EmsId;
|
||||
endpointName?: string;
|
||||
endpointType?: string;
|
||||
accessMode?: string;
|
||||
host?: string;
|
||||
port?: number;
|
||||
configJson?: string;
|
||||
status?: string;
|
||||
}
|
||||
|
||||
export interface IntegrationConnectionTestResult {
|
||||
success?: boolean;
|
||||
endpointName?: string;
|
||||
title?: string;
|
||||
message?: string;
|
||||
checkedItems?: string[];
|
||||
}
|
||||
|
||||
export interface IntegrationPayloadPreviewForm {
|
||||
endpointId?: EmsId;
|
||||
mapId?: EmsId;
|
||||
monitorCode?: string;
|
||||
metricCode?: string;
|
||||
commandType?: string;
|
||||
commandValue?: string;
|
||||
dataFormat?: string;
|
||||
}
|
||||
|
||||
export interface IntegrationPayloadPreviewResult {
|
||||
endpointName?: string;
|
||||
monitorName?: string;
|
||||
dataFormat?: string;
|
||||
payloadText?: string;
|
||||
jsonPayloadText?: string;
|
||||
xmlPayloadText?: string;
|
||||
}
|
||||
|
||||
export interface IntegrationCommandDispatchForm extends IntegrationPayloadPreviewForm {}
|
||||
|
||||
export interface IntegrationWorkbenchDetail {
|
||||
endpoint?: IntegrationEndpointVO;
|
||||
pointMaps?: IntegrationPointMapVO[];
|
||||
commandLogs?: ControlCommandLogVO[];
|
||||
}
|
||||
@ -0,0 +1,99 @@
|
||||
import request from '@/utils/request';
|
||||
import { AxiosPromise } from 'axios';
|
||||
import { IntegrationPointMapVO, IntegrationPointMapForm, IntegrationPointMapId, IntegrationPointMapIds, IntegrationPointMapQuery } from '@/api/ems/base/integrationPointMap/types';
|
||||
|
||||
/**
|
||||
* 查询对接点位映射列表
|
||||
* @param query
|
||||
* @returns {*}
|
||||
*/
|
||||
|
||||
export const listIntegrationPointMap = (query?: IntegrationPointMapQuery): AxiosPromise<IntegrationPointMapVO[]> => {
|
||||
return request({
|
||||
url: '/ems/base/integrationPointMap/list',
|
||||
method: 'get',
|
||||
params: query
|
||||
});
|
||||
};
|
||||
|
||||
/**
|
||||
* 查询对接点位映射详细
|
||||
* @param id
|
||||
*/
|
||||
export const getIntegrationPointMap = (id: IntegrationPointMapId): AxiosPromise<IntegrationPointMapVO> => {
|
||||
return request({
|
||||
url: '/ems/base/integrationPointMap/' + id,
|
||||
method: 'get'
|
||||
});
|
||||
};
|
||||
|
||||
/**
|
||||
* 批量查询对接点位映射详细
|
||||
* @param ids
|
||||
*/
|
||||
export const getIntegrationPointMapByIds = (ids: IntegrationPointMapIds): AxiosPromise<IntegrationPointMapVO[]> => {
|
||||
return request({
|
||||
url: '/ems/base/integrationPointMap/listByIds',
|
||||
method: 'post',
|
||||
data: ids
|
||||
});
|
||||
};
|
||||
|
||||
/**
|
||||
* 统计对接点位映射数量
|
||||
* @param query
|
||||
*/
|
||||
export const countIntegrationPointMap = (query?: IntegrationPointMapQuery): AxiosPromise<number> => {
|
||||
return request({
|
||||
url: '/ems/base/integrationPointMap/count',
|
||||
method: 'get',
|
||||
params: query
|
||||
});
|
||||
};
|
||||
|
||||
/**
|
||||
* 判断是否存在符合条件的对接点位映射
|
||||
* @param query
|
||||
*/
|
||||
export const existsIntegrationPointMap = (query?: IntegrationPointMapQuery): AxiosPromise<boolean> => {
|
||||
return request({
|
||||
url: '/ems/base/integrationPointMap/exists',
|
||||
method: 'get',
|
||||
params: query
|
||||
});
|
||||
};
|
||||
|
||||
/**
|
||||
* 新增对接点位映射
|
||||
* @param data
|
||||
*/
|
||||
export const addIntegrationPointMap = (data: IntegrationPointMapForm) => {
|
||||
return request({
|
||||
url: '/ems/base/integrationPointMap',
|
||||
method: 'post',
|
||||
data: data
|
||||
});
|
||||
};
|
||||
|
||||
/**
|
||||
* 修改对接点位映射
|
||||
* @param data
|
||||
*/
|
||||
export const updateIntegrationPointMap = (data: IntegrationPointMapForm) => {
|
||||
return request({
|
||||
url: '/ems/base/integrationPointMap',
|
||||
method: 'put',
|
||||
data: data
|
||||
});
|
||||
};
|
||||
|
||||
/**
|
||||
* 删除对接点位映射
|
||||
* @param id
|
||||
*/
|
||||
export const delIntegrationPointMap = (id: IntegrationPointMapId | IntegrationPointMapIds) => {
|
||||
return request({
|
||||
url: '/ems/base/integrationPointMap/' + id,
|
||||
method: 'delete'
|
||||
});
|
||||
};
|
||||
@ -0,0 +1,10 @@
|
||||
import type { EmsCrudForm, EmsCrudQuery, EmsId, IntegrationPointMapVO as IntegrationPointMapEntity } from '@/api/ems/types';
|
||||
|
||||
export type IntegrationPointMapId = EmsId;
|
||||
export type IntegrationPointMapIds = IntegrationPointMapId[];
|
||||
|
||||
export interface IntegrationPointMapVO extends IntegrationPointMapEntity {}
|
||||
|
||||
export interface IntegrationPointMapForm extends EmsCrudForm<IntegrationPointMapVO> {}
|
||||
|
||||
export interface IntegrationPointMapQuery extends EmsCrudQuery<IntegrationPointMapVO> {}
|
||||
@ -0,0 +1,99 @@
|
||||
import request from '@/utils/request';
|
||||
import { AxiosPromise } from 'axios';
|
||||
import { MonitorMetricThresholdVO, MonitorMetricThresholdForm, MonitorMetricThresholdId, MonitorMetricThresholdIds, MonitorMetricThresholdQuery } from '@/api/ems/base/monitorMetricThreshold/types';
|
||||
|
||||
/**
|
||||
* 查询统一点位阈值列表
|
||||
* @param query
|
||||
* @returns {*}
|
||||
*/
|
||||
|
||||
export const listMonitorMetricThreshold = (query?: MonitorMetricThresholdQuery): AxiosPromise<MonitorMetricThresholdVO[]> => {
|
||||
return request({
|
||||
url: '/ems/base/monitorMetricThreshold/list',
|
||||
method: 'get',
|
||||
params: query
|
||||
});
|
||||
};
|
||||
|
||||
/**
|
||||
* 查询统一点位阈值详细
|
||||
* @param id
|
||||
*/
|
||||
export const getMonitorMetricThreshold = (id: MonitorMetricThresholdId): AxiosPromise<MonitorMetricThresholdVO> => {
|
||||
return request({
|
||||
url: '/ems/base/monitorMetricThreshold/' + id,
|
||||
method: 'get'
|
||||
});
|
||||
};
|
||||
|
||||
/**
|
||||
* 批量查询统一点位阈值详细
|
||||
* @param ids
|
||||
*/
|
||||
export const getMonitorMetricThresholdByIds = (ids: MonitorMetricThresholdIds): AxiosPromise<MonitorMetricThresholdVO[]> => {
|
||||
return request({
|
||||
url: '/ems/base/monitorMetricThreshold/listByIds',
|
||||
method: 'post',
|
||||
data: ids
|
||||
});
|
||||
};
|
||||
|
||||
/**
|
||||
* 统计统一点位阈值数量
|
||||
* @param query
|
||||
*/
|
||||
export const countMonitorMetricThreshold = (query?: MonitorMetricThresholdQuery): AxiosPromise<number> => {
|
||||
return request({
|
||||
url: '/ems/base/monitorMetricThreshold/count',
|
||||
method: 'get',
|
||||
params: query
|
||||
});
|
||||
};
|
||||
|
||||
/**
|
||||
* 判断是否存在符合条件的统一点位阈值
|
||||
* @param query
|
||||
*/
|
||||
export const existsMonitorMetricThreshold = (query?: MonitorMetricThresholdQuery): AxiosPromise<boolean> => {
|
||||
return request({
|
||||
url: '/ems/base/monitorMetricThreshold/exists',
|
||||
method: 'get',
|
||||
params: query
|
||||
});
|
||||
};
|
||||
|
||||
/**
|
||||
* 新增统一点位阈值
|
||||
* @param data
|
||||
*/
|
||||
export const addMonitorMetricThreshold = (data: MonitorMetricThresholdForm) => {
|
||||
return request({
|
||||
url: '/ems/base/monitorMetricThreshold',
|
||||
method: 'post',
|
||||
data: data
|
||||
});
|
||||
};
|
||||
|
||||
/**
|
||||
* 修改统一点位阈值
|
||||
* @param data
|
||||
*/
|
||||
export const updateMonitorMetricThreshold = (data: MonitorMetricThresholdForm) => {
|
||||
return request({
|
||||
url: '/ems/base/monitorMetricThreshold',
|
||||
method: 'put',
|
||||
data: data
|
||||
});
|
||||
};
|
||||
|
||||
/**
|
||||
* 删除统一点位阈值
|
||||
* @param id
|
||||
*/
|
||||
export const delMonitorMetricThreshold = (id: MonitorMetricThresholdId | MonitorMetricThresholdIds) => {
|
||||
return request({
|
||||
url: '/ems/base/monitorMetricThreshold/' + id,
|
||||
method: 'delete'
|
||||
});
|
||||
};
|
||||
@ -0,0 +1,10 @@
|
||||
import type { EmsCrudForm, EmsCrudQuery, EmsId, MonitorMetricThresholdVO as MonitorMetricThresholdEntity } from '@/api/ems/types';
|
||||
|
||||
export type MonitorMetricThresholdId = EmsId;
|
||||
export type MonitorMetricThresholdIds = MonitorMetricThresholdId[];
|
||||
|
||||
export interface MonitorMetricThresholdVO extends MonitorMetricThresholdEntity {}
|
||||
|
||||
export interface MonitorMetricThresholdForm extends EmsCrudForm<MonitorMetricThresholdVO> {}
|
||||
|
||||
export interface MonitorMetricThresholdQuery extends EmsCrudQuery<MonitorMetricThresholdVO> {}
|
||||
@ -0,0 +1,129 @@
|
||||
import request from '@/utils/request';
|
||||
import { AxiosPromise } from 'axios';
|
||||
import {
|
||||
ReportPeriodSummaryVO,
|
||||
ReportPeriodSummaryForm,
|
||||
ReportPeriodSummaryId,
|
||||
ReportPeriodSummaryIds,
|
||||
ReportPeriodSummaryQuery
|
||||
} from '@/api/ems/base/reportPeriodSummary/types';
|
||||
|
||||
/**
|
||||
* 查询周期报汇总列表
|
||||
* @param query
|
||||
* @returns {*}
|
||||
*/
|
||||
|
||||
export const listReportPeriodSummary = (query?: ReportPeriodSummaryQuery): AxiosPromise<ReportPeriodSummaryVO[]> => {
|
||||
return request({
|
||||
url: '/ems/base/reportPeriodSummary/list',
|
||||
method: 'get',
|
||||
params: query
|
||||
});
|
||||
};
|
||||
|
||||
/**
|
||||
* 查询动态聚合后的周期报表
|
||||
* @param query
|
||||
*/
|
||||
export const listAggregateReportPeriodSummary = (query?: ReportPeriodSummaryQuery): AxiosPromise<ReportPeriodSummaryVO[]> => {
|
||||
return request({
|
||||
url: '/ems/base/reportPeriodSummary/aggregateList',
|
||||
method: 'get',
|
||||
params: query
|
||||
});
|
||||
};
|
||||
|
||||
/**
|
||||
* 查询周期报汇总详细
|
||||
* @param id
|
||||
*/
|
||||
export const getReportPeriodSummary = (id: ReportPeriodSummaryId): AxiosPromise<ReportPeriodSummaryVO> => {
|
||||
return request({
|
||||
url: '/ems/base/reportPeriodSummary/' + id,
|
||||
method: 'get'
|
||||
});
|
||||
};
|
||||
|
||||
/**
|
||||
* 批量查询周期报汇总详细
|
||||
* @param ids
|
||||
*/
|
||||
export const getReportPeriodSummaryByIds = (ids: ReportPeriodSummaryIds): AxiosPromise<ReportPeriodSummaryVO[]> => {
|
||||
return request({
|
||||
url: '/ems/base/reportPeriodSummary/listByIds',
|
||||
method: 'post',
|
||||
data: ids
|
||||
});
|
||||
};
|
||||
|
||||
/**
|
||||
* 统计周期报汇总数量
|
||||
* @param query
|
||||
*/
|
||||
export const countReportPeriodSummary = (query?: ReportPeriodSummaryQuery): AxiosPromise<number> => {
|
||||
return request({
|
||||
url: '/ems/base/reportPeriodSummary/count',
|
||||
method: 'get',
|
||||
params: query
|
||||
});
|
||||
};
|
||||
|
||||
/**
|
||||
* 判断是否存在符合条件的周期报汇总
|
||||
* @param query
|
||||
*/
|
||||
export const existsReportPeriodSummary = (query?: ReportPeriodSummaryQuery): AxiosPromise<boolean> => {
|
||||
return request({
|
||||
url: '/ems/base/reportPeriodSummary/exists',
|
||||
method: 'get',
|
||||
params: query
|
||||
});
|
||||
};
|
||||
|
||||
/**
|
||||
* 新增周期报汇总
|
||||
* @param data
|
||||
*/
|
||||
export const addReportPeriodSummary = (data: ReportPeriodSummaryForm) => {
|
||||
return request({
|
||||
url: '/ems/base/reportPeriodSummary',
|
||||
method: 'post',
|
||||
data: data
|
||||
});
|
||||
};
|
||||
|
||||
/**
|
||||
* 修改周期报汇总
|
||||
* @param data
|
||||
*/
|
||||
export const updateReportPeriodSummary = (data: ReportPeriodSummaryForm) => {
|
||||
return request({
|
||||
url: '/ems/base/reportPeriodSummary',
|
||||
method: 'put',
|
||||
data: data
|
||||
});
|
||||
};
|
||||
|
||||
/**
|
||||
* 删除周期报汇总
|
||||
* @param id
|
||||
*/
|
||||
export const delReportPeriodSummary = (id: ReportPeriodSummaryId | ReportPeriodSummaryIds) => {
|
||||
return request({
|
||||
url: '/ems/base/reportPeriodSummary/' + id,
|
||||
method: 'delete'
|
||||
});
|
||||
};
|
||||
|
||||
/**
|
||||
* 导出动态聚合后的周期报表
|
||||
* @param query
|
||||
*/
|
||||
export const exportAggregateReportPeriodSummary = (query?: ReportPeriodSummaryQuery) => {
|
||||
return request({
|
||||
url: '/ems/base/reportPeriodSummary/aggregateExport',
|
||||
method: 'post',
|
||||
params: query
|
||||
});
|
||||
};
|
||||
@ -0,0 +1,10 @@
|
||||
import type { EmsCrudForm, EmsCrudQuery, EmsId, ReportPeriodSummaryVO as ReportPeriodSummaryEntity } from '@/api/ems/types';
|
||||
|
||||
export type ReportPeriodSummaryId = EmsId;
|
||||
export type ReportPeriodSummaryIds = ReportPeriodSummaryId[];
|
||||
|
||||
export interface ReportPeriodSummaryVO extends ReportPeriodSummaryEntity {}
|
||||
|
||||
export interface ReportPeriodSummaryForm extends EmsCrudForm<ReportPeriodSummaryVO> {}
|
||||
|
||||
export interface ReportPeriodSummaryQuery extends EmsCrudQuery<ReportPeriodSummaryVO> {}
|
||||
@ -0,0 +1,2 @@
|
||||
// 兼容项目中历史页面对 `@/components/Charts/Chart` 的无后缀导入,避免逐页改动带来回归风险。
|
||||
export { default } from './Chart.vue';
|
||||
@ -0,0 +1,413 @@
|
||||
<template>
|
||||
<div class="p-2">
|
||||
<transition :enter-active-class="proxy?.animate.searchAnimate.enter" :leave-active-class="proxy?.animate.searchAnimate.leave">
|
||||
<div v-show="showSearch" class="mb-[10px]">
|
||||
<el-card shadow="hover">
|
||||
<el-form ref="queryFormRef" :model="queryParams" :inline="true" label-width="82px">
|
||||
<el-form-item label="端点名称" prop="endpointId">
|
||||
<el-select v-model="queryParams.endpointId" placeholder="请选择端点" clearable filterable style="width: 220px">
|
||||
<el-option v-for="item in endpointOptions" :key="item.id" :label="item.endpointName" :value="item.id" />
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="点位名称" prop="monitorCode">
|
||||
<el-tree-select
|
||||
v-model="queryParams.monitorCode"
|
||||
:data="monitorTreeOptions"
|
||||
:props="monitorTreeProps"
|
||||
placeholder="请选择点位"
|
||||
clearable
|
||||
filterable
|
||||
check-strictly
|
||||
style="width: 240px"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="命令类型" prop="commandType">
|
||||
<el-select v-model="queryParams.commandType" placeholder="请选择命令类型" clearable style="width: 160px">
|
||||
<el-option v-for="item in commandTypeOptions" :key="item.value" :label="item.label" :value="item.value" />
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="执行状态" prop="executeStatus">
|
||||
<el-select v-model="queryParams.executeStatus" placeholder="请选择执行状态" clearable style="width: 160px">
|
||||
<el-option v-for="item in executeStatusOptions" :key="item.value" :label="item.label" :value="item.value" />
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item>
|
||||
<el-button type="primary" icon="Search" @click="handleQuery">搜索</el-button>
|
||||
<el-button icon="Refresh" @click="resetQuery">重置</el-button>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</el-card>
|
||||
</div>
|
||||
</transition>
|
||||
|
||||
<el-card shadow="never">
|
||||
<template #header>
|
||||
<el-row :gutter="10" class="mb8">
|
||||
<el-col :span="1.5">
|
||||
<el-button type="primary" plain icon="Plus" @click="handleAdd" v-hasPermi="['ems/base:controlCommandLog:add']">新增</el-button>
|
||||
</el-col>
|
||||
<el-col :span="1.5">
|
||||
<el-button type="success" plain icon="Edit" :disabled="single" @click="handleUpdate()" v-hasPermi="['ems/base:controlCommandLog:edit']">修改</el-button>
|
||||
</el-col>
|
||||
<el-col :span="1.5">
|
||||
<el-button type="danger" plain icon="Delete" :disabled="multiple" @click="handleDelete()" v-hasPermi="['ems/base:controlCommandLog:remove']">删除</el-button>
|
||||
</el-col>
|
||||
<el-col :span="1.5">
|
||||
<el-button type="warning" plain icon="Download" @click="handleExport" v-hasPermi="['ems/base:controlCommandLog:export']">导出</el-button>
|
||||
</el-col>
|
||||
<right-toolbar v-model:showSearch="showSearch" :columns="columns" @queryTable="getList" />
|
||||
</el-row>
|
||||
</template>
|
||||
|
||||
<el-table v-loading="loading" border :data="controlCommandLogList" @selection-change="handleSelectionChange">
|
||||
<el-table-column type="selection" width="55" align="center" />
|
||||
<el-table-column v-if="columns[0].visible" label="序号" type="index" width="60" align="center" />
|
||||
<el-table-column v-if="columns[1].visible" label="端点名称" align="center" min-width="180" show-overflow-tooltip>
|
||||
<template #default="scope">
|
||||
{{ resolveEndpointName(scope.row) }}
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column v-if="columns[2].visible" label="点位名称" align="center" min-width="180" show-overflow-tooltip>
|
||||
<template #default="scope">
|
||||
{{ resolveMonitorName(scope.row) }}
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column v-if="columns[3].visible" label="命令类型" align="center" width="110">
|
||||
<template #default="scope">
|
||||
<dict-tag :options="commandTypeOptions" :value="scope.row.commandType" />
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column v-if="columns[4].visible" label="命令内容" align="center" prop="commandContent" min-width="240" show-overflow-tooltip />
|
||||
<el-table-column v-if="columns[5].visible" label="执行状态" align="center" width="110">
|
||||
<template #default="scope">
|
||||
<dict-tag :options="executeStatusOptions" :value="scope.row.executeStatus" />
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column v-if="columns[6].visible" label="响应内容" align="center" prop="responseContent" min-width="240" show-overflow-tooltip />
|
||||
<el-table-column v-if="columns[7].visible" label="创建时间" align="center" prop="createTime" width="180">
|
||||
<template #default="scope">
|
||||
<span>{{ parseTime(scope.row.createTime, '{y}-{m}-{d} {h}:{i}:{s}') }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="操作" align="center" fixed="right" width="110" class-name="small-padding fixed-width">
|
||||
<template #default="scope">
|
||||
<el-tooltip content="修改" placement="top">
|
||||
<el-button link type="primary" icon="Edit" @click="handleUpdate(scope.row)" v-hasPermi="['ems/base:controlCommandLog:edit']" />
|
||||
</el-tooltip>
|
||||
<el-tooltip content="删除" placement="top">
|
||||
<el-button link type="primary" icon="Delete" @click="handleDelete(scope.row)" v-hasPermi="['ems/base:controlCommandLog:remove']" />
|
||||
</el-tooltip>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
|
||||
<pagination v-show="total > 0" :total="total" v-model:page="queryParams.pageNum" v-model:limit="queryParams.pageSize" @pagination="getList" />
|
||||
</el-card>
|
||||
|
||||
<el-dialog :title="dialog.title" v-model="dialog.visible" width="720px" append-to-body>
|
||||
<el-form ref="controlCommandLogFormRef" :model="form" :rules="rules" label-width="96px">
|
||||
<el-row :gutter="16">
|
||||
<el-col :span="12">
|
||||
<el-form-item label="端点名称" prop="endpointId">
|
||||
<el-select v-model="form.endpointId" placeholder="请选择端点" filterable style="width: 100%" @change="handleEndpointChange">
|
||||
<el-option v-for="item in endpointOptions" :key="item.id" :label="item.endpointName" :value="item.id" />
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="点位名称" prop="monitorCode">
|
||||
<el-tree-select
|
||||
v-model="form.monitorCode"
|
||||
:data="monitorTreeOptions"
|
||||
:props="monitorTreeProps"
|
||||
placeholder="请选择点位"
|
||||
filterable
|
||||
check-strictly
|
||||
style="width: 100%"
|
||||
@change="handleMonitorChange"
|
||||
/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
|
||||
<el-row :gutter="16">
|
||||
<el-col :span="12">
|
||||
<el-form-item label="命令类型" prop="commandType">
|
||||
<el-select v-model="form.commandType" placeholder="请选择命令类型" style="width: 100%">
|
||||
<el-option v-for="item in commandTypeOptions" :key="item.value" :label="item.label" :value="item.value" />
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="执行状态" prop="executeStatus">
|
||||
<el-select v-model="form.executeStatus" placeholder="请选择执行状态" style="width: 100%">
|
||||
<el-option v-for="item in executeStatusOptions" :key="item.value" :label="item.label" :value="item.value" />
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
|
||||
<el-form-item label="命令内容" prop="commandContent">
|
||||
<editor v-model="form.commandContent" :min-height="192" />
|
||||
</el-form-item>
|
||||
<el-form-item label="响应内容" prop="responseContent">
|
||||
<editor v-model="form.responseContent" :min-height="192" />
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
<template #footer>
|
||||
<div class="dialog-footer">
|
||||
<el-button :loading="buttonLoading" type="primary" @click="submitForm">确 定</el-button>
|
||||
<el-button @click="cancel">取 消</el-button>
|
||||
</div>
|
||||
</template>
|
||||
</el-dialog>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script setup name="ControlCommandLog" lang="ts">
|
||||
import { listIntegrationEndpointAll } from '@/api/ems/base/integrationEndpoint';
|
||||
import { getMonitorInfoTree } from '@/api/ems/base/baseMonitorInfo';
|
||||
import { listControlCommandLog, getControlCommandLog, delControlCommandLog, addControlCommandLog, updateControlCommandLog } from '@/api/ems/base/controlCommandLog';
|
||||
import type { IntegrationEndpointVO } from '@/api/ems/base/integrationEndpoint/types';
|
||||
import type { ControlCommandLogVO, ControlCommandLogQuery, ControlCommandLogForm } from '@/api/ems/base/controlCommandLog/types';
|
||||
import type { EmsTreeNode } from '@/api/ems/types';
|
||||
|
||||
const { proxy } = getCurrentInstance() as ComponentInternalInstance;
|
||||
|
||||
interface MonitorTreeNode extends EmsTreeNode {
|
||||
label?: string;
|
||||
value?: string | number;
|
||||
children?: MonitorTreeNode[];
|
||||
}
|
||||
|
||||
const commandTypeOptions = [
|
||||
{ label: '读取指令', value: 'READ' },
|
||||
{ label: '写入指令', value: 'WRITE' },
|
||||
{ label: '心跳校验', value: 'PING' },
|
||||
{ label: '复位指令', value: 'RESET' }
|
||||
];
|
||||
|
||||
const executeStatusOptions = [
|
||||
{ label: '待执行', value: 'PENDING' },
|
||||
{ label: '执行中', value: 'PROCESSING' },
|
||||
{ label: '执行成功', value: 'SUCCESS' },
|
||||
{ label: '执行失败', value: 'FAIL' }
|
||||
];
|
||||
|
||||
const endpointOptions = ref<IntegrationEndpointVO[]>([]);
|
||||
const monitorTreeOptions = ref<MonitorTreeNode[]>([]);
|
||||
const monitorNameMap = ref<Record<string, string>>({});
|
||||
|
||||
const controlCommandLogList = ref<ControlCommandLogVO[]>([]);
|
||||
const buttonLoading = ref(false);
|
||||
const loading = ref(true);
|
||||
const showSearch = ref(true);
|
||||
const ids = ref<Array<string | number>>([]);
|
||||
const single = ref(true);
|
||||
const multiple = ref(true);
|
||||
const total = ref(0);
|
||||
|
||||
const columns = ref<FieldOption[]>([
|
||||
{ key: 0, label: '序号', visible: true, children: [] },
|
||||
{ key: 1, label: '端点名称', visible: true, children: [] },
|
||||
{ key: 2, label: '点位名称', visible: true, children: [] },
|
||||
{ key: 3, label: '命令类型', visible: true, children: [] },
|
||||
{ key: 4, label: '命令内容', visible: true, children: [] },
|
||||
{ key: 5, label: '执行状态', visible: true, children: [] },
|
||||
{ key: 6, label: '响应内容', visible: true, children: [] },
|
||||
{ key: 7, label: '创建时间', visible: true, children: [] }
|
||||
]);
|
||||
|
||||
const queryFormRef = ref<ElFormInstance>();
|
||||
const controlCommandLogFormRef = ref<ElFormInstance>();
|
||||
|
||||
const dialog = reactive<DialogOption>({
|
||||
visible: false,
|
||||
title: ''
|
||||
});
|
||||
|
||||
const monitorTreeProps = {
|
||||
label: 'label',
|
||||
value: 'value',
|
||||
children: 'children'
|
||||
};
|
||||
|
||||
const createFormData = (): ControlCommandLogForm => ({
|
||||
id: undefined,
|
||||
endpointId: undefined,
|
||||
endpointName: undefined,
|
||||
monitorCode: undefined,
|
||||
monitorName: undefined,
|
||||
commandType: 'WRITE',
|
||||
commandContent: undefined,
|
||||
executeStatus: 'PENDING',
|
||||
responseContent: undefined
|
||||
});
|
||||
|
||||
const data = reactive<PageData<ControlCommandLogForm, ControlCommandLogQuery>>({
|
||||
form: createFormData(),
|
||||
queryParams: {
|
||||
pageNum: 1,
|
||||
pageSize: 10,
|
||||
endpointId: undefined,
|
||||
monitorCode: undefined,
|
||||
commandType: undefined,
|
||||
executeStatus: undefined,
|
||||
params: {}
|
||||
},
|
||||
rules: {
|
||||
endpointId: [{ required: true, message: '端点不能为空', trigger: 'change' }],
|
||||
monitorCode: [{ required: true, message: '点位不能为空', trigger: 'change' }],
|
||||
commandType: [{ required: true, message: '命令类型不能为空', trigger: 'change' }]
|
||||
}
|
||||
});
|
||||
|
||||
const { queryParams, form, rules } = toRefs(data);
|
||||
|
||||
const normalizeMonitorTree = (nodes: MonitorTreeNode[] = []): MonitorTreeNode[] =>
|
||||
nodes.map((node) => {
|
||||
const children = Array.isArray(node.children) ? normalizeMonitorTree(node.children) : [];
|
||||
const label = node.monitorName || node.label || node.name || node.monitorCode || String(node.value ?? '');
|
||||
const value = node.monitorCode || node.value || node.monitorId || node.objId || node.id;
|
||||
const key = String(value ?? '');
|
||||
if (key) {
|
||||
monitorNameMap.value[key] = label;
|
||||
}
|
||||
return {
|
||||
...node,
|
||||
label,
|
||||
value,
|
||||
children
|
||||
};
|
||||
});
|
||||
|
||||
const resolveEndpointName = (row?: Partial<ControlCommandLogVO> | null) =>
|
||||
row?.endpointName || endpointOptions.value.find((item) => item.id === row?.endpointId)?.endpointName || (row?.endpointId ? String(row.endpointId) : '-');
|
||||
|
||||
const resolveMonitorName = (row?: Partial<ControlCommandLogVO> | Partial<ControlCommandLogForm> | null) =>
|
||||
row?.monitorName || monitorNameMap.value[String(row?.monitorCode || '')] || row?.monitorCode || '-';
|
||||
|
||||
const loadOptions = async () => {
|
||||
const [endpointRes, monitorRes] = await Promise.all([
|
||||
listIntegrationEndpointAll(),
|
||||
getMonitorInfoTree({
|
||||
monitorTypeList: [5, 6, 7, 8, 9, 10]
|
||||
} as any)
|
||||
]);
|
||||
endpointOptions.value = (((endpointRes as any).rows ?? (endpointRes as any).data ?? endpointRes) || []) as IntegrationEndpointVO[];
|
||||
monitorNameMap.value = {};
|
||||
monitorTreeOptions.value = normalizeMonitorTree(((monitorRes as any).data ?? monitorRes ?? []) as MonitorTreeNode[]);
|
||||
};
|
||||
|
||||
const getList = async () => {
|
||||
loading.value = true;
|
||||
try {
|
||||
const res = await listControlCommandLog(queryParams.value);
|
||||
controlCommandLogList.value = ((res as any).rows ?? []) as ControlCommandLogVO[];
|
||||
total.value = Number((res as any).total ?? 0);
|
||||
} finally {
|
||||
loading.value = false;
|
||||
}
|
||||
};
|
||||
|
||||
const cancel = () => {
|
||||
reset();
|
||||
dialog.visible = false;
|
||||
};
|
||||
|
||||
const reset = () => {
|
||||
form.value = createFormData();
|
||||
controlCommandLogFormRef.value?.resetFields();
|
||||
};
|
||||
|
||||
const handleQuery = () => {
|
||||
queryParams.value.pageNum = 1;
|
||||
getList();
|
||||
};
|
||||
|
||||
const resetQuery = () => {
|
||||
queryFormRef.value?.resetFields();
|
||||
handleQuery();
|
||||
};
|
||||
|
||||
const handleSelectionChange = (selection: ControlCommandLogVO[]) => {
|
||||
ids.value = selection.map((item) => item.id as string | number);
|
||||
single.value = selection.length !== 1;
|
||||
multiple.value = !selection.length;
|
||||
};
|
||||
|
||||
const handleAdd = () => {
|
||||
reset();
|
||||
dialog.visible = true;
|
||||
dialog.title = '添加回写命令日志';
|
||||
};
|
||||
|
||||
const handleUpdate = async (row?: ControlCommandLogVO) => {
|
||||
reset();
|
||||
const targetId = row?.id ?? ids.value[0];
|
||||
if (!targetId) {
|
||||
return;
|
||||
}
|
||||
const res = await getControlCommandLog(targetId);
|
||||
form.value = {
|
||||
...createFormData(),
|
||||
...((res as any).data ?? {})
|
||||
};
|
||||
dialog.visible = true;
|
||||
dialog.title = '修改回写命令日志';
|
||||
};
|
||||
|
||||
const handleEndpointChange = (endpointId?: string | number) => {
|
||||
form.value.endpointName = endpointOptions.value.find((item) => item.id === endpointId)?.endpointName;
|
||||
};
|
||||
|
||||
const handleMonitorChange = (monitorCode?: string | number) => {
|
||||
form.value.monitorName = monitorNameMap.value[String(monitorCode || '')];
|
||||
};
|
||||
|
||||
const submitForm = () => {
|
||||
controlCommandLogFormRef.value?.validate(async (valid: boolean) => {
|
||||
if (!valid) {
|
||||
return;
|
||||
}
|
||||
buttonLoading.value = true;
|
||||
try {
|
||||
handleEndpointChange(form.value.endpointId);
|
||||
handleMonitorChange(form.value.monitorCode);
|
||||
if (form.value.id) {
|
||||
await updateControlCommandLog(form.value);
|
||||
} else {
|
||||
await addControlCommandLog(form.value);
|
||||
}
|
||||
proxy?.$modal.msgSuccess('操作成功');
|
||||
dialog.visible = false;
|
||||
await getList();
|
||||
} finally {
|
||||
buttonLoading.value = false;
|
||||
}
|
||||
});
|
||||
};
|
||||
|
||||
const handleDelete = async (row?: ControlCommandLogVO) => {
|
||||
const targetIds = row?.id ?? ids.value;
|
||||
await proxy?.$modal.confirm(`是否确认删除回写命令日志编号为"${targetIds}"的数据项?`);
|
||||
await delControlCommandLog(targetIds);
|
||||
proxy?.$modal.msgSuccess('删除成功');
|
||||
await getList();
|
||||
};
|
||||
|
||||
const handleExport = () => {
|
||||
proxy?.download(
|
||||
'ems/base/controlCommandLog/export',
|
||||
{
|
||||
...queryParams.value
|
||||
},
|
||||
`controlCommandLog_${new Date().getTime()}.xlsx`
|
||||
);
|
||||
};
|
||||
|
||||
onMounted(async () => {
|
||||
await loadOptions();
|
||||
await getList();
|
||||
});
|
||||
</script>
|
||||
File diff suppressed because it is too large
Load Diff
Loading…
Reference in New Issue