1、增加了应用设计可设置表格说明。
修改文件:src/web/element/src/roadui-pages/app-design/design/attr.vue

修改文件:src/web/element/src/roadui-pages/app-design/design/design.js

2、流程管理增加保密等级。
数据表rf_flow增加字段:

修改文件:src/web/element/src/roadui-pages/flow/design/attr.vue

修改文件:src/main/java/cn/tzsoft/roadflow/model/flow/FlowModel.java


修改文件:src/main/java/cn/tzsoft/roadflow/dao/flow/FlowDao.java

修改文件:src/main/java/cn/tzsoft/roadflow/service/flow/FlowService.java

修改文件:src/main/java/cn/tzsoft/roadflow/controller/roadflowwebapi/flow/FlowController.java


修改文件:src/web/element/src/roadui-pages/flow/design/index.vue

增加数据字典项:

3、修改了金额转换大写方法可能会不准的问题。
修改文件:src\web\element\src\roadui-assets\utils.js

//数字转换为大写金额
capitalization(n) {
if (!this.isNumberString(n)) {
return '';
}
if ("0" == n) {
return "零";
} else if (!/^(0|[1-9]\d*)(\.\d+)?$/.test(n)) {
return "";
}
var unit = "千百拾亿千百拾万千百拾元角分", str = "";
n += "00";
var p = n.indexOf('.');
if (p >= 0)
n = n.substring(0, p) + n.substr(p + 1, 2);
unit = unit.substr(unit.length - n.length);
for (var i = 0; i < n.length; i++)
str += '零壹贰叁肆伍陆柒捌玖'.charAt(n.charAt(i)) + unit.charAt(i);
return str.replace(/零(千|百|拾|角)/g, "零").replace(/(零)+/g, "零").replace(/零(万|亿|元)/g, "$1").replace(/(亿)万|壹(拾)/g, "$1$2").replace(/^元零?|零分/g, "").replace(/元$/g, "元整");
},4、增加了流程设计步骤可以设置宽度和高度。
修改文件:src/web/element/src/roadui-pages/flow/design/step.vue

修改文件:src/web/element/src/roadui-pages/flow/design/design.vue

修改文件:src/web/element/src/roadui-pages/flow/design/custom-node.vue


5、修改了流程处理多步骤平行会签的问题。
修改文件:src/main/java/cn/tzsoft/roadflow/service/flow/FlowExecuteService.java

