From b6c681349864ae469e8d786456b7e0de1f803496 Mon Sep 17 00:00:00 2001 From: konbai <1527468660@qq.com> Date: Sun, 7 Aug 2022 17:56:35 +0800 Subject: [PATCH] =?UTF-8?q?feat(=E6=B5=81=E7=A8=8B=E7=8B=AC=E7=AB=8B?= =?UTF-8?q?=E8=8A=82=E7=82=B9=E8=A1=A8=E5=8D=95):=20=E6=96=B0=E5=A2=9E?= =?UTF-8?q?=E6=B5=81=E7=A8=8B=E7=8B=AC=E7=AB=8B=E8=8A=82=E7=82=B9=E8=A1=A8?= =?UTF-8?q?=E5=8D=95=EF=BC=8C=E5=8F=AF=E5=9C=A8=E7=94=A8=E6=88=B7=E4=BB=BB?= =?UTF-8?q?=E5=8A=A1=E8=8A=82=E7=82=B9=E9=85=8D=E7=BD=AE=E8=A1=A8=E5=8D=95?= =?UTF-8?q?=EF=BC=88=E4=B8=8D=E5=85=BC=E5=AE=B9=E6=97=A7=E7=89=88=E6=9C=AC?= =?UTF-8?q?=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../workflow/WfProcessController.java | 6 + .../com/ruoyi/flowable/core/FormConf.java | 65 ++++++ .../flowable/utils/ProcessFormUtils.java | 33 +++ .../ruoyi/workflow/domain/bo/WfTaskBo.java | 2 +- .../ruoyi/workflow/domain/vo/WfDetailVo.java | 42 ++++ .../workflow/service/IWfProcessService.java | 9 + .../service/impl/WfProcessServiceImpl.java | 211 +++++++++++++++++- .../service/impl/WfTaskServiceImpl.java | 6 +- ruoyi-ui/src/api/workflow/process.js | 8 + .../plugins/package/penal/PropertiesPanel.vue | 3 +- ruoyi-ui/src/views/workflow/work/detail.vue | 136 +++++------ ruoyi-ui/src/views/workflow/work/start.vue | 8 +- 12 files changed, 443 insertions(+), 86 deletions(-) create mode 100644 ruoyi-flowable/src/main/java/com/ruoyi/flowable/core/FormConf.java create mode 100644 ruoyi-flowable/src/main/java/com/ruoyi/flowable/utils/ProcessFormUtils.java create mode 100644 ruoyi-system/src/main/java/com/ruoyi/workflow/domain/vo/WfDetailVo.java diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/workflow/WfProcessController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/workflow/WfProcessController.java index 31453d95..f4584d61 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/workflow/WfProcessController.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/workflow/WfProcessController.java @@ -64,6 +64,12 @@ public class WfProcessController extends BaseController { } + @ApiOperation(value = "查询流程详情信息") + @GetMapping("/detail") + public R detail(String procInsId, String deployId, String taskId) { + return R.ok(processService.queryProcessDetail(procInsId, deployId, taskId)); + } + @ApiOperation(value = "我拥有的流程", response = WfTaskVo.class) @SaCheckPermission("workflow:process:ownList") @GetMapping(value = "/ownList") diff --git a/ruoyi-flowable/src/main/java/com/ruoyi/flowable/core/FormConf.java b/ruoyi-flowable/src/main/java/com/ruoyi/flowable/core/FormConf.java new file mode 100644 index 00000000..2deb2590 --- /dev/null +++ b/ruoyi-flowable/src/main/java/com/ruoyi/flowable/core/FormConf.java @@ -0,0 +1,65 @@ +package com.ruoyi.flowable.core; + +import lombok.Data; + +import java.util.List; +import java.util.Map; + +/** + * 表单属性类 + * + * @author KonBAI + * @createTime 2022/8/6 18:54 + */ +@Data +public class FormConf { + + /** + * 标题 + */ + private String title; + /** + * 表单名 + */ + private String formRef; + /** + * 表单模型 + */ + private String formModel; + /** + * 表单尺寸 + */ + private String size; + /** + * 标签对齐 + */ + private String labelPosition; + /** + * 标签宽度 + */ + private Integer labelWidth; + /** + * 校验模型 + */ + private String formRules; + /** + * 栅格间隔 + */ + private Integer gutter; + /** + * 禁用表单 + */ + private Boolean disabled = false; + /** + * 栅格占据的列数 + */ + private Integer span; + /** + * 表单按钮 + */ + private Boolean formBtns = true; + /** + * 表单项 + */ + private List> fields; +} diff --git a/ruoyi-flowable/src/main/java/com/ruoyi/flowable/utils/ProcessFormUtils.java b/ruoyi-flowable/src/main/java/com/ruoyi/flowable/utils/ProcessFormUtils.java new file mode 100644 index 00000000..95f46dac --- /dev/null +++ b/ruoyi-flowable/src/main/java/com/ruoyi/flowable/utils/ProcessFormUtils.java @@ -0,0 +1,33 @@ +package com.ruoyi.flowable.utils; + +import cn.hutool.core.convert.Convert; +import com.ruoyi.flowable.core.FormConf; + +import java.util.Map; + +/** + * 流程表单工具类 + * + * @author KonBAI + * @createTime 2022/8/7 17:09 + */ +public class ProcessFormUtils { + + /** + * 填充表单项内容 + * + * @param formConf 表单配置信息 + * @param data 表单内容 + */ + public static void fillFormData(FormConf formConf, Map data) { + for (Map field : formConf.getFields()) { + String modelKey = Convert.toStr(field.get("__vModel__")); + Object value = data.get(modelKey); + if (value != null) { + @SuppressWarnings("unchecked") + Map configMap = (Map) field.get("__config__"); + configMap.put("defaultValue", value); + } + } + } +} diff --git a/ruoyi-system/src/main/java/com/ruoyi/workflow/domain/bo/WfTaskBo.java b/ruoyi-system/src/main/java/com/ruoyi/workflow/domain/bo/WfTaskBo.java index 3314d933..8ba46637 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/workflow/domain/bo/WfTaskBo.java +++ b/ruoyi-system/src/main/java/com/ruoyi/workflow/domain/bo/WfTaskBo.java @@ -36,7 +36,7 @@ public class WfTaskBo { private String targetKey; @ApiModelProperty("流程变量信息") - private Map values; + private Map variables; @ApiModelProperty("审批人") private String assignee; diff --git a/ruoyi-system/src/main/java/com/ruoyi/workflow/domain/vo/WfDetailVo.java b/ruoyi-system/src/main/java/com/ruoyi/workflow/domain/vo/WfDetailVo.java new file mode 100644 index 00000000..f53d75bb --- /dev/null +++ b/ruoyi-system/src/main/java/com/ruoyi/workflow/domain/vo/WfDetailVo.java @@ -0,0 +1,42 @@ +package com.ruoyi.workflow.domain.vo; + +import cn.hutool.core.util.ObjectUtil; +import com.ruoyi.flowable.core.FormConf; +import io.swagger.annotations.ApiModel; +import lombok.Data; + +import java.util.List; + +/** + * 流程详情视图对象 + * + * @author KonBAI + * @createTime 2022/8/7 15:01 + */ +@Data +@ApiModel("流程详情视图对象") +public class WfDetailVo { + + /** + * 任务表单信息 + */ + private FormConf taskFormData; + + /** + * 历史任务信息 + */ + private List historyTaskList; + + /** + * 流程表单列表 + */ + private List processFormList; + + /** + * 是否存在任务表单信息 + * @return true:存在;false:不存在 + */ + public Boolean isExistTaskForm() { + return ObjectUtil.isNotEmpty(this.taskFormData); + } +} diff --git a/ruoyi-system/src/main/java/com/ruoyi/workflow/service/IWfProcessService.java b/ruoyi-system/src/main/java/com/ruoyi/workflow/service/IWfProcessService.java index 9c0c2f3b..677700ff 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/workflow/service/IWfProcessService.java +++ b/ruoyi-system/src/main/java/com/ruoyi/workflow/service/IWfProcessService.java @@ -4,6 +4,7 @@ import com.ruoyi.common.core.domain.PageQuery; import com.ruoyi.common.core.page.TableDataInfo; import com.ruoyi.workflow.domain.bo.WfProcessBo; import com.ruoyi.workflow.domain.vo.WfDefinitionVo; +import com.ruoyi.workflow.domain.vo.WfDetailVo; import com.ruoyi.workflow.domain.vo.WfTaskVo; import java.util.Map; @@ -42,6 +43,14 @@ public interface IWfProcessService { */ void startProcessByDefKey(String procDefKey, Map variables); + /** + * 查询流程任务详情信息 + * @param procInsId 流程实例ID + * @param deployId 流程部署ID + * @param taskId 任务ID + */ + WfDetailVo queryProcessDetail(String procInsId, String deployId, String taskId); + /** * 查询我的流程列表 * @param pageQuery 分页参数 diff --git a/ruoyi-system/src/main/java/com/ruoyi/workflow/service/impl/WfProcessServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/workflow/service/impl/WfProcessServiceImpl.java index 01cfea3b..81e1cca5 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/workflow/service/impl/WfProcessServiceImpl.java +++ b/ruoyi-system/src/main/java/com/ruoyi/workflow/service/impl/WfProcessServiceImpl.java @@ -5,42 +5,58 @@ import cn.hutool.core.date.BetweenFormatter; import cn.hutool.core.date.DateUtil; import cn.hutool.core.io.IORuntimeException; import cn.hutool.core.io.IoUtil; +import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.google.common.collect.Lists; import com.ruoyi.common.core.domain.PageQuery; +import com.ruoyi.common.core.domain.entity.SysDept; +import com.ruoyi.common.core.domain.entity.SysRole; import com.ruoyi.common.core.domain.entity.SysUser; import com.ruoyi.common.core.page.TableDataInfo; import com.ruoyi.common.exception.ServiceException; import com.ruoyi.common.helper.LoginHelper; import com.ruoyi.common.utils.DateUtils; +import com.ruoyi.common.utils.JsonUtils; import com.ruoyi.common.utils.StringUtils; import com.ruoyi.flowable.common.constant.TaskConstants; +import com.ruoyi.flowable.core.FormConf; import com.ruoyi.flowable.factory.FlowServiceFactory; import com.ruoyi.flowable.utils.ModelUtils; +import com.ruoyi.flowable.utils.ProcessFormUtils; import com.ruoyi.flowable.utils.TaskUtils; +import com.ruoyi.system.service.ISysDeptService; +import com.ruoyi.system.service.ISysRoleService; import com.ruoyi.system.service.ISysUserService; import com.ruoyi.workflow.domain.WfDeployForm; import com.ruoyi.workflow.domain.bo.WfProcessBo; import com.ruoyi.workflow.domain.vo.WfDefinitionVo; import com.ruoyi.workflow.domain.vo.WfDeployFormVo; +import com.ruoyi.workflow.domain.vo.WfDetailVo; import com.ruoyi.workflow.domain.vo.WfTaskVo; import com.ruoyi.workflow.mapper.WfDeployFormMapper; import com.ruoyi.workflow.service.IWfProcessService; import com.ruoyi.workflow.service.IWfTaskService; import lombok.RequiredArgsConstructor; +import org.flowable.bpmn.constants.BpmnXMLConstants; import org.flowable.bpmn.model.BpmnModel; +import org.flowable.bpmn.model.Process; import org.flowable.bpmn.model.StartEvent; +import org.flowable.bpmn.model.UserTask; +import org.flowable.engine.history.HistoricActivityInstance; import org.flowable.engine.history.HistoricProcessInstance; import org.flowable.engine.history.HistoricProcessInstanceQuery; import org.flowable.engine.repository.Deployment; import org.flowable.engine.repository.ProcessDefinition; import org.flowable.engine.repository.ProcessDefinitionQuery; import org.flowable.engine.runtime.ProcessInstance; +import org.flowable.engine.task.Comment; +import org.flowable.identitylink.api.history.HistoricIdentityLink; import org.flowable.task.api.Task; import org.flowable.task.api.TaskQuery; import org.flowable.task.api.history.HistoricTaskInstance; import org.flowable.task.api.history.HistoricTaskInstanceQuery; +import org.flowable.variable.api.history.HistoricVariableInstance; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -49,6 +65,7 @@ import java.util.ArrayList; import java.util.List; import java.util.Map; import java.util.Objects; +import java.util.stream.Collectors; /** * @author KonBAI @@ -60,6 +77,8 @@ public class WfProcessServiceImpl extends FlowServiceFactory implements IWfProce private final IWfTaskService wfTaskService; private final ISysUserService userService; + private final ISysRoleService roleService; + private final ISysDeptService deptService; private final WfDeployFormMapper deployFormMapper; /** @@ -118,7 +137,8 @@ public class WfProcessServiceImpl extends FlowServiceFactory implements IWfProce StartEvent startEvent = ModelUtils.getStartEvent(bpmnModel); WfDeployFormVo deployFormVo = deployFormMapper.selectVoOne(new LambdaQueryWrapper() .eq(WfDeployForm::getDeployId, deployId) - .eq(WfDeployForm::getFormKey, startEvent.getFormKey())); + .eq(WfDeployForm::getFormKey, startEvent.getFormKey()) + .eq(WfDeployForm::getNodeKey, startEvent.getId())); return deployFormVo.getContent(); } @@ -174,6 +194,32 @@ public class WfProcessServiceImpl extends FlowServiceFactory implements IWfProce } } + /** + * 流程详情信息 + * + * @param procInsId 流程实例ID + * @param deployId 流程部署ID + * @param taskId 任务ID + * @return + */ + @Override + public WfDetailVo queryProcessDetail(String procInsId, String deployId, String taskId) { + WfDetailVo detailVo = new WfDetailVo(); + HistoricTaskInstance taskIns = historyService.createHistoricTaskInstanceQuery() + .taskId(taskId) + .includeIdentityLinks() + .includeProcessVariables() + .includeTaskLocalVariables() + .singleResult(); + if (taskIns == null) { + throw new ServiceException("没有可办理的任务!"); + } + detailVo.setTaskFormData(currTaskFormData(deployId, taskIns)); + detailVo.setHistoryTaskList(historyTaskList(procInsId)); + detailVo.setProcessFormList(processFormList(procInsId, deployId, taskIns)); + return detailVo; + } + @Override public TableDataInfo queryPageOwnProcessList(PageQuery pageQuery) { Page page = new Page<>(); @@ -405,4 +451,167 @@ public class WfProcessServiceImpl extends FlowServiceFactory implements IWfProce } return taskService.getVariables(taskId); } + + /** + * 获取当前任务流程表单信息 + */ + private FormConf currTaskFormData(String deployId, HistoricTaskInstance taskIns) { + WfDeployFormVo deployFormVo = deployFormMapper.selectVoOne(new LambdaQueryWrapper() + .eq(WfDeployForm::getDeployId, deployId) + .eq(WfDeployForm::getFormKey, taskIns.getFormKey()) + .eq(WfDeployForm::getNodeKey, taskIns.getTaskDefinitionKey())); + if (ObjectUtil.isNotEmpty(deployFormVo)) { + FormConf currTaskFormData = JsonUtils.parseObject(deployFormVo.getContent(), FormConf.class); + if (null != currTaskFormData) { + currTaskFormData.setFormBtns(false); + ProcessFormUtils.fillFormData(currTaskFormData, taskIns.getTaskLocalVariables()); + return currTaskFormData; + } + } + return null; + } + + /** + * 获取流程表单信息(不包括当前任务节点) + */ + private List processFormList(String procInsId, String deployId, HistoricTaskInstance taskIns) { + List procFormList = new ArrayList<>(); + HistoricProcessInstance historicProcIns = historyService.createHistoricProcessInstanceQuery().processInstanceId(procInsId).includeProcessVariables().singleResult(); + Process process = repositoryService.getBpmnModel(historicProcIns.getProcessDefinitionId()).getMainProcess(); + + buildStartFormData(historicProcIns, process, deployId, procFormList); + buildUserTaskFormData(procInsId, deployId, taskIns.getTaskDefinitionKey(), process, procFormList); + return procFormList; + } + + private void buildStartFormData(HistoricProcessInstance historicProcIns, Process process, String deployId, List procFormList) { + procFormList = procFormList == null ? new ArrayList<>() : procFormList; + HistoricActivityInstance startInstance = historyService.createHistoricActivityInstanceQuery() + .processInstanceId(historicProcIns.getId()) + .activityId(historicProcIns.getStartActivityId()) + .singleResult(); + StartEvent startEvent = (StartEvent) process.getFlowElement(startInstance.getActivityId()); + WfDeployFormVo startFormInfo = deployFormMapper.selectVoOne(new LambdaQueryWrapper() + .eq(WfDeployForm::getDeployId, deployId) + .eq(WfDeployForm::getFormKey, startEvent.getFormKey()) + .eq(WfDeployForm::getNodeKey, startEvent.getId())); + if (ObjectUtil.isNotNull(startFormInfo)) { + FormConf formConf = JsonUtils.parseObject(startFormInfo.getContent(), FormConf.class); + if (null != formConf) { + formConf.setTitle(startEvent.getName()); + formConf.setDisabled(true); + formConf.setFormBtns(false); + ProcessFormUtils.fillFormData(formConf, historicProcIns.getProcessVariables()); + procFormList.add(formConf); + } + } + } + + private void buildUserTaskFormData(String procInsId, String deployId, String taskActivityId, Process process, List procFormList) { + procFormList = procFormList == null ? new ArrayList<>() : procFormList; + List activityInstanceList = historyService.createHistoricActivityInstanceQuery() + .processInstanceId(procInsId).finished() + .activityType(BpmnXMLConstants.ELEMENT_TASK_USER) + .orderByHistoricActivityInstanceStartTime().asc() + .list(); + for (HistoricActivityInstance instanceItem : activityInstanceList) { + // 跳过当前节点 + if (instanceItem.getActivityId().equals(taskActivityId)) { + continue; + } + UserTask userTask = (UserTask) process.getFlowElement(instanceItem.getActivityId(), true); + String formKey = userTask.getFormKey(); + if (formKey == null) { + continue; + } + // 查询任务节点参数,并转换成Map + Map variables = historyService.createHistoricVariableInstanceQuery() + .processInstanceId(procInsId) + .taskId(instanceItem.getTaskId()) + .list() + .stream() + .collect(Collectors.toMap(HistoricVariableInstance::getVariableName, HistoricVariableInstance::getValue)); + WfDeployFormVo deployFormVo = deployFormMapper.selectVoOne(new LambdaQueryWrapper() + .eq(WfDeployForm::getDeployId, deployId) + .eq(WfDeployForm::getFormKey, formKey) + .eq(WfDeployForm::getNodeKey, userTask.getId())); + if (ObjectUtil.isNotNull(deployFormVo)) { + FormConf formConf = JsonUtils.parseObject(deployFormVo.getContent(), FormConf.class); + if (null != formConf) { + formConf.setTitle(userTask.getName()); + formConf.setDisabled(true); + formConf.setFormBtns(false); + ProcessFormUtils.fillFormData(formConf, variables); + procFormList.add(formConf); + } + } + } + } + + /** + * 获取历史任务信息列表 + */ + private List historyTaskList(String procInsId) { + List taskInstanceList = historyService.createHistoricTaskInstanceQuery() + .processInstanceId(procInsId) + .orderByHistoricTaskInstanceStartTime().desc() + .list(); + List commentList = taskService.getProcessInstanceComments(procInsId); + List taskVoList = new ArrayList<>(taskInstanceList.size()); + taskInstanceList.forEach(taskInstance -> { + WfTaskVo taskVo = new WfTaskVo(); + taskVo.setProcDefId(taskInstance.getProcessDefinitionId()); + taskVo.setTaskId(taskInstance.getId()); + taskVo.setTaskDefKey(taskInstance.getTaskDefinitionKey()); + taskVo.setTaskName(taskInstance.getName()); + taskVo.setCreateTime(taskInstance.getStartTime()); + taskVo.setFinishTime(taskInstance.getEndTime()); + if (StringUtils.isNotBlank(taskInstance.getAssignee())) { + SysUser user = userService.selectUserById(Long.parseLong(taskInstance.getAssignee())); + taskVo.setAssigneeId(user.getUserId()); + taskVo.setAssigneeName(user.getNickName()); + taskVo.setDeptName(user.getDept().getDeptName()); + } + // 展示审批人员 + List linksForTask = historyService.getHistoricIdentityLinksForTask(taskInstance.getId()); + StringBuilder stringBuilder = new StringBuilder(); + for (HistoricIdentityLink identityLink : linksForTask) { + if ("candidate".equals(identityLink.getType())) { + if (StringUtils.isNotBlank(identityLink.getUserId())) { + SysUser user = userService.selectUserById(Long.parseLong(identityLink.getUserId())); + stringBuilder.append(user.getNickName()).append(","); + } + if (StringUtils.isNotBlank(identityLink.getGroupId())) { + if (identityLink.getGroupId().startsWith(TaskConstants.ROLE_GROUP_PREFIX)) { + Long roleId = Long.parseLong(StringUtils.stripStart(identityLink.getGroupId(), TaskConstants.ROLE_GROUP_PREFIX)); + SysRole role = roleService.selectRoleById(roleId); + stringBuilder.append(role.getRoleName()).append(","); + } else if (identityLink.getGroupId().startsWith(TaskConstants.DEPT_GROUP_PREFIX)) { + Long deptId = Long.parseLong(StringUtils.stripStart(identityLink.getGroupId(), TaskConstants.DEPT_GROUP_PREFIX)); + SysDept dept = deptService.selectDeptById(deptId); + stringBuilder.append(dept.getDeptName()).append(","); + } + } + } + } + if (StringUtils.isNotBlank(stringBuilder)) { + taskVo.setCandidate(stringBuilder.substring(0, stringBuilder.length() - 1)); + } + if (ObjectUtil.isNotNull(taskInstance.getDurationInMillis())) { + taskVo.setDuration(DateUtil.formatBetween(taskInstance.getDurationInMillis(), BetweenFormatter.Level.SECOND)); + } + // 获取意见评论内容 + if (CollUtil.isNotEmpty(commentList)) { + List comments = new ArrayList<>(); + for (Comment comment : commentList) { + if (comment.getTaskId().equals(taskInstance.getId())) { + comments.add(comment); + } + } + taskVo.setCommentList(comments); + } + taskVoList.add(taskVo); + }); + return taskVoList; + } } diff --git a/ruoyi-system/src/main/java/com/ruoyi/workflow/service/impl/WfTaskServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/workflow/service/impl/WfTaskServiceImpl.java index 21761459..9df38e2b 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/workflow/service/impl/WfTaskServiceImpl.java +++ b/ruoyi-system/src/main/java/com/ruoyi/workflow/service/impl/WfTaskServiceImpl.java @@ -82,13 +82,13 @@ public class WfTaskServiceImpl extends FlowServiceFactory implements IWfTaskServ } if (DelegationState.PENDING.equals(task.getDelegationState())) { taskService.addComment(taskBo.getTaskId(), taskBo.getInstanceId(), FlowComment.DELEGATE.getType(), taskBo.getComment()); - taskService.resolveTask(taskBo.getTaskId(), taskBo.getValues()); + taskService.resolveTask(taskBo.getTaskId()); } else { taskService.addComment(taskBo.getTaskId(), taskBo.getInstanceId(), FlowComment.NORMAL.getType(), taskBo.getComment()); Long userId = LoginHelper.getUserId(); taskService.setAssignee(taskBo.getTaskId(), userId.toString()); - if (ObjectUtil.isNotEmpty(taskBo.getValues())) { - taskService.complete(taskBo.getTaskId(), taskBo.getValues()); + if (ObjectUtil.isNotEmpty(taskBo.getVariables())) { + taskService.complete(taskBo.getTaskId(), taskBo.getVariables(), true); } else { taskService.complete(taskBo.getTaskId()); } diff --git a/ruoyi-ui/src/api/workflow/process.js b/ruoyi-ui/src/api/workflow/process.js index d8b70363..63dded4e 100644 --- a/ruoyi-ui/src/api/workflow/process.js +++ b/ruoyi-ui/src/api/workflow/process.js @@ -27,6 +27,14 @@ export function startProcess(processDefId, data) { }) } +export function detailProcess(query) { + return request({ + url: '/workflow/process/detail', + method: 'get', + params: query + }) +} + // 我的发起的流程 export function listOwnProcess(query) { return request({ diff --git a/ruoyi-ui/src/plugins/package/penal/PropertiesPanel.vue b/ruoyi-ui/src/plugins/package/penal/PropertiesPanel.vue index ac06d0db..e33c803c 100644 --- a/ruoyi-ui/src/plugins/package/penal/PropertiesPanel.vue +++ b/ruoyi-ui/src/plugins/package/penal/PropertiesPanel.vue @@ -183,8 +183,7 @@ export default { activatedElement.source && activatedElement.source.type.indexOf("StartEvent") === -1 ); - this.formVisible = this.elementType === "StartEvent"; - // this.formVisible = this.elementType === "UserTask" || this.elementType === "StartEvent"; + this.formVisible = this.elementType === "UserTask" || this.elementType === "StartEvent"; }, beforeDestroy() { window.bpmnInstances = null; diff --git a/ruoyi-ui/src/views/workflow/work/detail.vue b/ruoyi-ui/src/views/workflow/work/detail.vue index 1c148a43..86c58ebc 100644 --- a/ruoyi-ui/src/views/workflow/work/detail.vue +++ b/ruoyi-ui/src/views/workflow/work/detail.vue @@ -3,7 +3,18 @@ - + +
+ 填写表单 +
+ + + +
+ +
+ 审批流程 +
@@ -48,21 +59,17 @@
- - - -
- +
+ +
+ {{ formInfo.title }}
- - - - -
- -
-
-
+ + + + + +
@@ -70,7 +77,7 @@
- +

{{ item.taskName }}

@@ -98,7 +105,7 @@ @@ -181,10 +188,10 @@