create.config.ts 4.2 KB
import { SMSServiceProviderEnum, SMSServiceProviderNameEnum } from '../../../enum/form';
import { SendSMSFieldsEnum, SendSMSFieldsNameEnum } from '../../../enum/formField/external';
import { FormSchema } from '/@/components/Form';

export const formSchemas: FormSchema[] = [
  {
    field: SendSMSFieldsEnum.NUMBERS_TO_TEMPLATE,
    label: SendSMSFieldsNameEnum.NUMBERS_TO_TEMPLATE,
    component: 'Input',
    required: true,
    helpMessage:
      'Comma separated Phone Numbers, use ${metadataKey} for value from metadata, $[messageKey] for value from message body',
    componentProps: {
      placeholder: `请输入${SendSMSFieldsNameEnum.NUMBERS_TO_TEMPLATE}`,
    },
  },
  {
    field: SendSMSFieldsEnum.SMS_MESSAGE_TEMPLATE,
    label: SendSMSFieldsNameEnum.SMS_MESSAGE_TEMPLATE,
    component: 'InputTextArea',
    required: true,
    helpMessage:
      'Hint: use ${metadataKey} for value from metadata, $[messageKey] for value from message body',
    componentProps: {
      placeholder: `请输入${SendSMSFieldsNameEnum.SMS_MESSAGE_TEMPLATE}`,
    },
  },
  {
    field: SendSMSFieldsEnum.USE_SYSTEM_SMS_SETTINGS,
    label: '',
    component: 'Checkbox',
    renderComponentContent: () => ({
      default: () => SendSMSFieldsNameEnum.USE_SYSTEM_SMS_SETTINGS,
    }),
  },
  {
    field: SendSMSFieldsEnum.TYPE,
    label: SendSMSFieldsNameEnum.TYPE,
    component: 'Select',
    required: true,
    ifShow: ({ model }) => !model[SendSMSFieldsEnum.USE_SYSTEM_SMS_SETTINGS],
    componentProps: {
      options: Object.keys(SMSServiceProviderEnum).map((value) => ({
        label: SMSServiceProviderNameEnum[value],
        value,
      })),
      getPopupContainer: () => document.body,
      placeholder: `请选择${SendSMSFieldsNameEnum.TYPE}`,
    },
  },
  {
    field: SendSMSFieldsEnum.NUMBER_FROM,
    label: SendSMSFieldsNameEnum.NUMBER_FROM,
    component: 'Input',
    required: true,
    helpMessage: `Phone Number in E.164 format/Phone Number's SID/Messaging Service SID, ex. +19995550123/PNXXX/MGXXX`,
    ifShow: ({ model }) =>
      !model[SendSMSFieldsEnum.USE_SYSTEM_SMS_SETTINGS] &&
      model[SendSMSFieldsEnum.TYPE] === SMSServiceProviderEnum.TWILIO,
    componentProps: {
      placeholder: `请输入${SendSMSFieldsNameEnum.NUMBER_FROM}`,
    },
  },
  {
    field: SendSMSFieldsEnum.ACCOUNT_SID,
    label: SendSMSFieldsNameEnum.ACCOUNT_SID,
    component: 'Input',
    required: true,
    ifShow: ({ model }) =>
      !model[SendSMSFieldsEnum.USE_SYSTEM_SMS_SETTINGS] &&
      model[SendSMSFieldsEnum.TYPE] === SMSServiceProviderEnum.TWILIO,
    componentProps: {
      placeholder: `请选择${SendSMSFieldsNameEnum.ACCOUNT_SID}`,
    },
  },
  {
    field: SendSMSFieldsEnum.ACCOUNT_TOKEN,
    label: SendSMSFieldsNameEnum.ACCOUNT_TOKEN,
    component: 'Input',
    required: true,
    ifShow: ({ model }) =>
      !model[SendSMSFieldsEnum.USE_SYSTEM_SMS_SETTINGS] &&
      model[SendSMSFieldsEnum.TYPE] === SMSServiceProviderEnum.TWILIO,
    componentProps: {
      placeholder: `请选择${SendSMSFieldsNameEnum.ACCOUNT_TOKEN}`,
    },
  },
  {
    field: SendSMSFieldsEnum.ACCESS_KEY_ID,
    label: SendSMSFieldsNameEnum.ACCESS_KEY_ID,
    component: 'Input',
    required: true,
    ifShow: ({ model }) =>
      !model[SendSMSFieldsEnum.USE_SYSTEM_SMS_SETTINGS] &&
      model[SendSMSFieldsEnum.TYPE] === SMSServiceProviderEnum.AWS_SNS,
    componentProps: {
      placeholder: `请选择${SendSMSFieldsNameEnum.ACCESS_KEY_ID}`,
    },
  },
  {
    field: SendSMSFieldsEnum.SECRET_ACCESS_KEY,
    label: SendSMSFieldsNameEnum.SECRET_ACCESS_KEY,
    component: 'InputPassword',
    required: true,
    ifShow: ({ model }) =>
      !model[SendSMSFieldsEnum.USE_SYSTEM_SMS_SETTINGS] &&
      model[SendSMSFieldsEnum.TYPE] === SMSServiceProviderEnum.AWS_SNS,
    componentProps: {
      placeholder: `请选择${SendSMSFieldsNameEnum.SECRET_ACCESS_KEY}`,
    },
  },
  {
    field: SendSMSFieldsEnum.REGION,
    label: SendSMSFieldsNameEnum.REGION,
    component: 'InputPassword',
    required: true,
    ifShow: ({ model }) =>
      !model[SendSMSFieldsEnum.USE_SYSTEM_SMS_SETTINGS] &&
      model[SendSMSFieldsEnum.TYPE] === SMSServiceProviderEnum.AWS_SNS,
    componentProps: {
      placeholder: `请选择${SendSMSFieldsNameEnum.REGION}`,
    },
  },
];