基于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-render
            v-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-item
              v-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) => {
    // 发送请求,获取xml
    readXml(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、效果图如下:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/670689.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

基于Chisel的FPGA流水灯设计

Chisel流水灯 一、Chisel&#xff08;一&#xff09;什么是Chisel&#xff08;二&#xff09;Chisel能做什么&#xff08;三&#xff09;Chisel的使用&#xff08;四&#xff09;Chisel的优缺点1.优点2.缺点 二、流水灯设计 一、Chisel &#xff08;一&#xff09;什么是Chise…

MySQL事务与MVCC

文章目录 事务和事务的隔离级别1.为什么需要事务2.事务特性1_原子性&#xff08;atomicity&#xff09;2_一致性&#xff08;consistency&#xff09;3_持久性&#xff08;durability&#xff09;4_隔离性&#xff08;isolation&#xff09; 3.事务并发引发的问题1_脏读2_不可重…

Linux的程序管理2:设置优先级,程序的查看与处理---ps命令详解与kill,killall,top,renice,nice搭配使用管理linux

前言 程序的管理除了前文说到的前后台执行&#xff0c;离线执行。还包括下面几个方面&#xff1a; 1&#xff1a;如何找到最耗费系统资源的程序&#xff1f; &#xff08;使用top命令找到PID然后排查原因&#xff09; 2&#xff1a;设置程序的优先级&#xff0c;让其被执行的概…

MulterError: Field name missing 报错解决

Request POST /FileUpload/chunkApi/upload/mProjectNews/Images failed with status code 500. MulterError: Field name missing. 原因&#xff1a;Multer是基于Busboy解析的表单参数信息&#xff0c;经定位发现是解析表单中文本参数时出现了null&#xff0c;故收到MISSION_…

Unity DOTS技术(一)简介

文章目录 一.概述二.将会介绍的内容三.DOTS技术与传统方式的不同传统问题DOTS技术 四.插件安装 一.概述 传统的游戏开发中,如果有成千上万的物体在场景中运动,那么你一定会认为是疯了.但有了Dost技术这一些都将变成可能.如图场景中有10000个物体在同时运动,帧率即能保持在60Fp…

vmware workstation 17.0.0 ubuntu删除快照导致无法启动的问题打不开磁盘xxxxxxx或它所依赖的某个快照磁盘

在使用vmware workstation的时候 在我删除多余的快照的时候&#xff0c;发现删除快照后打不开虚拟机了&#xff0c; 提示&#xff1a; 打不开此虚拟磁盘的父磁盘打不开磁盘“D:\Virtual Machines\Ubuntu 64 位\Ubuntu 64 位-000003.vmdk”或它所依赖的某个快照磁盘。模块“Dis…

有开源软件,也有开源硬件?

开源软件或库有很多&#xff0c;例如 Linux 操作系统的内核 The Linux Kernel Archiveshttps://www.kernel.org/ 开源的各种Linux发行版本&#xff0c;Ubuntu 、CentOS等 Enterprise Open Source and Linux | Ubuntuhttps://ubuntu.com/ 开源的视觉函数库&#xff0c;OpenC…

虚拟化软件(VMWare、VB)异常最后解决手段

Version V0.0&#xff1a;20240601 Ini 前言 这里描述的是常规的解决办法还是无法解决的严重问题&#xff0c;比如”虚拟化软件(VMWare、VB)“启动”虚拟机“、和”CPU硬件加速“开启不了等问题。 一、安装了加速器、游戏平台、模拟器的电脑 解决办法&#xff1a; 把这些…

无限可能LangChain——构建一个简单的LLM应用程序

在本快速入门中&#xff0c;我们将向您展示如何构建一个简单的LLM应用程序。该应用程序将文本从英语翻译成另一种语言。这是一个相对简单的LLM应用程序——它只是一个LLM调用加上一些提示。尽管如此&#xff0c;这仍然是开始使用LangChain的好方法——只需一些提示和一个LLM调用…

Sentinel与Nacos强强联合,构建微服务稳定性基石的重要实践

一、简介 Sentinel 作为一款强大的流量控制组件&#xff0c;能够对系统入口流量进行精准控制&#xff0c;有效防止服务因突发流量冲击引起服务雪崩&#xff0c;进而导致服务瘫痪&#xff0c;确保服务的稳定性和可靠性。 Nacos 作为配置管理和服务发现平台&#xff0c;实现了配置…

数据库(15)——DQL分页查询

DQL分页查询语法 SELECT 字段列表 FROM 表名 LIMIT 起始索引&#xff0c;查询记录数; 注&#xff1a;起始索引从0开始&#xff0c;起始索引&#xff08;查询页码-1&#xff09;*每页显示记录数。 如果查询的是第一页&#xff0c;可以省略起始索引。 示例&#xff1a;查询第一页…

【NLP开发】Python实现聊天机器人(微信机器人)

&#x1f37a;NLP开发系列相关文章编写如下&#x1f37a;&#xff1a;1&#x1f388;【小沐学NLP】Python实现词云图&#x1f388;2&#x1f388;【小沐学NLP】Python实现图片文字识别&#x1f388;3&#x1f388;【小沐学NLP】Python实现中文、英文分词&#x1f388;4&#x1…

Nvidia Jetson/Orin +FPGA+AI大算力边缘计算盒子:美团小袋自动配送车

大型电商公司美团已选用NVIDIA Jetson AGX Xavier 平台&#xff0c;作为无人配送机器人核心AI算力。 美团点评是全球大型的按需食品配送公司&#xff0c;结合了Uber Eats、Yelp和Groupon的商业模式&#xff0c;与超过40万家本地企业开展合作。他们推出了小袋自动配送车&#…

LeetCode---哈希表

242. 有效的字母异位词 给定两个字符串 s 和 t &#xff0c;编写一个函数来判断 t 是否是 s 的字母异位词。 注意&#xff1a;若 s 和 t 中每个字符出现的次数都相同&#xff0c;则称 s 和 t 互为字母异位词。 代码示例&#xff1a; //时间复杂度: O(n) //空间复杂度: O(1) c…

【NOIP提高组】进制转换

【NOIP提高组】进制转换 &#x1f496;The Begin&#x1f496;点点关注&#xff0c;收藏不迷路&#x1f496; 我们可以用这样的方式来表示一个十进制数&#xff1a;将每个阿拉伯数字乘以一个以该数字所处位置的&#xff08;值减1&#xff09;为指数&#xff0c;以 10 为底数的幂…

Java web应用性能分析之【java进程问题分析概叙】

Java web应用性能分析概叙-CSDN博客 Java web应用性能分析之客户端慢_有的客户端跑java应用特别慢-CSDN博客 Java web应用性能分析服务端慢之前端页面慢_前端页面加载性能分析-CSDN博客 Java web应用性能分析服务端慢之Nginx慢_前端nginx请求比直接连接后台慢很多-CSDN博客 …

【安规介绍】

文章目录 一、基础知识安规上的六类危险的防护&#xff1a;安全电压漏电流接触电流能量问题&#xff1a;火灾问题&#xff1a;热问题结构问题阻燃等级绝缘等级&#xff1a;对接地系统的要求&#xff1a;结构要求:电气要求&#xff1a; 二、设计的关键电气绝缘距离电气爬电距离:…

四足机器人步态仿真(三)四足机器人基础步态仿真

观前提醒&#xff0c;本章主要内容为分析四足机器人步态实现和姿态控制&#xff0c;碰撞体积等程序 步态效果&#xff1a; 一、完整代码如下 # -*- coding: utf-8 -*-import pybullet as pimport timeimport numpy as npp.connect(p.GUI)p.createCollisionShape(p.GEOM_PLANE…

插入排序(直接插入排序、折半插入排序、希尔排序)的性能分析

目录 前言 插入排序 直接插入排序性能分析 折半插入排序性能分析 希尔排序性能分析 前言 本篇文章主要是总结插入排序的性能分析&#xff0c;具体的概念、算法、排序过程&#xff0c;我前面的文章有写&#xff0c;在这里就不再过多赘述了。 插入排序 插入排序是一种简单直…

MYSQL数据库细节详细分析

MYSQL数据库的数据类型(一般只需要用到这些) 整型类型&#xff1a;用于存储整数值&#xff0c;可以选择不同的大小范围来适应特定的整数值。 TINYINTSMALLINTMEDIUMINTINTBIGINT 浮点型类型&#xff1a;用于存储带有小数部分的数值&#xff0c;提供了单精度&#xff08;FLOA…