import { useEffect, useState } from "react"; import { Button, Row, Col, Modal, Image, Empty, message, Pagination, } from "antd"; import { resource, resourceCategory } from "../../api"; import styles from "./index.module.less"; import { CreateResourceCategory } from "../create-rs-category"; import { CloseOutlined, CheckOutlined } from "@ant-design/icons"; import { UploadImageSub } from "./upload-image-sub"; import { TreeCategory } from "../../compenents"; interface Option { id: string | number; name: string; children?: Option[]; } interface ImageItem { id: number; category_id: number; name: string; extension: string; size: number; disk: string; file_id: string; path: string; url: string; created_at: string; } interface PropsInterface { text: any; onSelected: (url: string) => void; } export const UploadImageButton = (props: PropsInterface) => { const [showModal, setShowModal] = useState(false); const [category_ids, setCategoryIds] = useState([]); const [imageList, setImageList] = useState([]); const [refresh, setRefresh] = useState(false); const [page, setPage] = useState(1); const [size, setSize] = useState(15); const [total, setTotal] = useState(0); const [selected, setSelected] = useState(""); // 获取图片列表 const getImageList = () => { let categoryIds = category_ids.join(","); resource .resourceList(page, size, "", "", "", "IMAGE", categoryIds) .then((res: any) => { setTotal(res.data.result.total); setImageList(res.data.result.data); }) .catch((err) => { console.log("错误,", err); }); }; // 重置列表 const resetImageList = () => { setPage(1); setImageList([]); setRefresh(!refresh); }; // 加载图片列表 useEffect(() => { if (showModal) { getImageList(); } }, [category_ids, refresh, page, size, showModal]); return ( <> {showModal && ( { setShowModal(false); }} open={true} width={820} maskClosable={false} onOk={() => { if (!selected) { message.error("请选择图片后确定"); return; } props.onSelected(selected); setShowModal(false); }} > { setSelected(""); setCategoryIds(keys); }} /> { resetImageList(); }} > {imageList.length === 0 && ( )}
{imageList.map((item) => (
{ setSelected(item.url); }} > {selected.indexOf(item.url) !== -1 && ( { e.stopPropagation(); setSelected(""); }} > )}
))}
{imageList.length > 0 && ( { setPage(currentPage); setSize(currentSize); }} defaultCurrent={page} total={total} /> )}
)} ); };