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:
@@ -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,
|
||||
|
||||
Reference in New Issue
Block a user