import React from 'react'; import type { UploadProps, ButtonProps } from 'antd'; import { Upload, Button } from 'antd'; import { UploadOutlined } from '@ant-design/icons'; import type { ProFormItemProps } from '../../interface'; import createField from '../../BaseForm/createField'; export type ProFormDraggerProps = ProFormItemProps & { icon?: React.ReactNode; title?: React.ReactNode; name?: UploadProps['name']; listType?: UploadProps['listType']; action?: UploadProps['action']; accept?: UploadProps['accept']; max?: number; value?: UploadProps['fileList']; onChange?: UploadProps['onChange']; buttonProps?: ButtonProps; disabled?: ButtonProps['disabled']; fileList?: UploadProps['fileList']; }; /** * 上传按钮组件 * * @param */ const ProFormUploadButton: React.ForwardRefRenderFunction = ( { fieldProps, name, action, accept, listType, title = '单击上传', max, icon = , value, buttonProps, onChange, disabled, proFieldProps, fileList, }, ref, ) => { // 如果配置了 max ,并且 超过了文件列表的大小,就不展示按钮 const showUploadButton = (max === undefined || !value || value?.length < max) && proFieldProps?.mode !== 'read'; const isPictureCard = (listType ?? fieldProps?.listType) === 'picture-card'; return ( { onChange?.(info); if (fieldProps?.onChange) { fieldProps?.onChange(info); } }} > {showUploadButton && (isPictureCard ? ( {icon} {title} ) : ( ))} ); }; export default createField(React.forwardRef(ProFormUploadButton), { getValueFromEvent: (value: { fileList: UploadProps['fileList'] }) => value.fileList, });