refactor(ems): 补充字段

main
zangch@mesnac.com 3 months ago
parent e920722185
commit 95096ef6e6

@ -56,6 +56,7 @@ export function getEmsRecordAlarmRuleTotalCount(): Promise<EmsDetailResponse<num
export function getEmsRecordAlarmRuleList(query?: EmsQuery): Promise<EmsListResponse<EmsRecordAlarmRuleVO>> {
return request({
url: '/ems/record/recordAlarmRule/getEmsRecordAlarmRuleList',
method: 'get'
method: 'get',
params: query
});
}

@ -148,10 +148,11 @@ export interface RecordVibrationInstantQuery extends EmsQuery {
* EMS +
* VO
*/
export interface EmsCrudQuery<T extends EmsEntity = EmsEntity> extends Partial<PageQuery>, Partial<T> {
params?: Record<string, EmsQueryValue>;
[key: string]: unknown;
}
export type EmsCrudQuery<T extends EmsEntity = EmsEntity> = Partial<PageQuery> &
Partial<T> & {
params?: Record<string, EmsQueryValue>;
[key: string]: unknown;
};
/**
* VO
@ -171,6 +172,7 @@ export interface EmsEntity extends BaseEntity {
monitorName?: string;
collectDeviceId?: string;
collectDeviceName?: string;
tenantId?: string;
energyTypeId?: EmsId;
energyTypeName?: string;
energyId?: EmsId;
@ -180,6 +182,24 @@ export interface EmsEntity extends BaseEntity {
manufacturer?: string;
ipAddress?: string;
settingAddress?: string;
protocolType?: string;
protocolVersion?: string;
port?: EmsId;
slaveNo?: EmsId;
serialPort?: string;
baudRate?: EmsId;
dataBits?: EmsId;
stopBits?: EmsId;
parity?: string;
opcEndpointUrl?: string;
opcSecurityPolicy?: string;
opcSecurityMode?: string;
username?: string;
password?: string;
heartbeatTime?: EmsDateValue;
lastOnlineTime?: EmsDateValue;
offlineTimeoutSec?: EmsId;
onlineStatus?: string;
collectTime?: EmsDateValue;
recordTime?: EmsDateValue;
beginTime?: EmsDateValue;
@ -189,6 +209,7 @@ export interface EmsEntity extends BaseEntity {
endDate?: EmsDateValue;
produceDate?: EmsDateValue;
operationTime?: EmsDateValue;
recoverTime?: EmsDateValue;
createdAt?: EmsDateValue;
createdTime?: EmsDateValue;
updatedAt?: EmsDateValue;
@ -197,9 +218,50 @@ export interface EmsEntity extends BaseEntity {
parentName?: string;
orderNum?: number;
ancestors?: string;
pointType?: string;
metricCode?: string;
unitName?: string;
collectChannel?: string;
registerAddress?: string;
registerType?: string;
dataType?: string;
byteOrder?: string;
bitOffset?: EmsId;
nodeId?: string;
deviceSn?: string;
deviceName?: string;
locationCode?: string;
locationName?: string;
cabinetName?: string;
circuitName?: string;
phaseNo?: string;
sensorType?: string;
measurePrecision?: EmsDecimalValue;
rangeMin?: EmsDecimalValue;
rangeMax?: EmsDecimalValue;
alarmEnable?: string;
curveEnable?: string;
displaySort?: EmsId;
isFlag?: string | number | boolean;
isAmmeter?: string | number | boolean;
isEnable?: string | number | boolean;
status?: string | number | boolean;
alarmLevel?: string;
thresholdValue?: EmsDecimalValue;
actualValue?: EmsDecimalValue;
alarmTitle?: string;
alarmContent?: string;
pushStatus?: string;
pushCount?: EmsId;
confirmUserId?: EmsId;
confirmRemark?: string;
alarmUpper?: EmsDecimalValue;
alarmLower?: EmsDecimalValue;
recoverUpper?: EmsDecimalValue;
recoverLower?: EmsDecimalValue;
hysteresis?: EmsDecimalValue;
durationSec?: EmsId;
notifyGroupId?: EmsId;
remark?: string;
remarks?: string;
description?: string;
@ -228,12 +290,31 @@ export interface BaseCollectDeviceInfoVO extends EmsEntity {
collectDeviceName?: string;
energyTypeId?: EmsId;
energyTypeName?: string;
tenantId?: string;
model?: string;
manufacturer?: string;
ipAddress?: string;
produceDate?: EmsDateValue;
settingAddress?: string;
isFlag?: string;
isFlag?: string | number;
protocolType?: string;
protocolVersion?: string;
port?: EmsId;
slaveNo?: EmsId;
serialPort?: string;
baudRate?: EmsId;
dataBits?: EmsId;
stopBits?: EmsId;
parity?: string;
opcEndpointUrl?: string;
opcSecurityPolicy?: string;
opcSecurityMode?: string;
username?: string;
password?: string;
heartbeatTime?: EmsDateValue;
lastOnlineTime?: EmsDateValue;
offlineTimeoutSec?: EmsId;
onlineStatus?: string;
}
export interface BaseEnergyTypeVO extends EmsEntity {
@ -264,6 +345,7 @@ export interface BaseMonitorInfoVO extends EmsEntity {
monitorType?: EmsId;
monitorStatus?: EmsId;
collectDeviceId?: string;
collectDeviceName?: string;
grade?: EmsId;
meterTypeId?: string;
correctValue?: EmsDecimalValue;
@ -280,6 +362,30 @@ export interface BaseMonitorInfoVO extends EmsEntity {
orderNum?: number;
ancestors?: string;
monitorTypeList?: Array<EmsId>;
tenantId?: string;
pointType?: string;
metricCode?: string;
unitName?: string;
collectChannel?: string;
registerAddress?: string;
registerType?: string;
dataType?: string;
byteOrder?: string;
bitOffset?: EmsId;
nodeId?: string;
deviceSn?: string;
locationCode?: string;
locationName?: string;
cabinetName?: string;
circuitName?: string;
phaseNo?: string;
sensorType?: string;
measurePrecision?: EmsDecimalValue;
rangeMin?: EmsDecimalValue;
rangeMax?: EmsDecimalValue;
alarmEnable?: string;
curveEnable?: string;
displaySort?: EmsId;
children?: BaseMonitorInfoVO[];
}
@ -443,6 +549,18 @@ export interface EmsRecordAlarmDataVO extends EmsEntity {
cause?: string;
notifyUser?: string;
deviceName?: string;
tenantId?: string;
metricCode?: string;
alarmLevel?: string;
thresholdValue?: EmsDecimalValue;
actualValue?: EmsDecimalValue;
alarmTitle?: string;
alarmContent?: string;
recoverTime?: EmsDateValue;
pushStatus?: string;
pushCount?: EmsId;
confirmUserId?: EmsId;
confirmRemark?: string;
}
export interface EmsRecordAlarmRuleVO extends EmsEntity {
@ -461,6 +579,17 @@ export interface EmsRecordAlarmRuleVO extends EmsEntity {
notifyUser?: string;
cause?: string;
nickName?: string;
tenantId?: string;
metricCode?: string;
alarmUpper?: EmsDecimalValue;
alarmLower?: EmsDecimalValue;
recoverUpper?: EmsDecimalValue;
recoverLower?: EmsDecimalValue;
hysteresis?: EmsDecimalValue;
durationSec?: EmsId;
alarmLevel?: string;
notifyGroupId?: EmsId;
isEnable?: string;
}
export interface EmsRecordDnbInstantVO extends EmsEntity {

@ -181,7 +181,7 @@ import {
} from '@/api/ems/base/baseCollectDeviceInfo';
import { getBaseEnergyTypeList } from '@/api/ems/base/baseEnergyType';
import { useDict } from '@/utils/dict';
import type { EmsId } from '@/api/ems/types';
import type { EmsDateValue, EmsId } from '@/api/ems/types';
defineOptions({
name: 'BaseCollectDeviceInfo'
@ -192,13 +192,33 @@ interface BaseCollectDeviceInfoVO extends BaseEntity {
collectDeviceId?: string | null;
collectDeviceName?: string | null;
energyTypeId?: EmsId | null;
energyTypeName?: string | null;
model?: string | null;
manufacturer?: string | null;
ipAddress?: string | null;
produceDate?: string | null;
produceDate?: EmsDateValue | null;
settingAddress?: string | null;
isFlag?: string | number | null;
remark?: string | null;
tenantId?: string | null;
protocolType?: string | null;
protocolVersion?: string | null;
port?: EmsId | null;
slaveNo?: EmsId | null;
serialPort?: string | null;
baudRate?: EmsId | null;
dataBits?: EmsId | null;
stopBits?: EmsId | null;
parity?: string | null;
opcEndpointUrl?: string | null;
opcSecurityPolicy?: string | null;
opcSecurityMode?: string | null;
username?: string | null;
password?: string | null;
heartbeatTime?: EmsDateValue | null;
lastOnlineTime?: EmsDateValue | null;
offlineTimeoutSec?: EmsId | null;
onlineStatus?: string | null;
}
interface BaseCollectDeviceInfoQuery extends PageQuery {
@ -208,9 +228,11 @@ interface BaseCollectDeviceInfoQuery extends PageQuery {
model?: string | null;
manufacturer?: string | null;
ipAddress?: string | null;
produceDate?: string | null;
produceDate?: EmsDateValue | null;
settingAddress?: string | null;
isFlag?: string | number | null;
protocolType?: string | null;
onlineStatus?: string | null;
}
interface BaseCollectDeviceInfoForm extends BaseEntity {
@ -218,13 +240,33 @@ interface BaseCollectDeviceInfoForm extends BaseEntity {
collectDeviceId?: string | null;
collectDeviceName?: string | null;
energyTypeId?: EmsId | null;
energyTypeName?: string | null;
model?: string | null;
manufacturer?: string | null;
ipAddress?: string | null;
produceDate?: string | null;
produceDate?: EmsDateValue | null;
settingAddress?: string | null;
isFlag?: string | number | null;
remark?: string | null;
tenantId?: string | null;
protocolType?: string | null;
protocolVersion?: string | null;
port?: EmsId | null;
slaveNo?: EmsId | null;
serialPort?: string | null;
baudRate?: EmsId | null;
dataBits?: EmsId | null;
stopBits?: EmsId | null;
parity?: string | null;
opcEndpointUrl?: string | null;
opcSecurityPolicy?: string | null;
opcSecurityMode?: string | null;
username?: string | null;
password?: string | null;
heartbeatTime?: EmsDateValue | null;
lastOnlineTime?: EmsDateValue | null;
offlineTimeoutSec?: EmsId | null;
onlineStatus?: string | null;
}
interface EnergyTypeOption {
@ -253,7 +295,7 @@ const title = ref('');
const open = ref(false);
const energyTypeList = ref<EnergyTypeOption[]>([]);
const queryParams = ref<BaseCollectDeviceInfoQuery>({
const createQueryParams = (): BaseCollectDeviceInfoQuery => ({
pageNum: 1,
pageSize: 10,
collectDeviceId: null,
@ -264,14 +306,20 @@ const queryParams = ref<BaseCollectDeviceInfoQuery>({
ipAddress: null,
produceDate: null,
settingAddress: null,
isFlag: null
isFlag: null,
protocolType: null,
onlineStatus: null
});
// 使
const queryParams = ref<BaseCollectDeviceInfoQuery>(createQueryParams());
const createFormData = (): BaseCollectDeviceInfoForm => ({
objId: undefined,
collectDeviceId: null,
collectDeviceName: null,
energyTypeId: null,
energyTypeName: null,
model: null,
manufacturer: null,
ipAddress: null,
@ -282,7 +330,27 @@ const createFormData = (): BaseCollectDeviceInfoForm => ({
createTime: null,
updateBy: null,
updateTime: null,
remark: null
remark: null,
tenantId: null,
//
protocolType: null,
protocolVersion: null,
port: null,
slaveNo: null,
serialPort: null,
baudRate: null,
dataBits: null,
stopBits: null,
parity: null,
opcEndpointUrl: null,
opcSecurityPolicy: null,
opcSecurityMode: null,
username: null,
password: null,
heartbeatTime: null,
lastOnlineTime: null,
offlineTimeoutSec: null,
onlineStatus: null
});
const form = ref<BaseCollectDeviceInfoForm>(createFormData());
@ -371,7 +439,10 @@ const handleUpdate = async (row?: BaseCollectDeviceInfoVO) => {
return;
}
const response = await getBaseCollectDeviceInfo(objId);
Object.assign(form.value, response.data);
form.value = {
...createFormData(),
...(response.data ?? {})
};
open.value = true;
title.value = '修改采集设备信息';
};

@ -52,7 +52,7 @@
<el-table-column label="计量设备编号" align="center" prop="monitorCode" v-if="columns[2].visible" />
<el-table-column label="计量设备名称" align="center" prop="monitorName" v-if="columns[3].visible" />
<el-table-column label="计量设备位置" align="center" prop="monitorAddr" v-if="columns[4].visible" />
<el-table-column label="采集设备编号" align="center" prop="collectDeviceId" v-if="columns[7].visible" />
<el-table-column label="采集设备名称" align="center" prop="collectDeviceName" v-if="columns[7].visible" />
<el-table-column label="等级" align="center" prop="grade" v-if="columns[9].visible" />
<el-table-column label="传感器仪表" align="center" prop="meterTypeId" v-if="columns[10].visible" />
<el-table-column label="修正值" align="center" prop="correctValue" v-if="columns[11].visible" />
@ -200,16 +200,60 @@ const dict = reactive({
const formRef = ref<ElFormInstance>();
const queryFormRef = ref<ElFormInstance>();
const createQueryParams = () => ({
parentId: null,
parentName: null,
monitorCode: null,
monitorName: null,
monitorAddr: null,
monitorType: 2,
monitorTypeList: null,
monitorStatus: null,
collectDeviceId: null,
collectDeviceName: null,
energyName: null,
ancestors: null,
grade: null,
meterTypeId: null,
correctValue: null,
pt: null,
ct: null,
isAmmeter: null,
isKeyMonitor: null,
isCircuit: null,
createBy: null,
createTime: null,
updateBy: null,
updateTime: null,
publicShareType: null,
monitorHierarchy: null,
pointType: null,
metricCode: null,
unitName: null,
orderNum: null,
locationName: null,
cabinetName: null,
circuitName: null,
phaseNo: null,
sensorType: null,
deviceName: null,
alarmEnable: null,
curveEnable: null
});
// /
const createFormData = () => ({
objId: null,
parentId: null,
parentName: null,
monitorCode: null,
monitorName: null,
monitorAddr: null,
monitorType: '2',
monitorTypeList: null,
monitorStatus: 0,
collectDeviceId: null,
collectDeviceName: null,
ancestors: null,
grade: null,
meterTypeId: null,
@ -224,7 +268,34 @@ const createFormData = () => ({
updateBy: null,
updateTime: null,
publicShareType: null,
monitorHierarchy: null
monitorHierarchy: null,
tenantId: null,
energyName: null,
orderNum: null,
pointType: null,
metricCode: null,
unitName: null,
collectChannel: null,
registerAddress: null,
registerType: null,
dataType: null,
byteOrder: null,
bitOffset: null,
nodeId: null,
deviceSn: null,
deviceName: null,
locationCode: null,
locationName: null,
cabinetName: null,
circuitName: null,
phaseNo: null,
sensorType: null,
measurePrecision: null,
rangeMin: null,
rangeMax: null,
alarmEnable: null,
curveEnable: null,
displaySort: null
});
// EMS
@ -246,30 +317,8 @@ const state = reactive({
//
refreshTable: true,
//
queryParams: {
parentId: null,
monitorCode: null,
monitorName: null,
monitorAddr: null,
monitorType: 2,
monitorStatus: null,
collectDeviceId: null,
ancestors: null,
grade: null,
meterTypeId: null,
correctValue: null,
pt: null,
ct: null,
isAmmeter: null,
isKeyMonitor: null,
isCircuit: null,
createBy: null,
createTime: null,
updateBy: null,
updateTime: null,
publicShareType: null,
monitorHierarchy: null
},
// state
queryParams: createQueryParams(),
//
form: createFormData(),
//
@ -334,7 +383,7 @@ const state = reactive({
},
{
key: 7,
label: `采集设备编号`,
label: `采集设备名称`,
visible: true
},
{
@ -436,7 +485,8 @@ const {
const getList = () => {
loading.value = true;
listBaseMonitorInfo(queryParams.value).then((response) => {
baseMonitorInfoList.value = handleTree(response.data, 'objId', 'parentId');
const source = response.rows ?? response.data ?? [];
baseMonitorInfoList.value = handleTree(source, 'objId', 'parentId');
loading.value = false;
});
};
@ -455,12 +505,13 @@ const normalizer = (node) => {
const getTreeselect = () => {
listBaseMonitorInfo().then((response) => {
baseMonitorInfoOptions.value = [];
const source = response.rows ?? response.data ?? [];
const data = {
objId: 0,
monitorName: '顶级节点',
children: []
};
data.children = handleTree(response.data, 'objId', 'parentId');
data.children = handleTree(source, 'objId', 'parentId');
baseMonitorInfoOptions.value.push(data);
});
};
@ -471,31 +522,7 @@ const cancel = () => {
};
const reset = () => {
form.value = {
objId: null,
parentId: null,
monitorCode: null,
monitorName: null,
monitorAddr: null,
monitorType: '2',
monitorStatus: 0,
collectDeviceId: null,
ancestors: null,
grade: null,
meterTypeId: null,
correctValue: null,
pt: 1,
ct: 1,
isAmmeter: '1',
isKeyMonitor: null,
isCircuit: null,
createBy: null,
createTime: null,
updateBy: null,
updateTime: null,
publicShareType: null,
monitorHierarchy: null
};
form.value = createFormData();
formRef.value?.resetFields();
};
@ -535,7 +562,10 @@ const handleUpdate = (row) => {
form.value.parentId = row.parentId;
}
getBaseMonitorInfo(row.objId).then((response) => {
form.value = response.data;
form.value = {
...createFormData(),
...(response.data ?? {})
};
open.value = true;
title.value = '修改计量设备信息';
});
@ -576,7 +606,7 @@ const handleDelete = (row) => {
onMounted(() => {
getCollectDeviceInfo({}).then((response) => {
collectDeviceList.value = response.data;
collectDeviceList.value = response.rows ?? response.data ?? [];
});
getList();
});

@ -22,6 +22,12 @@
<el-option v-for="dict in dict.type.monitor_status" :key="dict.value" :label="dict.label" :value="dict.value" />
</el-select>
</el-form-item>
<el-form-item label="点位类型" prop="pointType">
<el-input v-model="queryParams.pointType" placeholder="请输入点位类型" clearable @keyup.enter="handleQuery" />
</el-form-item>
<el-form-item label="安装位置" prop="locationName">
<el-input v-model="queryParams.locationName" placeholder="请输入安装位置" clearable @keyup.enter="handleQuery" />
</el-form-item>
<!-- <el-form-item label="采集设备编号" prop="collectDeviceId">-->
<!-- <el-input v-model="queryParams.collectDeviceId" placeholder="请输入采集设备编号" clearable-->
<!-- @keyup.enter="handleQuery" />-->
@ -72,7 +78,16 @@
<dict-tag :options="dict.type.monitor_status" :value="scope.row.monitorStatus" />
</template>
</el-table-column>
<el-table-column label="采集设备编号" align="center" prop="collectDeviceId" v-if="columns[6].visible" />
<el-table-column label="采集设备名称" align="center" prop="collectDeviceName" v-if="columns[6].visible" />
<el-table-column label="点位类型" align="center" prop="pointType" v-if="columns[19].visible" />
<el-table-column label="单位" align="center" prop="unitName" v-if="columns[20].visible" />
<el-table-column label="安装位置" align="center" prop="locationName" v-if="columns[21].visible" />
<el-table-column label="传感器类型" align="center" prop="sensorType" v-if="columns[22].visible" />
<el-table-column label="启用报警" align="center" prop="alarmEnable" v-if="columns[23].visible">
<template #default="scope">
<dict-tag :options="dict.type.is_flag" :value="scope.row.alarmEnable" />
</template>
</el-table-column>
<el-table-column label="等级" align="center" prop="grade" v-if="columns[7].visible" />
<el-table-column label="传感器仪表" align="center" prop="meterTypeId" v-if="columns[8].visible" />
<el-table-column label="修正值" align="center" prop="correctValue" v-if="columns[9].visible" />
@ -146,8 +161,61 @@
<el-radio v-for="dict in dict.type.monitor_status" :key="dict.value" :label="parseInt(dict.value)">{{ dict.label }}</el-radio>
</el-radio-group>
</el-form-item>
<el-form-item label="采集设备编号" prop="collectDeviceId">
<el-input v-model="form.collectDeviceId" placeholder="请输入采集设备编号" />
<el-form-item label="采集设备" prop="collectDeviceId">
<el-select v-model="form.collectDeviceId" placeholder="请选择采集设备">
<el-option
v-for="item in collectDeviceList"
:key="item.collectDeviceId"
:label="item.collectDeviceName"
:value="item.collectDeviceId"
></el-option>
</el-select>
</el-form-item>
<el-form-item label="点位类型" prop="pointType">
<el-input v-model="form.pointType" placeholder="请输入点位类型" />
</el-form-item>
<el-form-item label="单位" prop="unitName">
<el-input v-model="form.unitName" placeholder="请输入单位" />
</el-form-item>
<el-form-item label="设备序列号" prop="deviceSn">
<el-input v-model="form.deviceSn" placeholder="请输入设备序列号" />
</el-form-item>
<el-form-item label="安装位置" prop="locationName">
<el-input v-model="form.locationName" placeholder="请输入安装位置" />
</el-form-item>
<el-form-item label="所属柜体" prop="cabinetName">
<el-input v-model="form.cabinetName" placeholder="请输入所属柜体" />
</el-form-item>
<el-form-item label="所属回路" prop="circuitName">
<el-input v-model="form.circuitName" placeholder="请输入所属回路" />
</el-form-item>
<el-form-item label="相别" prop="phaseNo">
<el-input v-model="form.phaseNo" placeholder="请输入相别" />
</el-form-item>
<el-form-item label="传感器类型" prop="sensorType">
<el-input v-model="form.sensorType" placeholder="请输入传感器类型" />
</el-form-item>
<el-form-item label="测量精度" prop="measurePrecision">
<el-input-number v-model="form.measurePrecision" placeholder="请输入测量精度" :precision="4" />
</el-form-item>
<el-form-item label="量程下限" prop="rangeMin">
<el-input-number v-model="form.rangeMin" placeholder="请输入量程下限" :precision="4" />
</el-form-item>
<el-form-item label="量程上限" prop="rangeMax">
<el-input-number v-model="form.rangeMax" placeholder="请输入量程上限" :precision="4" />
</el-form-item>
<el-form-item label="启用报警" prop="alarmEnable">
<el-radio-group v-model="form.alarmEnable">
<el-radio v-for="dict in dict.type.is_flag" :key="dict.value" :label="dict.value">{{ dict.label }}</el-radio>
</el-radio-group>
</el-form-item>
<el-form-item label="启用曲线" prop="curveEnable">
<el-radio-group v-model="form.curveEnable">
<el-radio v-for="dict in dict.type.is_flag" :key="dict.value" :label="dict.value">{{ dict.label }}</el-radio>
</el-radio-group>
</el-form-item>
<el-form-item label="展示排序" prop="displaySort">
<el-input-number v-model="form.displaySort" placeholder="请输入展示排序" :precision="0" />
</el-form-item>
<!-- <el-form-item label="等级" prop="grade">-->
<!-- <el-input v-model="form.grade" placeholder="请输入等级" />-->
@ -240,7 +308,18 @@
<dict-tag :options="dict.type.monitor_field" :value="scope.row.monitorField" />
</template>
</el-table-column>
<el-table-column label="触发阈值量" align="center" prop="triggerValue" />
<el-table-column label="告警上限" align="center" prop="alarmUpper" />
<el-table-column label="告警下限" align="center" prop="alarmLower" />
<el-table-column label="恢复上限" align="center" prop="recoverUpper" />
<el-table-column label="恢复下限" align="center" prop="recoverLower" />
<el-table-column label="回差" align="center" prop="hysteresis" />
<el-table-column label="持续秒数" align="center" prop="durationSec" />
<el-table-column label="告警级别" align="center" prop="alarmLevel" />
<el-table-column label="启用状态" align="center" prop="isEnable">
<template #default="scope">
<dict-tag :options="dict.type.is_flag" :value="scope.row.isEnable" />
</template>
</el-table-column>
<el-table-column label="备注" align="center" prop="cause" show-overflow-tooltip />
<el-table-column label="操作" align="center" width="120">
<template #default="scope">
@ -275,8 +354,31 @@
<el-option v-for="dict in dict.type.monitor_field" :key="dict.value" :label="dict.label" :value="dict.value" />
</el-select>
</el-form-item>
<el-form-item label="触发阈值量" prop="triggerValue">
<el-input-number v-model="thresholdForm.triggerValue" placeholder="请输入触发阈值量" :precision="2" />
<el-form-item label="告警上限" prop="alarmUpper">
<el-input-number v-model="thresholdForm.alarmUpper" placeholder="请输入告警上限" :precision="4" />
</el-form-item>
<el-form-item label="告警下限" prop="alarmLower">
<el-input-number v-model="thresholdForm.alarmLower" placeholder="请输入告警下限" :precision="4" />
</el-form-item>
<el-form-item label="恢复上限" prop="recoverUpper">
<el-input-number v-model="thresholdForm.recoverUpper" placeholder="请输入恢复上限" :precision="4" />
</el-form-item>
<el-form-item label="恢复下限" prop="recoverLower">
<el-input-number v-model="thresholdForm.recoverLower" placeholder="请输入恢复下限" :precision="4" />
</el-form-item>
<el-form-item label="回差" prop="hysteresis">
<el-input-number v-model="thresholdForm.hysteresis" placeholder="请输入回差" :precision="4" />
</el-form-item>
<el-form-item label="持续秒数" prop="durationSec">
<el-input-number v-model="thresholdForm.durationSec" placeholder="请输入持续秒数" :precision="0" />
</el-form-item>
<el-form-item label="告警级别" prop="alarmLevel">
<el-input v-model="thresholdForm.alarmLevel" placeholder="请输入告警级别" />
</el-form-item>
<el-form-item label="启用状态" prop="isEnable">
<el-radio-group v-model="thresholdForm.isEnable">
<el-radio v-for="dict in dict.type.is_flag" :key="dict.value" :label="dict.value">{{ dict.label }}</el-radio>
</el-radio-group>
</el-form-item>
<el-form-item label="备注" prop="cause">
<el-input v-model="thresholdForm.cause" type="textarea" placeholder="请输入备注" />
@ -310,17 +412,18 @@ import {
} from '@/api/ems/record/recordAlarmRule';
import EmsTreeSelect from '@/views/ems/components/EmsTreeSelect.vue';
import { getBaseEnergyTypeList } from '@/api/ems/base/baseEnergyType';
import { getCollectDeviceInfo } from '@/api/ems/base/baseCollectDeviceInfo';
import { handleTree } from '@/utils/ruoyi';
defineOptions({
name: 'BaseMonitorInfo',
dicts: ['is_ammeter', 'monitor_status', 'monitor_type', 'trigger_rule', 'monitor_field']
dicts: ['is_ammeter', 'monitor_status', 'monitor_type', 'trigger_rule', 'monitor_field', 'is_flag']
});
const { proxy } = getCurrentInstance() as ComponentInternalInstance;
const dict = reactive({
type: useDict('is_ammeter', 'monitor_status', 'monitor_type', 'trigger_rule', 'monitor_field')
type: useDict('is_ammeter', 'monitor_status', 'monitor_type', 'trigger_rule', 'monitor_field', 'is_flag')
});
const formRef = ref<ElFormInstance>();
@ -352,7 +455,31 @@ const createFormData = () => ({
updateBy: null,
updateTime: null,
publicShareType: null,
monitorHierarchy: null
monitorHierarchy: null,
tenantId: null,
pointType: null,
metricCode: null,
unitName: null,
collectChannel: null,
registerAddress: null,
registerType: null,
dataType: null,
byteOrder: null,
bitOffset: null,
nodeId: null,
deviceSn: null,
locationCode: null,
locationName: null,
cabinetName: null,
circuitName: null,
phaseNo: null,
sensorType: null,
measurePrecision: null,
rangeMin: null,
rangeMax: null,
alarmEnable: null,
curveEnable: null,
displaySort: null
});
// EMS
@ -373,7 +500,7 @@ const state = reactive({
isExpandAll: true,
//
refreshTable: true,
//
//
queryParams: {
parentId: null,
monitorCode: null,
@ -397,7 +524,31 @@ const state = reactive({
updateBy: null,
updateTime: null,
publicShareType: null,
monitorHierarchy: null
monitorHierarchy: null,
tenantId: null,
pointType: null,
metricCode: null,
unitName: null,
collectChannel: null,
registerAddress: null,
registerType: null,
dataType: null,
byteOrder: null,
bitOffset: null,
nodeId: null,
deviceSn: null,
locationCode: null,
locationName: null,
cabinetName: null,
circuitName: null,
phaseNo: null,
sensorType: null,
measurePrecision: null,
rangeMin: null,
rangeMax: null,
alarmEnable: null,
curveEnable: null,
displaySort: null
},
//
form: createFormData(),
@ -470,7 +621,7 @@ const state = reactive({
},
{
key: 6,
label: `采集设备编号`,
label: `采集设备名称`,
visible: false
},
{
@ -534,10 +685,37 @@ const state = reactive({
key: 18,
label: `表具层级`,
visible: false
},
{
key: 19,
label: `点位类型`,
visible: true
},
{
key: 20,
label: `单位`,
visible: true
},
{
key: 21,
label: `安装位置`,
visible: true
},
{
key: 22,
label: `传感器类型`,
visible: true
},
{
key: 23,
label: `启用报警`,
visible: true
}
],
//
energyTypeList: [],
// ID
collectDeviceList: [],
//
thresholdOpen: false,
thresholdTitle: '',
@ -563,10 +741,10 @@ const state = reactive({
trigger: 'change'
}
],
triggerValue: [
alarmUpper: [
{
required: true,
message: '触发阈值量不能为空',
message: '告警上限不能为空',
trigger: 'blur'
}
]
@ -579,6 +757,7 @@ const {
columns,
currentDevice,
energyTypeList,
collectDeviceList,
form,
isExpandAll,
loading,
@ -609,7 +788,8 @@ const getMonitorTypeLabel = (monitorType) => {
const getList = () => {
loading.value = true;
listBaseMonitorInfo(queryParams.value).then((response) => {
baseMonitorInfoList.value = handleTree(response.data, 'objId', 'parentId');
const source = response.rows ?? response.data ?? [];
baseMonitorInfoList.value = handleTree(source, 'objId', 'parentId');
loading.value = false;
});
};
@ -633,7 +813,7 @@ const getTreeselect = () => {
monitorName: '顶级节点',
children: []
};
data.children = handleTree(response.data, 'objId', 'parentId');
data.children = handleTree(response.rows ?? response.data ?? [], 'objId', 'parentId');
baseMonitorInfoOptions.value.push(data);
});
};
@ -644,32 +824,8 @@ const cancel = () => {
};
const reset = () => {
form.value = {
objId: null,
parentId: null,
monitorCode: null,
monitorName: null,
energyType: null,
monitorAddr: null,
monitorType: null,
monitorStatus: null,
collectDeviceId: null,
ancestors: null,
grade: null,
meterTypeId: null,
correctValue: null,
pt: null,
ct: null,
isAmmeter: null,
isKeyMonitor: null,
isCircuit: null,
createBy: null,
createTime: null,
updateBy: null,
updateTime: null,
publicShareType: null,
monitorHierarchy: null
};
//
form.value = createFormData();
formRef.value?.resetFields();
};
@ -709,7 +865,10 @@ const handleUpdate = (row) => {
form.value.parentId = row.parentId;
}
getBaseMonitorInfo(row.objId).then((response) => {
form.value = response.data;
form.value = {
...createFormData(),
...(response.data ?? {})
};
open.value = true;
title.value = '修改计量设备信息';
});
@ -778,6 +937,8 @@ const getThresholdRuleList = () => {
const handleAddThreshold = () => {
resetThresholdForm();
thresholdForm.value.monitorId = currentDevice.value.monitorCode;
//
thresholdForm.value.tenantId = currentDevice.value.tenantId ?? null;
thresholdFormTitle.value = '新增阈值规则';
thresholdFormOpen.value = true;
};
@ -811,6 +972,17 @@ const submitThresholdForm = () => {
if (valid) {
//
thresholdForm.value.monitorId = currentDevice.value.monitorCode;
//
thresholdForm.value.tenantId = currentDevice.value.tenantId ?? thresholdForm.value.tenantId;
thresholdForm.value.metricCode = currentDevice.value.metricCode ?? thresholdForm.value.metricCode;
thresholdForm.value.energyType = currentDevice.value.monitorType ?? thresholdForm.value.energyType;
if (thresholdForm.value.triggerRule === 0 && thresholdForm.value.alarmUpper != null) {
thresholdForm.value.triggerValue = thresholdForm.value.alarmUpper;
}
if (thresholdForm.value.triggerRule === 1 && thresholdForm.value.alarmLower != null) {
thresholdForm.value.triggerValue = thresholdForm.value.alarmLower;
}
thresholdForm.value.isEnable = thresholdForm.value.isEnable ?? '0';
if (thresholdForm.value.objId != null) {
updateRecordAlarmRule(thresholdForm.value).then((response) => {
proxy?.$modal.msgSuccess('修改成功');
@ -841,7 +1013,18 @@ const resetThresholdForm = () => {
timeRange: null,
triggerValue: null,
notifyUser: null,
cause: null
cause: null,
tenantId: null,
metricCode: null,
alarmUpper: null,
alarmLower: null,
recoverUpper: null,
recoverLower: null,
hysteresis: null,
durationSec: null,
alarmLevel: null,
notifyGroupId: null,
isEnable: '0'
};
nextTick(() => {
if (thresholdFormRef.value) {
@ -854,6 +1037,9 @@ onMounted(() => {
getBaseEnergyTypeList({}).then((response) => {
energyTypeList.value = response.data;
});
getCollectDeviceInfo({}).then((response) => {
collectDeviceList.value = response.rows || response.data || [];
});
getList();
});
</script>

@ -15,8 +15,14 @@
<el-option v-for="dict in dict.type.monitor_status" :key="dict.value" :label="dict.label" :value="dict.value" />
</el-select>
</el-form-item>
<el-form-item label="采集设备编号" prop="collectDeviceId">
<el-input v-model="queryParams.collectDeviceId" placeholder="请输入采集设备编号" clearable @keyup.enter="handleQuery" />
<el-form-item label="采集设备名称" prop="collectDeviceName">
<el-input v-model="queryParams.collectDeviceName" placeholder="请输入采集设备名称" clearable @keyup.enter="handleQuery" />
</el-form-item>
<el-form-item label="点位类型" prop="pointType">
<el-input v-model="queryParams.pointType" placeholder="请输入点位类型" clearable @keyup.enter="handleQuery" />
</el-form-item>
<el-form-item label="安装位置" prop="locationName">
<el-input v-model="queryParams.locationName" placeholder="请输入安装位置" clearable @keyup.enter="handleQuery" />
</el-form-item>
<el-form-item label="是否虚拟" prop="isAmmeter">
<el-select v-model="queryParams.isAmmeter" placeholder="请选择是否虚拟" clearable>
@ -58,7 +64,16 @@
<dict-tag :options="dict.type.monitor_status" :value="scope.row.monitorStatus" />
</template>
</el-table-column>
<el-table-column label="采集设备编号" align="center" prop="collectDeviceId" v-if="columns[7].visible" />
<el-table-column label="采集设备名称" align="center" prop="collectDeviceName" v-if="columns[7].visible" />
<el-table-column label="点位类型" align="center" prop="pointType" v-if="columns[23].visible" />
<el-table-column label="单位" align="center" prop="unitName" v-if="columns[24].visible" />
<el-table-column label="安装位置" align="center" prop="locationName" v-if="columns[25].visible" />
<el-table-column label="传感器类型" align="center" prop="sensorType" v-if="columns[26].visible" />
<el-table-column label="启用报警" align="center" prop="alarmEnable" v-if="columns[27].visible">
<template #default="scope">
<dict-tag :options="dict.type.is_flag" :value="scope.row.alarmEnable" />
</template>
</el-table-column>
<el-table-column label="等级" align="center" prop="grade" v-if="columns[9].visible" />
<el-table-column label="传感器仪表" align="center" prop="meterTypeId" v-if="columns[10].visible" />
<el-table-column label="修正值" align="center" prop="correctValue" v-if="columns[11].visible" />
@ -118,8 +133,61 @@
<el-radio v-for="dict in dict.type.monitor_status" :key="dict.value" :label="parseInt(dict.value)">{{ dict.label }}</el-radio>
</el-radio-group>
</el-form-item>
<el-form-item label="采集设备编号" prop="collectDeviceId">
<el-input v-model="form.collectDeviceId" placeholder="请输入采集设备编号" />
<el-form-item label="采集设备" prop="collectDeviceId">
<el-select v-model="form.collectDeviceId" placeholder="请选择采集设备">
<el-option
v-for="item in collectDeviceList"
:key="item.collectDeviceId"
:label="item.collectDeviceName"
:value="item.collectDeviceId"
></el-option>
</el-select>
</el-form-item>
<el-form-item label="点位类型" prop="pointType">
<el-input v-model="form.pointType" placeholder="请输入点位类型" />
</el-form-item>
<el-form-item label="单位" prop="unitName">
<el-input v-model="form.unitName" placeholder="请输入单位" />
</el-form-item>
<el-form-item label="设备序列号" prop="deviceSn">
<el-input v-model="form.deviceSn" placeholder="请输入设备序列号" />
</el-form-item>
<el-form-item label="安装位置" prop="locationName">
<el-input v-model="form.locationName" placeholder="请输入安装位置" />
</el-form-item>
<el-form-item label="所属柜体" prop="cabinetName">
<el-input v-model="form.cabinetName" placeholder="请输入所属柜体" />
</el-form-item>
<el-form-item label="所属回路" prop="circuitName">
<el-input v-model="form.circuitName" placeholder="请输入所属回路" />
</el-form-item>
<el-form-item label="相别" prop="phaseNo">
<el-input v-model="form.phaseNo" placeholder="请输入相别" />
</el-form-item>
<el-form-item label="传感器类型" prop="sensorType">
<el-input v-model="form.sensorType" placeholder="请输入传感器类型" />
</el-form-item>
<el-form-item label="测量精度" prop="measurePrecision">
<el-input-number v-model="form.measurePrecision" placeholder="请输入测量精度" :precision="4" />
</el-form-item>
<el-form-item label="量程下限" prop="rangeMin">
<el-input-number v-model="form.rangeMin" placeholder="请输入量程下限" :precision="4" />
</el-form-item>
<el-form-item label="量程上限" prop="rangeMax">
<el-input-number v-model="form.rangeMax" placeholder="请输入量程上限" :precision="4" />
</el-form-item>
<el-form-item label="启用报警" prop="alarmEnable">
<el-radio-group v-model="form.alarmEnable">
<el-radio v-for="dict in dict.type.is_flag" :key="dict.value" :label="dict.value">{{ dict.label }}</el-radio>
</el-radio-group>
</el-form-item>
<el-form-item label="启用曲线" prop="curveEnable">
<el-radio-group v-model="form.curveEnable">
<el-radio v-for="dict in dict.type.is_flag" :key="dict.value" :label="dict.value">{{ dict.label }}</el-radio>
</el-radio-group>
</el-form-item>
<el-form-item label="展示排序" prop="displaySort">
<el-input-number v-model="form.displaySort" placeholder="请输入展示排序" :precision="0" />
</el-form-item>
<el-form-item label="等级" prop="grade">
<el-input v-model="form.grade" placeholder="请输入等级" />
@ -167,18 +235,19 @@ import {
addBaseMonitorInfo,
updateBaseMonitorInfo
} from '@/api/ems/base/baseMonitorInfo';
import { getCollectDeviceInfo } from '@/api/ems/base/baseCollectDeviceInfo';
import EmsTreeSelect from '@/views/ems/components/EmsTreeSelect.vue';
import { handleTree } from '@/utils/ruoyi';
defineOptions({
name: 'BaseMonitorInfo',
dicts: ['is_ammeter', 'monitor_status']
dicts: ['is_ammeter', 'monitor_status', 'is_flag']
});
const { proxy } = getCurrentInstance() as ComponentInternalInstance;
const dict = reactive({
type: useDict('is_ammeter', 'monitor_status')
type: useDict('is_ammeter', 'monitor_status', 'is_flag')
});
const formRef = ref<ElFormInstance>();
@ -208,7 +277,31 @@ const createFormData = () => ({
updateBy: null,
updateTime: null,
publicShareType: null,
monitorHierarchy: null
monitorHierarchy: null,
tenantId: null,
pointType: null,
metricCode: null,
unitName: null,
collectChannel: null,
registerAddress: null,
registerType: null,
dataType: null,
byteOrder: null,
bitOffset: null,
nodeId: null,
deviceSn: null,
locationCode: null,
locationName: null,
cabinetName: null,
circuitName: null,
phaseNo: null,
sensorType: null,
measurePrecision: null,
rangeMin: null,
rangeMax: null,
alarmEnable: null,
curveEnable: null,
displaySort: null
});
// EMS
@ -230,6 +323,7 @@ const state = reactive({
//
refreshTable: true,
//
//
queryParams: {
parentId: null,
monitorCode: null,
@ -238,6 +332,7 @@ const state = reactive({
monitorType: 3,
monitorStatus: null,
collectDeviceId: null,
collectDeviceName: null,
ancestors: null,
grade: null,
meterTypeId: null,
@ -252,7 +347,31 @@ const state = reactive({
updateBy: null,
updateTime: null,
publicShareType: null,
monitorHierarchy: null
monitorHierarchy: null,
tenantId: null,
pointType: null,
metricCode: null,
unitName: null,
collectChannel: null,
registerAddress: null,
registerType: null,
dataType: null,
byteOrder: null,
bitOffset: null,
nodeId: null,
deviceSn: null,
locationCode: null,
locationName: null,
cabinetName: null,
circuitName: null,
phaseNo: null,
sensorType: null,
measurePrecision: null,
rangeMin: null,
rangeMax: null,
alarmEnable: null,
curveEnable: null,
displaySort: null
},
//
form: createFormData(),
@ -311,7 +430,7 @@ const state = reactive({
},
{
key: 7,
label: `采集设备编号`,
label: `采集设备名称`,
visible: true
},
{
@ -388,14 +507,41 @@ const state = reactive({
key: 22,
label: `表具层级`,
visible: false
},
{
key: 23,
label: `点位类型`,
visible: true
},
{
key: 24,
label: `单位`,
visible: true
},
{
key: 25,
label: `安装位置`,
visible: true
},
{
key: 26,
label: `传感器类型`,
visible: true
},
{
key: 27,
label: `启用报警`,
visible: true
}
]
],
collectDeviceList: []
} as any);
const {
baseMonitorInfoList,
baseMonitorInfoOptions,
columns,
collectDeviceList,
form,
isExpandAll,
loading,
@ -410,7 +556,8 @@ const {
const getList = () => {
loading.value = true;
listBaseMonitorInfo(queryParams.value).then((response) => {
baseMonitorInfoList.value = handleTree(response.data, 'objId', 'parentId');
const source = response.rows ?? response.data ?? [];
baseMonitorInfoList.value = handleTree(source, 'objId', 'parentId');
loading.value = false;
});
};
@ -434,7 +581,7 @@ const getTreeselect = () => {
monitorName: '顶级节点',
children: []
};
data.children = handleTree(response.data, 'objId', 'parentId');
data.children = handleTree(response.rows ?? response.data ?? [], 'objId', 'parentId');
baseMonitorInfoOptions.value.push(data);
});
};
@ -445,31 +592,8 @@ const cancel = () => {
};
const reset = () => {
form.value = {
objId: null,
parentId: null,
monitorCode: null,
monitorName: null,
monitorAddr: null,
monitorType: 3,
monitorStatus: null,
collectDeviceId: null,
ancestors: null,
grade: null,
meterTypeId: null,
correctValue: null,
pt: null,
ct: null,
isAmmeter: null,
isKeyMonitor: null,
isCircuit: null,
createBy: null,
createTime: null,
updateBy: null,
updateTime: null,
publicShareType: null,
monitorHierarchy: null
};
//
form.value = createFormData();
formRef.value?.resetFields();
};
@ -509,7 +633,10 @@ const handleUpdate = (row) => {
form.value.parentId = row.parentId;
}
getBaseMonitorInfo(row.objId).then((response) => {
form.value = response.data;
form.value = {
...createFormData(),
...(response.data ?? {})
};
open.value = true;
title.value = '修改计量设备信息';
});
@ -550,6 +677,9 @@ const handleDelete = (row) => {
};
onMounted(() => {
getCollectDeviceInfo({}).then((response) => {
collectDeviceList.value = response.rows || response.data || [];
});
getList();
});
</script>

@ -15,8 +15,14 @@
<el-option v-for="dict in dict.type.monitor_status" :key="dict.value" :label="dict.label" :value="dict.value" />
</el-select>
</el-form-item>
<el-form-item label="采集设备编号" prop="collectDeviceId">
<el-input v-model="queryParams.collectDeviceId" placeholder="请输入采集设备编号" clearable @keyup.enter="handleQuery" />
<el-form-item label="采集设备名称" prop="collectDeviceName">
<el-input v-model="queryParams.collectDeviceName" placeholder="请输入采集设备名称" clearable @keyup.enter="handleQuery" />
</el-form-item>
<el-form-item label="点位类型" prop="pointType">
<el-input v-model="queryParams.pointType" placeholder="请输入点位类型" clearable @keyup.enter="handleQuery" />
</el-form-item>
<el-form-item label="安装位置" prop="locationName">
<el-input v-model="queryParams.locationName" placeholder="请输入安装位置" clearable @keyup.enter="handleQuery" />
</el-form-item>
<el-form-item label="是否虚拟" prop="isAmmeter">
<el-select v-model="queryParams.isAmmeter" placeholder="请选择是否虚拟" clearable>
@ -59,7 +65,16 @@
<dict-tag :options="dict.type.monitor_status" :value="scope.row.monitorStatus" />
</template>
</el-table-column>
<el-table-column label="采集设备编号" align="center" prop="collectDeviceId" v-if="columns[7].visible" />
<el-table-column label="采集设备名称" align="center" prop="collectDeviceName" v-if="columns[7].visible" />
<el-table-column label="点位类型" align="center" prop="pointType" v-if="columns[23].visible" />
<el-table-column label="单位" align="center" prop="unitName" v-if="columns[24].visible" />
<el-table-column label="安装位置" align="center" prop="locationName" v-if="columns[25].visible" />
<el-table-column label="传感器类型" align="center" prop="sensorType" v-if="columns[26].visible" />
<el-table-column label="启用报警" align="center" prop="alarmEnable" v-if="columns[27].visible">
<template #default="scope">
<dict-tag :options="dict.type.is_flag" :value="scope.row.alarmEnable" />
</template>
</el-table-column>
<el-table-column label="等级" align="center" prop="grade" v-if="columns[9].visible" />
<el-table-column label="传感器仪表" align="center" prop="meterTypeId" v-if="columns[10].visible" />
<el-table-column label="修正值" align="center" prop="correctValue" v-if="columns[11].visible" />
@ -119,8 +134,61 @@
<el-radio v-for="dict in dict.type.monitor_status" :key="dict.value" :label="parseInt(dict.value)">{{ dict.label }}</el-radio>
</el-radio-group>
</el-form-item>
<el-form-item label="采集设备编号" prop="collectDeviceId">
<el-input v-model="form.collectDeviceId" placeholder="请输入采集设备编号" />
<el-form-item label="采集设备" prop="collectDeviceId">
<el-select v-model="form.collectDeviceId" placeholder="请选择采集设备">
<el-option
v-for="item in collectDeviceList"
:key="item.collectDeviceId"
:label="item.collectDeviceName"
:value="item.collectDeviceId"
></el-option>
</el-select>
</el-form-item>
<el-form-item label="点位类型" prop="pointType">
<el-input v-model="form.pointType" placeholder="请输入点位类型" />
</el-form-item>
<el-form-item label="单位" prop="unitName">
<el-input v-model="form.unitName" placeholder="请输入单位" />
</el-form-item>
<el-form-item label="设备序列号" prop="deviceSn">
<el-input v-model="form.deviceSn" placeholder="请输入设备序列号" />
</el-form-item>
<el-form-item label="安装位置" prop="locationName">
<el-input v-model="form.locationName" placeholder="请输入安装位置" />
</el-form-item>
<el-form-item label="所属柜体" prop="cabinetName">
<el-input v-model="form.cabinetName" placeholder="请输入所属柜体" />
</el-form-item>
<el-form-item label="所属回路" prop="circuitName">
<el-input v-model="form.circuitName" placeholder="请输入所属回路" />
</el-form-item>
<el-form-item label="相别" prop="phaseNo">
<el-input v-model="form.phaseNo" placeholder="请输入相别" />
</el-form-item>
<el-form-item label="传感器类型" prop="sensorType">
<el-input v-model="form.sensorType" placeholder="请输入传感器类型" />
</el-form-item>
<el-form-item label="测量精度" prop="measurePrecision">
<el-input-number v-model="form.measurePrecision" placeholder="请输入测量精度" :precision="4" />
</el-form-item>
<el-form-item label="量程下限" prop="rangeMin">
<el-input-number v-model="form.rangeMin" placeholder="请输入量程下限" :precision="4" />
</el-form-item>
<el-form-item label="量程上限" prop="rangeMax">
<el-input-number v-model="form.rangeMax" placeholder="请输入量程上限" :precision="4" />
</el-form-item>
<el-form-item label="启用报警" prop="alarmEnable">
<el-radio-group v-model="form.alarmEnable">
<el-radio v-for="dict in dict.type.is_flag" :key="dict.value" :label="dict.value">{{ dict.label }}</el-radio>
</el-radio-group>
</el-form-item>
<el-form-item label="启用曲线" prop="curveEnable">
<el-radio-group v-model="form.curveEnable">
<el-radio v-for="dict in dict.type.is_flag" :key="dict.value" :label="dict.value">{{ dict.label }}</el-radio>
</el-radio-group>
</el-form-item>
<el-form-item label="展示排序" prop="displaySort">
<el-input-number v-model="form.displaySort" placeholder="请输入展示排序" :precision="0" />
</el-form-item>
<el-form-item label="等级" prop="grade">
<el-input v-model="form.grade" placeholder="请输入等级" />
@ -168,18 +236,19 @@ import {
addBaseMonitorInfo,
updateBaseMonitorInfo
} from '@/api/ems/base/baseMonitorInfo';
import { getCollectDeviceInfo } from '@/api/ems/base/baseCollectDeviceInfo';
import EmsTreeSelect from '@/views/ems/components/EmsTreeSelect.vue';
import { handleTree } from '@/utils/ruoyi';
defineOptions({
name: 'BaseMonitorInfo',
dicts: ['is_ammeter', 'monitor_status']
dicts: ['is_ammeter', 'monitor_status', 'is_flag']
});
const { proxy } = getCurrentInstance() as ComponentInternalInstance;
const dict = reactive({
type: useDict('is_ammeter', 'monitor_status')
type: useDict('is_ammeter', 'monitor_status', 'is_flag')
});
const formRef = ref<ElFormInstance>();
@ -209,7 +278,31 @@ const createFormData = () => ({
updateBy: null,
updateTime: null,
publicShareType: null,
monitorHierarchy: null
monitorHierarchy: null,
tenantId: null,
pointType: null,
metricCode: null,
unitName: null,
collectChannel: null,
registerAddress: null,
registerType: null,
dataType: null,
byteOrder: null,
bitOffset: null,
nodeId: null,
deviceSn: null,
locationCode: null,
locationName: null,
cabinetName: null,
circuitName: null,
phaseNo: null,
sensorType: null,
measurePrecision: null,
rangeMin: null,
rangeMax: null,
alarmEnable: null,
curveEnable: null,
displaySort: null
});
// EMS
@ -231,6 +324,7 @@ const state = reactive({
//
refreshTable: true,
//
//
queryParams: {
parentId: null,
monitorCode: null,
@ -239,6 +333,7 @@ const state = reactive({
monitorType: 3,
monitorStatus: null,
collectDeviceId: null,
collectDeviceName: null,
ancestors: null,
grade: null,
meterTypeId: null,
@ -253,7 +348,31 @@ const state = reactive({
updateBy: null,
updateTime: null,
publicShareType: null,
monitorHierarchy: null
monitorHierarchy: null,
tenantId: null,
pointType: null,
metricCode: null,
unitName: null,
collectChannel: null,
registerAddress: null,
registerType: null,
dataType: null,
byteOrder: null,
bitOffset: null,
nodeId: null,
deviceSn: null,
locationCode: null,
locationName: null,
cabinetName: null,
circuitName: null,
phaseNo: null,
sensorType: null,
measurePrecision: null,
rangeMin: null,
rangeMax: null,
alarmEnable: null,
curveEnable: null,
displaySort: null
},
//
form: createFormData(),
@ -312,7 +431,7 @@ const state = reactive({
},
{
key: 7,
label: `采集设备编号`,
label: `采集设备名称`,
visible: true
},
{
@ -389,14 +508,41 @@ const state = reactive({
key: 22,
label: `表具层级`,
visible: false
},
{
key: 23,
label: `点位类型`,
visible: true
},
{
key: 24,
label: `单位`,
visible: true
},
{
key: 25,
label: `安装位置`,
visible: true
},
{
key: 26,
label: `传感器类型`,
visible: true
},
{
key: 27,
label: `启用报警`,
visible: true
}
]
],
collectDeviceList: []
} as any);
const {
baseMonitorInfoList,
baseMonitorInfoOptions,
columns,
collectDeviceList,
form,
isExpandAll,
loading,
@ -411,7 +557,8 @@ const {
const getList = () => {
loading.value = true;
listBaseMonitorInfo(queryParams.value).then((response) => {
baseMonitorInfoList.value = handleTree(response.data, 'objId', 'parentId');
const source = response.rows ?? response.data ?? [];
baseMonitorInfoList.value = handleTree(source, 'objId', 'parentId');
loading.value = false;
});
};
@ -435,7 +582,7 @@ const getTreeselect = () => {
monitorName: '顶级节点',
children: []
};
data.children = handleTree(response.data, 'objId', 'parentId');
data.children = handleTree(response.rows ?? response.data ?? [], 'objId', 'parentId');
baseMonitorInfoOptions.value.push(data);
});
};
@ -446,31 +593,8 @@ const cancel = () => {
};
const reset = () => {
form.value = {
objId: null,
parentId: null,
monitorCode: null,
monitorName: null,
monitorAddr: null,
monitorType: 3,
monitorStatus: null,
collectDeviceId: null,
ancestors: null,
grade: null,
meterTypeId: null,
correctValue: null,
pt: null,
ct: null,
isAmmeter: null,
isKeyMonitor: null,
isCircuit: null,
createBy: null,
createTime: null,
updateBy: null,
updateTime: null,
publicShareType: null,
monitorHierarchy: null
};
//
form.value = createFormData();
formRef.value?.resetFields();
};
@ -510,7 +634,10 @@ const handleUpdate = (row) => {
form.value.parentId = row.parentId;
}
getBaseMonitorInfo(row.objId).then((response) => {
form.value = response.data;
form.value = {
...createFormData(),
...(response.data ?? {})
};
open.value = true;
title.value = '修改计量设备信息';
});
@ -551,6 +678,9 @@ const handleDelete = (row) => {
};
onMounted(() => {
getCollectDeviceInfo({}).then((response) => {
collectDeviceList.value = response.rows || response.data || [];
});
getList();
});
</script>

@ -1,8 +1,8 @@
<template>
<div class="app-container">
<el-form ref="queryFormRef" :model="queryParams" size="small" :inline="true" v-show="showSearch" label-width="100px">
<el-form-item label="计量设备编号" prop="monitorId">
<el-input v-model="queryParams.monitorId" placeholder="请输入计量设备编号" clearable @keyup.enter="handleQuery" />
<el-form-item label="计量设备名称" prop="monitorName">
<el-input v-model="queryParams.monitorName" placeholder="请输入计量设备名称" clearable @keyup.enter="handleQuery" />
</el-form-item>
<!-- <el-form-item label="采集设备编号" prop="collectDeviceId">-->
<!-- <el-input-->
@ -105,14 +105,25 @@
<dict-tag :options="dict.type.alarm_status" :value="scope.row.alarmStatus" />
</template>
</el-table-column>
<el-table-column label="异常数据" align="center" prop="alarmData" v-if="columns[5].visible" />
<el-table-column label="操作人员" align="center" prop="operationName" v-if="columns[6].visible" />
<el-table-column label="操作时间" align="center" prop="operationTime" width="180" v-if="columns[7].visible">
<el-table-column label="告警级别" align="center" prop="alarmLevel" v-if="columns[5].visible" />
<el-table-column label="阈值" align="center" prop="thresholdValue" v-if="columns[6].visible" />
<el-table-column label="实际值" align="center" prop="actualValue" v-if="columns[7].visible" />
<el-table-column label="告警标题" align="center" prop="alarmTitle" v-if="columns[8].visible" show-overflow-tooltip />
<el-table-column label="告警内容" align="center" prop="alarmContent" v-if="columns[9].visible" show-overflow-tooltip />
<el-table-column label="异常数据" align="center" prop="alarmData" v-if="columns[10].visible" />
<el-table-column label="操作人员" align="center" prop="operationName" v-if="columns[11].visible" />
<el-table-column label="操作时间" align="center" prop="operationTime" width="180" v-if="columns[12].visible">
<template #default="scope">
<span>{{ parseTime(scope.row.operationTime, '{y}-{m}-{d} {h}:{i}:{s}') }}</span>
</template>
</el-table-column>
<el-table-column label="备注" align="center" prop="cause" v-if="columns[8].visible" />
<el-table-column label="恢复时间" align="center" prop="recoverTime" width="180" v-if="columns[13].visible">
<template #default="scope">
<span>{{ parseTime(scope.row.recoverTime, '{y}-{m}-{d} {h}:{i}:{s}') }}</span>
</template>
</el-table-column>
<el-table-column label="确认备注" align="center" prop="confirmRemark" v-if="columns[14].visible" show-overflow-tooltip />
<el-table-column label="备注" align="center" prop="cause" v-if="columns[15].visible" />
<!-- <el-table-column label="通知用户" align="center" prop="notifyUser" v-if="columns[14].visible"/> -->
<el-table-column label="操作" align="center" class-name="small-padding fixed-width" width="100">
<template #default="scope">
@ -136,11 +147,11 @@
<!-- 添加或修改异常数据记录对话框 -->
<el-dialog :title="title" v-model="open" width="500px" append-to-body>
<el-form ref="formRef" :model="form" :rules="rules" label-width="100px">
<el-form-item label="计量设备编号" prop="monitorId">
<el-input v-model="form.monitorId" placeholder="请输入计量设备编号" />
<el-form-item label="计量设备名称" prop="monitorName">
<el-input v-model="form.monitorName" placeholder="请输入计量设备名称" readonly />
</el-form-item>
<el-form-item label="采集设备编号" prop="collectDeviceId">
<el-input v-model="form.collectDeviceId" placeholder="请输入采集设备编号" />
<el-form-item label="采集设备名称" prop="collectDeviceName">
<el-input v-model="form.collectDeviceName" placeholder="请输入采集设备名称" readonly />
</el-form-item>
<el-form-item label="记录时间" prop="collectTime">
<el-date-picker clearable v-model="form.collectTime" type="datetime" value-format="yyyy-MM-dd HH:mm:ss" placeholder="请选择记录时间">
@ -156,9 +167,31 @@
<el-radio v-for="dict in dict.type.alarm_status" :key="dict.value" :label="parseInt(dict.value)">{{ dict.label }} </el-radio>
</el-radio-group>
</el-form-item>
<el-form-item label="告警级别" prop="alarmLevel">
<el-input v-model="form.alarmLevel" placeholder="请输入告警级别" />
</el-form-item>
<el-form-item label="阈值" prop="thresholdValue">
<el-input-number v-model="form.thresholdValue" placeholder="请输入阈值" :precision="4" />
</el-form-item>
<el-form-item label="实际值" prop="actualValue">
<el-input-number v-model="form.actualValue" placeholder="请输入实际值" :precision="4" />
</el-form-item>
<el-form-item label="告警标题" prop="alarmTitle">
<el-input v-model="form.alarmTitle" placeholder="请输入告警标题" />
</el-form-item>
<el-form-item label="告警内容" prop="alarmContent">
<el-input v-model="form.alarmContent" type="textarea" placeholder="请输入告警内容" />
</el-form-item>
<el-form-item label="异常数据" prop="alarmData">
<el-input v-model="form.alarmData" placeholder="请输入异常数据" />
</el-form-item>
<el-form-item label="恢复时间" prop="recoverTime">
<el-date-picker clearable v-model="form.recoverTime" type="datetime" value-format="yyyy-MM-dd HH:mm:ss" placeholder="请选择恢复时间">
</el-date-picker>
</el-form-item>
<el-form-item label="确认备注" prop="confirmRemark">
<el-input v-model="form.confirmRemark" type="textarea" placeholder="请输入确认备注" />
</el-form-item>
<!-- <el-form-item label="操作人员" prop="operationName">-->
<!-- <el-input v-model="form.operationName" placeholder="请输入操作人员"/>-->
<!-- </el-form-item>-->
@ -213,16 +246,59 @@ const dict = reactive({
const queryFormRef = ref<any>();
const formRef = ref<any>();
const createFormData = () => ({
objId: null,
const createQueryParams = () => ({
pageNum: 1,
pageSize: 10,
monitorId: null,
monitorName: null,
collectDeviceId: null,
collectDeviceName: null,
collectTime: null,
alarmType: null,
alarmStatus: null,
metricCode: null,
alarmLevel: null,
thresholdValue: null,
actualValue: null,
alarmTitle: null,
alarmContent: null,
alarmData: null,
operationName: null,
operationTime: null,
beginOperationTime: null,
endOperationTime: null,
recoverTime: null,
pushStatus: null,
confirmRemark: null,
cause: null,
notifyUser: null,
deviceName: null
});
const createFormData = () => ({
objId: null,
monitorId: null,
monitorName: null,
collectDeviceId: null,
collectDeviceName: null,
collectTime: null,
alarmType: null,
alarmStatus: null,
tenantId: null,
metricCode: null,
alarmLevel: null,
thresholdValue: null,
actualValue: null,
alarmTitle: null,
alarmContent: null,
alarmData: null,
operationName: null,
operationTime: null,
recoverTime: null,
pushStatus: null,
pushCount: null,
confirmUserId: null,
confirmRemark: null,
cause: null,
createBy: null,
createTime: null,
@ -241,38 +317,33 @@ const state = reactive({
recordAlarmDataList: [] as any[],
title: '',
open: false,
queryParams: {
pageNum: 1,
pageSize: 10,
monitorId: null,
collectDeviceId: null,
collectTime: null,
alarmType: null,
alarmStatus: null,
alarmData: null,
operationName: null,
operationTime: null,
cause: null,
notifyUser: null
} as any,
// 便
queryParams: createQueryParams() as any,
form: createFormData() as any,
rules: {
objId: [{ required: true, message: '自增标识不能为空', trigger: 'blur' }]
} as any,
columns: [
{ key: 0, label: '自增标识', visible: false },
{ key: 1, label: '计量设备编号', visible: true },
{ key: 1, label: '计量设备名称', visible: true },
{ key: 2, label: '记录时间', visible: true },
{ key: 3, label: '异常类型', visible: true },
{ key: 4, label: '异常状态', visible: true },
{ key: 5, label: '异常数据', visible: true },
{ key: 6, label: '操作人员', visible: true },
{ key: 7, label: '操作时间', visible: true },
{ key: 8, label: '备注', visible: false },
{ key: 9, label: '创建人', visible: false },
{ key: 10, label: '创建时间', visible: true },
{ key: 11, label: '更新人', visible: false },
{ key: 12, label: '更新时间', visible: false }
{ key: 5, label: '告警级别', visible: true },
{ key: 6, label: '阈值', visible: true },
{ key: 7, label: '实际值', visible: true },
{ key: 8, label: '告警标题', visible: true },
{ key: 9, label: '告警内容', visible: true },
{ key: 10, label: '异常数据', visible: true },
{ key: 11, label: '操作人员', visible: true },
{ key: 12, label: '操作时间', visible: true },
{ key: 13, label: '恢复时间', visible: true },
{ key: 14, label: '确认备注', visible: true },
{ key: 15, label: '备注', visible: false },
{ key: 16, label: '创建人', visible: false },
{ key: 17, label: '创建时间', visible: true },
{ key: 18, label: '更新人', visible: false },
{ key: 19, label: '更新时间', visible: false }
] as any[]
});
@ -281,8 +352,8 @@ const { loading, ids, single, multiple, showSearch, total, recordAlarmDataList,
const getList = async () => {
loading.value = true;
const response = await listRecordAlarmData(queryParams.value);
recordAlarmDataList.value = response.rows;
total.value = response.total;
recordAlarmDataList.value = response.rows ?? response.data ?? [];
total.value = response.total ?? 0;
loading.value = false;
};
@ -323,7 +394,11 @@ const handleUpdate = async (row?: any) => {
reset();
const objId = row?.objId || ids.value;
const response = await getRecordAlarmData(objId);
form.value = response.data;
//
form.value = {
...createFormData(),
...(response.data ?? {})
};
open.value = true;
title.value = '修改异常数据记录';
};

@ -9,6 +9,11 @@
<el-option v-for="dict in dict.type.trigger_rule" :key="dict.value" :label="dict.label" :value="dict.value" />
</el-select>
</el-form-item>
<el-form-item label="启用状态" prop="isEnable">
<el-select v-model="queryParams.isEnable" placeholder="请选择启用状态" clearable>
<el-option v-for="dict in dict.type.is_flag" :key="dict.value" :label="dict.label" :value="dict.value" />
</el-select>
</el-form-item>
<!-- <el-form-item label="通知用户" prop="notifyUser">-->
<!-- <el-input-->
<!-- v-model="queryParams.notifyUser"-->
@ -83,10 +88,19 @@
<dict-tag :options="dict.type.monitor_field" :value="scope.row.monitorField" />
</template>
</el-table-column>
<el-table-column label="时间范围(分)" align="center" prop="timeRange" v-if="columns[8].visible" />
<el-table-column label="触发阈值量" align="center" prop="triggerValue" v-if="columns[9].visible" />
<el-table-column label="通知用户" align="center" prop="notifyUser" v-if="columns[10].visible" />
<el-table-column label="备注" align="center" prop="cause" v-if="columns[11].visible" />
<el-table-column label="告警上限" align="center" prop="alarmUpper" v-if="columns[8].visible" />
<el-table-column label="告警下限" align="center" prop="alarmLower" v-if="columns[9].visible" />
<el-table-column label="恢复上限" align="center" prop="recoverUpper" v-if="columns[10].visible" />
<el-table-column label="恢复下限" align="center" prop="recoverLower" v-if="columns[11].visible" />
<el-table-column label="回差" align="center" prop="hysteresis" v-if="columns[12].visible" />
<el-table-column label="持续秒数" align="center" prop="durationSec" v-if="columns[13].visible" />
<el-table-column label="告警级别" align="center" prop="alarmLevel" v-if="columns[14].visible" />
<el-table-column label="启用状态" align="center" prop="isEnable" v-if="columns[15].visible">
<template #default="scope">
<dict-tag :options="dict.type.is_flag" :value="scope.row.isEnable" />
</template>
</el-table-column>
<el-table-column label="备注" align="center" prop="cause" v-if="columns[16].visible" />
<el-table-column label="操作" align="center" class-name="small-padding fixed-width" width="150">
<template #default="scope">
<el-button
@ -149,8 +163,31 @@
<!-- <el-form-item label="时间范围(分)" prop="timeRange">-->
<!-- <el-input v-model="form.timeRange" placeholder="请输入时间范围(分)"/>-->
<!-- </el-form-item>-->
<el-form-item label="触发阈值量" prop="triggerValue">
<el-input-number v-model="form.triggerValue" placeholder="请输入触发阈值量" :precision="2" />
<el-form-item label="告警上限" prop="alarmUpper">
<el-input-number v-model="form.alarmUpper" placeholder="请输入告警上限" :precision="4" />
</el-form-item>
<el-form-item label="告警下限" prop="alarmLower">
<el-input-number v-model="form.alarmLower" placeholder="请输入告警下限" :precision="4" />
</el-form-item>
<el-form-item label="恢复上限" prop="recoverUpper">
<el-input-number v-model="form.recoverUpper" placeholder="请输入恢复上限" :precision="4" />
</el-form-item>
<el-form-item label="恢复下限" prop="recoverLower">
<el-input-number v-model="form.recoverLower" placeholder="请输入恢复下限" :precision="4" />
</el-form-item>
<el-form-item label="回差" prop="hysteresis">
<el-input-number v-model="form.hysteresis" placeholder="请输入回差" :precision="4" />
</el-form-item>
<el-form-item label="持续秒数" prop="durationSec">
<el-input-number v-model="form.durationSec" placeholder="请输入持续秒数" :precision="0" />
</el-form-item>
<el-form-item label="告警级别" prop="alarmLevel">
<el-input v-model="form.alarmLevel" placeholder="请输入告警级别" />
</el-form-item>
<el-form-item label="启用状态" prop="isEnable">
<el-radio-group v-model="form.isEnable">
<el-radio v-for="dict in dict.type.is_flag" :key="dict.value" :label="dict.value">{{ dict.label }}</el-radio>
</el-radio-group>
</el-form-item>
<!-- <el-form-item label="通知用户" prop="notifyUser">-->
<!-- <el-input v-model="form.notifyUser" placeholder="请输入通知用户"/>-->
@ -283,31 +320,74 @@ import { getToken } from '@/utils/auth';
defineOptions({
name: 'RecordAlarmRule',
dicts: ['trigger_rule', 'monitor_field']
dicts: ['trigger_rule', 'monitor_field', 'is_flag']
});
const { proxy } = getCurrentInstance() as ComponentInternalInstance;
const dict = reactive({
type: useDict('trigger_rule', 'monitor_field')
type: useDict('trigger_rule', 'monitor_field', 'is_flag')
});
const formRef = ref<ElFormInstance>();
const queryFormRef = ref<ElFormInstance>();
const createQueryParams = () => ({
pageNum: 1,
pageSize: 10,
ruleId: null,
ruleName: null,
monitorId: null,
monitorCode: null,
monitorName: null,
collectTime: null,
energyType: null,
triggerRule: null,
monitorField: null,
timeRange: null,
triggerValue: null,
metricCode: null,
alarmUpper: null,
alarmLower: null,
recoverUpper: null,
recoverLower: null,
hysteresis: null,
durationSec: null,
alarmLevel: null,
isEnable: null,
notifyGroupId: null,
notifyUser: null,
nickName: null,
cause: null
});
// /
const createFormData = () => ({
objId: null,
ruleId: null,
ruleName: null,
monitorId: null,
monitorCode: null,
monitorName: null,
collectTime: null,
energyType: null,
triggerRule: null,
monitorField: null,
timeRange: null,
triggerValue: null,
tenantId: null,
metricCode: null,
alarmUpper: null,
alarmLower: null,
recoverUpper: null,
recoverLower: null,
hysteresis: null,
durationSec: null,
alarmLevel: null,
notifyGroupId: null,
isEnable: '0',
notifyUser: null,
nickName: null,
cause: null,
createBy: null,
createTime: null,
@ -340,21 +420,8 @@ const state = reactive({
selectedMonitorType: null,
// monitorType
//
queryParams: {
pageNum: 1,
pageSize: 10,
ruleId: null,
ruleName: null,
monitorId: null,
collectTime: null,
energyType: null,
triggerRule: null,
monitorField: null,
timeRange: null,
triggerValue: null,
notifyUser: null,
cause: null
},
//
queryParams: createQueryParams(),
//
form: createFormData(),
//
@ -410,21 +477,46 @@ const state = reactive({
},
{
key: 8,
label: `时间范围(分)`,
visible: false
label: `告警上限`,
visible: true
},
{
key: 9,
label: `触发阈值量`,
label: `告警下限`,
visible: true
},
{
key: 10,
label: `通知用户`,
visible: false
label: `恢复上限`,
visible: true
},
{
key: 11,
label: `恢复下限`,
visible: true
},
{
key: 12,
label: `回差`,
visible: true
},
{
key: 13,
label: `持续秒数`,
visible: true
},
{
key: 14,
label: `告警级别`,
visible: true
},
{
key: 15,
label: `启用状态`,
visible: true
},
{
key: 16,
label: `备注`,
visible: true
}
@ -476,8 +568,8 @@ const {
const getList = () => {
loading.value = true;
listRecordAlarmRule(queryParams.value).then((response) => {
recordAlarmRuleList.value = response.rows;
total.value = response.total;
recordAlarmRuleList.value = response.rows ?? response.data ?? [];
total.value = response.total ?? 0;
loading.value = false;
});
};
@ -488,24 +580,7 @@ const cancel = () => {
};
const reset = () => {
form.value = {
objId: null,
ruleId: null,
ruleName: null,
monitorId: null,
collectTime: null,
energyType: null,
triggerRule: null,
monitorField: null,
timeRange: null,
triggerValue: null,
notifyUser: null,
cause: null,
createBy: null,
createTime: null,
updateBy: null,
updateTime: null
};
form.value = createFormData();
selectedMonitorType.value = null; //
formRef.value?.resetFields();
};
@ -536,7 +611,12 @@ const handleUpdate = (row) => {
reset();
const objId = row.objId || ids.value;
getRecordAlarmRule(objId).then((response) => {
form.value = response.data;
//
form.value = {
...createFormData(),
...(response.data ?? {})
};
form.value.isEnable = form.value.isEnable ?? '0';
// form.monitorIdmonitorCode selectedMonitorType
const selectedMonitor = monitorList.value.find((m) => m.monitorCode === form.value.monitorId);
if (selectedMonitor) {
@ -548,8 +628,23 @@ const handleUpdate = (row) => {
};
const submitForm = () => {
form.value.validate((valid) => {
formRef.value?.validate((valid) => {
if (valid) {
// metricCode/energyType
const selectedMonitor = monitorList.value.find((m) => m.monitorCode === form.value.monitorId);
if (selectedMonitor) {
form.value.monitorName = selectedMonitor.monitorName;
form.value.tenantId = selectedMonitor.tenantId ?? form.value.tenantId;
form.value.metricCode = selectedMonitor.metricCode ?? form.value.metricCode;
form.value.energyType = selectedMonitor.monitorType ?? form.value.energyType;
}
if (form.value.triggerRule === 0 && form.value.alarmUpper != null) {
form.value.triggerValue = form.value.alarmUpper;
}
if (form.value.triggerRule === 1 && form.value.alarmLower != null) {
form.value.triggerValue = form.value.alarmLower;
}
form.value.isEnable = form.value.isEnable ?? '0';
if (form.value.objId != null) {
updateRecordAlarmRule(form.value).then((response) => {
proxy?.$modal.msgSuccess('修改成功');
@ -593,7 +688,7 @@ const handleExport = () => {
const getMonitorList = () => {
listBaseMonitorInfo().then((response) => {
monitorList.value = response.data;
monitorList.value = response.rows ?? response.data ?? [];
});
};
@ -602,12 +697,21 @@ const handleMonitorChange = (monitorId) => {
const selectedMonitor = monitorList.value.find((m) => m.monitorCode === monitorId);
if (selectedMonitor) {
selectedMonitorType.value = selectedMonitor.monitorType;
//
form.value.monitorName = selectedMonitor.monitorName;
form.value.tenantId = selectedMonitor.tenantId ?? null;
form.value.metricCode = selectedMonitor.metricCode ?? null;
form.value.energyType = selectedMonitor.monitorType ?? null;
// 610
if (selectedMonitorType.value !== 6 && selectedMonitorType.value !== 10) {
form.value.monitorField = null;
}
} else {
selectedMonitorType.value = null;
form.value.monitorName = null;
form.value.tenantId = null;
form.value.metricCode = null;
form.value.energyType = null;
form.value.monitorField = null; //
}
};

Loading…
Cancel
Save