diff --git a/apps/frontend/src/pages/worker/WorkerHallPage.tsx b/apps/frontend/src/pages/worker/WorkerHallPage.tsx index 6b8cecd9..b20bbc77 100644 --- a/apps/frontend/src/pages/worker/WorkerHallPage.tsx +++ b/apps/frontend/src/pages/worker/WorkerHallPage.tsx @@ -14,11 +14,13 @@ import { Pagination, Space, Spin, + Switch, Tabs, Tag, + Tooltip, Typography, } from 'antd' -import { useState } from 'react' +import { useEffect, useState } from 'react' import { fetchWorkerHallOrders, @@ -49,6 +51,20 @@ export default function WorkerHallPage() { const [sharingOrder, setSharingOrder] = useState(null) const [sharingQuantity, setSharingQuantity] = useState(1) const [submittingSharing, setSubmittingSharing] = useState(false) + const [autoRefresh, setAutoRefresh] = useState(loadAutoRefreshPreference) + + useEffect(() => { + if (!autoRefresh) return + const timer = window.setInterval(() => { + refreshAll() + }, 5000) + return () => window.clearInterval(timer) + }, [autoRefresh]) + + function toggleAutoRefresh(enabled: boolean) { + setAutoRefresh(enabled) + localStorage.setItem(AUTO_REFRESH_STORAGE_KEY, enabled ? '1' : '0') + } const ordersQuery = useQuery({ queryKey: ['worker-hall-orders', keyword, categoryId, page, pageSize], @@ -104,7 +120,6 @@ export default function WorkerHallPage() { const orders = ordersQuery.data?.data.items || [] const pagination = ordersQuery.data?.data.pagination const categories = ordersQuery.data?.data.categories || [] - const visibleDelaySeconds = Number(ordersQuery.data?.data.visibleDelaySeconds || 0) const worker = profileQuery.data?.data.worker const activeCount = hallSummaryQuery.data?.activeCount || 0 const pendingAcceptanceCount = hallSummaryQuery.data?.pendingAcceptanceCount || 0 @@ -220,6 +235,19 @@ export default function WorkerHallPage() { > 刷新 + + + ) : null} - {visibleDelaySeconds > 0 ? ( - - ) : null} - {ordersQuery.isLoading ? (
@@ -647,6 +667,12 @@ function asRecord(value: unknown): Record { : {} } +const AUTO_REFRESH_STORAGE_KEY = 'worker-hall-auto-refresh' + +function loadAutoRefreshPreference(): boolean { + return localStorage.getItem(AUTO_REFRESH_STORAGE_KEY) === '1' +} + function formatMoney(value: number | undefined) { return `¥${((Number(value || 0) || 0) / 100).toFixed(2)}` }