fix: 修复会签场景下消息卡片更新问题
- 添加 updateMessageCardsForPartialApprove 方法处理会签部分通过 - 会签一人通过后,其他人的消息卡片显示进度并保留按钮 - 修复 Dockerfile 构建顺序问题 - 修复前端类型定义问题 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -110,8 +110,43 @@ class ApprovalService
|
||||
]);
|
||||
|
||||
// 判断节点是否完成
|
||||
if ($this->isNodeCompleted($order->id, $currentNode->id)) {
|
||||
// 对于或签和单人审批,更新其他审批人的消息卡片
|
||||
$nodeCompleted = $this->isNodeCompleted($order->id, $currentNode->id);
|
||||
|
||||
// 会签场景:即使节点未完成,也要更新其他审批人的消息卡片(显示进度)
|
||||
if (!$nodeCompleted && $currentNode->type === ApprovalNode::TYPE_AND_APPROVE) {
|
||||
$approver = User::find($approverId);
|
||||
$approverName = $approver ? $approver->name : '未知';
|
||||
|
||||
// 获取已通过人数和总人数
|
||||
$formData = $order->form_data ?? [];
|
||||
$approvers = $formData['approvers'] ?? [];
|
||||
if (!empty($approvers) && is_array($approvers[0] ?? null) && isset($approvers[0]['id'])) {
|
||||
$approverIds = array_column($approvers, 'id');
|
||||
} else {
|
||||
$approverIds = $approvers;
|
||||
}
|
||||
$totalCount = count($approverIds);
|
||||
|
||||
$approvedRecords = ApprovalRecord::where('order_id', $order->id)
|
||||
->where('node_id', $currentNode->id)
|
||||
->where('action', 'approve')
|
||||
->get();
|
||||
$approvedCount = count($approvedRecords);
|
||||
|
||||
if ($this->notificationService) {
|
||||
$this->notificationService->updateMessageCardsForPartialApprove(
|
||||
$order->id,
|
||||
$currentNode->id,
|
||||
$approverId,
|
||||
$approverName,
|
||||
$approvedCount,
|
||||
$totalCount
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
if ($nodeCompleted) {
|
||||
// 节点完成:对于或签和单人审批,更新其他审批人的消息卡片
|
||||
if ($currentNode->type === ApprovalNode::TYPE_OR_APPROVE || $currentNode->type === 'approver') {
|
||||
$approver = User::find($approverId);
|
||||
$approverName = $approver ? $approver->name : '未知';
|
||||
|
||||
Reference in New Issue
Block a user