ruoyi-nbcio-plus基于vue3的flowable为了适配文件上传改造VForm3的代码记录

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

为了适配项目ruoyi-nbcio-plus的文件上传,所以做了一些改造,具体如下:

1、file-upload-widget.vue

增加了下面代码

props: {field: Object,parentWidget: Object,parentList: Array,indexOfParentList: Number,designer: Object,designState: {type: Boolean,default: false},subFormRowIndex: { /* 子表单组件行索引,从0开始计数 */type: Number,default: -1},subFormColIndex: { /* 子表单组件列索引,从0开始计数 */type: Number,default: -1},subFormRowId: { /* 子表单组件行Id,唯一id且不可变 */type: String,default: ''},nbcioHeader: { // for ruoyi-nbcio-plus使用type: Object,default: () => ({})},},
created() {/* 注意:子组件mounted在父组件created之后、父组件mounted之前触发,故子组件mounted需要用到的prop需要在父组件created中初始化!! */this.initFieldModel()this.registerToRefList()this.initEventHandler()this.buildFieldRules()this.handleOnCreated()//for ruoyi-nbcio-plusthis.uploadHeaders = this.nbcioHeader;},

2、picture-upload-widget.vue也类似进行改造

3、widgetsConfig.js文件做了下面修改

export const advancedFields = [{type: 'picture-upload',icon: 'picture-upload-field',formItemFlag: true,options: {name: '',label: '',labelAlign: '',labelWidth: null,labelHidden: false,columnWidth: '200px',disabled: false,hidden: false,required: false,requiredHint: '',customRule: '',customRuleHint: '',//-------------------uploadURL: 'http://localhost:9060/common/upload',uploadTip: '',withCredentials: false,multipleSelect: false,showFileList: true,limit: 3,fileMaxSize: 5, //MBfileTypes: ['jpg', 'jpeg', 'png'],//headers: [],//-------------------customClass: '',  //自定义css类名labelIconClass: null,labelIconPosition: 'rear',labelTooltip: null,//-------------------onCreated: '',onMounted: '',onBeforeUpload: '',onUploadSuccess: '',onUploadError: '',onFileRemove: '',onValidate: '',//onFileChange: '',},},{type: 'file-upload',icon: 'file-upload-field',formItemFlag: true,options: {name: '',label: '',labelAlign: '',labelWidth: null,labelHidden: false,columnWidth: '200px',disabled: false,hidden: false,required: false,requiredHint: '',customRule: '',customRuleHint: '',//-------------------uploadURL: 'http://localhost:9060/common/upload',uploadTip: '',withCredentials: false,multipleSelect: false,showFileList: true,limit: 3,fileMaxSize: 5, //MBfileTypes: ['doc', 'docx', 'xls', 'xlsx', 'pdf'],//headers: [],//-------------------customClass: '',  //自定义css类名labelIconClass: null,labelIconPosition: 'rear',labelTooltip: null,//-------------------onCreated: '',onMounted: '',onBeforeUpload: '',onUploadSuccess: '',onUploadError: '',onFileRemove: '',onValidate: '',//onFileChange: '',},},

4、form-render文件做了下面调整

<template><el-form :label-position="labelPosition" :size="size" :class="[customClass]" class="render-form":label-width="labelWidth" :validate-on-rule-change="false":model="formDataModel" ref="renderForm"@submit.prevent><template v-for="(widget, index) in widgetList"><template v-if="'container' === widget.category"><component :is="getContainerWidgetName(widget)" :widget="widget" :key="widget.id" :parent-list="widgetList":index-of-parent-list="index" :parent-widget="null"><!-- 递归传递插槽!!! --><template v-for="slot in Object.keys($slots)" v-slot:[slot]="scope"><slot :name="slot" v-bind="scope"/></template></component></template><template v-else><component :is="getWidgetName(widget)" :nbcioHeader="nbcioHeader" :field="widget" :form-model="formDataModel" :designer="null" :key="widget.id" :parent-list="widgetList":index-of-parent-list="index" :parent-widget="null"><!-- 递归传递插槽!!! --><template v-for="slot in Object.keys($slots)" v-slot:[slot]="scope"><slot :name="slot" v-bind="scope"/></template></component></template></template></el-form>
</template><script>//import ElForm from 'element-ui/packages/form/src/form.vue'  /* 用于源码调试Element UI */import emitter from '@/utils/emitter'import './container-item/index'import FieldComponents from '@/components/form-designer/form-widget/field-widget/index'import {generateId, deepClone, insertCustomCssToHead, insertGlobalFunctionsToHtml, getAllContainerWidgets,getAllFieldWidgets, traverseFieldWidgets, buildDefaultFormJson} from "@/utils/util"import i18n, { changeLocale } from "@/utils/i18n"export default {name: "VFormRender",componentName: 'VFormRender',mixins: [emitter, i18n],components: {//ElForm,...FieldComponents,},props: {formJson: { //prop传入的表单JSON配置type: Object,default: () => buildDefaultFormJson()},formData: { //prop传入的表单数据type: Object,default: () => ({})},optionData: { //prop传入的选项数据type: Object,default: () => ({})},previewState: { //是否表单预览状态type: Boolean,default: false},globalDsv: { // 全局数据源变量type: Object,default: () => ({})},nbcioHeader: { // for ruoyi-nbcio-plus使用type: Object,default: () => ({})},},

5、效果图如下:

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

国产3D自研技术如何突围?眸瑞科技给3D建设、管理带来全新模式

眸瑞科技是全球领先的数字孪生引擎技术及服务提供商&#xff0c;它专注于让一切3D模型在全网多端轻量化处理与展示&#xff0c;为行业数字化转型升级与数字孪生应用提供成套的国产自研3D可视化技术、产品与服务。 引言 眸瑞科技是全球领先的数字孪生引擎技术及服务提供商&…

SSRF漏洞是什么,如何进行有效防护

SSRF全称&#xff1a;Server-Side Request Forgery&#xff0c;即&#xff0c;服务器端请求伪造。是一个由攻击者构造请求&#xff0c;在目标服务端执行的一个安全漏洞。攻击者可以利用该漏洞使服务器端向攻击者构造的任意域发出请求&#xff0c;目标通常是从外网无法访问的内部…

Ubuntu2004 CMake 使用基础

一、环境安装 win10安装wsl ubuntu2004 #windows c盘工程目录建立软链 ln -s /mnt/c /home/vrviu/ 安装cmake、c编译工具 apt install -y cmake g 二、CMakeLists.txt讲解 准备工作 首先&#xff0c;在/home/vrviu 目录建立一个 cmake 目录 以后我们所有的 cmake 练习都会放…

一文掌握Vue3:深度解读Vue3新特性、Vue2与Vue3核心差异以及Vue2到Vue3转型迭代迁移重点梳理与实战

每次技术革新均推动着应用性能与开发体验的提升。Vue3 的迭代进步体现在性能优化、API重构与增强型TypeScript支持等方面&#xff0c;从而实现更高效开发、更优运行表现&#xff0c;促使升级成为保持竞争力与跟进现代前端趋势的必然选择。本文深度解读Vue3 响应式数据data、生命…

稳态视觉诱发电位 (SSVEP) 分类学习系列 (4) :Temporal-Spatial Transformer

稳态视觉诱发电位分类学习系列:Temporal-Spatial Transformer 0. 引言1. 主要贡献2. 提出的方法2.1 解码的主要步骤2.2 网络的主要结构 3. 结果和讨论3.1 在两个数据集下的分类效果3.2 与基线模型的比较3.3 消融实验3.4 t-SNE 可视化 4. 总结欢迎来稿 论文地址&#xff1a;http…

【Elasticsearch<二>✈️✈️】基本属性概念与MySQL数据库的不同之处

目录 &#x1f378;前言 &#x1f37b;一、Elasticsearch 基本属性 1.1 ES VS MySQL 1.2 ES 属性概念 1.3 ES 的增删改查 &#x1f37a;二、自动补全场景 2.1 场景举例 2.2 使用数据分词器 2.3 查询的流程 2.4 整个查询流程图 &#x1f379;章末 &#x1f378;前言 上次初步…

[C++ QT项目实战]----C++ QT系统实现多线程通信

前言 在C QT中&#xff0c;多线程通信原理主要涉及到信号与槽机制和事件循环机制。 1、信号与槽机制&#xff1a; 在QT中&#xff0c;信号与槽是一种用于对象间通信的机制。对象可以通过发送信号来通知其他对象&#xff0c;其他对象通过连接槽来接收信号并进行相应的处…

微信小程序:12.页面导航

什么是页面导航 页面导航指的是页面之间的相互跳转。例如&#xff0c;浏览器中实现的页面导航的方式有两种&#xff1a; 连接location.href 小程序中实现页面导航的两种方式 声明式导航 在页面上声明一个导航组件 通过点击组件实现页面跳转 导航TabBar页面 是指配置TabB…

mac 教程 终端如何拆墙

一直觉得自己写的不是技术&#xff0c;而是情怀&#xff0c;一个个的教程是自己这一路走来的痕迹。靠专业技能的成功是最具可复制性的&#xff0c;希望我的这条路能让你们少走弯路&#xff0c;希望我能帮你们抹去知识的蒙尘&#xff0c;希望我能帮你们理清知识的脉络&#xff0…

C语言:一维数组、二维数组、字符数组介绍

数组 介绍一维数组定义应用方法初始化 举例示例结果 二维数组定义应用方法初始化 举例示例结果 字符数组定义应用方法初始化 举例示例结果分析 介绍 在C语言中&#xff0c;数组是一种基本的数据结构&#xff0c;用于存储一系列相同类型的数据。数组可以是多维的&#xff0c;最…

Android --- 网络请求

通常在 Android 中进行网络连接一般使用 Scoket 和HTTP&#xff0c;HTTP 请求方式比 Scoket 多。HTTP 请求一般采用原生的 HttpClient 和 HttpUrlConnection 的两种网络访问方式&#xff08;系统自带的&#xff09;。但是在 Android 5.0 的时候 Google 就不推荐使用 HttpClient…

Bytebase 2.16.0 - 支持 Oracle 和 SQL Server DML 变更的事前备份

&#x1f680; 新功能 支持 Oracle 和 SQL Server DML 变更的事前备份。 支持在 SQL 编辑器中显示存储过程和函数。 支持兼容 TDSQL 的 MySQL 和 PostgreSQL 版本。 支持把数据库密码存储在 AWS Secrets Manager 和 GCP Secret Manager。 支持通过 IAM 连接到 Google Clou…