form generator 实现表格组件扩展

场景

在开发公司的后台管理系统(Rou-yi)中使用了 form-generator 表单生成器;使用其并不是为了用它减少代码量因为复制粘贴或者ChartGPT都比表单编辑器好用多了,主要是和bpmn 工作流组件相结合实现流程管理。
由于工作流中不可避免的使用表格,而form-generator本身表格并不完善,所以自己扩展了表格,有以下几个点需要注意

  • 每个人的业务需求不同,该表格可能无法满足其他人的业务需求,后期我会出一篇怎么自定义组件的教程
  • 该表格只扩展了build编辑和parse解析,没有处理预览和导出的功能
  • 可能存在没有测试出的bug ╮(๑•́ ₃•̀๑)╭

相关链接

本地预览

  • 拉取仓库 https://gitee.com/starlight_day/form-generator.git
  • npm i
  • npm run dev
    ps:如果node版本太高需要在运行前运行 $env:NODE_OPTIONS=“–openssl-legacy-provider”
  • http://127.0.0.1:8080/#/qjt 请假条例子
  • http://127.0.0.1:8080/#/cat 动态数据例子

功能

表格CRUD

适合用户主动填写信息的场景,例如请假条;例子见 http://127.0.0.1:8080/#/qjt

在这里插入图片描述
首先表格分为两个数据data表格的数据和columns表格列的数据。通过表格修改data数据,通过侧栏设计表格的列数据。注意:

  • 在使用过程中可能会控制台报错,例如在编辑表格列两个列的字段名相同。这种输入错误没有做限制
  • 编辑data时只有点击√后数据才会更新,而不是input时更新

动态数据渲染

适合向用户展示数据,例如展示订单数据 例子见:http://127.0.0.1:8080/#/cat

在这里插入图片描述
这里请先设置好表格列数据,在填写接口地址数据位置,如果后设置表格列,可能会导致数据不更新,此时需再次点击获取数据;注意:

  • 动态数据是不需要存数据的,数据会在parser组件mounted的时候请求,这里只是展示
  • 示例地址 https://api.thecatapi.com/v1/images/search?limit=10 随机获取10张猫的图片
  • 有时候接口数据可能会有嵌套例如
{
	code:200
	data:{
		row:[...]
	}
}

此时将数据位置写成data.row即可

列数据格式转化

上个例子获取了10张猫的图片,可是却没有展示,这里我们可以对列的数据进行转化

点击列编辑按钮,找到数据类型选中图片格式

在这里插入图片描述
选中后效果如下
在这里插入图片描述

自定义列内容

我们使用element-ui时经常使用slot来插入内容,当我们数据类型选择自定义的时候可以将表格内容渲染成任意内容例如:

在这里插入图片描述
此时函数定义为

function(h,data,row){
  return h('div',data+300)
}
  • h是createElement的别名,用于创建虚拟DOM元素,不了解渲染函数和jsx的同学请先看下vue文档中的渲染函数有了它我们就可以使用任何组件和标签
  • data为当前单元格的数据
  • row为行的数据
  • 返回值为h函数创建的虚拟dom

这里的上限很高,我在使用的时候写过这样的函数

// 这里我从row.orderItemList取出了所有的productName
function(h,data,row){
  let child = [];
  if( row.orderItemList && row.orderItemList.length ){
    child = row.orderItemList.map(function(goodsItem){
      return goodsItem.productName
    })
  }
  return h('div',child)
}

创作不易如果对你有用就点个赞鼓励一下作者 _

  • 8
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值