更多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、效果图如下: