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',
  };
};
