e3fa7e86f3
新的文档结构:
docs/
├── README.md # 文档中心导航
├── modules/ # 模块文档
│ ├── auth/ # 认证模块
│ │ ├── README.md
│ │ ├── feishu-login.md
│ │ ├── feishu-qrcode.md
│ │ └── feishu-notification.md
│ ├── approval/ # 审批流程模块
│ │ └── README.md
│ ├── business-trip/ # 出差申请模块
│ │ └── README.md
│ └── user/ # 用户管理模块
│ └── README.md
└── guides/ # 指南文档
├── deployment.md
├── environment.md
├── git-workflow.md
└── ...
每个模块都有独立的 README.md 说明概述、API、关键文件等
4.5 KiB
4.5 KiB
审批流程模块 (Approval Module)
概述
审批流程模块是系统的核心功能,支持多种审批节点类型和灵活的流程配置。
节点类型
| 类型 | 代码 | 说明 |
|---|---|---|
| 单人审批 | single_approve |
需要一个审批人通过 |
| 会签 | and_sign |
所有人都需要通过 |
| 或签 | or_sign |
任一人通过即可 |
| 通知 | notify |
仅通知,无需审批 |
订单状态
| 状态 | 代码 | 说明 |
|---|---|---|
| 待审批 | pending |
等待当前节点审批 |
| 已通过 | approved |
流程完成,已通过 |
| 已拒绝 | rejected |
流程完成,已拒绝 |
| 已撤销 | cancelled |
申请人主动撤销 |
列表过滤逻辑
我发起的
applicant_id = current_user_id
待我审批
status = 'pending'
AND current_user_id IN 当前节点审批人列表
AND NOT EXISTS (已审批记录)
我已审批
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 (审批订单)
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 (审批节点)
id -- 主键
flow_id -- 流程ID
node_type -- 节点类型 (single_approve, and_sign, or_sign, notify)
node_order -- 节点顺序
approvers -- 审批人列表 (JSON)
approval_record (审批记录)
id -- 主键
order_id -- 订单ID
node_id -- 节点ID
approver_id -- 审批人ID
action -- 操作 (approve, reject, cancel)
comment -- 意见
created_at
流程图
┌─────────────┐
│ 申请人提交 │
└──────┬──────┘
│
▼
┌─────────────┐ 通过 ┌─────────────┐
│ 节点1审批 │ ────────────▶│ 节点2审批 │
└──────┬──────┘ └──────┬──────┘
│ 拒绝 │ 拒绝
▼ ▼
┌─────────────┐ ┌─────────────┐
│ 已拒绝 │ │ 已拒绝 │
└─────────────┘ └─────────────┘
│ 通过到最后节点
▼
┌─────────────┐
│ 已通过 │
└─────────────┘
测试数据
运行测试数据脚本:
docker exec x-server-backend php test_data.php
该脚本会创建:
- 2 个待审批的订单(其他用户提交,用户1审批)
- 1 个已通过的订单(用户1已审批)
- 1 个已拒绝的订单(用户1已拒绝)
相关文档
- PROJECT_ISSUES.md - 历史问题汇总
- IMPLEMENTATION_PLAN.md - 实现计划
负责人: 待分配 最后更新: 2026-02-28