import { useEffect, useState } from "react"; import { Row, Col, Empty, Table, Spin, Typography, Input, Button } from "antd"; import type { ColumnsType } from "antd/es/table"; import { resource } from "../../api"; import styles from "./index.module.less"; import { TreeCategory } from "../../compenents"; interface VideoItem { id: number; name: string; created_at: string; type: string; url: string; path: string; size: number; extension: string; admin_id: number; } interface DataType { id: React.Key; name: string; created_at: string; type: string; url: string; path: string; size: number; extension: string; admin_id: number; } interface PropsInterface { defaultCheckedList: any[]; label: string; open: boolean; onSelected: (arr: any[], videos: []) => void; } export const UploadCoursewareSub = (props: PropsInterface) => { const [init, setInit] = useState(true); const [category_ids, setCategoryIds] = useState([]); const [loading, setLoading] = useState(false); const [videoList, setVideoList] = useState([]); const [existingTypes, setExistingTypes] = useState([]); const [refresh, setRefresh] = useState(false); const [page, setPage] = useState(1); const [size, setSize] = useState(10); const [total, setTotal] = useState(0); const [selectedRowKeys, setSelectedRowKeys] = useState([]); const [title, setTitle] = useState(""); // 加载列表 useEffect(() => { setInit(true); getvideoList(); }, [props.open, category_ids, refresh, page, size]); useEffect(() => { if (props.defaultCheckedList.length > 0) { setSelectedRowKeys(props.defaultCheckedList); } }, [props.defaultCheckedList]); // 获取列表 const getvideoList = () => { setLoading(true); let categoryIds = category_ids.join(","); resource .resourceList( page, size, "", "", title, "WORD,EXCEL,PPT,PDF,TXT,RAR,ZIP", categoryIds ) .then((res: any) => { setTotal(res.data.result.total); setExistingTypes(res.data.existing_types); setVideoList(res.data.result.data); setLoading(false); setInit(false); }) .catch((err) => { setLoading(false); setInit(false); console.log("错误,", err); }); }; // 重置列表 const resetVideoList = () => { setPage(1); setVideoList([]); setTitle(""); setRefresh(!refresh); }; const paginationProps = { current: page, //当前页码 pageSize: size, total: total, // 总条数 onChange: (page: number, pageSize: number) => handlePageChange(page, pageSize), //改变页码的函数 showSizeChanger: true, }; const handlePageChange = (page: number, pageSize: number) => { setPage(page); setSize(pageSize); }; const columns: ColumnsType = [ { title: "课件", render: (_, record: any) => (
{record.name}
), }, { title: "类型", render: (_, record: any) => {record.type}, }, ]; const rowSelection = { selectedRowKeys: selectedRowKeys, onChange: (selectedRowKeys: React.Key[], selectedRows: DataType[]) => { let row: any = selectedRows; let arrVideos: any = []; if (row) { for (var i = 0; i < row.length; i++) { if (props.defaultCheckedList.indexOf(row[i].id) === -1) { arrVideos.push({ name: row[i].name, type: row[i].type, rid: row[i].id, }); } } props.onSelected(selectedRowKeys, arrVideos); } setSelectedRowKeys(selectedRowKeys); }, getCheckboxProps: (record: any) => ({ disabled: props.defaultCheckedList.indexOf(record.id) !== -1, //禁用的条件 }), }; return ( <> {init && (
)}
setCategoryIds(keys)} />
名称: { setTitle(e.target.value); }} allowClear style={{ width: 160 }} placeholder="请输入名称关键字" />
{init && (
)}
{videoList.length === 0 && ( )} {videoList.length > 0 && (
record.id} /> )} ); };