|
|
@@ -1,4 +1,4 @@
|
|
|
-import React, { useState, useEffect, useRef } from 'react';
|
|
|
+import React, { useState, useEffect } from 'react';
|
|
|
import { useQuery } from '@tanstack/react-query';
|
|
|
import {
|
|
|
Dialog,
|
|
|
@@ -101,55 +101,6 @@ const DisabledPersonSelector: React.FC<DisabledPersonSelectorProps> = ({
|
|
|
const personsData = searchParams.keyword ? data : allData;
|
|
|
const isLoadingData = searchParams.keyword ? isLoading : isLoadingAll;
|
|
|
|
|
|
- // 使用 ref 存储 onSelect 和 onOpenChange,避免依赖函数引用
|
|
|
- const onSelectRef = useRef(onSelect);
|
|
|
- const onOpenChangeRef = useRef(onOpenChange);
|
|
|
- const autoSelectTriggeredRef = useRef(false); // 防止自动选择多次触发
|
|
|
- onSelectRef.current = onSelect;
|
|
|
- onOpenChangeRef.current = onOpenChange;
|
|
|
-
|
|
|
- // 测试环境:当残疾人列表加载完成后,自动选中第一个残疾人并确认选择
|
|
|
- useEffect(() => {
|
|
|
- const isTestMode = typeof window !== 'undefined' && (window as any).__PLAYWRIGHT_TEST__ === true;
|
|
|
-
|
|
|
- if (
|
|
|
- isTestMode &&
|
|
|
- mode === 'multiple' &&
|
|
|
- personsData?.data &&
|
|
|
- personsData.data.length > 0 &&
|
|
|
- selectedPersons.length === 0 &&
|
|
|
- !autoSelectTriggeredRef.current // 防止多次触发
|
|
|
- ) {
|
|
|
- // 过滤掉已禁用的人员
|
|
|
- const availablePersons = personsData.data.filter(
|
|
|
- (person: DisabledPersonData) => !disabledIds.includes(person.id)
|
|
|
- );
|
|
|
- if (availablePersons.length > 0) {
|
|
|
- const selectedPerson = availablePersons[0];
|
|
|
- console.log('[测试自动化] 准备自动选择并确认:', selectedPerson.name, 'ID:', selectedPerson.id);
|
|
|
- console.log('[测试自动化] onSelectRef.current 类型:', typeof onSelectRef.current);
|
|
|
- console.log('[测试自动化] onOpenChangeRef.current 类型:', typeof onOpenChangeRef.current);
|
|
|
-
|
|
|
- // 标记已触发,防止重复执行
|
|
|
- autoSelectTriggeredRef.current = true;
|
|
|
-
|
|
|
- // 测试环境:直接调用 onSelect 并关闭对话框
|
|
|
- setTimeout(() => {
|
|
|
- console.log('[测试自动化] 执行回调...');
|
|
|
- if (typeof onSelectRef.current === 'function') {
|
|
|
- console.log('[测试自动化] 调用 onSelect');
|
|
|
- onSelectRef.current([selectedPerson]);
|
|
|
- }
|
|
|
- if (typeof onOpenChangeRef.current === 'function') {
|
|
|
- console.log('[测试自动化] 调用 onOpenChange');
|
|
|
- onOpenChangeRef.current(false);
|
|
|
- }
|
|
|
- console.log('[测试自动化] 回调执行完成');
|
|
|
- }, 300);
|
|
|
- }
|
|
|
- }
|
|
|
- }, [personsData, mode, disabledIds, selectedPersons.length]);
|
|
|
-
|
|
|
// 重置选择器状态
|
|
|
useEffect(() => {
|
|
|
if (!open) {
|
|
|
@@ -158,7 +109,6 @@ const DisabledPersonSelector: React.FC<DisabledPersonSelectorProps> = ({
|
|
|
setAreaSelection({});
|
|
|
setShowBlacklistConfirm(false);
|
|
|
setPendingSelection(null);
|
|
|
- autoSelectTriggeredRef.current = false; // 重置自动选择 flag
|
|
|
}
|
|
|
}, [open]);
|
|
|
|