import { siteApi } from "@/api"; import { MemoSpinLoding } from "@/components"; import { DageUpload, DageUploadConsumer, DageUploadProvider, DageUploadType, } from "@dage/pc-components"; import { App, Button, Form, FormInstance, Input } from "antd"; import { cloneDeep } from "lodash"; import { useEffect, useRef, useState } from "react"; export default function SitePage() { const initialData = useRef(null); const { message } = App.useApp(); const formRef = useRef(null); const [loading, setLoading] = useState(false); const [readOnly, setReadOnly] = useState(true); useEffect(() => { getDetail(); }, []); const getDetail = async () => { setLoading(true); try { const str = await siteApi.get(); const { fileName, filePath, ...rest } = JSON.parse(str); if (fileName) { rest.audio = [ { uid: fileName, url: `${process.env.REACT_APP_API_URL}${filePath}`, name: fileName, status: "done", }, ]; } formRef.current?.setFieldsValue(rest); initialData.current = cloneDeep(rest); } finally { setLoading(false); } }; const save = async () => { if (!formRef.current || !(await formRef.current.validateFields())) return; try { setLoading(true); const { audio, ...rest } = formRef.current.getFieldsValue(); if (Array.isArray(audio) && audio.length) { Object.assign(rest, { filePath: audio[0].response.filePath, fileName: audio[0].response.fileName, }); } await siteApi.save(rest); message.success("保存成功"); initialData.current = cloneDeep(formRef.current.getFieldsValue()); setReadOnly(true); } finally { setLoading(false); } }; const cancel = () => { formRef.current?.setFieldsValue({ ...initialData.current, }); setReadOnly(true); }; return ( {(data) => (
{loading && } {readOnly ? ( ) : ( <> )} )}
); }