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