1、修改了流程发送系统判断符合条件的步骤默认全部选中。
修改文件:\RoadFlow.WebUIElement\src\roadui-pages\flow\run\send.vue

2、修改了应用程序设计没有设计查询条件时生成模板错误的问题。
修改文件:\RoadFlow.Service\Program.cs

3、修改了editor上传文件withCredentials设置。
修改文件:\RoadFlow.WebUIElement\src\roadui-components\el-ckeditor.vue

修改文件:\RoadFlow.Service\User.cs

修改文件:\RoadFlow.WebUIElement\src\roadui-pages\form\design.vue

4、增加了前加签功能。
修改文件:\RoadFlow.WebUIElement\src\roadui-pages\flow\run\addwrite.vue


修改文件:\RoadFlow.Service\FlowRun.cs

#region 如果是前加签,则发送给加签人
if (currentTaskModel != null && currentTaskModel.TaskType == 6)
{
var prevTask = groupTaskList.Where(p => p.Id == currentTaskModel.PrevId).FirstOrDefault();
if (prevTask != null)
{
string members = RoadFlow.Service.FlowTask.GetTaskReceiverId(prevTask);
jObject.Add("designNextStepSize", 1);
jObject.Add("flowType", 0);
jObject.Add("steps", new JArray()
{
new JObject()
{
{ "id", currentTaskModel.StepId.ToString() },
{ "name", currentTaskModel.StepName },
{ "checked", true },
{ "disabled", false },
{ "members", members},
{ "selectType", "" },
{ "selectRange", members },
{ "allowSelect", 0 },
{ "selectTime", 0 },
{ "completeTime", "" },//选择的完成时间
{ "autoConfirm", 0 },//有默认处理人时自动确认
}
});
return jObject;
}
}
#endregion 
修改文件:\RoadFlow.Service\FlowExecute.cs

#region 处理前加签任务
if (currentTaskModel.TaskType == 6)
{
//查询同步骤的同一加签任务,判断是否加签通过。
var existsAddWriteTasks = groupTaskList.Exists(p => p.StepId == currentTaskModel.StepId && p.PrevId == currentTaskModel.PrevId && p.ReceiveOrder == currentTaskModel.ReceiveOrder && p.Status < 1 && p.Id != currentTaskModel.Id);
//如果所有加签人都处理完成,则激活加签前任务。
if (!existsAddWriteTasks)
{
var prevTask = groupTaskList.Where(p => p.Id == currentTaskModel.PrevId).FirstOrDefault();
if (prevTask != null)
{
prevTask.Status = 0;
updateTasks.Add(prevTask);
executeResult.ReceiveHandler = string.IsNullOrEmpty(prevTask.ReceiverName) ? "" : prevTask.ReceiverName;
}
}
#region 完成当前任务
currentTaskModel.HandleType = executeModel.Type == RoadFlow.Model.FlowRunModel.ExecuteType.AutoSubmit ? 16 : 2;
currentTaskModel.Status = 1;
currentTaskModel.CompletedTime = RoadFlow.Utility.Extensions.DateTimeExtensions.Now();
currentTaskModel.Comment = executeModel.Comment;
currentTaskModel.Attachment = executeModel.Attachment;
currentTaskModel.IsSign = executeModel.IsSign;
updateTasks.Add(currentTaskModel);
#endregion
return;
}
#endregion 

/// <summary>
/// 处理加签-前加签
/// </summary>
/// <param name="executeResult">执行返回实体</param>
/// <param name="addStep">加签步骤</param>
/// <param name="receiveUsers">加签接收人</param>
/// <param name="currentTaskModel">当前任务</param>
/// <param name="groupTaskList">当前任务组</param>
/// <param name="addTasks">要添加的任务列表</param>
private static void ExecuteAddWrite_Before(RoadFlow.Model.FlowRunModel.FlowExecuteResult executeResult, RoadFlow.Model.FlowRunModel.FlowExecuteStep addStep, List<RoadFlow.Model.User> receiveUsers, RoadFlow.Model.FlowTask currentTaskModel, List<RoadFlow.Model.FlowTask> groupTaskList, List<RoadFlow.Model.FlowTask> updateTasks, List<RoadFlow.Model.FlowTask> addTasks)
{
List<string> receiverNames = new();
foreach (var receiveUser in receiveUsers)
{
//如果当前步骤接收人已经有任务,则不再添加。
if (groupTaskList.Exists(p => p.StepId == addStep.Id && p.ReceiverId == receiveUser.Id && p.TaskType.NotIn(5, 11) && p.Status != 1)
|| addTasks.Exists(p => p.StepId == addStep.Id && p.ReceiverId == receiveUser.Id && p.TaskType.NotIn(5, 11) && p.Status != 1)
)
{
continue;
}
var taskModel = currentTaskModel.NotNullClone();
taskModel.Id = IdGenerator.NextId();
taskModel.Status = 0;
taskModel.HandleType = 0;
taskModel.ReceiveMember = string.Empty;
taskModel.Comment = string.Empty;
taskModel.Attachment = string.Empty;
taskModel.IsSign = 0;
taskModel.SenderId = currentTaskModel.ReceiverId;
taskModel.SenderName = currentTaskModel.ReceiverName;
taskModel.ReceiverId = receiveUser.Id;
taskModel.ReceiverName = receiveUser.Name;
taskModel.ReceiveTime = RoadFlow.Utility.Extensions.DateTimeExtensions.Now();
taskModel.OrganizeUserId = receiveUser.ParttimeId;
taskModel.TaskType = 6;
taskModel.OtherType = addStep.AddWriteHandleType == 0 ? 20 : 21;
taskModel.CompletedTime = null;
//taskModel.CompleteTime = null;
taskModel.OpenTime = null;
taskModel.PrevId = currentTaskModel.Id;
taskModel.ReceiveOrder = currentTaskModel.ReceiveOrder + 1; //RoadFlow.Service.FlowTask.GetMaxReceiveOrder(groupTaskList, currentTaskModel.StepId, currentTaskModel);
addTasks.Add(taskModel);
executeResult.NextTasks.Add(taskModel);
receiverNames.Add(string.IsNullOrEmpty(receiveUser.Name) ? string.Empty : receiveUser.Name);
}
executeResult.ReceiveHandler = receiverNames.JoinToString("、");
//前加签要将当前任务改为等待中。
currentTaskModel.Status = -1;
updateTasks.Add(currentTaskModel);
}5、增加了主流程查看子流程处理过程。
流程按钮库增加按钮,在子流程步骤上配置按钮。

