基于若依的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.rhkb.cn/news/208143.html

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

相关文章

Android获取原始图片Bitmap的宽高大小尺寸,Kotlin

Android获取原始图片Bitmap的宽高大小尺寸&#xff0c;Kotlin val options BitmapFactory.Options()options.inJustDecodeBounds trueval decodeBmp BitmapFactory.decodeResource(resources, R.mipmap.p1, options)//此时&#xff0c;decode出来的decodeBmp宽高并不是原始图…

C语言-预处理与库

预处理、动态库、静态库 1. 声明与定义分离 一个源文件对应一个头文件 注意&#xff1a; 头文件名以 .h 作为后缀头文件名要与对应的原文件名 一致 例&#xff1a; 源文件&#xff1a;01_code.c #include <stdio.h> int num01 10; int num02 20; void add(int a, in…

OpenSSL 使用AES对文件加解密

AES&#xff08;Advanced Encryption Standard&#xff09;是一种对称加密算法&#xff0c;它是目前广泛使用的加密算法之一。AES算法是由美国国家标准与技术研究院&#xff08;NIST&#xff09;于2001年发布的&#xff0c;它取代了原先的DES&#xff08;Data Encryption Stand…

JVM GC算法

一, 垃圾回收分类: 按线程数分&#xff0c;可以分为串行垃圾回收器和并行垃圾回收器。 按工作模式分&#xff0c;可以分为并发垃圾回收器和独占式垃圾回收器 按碎片处理方式分&#xff0c;可以分为压缩式垃圾回收器和非压缩式垃圾回收器按工作的内存区间分&#xff0c;又可分为…

2000-2021年上市公司过度负债数据

2000-2021年上市公司过度负债数据 1、时间&#xff1a;2000-2021年 2、指标&#xff1a; 证券代码、证券简称、会计期间、上市日期、行业代码、行业名称、是否剔除ST或*ST股、是否剔除当年新上市、已经退市或被暂停退市的公司、产权性质、盈利能力、杠杆率行业中位数、成长性…

数据结构与算法-静态查找表

&#x1f31e; “清醒 自律 知进退&#xff01;” 查找 &#x1f388;1.查找的相关概念&#x1f388;2.静态查找表&#x1f52d;2.1静态查找表的类定义&#x1f52d;2.2顺序查找&#x1f52d;2.3二分查找&#x1f50e;二分查找例题 &#x1f52d;2.4分块查找&#x1f52d;2.5三…

oracle sql相关语法

SQL*PLUS 在SQL*PLUS执行&#xff0c;会在执行后显示查询的执行计划和统计信息 SET AUTOTRACE ON;SELECT * FROM your_table WHERE column_name value;SET AUTOTRACE OFF;PLSQL PLSQL查询sql界面&#xff0c;鼠标右键&#xff0c;点击执行计划&#xff0c;会出现sql的执行计…

鸿蒙原生应用/元服务开发-AGC分发如何生成密钥和和证书请求文件

HarmonyOS通过数字证书&#xff08;.cer文件&#xff09;和Profile文件&#xff08;.p7b文件&#xff09;等签名信息来保证应用的完整性&#xff0c;应用如需上架到华为应用市场必须通过签名校验。因此&#xff0c;开发者需要使用发布证书和Profile文件对应用进行签名后才能发布…

04_Flutter自定义Slider滑块

