基于jeecgboot-vue3的Flowable流程-我的任务(三)

2024-06-02 11:04

本文主要是介绍基于jeecgboot-vue3的Flowable流程-我的任务(三),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

因为这个项目license问题无法开源,更多技术支持与服务请加入我的知识星球。

这一部分主要讲我的任务里的详情,看流程情况

1、主要调用record/index.vue,调用参数如下:

/*** 详情*/function handleDetail(record: Recordable) {console.log("handleDetail record",record)router.push({ path: '/flowable/task/record/index',query: {procInsId: record.procInsId,deployId: record.deployId,taskId: record.taskId,businessKey: record.businessKey,appType: record.appType,finished: false}})}

2、表单显示部分,用的VForm3,所以是下面的显示代码,根据需要可以修改成formdesigner

<!--流程处理表单设计器模块,从flowable表里获取表单数据--><el-col :span="16" :offset="4" v-if="variableOpen"><div><!--处理流程过程中显示formdesigner表单信息--><v-form-renderv-if="startUserForm.isStartUserNode && startUserForm.editFormType === 'oa' && finished === 'true'"ref="refStartBuilder":form-json="formModel":form-data="formData"/><v-form-render v-else :form-json="formModel" :form-data="formData" ref="refStartBuilder" /></div>

3、获取上面的相应值从下面的接口获取

