fix: 修复审批列表首次加载不显示和发起人审批人问题

- 移除 loadingRef,解决 React 18 StrictMode 下请求阻塞问题
- 提交申请时根据选择的审批人动态创建/更新审批节点
- 修改申请提交后跳转到审批列表而非出差列表
- 更新 PROJECT_ISSUES.md 记录所有问题和解决方案

修复问题:
1. 首次进入审批列表"我发起的"不显示数据
2. 发起人也是审批人时"待我审批"不显示
3. 申请提交后跳转到错误的页面

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
root
2026-02-26 09:35:26 +08:00
parent b7919910f1
commit ba41b340fc
4 changed files with 183 additions and 60 deletions
+47 -4
View File
@@ -123,7 +123,7 @@ class BusinessTripService
throw new \Exception('审批人和抄送人不能是同一个人');
}
// 获取审批流程(简化版:直接使用第一个审批人作为单人审批)
// 获取审批流程
$flow = ApprovalFlow::where('business_type', 'business_trip')
->where('status', 1)
->first();
@@ -138,6 +138,49 @@ class BusinessTripService
]);
}
// 根据审批人创建审批节点
$approverIds = array_column($approvers, 'id');
$node = ApprovalNode::where('flow_id', $flow->id)
->where('order', 0)
->first();
if (!$node) {
// 创建第一个审批节点
$node = ApprovalNode::create([
'flow_id' => $flow->id,
'type' => count($approverIds) > 1 ? 'and_approve' : 'approver',
'name' => '审批',
'order' => 0,
'approvers' => $approverIds,
]);
} else {
// 更新现有节点的审批人
$node->approvers = $approverIds;
$node->save();
}
// 创建抄送节点(如果有抄送人)
$ccUserIds = array_column($ccUsers, 'id');
if (!empty($ccUserIds)) {
$ccNode = ApprovalNode::where('flow_id', $flow->id)
->where('type', 'notify')
->where('order', 1)
->first();
if (!$ccNode) {
ApprovalNode::create([
'flow_id' => $flow->id,
'type' => 'notify',
'name' => '抄送',
'order' => 1,
'approvers' => $ccUserIds,
]);
} else {
$ccNode->approvers = $ccUserIds;
$ccNode->save();
}
}
// 创建审批单
$approvalOrder = ApprovalOrder::create([
'business_type' => 'business_trip',
@@ -145,7 +188,7 @@ class BusinessTripService
'title' => '出差申请 - ' . $businessTrip->user->name,
'applicant_id' => $userId,
'status' => ApprovalOrder::STATUS_PENDING,
'current_nodes' => [1], // 简化:使用节点1
'current_nodes' => [$node->id], // 使用创建的节点 ID
'flow_id' => $flow->id,
'form_data' => [
'reason' => $businessTrip->reason,
@@ -165,8 +208,8 @@ class BusinessTripService
// 记录提交操作
ApprovalRecord::create([
'order_id' => $approvalOrder->id,
'node_id' => 1,
'node_type' => 'single_approve',
'node_id' => $node->id,
'node_type' => $node->type,
'approver_id' => $userId,
'action' => 'submit',
'comment' => null,