修改文件:\RoadFlow.WebUIElement\src\roadui-pages\flow\run\index.vue

修改文件:\RoadFlow.WebUIElement\src\roadui-pages\flow\run\process.vue



修改文件:\RoadFlow.Web\Areas\RoadFlowApi\Controllers\FlowController.cs

/// <summary>
/// 得到子流程信息
/// </summary>
/// <returns></returns>
[HttpPost("GetSubFlowData")]
[ApiValidate(ValidEnterpriseWeChat = true)]
public string GetSubFlowData()
{
long taskId = Request.QueryLong("taskid");
var taskModel = RoadFlow.Service.FlowTask.Get(taskId);
JObject jObject = new();
if (taskModel == null || string.IsNullOrWhiteSpace(taskModel.SubflowGroupId))
{
return RoadFlow.Utility.Json.GetResponseJsonString(1);
}
long subflowGroupId = taskModel.SubflowGroupId.SplitToArray()[0].ToLong();
var sunflowGroupList = RoadFlow.Service.FlowTask.GetListByGroupId(subflowGroupId);
jObject.Add("subflowGroupId", subflowGroupId.ToString());
jObject.Add("subflowId", sunflowGroupList.Count > 0 ? sunflowGroupList.First().FlowId.ToString() : "");
return RoadFlow.Utility.Json.GetResponseJsonString(jObject);
}6、修改了独立退回策略为退回给发送人。
修改文件:\RoadFlow.Service\FlowRun.cs

int backType = currentStepModel.StepStrategy.BackType;
//2023-10-11修改了独立退回时,如果是退回前一步,则策略为直接退回给发送人
if (backMode == 4 && backType == 0)
{
var prevTask = groupTaskList.Where(p => p.Id == currentTaskModel.PrevId).FirstOrDefault();
if (prevTask != null)
{
string prevUserId = RoadFlow.Service.FlowTask.GetTaskReceiverId(prevTask);
stepsJArray.Add(new JObject()
{
{ "id", prevTask.StepId.ToString() },//步骤id
{ "name", prevTask.StepName },//步骤名称
{ "checked", true },//是否选中
{ "disabled", false },//是否禁用
{ "members", prevUserId },//默认处理者
{ "selectRange", prevUserId },//选择范围
{ "allowSelect", currentStepModel.StepStrategy.BackSelectUser },//是否允许运行时选择
});
jObject.Add("code", 0);
return jObject;
}
}7、修改了文件上传控件上传不允许的文件类型会清空列表问题。
修改文件:\RoadFlow.WebUIElement\src\roadui-components\el_selectfile.vue


8、修改了查看附件图片的弹出层大小显示。
修改文件:\RoadFlow.WebUIElement\src\roadui-assets\utils.js

修改文件:\RoadFlow.WebUIElement\src\roadui-pages\index.vue

<template #header>
<div>
<span style="width:calc(100% - 80px);display:inline-block;text-overflow:ellipsis;overflow:hidden;white-space:nowrap;vertical-align:middle;" class="el-dialog__title">{{dialogTitle}}</span>
<span style="width: 80px; display: inline-block; vertical-align: middle;">
<a v-if="dialogIsShowFile&&utils.query('isminiprogram',dialogFileUrl)!=1" class="roaduia" onclick="javascript:;" @click="utils.openNew(dialogFileUrl+'&download=1')" style="margin-left:12px">下载文件</a>
</span>
</div>
</template>
<div v-if="dialogIsIframe">
<!--移动端显示pdf-->
<span v-if="utils.query('ismobile',dialogFileUrl)==1&&(utils.isPdfFile(dialogTitle)||utils.isOfficeFile(dialogTitle))">
<VuePdf :src="dialogFileUrl" :style="`width:100%;height:${dialogHeight};border:0;`"></VuePdf>
</span>
<img v-else-if="utils.isImageFile(dialogTitle)" :src="dialogFileUrl" style="display:block;margin:0 auto;" />
<iframe v-else :src="dialogIsShowFile?dialogFileUrl:dialogComponentId" :style="`width:100%;height:${dialogHeight};border:0;`" frameborder="0"></iframe>
</div>将\RoadFlow\RoadFlow.WebUIElement\src\roadui-assets\share.css

红框中的内容移动到\RoadFlow.WebUIElement\index.html

9、修改了待办批量列表不显示抄送和征求意见任务。
修改文件:\RoadFlow.Data\FlowTask.cs

10、修改了表单设计子表复选按钮发布时错误。
修改文件:\RoadFlow.WebUIElement\src\roadui-pages\form\form-design.js

11、升级element-plus至2.4.1。
npm install element-plus@2.4.1
|
联系QQ:493501010电话:136 0832 5512(微信同号)邮箱:road@roadflow.net
Copyright 2014 - 2025 重庆天知软件技术有限公司 版权所有
|