UNPKG

@flatbiz/antd

Version:
102 lines (99 loc) 3.17 kB
import { TAny, TPlainObject } from '@flatbiz/utils'; import { UploadFile, UploadProps } from 'antd'; import { UploadChangeParam } from 'antd/lib/upload/index.js'; import { ReactElement } from 'react'; export type UploadWrapperFileItem = { uid: string; name: string; url?: string; }; export type UploadWrapperProps<T extends TPlainObject = TPlainObject> = { value?: T[] | T; onChange?: (value?: T[]) => void; onUploadError?: (message?: string) => void; onUploadChange?: (info: UploadChangeParam<UploadFile>) => void; /** * 属性取值映射 */ fieldNames?: { uid: string; name?: string; url?: string; /** 文件大小 */ size?: string | number; }; /** * 接口响应数据适配器,如果配置了fieldNames,适配器返回值会再进过fieldNames转换 */ onRequestResultAdapter?: (respData: TAny) => TPlainObject; /** 操作触发显示文本 */ triggerText?: string; /** 超过maxCount 隐藏上传入口 */ limitHidden?: boolean; /** * 自动提交,默认:true * ``` * 1. 自定义beforeUpload配置后 autoSubmit 失效 * 2. 设置为 false 时,在onChange中获取File对象数组 * ``` */ autoSubmit?: boolean; /** 图片预览开关, 重写 onPreview 方法后失效 */ imagePreviewSwitch?: boolean; /** 图片预览文件类型,默认:['png', 'jpg', 'jpeg', 'gif', 'heic', 'heif'] */ imagePreviewAccept?: string[]; /** * 配置文件额外操作 * ``` * 额外操作超过两项后,listType为 picture-card、picture-circle 时会出现显示异常,需要自行修改覆盖样式 * ``` */ extraOperate?: { icon: ReactElement; onClick: (file: UploadFile, fileList: UploadFile[], e: any) => void; }[]; /** 是否使用拖拽上传 */ isDragger?: boolean; } & Omit<UploadProps, "onChange" | "fileList">; /** * 文件上传,支持拖拽上传 * ``` * demo: https://fex.qa.tcshuke.com/docs/admin/main/file/upload * 1. 可通过配置children替换默认上传触发布局 * 2. 接口返回结构: * formData上传接口返回值 * { * code: '0000', * data: { * uid: '唯一值,可使用fileKey值' * name: '文件名称' * url: '预览地址' * } * } * 3. 如果接口返回的不是上面的字段名称,可通过fieldNames配置接口返回字段名称映射 * * 4. 最佳使用方式,与Form结合使用 * <Form.Item name="attachmentList" label="附件"> * <UploadWrapper action={uploadUrl} /> * </Form.Item> * * 5. 回填数据结构 * [{ * uid: '唯一值', * name(非必填): 'image.png', * url: 'https://zos.alipayobjects.com/rmsportal/jkjgkEfvpUPVyRjUImniVslZfWPnJuuZ.png', * }] * 1. 其中 uid、name、url 可为其他命名,通过 fieldNames 进行映射即可, * 2. 其他需要的字段可在对象中添加 responseData 对象 * 例如: * [{ * uid: '唯一值', * name(非必填): 'image.png', * url: 'https://zos.alipayobjects.com/rmsportal/jkjgkEfvpUPVyRjUImniVslZfWPnJuuZ.png', * responseData: { 'xx':'xxx' } * }] * ``` * */ export declare const UploadWrapper: (props: UploadWrapperProps) => import("react").JSX.Element; export {};