fix: 修复审批和抄送人相关问题
1. 修复抄送人显示问题 - select-cc.tsx: 添加从后端获取默认抄送人的逻辑 - 之前只从 sessionStorage 获取,导致默认抄送人无法加载 2. 修复多人审批重复操作问题 - ApprovalService: approve() 方法添加重复审批检查 - 检查用户是否已在当前节点审批过,避免重复操作 - 恢复 isNodeCompleted() 从 form_data 获取审批人列表 3. 审批逻辑优化 - 从 form_data['approvers'] 获取用户实际选择的审批人 - 支持会签(and_approve)多人审批场景 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -87,6 +87,18 @@ class ApprovalService
|
||||
throw new \Exception('当前节点不存在');
|
||||
}
|
||||
|
||||
// 检查当前用户是否已经在当前节点审批过
|
||||
$existingRecord = ApprovalRecord::where('order_id', $order->id)
|
||||
->where('node_id', $currentNode->id)
|
||||
->where('approver_id', $approverId)
|
||||
->whereIn('action', [ApprovalRecord::ACTION_APPROVE, ApprovalRecord::ACTION_REJECT])
|
||||
->first();
|
||||
|
||||
if ($existingRecord) {
|
||||
$actionText = $existingRecord->action === ApprovalRecord::ACTION_APPROVE ? '通过' : '拒绝';
|
||||
throw new \Exception("您已经{$actionText}过此申请,无需重复操作");
|
||||
}
|
||||
|
||||
// 记录审批操作
|
||||
ApprovalRecord::create([
|
||||
'order_id' => $order->id,
|
||||
@@ -331,8 +343,10 @@ class ApprovalService
|
||||
->where('action', 'approve')
|
||||
->get();
|
||||
|
||||
// 从节点的 approvers 字段获取审批人列表
|
||||
$approvers = $node->approvers ?? [];
|
||||
// 从 form_data 获取实际审批人列表(用户可能重新选择过)
|
||||
$order = ApprovalOrder::find($orderId);
|
||||
$formData = $order->form_data ?? [];
|
||||
$approvers = $formData['approvers'] ?? [];
|
||||
|
||||
// 兼容两种格式:[{id:1, name:'...'}] 或 [1]
|
||||
if (!empty($approvers) && is_array($approvers[0] ?? null) && isset($approvers[0]['id'])) {
|
||||
|
||||
Reference in New Issue
Block a user