import { useEffect, useState } from "react"; import { Row, Col, Button, Modal, Typography, Input, Table, message, Image, } from "antd"; import { course } from "../../api"; import { useParams, useLocation } from "react-router-dom"; import type { ColumnsType } from "antd/es/table"; import { BackBartment } from "../../compenents"; import { ExclamationCircleFilled } from "@ant-design/icons"; import { PerButton } from "../../compenents"; import { dateFormat } from "../../utils/index"; const { confirm } = Modal; interface DataType { id: React.Key; title: string; created_at: string; thumb: string; charge: number; is_show: number; } const CourseUserPage = () => { const params = useParams(); const result = new URLSearchParams(useLocation().search); const [list, setList] = useState([]); const [users, setUsers] = 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 [name, setName] = useState(""); const [email, setEmail] = useState(""); const [idCard, setIdCard] = useState(""); const [selectedRowKeys, setSelectedRowKeys] = useState([]); const [title, setTitle] = useState(String(result.get("title"))); const columns: ColumnsType = [ { title: "学员", render: (_, record: any) => (
i.id === record.user_id).avatar} > {users.find((i: any) => i.id === record.user_id).name}
), }, { title: "课程进度", dataIndex: "progress", render: (_, record: any) => ( 已完成课时:{record.finished_count} / {record.hour_count} ), }, { title: "第一次学习时间", dataIndex: "created_at", render: (text: string) => {dateFormat(text)}, }, { title: "学习完成时间", dataIndex: "finished_at", render: (text: string) => {dateFormat(text)}, }, { title: "学习进度", dataIndex: "progress", render: (progress: number) => ( = 10000 ? "c-green" : "c-red"}> {Math.floor(progress / 100)}% ), }, ]; useEffect(() => { getList(); }, [params.courseId, refresh, page, size]); const getList = () => { setLoading(true); course .courseUser( Number(params.courseId), page, size, "", "", name, email, idCard ) .then((res: any) => { setTotal(res.data.total); setList(res.data.data); setUsers(res.data.users); setLoading(false); }) .catch((err: any) => { console.log("错误,", err); }); }; // 重置列表 const resetList = () => { setPage(1); setSize(10); setList([]); setName(""); setEmail(""); setIdCard(""); 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 delItem = () => { if (selectedRowKeys.length === 0) { message.error("请选择学员后再重置"); return; } confirm({ title: "操作确认", icon: , content: "确认重置选中学员学习记录?", centered: true, okText: "确认", cancelText: "取消", onOk() { course .destroyCourseUser(Number(params.courseId), selectedRowKeys) .then(() => { message.success("清除成功"); resetList(); }); }, onCancel() { console.log("Cancel"); }, }); }; const rowSelection = { onChange: (selectedRowKeys: React.Key[], selectedRows: DataType[]) => { setSelectedRowKeys(selectedRowKeys); }, }; return ( <>
delItem()} disabled={selectedRowKeys.length === 0} />
学员姓名: { setName(e.target.value); }} allowClear style={{ width: 160 }} placeholder="请输入姓名关键字" />
学员邮箱: { setEmail(e.target.value); }} allowClear style={{ width: 160 }} placeholder="请输入学员邮箱" />
{/*
身份证号: { setIdCard(e.target.value); }} style={{ width: 160 }} placeholder="请输入身份证号" />
*/}
record.id} /> ); }; export default CourseUserPage;