238 lines
6.3 KiB
TypeScript
238 lines
6.3 KiB
TypeScript
import { http } from '/nerv-lib/util';
|
||
import { NsMessage } from '/nerv-lib/component';
|
||
import { energyAlarms } from '/@/api/alarmManagement/alarmSettings/energyAlarm';
|
||
import { ref } from 'vue';
|
||
import { getEnum } from '/@/api';
|
||
|
||
const orgId = ref('');
|
||
const result = JSON.parse(sessionStorage.getItem('ORGID')!);
|
||
orgId.value = result;
|
||
const tableKeyMap = [
|
||
{
|
||
title: '序号',
|
||
dataIndex: 'address',
|
||
customRender: (text: any) => {
|
||
return text.index + 1;
|
||
},
|
||
width: 80,
|
||
fixed: 'left',
|
||
},
|
||
{
|
||
title: '优先级',
|
||
dataIndex: 'priority',
|
||
width: 120,
|
||
},
|
||
{
|
||
title: '告警标题',
|
||
dataIndex: 'alarmTitle',
|
||
},
|
||
{
|
||
title: '错误码',
|
||
dataIndex: 'errorCode',
|
||
width: 120,
|
||
},
|
||
{
|
||
title: '告警频率',
|
||
dataIndex: 'alarmFrequency',
|
||
width: 120,
|
||
},
|
||
{
|
||
title: '重复次数',
|
||
dataIndex: 'repetitions',
|
||
width: 120,
|
||
},
|
||
{
|
||
title: '监测时长',
|
||
dataIndex: 'monitorFrequency',
|
||
width: 120,
|
||
},
|
||
{
|
||
title: '是否启用',
|
||
dataIndex: 'enableRules',
|
||
width: 140,
|
||
},
|
||
];
|
||
const doWnload = (url: any) => {
|
||
const a = document.createElement('a');
|
||
document.body.appendChild(a);
|
||
a.href = encodeURI(url);
|
||
//设置下载的文件名
|
||
// a.download = fileName.value;
|
||
//触发a标签的点击事件,进行下载
|
||
a.click();
|
||
};
|
||
|
||
export const energyAlarmConfigs = (
|
||
editeEnergyAlarm: any,
|
||
mainEnergyAlarmConfig: any,
|
||
energyAlarm: any,
|
||
configureDeviceAlarms: any,
|
||
mainRef: any,
|
||
) => {
|
||
return {
|
||
title: '告警规则',
|
||
api: energyAlarms.getTableList,
|
||
headerActions: [
|
||
{
|
||
label: '新增',
|
||
name: 'energyAlarmAdd',
|
||
type: 'primary',
|
||
handle: () => {
|
||
editeEnergyAlarm.value.toggle();
|
||
},
|
||
},
|
||
{
|
||
label: '导入',
|
||
name: 'energyAlarmImport',
|
||
type: 'primary',
|
||
extra: {
|
||
title: '设备信息', // 弹窗title
|
||
templateName: 'whiteListUser', // 所使用的文件名称
|
||
indexName: '设备id', // 匹配类型字段
|
||
message: [
|
||
{ label: '1、若必填项未填写,则不能进行导入操作' },
|
||
{ label: `2、当重复时,则更新数据。` },
|
||
{ label: '3、数据将从模版的第五行进行导入。' },
|
||
{ label: '4、文件导入勿超过5MB。' },
|
||
],
|
||
},
|
||
},
|
||
{
|
||
label: '导出',
|
||
name: 'energyAlarmExports',
|
||
type: 'primary',
|
||
handle: () => {
|
||
doWnload('/hx-ai-intelligent/asset/file/whiteListUser.xlsx');
|
||
},
|
||
},
|
||
],
|
||
columns: tableKeyMap,
|
||
scroll: { x: 1800 },
|
||
// rowSelection: null, 选择按钮
|
||
columnActions: {
|
||
title: '操作',
|
||
width: 250,
|
||
fixed: 'right',
|
||
dataIndex: 'tableAction',
|
||
actions: [
|
||
{
|
||
label: '编辑',
|
||
name: 'energyAlarmEdit',
|
||
dynamicParams: ['uuid', 'appealType'],
|
||
handle: (data: any) => {
|
||
const obj = { ...data };
|
||
obj.priority = data.priority.value;
|
||
if (obj.alarmFrequency) {
|
||
obj.alarmFrequency = data.alarmFrequency.value;
|
||
}
|
||
if (obj.intervalDurationUnit) {
|
||
obj.intervalDurationUnit = data.intervalDurationUnit.value;
|
||
}
|
||
if (obj.monitorFrequency) {
|
||
obj.monitorFrequency = data.monitorFrequency.value;
|
||
}
|
||
obj.createWorkOrder = obj.createWorkOrder + '';
|
||
if (obj.alarmFrequency === 1) {
|
||
obj.repetitions = null;
|
||
obj.intervalDurationUnit = null;
|
||
}
|
||
if (obj.alarmFrequency === 3) {
|
||
obj.repetitions = null;
|
||
}
|
||
editeEnergyAlarm.value.toggle(obj);
|
||
},
|
||
},
|
||
{
|
||
label: '配置',
|
||
name: 'alarmSettingsIndex',
|
||
dynamicParams: ['uuid', 'appealType'],
|
||
handle: (data: any) => {
|
||
energyAlarm.value = !energyAlarm.value;
|
||
configureDeviceAlarms.value.setconfigureDeviceAlarmsData(data);
|
||
},
|
||
},
|
||
{
|
||
label: '删除',
|
||
name: 'energyAlarmDel',
|
||
dynamicParams: ['uuid', 'appealType'],
|
||
confirm: true,
|
||
handle: (data: any) => {
|
||
http.post(energyAlarms.del, { id: data.id, orgId: data.orgId }).then(() => {
|
||
NsMessage.success('操作成功');
|
||
mainEnergyAlarmConfig.value?.nsTableRef.reload();
|
||
mainRef.value?.nsTableRef.reload();
|
||
});
|
||
},
|
||
},
|
||
],
|
||
},
|
||
|
||
formConfig: {
|
||
schemas: [
|
||
{
|
||
field: 'priority',
|
||
label: '告警优先级',
|
||
component: 'nsSelectApi',
|
||
// dynamicParams: {
|
||
// id: 'deviceName', //帮定上级联动数据
|
||
// },
|
||
componentProps: {
|
||
api: () => getEnum({ params: { enumType: 'PriorityEnum' } }),
|
||
immediate: true,
|
||
allowClear: true,
|
||
resultField: 'data',
|
||
labelField: 'label',
|
||
valueField: 'value',
|
||
placeholder: '请选择告警优先级',
|
||
showSearch: true,
|
||
filterOption: (input: string, option: any) => {
|
||
return option.label.toLowerCase().indexOf(input.toLowerCase()) >= 0;
|
||
},
|
||
// autoSelectFirst: true,
|
||
},
|
||
},
|
||
{
|
||
field: 'alarmTitle',
|
||
label: '告警标题',
|
||
component: 'NsInput',
|
||
componentProps: {
|
||
allowClear: true,
|
||
placeholder: '请输入告警标题关键字',
|
||
},
|
||
},
|
||
{
|
||
field: 'errorCode',
|
||
label: '错误码',
|
||
component: 'NsInput',
|
||
componentProps: {
|
||
allowClear: true,
|
||
placeholder: '请输入告警错误码',
|
||
},
|
||
},
|
||
{
|
||
field: 'enableRules',
|
||
label: '启用状态',
|
||
component: 'NsSelect',
|
||
componentProps: {
|
||
allowClear: true,
|
||
placeholder: '请选择启用状态',
|
||
options: [
|
||
{
|
||
label: '启用',
|
||
value: 1,
|
||
},
|
||
{
|
||
label: '关闭',
|
||
value: 0,
|
||
},
|
||
],
|
||
},
|
||
},
|
||
],
|
||
},
|
||
params: { orgId: orgId.value },
|
||
// pagination: { pageSizeOptions: false },
|
||
rowKey: 'id',
|
||
};
|
||
};
|