import { useEffect, useState } from "react"; import { Spin, Button, Row, Col, Modal, Image, Empty, message, Pagination, } from "antd"; import { resource } from "../../../api"; import styles from "./index.module.less"; import { UploadImageSub } from "../../../compenents/upload-image-button/upload-image-sub"; import { TreeCategory, PerButton } from "../../../compenents"; import { ExclamationCircleFilled, CheckOutlined } from "@ant-design/icons"; const { confirm } = Modal; 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; } export const ResourceImagesPage = () => { const [imageList, setImageList] = useState([]); const [refresh, setRefresh] = useState(false); const [page, setPage] = useState(1); const [size, setSize] = useState(32); const [total, setTotal] = useState(0); const [category_ids, setCategoryIds] = useState([]); const [selectKey, setSelectKey] = useState([]); const [visibleArr, setVisibleArr] = useState([]); const [hoverArr, setHoverArr] = useState([]); const [selLabel, setLabel] = useState("全部图片"); const [loading, setLoading] = useState(false); // 删除图片 const removeResource = () => { if (selectKey.length === 0) { return; } confirm({ title: "操作确认", icon: , content: "确认删除选中图片?", centered: true, okText: "确认", cancelText: "取消", onOk() { resource.destroyResourceMulti(selectKey).then(() => { message.success("删除成功"); resetImageList(); }); }, onCancel() { console.log("Cancel"); }, }); }; // 获取图片列表 const getImageList = () => { if (loading) { return; } setLoading(true); let categoryIds = category_ids.join(","); resource .resourceList(page, size, "", "", "", "IMAGE", categoryIds) .then((res: any) => { setTotal(res.data.result.total); setImageList(res.data.result.data); let data = res.data.result.data; let arr = []; for (let i = 0; i < data.length; i++) { arr.push(false); } setVisibleArr(arr); setHoverArr(arr); setLoading(false); }) .catch((err: any) => { setLoading(false); console.log("错误,", err); }); }; // 重置列表 const resetImageList = () => { setPage(1); setImageList([]); setRefresh(!refresh); }; // 加载图片列表 useEffect(() => { getImageList(); }, [category_ids, refresh, page, size]); const onChange = (e: any, id: number) => { e.preventDefault(); e.stopPropagation(); const arr = [...selectKey]; if (arr.indexOf(id) === -1) { arr.push(id); } else { arr.splice(arr.indexOf(id), 1); } setSelectKey(arr); }; const selectAll = () => { let arr = []; for (let i = 0; i < imageList.length; i++) { arr.push(imageList[i].id); } setSelectKey(arr); }; const cancelAll = () => { setSelectKey([]); }; const showImage = (index: number, value: boolean) => { const arr = [...visibleArr]; arr[index] = value; setVisibleArr(arr); }; const showHover = (index: number, value: boolean) => { const arr = [...hoverArr]; for (let i = 0; i < arr.length; i++) { arr[i] = false; } arr[index] = value; setHoverArr(arr); }; return ( <>
{ setCategoryIds(keys); setLabel(title); }} />
图片 / {selLabel}
{ resetImageList(); }} >
{selectKey.length > 0 && ( )} {imageList.length !== 0 && ( <> removeResource()} /> )}
{loading && (
)} {imageList.length === 0 && (
)}
{imageList.map((item: any, index: number) => (
showImage(index, true)} onMouseOver={() => showHover(index, true)} onMouseOut={() => showHover(index, false)} > {hoverArr[index] && ( onChange(e, item.id)} > )} {selectKey.indexOf(item.id) !== -1 && ( onChange(e, item.id)} > )} { showImage(index, value); }, }} />
))}
{imageList.length > 0 && ( { setPage(currentPage); setSize(currentSize); }} defaultCurrent={page} total={total} pageSize={size} /> )}
); };