//region 如果下一步有会签策略,则退回通过了要判断策略去完成会签同级步骤的任务。
if (backCompleted) {
//2026-4-6修改会签策略判断,修复了会签起点到会签步骤之间有多个步骤的情况。
//判断逻辑-如果当前退回步骤是会签起点的后一个步骤才去判断(如果没有设置会签起点步骤,则默认就是起点后一个步骤)。
ArrayNode allNextStepsArrayNode = flowService.getAllNextSteps(currentFlowTaskModel.getStepId(), flowJsonNode);
int stepStrategy = 0;//后续步骤会签策略
long stepStrategyStart = IdGeneratorUtils.MIN_VALUE;//会签起点步骤id
long stepStrategyId = IdGeneratorUtils.MIN_VALUE;//会签步骤id
for (JsonNode nextStepJsonNode : allNextStepsArrayNode) {
long nextStepId = JSONUtils.getLong(nextStepJsonNode, "id", IdGeneratorUtils.MIN_VALUE);
JsonNode nextStepStrategyJsonNode = JSONUtils.getJsonNode(JSONUtils.getJsonNode(stepSets, "s_" + NumberUtils.longToString(nextStepId)), "strategy");
int nextStepStrategy = JSONUtils.getInt(nextStepStrategyJsonNode, "stepStrategy");
if (nextStepStrategy > 0) {
stepStrategy = nextStepStrategy;
stepStrategyStart = JSONUtils.getLong(nextStepStrategyJsonNode, "stepStrategyStart", IdGeneratorUtils.MIN_VALUE);
stepStrategyId = nextStepId;
break;
}
}
boolean isCheckStrategy = stepStrategy > 0;//是否要检查同级会签退回
if (isCheckStrategy) {
//如果设置了会签起点,则判断当前退回步骤前一步是不是会签起点
if (IdGeneratorUtils.isId(stepStrategyStart)) {
boolean prevIsInStartStep = false;
ArrayNode prevSteps = flowService.getPrevSteps(currentFlowTaskModel.getStepId(), flowJsonNode);
for (JsonNode prevStep : prevSteps) {
if (JSONUtils.getLong(prevStep, "id") == stepStrategyStart) {
prevIsInStartStep = true;
break;
}
}
isCheckStrategy = prevIsInStartStep;
}
}
if (isCheckStrategy) {
boolean stepStrategyBackIsPass = false;//是否要标记同级会签任务。
if (stepStrategy > 0) {
switch (stepStrategy) {
case 1://所有步骤通过
//如果是所有步骤通过,当前步骤已经退回了,说明不满足所有步骤通过的条件,则要将同级步骤任务标记为他人已退回。
stepStrategyBackIsPass = true;
break;
case 2://一个步骤通过
//如果是一个步骤通过,当前步骤退回了不修改其他同级步骤的任务。
stepStrategyBackIsPass = false;
break;
case 3://依据步骤通过比例
//ArrayNode prevStepsArrayNode = flowService.getPrevSteps(nextStepId, flowJsonNode);//会签步骤的所有前面步骤
//double stepStrategyPercentage = JSONUtils.getDouble(nextStepStrategyJsonNode, "stepStrategyPercentage");//步骤会签比例
break;
}
}
if (stepStrategyBackIsPass) {
ArrayNode prevStepsArrayNode = flowService.getPrevSteps(stepStrategyId, flowJsonNode);//会签步骤的所有前面步骤
for (JsonNode prevStepJsonNode : prevStepsArrayNode) {
Long prevStepId = JSONUtils.getRefLong(prevStepJsonNode, "id");
//如果是当前步骤则跳过
if (prevStepId.equals(currentFlowTaskModel.getStepId())) {
continue;
}
List<Long> prevStepIdList = new ArrayList<>();
if (IdGeneratorUtils.isId(stepStrategyStart)) {
//如果设置了起点步骤,则要查询起点步骤到会签前一步之间的步骤。
ArrayNode middleArrayNode = flowService.getMiddleSteps(stepStrategyStart, prevStepId, flowJsonNode);
for (JsonNode middleJsonNode : middleArrayNode) {
Long sId = JSONUtils.getRefLong(middleJsonNode, "id");
if (IdGeneratorUtils.isId(sId)) {
prevStepIdList.add(sId);
}
}
} else {
//如果没有设置起点步骤,则只查询会签前一步
prevStepIdList.add(prevStepId);
}
//循环将步骤上未处理的任务设置为他人已退回,将等待中的任务删除。
for (Long pStepId : prevStepIdList) {
flowGroupTasks.stream().filter(s -> s.getStepId().equals(pStepId) && s.getStatus() < 1).forEach((task) -> {
if (task.getStatus() == 0) {
task.setStatus(1);
task.setHandleType(5);
updateTasks.add(task);
} else if (task.getStatus() == -1) {
deleteTasks.add(task);
}
});
}
}
}
}
}
//endregio6、修改了日期时间控件默认值格式问题。
修改文件:src/web/element/src/roadui-pages/form/design/design.js

修改文件:src/main/java/cn/tzsoft/roadflow/service/form/FormService.java

7、增加了表单设计标签label可自定义插槽。
修改文件:src/web/element/src/roadui-assets/utils.js

修改文件:src/web/element/src/roadui-pages/form/design/design.js


每个方法做同样修改。

修改文件:src/web/element/src/roadui-pages/form/design/index.vue

以下文件作同样修改:
src/web/element/src/roadui-pages/form/design/controls/table-ctl.vue
src/web/element/src/roadui-pages/form/design/controls/tab-ctl.vue
src/web/element/src/roadui-pages/form/design/controls/space-ctl.vue
src/web/element/src/roadui-pages/form/design/controls/layout-ctl.vue
src/web/element/src/roadui-pages/form/design/controls/div-ctl.vue
src/web/element/src/roadui-pages/form/design/controls/collapse-ctl.vue
src/web/element/src/roadui-pages/form/design/controls/card-ctl.vue
|
联系QQ:493501010电话:136 0832 5512(微信同号)邮箱:road@roadflow.net
Copyright 2014 - 2026 重庆天知软件技术有限公司 版权所有
|