import { useEffect, useState } from "react"; import { Row, Col, Button, Modal, Typography, Input, Table, message, Image, } from "antd"; import { course as 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 [course, setCourse] = useState({}); const [records, setRecords] = useState({}); const [hourCount, setHourCount] = useState({}); const [userDepIds, setUserDepIds] = useState({}); const [departments, setDepartments] = 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) => (
{record.name}
), }, { title: "邮箱", render: (_, record: any) => {record.email}, }, { title: "部门", render: (_, record: any) => (
{userDepIds[record.id] && userDepIds[record.id].map((item: any, index: number) => { return ( {index === userDepIds[record.id].length - 1 ? departments[item] : departments[item] + "、"} ); })}
), }, { title: "课程进度", dataIndex: "progress", render: (_, record: any) => ( 已完成课时: {(records[record.id] && records[record.id].finished_count) || 0} /{" "} {(records[record.id] && records[record.id].hour_count) || course.class_hour} ), }, { title: "第一次学习时间", dataIndex: "created_at", render: (_, record: any) => ( <> {records[record.id] ? ( {dateFormat(records[record.id].created_at)} ) : hourCount[record.id] ? ( {dateFormat(hourCount[record.id])} ) : ( - )} ), }, { title: "学习完成时间", dataIndex: "finished_at", render: (_, record: any) => ( <> {records[record.id] ? ( {dateFormat(records[record.id].finished_at)} ) : ( - )} ), }, { title: "学习进度", dataIndex: "progress", render: (_, record: any) => ( <> {records[record.id] ? ( = 100 ? "c-green" : "c-red" } > {Math.floor( (records[record.id].finished_count / records[record.id].hour_count) * 100 )} % ) : hourCount[record.id] ? ( 1% ) : ( 0% )} ), }, ]; 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); setHourCount(res.data.user_course_hour_user_first_at); setRecords(res.data.user_course_records); setCourse(res.data.course); setDepartments(res.data.departments); setUserDepIds(res.data.user_dep_ids); 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;