课程名称: SpringBoot+Vue3 项目实战,打造企业级在线办公系统
课程章节: 第5章 审批会议申请
主讲老师: 神思者
课程内容
上一章,完成了线上和线下会议模块的开发。既然用户创建了线上或者线下会议申请,那么接下来应该由审批人去审批这些会议申请,这一章我们就来实现会议审批功能。
分页查询待审批记录
在之前已经实现了线上和线下会议申请功能,那么所有的会议申请都要在审批任务页面显示出来,然后由相关的人员执行审批工作。在审批任务页面(approval.vue),我们可以看到这个会议申请。相关人员点开这个会议申请记录,可以看到详细的申请信息,甚至说现在审批工作执行到了工作流程的哪一个步骤,都显示的清清楚楚。
这里有个细节问题,需要特别注意注意。审批详情信息要不要随着分页记录一起查询出来?当然是不需要的,因为审批人不一定会点开每个审批记录,然而你却把每个会议申请的详情信息都查询出来,白白增大了数据库的负担。正确的做法是用户点开申请记录的时候,再发送Ajax请求查询审批详情信息。而且Ajax必须是同步执行的,这是因为如果Ajax选择了异步执行,展开申请记录的JS回调函数不会等着Ajax执行完,导致JS回调函数执行结束,强制让Ajax也结束了。这绝对是不行的,所以我们要选择同步方式的Ajax请求。
查询工作流分页数据Web接口
因为审批任务页面是为用户提供审批服务的,所以页面中各种申请记录对应的都是工作流实例,只需要调用工作流项目就能获取到分页记录了。
接口URI:/workflow/searchTaskByPage
序号 参数名 类型 必填 说明
序号 | 参数名 | 类型 | 必填 | 说明 |
---|---|---|---|---|
1 | userId | int | 是 | 用户ID |
2 | role | String[] | 是 | 角色列表 |
3 | page | int | 是 | 页数 |
4 | length | int | 是 | 每页记录数量 |
5 | type | String | 否 | 员工请假 |
6 | status | String | 是 | 待审批 |
7 | creatorName | String | 否 | 申请人 |
8 | instanceId | String | 否 | 工作流实例ID |
9 | code | String | 是 | 慕课网授权码 |
10 | tcode | String | 是 | 课程授权码 |
课程收获
发送HTTP请求调用工作流项目Web接口,是由ApprovalServiceImpl
类做的,而不是交给异步线程任务类去做。这是因为必须要从工作流项目查询出来数据,然后返回给前端页面,这个过程必须是同步。如果采用异步,数据还没查询出来,Controller直接返回R对象了,这可绝对不行。具体可以查看如下时序图
课程上使用的工作流,讲师已经完成了封装。所以不需要太着重工作流的实现。
本课时的主要收获:
- 对工作流的使用有一定的基础概念。
- 完成了OA当中的审批流功能。