04_Flutter自定义Slider滑块 一.Slider控件基本用法 Column(mainAxisAlignment: MainAxisAlignment.start,children: <Widget>[Text("sliderValue: ${_sliderValue.toInt()}"),Slider(value: _sliderValue,min: 0,max: 100,divisions: 10,thumbColor: Colors.…

Java研学-配置文件

一 配置文件 1 作用–解决硬编码的问题 在实际开发中,有时将变量的值直接定义在.java源文件中;如果维护人员想要修改数据,无法完成(因为没有修改权限),这种操作称之为硬编码 2 执行原理: 将经常需要改变的数据定义在指定类型的文件中,通过java代码对指定的类型的文件进行操作…

软件测试框架实战:Python+Slenium搭建Web自动化测试框架全教程

PythonSelenium是一种流行的Web自动化测试框架&#xff0c;可以模拟真实的用户操作&#xff0c;对网页进行功能和样式的验证。要通过selenium测试网页&#xff0c;需要以下几个步骤&#xff1a; 安装selenium库和浏览器驱动 。使用selenium提供的方法来控制浏览器窗口大小、后…

【NeurIPS 2023】PromptIR: Prompting for All-in-One Blind Image Restoration

PromptIR: Prompting for All-in-One Blind Image Restoration&#xff0c; NeurIPS 2023 论文&#xff1a;https://arxiv.org/abs/2306.13090 代码&#xff1a;https://github.com/va1shn9v/promptir 解读&#xff1a;即插即用系列 | PromptIR&#xff1a;MBZUAI提出一种基…

非得让你会之MyBatis插件与Java动态代理

引言 咱们今天聊聊Java动态代理&#xff0c;这东西在开发中真的太常见了。比如Spring AOP、RPC&#xff0c;它们都离不开动态代理。然后&#xff0c;咱们再来说说MyBatis插件&#xff0c;这可是MyBatis框架中的一个超实用的功能&#xff0c;它就像是给MyBatis加了个“超能力”…

基于WebSocket实现客户聊天室

目录 一、实现聊天室原理 二、聊天室前端代码 三、聊天室后端代码&#xff08;重点&#xff09; 四、聊天室实现效果展示 一、实现聊天室原理 1.1 介绍websocket协议 websocket是一种通信协议&#xff0c;再通过websocket实现弹幕聊天室时候&#xff0c;实现原理是客户端首…

Unity Image - 镜像

1、为什么要使用镜像 在游戏开发过程中&#xff0c;我们经常会为了节省 美术图片资源大小&#xff0c;美术会将两边相同的图片进行切一半来处理。如下所示一个按钮 需要 400 * 236&#xff0c;然而美术只需要切一张 74*236的大小就可以了。这样一来图集就可以容纳更多的图片。…

HarmonyOs 4 (一) 认识HarmonyOs

目录 一 HarmonyOs 背景1.1 发展时间线1.2 背景分析1.2.1 新场景1.2.2 新挑战1.2.3 鸿蒙生态迎接挑战 二 HarmonyOS简介2.1 OpenHarmony2.2 HarmonyOS Connect2.3 HarmonyOS Next**2.4 ArkTS &#xff08;重点掌握&#xff09;****2.5 ArkUI** 三 鸿蒙生态应用核心技术理念**3.…

SmartSoftHelp8,数据库字段详细文档自动生成工具

数据库开发文档自动生成 包括数据库设计详细信息&#xff1a; 数据库字段名称&#xff0c;数据类型&#xff0c;大小&#xff0c;是否主键&#xff0c;说明等 一键自动生成开发需求文档 导出html 格式方便查询 下载地址 https://pan.baidu.com/s/1zBgeYsqWnSlNgiKPR2lUYg…

Spring---更简单的存储和读取对象

文章目录 存储Bean对象配置扫描路径添加注解存储Bean对象使用类注解为什么需要五个类注解呢&#xff1f;Bean命名规则 使用方法注解重命名Bean 读取Bean对象属性注入Setter注入构造方法注入注入多个相同类型的BeanAutowired vs Resource 存储Bean对象 配置扫描路径 注&#xf…

maven下载和安装

maven下载和安装 一、概述 Maven是一个项目管理工具&#xff0c;它包含了一个项目对象模型 (Project Object Model)&#xff0c;一组标准集合&#xff0c;一个项目生命周期(Project Lifecycle)&#xff0c;一个依赖管理系统(Dependency Management System)&#xff0c;和用来…

conda环境下 ERROR: CMake must be installed to build dlib问题解决

1 问题描述 在构建video_retalking项目过程中&#xff0c;使用命令安装依赖包时&#xff0c;运行依赖安装命令&#xff1a; pip install -r requirements.txt 出现如下错误&#xff1a; Building wheels for collected packages: face-alignment, dlib, ffmpy, futureBuil…