import { useState, forwardRef, useImperativeHandle, ForwardRefRenderFunction } from 'react' import { Form, Upload, Modal, Input, UploadFile, UploadProps } from 'antd' import { RcFile } from 'antd/es/upload' import { useGlobal } from '@/core' export interface UserModalRef { open: () => void } const formItemLayout = { labelCol: { span: 6 }, wrapperCol: { span: 14 } } const normFile = (e: any) => { console.log('Upload event:', e) if (Array.isArray(e)) { return e } return e?.fileList } const onFinish = (values: any) => { console.log('Received values of form: ', values) } const UserModal: ForwardRefRenderFunction = (_, ref) => { const [open, setOpen] = useState(false) const { globalState } = useGlobal() const { userInfo } = globalState const [fileList, setFileList] = useState([ { uid: '-1', name: 'image.png', status: 'done', url: 'https://zos.alipayobjects.com/rmsportal/jkjgkEfvpUPVyRjUImniVslZfWPnJuuZ.png' } ]) const onChange: UploadProps['onChange'] = ({ fileList: newFileList }) => { setFileList(newFileList) } const onPreview = async (file: UploadFile) => { let src = file.url as string if (!src) { src = await new Promise(resolve => { const reader = new FileReader() reader.readAsDataURL(file.originFileObj as RcFile) reader.onload = () => resolve(reader.result as string) }) } const image = new Image() image.src = src const imgWindow = window.open(src) imgWindow?.document.write(image.outerHTML) } useImperativeHandle(ref, () => ({ open() { setOpen(true) } })) function onModalClose() { setOpen(false) } return (
{fileList.length < 5 && '+ Upload'}
) } export default forwardRef(UserModal)