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


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

    gitee源代码地址

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

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

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

    gitee源代码地址

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

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

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

    1、后端的处理

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

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

    1. FormConf formConf = new FormConf();
    2. Map formModel = JsonUtils.parseObject(formInfo.getContent(), Map.class);
    3. if (null != formModel && !formModel.isEmpty()) {
    4. formConf.setTitle(title);
    5. formConf.setDisabled(true);
    6. formConf.setFormBtns(false);
    7. formConf.setFormModel(formModel);
    8. formConf.setFormData(variables);
    9. procFormList.add(formConf);
    10. }

    2、前端的处理

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

    1. taskFormVisible.value = data.existTaskForm;
    2. if (taskFormVisible.value) {
    3. taskFormData.value = data.taskFormData;
    4. }
    5. if(data.startUserNode) {
    6. startUserForm.value.isStartUserNode = true;
    7. }
    8. formVisible.value = true;
    9. nextTick(() => {
    10. processFormList.value.forEach((item: any, index: any) => {
    11. if (item.disabled && !startUserForm.value.isStartUserNode) {
    12. vFormRenderRef.value[index].disableForm();
    13. }
    14. })
    15. })

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

    同时通过任务修改如下:

    1. /** 通过任务 */
    2. const handleComplete = () => {
    3. const isExistTaskForm = taskFormRef !== undefined;
    4. // 校验表单
    5. taskFormRef.value?.validate(async (valid: boolean) => {
    6. if (valid) {
    7. if (isExistTaskForm) {
    8. const data = await vFormRenderRef.value[0]?.getFormData();
    9. const Widgetlist = await vFormRenderRef.value[0]?.getFieldWidgets();
    10. //替换文件上传成功后的文件名称与url,以便后面回显用
    11. let fileUpload = Widgetlist?.filter(item => item.type === "file-upload");
    12. fileUpload?.forEach((fileitem) => {
    13. data[`${fileitem.name}`]?.forEach((dataitem,index) => {
    14. data[`${fileitem.name}`][index].name = data[`${fileitem.name}`][index].response.data?.newFileName;
    15. data[`${fileitem.name}`][index].url = data[`${fileitem.name}`][index].response.data?.url;
    16. })
    17. })
    18. //替换图片上传成功后的文件名称与url,以便后面回显用
    19. let picUpload = Widgetlist?.filter(item => item.type === "picture-upload");
    20. picUpload?.forEach((picitem) => {
    21. data[`${picitem.name}`]?.forEach((dataitem,index) => {
    22. data[`${picitem.name}`][index].name = data[`${picitem.name}`][index].response.data?.newFileName;
    23. data[`${picitem.name}`][index].url = data[`${picitem.name}`][index].response.data?.url;
    24. })
    25. })
    26. const variables = data;
    27. taskFormData.formValue = data;
    28. variables.variables = taskFormData;
    29. taskForm.variables = variables;
    30. }
    31. console.log("handleComplete taskForm",taskForm)
    32. const res = await complete(taskForm)
    33. proxy?.$modal.msgSuccess(res.msg);
    34. goBack();
    35. }
    36. });
    37. }

    3、效果图如下:

  • 相关阅读:
    Android笔记(九):Compose组件的状态(一)
    怎么样让别人看不懂你的 JS 代码?
    redisson常用api
    2、k-means聚类算法sklearn与手动实现
    【备战“金九银十”】2022年软件测试面试题最新汇总
    计算机中丢失VCRUNTIME140_1,总结vcruntime140_1.dll的五种修复方法
    使用Scrapy框架集成Selenium实现高效爬虫
    海明码校验方法和检错方法
    设计模式之迭代器模式
    2023年天津仁爱学院专升本动画专业报考专业限制范围目录
  • 原文地址:https://blog.csdn.net/qq_40032778/article/details/138136094