import { useState, useEffect, useRef } from "react"; import styles from "./index.module.less"; import { Row, Col } from "antd"; import { Link, useNavigate } from "react-router-dom"; import banner from "../../assets/images/dashboard/img-a1.png"; import icon from "../../assets/images/dashboard/icon-more.png"; import iconN1 from "../../assets/images/dashboard/icon-n1.png"; import iconN2 from "../../assets/images/dashboard/icon-n2.png"; import iconN3 from "../../assets/images/dashboard/icon-n3.png"; import { Footer } from "../../compenents/footer"; import { dashboard } from "../../api/index"; import { timeFormat } from "../../utils/index"; import * as echarts from "echarts"; const DashboardPage = () => { let chartRef = useRef(null); const navigate = useNavigate(); const [basicData, setBasicData] = useState([]); const getData = () => { dashboard.dashboardList().then((res: any) => { setBasicData(res.data); renderPieView({ videos_count: res.data.resource_video_total, images_count: res.data.resource_image_total, }); return () => { window.onresize = null; }; }); }; useEffect(() => { getData(); }, []); const renderPieView = (params: any) => { let num = params.videos_count + params.images_count; let data = [ { name: "视频数", value: params.videos_count, }, { name: "图片数", value: params.images_count, }, ]; let dom: any = chartRef.current; let myChart = echarts.init(dom); myChart.setOption({ title: { textAlign: "center", x: "49.5%", y: "29%", text: num, //主标题 subtext: "总资源数", //副标题 textStyle: { //标题样式 fontSize: 24, fontWeight: "bolder", color: "#333", }, subtextStyle: { //副标题样式 fontSize: 14, fontWeight: "bolder", color: "rgba(0, 0, 0, 0.45)", formatter: "", }, }, legend: [ { selectedMode: true, // 图例选择的模式,控制是否可以通过点击图例改变系列的显示状态。默认开启图例选择,可以设成 false 关闭。 bottom: "10%", left: "center", textStyle: { // 图例的公用文本样式。 fontSize: 14, color: " #333333", }, data: ["视频数", "图片数"], }, ], tooltip: { trigger: "item", formatter: " {b}: {c} ", }, label: { formatter: " {b}: {c} ", rich: { per: { color: "#000", }, }, }, series: [ { type: "pie", radius: ["40%", "60%"], // 环比 圈的大小 center: ["50%", "40%"], // 图形在整个canvas中的位置 color: ["#FE8650", "#FFB504"], // item的取色盘 avoidLabelOverlap: true, itemStyle: { borderColor: "#fff", // 白边 borderWidth: 2, }, emphasis: { // 高亮item的样式 disabled: true, }, label: { normal: { show: true, color: "#4c4a4a", formatter: "{active|{c}}\n\r{total| {b} }", rich: { total: { fontSize: 15, color: "#454c5c", }, active: { fontSize: 15, color: "#6c7a89", lineHeight: 30, }, }, }, }, data: data, }, ], }); window.onresize = () => { myChart.resize(); }; }; const compareNum = (today: number, yesterday: number) => { let num = today - yesterday || 0; if (num < 0) { return ( {Math.abs(num)} ); } return ( {Math.abs(num)} ); }; return ( <>
今日学习学员
{basicData.user_learn_today}
较昨日 {compareNum( basicData.user_learn_today, basicData.user_learn_yesterday )}
总学员数
{basicData.user_total}
较昨日 {compareNum(basicData.user_today, 0)}
线上课数
{basicData.course_total}
快捷操作
{ navigate("/member/index"); }} > 添加学员
{ navigate("/videos"); }} > 上传视频
{ navigate("/course"); }} > 线上课
{ navigate("/department"); }} > 新建部门
今日学习排行
{basicData.user_learn_top10 && (
{basicData.user_learn_top10[0] && (
{ basicData.user_learn_top10_users[ basicData.user_learn_top10[0].user_id ].name }
)}
{basicData.user_learn_top10[0] && (
{timeFormat( Number(basicData.user_learn_top10[0].duration) / 1000 )}
)}
{basicData.user_learn_top10[1] && (
{ basicData.user_learn_top10_users[ basicData.user_learn_top10[1].user_id ].name }
)}
{basicData.user_learn_top10[1] && (
{timeFormat( Number(basicData.user_learn_top10[1].duration) / 1000 )}
)}
{basicData.user_learn_top10[2] && (
{ basicData.user_learn_top10_users[ basicData.user_learn_top10[2].user_id ].name }
)}
{basicData.user_learn_top10[2] && (
{timeFormat( Number(basicData.user_learn_top10[2].duration) / 1000 )}
)}
4
{basicData.user_learn_top10[3] && (
{ basicData.user_learn_top10_users[ basicData.user_learn_top10[3].user_id ].name }
)}
{basicData.user_learn_top10[3] && (
{timeFormat( Number(basicData.user_learn_top10[3].duration) / 1000 )}
)}
5
{basicData.user_learn_top10[4] && (
{ basicData.user_learn_top10_users[ basicData.user_learn_top10[4].user_id ].name }
)}
{basicData.user_learn_top10[4] && (
{timeFormat( Number(basicData.user_learn_top10[4].duration) / 1000 )}
)}
)} {basicData.user_learn_top10 && (
6
{basicData.user_learn_top10[5] && (
{ basicData.user_learn_top10_users[ basicData.user_learn_top10[5].user_id ].name }
)}
{basicData.user_learn_top10[5] && (
{timeFormat( Number(basicData.user_learn_top10[5].duration) / 1000 )}
)}
7
{basicData.user_learn_top10[6] && (
{ basicData.user_learn_top10_users[ basicData.user_learn_top10[6].user_id ].name }
)}
{basicData.user_learn_top10[6] && (
{timeFormat( Number(basicData.user_learn_top10[6].duration) / 1000 )}
)}
8
{basicData.user_learn_top10[7] && (
{ basicData.user_learn_top10_users[ basicData.user_learn_top10[7].user_id ].name }
)}
{basicData.user_learn_top10[7] && (
{timeFormat( Number(basicData.user_learn_top10[7].duration) / 1000 )}
)}
9
{basicData.user_learn_top10[8] && (
{ basicData.user_learn_top10_users[ basicData.user_learn_top10[8].user_id ].name }
)}
{basicData.user_learn_top10[8] && (
{timeFormat( Number(basicData.user_learn_top10[8].duration) / 1000 )}
)}
10
{basicData.user_learn_top10[9] && (
{ basicData.user_learn_top10_users[ basicData.user_learn_top10[9].user_id ].name }
)}
{basicData.user_learn_top10[9] && (
{timeFormat( Number(basicData.user_learn_top10[9].duration) / 1000 )}
)}
)}
部门数
{basicData.department_total}
分类数
{basicData.resource_category_total}
管理员
{basicData.admin_user_total}
产品文档
点击查看产品文档,快速玩转Playedu!
资源统计
); }; export default DashboardPage;