import { useEffect, useState } from "react"; import { Button, Modal, Image, Table, Typography, Input, message, Space, Tabs, } from "antd"; import { course, department, resourceCategory } from "../../api"; import styles from "./index.module.less"; import { PlusOutlined, ExclamationCircleFilled } from "@ant-design/icons"; import type { ColumnsType } from "antd/es/table"; import { dateFormat } from "../../utils/index"; import { Link, useNavigate } from "react-router-dom"; import { TreeDepartment, TreeCategory, PerButton } from "../../compenents"; import type { TabsProps } from "antd"; const { confirm } = Modal; interface DataType { id: React.Key; title: string; created_at: string; thumb: string; charge: number; is_show: number; } export const CoursePage = () => { const navigate = useNavigate(); const [list, setList] = useState([]); const [refresh, setRefresh] = useState(false); const [page, setPage] = useState(1); const [size, setSize] = useState(10); const [total, setTotal] = useState(0); const [loading, setLoading] = useState(true); const [category_ids, setCategoryIds] = useState([]); const [title, setTitle] = useState(""); const [dep_ids, setDepIds] = useState([]); const [selLabel, setLabel] = useState("全部课程"); const [categoryCount, setCategoryCount] = useState({}); const [tabKey, setTabKey] = useState(1); const items: TabsProps["items"] = [ { key: "1", label: `分类`, children: (
{ setCategoryIds(keys); if (typeof title == "string") { setLabel(title); } else { setLabel(title.props.children[0]); } }} />
), }, { key: "2", label: `部门`, children: (
{ setDepIds(keys); setLabel(title); }} />
), }, ]; const columns: ColumnsType = [ { title: "课程名称", render: (_, record: any) => (
{record.title}
), }, { title: "是否显示", dataIndex: "is_show", render: (is_show: number) => ( {is_show === 1 ? "· 显示" : "· 隐藏"} ), }, { title: "创建时间", dataIndex: "created_at", render: (text: string) => {dateFormat(text)}, }, { title: "操作", key: "action", fixed: "right", width: 100, render: (_, record: any) => ( navigate(`/course/update/${record.id}`)} disabled={null} />
delItem(record.id)} disabled={null} />
), }, ]; // 删除课程 const delItem = (id: number) => { if (id === 0) { return; } confirm({ title: "操作确认", icon: , content: "确认删除此课程?", centered: true, okText: "确认", cancelText: "取消", onOk() { course.destroyCourse(id).then(() => { message.success("删除成功"); resetList(); }); }, onCancel() { console.log("Cancel"); }, }); }; // 获取视频列表 const getList = () => { setLoading(true); let categoryIds = category_ids.join(","); let depIds = dep_ids.join(","); course .courseList(page, size, "", "", title, depIds, categoryIds) .then((res: any) => { setTotal(res.data.total); setList(res.data.data); setCategoryCount(res.data.category_count); setLoading(false); }) .catch((err: any) => { console.log("错误,", err); }); }; // 重置列表 const resetList = () => { setPage(1); setSize(10); setList([]); setTitle(""); setRefresh(!refresh); }; // 加载列表 useEffect(() => { getList(); }, [category_ids, dep_ids, refresh, page, size]); 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 onChange = (key: string) => { setTabKey(Number(key)); }; return ( <>
{selLabel}
} p="course" onClick={() => null} disabled={null} />
课程名称: { setTitle(e.target.value); }} style={{ width: 160 }} placeholder="请输入名称关键字" />
record.id} /> ); };