fix: 修复会签场景下消息卡片更新问题

- 添加 updateMessageCardsForPartialApprove 方法处理会签部分通过
- 会签一人通过后,其他人的消息卡片显示进度并保留按钮
- 修复 Dockerfile 构建顺序问题
- 修复前端类型定义问题

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
root
2026-03-01 10:33:40 +08:00
parent 95375d9432
commit e13574f6f1
14 changed files with 1529 additions and 19 deletions
+37 -2
View File
@@ -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 : '未知';