优化证明自动选中

This commit is contained in:
Vectorune
2025-11-11 17:00:44 +08:00
parent fe309da1e5
commit 0b6fac8161

View File

@ -14,6 +14,8 @@ const ChooseUser = props => {
const commonAxios = creatMessageCommonAxios(messageApi); const commonAxios = creatMessageCommonAxios(messageApi);
// 初始加载标记 // 初始加载标记
const [isInitialLoad, setIsInitialLoad] = useState(true); const [isInitialLoad, setIsInitialLoad] = useState(true);
// 新增用于存储当前选中的行ID控制表格视觉选中状态
const [selectedRowKeys, setSelectedRowKeys] = useState([]);
const columns = [ const columns = [
{ {
title: 'ID', title: 'ID',
@ -46,27 +48,31 @@ const ChooseUser = props => {
const [staffNumberPrefix, setStaffNumberPrefix] = useState(""); const [staffNumberPrefix, setStaffNumberPrefix] = useState("");
const [spinning, setSpinning] = useState(true); const [spinning, setSpinning] = useState(true);
// 处理选中行逻辑 // 处理选中行逻辑(同时更新表格选中状态)
const handleRowSelect = (selectedRowKeys, selectedRows) => { const handleRowSelect = (selectedRowKeys, selectedRows) => {
console.log(`选中行: ${selectedRowKeys}`, selectedRows); console.log(`选中行: ${selectedRowKeys}`, selectedRows);
// 1. 更新按钮状态和请求参数
allowNext(selectedRows.length > 0); allowNext(selectedRows.length > 0);
if (selectedRows.length > 0) { if (selectedRows.length > 0) {
setRequest({ ...request, stuffNumber: selectedRows[0].staffNumber }); setRequest({ ...request, stuffNumber: selectedRows[0].staffNumber });
} }
// 2. 更新表格选中状态(关键:让表格知道哪些行被选中)
setSelectedRowKeys(selectedRowKeys);
}; };
// 行选择配置使用selectedRowKeys控制选中状态
const rowSelection = { const rowSelection = {
onChange: handleRowSelect, onChange: handleRowSelect,
selectedRowKeys: selectedRowKeys, // 绑定选中行ID数组
defaultSelectedRowKeys: () => [], defaultSelectedRowKeys: () => [],
}; };
// 通用搜索函数 // 通用搜索函数(自动选中时同步更新表格状态)
const fetchStaffData = (staffNumber) => { const fetchStaffData = (staffNumber) => {
if (dataFetchRef.current) return; if (dataFetchRef.current) return;
dataFetchRef.current = true; dataFetchRef.current = true;
setSpinning(true); setSpinning(true);
// 仅在有工号时才拼接参数,否则查询全部
const params = staffNumber ? `&staffNumber=${staffNumber}` : ''; const params = staffNumber ? `&staffNumber=${staffNumber}` : '';
commonAxios.get(`/api/auth/query/registered?page=1&size=10${params}`) commonAxios.get(`/api/auth/query/registered?page=1&size=10${params}`)
.then((response) => { .then((response) => {
@ -82,7 +88,10 @@ const ChooseUser = props => {
.then((list) => { .then((list) => {
const fromPrint = searchParams.get('from') === 'print'; const fromPrint = searchParams.get('from') === 'print';
if (fromPrint && list.length === 1 && !autoProcessed) { if (fromPrint && list.length === 1 && !autoProcessed) {
handleRowSelect([list[0].id], [list[0]]); // 自动选中时,同步更新表格选中状态
const targetRowKey = [list[0].id];
handleRowSelect(targetRowKey, [list[0]]); // 触发选中逻辑
setSelectedRowKeys(targetRowKey); // 强制更新表格选中状态
setAutoProcessed(true); setAutoProcessed(true);
} }
}) })