import React, { useRef, useState } from 'react'; import { DrawerForm, ProFormInstance, ProFormSelect, ProFormText, ProFormUploadButton } from '@ant-design/pro-components'; import { message, Select } from 'antd'; import Upload, { RcFile } from 'antd/es/upload'; import Constants from '@/constants'; export type FormValueType = { target?: string; template?: string; type?: string; time?: string; frequency?: string; } & Partial; export type UpdateBannerFormProps = { onCancel: (flag?: boolean, formVals?: FormValueType) => void; onSubmit: (values: FormValueType) => Promise; afterClose: () => void; updateModalVisible: boolean; values: Partial; }; const { Option } = Select; const UpdateBannerForm: React.FC = (props) => { const formRef = useRef(); const [linkType, setLinkType] = useState(props.values.pbcLink && props.values.pbcLink.includes('||') ? props.values.pbcLink.split('||')[0] + '||' : 'web||'); const selectBefore = ( ); return ( { let pbcBannerImage = "" if (value.pbcBannerImage && value.pbcBannerImage.length > 0) { if (value.pbcBannerImage[0].uid === '-1') { pbcBannerImage = value.pbcBannerImage[0].url || ''; } if ( value.pbcBannerImage[0].response && value.pbcBannerImage[0].response.retcode ) { pbcBannerImage = value.pbcBannerImage[0].response.data; } } return props.onSubmit({ ...value, pbcBannerImage, pbcId: props.values.pbcId, pbcLink: value.pbcLink ? linkType + value.pbcLink : '' }) }} drawerProps={{ destroyOnHidden: true, afterOpenChange: (visible) => { if (!visible) props.afterClose(); } }} initialValues={{ pbcTitle: props.values.pbcTitle, pbcBannerType: props.values.pbcBannerType ? props.values.pbcBannerType + '' : null, pbcLink: props.values.pbcLink && props.values.pbcLink.includes('||') ? props.values.pbcLink.split('||')[1] : '', pbcBannerImage: props.values.pbcBannerImage ? [{ uid: '-1', name: props.values.pbcBannerImage.substring(props.values.pbcBannerImage.lastIndexOf('/') + 1), status: 'done', url: props.values.pbcBannerImage, }] : [] }} onOpenChange={(visible) => { formRef.current?.resetFields(); if (!visible) { props.onCancel(); } }} > { switch (info.file.status) { case 'done': if (info.file.response.retcode === 0) { message.error(info.file.response.retmsg); formRef.current?.setFieldValue('pbcBannerImage', []) } break; default: break; } }, action: process.env.BASE_URL + '/oss/imgUpload', beforeUpload(file: RcFile) { const isLt10M = file.size / 1024 / 1024 < 10; if (!isLt10M) { message.error('图片大小不能超过10MB!'); } return isLt10M || Upload.LIST_IGNORE; }, onPreview: async (file) => { if (file.uid === '-1') { window.open(file.url); } if (file.response && file.response.retcode) { window.open(file.response.data); } }, listType: 'picture-card', }} rules={[ { required: true, message: '请上传banner图' } ]} /> {/* */} ); }; export default UpdateBannerForm;