js实现审批流_顺序审批流的简单代码实现
通过白码低代码开发平台简单实现根据用户表设置的审核人进行顺序审批的审批流功能。
准备工作:
1、在用户表中添加若干个审批人字段,关联用户表。(我这里只设置4级审批)
2、根据需要创建“申请单”数据表记录申请信息。
必须字段:状态(字符)、当前审核人(关联-用户)、审核历史(集合-审核单)
3、根据需要创建“审核单”数据表记录审核人的审核信息。
必须字段:审核状态(字符)、申请单(关联-申请单)
实现步骤:
实现创建申请单的功能
1、在快速开发中创建“数据集”类型的“申请单”菜单。
2、快速创建“新建”申请单功能
3、单击新建的功能,进入流程设计页,点击“新建申请单”步骤的设置。
将“申请人”设为当前用户,
将“状态”设为“1级审批”,
将“当前审核人”设为当前用户的1级审批,其余根据需求设置。
4、将功能保存发布。
效果:
实现当前审批人审批功能
1、步骤1:创建“选择申请单”的功能,步骤1:选择“状态”不为“通过”且不为“驳回”,“当前审核人”为当前用户的“申请单”。
2、步骤2:新建一条“审核单”,将“审核状态”设为必填下拉选项(通过、驳回),将“申请单”设为“选择申请单”。
实现流转到下一审批人功能
1、添加“关联获取”步骤获取申请人信息,注意将所有字段隐藏。
2、添加编程步骤,添加“选择申请单”、“申请人”、“审核信息”三个参数,同时在代码区引用。
引用代码:
let apply = await $params.apply;//申请单
let createUser = await $params.createUser;//创建人
let approval = await $params.approval;//审核记录
3、添加状态变量,引用申请单中的“状态”字段。
//申请单当前状态(本次审核前)
let status = apply["5feaf06febabb14ea012579b"];
字段id获取方式:
4、添加可以根据当前status来指定查询用户表的审批人的map
//下一审批人查询id
let nextUserIdByStatusMap = {
"1级审批": "5feaf1f908f77e4ea7fb6e04",//申请人的二级审批
"2级审批": "5feaf20608f77e4ea7fb6e05",//申请人的三级审批
"3级审批": "5feaf2309cff054eaf91ac69",//申请人的四级审批
"4级审批": " "//当前状态已经是4级审批则无下一级审批
}
5、添加可以根据当前status指定下一状态的map
//下一状态
let nextStatusMap = {
"1级审批": "2级审批",
"2级审批": "3级审批",
"3级审批": "4级审批"
}
6、获取下一审核人
//获取下一审核人
let userEntity = "5ee84e626646265863211238";
let nextUserId = createUser[nextUserIdByStatusMap[status]];
let nextUser = await $plugin.data.getData(userEntity, nextUserId);
数据表entity获取方法:
7、下一审核人的判断逻辑
//当前审核状态
let approvalStatus=approval["5feaf1219cff054eaf91ac5c"];
//申请单entity
let applyEntity="5feaefdaebabb14ea0125792";
if(approvalStatus=="通过"&&nextUser._id){
//审核通过,且还有下一审核人
}else{
//审核驳回或无下一审核人
}
8、需要下一审核人审核时,更新申请单的 状态 及 当前审核人 字段
//更新申请单的 状态 及 当前审核人
await $plugin.data.updateData(applyEntity, apply._id, {
"5feaf06febabb14ea012579b": nextStatusMap[status],//状态
"5feaf0829664af4ea1062b4e": nextUser._id,//当前审核人
});
9、不存在下一审核人或本次审核驳回,更新申请单的 状态 及 当前审核人 字段
//更新申请单的 状态 及 当前审核人
await $plugin.data.updateData(applyEntity, apply._id, {
"5feaf06febabb14ea012579b": approvalStatus,//状态
"5feaf0829664af4ea1062b4e": "",//清空当前审核人
});
10、至此,功能已实现完毕,此时可保存并发布功能。
编程完整代码:
async function runProcess($model = model, $plugin = plugin, $papplyams) {
let apply = await $params.apply;//申请单
let createUser = await $params.createUser;//申请人
let approval = await $params.approval;//审核记录
//申请单当前状态(本次审核前)
let status = apply["5feaf06febabb14ea012579b"];
//下一审批人查询id
let nextUserIdByStatusMap = {
"1级审批": "5feaf1f908f77e4ea7fb6e04",//申请人的二级审批
"2级审批": "5feaf20608f77e4ea7fb6e05",//申请人的三级审批
"3级审批": "5feaf2309cff054eaf91ac69",//申请人的四级审批
"4级审批": " "//当前状态已经是4级审批则无下一级审批
}
//下一状态
let nextStatusMap = {
"1级审批": "2级审批",
"2级审批": "3级审批",
"3级审批": "4级审批"
}
//获取下一审核人
let userEntity = "5ee84e626646265863211238";
let nextUserId = createUser[nextUserIdByStatusMap[status]];
let nextUser = await $plugin.data.getData(userEntity, nextUserId);
//当前审核状态
let approvalStatus = approval["5feaf1219cff054eaf91ac5c"];
//申请单entity
let applyEntity = "5feaefdaebabb14ea0125792";
if (approvalStatus == "通过" && nextUser._id) {
//审核通过,且还有下一审核人
//更新申请单的 状态 及 当前审核人
await $plugin.data.updateData(applyEntity, apply._id, {
"5feaf06febabb14ea012579b": nextStatusMap[status],//状态
"5feaf0829664af4ea1062b4e": nextUser._id,//当前审核人
});
} else {
//审核驳回或无下一审核人
//更新申请单的 状态 及 当前审核人
await $plugin.data.updateData(applyEntity, apply._id, {
"5feaf06febabb14ea012579b": approvalStatus,//状态
"5feaf0829664af4ea1062b4e": "",//清空当前审核人
});
}
}
最终效果:
为方便测试,这里设置4级审核人都是我自己。
js实现审批流_顺序审批流的简单代码实现相关推荐
- LED升压恒流_降压恒流_升压恒压_降压降压芯片大全可供工程师选型用!
LED升压恒流_降压恒流_升压恒压_降压降压芯片大全可供工程师选型用! 降压恒流驱动芯片特色降压恒流驱动芯片升压恒流芯片LED背光IC低压输入高压输出降压恒压驱动芯片低压输入降压恒压芯片低压输入降压恒 ...
- python代码大全表解释-Python中顺序表的实现简单代码分享
顺序表python版的实现(部分功能未实现) 结果展示: 代码示例: #!/usr/bin/env python # -*- coding:utf-8 -*- class SeqList(object ...
- vue.config.js配置不生效_华为QoS流策略配置教程
3.QoS流策略配置 3.1.创建一个流策略并进入流策略视图,或进入已存在的流策略视图 [Huawei]traffic policy 1 match-order ? auto Auto order c ...
- java 用流创建流_成为Java流大师–第1部分:创建流
java 用流创建流 在许多情况下,声明性代码(例如,具有Streams的功能组合)提供了出色的代码指标. 通过该动手实验文章系列进行编码,并成为Java Streams的主教练,从而成为一名更好的J ...
- java网关限流_网关限流使用
### POM 依赖 这里一定要注意,是网关引入的redis-reactive,背压模式的redis. ``` org.springframework.boot spring-boot-starter ...
- Smartbi企业流程审批系统_流程审批软件推荐
日常工作的各种办公场景中经常需要使用到流程,并且不同部门不同工作内容的流程都会有不同,思迈特软件Smartbi流程审批系统提供一整套完备的流程模块,可以实现工作中流程的灵活审批及动态流转. 学习审核流 ...
- 利用js随机数,写了一个随机点名的简单代码
一.问题或解决方法应用场景. 利用js写了一个随机点名的代码 二.直接粘贴代码获取图片 1. 先写一个获取随机数的代码 获取min-max 的随机整数,包括min,max function getRa ...
- js实现审批流_小程序瀑布流组件:支持翻页与图片懒加载
电商小程序中,用到瀑布流的地方非常多,每次都写一个瀑布流,重复一次逻辑,作为程序员,肯定是非常不愿意的. 瀑布流的形式都是大同小异,不同的是瀑布流中每个模块的内容,随业务而变化. 所以,我们把瀑布流框 ...
- 二次开发:flowable审批流程实践与创建流程源码分析
二次开发:flowable审批流程实践与创建流程源码分析 上一篇已经描述了基于开源项目https://doc.iocoder.cn/的flowable的快速开发,创建了一个租户,创建了用户和相应的岗位 ...
- java 并行 执行进度_关于java:Java8流的顺序执行和并行执行产生不同的结果?
在Java8中运行以下流示例: System.out.println(Stream .of("a","b","c","d" ...
最新文章
- 资源下载 | 历年 AAAI 最佳论文(since 1996)
- Java 垃圾回收机制,你知多少??
- 7-11 有重复的数据 (10 分)
- JLBH示例3 –吞吐量对延迟的影响
- Ubuntu 20.04 安装 .deb 文件报 failed to install file: not supported
- 中间省略_SpringBoot2 高级案例(03): 整合sharding-jdbc中间件,实现数据分库分表
- GEETEST极验召集互联网大佬齐聚光谷,共同探讨交互安全问题
- f2blog最新注入漏洞
- --------------比大小---------------大数比大小 这个方法 值得 留念
- MFC中Socket网络通讯
- 想跟大家一起做件小事
- 3.2亿人每天都在刷抖音,而他们却看这几个公众号!
- Linux ubuntu centos Shell命令大全
- 大数据-----数据采集
- Uniapp引入和使用阿里矢量图
- 二进制 转换 .java_如何在Java程序中将二进制转换为十进制?
- linux服务器22端口不通,怎么解决linux的端口不通问题
- Origin画图笔记
- 请查阅和请查收的区别_拯救尾款人!这份宠粉攻略请查收
- 华为OD机试 - 相对开音节(Java JS Python)