182 lines
4.5 KiB
Markdown
182 lines
4.5 KiB
Markdown
|
|
# 审批流程模块 (Approval Module)
|
||
|
|
|
||
|
|
## 概述
|
||
|
|
|
||
|
|
审批流程模块是系统的核心功能,支持多种审批节点类型和灵活的流程配置。
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## 节点类型
|
||
|
|
|
||
|
|
| 类型 | 代码 | 说明 |
|
||
|
|
|------|------|------|
|
||
|
|
| 单人审批 | `single_approve` | 需要一个审批人通过 |
|
||
|
|
| 会签 | `and_sign` | 所有人都需要通过 |
|
||
|
|
| 或签 | `or_sign` | 任一人通过即可 |
|
||
|
|
| 通知 | `notify` | 仅通知,无需审批 |
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## 订单状态
|
||
|
|
|
||
|
|
| 状态 | 代码 | 说明 |
|
||
|
|
|------|------|------|
|
||
|
|
| 待审批 | `pending` | 等待当前节点审批 |
|
||
|
|
| 已通过 | `approved` | 流程完成,已通过 |
|
||
|
|
| 已拒绝 | `rejected` | 流程完成,已拒绝 |
|
||
|
|
| 已撤销 | `cancelled` | 申请人主动撤销 |
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## 列表过滤逻辑
|
||
|
|
|
||
|
|
### 我发起的
|
||
|
|
```sql
|
||
|
|
applicant_id = current_user_id
|
||
|
|
```
|
||
|
|
|
||
|
|
### 待我审批
|
||
|
|
```sql
|
||
|
|
status = 'pending'
|
||
|
|
AND current_user_id IN 当前节点审批人列表
|
||
|
|
AND NOT EXISTS (已审批记录)
|
||
|
|
```
|
||
|
|
|
||
|
|
### 我已审批
|
||
|
|
```sql
|
||
|
|
EXISTS (用户有审批记录)
|
||
|
|
AND status IN ('approved', 'rejected', 'cancelled')
|
||
|
|
```
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## API 接口
|
||
|
|
|
||
|
|
| 接口 | 方法 | 说明 |
|
||
|
|
|------|------|------|
|
||
|
|
| `/api/v1/approval/list` | GET | 获取审批列表 |
|
||
|
|
| `/api/v1/approval/detail/:id` | GET | 获取审批详情 |
|
||
|
|
| `/api/v1/approval/approve/:id` | POST | 审批通过 |
|
||
|
|
| `/api/v1/approval/reject/:id` | POST | 审批拒绝 |
|
||
|
|
| `/api/v1/approval/cancel/:id` | POST | 撤销申请 |
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## 前端关键文件
|
||
|
|
|
||
|
|
```
|
||
|
|
frontend/src/
|
||
|
|
├── pages/approval/
|
||
|
|
│ ├── list.tsx # 审批列表页
|
||
|
|
│ └── detail.tsx # 审批详情页
|
||
|
|
└── modules/approval/
|
||
|
|
└── components/ # 审批相关组件
|
||
|
|
```
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## 后端关键文件
|
||
|
|
|
||
|
|
```
|
||
|
|
backend/app/
|
||
|
|
├── Controller/
|
||
|
|
│ └── ApprovalController.php # 审批控制器
|
||
|
|
├── Service/
|
||
|
|
│ └── ApprovalService.php # 审批服务
|
||
|
|
└── Model/
|
||
|
|
├── ApprovalOrder.php # 审批订单
|
||
|
|
├── ApprovalFlow.php # 审批流程
|
||
|
|
├── ApprovalNode.php # 审批节点
|
||
|
|
└── ApprovalRecord.php # 审批记录
|
||
|
|
```
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## 数据库表结构
|
||
|
|
|
||
|
|
### approval_order (审批订单)
|
||
|
|
```sql
|
||
|
|
id -- 主键
|
||
|
|
company_id -- 公司ID
|
||
|
|
applicant_id -- 申请人ID
|
||
|
|
title -- 标题
|
||
|
|
content -- 内容
|
||
|
|
type -- 类型 (business_trip, expense, etc.)
|
||
|
|
status -- 状态 (pending, approved, rejected, cancelled)
|
||
|
|
current_node_id -- 当前节点ID
|
||
|
|
created_at
|
||
|
|
updated_at
|
||
|
|
```
|
||
|
|
|
||
|
|
### approval_node (审批节点)
|
||
|
|
```sql
|
||
|
|
id -- 主键
|
||
|
|
flow_id -- 流程ID
|
||
|
|
node_type -- 节点类型 (single_approve, and_sign, or_sign, notify)
|
||
|
|
node_order -- 节点顺序
|
||
|
|
approvers -- 审批人列表 (JSON)
|
||
|
|
```
|
||
|
|
|
||
|
|
### approval_record (审批记录)
|
||
|
|
```sql
|
||
|
|
id -- 主键
|
||
|
|
order_id -- 订单ID
|
||
|
|
node_id -- 节点ID
|
||
|
|
approver_id -- 审批人ID
|
||
|
|
action -- 操作 (approve, reject, cancel)
|
||
|
|
comment -- 意见
|
||
|
|
created_at
|
||
|
|
```
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## 流程图
|
||
|
|
|
||
|
|
```
|
||
|
|
┌─────────────┐
|
||
|
|
│ 申请人提交 │
|
||
|
|
└──────┬──────┘
|
||
|
|
│
|
||
|
|
▼
|
||
|
|
┌─────────────┐ 通过 ┌─────────────┐
|
||
|
|
│ 节点1审批 │ ────────────▶│ 节点2审批 │
|
||
|
|
└──────┬──────┘ └──────┬──────┘
|
||
|
|
│ 拒绝 │ 拒绝
|
||
|
|
▼ ▼
|
||
|
|
┌─────────────┐ ┌─────────────┐
|
||
|
|
│ 已拒绝 │ │ 已拒绝 │
|
||
|
|
└─────────────┘ └─────────────┘
|
||
|
|
|
||
|
|
│ 通过到最后节点
|
||
|
|
▼
|
||
|
|
┌─────────────┐
|
||
|
|
│ 已通过 │
|
||
|
|
└─────────────┘
|
||
|
|
```
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## 测试数据
|
||
|
|
|
||
|
|
运行测试数据脚本:
|
||
|
|
```bash
|
||
|
|
docker exec x-server-backend php test_data.php
|
||
|
|
```
|
||
|
|
|
||
|
|
该脚本会创建:
|
||
|
|
- 2 个待审批的订单(其他用户提交,用户1审批)
|
||
|
|
- 1 个已通过的订单(用户1已审批)
|
||
|
|
- 1 个已拒绝的订单(用户1已拒绝)
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## 相关文档
|
||
|
|
|
||
|
|
- [PROJECT_ISSUES.md](../../PROJECT_ISSUES.md) - 历史问题汇总
|
||
|
|
- [IMPLEMENTATION_PLAN.md](../../IMPLEMENTATION_PLAN.md) - 实现计划
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
**负责人**: 待分配
|
||
|
|
**最后更新**: 2026-02-28
|