/* eslint-disable @typescript-eslint/no-unused-expressions */ import Icon, { PlusOutlined, LoadingOutlined } from '@ant-design/icons'; import { Upload, message, Space } from 'antd'; // eslint-disable-next-line prettier/prettier import type { RcFile } from 'antd/es/upload/interface'; import React, { Fragment, useEffect, useState } from 'react'; import styles from './uploadImg.module.less'; import { review, deleteIcon } from "./icon" import { cloneDeep } from 'lodash'; import schema from "./schema" import FormItem from '../FormItem/FormItem' import Preview from "./preview" import { ChangeImgUrl, getItemProps } from "../../utils" // import OCR from "../../utils/ocr" const UploadImg = (item: any) => { const data: any = getItemProps(schema, item) const { UploadProps, otherProps, FormItemProps, beforeUploadRules, callback, Type, form } = data const [imageUrl, setImageUrl] = useState([]); const [loading, setLoading] = useState(false); const { uploadText, imageUrl: _imageUrl } = otherProps const [isPreview, setIsPreview] = useState(false) useEffect(() => { _imageUrl ? setImageUrl(_imageUrl) : null // eslint-disable-next-line react-hooks/exhaustive-deps }, []) const UploadButton = () => { return
{loading ? : <> {uploadText ?
{uploadText}
: null} }
} const AfterButon = ({ url, index }: any) => { return
{ e.stopPropagation() }}>
setIsPreview(url)} /> {Type === "upload" ? { const CloneImage = cloneDeep(imageUrl) CloneImage.splice(index, 1) form && form?.setFieldValue(FormItemProps?.name, CloneImage) setImageUrl(CloneImage) } } component={deleteIcon} /> : null}
} const beforeUpload = (file: RcFile) => { const { fileSize } = beforeUploadRules const isLt2M = file.size / 1024 / 1024 < fileSize; const isCount = FormItemProps?.maxCount <= imageUrl?.length if (isCount) { message.error(`最多可上传${FormItemProps?.maxCount}张图片!`); return !isCount } if (!isLt2M) { message.error(`图片大小不能超过${fileSize}MB!`); } return isLt2M; }; const handleChange = async (fileInput: any): Promise => { const { file } = fileInput; if (file.status === 'uploading') { setLoading(true); return ''; } if (file.status === 'done') { let url = file.response.data; setLoading(false); const CloneImage = cloneDeep(imageUrl) CloneImage.push(url) setImageUrl(CloneImage); callback && callback(CloneImage) return ''; } }; return <> {isPreview ? : null} { { imageUrl?.map((url, index) => { return }) }
{ if (info.file.status == 'done') { return [...imageUrl, info.file.response.data]; } else { return imageUrl } }} >
{beforeUploadRules?.tips}
} }; export default UploadImg;