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

const { t } = useI18n();

export const formSchemas: FormSchema[] = [
  {
    field: SendSMSFieldsEnum.NUMBERS_TO_TEMPLATE,
    label: t(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: `请输入${t(SendSMSFieldsNameEnum.NUMBERS_TO_TEMPLATE)}`,
    },
  },
  {
    field: SendSMSFieldsEnum.SMS_MESSAGE_TEMPLATE,
    label: t(SendSMSFieldsNameEnum.SMS_MESSAGE_TEMPLATE),
    component: 'InputTextArea',
    required: true,
    helpMessage:
      'Hint: use ${metadataKey} for value from metadata, $[messageKey] for value from message body',
    componentProps: {
      placeholder: `请输入${t(SendSMSFieldsNameEnum.SMS_MESSAGE_TEMPLATE)}`,
    },
  },
  {
    field: SendSMSFieldsEnum.USE_SYSTEM_SMS_SETTINGS,
    label: '',
    component: 'Checkbox',
    renderComponentContent: () => ({
      default: () => t(SendSMSFieldsNameEnum.USE_SYSTEM_SMS_SETTINGS),
    }),
  },
  {
    field: SendSMSFieldsEnum.TYPE,
    label: t(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: `请选择${t(SendSMSFieldsNameEnum.TYPE)}`,
    },
  },
  {
    field: SendSMSFieldsEnum.NUMBER_FROM,
    label: t(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: `请输入${t(SendSMSFieldsNameEnum.NUMBER_FROM)}`,
    },
  },
  {
    field: SendSMSFieldsEnum.ACCOUNT_SID,
    label: t(SendSMSFieldsNameEnum.ACCOUNT_SID),
    component: 'Input',
    required: true,
    ifShow: ({ model }) =>
      !model[SendSMSFieldsEnum.USE_SYSTEM_SMS_SETTINGS] &&
      model[SendSMSFieldsEnum.TYPE] === SMSServiceProviderEnum.TWILIO,
    componentProps: {
      placeholder: `请选择${t(SendSMSFieldsNameEnum.ACCOUNT_SID)}`,
    },
  },
  {
    field: SendSMSFieldsEnum.ACCOUNT_TOKEN,
    label: t(SendSMSFieldsNameEnum.ACCOUNT_TOKEN),
    component: 'Input',
    required: true,
    ifShow: ({ model }) =>
      !model[SendSMSFieldsEnum.USE_SYSTEM_SMS_SETTINGS] &&
      model[SendSMSFieldsEnum.TYPE] === SMSServiceProviderEnum.TWILIO,
    componentProps: {
      placeholder: `请选择${t(SendSMSFieldsNameEnum.ACCOUNT_TOKEN)}`,
    },
  },
  {
    field: SendSMSFieldsEnum.ACCESS_KEY_ID,
    label: t(SendSMSFieldsNameEnum.ACCESS_KEY_ID),
    component: 'Input',
    required: true,
    ifShow: ({ model }) =>
      !model[SendSMSFieldsEnum.USE_SYSTEM_SMS_SETTINGS] &&
      model[SendSMSFieldsEnum.TYPE] === SMSServiceProviderEnum.AWS_SNS,
    componentProps: {
      placeholder: `请选择${t(SendSMSFieldsNameEnum.ACCESS_KEY_ID)}`,
    },
  },
  {
    field: SendSMSFieldsEnum.SECRET_ACCESS_KEY,
    label: t(SendSMSFieldsNameEnum.SECRET_ACCESS_KEY),
    component: 'InputPassword',
    required: true,
    ifShow: ({ model }) =>
      !model[SendSMSFieldsEnum.USE_SYSTEM_SMS_SETTINGS] &&
      model[SendSMSFieldsEnum.TYPE] === SMSServiceProviderEnum.AWS_SNS,
    componentProps: {
      placeholder: `请选择${t(SendSMSFieldsNameEnum.SECRET_ACCESS_KEY)}`,
    },
  },
  {
    field: SendSMSFieldsEnum.REGION,
    label: t(SendSMSFieldsNameEnum.REGION),
    component: 'InputPassword',
    required: true,
    ifShow: ({ model }) =>
      !model[SendSMSFieldsEnum.USE_SYSTEM_SMS_SETTINGS] &&
      model[SendSMSFieldsEnum.TYPE] === SMSServiceProviderEnum.AWS_SNS,
    componentProps: {
      placeholder: `请选择${t(SendSMSFieldsNameEnum.REGION)}`,
    },
  },
];