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

修改文件:\RoadFlow.WebUI\src\roadui-pages\app-design\design\design.js

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

修改文件:\RoadFlow.Model\Flow\FlowModel.cs

修改文件:\RoadFlow.WebApi\Controllers\RoadFlowWebApi\Flow\FlowController.cs


修改文件:\RoadFlow.Data\Flow\FlowDao.cs

修改文件:\RoadFlow.Service\Flow\FlowService.cs

修改文件:\RoadFlow.WebUI\src\roadui-pages\flow\design\attr.vue


修改文件:\RoadFlow.WebUI\src\roadui-pages\flow\design\index.vue

3、修改了金额转换大写方法可能会不准的问题。
修改文件:\RoadFlow.WebUI\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、增加了流程设计步骤可以设置宽度和高度。
修改文件:\RoadFlow.WebUI\src\roadui-pages\flow\design\step.vue

<tr>
<th>宽度</th>
<td>
<el-input-number v-model="stepSet.base.nodeWidth" @change="updateNode(stepId,{'data':{'nodeWidth':utils.len(stepSet.base.nodeWidth)>0?stepSet.base.nodeWidth+'px':''}})" :min="50" :max="800" style="width:135px;margin-right:18px;" controls-position="right"></el-input-number>
<span>
高度<el-input-number v-model="stepSet.base.nodeHeight" @change="updateNode(stepId,{'data':{'nodeHeight':utils.len(stepSet.base.nodeHeight)>0?stepSet.base.nodeHeight+'px':''}})" :min="50" :max="800" style="width:135px;margin-left:12px;" controls-position="right"></el-input-number>
</span>
</td>
<th>备注说明</th>
<td>
<el-input v-model="stepSet.base.note" clearable></el-input>
</td>
</tr>修改文件:\RoadFlow.WebUI\src\roadui-pages\flow\design\design.vue

修改文件:\RoadFlow.WebUI\src\roadui-pages\flow\design\custom-node.vue

:style="{'width':props.data.nodeWidth||'136px','height':props.data.nodeHeight||'60px'}" 
<style>
.rf-flow-node { background-color: var(--el-color-info-light-7); border-radius: 6px; box-shadow: 0 0 6px 1px rgba(0,0,0,0.09); }
.rf-flow-node-top { width: 100%; height: 8px; background: var(--el-color-primary); border-radius: 6px 6px 0 0; }
.rf-flow-node:hover, .rf-flow-node-selected { background-color: var(--el-color-primary-light-8) }
.rf-flow-node-text { height: calc(100% - 14px); width: initial; padding: 2px 4px; text-align: center; display: grid; justify-content: center; align-content:center; color: var(--el-text-color-primary); }
.rf-flow-node-text-i { height: initial; }
.rf-flow-node-text-i i { font-size: 18px; vertical-align: -3px; }
.rf-flow-node-text-text { height: initial; text-align: left; padding-left: 3px; }
.rf-flow-node-text label { height: inherit; display: grid; align-items: center; justify-content: center; align-content: center; }
.rf-flow-handle { width: 10px; height: 10px; background-color: var(--el-color-info); }
</style>5、修改了流程处理多步骤平行会签的问题。
修改文件:\RoadFlow.Service\Flow\FlowTaskService.cs


#region 如果下一步有会签策略,则退回通过了要判断策略去完成会签同级步骤的任务。
if (backCompleted)
{
//2026-4-6修改会签策略判断,修复了会签起点到会签步骤之间有多个步骤的情况。
//判断逻辑-如果当前退回步骤是会签起点的后一个步骤才去判断(如果没有设置会签起点步骤,则默认就是起点后一个步骤)。
var allNextStepsJsonArray = FlowService.GetAllNextSteps(currentFlowTaskModel.StepId, flowJsonObject);
var stepStrategy = 0;//后续步骤会签策略
var stepStrategyStart = IdGeneratorUtils.MIN_VALUE;//会签起点步骤id
var stepStrategyId = IdGeneratorUtils.MIN_VALUE;//会签步骤id
foreach (var nextStepsJsonNode in allNextStepsJsonArray)
{
var nextStepId = nextStepsJsonNode.GetLong("id");
var nextStepStrategySetJsonNode = stepSetsJsonNode.GetJsonNode("s_" + nextStepId.ToString()).GetJsonNode("strategy");
var nexStepStrategy = nextStepStrategySetJsonNode.GetInt("stepStrategy");
if (nexStepStrategy > 0)
{
stepStrategy = nexStepStrategy;//如果后续步骤中有会签,则表示是会签中间步骤,直接跳出循环。
stepStrategyStart = nextStepStrategySetJsonNode.GetLong("stepStrategyStart", IdGeneratorUtils.MIN_VALUE);
stepStrategyId = nextStepId;
break;
}
}
var isCheckStrategy = stepStrategy > 0;//是否要检查同级会签退回
if (isCheckStrategy)
{
//如果设置了会签起点,则判断当前退回步骤前一步是不是会签起点
if (IdGeneratorUtils.IsId(stepStrategyStart))
{
var prevIsInStartStep = false;
var prevSteps = FlowService.GetPrevSteps(currentFlowTaskModel.StepId, flowJsonObject);
foreach (var prevStepsJsonNode in prevSteps)
{
if (prevStepsJsonNode.GetLong("id") == stepStrategyStart)
{
prevIsInStartStep = true;
break;
}
}
isCheckStrategy = prevIsInStartStep;
}
}
if (isCheckStrategy)
{
bool stepStrategyBackIsPass = false;//是否要标记同级会签任务
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)
{
var prevStepsJsonArray = FlowService.GetPrevSteps(stepStrategyId, flowJsonObject);//会签步骤的所有前面步骤
foreach (var prevStepsJsonNode in prevStepsJsonArray)
{
var prevStepId = prevStepsJsonNode.GetLong("id");
//如果是当前步骤则跳过
if (prevStepId == currentFlowTaskModel.StepId)
{
continue;
}
List<long> prevStepIdList = [];
if (IdGeneratorUtils.IsId(stepStrategyStart))
{
//如果设置了起点步骤,则要查询起点步骤到会签前一步之间的步骤。
var middleStepsJsonArray = FlowService.GetMiddleSteps(stepStrategyStart, prevStepId, flowJsonObject);
foreach (var middleStepsJsonNode in middleStepsJsonArray)
{
var middleStepId = middleStepsJsonNode.GetLong("id");
if (IdGeneratorUtils.IsId(middleStepId))
{
prevStepIdList.Add(middleStepId);
}
}
}
else
{
//如果没有设置起点步骤,则只查询会签前一步
prevStepIdList.Add(prevStepId);
}
//循环将步骤上未处理的任务设置为他人已退回,将等待中的任务删除。
foreach (var prevStepIdLong in prevStepIdList)
{
foreach (var taskModel in groupTasks.Where(s => s.StepId == prevStepIdLong && s.Status < 1))
{
if (taskModel.Status == 0)
{
taskModel.Status = 1;
taskModel.HandleType = 5;
updateTasks.Add(taskModel);
}
else if (taskModel.Status == -1)
{
deleteTasks.Add(taskModel);
}
}
}
}
}
}
}
#endregion|
联系QQ:493501010电话:136 0832 5512(微信同号)邮箱:493501010@qq.com
© 2014 - 2026 重庆天知软件技术有限公司 版权所有
|