基于若依的ruoyi-nbcio流程管理系统增加流程节点配置(三)

更多ruoyi-nbcio功能请看演示系统

gitee源代码地址

前后端代码: https://gitee.com/nbacheng/ruoyi-nbcio

演示地址:RuoYi-Nbcio后台管理系统

     这一节主要是对每个流程节点的字段规则设置与操作规则设置,目前也是只针对自定义业务表单。

    1、前端部分

    流程规则的修改界面

<!-- 修改流程规则对话框 --><el-dialog :title="title" :visible.sync="ruleOpen" width="600px" append-to-body><el-tabs tab-position="top" v-model="activeName" :value="'form'" @tab-click="changeTab"><el-tab-pane label="表单配置" name="form" ><el-table :header-cell-style="{background:'#f5f6f6'}" :data="customRuleList" border style="width: 100%"><el-table-column prop="title" show-overflow-tooltip label="表单字段"><template slot-scope="scope"><span v-if="scope.row.colCode" style="color: #c75450"> * </span><span>{{ scope.row.colName }}</span></template></el-table-column><el-table-column prop="readOnly" label="只读" width="80"><template slot="header" slot-scope="scope"><el-radio label="1" v-model="permSelect" @change="allSelect('1')">只读</el-radio></template><template slot-scope="scope"><el-radio v-model="scope.row.attribute" label="1" :name="scope.row.colCode"></el-radio></template></el-table-column><el-table-column prop="editable" label="可编辑" width="90"><template slot="header" slot-scope="scope"><el-radio label="2" v-model="permSelect" @change="allSelect('2')">可编辑</el-radio></template><template slot-scope="scope"><el-radio v-model="scope.row.attribute" label="2" :name="scope.row.colCode"></el-radio></template></el-table-column><el-table-column prop="hide" label="隐藏" width="80"><template slot="header" slot-scope="scope"><el-radio label="0" v-model="permSelect" @change="allSelect('0')">隐藏</el-radio></template><template slot-scope="scope"><el-radio v-model="scope.row.attribute" label="0" :name="scope.row.colCode"></el-radio></template></el-table-column></el-table></el-tab-pane><el-tab-pane label="操作权限" name="operate"><el-table :header-cell-style="{background:'#f5f6f6'}" :data="operateRuleList" border style="width: 100%"><el-table-column prop="title" show-overflow-tooltip label="表单字段"><template slot-scope="scope"><span v-if="scope.row.id" style="color: #c75450"> * </span><span>{{ scope.row.opeName }}</span></template></el-table-column><el-table-column prop="hide" label="关闭" width="100"><template slot="header" slot-scope="scope"><el-switch v-model="operateSelect" :active-value="'1'" :inactive-value="'0'" active-text="关闭"inactive-text="开启" @change="allOperate"></el-switch></template><template slot-scope="scope"><el-switch ref="elswitch" v-model="scope.row.isEnable" :active-value="'1'":inactive-value="'0'" active-text="关闭" inactive-text="开启" @change="changeOperate(scope.row)"></el-switch></template></el-table-column></el-table></el-tab-pane ></el-tabs><div slot="footer" class="dialog-footer"><el-button :loading="buttonLoading" type="primary" @click="submitRuleForm">确 定</el-button><el-button @click="cancel">取 消</el-button></div></el-dialog>

获取流程规则数据

/** 修改规则操作 */handleRule(row) {this.loading = true;console.log("handleRule row=",row);getConfigRule(row).then(response => {this.loading = false;console.log("getConfigRule response=",response);this.customRuleList = response.data.customRuleVoList;this.operateRuleList = response.data.operateRuleVoList;this.activeName = "form";this.ruleOpen = true;this.title = "修改节点规则";});},

流程规则数据修改

/** 提交按钮 */submitRuleForm() {this.buttonLoading = true;let ruleVo = {customRuleVoList: this.customRuleList,operateRuleVoList: this.operateRuleList}updateConfigRule(ruleVo).then(response => {this.$modal.msgSuccess("修改成功");this.ruleOpen = false;this.getList();}).finally(() => {this.buttonLoading = false;});},

2、后端部分

     先查询,没有就增加,queryConfigRule部分

