From ba919d2cdc6a1fa20f7c8eb3cb59614d983492d2 Mon Sep 17 00:00:00 2001 From: root Date: Thu, 26 Feb 2026 00:24:48 +0800 Subject: [PATCH] =?UTF-8?q?debug:=20=E5=A2=9E=E5=8A=A0=E6=9B=B4=E8=AF=A6?= =?UTF-8?q?=E7=BB=86=E7=9A=84=E8=B0=83=E8=AF=95=E6=97=A5=E5=BF=97=E6=9D=A5?= =?UTF-8?q?=E6=8E=92=E6=9F=A5=E5=AE=A1=E6=89=B9=E6=8C=89=E9=92=AE=E4=B8=8D?= =?UTF-8?q?=E6=98=BE=E7=A4=BA=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 添加类型检查日志(userId、approvers类型) - 添加多种匹配方式尝试 - 显示操作按钮状态 Co-Authored-By: Claude Opus 4.6 --- frontend/src/pages/approval/detail.tsx | 63 ++++++++++++++++++++------ 1 file changed, 48 insertions(+), 15 deletions(-) diff --git a/frontend/src/pages/approval/detail.tsx b/frontend/src/pages/approval/detail.tsx index 9a58cce..5d8d0f8 100644 --- a/frontend/src/pages/approval/detail.tsx +++ b/frontend/src/pages/approval/detail.tsx @@ -179,13 +179,20 @@ export default function ApprovalDetail() { hasDetail: !!detail, hasUser: !!user, userId: user?.id, + userIdType: typeof user?.id, status: detail?.status, currentNodes: detail?.current_nodes, nodesCount: detail?.flow?.nodes?.length, }) - if (!detail || !user) return false - if (detail.status !== 'pending') return false + if (!detail || !user) { + console.log('❌ 缺少 detail 或 user') + return false + } + if (detail.status !== 'pending') { + console.log('❌ 状态不是 pending') + return false + } // 检查当前用户是否在 current_nodes 对应的节点审批人列表中 const currentNodeIds = detail.current_nodes || [] @@ -193,7 +200,13 @@ export default function ApprovalDetail() { console.log('🔍 节点信息:', { currentNodeIds, - nodes: nodes.map(n => ({ id: n.id, name: n.name, approvers: n.approvers })), + nodes: nodes.map(n => ({ + id: n.id, + name: n.name, + approvers: n.approvers, + approversType: typeof n.approvers, + approversFirstType: n.approvers?.[0] !== undefined ? typeof n.approvers[0] : 'undefined' + })), }) for (const nodeId of currentNodeIds) { @@ -202,20 +215,31 @@ export default function ApprovalDetail() { node, approvers: node?.approvers, userId: user.id, + userIdType: typeof user.id, isInApprovers: node?.approvers?.includes(user.id), + // 尝试类型转换后的检查 + isInApproversAsString: node?.approvers?.includes(String(user.id)), + isInApproversAsNumber: node?.approvers?.includes(Number(user.id)), }) - if (node && node.approvers && node.approvers.includes(user.id)) { - // 检查是否已审批 - 使用 approver_id 而不是 approver.id - const hasApproved = detail.records.some( - (r) => r.node_id === nodeId && r.approver_id === user.id - ) - console.log(`🔍 节点 ${nodeId} 审批状态:`, { - hasApproved, - records: detail.records.filter(r => r.node_id === nodeId), - }) - if (!hasApproved) { - console.log('✅ 是当前审批人!') - return true + + if (node && node.approvers) { + // 尝试多种方式匹配 + const matches = node.approvers.some(a => a === user.id || a === String(user.id) || Number(a) === user.id) + console.log(`🔍 节点 ${nodeId} 匹配结果:`, { matches }) + + if (matches) { + // 检查是否已审批 - 使用 approver_id 而不是 approver.id + const hasApproved = detail.records.some( + (r) => r.node_id === nodeId && r.approver_id === user.id + ) + console.log(`🔍 节点 ${nodeId} 审批状态:`, { + hasApproved, + records: detail.records.filter(r => r.node_id === nodeId), + }) + if (!hasApproved) { + console.log('✅ 是当前审批人!') + return true + } } } } @@ -233,6 +257,15 @@ export default function ApprovalDetail() { const canCancel = detail.status === 'pending' && isOwner const canApprove = isCurrentApprover() + // 显示审批按钮状态 + console.log('🎯 操作按钮状态:', { + canCancel, + canApprove, + isOwner, + applicantName: detail.applicant?.name, + userName: user?.name, + }) + // 格式化时间 const formatTime = (timeStr: string) => { return dayjs(timeStr).format('YYYY-MM-DD HH:mm')