diff --git a/src/components/Rank/index.jsx b/src/components/Rank/index.jsx
index 1fdf5c0..b6115d5 100644
--- a/src/components/Rank/index.jsx
+++ b/src/components/Rank/index.jsx
@@ -1,58 +1,79 @@
-import { Avatar } from "@arco-design/web-react";
+import { Avatar, Skeleton } from "@arco-design/web-react";
import "./index.css";
-const Rank = ({ className }) => {
+const Rank = ({ className, data = null, loading = false }) => {
+ if (loading) {
+ return (
+
+ );
+ }
+
+ if (!data || !data.rankings || data.rankings.length === 0) {
+ return (
+
+ );
+ }
+
+ const rankings = data.rankings.slice(0, 6);
+
+ // 安全处理领奖台学生,确保至少有3个位置
+ const podiumStudents = [
+ rankings[1] || null, // 第2名
+ rankings[0] || null, // 第1名
+ rankings[2] || null // 第3名
+ ];
+
+ const listStudents = rankings.slice(3);
+
return (
);
diff --git a/src/pages/Dashboard/index.jsx b/src/pages/Dashboard/index.jsx
index 1cce0a7..5cc7e82 100644
--- a/src/pages/Dashboard/index.jsx
+++ b/src/pages/Dashboard/index.jsx
@@ -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 } from "@/services/dashboard";
import "./index.css";
const Dashboard = () => {
+ const [rankingData, setRankingData] = useState(null);
+ const [rankingLoading, setRankingLoading] = useState(true);
+
+ useEffect(() => {
+ fetchRankingData();
+ }, []);
+
+ const fetchRankingData = async () => {
+ try {
+ setRankingLoading(true);
+ const response = await getClassRanking();
+ if (response) {
+ setRankingData(response);
+ }
+ } catch (error) {
+ console.error('Failed to fetch ranking data:', error);
+ } finally {
+ setRankingLoading(false);
+ }
+ };
+
return (
@@ -18,7 +40,7 @@ const Dashboard = () => {
-
+
diff --git a/src/services/dashboard.js b/src/services/dashboard.js
index 61fb5f2..7eee5fa 100644
--- a/src/services/dashboard.js
+++ b/src/services/dashboard.js
@@ -20,7 +20,7 @@ export async function getLearningProgressSummary(params = {}) {
}
// 获取当前学生班级排名
-export async function getClassRanking(params = {}) {
+export async function getClassRanking(params = { limit: 6 }) {
return request({
url: `/api/rankings/class`,
method: "GET",