feat: 🎸 对接了一些接口

This commit is contained in:
2025-08-22 10:32:57 +08:00
parent 145b39b5c7
commit d0075937e1
11 changed files with 141 additions and 95 deletions

View File

@@ -1,14 +1,23 @@
import "./index.css";
import { useNavigate } from "react-router-dom";
import icon1 from "@/assets/images/Dashboard/QuickAccess/icon1.png";
import icon2 from "@/assets/images/Dashboard/QuickAccess/icon2.png";
import icon3 from "@/assets/images/Dashboard/QuickAccess/icon3.png";
import "./index.css";
const QuickAccess = () => {
const navigate = useNavigate();
const handleClick = (path) => {
navigate(path);
};
return (
<div className="module-quick-access-wrapper">
<p className="module-quick-access-title">快捷入口</p>
<ul className="module-quick-access-list">
<li className="module-quick-access-item">
<li
className="module-quick-access-item"
onClick={() => handleClick("/expert-support")}
>
<img
src={icon1}
alt="icon1"
@@ -16,7 +25,10 @@ const QuickAccess = () => {
/>
<p className="module-quick-access-item-text">专家支持中心</p>
</li>
<li className="module-quick-access-item">
<li
className="module-quick-access-item"
onClick={() => handleClick("/live")}
>
<img
src={icon2}
alt="icon1"
@@ -24,7 +36,10 @@ const QuickAccess = () => {
/>
<p className="module-quick-access-item-text">课程直播间</p>
</li>
<li className="module-quick-access-item">
<li
className="module-quick-access-item"
onClick={() => handleClick("/career-tree")}
>
<img
src={icon3}
alt="icon1"

View File

@@ -6,9 +6,31 @@ import StudyStatus from "./components/StudyStatus";
import Rank from "@/components/Rank";
import StageProgress from "@/components/StageProgress";
import TaskList from "./components/TaskList";
import { getClassRanking, getLearningProgressSummary } from "@/services";
import "./index.css";
const Dashboard = () => {
const [rankData, setRankData] = useState([]); // 班级排名数据
// 获取整体学习进度
const queryLearningProgressSummary = async () => {
const res = await getLearningProgressSummary({ period: "semester" });
console.log("learningProgressSummary", res);
};
// 获取班级排名
const queryRankData = async () => {
const res = await getClassRanking();
if (res.success) {
setRankData(res.data);
}
};
useEffect(() => {
queryRankData();
queryLearningProgressSummary();
}, []);
return (
<div className="dashboard">
<StageProgress showBlockageAlert={true} />
@@ -18,7 +40,7 @@ const Dashboard = () => {
<QuickAccess />
<CalendarTaskModule />
<StudyStatus />
<Rank />
<Rank data={rankData} />
<TaskList />
</div>
</div>

View File

@@ -27,7 +27,7 @@ const ProfileCard = () => {
<li className="profile-card-achievement-info-item">
<span className="profile-card-achievement-info-item-title">学分</span>
<span className="profile-card-achievement-info-item-text">
{studentInfo?.totalCredits || 0}
{studentInfo?.myRank?.score || "-"}
</span>
</li>
<li className="profile-card-achievement-info-item">
@@ -35,7 +35,7 @@ const ProfileCard = () => {
班级排名
</span>
<span className="profile-card-achievement-info-item-text">
{studentInfo?.badges?.classRank || "-"}
{studentInfo?.myRank?.rank || "-"}
</span>
</li>
<li className="profile-card-achievement-info-item">

View File

@@ -1,11 +1,11 @@
import * as echarts from "echarts";
import { useState, useEffect } from "react";
import { useSelector } from "react-redux";
import StudyProgress from "../StudyProgress";
import ScoreRingChart from "../ScoreRingChart";
import AttendanceRingChart from "../AttendanceRingChart";
import { getLoginStudentProgress } from "@/services";
import { getDashboardStatistics } from "@/services";
import "./index.css";
import { useEffect } from "react";
const ringData = [
{
@@ -54,17 +54,14 @@ const attendanceData = [
const StudyStudes = () => {
const studentInfo = useSelector((state) => state.student.studentInfo);
const [progressData, setProgressData] = useState({});
const queryLoginStudentProgress = async () => {
const res = await getLoginStudentProgress();
if (res.success) {
setProgressData(res.data);
}
// 获取仪表盘数据
const queryDashboardStatistics = async () => {
const res = await getDashboardStatistics();
console.log(res);
};
useEffect(() => {
queryLoginStudentProgress();
queryDashboardStatistics();
}, []);
return (

View File

@@ -1,10 +1,40 @@
import { useState, useEffect } from "react";
import { useDispatch } from "react-redux";
import ProfileCard from "./components/ProfileCard";
import Rank from "@/components/Rank";
import StageProgress from "@/components/StageProgress";
import StudyStudes from "./components/StudyStudes";
import { updateStudentInfo } from "@/store/slices/studentSlice";
import { getClassRanking, getLearningProgressSummary } from "@/services";
import "./index.css";
const PersonalProfile = () => {
const dispatch = useDispatch();
const [rankData, setRankData] = useState([]); // 班级排名数据
const queryLearningProgressSummary = async () => {
const res = await getLearningProgressSummary({ period: "semester" });
console.log("learningProgressSummary", res);
};
// 获取班级排名
const queryRankData = async () => {
const res = await getClassRanking();
if (res.success) {
const studentInfo = {
myRank: res.data.myRank,
classInfo: res.data.classInfo,
};
setRankData(res.data);
dispatch(updateStudentInfo(studentInfo));
}
};
useEffect(() => {
queryRankData();
queryLearningProgressSummary();
}, []);
return (
<div className="personal-profile">
<StageProgress />
@@ -13,7 +43,7 @@ const PersonalProfile = () => {
<div className="unified-profile-layout">
<div className="unified-profile-left">
<ProfileCard />
<Rank className="unified-profile-rank" />
<Rank className="unified-profile-rank" data={rankData} />
</div>
<div className="unified-profile-right">
<StudyStudes />