增加每日接单排行榜

This commit is contained in:
yml2213
2026-08-19 18:55:04 +08:00
parent ca34187b0b
commit 7b92d6b219
8 changed files with 65 additions and 15 deletions
@@ -34,7 +34,7 @@ import {
grabWorkerOrder,
joinWorkerSharingOrder,
} from '@/services/worker'
import type { WorkOrder, WorkerUser } from '@/types/worker-platform'
import type { WorkOrder, WorkerLeaderboardPeriod, WorkerUser } from '@/types/worker-platform'
import { useIsMobile } from '@/utils/use-is-mobile'
import {
resolveHallDepositAmount,
@@ -60,6 +60,7 @@ export default function WorkerHallPage() {
const [grabbingId, setGrabbingId] = useState(0)
const [sharingOrder, setSharingOrder] = useState<WorkOrder | null>(null)
const [leaderboardOpen, setLeaderboardOpen] = useState(false)
const [leaderboardPeriod, setLeaderboardPeriod] = useState<WorkerLeaderboardPeriod>('all')
const [sharingQuantity, setSharingQuantity] = useState(1)
const [submittingSharing, setSubmittingSharing] = useState(false)
const loadMoreRef = useRef<HTMLDivElement | null>(null)
@@ -117,8 +118,8 @@ export default function WorkerHallPage() {
})
const leaderboardQuery = useQuery({
queryKey: ['worker-hall-leaderboard'],
queryFn: () => fetchWorkerHallLeaderboard(),
queryKey: ['worker-hall-leaderboard', leaderboardPeriod],
queryFn: () => fetchWorkerHallLeaderboard(leaderboardPeriod),
enabled: leaderboardOpen,
retry: false,
})
@@ -778,8 +779,19 @@ export default function WorkerHallPage() {
onClose={() => setLeaderboardOpen(false)}
>
<div className="worker-hall-leaderboard">
<Tabs
activeKey={leaderboardPeriod}
className="worker-hall-leaderboard-tabs"
items={[
{ key: 'all', label: '总榜' },
{ key: 'daily', label: '每日榜' },
]}
onChange={(key) => setLeaderboardPeriod(key === 'daily' ? 'daily' : 'all')}
/>
<Typography.Text type="secondary" className="worker-hall-leaderboard-caption">
{leaderboardPeriod === 'daily'
? '按今日验收完成数量排行(北京时间)'
: '按累计验收完成数量排行'}
</Typography.Text>
{leaderboardQuery.isLoading ? (
<div className="worker-hall-leaderboard-loading">
+3 -2
View File
@@ -8,6 +8,7 @@ import type {
WorkerFinanceRequest,
WorkerHallOrdersResponse,
WorkerLeaderboardResponse,
WorkerLeaderboardPeriod,
WorkerListResponse,
WorkerLoginResponse,
WorkerOrderOverviewResponse,
@@ -145,8 +146,8 @@ export function fetchWorkerHallOrders(params?: Record<string, unknown>) {
return apiGet<WorkerHallOrdersResponse>('/api/v1/worker/hall/orders', params)
}
export function fetchWorkerHallLeaderboard() {
return apiGet<WorkerLeaderboardResponse>('/api/v1/worker/hall/leaderboard')
export function fetchWorkerHallLeaderboard(period: WorkerLeaderboardPeriod = 'all') {
return apiGet<WorkerLeaderboardResponse>('/api/v1/worker/hall/leaderboard', { period })
}
export function grabWorkerOrder(workOrderId: number) {
+4
View File
@@ -1915,6 +1915,10 @@ body {
font-size: 12px;
}
.worker-hall-leaderboard-tabs .ant-tabs-nav {
margin-bottom: 0;
}
.worker-hall-leaderboard-loading {
display: flex;
justify-content: center;
@@ -473,6 +473,8 @@ export type WorkerLeaderboardEntry = {
acceptedOrderCount: number
}
export type WorkerLeaderboardPeriod = 'all' | 'daily'
export type WorkerLeaderboardResponse = {
items: WorkerLeaderboardEntry[]
current: {