/** 获取流程变量内容 */const processVariables = (taskId, deployId) => {if (taskId) {// 提交流程申请时填写的表单存入了流程变量中后续任务处理时需要展示getProcessVariables(taskId, deployId).then((res) => {console.log('getProcessVariables res=', res);variables.value = res.result.variables;if (res.success) {if (res.result.hasOwnProperty('variables')) {formData.value = res.result.variables;variableOpen.value = true;formModel.value = res.result.formModel;taskForm.values = formData.value;}getNextFlowNodeInfo(taskForm.taskId);} else {createMessage.error(res.message);}});}};

4、审批记录相关代码如下:

<!--流程流转记录--><el-card class="box-card" v-if="flowRecordList"><template #header class="clearfix"><span class="el-icon-notebook-1">审批记录</span></template><el-col :span="16" :offset="4"><div class="block"><el-timeline><el-timeline-itemv-for="(item, index) in flowRecordList":key="index":icon="setIcon(item.finishTime)":color="setColor(item.finishTime)"><p style="font-weight: 700">{{ item.taskName }}</p><el-card v-if="item.activityType === 'startEvent'" class="box-card" shadow="hover">{{ item.assigneeName }} 在 {{ item.createTime }} 发起流程</el-card><el-card v-if="item.activityType === 'userTask'" :body-style="{ padding: '10px' }"><label v-if="item.assigneeName" style="font-weight: normal; margin-right: 30px">实际办理:{{ item.assigneeName }}<el-tag type="info" size="small">{{ item.deptName }}</el-tag></label><label v-if="item.candidate" style="font-weight: normal; margin-right: 30px">候选办理: {{ item.candidate }}</label><label style="font-weight: normal">接收时间: </label><label style="color: #8a909c; font-weight: normal">{{ item.createTime }}</label><label v-if="item.finishTime" style="margin-left: 30px; font-weight: normal">办结时间: </label><label style="color: #8a909c; font-weight: normal">{{ item.finishTime }}</label><label v-if="item.duration" style="margin-left: 30px; font-weight: normal">耗时: </label><label style="color: #8a909c; font-weight: normal">{{ item.duration }}</label><p v-if="item.listFlowCommentDto.length > 0" v-for="(commentitem, index) in item.listFlowCommentDto" :key="index"><el-tag type="success" v-if="commentitem.type === '1'"> {{ commentitem.comment }}</el-tag><el-tag type="warning" v-if="commentitem.type === '2'"> {{ '退回: ' + commentitem.comment }}</el-tag> <el-tag type="danger" v-if="commentitem.type === '3'"> {{ '驳回: ' + commentitem.comment }}</el-tag><el-tag type="success" v-if="commentitem.type === '4'"> {{ commentitem.comment }}</el-tag><el-tag type="success" v-if="commentitem.type === '5'"> {{ commentitem.comment }}</el-tag><el-tag type="warning" v-if="commentitem.type === '7'"> {{ '撤回: ' + commentitem.comment }}</el-tag><!--撤回信息--><el-tag type="warning" v-if="commentitem.type === '6'"> {{ commentitem.comment }}</el-tag><!--终止信息--><el-tag type="warning" v-if="commentitem.type === '8'"> {{ commentitem.comment }}</el-tag><!--跳过信息--><el-tag type="success" v-if="commentitem.type === '9'"> {{ commentitem.comment }}</el-tag><!--前加签--><el-tag type="success" v-if="commentitem.type === '10'"> {{ commentitem.comment }}</el-tag><!--后加签--><el-tag type="success" v-if="commentitem.type === '11'"> {{ commentitem.comment }}</el-tag><!--多实例加签--><el-tag type="success" v-if="commentitem.type === '12'"> {{ commentitem.comment }}</el-tag><!--跳转信息--></p></el-card><el-card v-if="item.activityType === 'endEvent'" class="box-card" shadow="hover"> {{ item.createTime }} 流程结束 </el-card></el-timeline-item></el-timeline></div></el-col></el-card>

目前上面的审批记录没有考虑上传文件的显示与处理,后续再根据需要处理

5、流程图,这里采用process-viewer

<el-card class="box-card"><template #header class="clearfix"><span class="el-icon-picture-outline">流程图</span></template><!-- 流程图 --><process-viewer:key="`designer-${loadIndex}`":style="'height:' + height" :xml="xmlData":finishedInfo="taskList":allCommentList="historyProcNodeList"ref="refNode"/> </el-card>

6、相应的上面值代码如下,目前还没有考虑historyProcNodeList

/** xml 文件 */const getModelDetail = (deployId) => {// 发送请求,获取xmlreadXml(deployId).then((res) => {console.log('readXml res', res);xmlData.value = res.result;getFlowViewerById(taskForm.procInsId);});};const getFlowViewerById = (procInsId) => {getFlowViewer(procInsId).then((res) => {taskList.value = res.result || [];console.log('taskList=', taskList.value);//fillColor();});};

7、效果图如下:

这篇关于基于jeecgboot-vue3的Flowable流程-我的任务(三)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1023780

相关文章

使用MongoDB进行数据存储的操作流程

《使用MongoDB进行数据存储的操作流程》在现代应用开发中,数据存储是一个至关重要的部分,随着数据量的增大和复杂性的增加,传统的关系型数据库有时难以应对高并发和大数据量的处理需求,MongoDB作为... 目录什么是MongoDB?MongoDB的优势使用MongoDB进行数据存储1. 安装MongoDB

Python Invoke自动化任务库的使用

《PythonInvoke自动化任务库的使用》Invoke是一个强大的Python库,用于编写自动化脚本,本文就来介绍一下PythonInvoke自动化任务库的使用,具有一定的参考价值,感兴趣的可以... 目录什么是 Invoke?如何安装 Invoke?Invoke 基础1. 运行测试2. 构建文档3.

vue解决子组件样式覆盖问题scoped deep

《vue解决子组件样式覆盖问题scopeddeep》文章主要介绍了在Vue项目中处理全局样式和局部样式的方法,包括使用scoped属性和深度选择器(/deep/)来覆盖子组件的样式,作者建议所有组件... 目录前言scoped分析deep分析使用总结所有组件必须加scoped父组件覆盖子组件使用deep前言

VUE动态绑定class类的三种常用方式及适用场景详解

《VUE动态绑定class类的三种常用方式及适用场景详解》文章介绍了在实际开发中动态绑定class的三种常见情况及其解决方案,包括根据不同的返回值渲染不同的class样式、给模块添加基础样式以及根据设... 目录前言1.动态选择class样式(对象添加:情景一)2.动态添加一个class样式(字符串添加:情

解决Cron定时任务中Pytest脚本无法发送邮件的问题

《解决Cron定时任务中Pytest脚本无法发送邮件的问题》文章探讨解决在Cron定时任务中运行Pytest脚本时邮件发送失败的问题,先优化环境变量,再检查Pytest邮件配置,接着配置文件确保SMT... 目录引言1. 环境变量优化:确保Cron任务可以正确执行解决方案:1.1. 创建一个脚本1.2. 修

Python实现NLP的完整流程介绍

《Python实现NLP的完整流程介绍》这篇文章主要为大家详细介绍了Python实现NLP的完整流程,文中的示例代码讲解详细,具有一定的借鉴价值,感兴趣的小伙伴可以跟随小编一起学习一下... 目录1. 编程安装和导入必要的库2. 文本数据准备3. 文本预处理3.1 小写化3.2 分词(Tokenizatio

Java实现任务管理器性能网络监控数据的方法详解

《Java实现任务管理器性能网络监控数据的方法详解》在现代操作系统中,任务管理器是一个非常重要的工具,用于监控和管理计算机的运行状态,包括CPU使用率、内存占用等,对于开发者和系统管理员来说,了解这些... 目录引言一、背景知识二、准备工作1. Maven依赖2. Gradle依赖三、代码实现四、代码详解五

如何使用celery进行异步处理和定时任务(django)

《如何使用celery进行异步处理和定时任务(django)》文章介绍了Celery的基本概念、安装方法、如何使用Celery进行异步任务处理以及如何设置定时任务,通过Celery,可以在Web应用中... 目录一、celery的作用二、安装celery三、使用celery 异步执行任务四、使用celery

什么是cron? Linux系统下Cron定时任务使用指南

《什么是cron?Linux系统下Cron定时任务使用指南》在日常的Linux系统管理和维护中,定时执行任务是非常常见的需求,你可能需要每天执行备份任务、清理系统日志或运行特定的脚本,而不想每天... 在管理 linux 服务器的过程中,总有一些任务需要我们定期或重复执行。就比如备份任务,通常会选在服务器资

React实现原生APP切换效果

《React实现原生APP切换效果》最近需要使用Hybrid的方式开发一个APP,交互和原生APP相似并且需要IM通信,本文给大家介绍了使用React实现原生APP切换效果,文中通过代码示例讲解的非常... 目录背景需求概览技术栈实现步骤根据 react-router-dom 文档配置好路由添加过渡动画使用