移动端审批
这篇解决什么
把同一套 /admin-api/bpm/** 接到 UniApp:待办、发起、详情、加签。读完能对上 pages-bpm、业务表单为什么不进这个分包,以及 bpm-menu-config.ts 怎么注册一张新单据。
默认后端仍是 48080。H5 开发 pnpm dev,微信小程序 pnpm dev:mp。PC 办理见 审批通过、不通过、驳回。
示意图:移动端没有第二套引擎。列表和按钮走与 PC 相同的任务接口。
从哪改
| 名称 | 说明 | 仓库路径 |
|---|---|---|
| 菜单注册 | 发起大厅、详情嵌入、节点强制进详情 | ruoyi-office-uniapp/src/config/bpm-menu-config.ts |
| 引擎页面 | 待办、已办、发起、详情、加签、减签 | src/pages-bpm/ |
| 请假示例 | 仅流程演示,仍在 pages-bpm/oa/leave | src/pages-bpm/oa/leave/ |
| 用车 / 用印 | 业务分包 | src/pages-oa/ |
| 任务 API | 与 PC 同一前缀 | ruoyi-office-uniapp/src/api/bpm/task.ts |
| 后端任务 | @RequestMapping("/bpm/task") | ruoyi-office/yudao-module-bpm/.../controller/admin/task/BpmTaskController.java |
| 列表风格 | 卡片 + 下拉刷新 | src/pages/bpm/components/my-list.vue |
| 审批页 | 同意 / 拒绝、下一节点选人、签名 | src/pages-bpm/processInstance/detail/audit/index.vue |
| 加签页 | 向前 / 向后两个按钮 | src/pages-bpm/processInstance/detail/add-sign/index.vue |
pages-bpm 只放引擎自身页面和审批详情公共能力。OA / HRM / CRM 表单放到 pages-{module} 和 api/{module}。跨分包组件用 ?async 或抽到主包,见 UniApp 兼容规范。
不要用目录名猜流程 key
processDefinitionKey 以库里的模型标识和枚举为准。用车是 oa_car_apply_bill,不是 oa_car。请假演示是 oa_leave。
注册一张单据
bpmMenuGroupsData 按分组(行政、人事等)列出可发起项。新增一项至少填这些字段。
| 名称 | 说明 | 仓库路径 |
|---|---|---|
key | 前端唯一标识 | BpmMenuItem |
processDefinitionKey | 已发布模型的 KEY_ | 同上 |
mobileCreatePath | 有值才出现在「发起申请」 | 同上 |
mobileViewComponent | 详情里 v-if 匹配的组件名 | form-detail.vue |
permission | 复用 PC 权限字 | 如 oa:car-apply-bill:create |
forceDetailTaskNames | 这些节点名称不直接弹同意,先详情填业务字段 | 用印归还等 |
详情内嵌业务表单要支持 embedded、editable,并暴露 getFormValues、validate、submit。节点上有只给办理人改的字段时,实现 beforeApproval(operationType?);拒绝应跳过这些校验。
列表页监听 {module}-list-refresh 和 bpm-list-refresh,提交或审批后才能刷新。
办理动作
接口与 PC 相同,只是页面拆开。
| 名称 | 说明 | 仓库路径 |
|---|---|---|
| 同意 / 拒绝 | audit/index,isApprove 区分标题 | pages-bpm/processInstance/detail/audit/ |
| 加签 | signCreateTask,按钮文案「向前加签」「向后加签」 | add-sign/index |
| 减签 | delete-sign | delete-sign/index |
| 转办 | reassign | reassign/index |
| 抄送 | copy | copy/index |
| 取消 | process-cancel | process-cancel/index |
签名开关跟 PC 一样读任务上的 signEnable。下一节点是「审批人自选」时,同意页用 ProcessInstanceTimeline 勾人。
小程序提交成功不要裸 switchTab 回首页,用 navigateToBpmWorkbench,避免闪一下工作台以外的页。
配置与操作
开发在 bpm-menu-config.ts 登记 processDefinitionKey、mobileCreatePath、mobileViewComponent,并在 form-detail.vue 加同名 v-if。有创建路径才出现在「发起申请」。
员工用与 PC 相同的待办 / 同意 / 加签接口。节点要填业务字段时写 forceDetailTaskNames,拒绝走 beforeApproval(2) 跳过校验。
开启见 流程功能设计。截图见下文 PC 待办对照。

本系统截图:PC 待办任务。移动端列表字段同一套接口,卡片布局在 my-list.vue。
