From fddb75707811bd0599eee64c5ef3e8806509b2ff Mon Sep 17 00:00:00 2001 From: yml2213 Date: Sat, 1 Aug 2026 18:23:58 +0800 Subject: [PATCH] =?UTF-8?q?=E6=8A=A2=E5=8D=95=E5=A4=A7=E5=8E=85=E6=96=B0?= =?UTF-8?q?=E5=A2=9E=E8=87=AA=E5=8A=A8=E5=88=B7=E6=96=B0=E5=BC=80=E5=85=B3?= =?UTF-8?q?=E5=B9=B6=E7=A7=BB=E9=99=A4=E5=BB=B6=E8=BF=9F=E5=8F=AF=E8=A7=81?= =?UTF-8?q?=E6=8F=90=E7=A4=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/pages/worker/WorkerHallPage.tsx | 46 +++++++++++++++---- 1 file changed, 36 insertions(+), 10 deletions(-) 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)}` }