packageDetail.config.ts 4.91 KB
import { FormSchema } from '/@/components/Form';

export enum PackageField {
  TITLE = 'title',
  VERSION = 'version',
  VERSION_LABEL = 'versionLabel',
  DEVICE_CONFIGURATION = 'deviceConfiguration',
  PACKAGE_TYPE = 'packageType',
  PACKAGE_UPDATE_TYPE = 'PackageUpdateType',
  PACKAGE_BINARY_FILE = 'packageBinaryFile',
  PACKAGE_EXTERNAL_URL = 'packageEexternalUrl',
  CHECK_SUM_WAY = 'checkSumWay',
  ALG = 'alg',
  CHECK_SUM = 'checkSum',
  DESCRIPTION = 'description',
}

export enum PackageUpdateType {
  BINARY_FILE = 'binaryFile',
  EXTERNAL_URL = 'externalUrl',
}

export enum PackageType {
  FIRMWARE = 'firmware',
  SOFTWARE = 'software',
}

export enum CheckSumWay {
  AUTO = 'auto',
  MANUAL = 'manual',
}

export enum ALG {
  MD5 = 'md5',
  SHA_256 = 'sha-256',
  SHA_384 = 'sha-384',
  SHA_512 = 'sha-512',
  CRC_32 = 'crc-32',
  MURMUR3_32 = 'murmur3-32',
  MURMUR3_128 = 'murmur3-128',
}

export const formSchema: FormSchema[] = [
  {
    field: PackageField.TITLE,
    label: '标题',
    component: 'Input',
    rules: [{ required: true, message: '标题为必填项' }],
    componentProps: {
      placeholder: '请输入标题',
    },
  },
  {
    field: PackageField.VERSION,
    label: '版本',
    component: 'Input',
    rules: [{ required: true, message: '版本为必填项' }],
    componentProps: {
      placeholder: '请输入版本',
    },
  },
  {
    field: PackageField.VERSION_LABEL,
    label: '版本标签',
    component: 'Input',
    helpMessage: ['自定义标签应与您设备报告的软件包版本相匹配'],
    componentProps: {
      placeholder: '请输入版本标签',
    },
  },
  {
    field: PackageField.DEVICE_CONFIGURATION,
    label: '设备配置',
    component: 'Select',
    helpMessage: ['上传的包仅适用于具有所选配置文件的设备'],
    defaultValue: 'default',
    rules: [{ required: true, message: '设备配置为必填项' }],
    componentProps: () => {
      return {
        options: [{ label: 'default', value: 'default' }],
        placeholder: '请选择设备配置',
      };
    },
  },
  {
    field: PackageField.PACKAGE_TYPE,
    label: '包类型',
    component: 'Select',
    helpMessage: ['上传包后,您将无法修改标题、版本、设备配置文件和包类型'],
    defaultValue: PackageType.FIRMWARE,
    rules: [{ required: true, message: '包类型为必填项' }],
    componentProps: () => {
      return {
        options: [
          { label: '固件', value: PackageType.FIRMWARE },
          { label: '软件', value: PackageType.SOFTWARE },
        ],
        placeholder: '请选择设备配置',
      };
    },
  },
  {
    field: PackageField.PACKAGE_UPDATE_TYPE,
    label: '上传方式',
    component: 'RadioGroup',
    defaultValue: PackageUpdateType.BINARY_FILE,
    componentProps: () => {
      return {
        options: [
          { label: '上传二进制文件', value: PackageUpdateType.BINARY_FILE },
          { label: '使用外部URL', value: PackageUpdateType.EXTERNAL_URL },
        ],
      };
    },
  },
  {
    field: PackageField.PACKAGE_BINARY_FILE,
    label: '二进制文件',
    ifShow: ({ model }) => {
      return model[PackageField.PACKAGE_UPDATE_TYPE] === PackageUpdateType.BINARY_FILE;
    },
    component: 'Upload',
    componentProps: {
      api: () => {
        return {};
      },
    },
  },
  {
    field: PackageField.PACKAGE_EXTERNAL_URL,
    label: '外部URL',
    component: 'Input',
    ifShow: ({ model }) => {
      return model[PackageField.PACKAGE_UPDATE_TYPE] === PackageUpdateType.EXTERNAL_URL;
    },
    rules: [{ required: true, message: '外部URL为必填项' }],
    componentProps: {
      placeholder: '请输入外部URL',
    },
  },
  {
    field: PackageField.CHECK_SUM_WAY,
    label: '校验和方式',
    component: 'RadioGroup',
    defaultValue: CheckSumWay.AUTO,
    componentProps: () => {
      return {
        options: [
          { label: '自动生成', value: CheckSumWay.AUTO },
          { label: '手动生成', value: CheckSumWay.MANUAL },
        ],
      };
    },
  },
  {
    field: PackageField.ALG,
    label: '校验和算法',
    component: 'Select',
    ifShow: ({ model }) => {
      return model[PackageField.CHECK_SUM_WAY] === CheckSumWay.MANUAL;
    },
    componentProps: {
      placeholder: '请选择校验和算法',
      options: Object.keys(ALG).map((key) => {
        return {
          label: String(ALG[key]).toUpperCase(),
          value: ALG[key],
        };
      }),
    },
  },
  {
    field: PackageField.CHECK_SUM,
    label: '校验和',
    component: 'Input',
    ifShow: ({ model }) => {
      return model[PackageField.CHECK_SUM_WAY] === CheckSumWay.MANUAL;
    },
    helpMessage: ['如果校验和为空,会自动生成'],
    componentProps: {
      placeholder: '请输入校验和',
    },
  },
  {
    field: PackageField.DESCRIPTION,
    label: '描述',
    component: 'InputTextArea',
    componentProps: {
      placeholder: '请输入描述',
    },
  },
];