import { http } from '/nerv-lib/util'; import { NsMessage } from '/nerv-lib/component'; import { deviceAlarms } from '/@/api/alarmManagement/alarmSettings/deviceAlarms'; 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: 'prioritys', }, { title: '告警标题', dataIndex: 'alarmTitle', }, { title: '错误码', dataIndex: 'errorCode', }, { title: '告警频率', dataIndex: 'alarmFrequency', }, { title: '重复次数', dataIndex: 'repetitions', }, { title: '频率间隔', dataIndex: 'interval', }, { title: '监测时长', dataIndex: 'monitor', }, { 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 equipmentAlarmTableConfig = ( editEquipmentAlarm: any, mainRefEquipmentAlarm: any, equipmentAlarm: any, configureDeviceAlarms: any, mainRef: any, ) => { return { title: '告警规则', api: deviceAlarms.getTableList, headerActions: [ { label: '新增', name: 'equipmentAlarmAdd', type: 'primary', handle: () => { editEquipmentAlarm.value.toggle(); }, }, { label: '导入', name: 'equipmentAlarmImport', type: 'primary', extra: { // api: props.postImportApi, // 导入接口名 title: '设备信息', // 弹窗title templateName: 'whiteListUser', // 所使用的文件名称 indexName: '设备id', // 匹配类型字段 message: [ { label: '1、若必填项未填写,则不能进行导入操作' }, { label: `2、当重复时,则更新数据。` }, { label: '3、数据将从模版的第五行进行导入。' }, { label: '4、文件导入勿超过5MB。' }, ], }, }, { label: '导出', name: 'equipmentAlarmExports', type: 'primary', handle: () => { doWnload('/hx-ai-intelligent/asset/file/whiteListUser.xlsx'); }, }, ], columns: tableKeyMap, // rowSelection: null, 选择按钮 scroll: { x: 1800 }, columnActions: { title: '操作', width: 250, fixed: 'right', dataIndex: 'tableAction', actions: [ { label: '编辑', name: 'equipmentAlarmEdit', 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; } obj.createWorkOrder = obj.createWorkOrder + ''; if (obj.alarmFrequency === 1) { obj.repetitions = null; obj.intervalDuration = null; obj.intervalDurationUnit = null; } if (obj.alarmFrequency === 3) { obj.repetitions = null; } obj.monitorTimeUnit = data.monitorTimeUnit.value; editEquipmentAlarm.value.toggle(obj); }, }, { label: '配置', name: 'alarmSettingsIndex', dynamicParams: ['uuid', 'appealType'], handle: (data: any) => { equipmentAlarm.value = !equipmentAlarm.value; configureDeviceAlarms.value.setconfigureDeviceAlarmsData(data); }, }, { label: '删除', name: 'equipmentAlarmDel', dynamicParams: ['uuid', 'appealType'], confirm: true, handle: (data: any) => { http.post(deviceAlarms.del, { id: data.id, orgId: data.orgId }).then(() => { NsMessage.success('告警删除成功'); mainRefEquipmentAlarm.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: { placeholder: '请选择启用状态', allowClear: true, options: [ { label: '启用', value: 1, }, { label: '关闭', value: 0, }, ], }, }, ], }, params: { orgId: orgId.value }, // pagination: { pageSizeOptions: false }, rowKey: 'id', }; };