ruoyi-nbcio-plus基于vue3的flowable收回任务后重新进行提交表单的处理

简介: ruoyi-nbcio-plus基于vue3的flowable收回任务后重新进行提交表单的处理

更多ruoyi-nbcio功能请看演示系统

gitee源代码地址

前后端代码: https://gitee.com/nbacheng/ruoyi-nbcio

演示地址:RuoYi-Nbcio后台管理系统 http://218.75.87.38:9666/

更多nbcio-boot功能请看演示系统

gitee源代码地址

后端代码: https://gitee.com/nbacheng/nbcio-boot

前端代码:https://gitee.com/nbacheng/nbcio-vue.git

在线演示(包括H5) : http://218.75.87.38:9888

1、后端的处理

     因为这个收回审批的提交跟原先的VForm表单提交不一样了,如下界面,这个是可以表单信息里进行修改了,修改后要能提交保存起来,因为原先肯定没有考虑这些

      因为原先提交的时候保存起来,在变量里面,所以用下面的formConf.setFormData(variables);就可以了,但这个variables需求前端进行重新设置修改后的值。

FormConf formConf = new FormConf();
                Map<String, Object> formModel = JsonUtils.parseObject(formInfo.getContent(), Map.class);
                if (null != formModel && !formModel.isEmpty()) {
                    formConf.setTitle(title);
                    formConf.setDisabled(true);
                    formConf.setFormBtns(false);
                    formConf.setFormModel(formModel);
                    formConf.setFormData(variables);
                    procFormList.add(formConf);
                }

2、前端的处理

判断是否是退回到第一个节点

taskFormVisible.value = data.existTaskForm;
      if (taskFormVisible.value) {
        taskFormData.value = data.taskFormData;
      }
      if(data.startUserNode) {
        startUserForm.value.isStartUserNode = true;
      }
      formVisible.value = true;
      nextTick(() => {
        processFormList.value.forEach((item: any, index: any) => {
          if (item.disabled && !startUserForm.value.isStartUserNode) {
            vFormRenderRef.value[index].disableForm();
          }
        })
      })

是的话,不要disable了,可以进行编辑,

同时通过任务修改如下:

/** 通过任务 */
  const handleComplete = () => {
    const isExistTaskForm = taskFormRef !== undefined;
    // 校验表单
    taskFormRef.value?.validate(async (valid: boolean) => {
      if (valid) {
        if (isExistTaskForm) {
          const data = await vFormRenderRef.value[0]?.getFormData();
          const Widgetlist = await vFormRenderRef.value[0]?.getFieldWidgets();
          //替换文件上传成功后的文件名称与url,以便后面回显用
          let fileUpload = Widgetlist?.filter(item => item.type === "file-upload");
          fileUpload?.forEach((fileitem) => {
            data[`${fileitem.name}`]?.forEach((dataitem,index) => {
              data[`${fileitem.name}`][index].name = data[`${fileitem.name}`][index].response.data?.newFileName;
              data[`${fileitem.name}`][index].url = data[`${fileitem.name}`][index].response.data?.url;
            })
          })
          //替换图片上传成功后的文件名称与url,以便后面回显用
          let picUpload = Widgetlist?.filter(item => item.type === "picture-upload");
          picUpload?.forEach((picitem) => {
            data[`${picitem.name}`]?.forEach((dataitem,index) => {
              data[`${picitem.name}`][index].name = data[`${picitem.name}`][index].response.data?.newFileName;
              data[`${picitem.name}`][index].url = data[`${picitem.name}`][index].response.data?.url;
            })
          })
          const variables = data;
          taskFormData.formValue = data;
          variables.variables = taskFormData;
          taskForm.variables = variables;
        }
        console.log("handleComplete taskForm",taskForm)
        const res = await complete(taskForm)
        proxy?.$modal.msgSuccess(res.msg);
        goBack();
      }
    });
  }

3、效果图如下:


相关文章
|
7月前
|
JavaScript 前端开发 安全
Vue 3
Vue 3以组合式API、Proxy响应式系统和全面TypeScript支持,重构前端开发范式。性能优化与生态协同并进,兼顾易用性与工程化,引领Web开发迈向高效、可维护的新纪元。(238字)
1003 139
|
7月前
|
缓存 JavaScript 算法
Vue 3性能优化
Vue 3 通过 Proxy 和编译优化提升性能,但仍需遵循最佳实践。合理使用 v-if、key、computed,避免深度监听,利用懒加载与虚拟列表,结合打包优化,方可充分发挥其性能优势。(239字)
533 1
|
8月前
|
开发工具 iOS开发 MacOS
基于Vite7.1+Vue3+Pinia3+ArcoDesign网页版webos后台模板
最新版研发vite7+vue3.5+pinia3+arco-design仿macos/windows风格网页版OS系统Vite-Vue3-WebOS。
934 11
|
7月前
|
JavaScript 安全
vue3使用ts传参教程
Vue 3结合TypeScript实现组件传参,提升类型安全与开发效率。涵盖Props、Emits、v-model双向绑定及useAttrs透传属性,建议明确声明类型,保障代码质量。
605 0
|
9月前
|
缓存 前端开发 大数据
虚拟列表在Vue3中的具体应用场景有哪些?
虚拟列表在 Vue3 中通过仅渲染可视区域内容,显著提升大数据列表性能,适用于 ERP 表格、聊天界面、社交媒体、阅读器、日历及树形结构等场景,结合 `vue-virtual-scroller` 等工具可实现高效滚动与交互体验。
964 1
|
9月前
|
缓存 JavaScript UED
除了循环引用,Vue3还有哪些常见的性能优化技巧?
除了循环引用,Vue3还有哪些常见的性能优化技巧?
485 0
|
10月前
|
JavaScript
vue3循环引用自已实现
当渲染大量数据列表时,使用虚拟列表只渲染可视区域的内容,显著减少 DOM 节点数量。
226 0
|
8月前
|
JavaScript
Vue中如何实现兄弟组件之间的通信
在Vue中,兄弟组件可通过父组件中转、事件总线、Vuex/Pinia或provide/inject实现通信。小型项目推荐父组件中转或事件总线,大型项目建议使用Pinia等状态管理工具,确保数据流清晰可控,避免内存泄漏。
689 2
|
7月前
|
缓存 JavaScript
vue中的keep-alive问题(2)
vue中的keep-alive问题(2)
594 137
|
11月前
|
人工智能 JavaScript 算法
Vue 中 key 属性的深入解析:改变 key 导致组件销毁与重建
Vue 中 key 属性的深入解析:改变 key 导致组件销毁与重建
1136 0