form-generator简介
Element UI表单设计及代码生成器,可将生成的代码直接运行在基于Element的vue项目中;也可导出JSON表单,使用配套的解析器将JSON解析成真实的表单。
项目开发需要表格,目前项目中的form-generator缺少表格组件,所以需要在目前基础上扩展
config.js添加
{
layout: 'colFormItem',
label: '数据表格',
tag: 'el-table',
tagIcon: 'table',
span: 24, // 占比
labelWidth: 100, // 表单名称宽度
type: 'default',
align: 'center',
border: true,
maxHeight:300,
children: [
{
layout: 'raw',
tag: 'el-table-column',
align: 'center',
prop: 'name',
label: '姓名'
},
{
layout: 'raw',
tag: 'el-table-column',
align: 'center',
prop: 'age',
label: '年龄'
},
{
layout: 'raw',
tag: 'el-table-column',
align: 'center',
prop: 'sex',
label: '性别'
},
{
layout: 'raw',
tag: 'el-table-column',
align: 'center',
prop: 'ah',
label: '爱好'
}
],
data: [{
name: '张三',
sex: '男',
age: '18',
ah: '打球、游泳'
}],
render.js添加
'el-table': {
'children': (h, conf, key) => {
const list = [];
conf.children.forEach((item,index) => {
list.push(<el-table-column key={index} label={item.label} prop={item.prop} align={item.align} width={item.width}></el-table-column>)
})
return list
}
}
html.js添加
'el-table': el => {
const {
tag
} = attrBuilder(el)
let child = elTableColumn(el)
console.log(child)
return `<${tag} :data="${confGlobal.formModel}.${el.__vModel__}">${child}</${tag}>`
}
js.js添加
// 构建data
function buildTableData(scheme, dataList) {
if (scheme.name === undefined) return
// 主要就是这里
if (config.tag === 'el-table') {
dataList.push(`${scheme.name}: ${JSON.stringify(scheme.data)}`)
return
}
const defaultValue = JSON.stringify(config.defaultValue)
dataList.push(`${scheme.name}: ${defaultValue},`)
}
最后结果显示