@Override@Transactional(rollbackFor = Exception.class)public WfRuleVo queryConfigRule(WfFlowConfigBo bo) {WfRuleVo ruleVo = new WfRuleVo();//获取自定义表单规则列表if(bo.getAppType().equalsIgnoreCase("ZDYYW")) { //自定义业务List<WfCustomRuleVo> customRuleList = customRuleMapper.selectRuleByConfigId(bo.getId());if(ObjectUtils.isNotEmpty(customRuleList) && customRuleList.size()>0) {ruleVo.setCustomRuleVoList(customRuleList);	}else {//为空添加默认表单规则设置if(StringUtils.isNotEmpty(bo.getFormKey())) {//获取自定义表信息Long formId = Convert.toLong(StringUtils.substringAfter(bo.getFormKey(), "key_"));WfCustomFormVo customFormVo = customFormService.queryById(formId);if(ObjectUtils.isNotEmpty(customFormVo)) {Long tableId = customFormVo.getTableId();List<GenTableColumn> tableColumnList = genTableService.selectGenTableColumnListByTableId(tableId);if(ObjectUtils.isNotEmpty(tableColumnList)) {long i = 0L;List<WfCustomRuleVo> customAddRuleList = new ArrayList<WfCustomRuleVo>();for(GenTableColumn tableColumn : tableColumnList) {WfCustomRuleBo customRuleBo = new WfCustomRuleBo();WfCustomRuleVo customRuleVo = new WfCustomRuleVo();customRuleBo.setColCode(tableColumn.getColumnName());customRuleBo.setColName(tableColumn.getColumnComment());customRuleBo.setConfigId(bo.getId());customRuleBo.setJavaField(tableColumn.getJavaField());customRuleBo.setJavaType(tableColumn.getJavaType());customRuleBo.setAttribute("1"); //默认只读i = i + 1;customRuleBo.setSort(i);customRuleService.insertByBo(customRuleBo);BeanUtils.copyProperties(customRuleBo, customRuleVo);customAddRuleList.add(customRuleVo);}ruleVo.setCustomRuleVoList(customAddRuleList);}}}}} else if(bo.getAppType().equalsIgnoreCase("OA")) {}//获取操作规则列表List<WfOperateRuleVo> operateRuleList = operateRuleMapper.selectRuleByConfigId(bo.getId());if(ObjectUtils.isNotEmpty(operateRuleList) && operateRuleList.size()>0) {ruleVo.setOperateRuleVoList(operateRuleList);}else {//为空添加默认操作表单规则设置//从字典里获取操作类型List<SysDictData> sysDictDataList = sysDictDataMapper.selectDictDataListByDictType("wf_oper_type");if(ObjectUtils.isNotEmpty(sysDictDataList)) {long i = 0L;List<WfOperateRuleVo> operateAddRuleList = new ArrayList<WfOperateRuleVo>();for(SysDictData sysDictData : sysDictDataList) {WfOperateRuleBo operateRuleBo = new WfOperateRuleBo();WfOperateRuleVo operateRuleVo = new WfOperateRuleVo();operateRuleBo.setConfigId(bo.getId());operateRuleBo.setOpeType(sysDictData.getDictValue());operateRuleBo.setOpeName(sysDictData.getDictLabel());if(StringUtils.equalsAnyIgnoreCase(sysDictData.getDictValue(), "agree")    ||StringUtils.equalsAnyIgnoreCase(sysDictData.getDictValue(), "delegate") ||StringUtils.equalsAnyIgnoreCase(sysDictData.getDictValue(), "transfer") ||StringUtils.equalsAnyIgnoreCase(sysDictData.getDictValue(), "reback")   ||StringUtils.equalsAnyIgnoreCase(sysDictData.getDictValue(), "reject")) {operateRuleBo.setIsEnable("1"); //默认上面的操作开启}else {operateRuleBo.setIsEnable("0"); //其它默认关闭}i = i + 1;operateRuleBo.setSort(i);operateRuleService.insertByBo(operateRuleBo);BeanUtils.copyProperties(operateRuleBo, operateRuleVo);operateAddRuleList.add(operateRuleVo);}ruleVo.setOperateRuleVoList(operateAddRuleList);}}return ruleVo;}

更新部分

@Override@Transactional(rollbackFor = Exception.class)public Boolean updateConfigRule(WfRuleVo vo) {List<WfCustomRuleVo> customRuleList = vo.getCustomRuleVoList();List<WfOperateRuleVo> operateRuleList = vo.getOperateRuleVoList();if(ObjectUtils.isNotEmpty(customRuleList) && ObjectUtils.isNotEmpty(operateRuleList) ) {for(WfCustomRuleVo customRuleVo : customRuleList) {WfCustomRuleBo customRuleBo = new WfCustomRuleBo();BeanUtils.copyProperties(customRuleVo,customRuleBo);customRuleService.updateByBo(customRuleBo);}for(WfOperateRuleVo operateRuleVo : operateRuleList) {WfOperateRuleBo operateRuleBo = new WfOperateRuleBo();BeanUtils.copyProperties(operateRuleVo,operateRuleBo);operateRuleService.updateByBo(operateRuleBo);}return true;}return false;}

3、效果图如下:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/225646.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C++:C++11新特性---右值引用

文章目录 初始化方式显示查看类型initializer_listdecltype左值引用和右值引用move左右值引用的场景 万能引用和完美转发 本篇总结C11新特性 初始化方式 C11对参数列表的初始化有了更明确的定义&#xff0c;可以这样进行定义 // 列表初始化 void test1() {// 旧版本int x 0…

采购申请的库存地点和MRP2的库存地点的关系

F类材料的采购申请的库存地点&#xff0c;带外部采购申请仓储地点 X类材料的采购申请的库存地点,从MRP2的生产仓储地点自动带到计划订单再到生产工单再到采购申请。

俄罗斯山东同乡会会长赵卫星一行莅临百华鞋业考察交流

11月25日&#xff0c;俄罗斯山东同乡会会长赵卫星等专家与市侨联副主席李咏梅&#xff0c;县商务局局长尹纪付、县侨联主席刘志峰、县人才集团总经理刘杰等一行莅临百华鞋业考察调研。百华鞋业总经理郭兴梅全程陪同。 百华鞋业总经理郭兴梅对赵卫星会长一行领导的到来表示热烈…

openmp 处理数据竞争的问题 reduction

类似 多线程竞争&#xff0c;需要加锁来保护类似&#xff0c;但实现原理不同&#xff0c;reduction 并不会像多线程原子操作那样影响效率&#xff0c;因为它使用了高等代数里的单位元和结合律思想&#xff0c;为每个线程定义一个单位元&#xff0c;开始 分段积累运算操作。 1, …

RabbitMQ之延迟消息

文章目录 前言一、死信交换机二、延迟消息死信交换机实现延迟消息图解流程 DelayExchange插件实现延迟消息安装插件声明延迟交换机发送延迟消息 总结 前言 死信交换机、延迟消息 一、死信交换机 当一个队列中的消息满足下列情况之一时&#xff0c;可以成为死信&#xff08;dea…

CentOS 7 部署 MariaDB 的 2 种方法

有两种安装 MariaDB 服务器的方法。您可以安装 CentOS 7 存储库中可用的默认版本&#xff0c;也可以通过手动添加 MariaDB 存储库来安装最新版本。 如果安装过MariaDB或MySQL&#xff0c;使用以下命令彻底删除它们: yum remove mariadb* yum remove mysql* 方法一: 使用 Yum…

Python assert断言函数及用法与while循环详解

Python assert断言函数及用法 断言语句和 if 分支有点类似&#xff0c;它用于对一个 bool 表达式进行断言&#xff0c;如果该 bool 表达式为 True&#xff0c;该程序可以继续向下执行&#xff1b;否则程序会引发 AssertionError 错误。 例如如下程序&#xff1a; s_age inpu…

亚马逊,shein,temu如何避免爆品评分低被强制下架

近期&#xff0c;一些Temu卖家反映产品下架问题&#xff0c;无论是日出千单的爆品还是其他商品&#xff0c;都有可能面临下架的风险。这其中最主要的原因之一是产品质量问题&#xff0c;导致消费者差评较多&#xff0c;评分降至4.2分或4.0分以下时&#xff0c;平台可能会强制下…

EDA实验-----正弦信号发生器的设计(Quartus II )

目录 一、实验目的 二、实验仪器 三、实验原理 四、实验内容 五、实验步骤 六、注意事项 七、实验过程&#xff08;操作过程&#xff09; 1.定制LPM_ROM模块 2.定制LPM_ROM元件 3.计数器定制 4.创建锁相环 5.作出电路图 6.顶层设计仿真 一、实验目的 学习使用Ver…

Matlab R2022b 安装成功小记

Matlab R2022b 安装成功小记 前言一、 下载链接二、 安装过程小记 叮嘟&#xff01;这里是小啊呜的学习课程资料整理。好记性不如烂笔头&#xff0c;今天也是努力进步的一天。一起加油进阶吧&#xff01; 前言 windows 10系统之前安装过Matlab R2010b做基础研究&#xff0c;最…

每日一练 | 华为认证真题练习Day138

1、IPv6地址FE80::2EO:FCFF:FE6F:4F36属于哪一类&#xff1f; A. 组播地址 B. 任播地址 C. 链路本地地址 D. 全球单播地址 2、如果IPv6的主机希望发出的报文最多经过10台路由器转发&#xff0c;则应该修改IPv6报文头中的哪个参数&#xff1f; A. Next Header B. Version …