From 82f68bb3833ac43713989c9bded58ba5bb41675d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=8D=A1=E8=8B=A5?= Date: Sun, 8 Mar 2026 17:21:32 +0800 Subject: [PATCH] =?UTF-8?q?sync:=20soul-admin=20=E9=A1=B5=E9=9D=A2=20|=20?= =?UTF-8?q?=E5=8E=9F=E5=9B=A0:=20=E5=89=8D=E7=AB=AF=E9=A1=B5=E9=9D=A2?= =?UTF-8?q?=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- soul-admin/src/pages/content/ContentPage.tsx | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/soul-admin/src/pages/content/ContentPage.tsx b/soul-admin/src/pages/content/ContentPage.tsx index a309ecdd..7e27cde0 100644 --- a/soul-admin/src/pages/content/ContentPage.tsx +++ b/soul-admin/src/pages/content/ContentPage.tsx @@ -36,6 +36,11 @@ import { Plus, Image as ImageIcon, Search, + Trophy, + ChevronLeft, + ChevronRight as ChevronRightIcon, + Pin, + Star, } from 'lucide-react' import { get, put, post, del } from '@/api/client' import { ChapterTree } from './ChapterTree' @@ -206,12 +211,20 @@ export function ContentPage() { const [rankingWeights, setRankingWeights] = useState({ readWeight: 0.5, recencyWeight: 0.3, payWeight: 0.2 }) const [rankingWeightsLoading, setRankingWeightsLoading] = useState(false) const [rankingWeightsSaving, setRankingWeightsSaving] = useState(false) + const [rankingPage, setRankingPage] = useState(1) + const [pinnedSectionIds, setPinnedSectionIds] = useState([]) + const [pinnedLoading, setPinnedLoading] = useState(false) + const [previewPercent, setPreviewPercent] = useState(20) + const [previewPercentLoading, setPreviewPercentLoading] = useState(false) + const [previewPercentSaving, setPreviewPercentSaving] = useState(false) const tree = buildTree(sectionsList) const totalSections = sectionsList.length const rankedSections = [...sectionsList].sort((a, b) => (b.hotScore ?? 0) - (a.hotScore ?? 0)) const RANKING_PAGE_SIZE = 10 + const rankingTotalPages = Math.max(1, Math.ceil(rankedSections.length / RANKING_PAGE_SIZE)) + const rankingPageSections = rankedSections.slice((rankingPage - 1) * RANKING_PAGE_SIZE, rankingPage * RANKING_PAGE_SIZE) const loadList = async () => { setLoading(true)