From 9372053574bf2245109c25914a8339ff0a4793ce Mon Sep 17 00:00:00 2001 From: logan Date: Tue, 26 May 2026 15:59:31 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20WorkflowPage=20UserDropdown=20selectedId?= =?UTF-8?q?s.map=20=E6=8A=A5=E9=94=99=20=E2=80=94=20=E9=98=B2=E5=BE=A1?= =?UTF-8?q?=E9=9D=9E=E6=95=B0=E7=BB=84=E5=80=BC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - UserDropdown 组件加 Array.isArray(selectedIds) 防御 - 加载 workflow steps 时 approver_ids 加 try/catch 和类型判断 - 兼容后端返回 string/JSON/array/null 各种格式 --- frontend/src/pages/WorkflowPage.tsx | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/frontend/src/pages/WorkflowPage.tsx b/frontend/src/pages/WorkflowPage.tsx index 44c55a8..0c22b86 100644 --- a/frontend/src/pages/WorkflowPage.tsx +++ b/frontend/src/pages/WorkflowPage.tsx @@ -97,7 +97,8 @@ interface UserDropdownProps { function UserDropdown({ users, selectedIds, label, onToggle, onToggleAll, onClear, getUserName }: UserDropdownProps) { const [open, setOpen] = useState(false); - const allSelected = selectedIds.length === users.length && users.length > 0; + const ids = Array.isArray(selectedIds) ? selectedIds : []; + const allSelected = ids.length === users.length && users.length > 0; return (
@@ -112,20 +113,20 @@ function UserDropdown({ users, selectedIds, label, onToggle, onToggleAll, onClea }`} > - {selectedIds.length === 0 + {ids.length === 0 ? `${label} * 请选择` - : selectedIds.length === 1 - ? getUserName(selectedIds[0]) - : `${label} (${selectedIds.length}人)` + : ids.length === 1 + ? getUserName(ids[0]) + : `${label} (${ids.length}人)` } {/* Selected tags */} - {selectedIds.length > 1 && ( + {ids.length > 1 && (
- {selectedIds.map((uid) => ( + {ids.map((uid) => ( { try { const p = JSON.parse(s.approver_ids as string); return Array.isArray(p) ? p : []; } catch { return []; } })() : []), })) ); } else {