基于jeecgboot-vue3的Flowable流程-流程处理(一)

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

这部分修正一些流程处理中VForm3线上的一些bug问题

1、初始化流程提交与现实的前端页面代码

<!--初始化流程加载默认VForm3表单信息-->
      <el-col :span="16" :offset="4" v-if="formConfOpen">
        <div class="test-form">
          <!--<form-builder ref="formBuilder" v-model="formVal" :buildData="formCode" /> -->
          <v-form-render :form-json="formModel" :nbcioHeader="nbcioHeader" :form-data="formData" ref="vfRenderRef" />
          <div style="margin-bottom: 15px; text-align: center">
            <el-button type="primary" class="button" @click="submitForm">提交</el-button>
          </div>
        </div>
      </el-col>
      <!--初始化流程加载显示VForm3表单-->
      <el-col :span="16" :offset="4" v-if="formViewOpen">
        <div class="test-form">
          <v-form-render :form-json="formModel" :form-data="formData" ref="vFormRenderRef" />
        </div>
      </el-col>
    </el-card>

2、流程图的显示代码

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

3、读取表单的历史记录信息

// 流程过程中不存在初始化表单 直接读取的流程变量中存储的表单值
            else if (res.result.hasOwnProperty('formData')) {
              console.log('flowRecord res.result.formData', res.result.formData);
              formModel.value = res.result.formData;
              console.log('res.result.formData=', res.result.formData);
              nextTick(async () => {
                vfRenderRef.value?.setFormJson(formModel.value || { formConfig: {}, widgetList: [] });
              });
              if (res.result.hasOwnProperty('routeName')) {
                if (startUserForm.isStartUserNode) {
                  customForm.disabled = false;
                } else {
                  customForm.disabled = true;
                }
                customForm.visible = true;
                customForm.formComponent = getFormComponent(res.result.routeName).component;
                customForm.model = res.result.formData;
                customForm.customFormData = res.result.formData;
              }
              console.log('customForm=', customForm);
              console.log('model=', customForm.model);
              if (res.result.formData.hasOwnProperty('formConfig')) {
                formConfOpen.value = true;
              } else {
                formConfOpen.value = false;
              }
            } else if (res.result.hasOwnProperty('taskFormData')) {
              console.log("flowRecord res.result.taskFormData", res.result.taskFormData);
              taskFormData.value = res.result.taskFormData;
              console.log("flowRecord taskFormData.value", taskFormData.value);
              taskFormOpen.value = true;
              nextTick(async () => {
                taskFormBuilder.value?.setFormJson(taskFormData.value || { formConfig: {}, widgetList: [] });
              });
            }

4、获取流程变量

/** 获取流程变量内容 */
  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;
            taskForm.formData = formData.value; 
            taskForm.formModel = formModel.value;   
          }
          getNextFlowNodeInfo(taskForm.taskId);
        } else {
          createMessage.error(res.message);
        }
      });
    }
  };

5、效果图:

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-06-18 05:50:04       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-06-18 05:50:04       100 阅读
  3. 在Django里面运行非项目文件

    2024-06-18 05:50:04       82 阅读
  4. Python语言-面向对象

    2024-06-18 05:50:04       91 阅读

热门阅读

  1. awtk界面实现下拉屏功能

    2024-06-18 05:50:04       39 阅读
  2. linux 压缩命令之tar工具的基本使用

    2024-06-18 05:50:04       36 阅读
  3. 【Linux】I/O多路复用

    2024-06-18 05:50:04       37 阅读
  4. 微调大模型 - 面向学术论文的AI大模型

    2024-06-18 05:50:04       29 阅读
  5. MySql修改最大连接数

    2024-06-18 05:50:04       40 阅读
  6. 系统安全!

    2024-06-18 05:50:04       32 阅读
  7. 2.负载压力测试

    2024-06-18 05:50:04       28 阅读
  8. 工具清单 - IDE工具

    2024-06-18 05:50:04       44 阅读
  9. 随笔——顺序表专题

    2024-06-18 05:50:04       127 阅读
  10. Compose 可组合项 - 抽屉式导航栏 Drawer

    2024-06-18 05:50:04       33 阅读
  11. CentOS:安装NodeJs

    2024-06-18 05:50:04       28 阅读