import { PlusOutlined } from "@ant-design/icons"; import { DrawerForm, ProForm, ProFormSelect, ProFormText, ProFormUploadButton, ProFormTextArea, ProFormMoney, } from "@ant-design/pro-components"; import { Button, Space, message } from "antd"; import type { FormInstance } from "@ant-design/pro-components"; import { useEffect, useState, useMemo, useRef } from "react"; import Editor from "@/components/Editor"; import { customUploadRequest } from "@/utils"; import { SaveOrUpdateTemplate, GetTemplateDetail } from "@/api/templateStore"; import { APPLICATION_SCENARIOS_OPTIONS, INDUSTRIE_OPTIONS, MODULE_TEMPLATE_TYPE, } from "@/constants"; import { useRequest } from "umi"; export default ({ onSuccess, editData, onClose, }: { onSuccess: () => void; onClose: () => void; editData?: any; }) => { const [drawerVisit, setDrawerVisit] = useState(false); const [html, setHtml] = useState(""); const formRef = useRef(); const { run } = useRequest(GetTemplateDetail, { manual: true, onSuccess: (res) => { setHtml(res?.result?.detail || ""); }, }); useEffect(() => { setDrawerVisit(!!editData); if(editData?.id) { run({ id: editData.id, }); } }, [editData]); useEffect(() => { if (!drawerVisit) { onClose(); setHtml(""); formRef.current?.resetFields(); } }, [drawerVisit]); const initialValues = useMemo(() => { if (editData) { return { ...editData, industries: editData.industries ? JSON.parse(editData.industries) : [], applicationScenarios: editData.applicationScenarios ? JSON.parse(editData.applicationScenarios) : [], icon: editData.icon ? [ { uid: editData.icon, name: editData.icon, status: "done", url: `/api/File/Download?fileId=${editData.icon}`, }, ] : [], }; } return {}; }, [editData]); return ( <> { await SaveOrUpdateTemplate({ ...values, id: editData?.id, version: editData?.version, icon: values?.icon?.[0]?.response.id || values?.icon?.[0].uid || "", tags: values.tags?.replaceAll(",", ","), detail: html, isFree: !editData?.price, }); onSuccess(); message.success("提交成功"); return true; }} drawerProps={{ maskClosable: false, destroyOnClose: true, }} formRef={formRef} size="small" > ); };