fields是代码生成器最核心的一个属性,它决定了数据表的字段和字段对应的表单属性 fields是一个对象类型,该对象里面的属性就是模型的字段
如
fields: {
couponName: { },
startTime: { },
}当运行生成器时会在模型对应的数据表创建 couponName、startTime字段
上例可以看到 fields里面的属性是对象类型,该对象描述了 数据表字段属性以及表单属性等。
属性名称 | 必填 | 类型 | 属性解释 | 备注 |
|---|---|---|---|---|
type | 是 | string | 字段的类型 | MySQL数据库取值仅限于:’string’, ‘text’, ‘integer’, ‘tinyint’, ‘float’, ‘double’, ‘date’, ‘enum’ 。MongoDB 数据库仅限于:’string’, ‘number’, ‘date’,’boolean’, ‘array’ |
comment | 是 | string | 字段的中文含义 | 将用于表格表头字段展示和表单项展示 |
tableHidden | 否 | boolean | 字段是否不在表格中显示 | 值取true表示该字段不会在管理界面的基础表格中展示 |
meta | 否 | object | 字段的界面属性(表单/表格) | 当没指定该属性时默认取 { formType: 'input', inputType: 'text'} |
meta是字段的表单/表格属性,它决定了字段在表单/表格中如何呈现
属性名称 | 必填 | 类型 | 属性解释 | 备注 | |
|---|---|---|---|---|---|
formType | 是 | string | 表单类型 | 以element-ui为例,常用取值:input,inputNumber ,switch,date ,time,rate,image,select,richText | |
inputType | 否 | string | 原生表单类型 | 该属性只有在formType为input时有用 | |
placeholder | 否 | string | 表单提示内容 | ||
chineseMap | 否 | object | 字段外键映射 | ||
activeValue | 否 | [string,number] | 开关激活的值 | 该属性只有在formType为switch 时有用,默认值:1 (number类型) | |
activeText | 否 | string | 开关激活时显示的文字 | 该属性只有在formType为switch 时有用 | |
inactiveValue | 否 | [string,number] | 开关关闭的值 | 该属性只有在formType为switch 时有用,默认值:0(number类型) | |
inactiveText | 否 | string | 开关关闭时显示的文字 | 该属性只有在formType为switch 时有用 | |
uploadUrl | 否 | string | 文件上传的地址 | 该属性只有在formType为image 时有用,默认值:系统自带的文件上传服务(node编写) |
meta.formType
他们的映射类型如下:
input=>el-input
inputNumber=>el-input-number
switch=>el-switch 取该值时字段在表格会渲染成el-tag,el-tag的呈现取决于 activeValue,inactiveValue等。
date=>el-date-picker 取该值时字段在表格中时间会自动格式化
time=>el-time-select
rate=>el-rate
image=>el-upload 目前支持单图上传 取该值时字段在表格中会直接渲染成图片
richText=>quill-editor 富文本类型使用系统自带的quill-editor
meta.inputType
指定元素表单属性,该属性只有在formType为input时有用
meta.placeholder
表单提示内容
meta.chineseMap
字段对应的中文映射,在表单,表格渲染时都有用到
比如文章表有个字段category_id(分类),我们假定这个分类值只有 前端,后端 两种
对于这种固定的类型且值不是很多时我们可以将chineseMap写死
那么你应该这样配置
fields: {
category_id: {
comment: '分类',
meta: {
formType: 'select',
placeholder: '请选择文章分类',
chineseMap: {
1:"前端",
2:"后端"
}
}
}
}但有些时候我们的分类项比较多是要纳入管理的,也就是要单独建表 这个时候你应该先创建分类模型,配置相关属性
然后在文章模型设置外键属性,外键属性foreign与fields同级
外键并没有在本节,这里只做简单介绍
1.设置外键属性
foreign: {
// key 表示外键名称
article_category: {
key: 'category_id', // 当前模型的外键字段
refer: 'id', // 关联表的字段 // 用作表单,表格的取值
referLabel: 'userName', // 关联表用于展示的字段,主要用于 table,form的展示
onTable: 'user', // 关联的模型
foreignDesc: '外键描述'
},
}2.配置字段属性
fields: {
category_id: {
comment: '分类',
meta: {
formType: 'select',
placeholder: '请选择文章分类',
chineseMap:{
useForeign: 'article_category' // 这里的值去的foreign的属性即外键名称
}
}
}
}
}这两种配置都会实现字段值的中文映射,比如 category_id原生值是1,那么在表格展示是会直接渲染成前端,同时表单添加时也会提供映射值选择,编辑同理
meta.activeValue 开关激活的值(表单/表格) 该属性只有在formType为switch 时有用,默认值:1 (number类型) meta.activeText 开关激活时显示的文字(表单/表格) 该属性只有在formType为switch 时有用 meta.inactiveValue 开关关闭的值(表单/表格) 该属性只有在formType为switch 时有用,默认值:0(number类型) meta.inactiveText 开关关闭时显示的文字(表单/表格) 该属性只有在formType为switch 时有用 meta.uploadUrl 文件上传的地址 该属性只有在formType为image 时有用,默认值:系统自带的文件上传服务(node编写)