feat: 审批功能优化和拒绝原因弹窗

后端改动:
- ApprovalService: 添加调试日志,简化详情页 URL 生成逻辑
- BusinessTripService: 优化出差审批详情展示

前端改动:
- approval/detail: 审批详情页优化,支持查看完整审批流程
- approval/reject: 新增拒绝原因弹窗组件
- business-trip/detail: 出差详情页增强,展示审批状态和操作

功能特性:
- 审批详情页显示完整审批流程和记录
- 拒绝操作支持填写拒绝原因
- 出差申请详情页优化展示

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
root
2026-02-27 17:57:56 +08:00
parent b1ca2c58b7
commit 1004aea725
5 changed files with 329 additions and 31 deletions
+15 -7
View File
@@ -295,12 +295,9 @@ class BusinessTripService
return;
}
// 构建审批链接(使用 approval_order 的 ID)
// 构建审批链接(统一使用审批详情页)
$approvalUrl = "https://xsm.dev.hnxinyouhe.com/approval/detail/{$approvalOrder->id}";
// 构建业务详情链接(用于查看详情按钮)
$detailUrl = "https://xsm.dev.hnxinyouhe.com/business-trip/detail/{$businessTrip->id}";
// 构建内容
$content = "**出差原因**: {$businessTrip->reason}\n";
$content .= "**目的地**: {$businessTrip->destination}\n";
@@ -317,7 +314,7 @@ class BusinessTripService
'applicant' => $businessTrip->user->name,
'type' => '出差申请',
'content' => $content,
'url' => $detailUrl,
'url' => $approvalUrl,
'order_id' => $approvalOrder->id, // 添加 order_id 以显示审批按钮
]);
error_log("✅ 审批人通知成功: approver_id={$approverId}");
@@ -356,7 +353,16 @@ class BusinessTripService
{
try {
$notificationService = new \app\service\FeishuNotificationService();
$detailUrl = "https://xsm.dev.hnxinyouhe.com/business-trip/detail/{$businessTrip->id}";
// 获取关联的审批订单
$approvalOrder = \app\model\ApprovalOrder::where('business_id', $businessTrip->id)
->where('business_type', 'business_trip')
->first();
// 统一使用审批详情页
$detailUrl = $approvalOrder
? "https://xsm.dev.hnxinyouhe.com/approval/detail/{$approvalOrder->id}"
: "https://xsm.dev.hnxinyouhe.com/approval/list";
if ($action === 'approve') {
$title = '出差申请已通过';
@@ -642,7 +648,9 @@ class BusinessTripService
{
try {
$notificationService = new \app\service\FeishuNotificationService();
$detailUrl = "https://xsm.dev.hnxinyouhe.com/business-trip/detail/{$businessTrip->id}";
// 统一使用审批详情页
$detailUrl = "https://xsm.dev.hnxinyouhe.com/approval/detail/{$approvalOrder->id}";
// 获取审批人和抄送人
$formData = $approvalOrder->form_data ?? [];