@flatbiz/antd
Version:
102 lines (99 loc) • 3.17 kB
TypeScript
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 {};