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; }, }, { title: '优先级', dataIndex: 'priority', }, { title: '告警标题', dataIndex: 'alarmTitle', }, { title: '错误码', dataIndex: 'errorCode', }, { title: '告警频率', dataIndex: 'alarmFrequency', }, { title: '重复次数', dataIndex: 'repetitions', }, { title: '频率间隔', dataIndex: 'interval', }, { title: '监测时长', dataIndex: 'monitorFrequency', }, { title: '是否启用', dataIndex: 'enableRules', }, ]; 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, ) => { 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, // rowSelection: null, 选择按钮 columnActions: { title: '操作', 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 !== 2) { obj.repetitions = null; obj.intervalDuration = null; obj.intervalDurationUnit = 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 }).then(() => { NsMessage.success('操作成功'); mainEnergyAlarmConfig.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', }; };