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),