.NET CORE开源工作流引擎 - 可视化流程设计器 - 工作流表单设计器 - .NET快速开发平台 - .NET三层代码生成器 - 通用权限管理

.NET MVC CORE开源工作流平台,可视化流程设计器
RoadFlowEle6.2.8升级说明

1、修改了流程发送系统判断符合条件的步骤默认全部选中。

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

    image.png

2、修改了应用程序设计没有设计查询条件时生成模板错误的问题。

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

    image.png

3、修改了editor上传文件withCredentials设置。

    修改文件:\RoadFlow.WebUIElement\src\roadui-components\el-ckeditor.vue

    image.png

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

    image.png

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

    image.png

4、增加了前加签功能。

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

    image.png

    image.png

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

    image.png

  #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

    image.png

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

    image.png

   #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

        image.png

    image.png

 /// <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、增加了主流程查看子流程处理过程。

    流程按钮库增加按钮,在子流程步骤上配置按钮。

    image.png

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

    image.png

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

    image.png

    image.png

    image.png

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

    image.png

    /// <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

    image.png

    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

    image.png

    image.png

8、修改了查看附件图片的弹出层大小显示。

    修改文件:\RoadFlow.WebUIElement\src\roadui-assets\utils.js

    image.png

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

    image.png

    <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

    image.png

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

    image.png

9、修改了待办批量列表不显示抄送和征求意见任务。

    修改文件:\RoadFlow.Data\FlowTask.cs

    image.png

10、修改了表单设计子表复选按钮发布时错误。

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

    image.png

11、升级element-plus至2.4.1。

    npm install element-plus@2.4.1








联系QQ:493501010电话:136 0832 5512(微信同号)邮箱:road@roadflow.net
Copyright 2014 - 2024 重庆天知软件技术有限公司 版权所有