From 8e61c16f3694a5ae375cbbd3e538449c8deb24a9 Mon Sep 17 00:00:00 2001 From: selfrelease Date: Sat, 1 Aug 2026 08:19:30 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E4=BF=AE=E5=A4=8D=E5=BE=85=E5=8A=9E?= =?UTF-8?q?=E8=B7=B3=E8=BD=AC=E5=AE=9A=E4=BD=8D=E9=94=99=E8=AF=AF=E5=91=98?= =?UTF-8?q?=E5=B7=A5=20=E2=80=94=20=E7=AD=89=E5=BE=85debouncedSearch?= =?UTF-8?q?=E5=8C=B9=E9=85=8D=E5=90=8E=E6=89=8D=E6=89=93=E5=BC=80=E8=AF=A6?= =?UTF-8?q?=E6=83=85=EF=BC=8C=E9=81=BF=E5=85=8D=E6=97=A7=E6=95=B0=E6=8D=AE?= =?UTF-8?q?=E8=AF=AF=E9=80=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- frontend/src/pages/Roster.tsx | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/frontend/src/pages/Roster.tsx b/frontend/src/pages/Roster.tsx index 8b299da..9ed2d38 100644 --- a/frontend/src/pages/Roster.tsx +++ b/frontend/src/pages/Roster.tsx @@ -70,16 +70,17 @@ export default function Roster() { const pagination = rosterData?.pagination || { page, pageSize, total: 0, totalPages: 0 } // 从 URL query 参数自动定位员工(从待办跳转时) + const employeeParam = searchParams.get('employee') useEffect(() => { - const emp = searchParams.get('employee') - if (emp) { - setSearch(emp) - // 搜索结果加载后自动打开第一个匹配的员工 - if (!isLoading && employees.length > 0 && !selectedId) { - setSelectedId(employees[0].id) - } + if (!employeeParam) return + setSearch(employeeParam) + // 只有当 debouncedSearch 与参数一致时,搜索结果才真正匹配 + if (debouncedSearch === employeeParam && !isLoading && employees.length > 0 && !selectedId) { + setSelectedId(employees[0].id) + // 清除 URL 参数,避免后续搜索时重复触发 + setSearchParams({}, { replace: true }) } - }, [searchParams, isLoading, employees, selectedId]) + }, [employeeParam, debouncedSearch, isLoading, employees, selectedId, setSearchParams]) const addMutation = useMutation({ mutationFn: (data: any) => api.post('/employees', data),