当前位置: 首页 > news >正文

基于jeecgboot-vue3的Flowable流程仿钉钉流程设计器-支持VForm3表单的选择与支持

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

1、初始化的时候加载表单

/** 查询表单列表 */
const getFormList = () => {listForm().then(res => formOptions.value = res.result.records)
}

2、开始节点的修改,增加表单选择

<el-tab-pane label="表单选择" name="formSelect"><el-form size="small" label-width="90px" @submit.native.prevent><el-form-item label="表单" prop="formKey"><el-select v-model="activeData.formKey" placeholder="请选择表单" @change="updateFormKey" clearable><el-option v-for="item in formOptions" :key="item.id" :label="item.formName" :value="item.id" /></el-select></el-form-item><el-form-item prop="localScope"><span slot="label"><el-tooltip content="若为节点表单,则表单信息仅在此节点可用,默认为全局表单,表单信息在整个流程实例中可用" placement="top-start"><i class="header-icon el-icon-info"></i></el-tooltip><span>节点表单</span></span><el-switch disabled  v-model="activeData.localScope" active-text="是" inactive-text="否" @change="updateFormScope()" /></el-form-item></el-form></el-tab-pane>

3、选择表单的更新,后续还要传递到父组件,以便其它组件使用这些字段

const updateFormKey = (formKey) => {console.log("updateFormKey formKey",formKey)props.activeData.formKey = formKeyconst formItem  = formOptions.value?.find((f) => f.id === formKey)const formContent = JSON.parse(formItem.formContent)props.activeData.formProperties = formContent.widgetListconsole.log("updateFormKey formProperties",props.activeData.formProperties)
}

4、相应watchEffect修改如下:

watchEffect(() => {const formProperties = props.activeData.formPropertiesprops.activeData.formProperties = formProperties?.map((field) => ({id: field.id,name: field.options.label,readonly: field.options.readonly,hidden: field.options.hidden,required: field.options.required}))props.activeData.formProperties?.forEach((item) => {const properties = formProperties.find((f) => f.id === item.id)if (properties) {item.readonly = properties.options.readonlyitem.hidden = properties.options.hiddenitem.required = properties.options.required}})
})

5、效果图如下:

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 安装好anaconda,打开jupyter notebook,新建 报500错
  • 二叉树的构造问题 | LeetCode刷题笔记 | 每日练习 | 深度优先遍历| 广度优先遍历 | Java
  • 【必看】基于LSTM网络的温度预测
  • 【性能优化】在大批量数据下使用 HTML+CSS实现走马灯,防止页面卡顿(一)
  • ubuntu中git log中文乱码
  • vue、js截取视频任意一帧图片
  • Linux——五种IO模型
  • Volatility:分析MS10-061攻击
  • 【总结】逻辑运算在Z3中运用+CTF习题
  • C#实现数据采集系统-查询报文处理和响应报文分析处理
  • 【C++】C++类和对象详解(上)
  • Docker核心技术:容器技术要解决哪些问题
  • Python爬虫-淘宝搜索热词数据
  • 《0基础》学习Python——第二十二讲__网络爬虫/<5>爬取豆瓣电影封面图
  • uniapp封装请求拦截器,封装请求拦截和响应拦截的方法
  • [分享]iOS开发-关于在xcode中引用文件夹右边出现问号的解决办法
  • C++类的相互关联
  • LeetCode29.两数相除 JavaScript
  • Linux链接文件
  • Spark in action on Kubernetes - Playground搭建与架构浅析
  • swift基础之_对象 实例方法 对象方法。
  • 阿里云购买磁盘后挂载
  • 从输入URL到页面加载发生了什么
  • 关于字符编码你应该知道的事情
  • 你不可错过的前端面试题(一)
  • 七牛云假注销小指南
  • 前端_面试
  • 如何选择开源的机器学习框架?
  • 扫描识别控件Dynamic Web TWAIN v12.2发布,改进SSL证书
  • 手机端车牌号码键盘的vue组件
  • 一个完整Java Web项目背后的密码
  • 优秀架构师必须掌握的架构思维
  • 大数据全解:定义、价值及挑战
  • ​Spring Boot 分片上传文件
  • # 职场生活之道:善于团结
  • #07【面试问题整理】嵌入式软件工程师
  • #APPINVENTOR学习记录
  • (173)FPGA约束:单周期时序分析或默认时序分析
  • (C语言)深入理解指针2之野指针与传值与传址与assert断言
  • (done) 两个矩阵 “相似” 是什么意思?
  • (ZT)薛涌:谈贫说富
  • (每日持续更新)jdk api之StringBufferInputStream基础、应用、实战
  • (微服务实战)预付卡平台支付交易系统卡充值业务流程设计
  • (文章复现)基于主从博弈的售电商多元零售套餐设计与多级市场购电策略
  • (一)插入排序
  • ... fatal error LINK1120:1个无法解析的外部命令 的解决办法
  • .desktop 桌面快捷_Linux桌面环境那么多,这几款优秀的任你选
  • .Net 8.0 新的变化
  • .net 反编译_.net反编译的相关问题
  • .net 开发怎么实现前后端分离_前后端分离:分离式开发和一体式发布
  • .NET 直连SAP HANA数据库
  • .NET编程C#线程之旅:十种开启线程的方式以及各自使用场景和优缺点
  • /bin/bash^M: bad interpreter: No such file ordirectory
  • []FET-430SIM508 研究日志 11.3.31
  • [20150629]简单的加密连接.txt