import { FormPageFooter, MemoSpinLoding } from "@/components"; import { DageFileCheckbox, DageFileCheckboxMethods, DageFileResponseType, DageUpload, DageUploadConsumer, DageUploadProvider, } from "@dage/pc-components"; import { DatePicker, Form, FormInstance, Input, Select } from "antd"; import { useCallback, useEffect, useRef, useState } from "react"; import { useNavigate, useParams } from "react-router-dom"; import { CATEGORY_TYPE, LEVEL_TYPE } from "../constants"; import { collectionApi } from "@/api"; import { dayjs, formatDate } from "@dage/utils"; export default function CollectionCreateOrEditPage() { const dageFileCheckboxRef = useRef(null); const fileList = useRef([]); const formRef = useRef(null); const navigate = useNavigate(); const params = useParams(); const [loading, setLoading] = useState(false); const getDetail = useCallback(async () => { setLoading(true); try { const { entity: { thumb, publishDate, ...rest }, file, } = await collectionApi.getDetail(params.id as string); if (thumb) { rest.thumb = [ { uid: thumb, url: `${process.env.REACT_APP_API_URL}${process.env.REACT_APP_IMG_PUBLIC}${thumb}`, name: thumb, status: "done", }, ]; } formRef.current?.setFieldsValue({ publishDate: dayjs(publishDate), ...rest, }); dageFileCheckboxRef.current?.setFileList( file.map((i: any) => ({ uid: i.id + "", url: `${process.env.REACT_APP_API_URL}${process.env.REACT_APP_IMG_PUBLIC}${i.filePath}`, thumbUrl: `${process.env.REACT_APP_API_URL}${process.env.REACT_APP_IMG_PUBLIC}${i.filePath}`, name: i.fileName, dType: i.type, status: "done", })) ); } finally { setLoading(false); } }, [params.id]); useEffect(() => { !!params.id && getDetail(); }, [getDetail, params.id]); const handleCancel = useCallback(() => { navigate(-1); }, [navigate]); const handleSubmit = useCallback(async () => { if (!(await formRef.current?.validateFields())) return; const { thumb = [], publishDate, ...rest } = formRef.current?.getFieldsValue(); if (params.id) { rest.id = params.id; } await collectionApi.save({ ...rest, publishDate: formatDate(publishDate), thumb: thumb[0].response ? thumb[0].response.filePath : thumb[0].name, fileIds: fileList.current .map((i) => (i.response ? i.response.id : i.uid)) .join(), }); handleCancel(); }, [handleCancel, params]); const handleFileChange = useCallback((list: DageFileResponseType[]) => { fileList.current = list; }, []); return (
{loading && } {(data) => ( <>
{ dageFileCheckboxRef.current!.validate(...args); }, }, ]} validateTrigger="onSubmit" >
{!loading && ( )} )}
); }