Files
x-server-mobile/docs/modules/approval
root e3fa7e86f3 docs: 重组文档结构,按模块分类
新的文档结构:
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、关键文件等
2026-02-28 11:42:51 +08:00
..

审批流程模块 (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已拒绝)

相关文档


负责人: 待分配 最后更新: 2026-02-28