create.config.ts 4.72 KB
import { CreateAlarmFieldsEnum, CreateAlarmFieldsNameEnum } from '../../../enum/formField/action';
import { JavascriptEditorWithTestModal } from '../../../src/components/JavaScriptFilterModal';
import { findDictItemByCode } from '/@/api/system/dict';
import { FormSchema, useComponentRegister } from '/@/components/Form';
import { useI18n } from '/@/hooks/web/useI18n';

const { t } = useI18n();

useComponentRegister('JavascriptEditorWithTestModal', JavascriptEditorWithTestModal);

export const formSchemas: FormSchema[] = [
  {
    field: CreateAlarmFieldsEnum.USE_MESSAGE_ALARM_DATA,
    component: 'Checkbox',
    label: '',
    renderComponentContent: () => ({
      default: () => t(CreateAlarmFieldsNameEnum.USE_MESSAGE_ALARM_DATA),
    }),
  },
  {
    field: CreateAlarmFieldsEnum.OVERWRITE_ALARM_DETAILS,
    component: 'Checkbox',
    label: '',
    show: ({ model }) => model[CreateAlarmFieldsEnum.USE_MESSAGE_ALARM_DATA],
    renderComponentContent: () => ({
      default: () => t(CreateAlarmFieldsNameEnum.OVERWRITE_ALARM_DETAILS),
    }),
  },
  {
    field: CreateAlarmFieldsEnum.ALARM_DETAILS_BUILD_JS,
    component: 'JavascriptEditorWithTestModal',
    label: t(CreateAlarmFieldsNameEnum.ALARM_DETAILS_BUILD_JS),
    valueField: 'value',
    changeEvent: 'update:value',
    show: ({ model }) =>
      !(
        !model[CreateAlarmFieldsEnum.OVERWRITE_ALARM_DETAILS] &&
        model[CreateAlarmFieldsEnum.USE_MESSAGE_ALARM_DATA]
      ),
    componentProps: {
      javaScriptEditorProps: {
        functionName: 'Details',
        scriptType: 'json',
        paramsName: ['msg', 'metadata', 'msgType'],
      },
      buttonName: '测试详情函数',
    },
  },
  {
    field: CreateAlarmFieldsEnum.ALARM_TYPE,
    component: 'Input',
    label: t(CreateAlarmFieldsNameEnum.ALARM_TYPE),
    helpMessage: [
      'Hint: use ${metadataKey} for value from metadata, $[messageKey] for value from message body',
    ],
    show: ({ model }) => !model[CreateAlarmFieldsEnum.USE_MESSAGE_ALARM_DATA],
    componentProps: {
      placeholder: `请输入${t(CreateAlarmFieldsNameEnum.ALARM_TYPE)}`,
    },
  },
  {
    field: CreateAlarmFieldsEnum.DYNAMIC_SEVERITY,
    component: 'Checkbox',
    label: '',
    show: ({ model }) => !model[CreateAlarmFieldsEnum.USE_MESSAGE_ALARM_DATA],
    renderComponentContent: () => ({
      default: () => t(CreateAlarmFieldsNameEnum.DYNAMIC_SEVERITY),
    }),
  },
  {
    field: CreateAlarmFieldsEnum.SEVERITY,
    component: 'Input',
    label: t(CreateAlarmFieldsNameEnum.SEVERITY),
    show: ({ model }) => !model[CreateAlarmFieldsEnum.USE_MESSAGE_ALARM_DATA],
    helpMessage: [
      'Hint: use ${metadataKey} for value from metadata, $[messageKey] for value from message body. Alarm severity should be system (CRITICAL, MAJOR etc.)',
    ],
    ifShow: ({ model }) => model[CreateAlarmFieldsEnum.DYNAMIC_SEVERITY],
    componentProps: {
      placeholder: `请输入${t(CreateAlarmFieldsNameEnum.SEVERITY)}`,
    },
  },
  {
    field: CreateAlarmFieldsEnum.SEVERITY,
    component: 'ApiSelect',
    label: t(CreateAlarmFieldsNameEnum.SEVERITY),
    show: ({ model }) => !model[CreateAlarmFieldsEnum.USE_MESSAGE_ALARM_DATA],
    ifShow: ({ model }) => !model[CreateAlarmFieldsEnum.DYNAMIC_SEVERITY],
    componentProps: {
      api: findDictItemByCode,
      params: {
        dictCode: 'severity_type',
      },
      labelField: 'itemText',
      valueField: 'itemValue',
      placeholder: `请输入${t(CreateAlarmFieldsNameEnum.SEVERITY)}`,
    },
  },
  {
    field: CreateAlarmFieldsEnum.PROPAGATE,
    component: 'Checkbox',
    label: '',
    show: ({ model }) => !model[CreateAlarmFieldsEnum.USE_MESSAGE_ALARM_DATA],
    renderComponentContent: () => ({
      default: () => t(CreateAlarmFieldsNameEnum.PROPAGATE),
    }),
  },
  {
    field: CreateAlarmFieldsEnum.RELATION_TYPES,
    component: 'Select',
    label: t(CreateAlarmFieldsNameEnum.RELATION_TYPES),
    show: ({ model }) => !model[CreateAlarmFieldsEnum.USE_MESSAGE_ALARM_DATA],
    ifShow: ({ model }) => model[CreateAlarmFieldsEnum.PROPAGATE],
    componentProps: {
      open: false,
      mode: 'tags',
      placeholder: `请输入${t(CreateAlarmFieldsNameEnum.RELATION_TYPES)}`,
    },
  },
  {
    field: CreateAlarmFieldsEnum.PROPAGATE_TO_TENANT,
    component: 'Checkbox',
    label: '',
    show: ({ model }) => !model[CreateAlarmFieldsEnum.USE_MESSAGE_ALARM_DATA],
    renderComponentContent: () => ({
      default: () => t(CreateAlarmFieldsNameEnum.PROPAGATE_TO_TENANT),
    }),
  },
  {
    field: CreateAlarmFieldsEnum.PROPAGATE_TO_OWNER,
    component: 'Checkbox',
    label: '',
    show: ({ model }) => !model[CreateAlarmFieldsEnum.USE_MESSAGE_ALARM_DATA],
    renderComponentContent: () => ({
      default: () => t(CreateAlarmFieldsNameEnum.PROPAGATE_TO_OWNER),
    }),
  },
];