From 0b6fac8161303444ccda64a7e97000cc78b28764 Mon Sep 17 00:00:00 2001 From: Vectorune Date: Tue, 11 Nov 2025 17:00:44 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96=E8=AF=81=E6=98=8E=E8=87=AA?= =?UTF-8?q?=E5=8A=A8=E9=80=89=E4=B8=AD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../GenerateCertificate/ChooseUser.jsx | 19 ++++++++++++++----- 1 file changed, 14 insertions(+), 5 deletions(-) diff --git a/src/page/Dashboard/GenerateCertificate/ChooseUser.jsx b/src/page/Dashboard/GenerateCertificate/ChooseUser.jsx index a94a5e5..0709f0c 100644 --- a/src/page/Dashboard/GenerateCertificate/ChooseUser.jsx +++ b/src/page/Dashboard/GenerateCertificate/ChooseUser.jsx @@ -14,6 +14,8 @@ const ChooseUser = props => { const commonAxios = creatMessageCommonAxios(messageApi); // 初始加载标记 const [isInitialLoad, setIsInitialLoad] = useState(true); + // 新增:用于存储当前选中的行ID(控制表格视觉选中状态) + const [selectedRowKeys, setSelectedRowKeys] = useState([]); const columns = [ { title: 'ID', @@ -46,27 +48,31 @@ const ChooseUser = props => { const [staffNumberPrefix, setStaffNumberPrefix] = useState(""); const [spinning, setSpinning] = useState(true); - // 处理选中行逻辑 + // 处理选中行逻辑(同时更新表格选中状态) const handleRowSelect = (selectedRowKeys, selectedRows) => { console.log(`选中行: ${selectedRowKeys}`, selectedRows); + // 1. 更新按钮状态和请求参数 allowNext(selectedRows.length > 0); if (selectedRows.length > 0) { setRequest({ ...request, stuffNumber: selectedRows[0].staffNumber }); } + // 2. 更新表格选中状态(关键:让表格知道哪些行被选中) + setSelectedRowKeys(selectedRowKeys); }; + // 行选择配置(使用selectedRowKeys控制选中状态) const rowSelection = { onChange: handleRowSelect, + selectedRowKeys: selectedRowKeys, // 绑定选中行ID数组 defaultSelectedRowKeys: () => [], }; - // 通用搜索函数 + // 通用搜索函数(自动选中时同步更新表格状态) const fetchStaffData = (staffNumber) => { if (dataFetchRef.current) return; dataFetchRef.current = true; setSpinning(true); - // 仅在有工号时才拼接参数,否则查询全部 const params = staffNumber ? `&staffNumber=${staffNumber}` : ''; commonAxios.get(`/api/auth/query/registered?page=1&size=10${params}`) .then((response) => { @@ -82,7 +88,10 @@ const ChooseUser = props => { .then((list) => { const fromPrint = searchParams.get('from') === 'print'; 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); } }) @@ -96,7 +105,7 @@ const ChooseUser = props => { }); }; - // 监听URL参数(从打印界面跳转时处理) + // 监听URL参数(从打印界面跳转时处理) useEffect(() => { const staffNumber = searchParams.get('staffNumber'); const fromPrint = searchParams.get('from') === 'print'; // 标记来自打印界面