1.0.0 • Published 5 years ago

vue-element-form-generator v1.0.0

Weekly downloads
1
License
MIT
Repository
github
Last release
5 years ago

vue-element-form-generator

  • 适用于ElementUI的Form Generator
  • 通过JSON对象的方式创建表单,简单易上手
  • 添加initFinish和updateFinish钩子,适用于表单初始化完成和更新完成等表单整体的默认事件
  • 创建表单的可操作对象formCtx,定义了表单可操作属性和可操作方法,在表单的钩子和控件的事件中默认可用
  • 使用ElementUI默认的24栅格布局,方便进行布局安排
  • 提供占位组件,占满整行,下一个组件直接另起一行开始

1. 使用先决条件

  • 引入ElementUI
    • 在入口的js文件(例如main.js)中整体引入ElementUI,暂不支持其他方式
  • 引用vue-element-form-generator
    • 在需要使用的页面,使用import引入:
  import FormGenerator from 'vue-element-form-generator'

  export default {
    data() {
      formConfig: {
        labelWidth: 80,
        lifecycle: {
          initFinish(formCtx) {
            // 初始化完毕
          },
          updateFinish(formCtx) {
            // 更新完毕
          }
        },
        items:[
          // 表单字段集合
        ]
      }
    }
  }
  • 全局引入,在main.js中引用:
  import FormGenerator from 'vue-element-form-generator'
  Vue.component(FormGenerator)

2. FormGenerator的内置对象

  • formData: 表单当前的数据
  • params: 表单依赖的外部参数
  • resetForm:
名称类型含义
formData属性表单当前的数据
params属性表单依赖的外部参数
resetForm方法取消表单所有的改动,将表单重置为初始状态
setItemOption方法设置表单字段的属性(id, type, name不能设置)

3. 目前支持ElementUI原生的表单控件类型以及相应属性、事件的描述

3.1 Input(输入框)

  • 属性
属性名称数据类型是否必输默认值含义
idString''组件ID
nameString''组件的name属性(v-model绑定值)
labelString''组件标题
visibleBooleantrue是否可见
widthNumber0宽度(0~24整数)
readonlyBooleanfalse是否只读
defaultString''默认值
inputtypeString'text'类型包括H5默认的类型以及'textarea',不推荐使用number
placeholderString''占位文字(当值为空是默认显示的内容)
clearableBooleantrue是否显示清空按钮
showPasswordBooleanfalse是否显示切换明文/密文按钮(仅当inputtype为'password'时可用)
sizeString'medium'尺寸(可选值有medium/small/mini)
rowsNumber3文本行数(仅当inputtype为'textarea'时可用)
  • 事件

(1) change事件: 值改变事件

参数名称数据类型是否必输参数含义
formCtxObject表单可操作对象
value视当前字段的数据类型而定当前值

(2) clear事件: 值清空事件,同时会自动触发change事件

参数名称数据类型是否必输参数含义
formCtxObject表单可操作对象
  • 示例

一个普通的文本框

{
  type: 'text',
  id: 'simpletext',
  name: 'simpletext',
  label: '普通文本'
}

带有事件的文本框

{
  type: 'text',
  id: 'textWithEvent',
  name: 'textWithEvent',
  label: '带事件的文本框',
  event: {
    change(formCtx, value) {
      console.log(value)
      console.log(formCtx)
    },
    clear(formCtx) {
      console.log(formCtx)
    }
  }
}

3.2 Switch(开关)

  • 属性
属性名称数据类型是否必输默认值含义
idString''组件ID
nameString''组件的name属性(v-model绑定值)
labelString''组件标题
visibleBooleantrue是否可见
widthNumber0宽度(0~24整数)
readonlyBooleanfalse是否只读
defaultString/Number/BooleaninactiveValue的值默认值
activeValueString/Number/Booleantrue打开状态下的取值
inactiveValueString/Number/Booleanfalse关闭状态下的取值
  • 事件

    (1) change事件: 值改变事件

参数名称数据类型是否必输参数含义
formCtxObject表单可操作对象
valueString/Number/Boolean当前值
  • 示例
{
  type: 'switch',
  name: 'switch1',
  id: 'switch1',
  readonly: false,
  label: '开关1',
  visible: true,
  width: 4,
  events: {
    change(formCtx, val) {
      formCtx.formData.switch2 = val ? 1 : 0
    }
  }
}

3.3 Number数字输入框

  • 属性
属性名称数据类型是否必输默认值含义
idString''组件ID
nameString''组件的name属性(v-model绑定值)
labelString''组件标题
visibleBooleantrue是否可见
widthNumber0宽度(0~24整数)
readonlyBooleanfalse是否只读
defaultNumber0默认值
minNumber-最小值
maxNumber-最大值
stepNumber1步长
precisionNumber0精确度
sizeString'large'尺寸(可选值为large/small)
controlsBooleantrue是否显示控制按钮
  • 事件

(1) change事件: 值改变事件

参数名称数据类型是否必输参数含义
formCtxObject表单可操作对象
valueNumber当前值

(2) focus事件: 聚焦事件

参数名称数据类型是否必输参数含义
formCtxObject表单可操作对象
eEvent事件对象

(3) blur事件: 失去焦点事件

参数名称数据类型是否必输参数含义
formCtxObject表单可操作对象
eEvent事件对象
  • 示例

(1) 有最大和最小值

{
  type: 'number',
  id: 'number2',
  name: 'number2',
  width: 6,
  label: '数字2',
  min: 0,
  max: 1,
  precision: 2,
  step: 0.1
}

(2) 带值改变事件

{
  type: 'number',
  id: 'number2',
  name: 'number2',
  width: 6,
  label: '数字2',
  min: 0,
  max: 1,
  precision: 2,
  step: 0.1,
  events: {
    change(formCtx, val) {
      console.log('当前值:', val)
    }
  }
}

3.4 Radio单选框

  • 属性
属性名称数据类型是否必输默认值含义
idString''组件ID
nameString''组件的name属性(v-model绑定值)
labelString''组件标题
visibleBooleantrue是否可见
widthNumber0宽度(0~24整数)
readonlyBooleanfalse是否只读
defaultString/Number''默认值
buttonBooleanfalse是否采用按钮的方式显示
sizeString'medium'尺寸(可选值medium/small/mini)
textColorString'#FFFFFF'选项激活时文本的颜色(button为true时可用)
fillColorString'#409EFF'选项激活时填充颜色和边框颜色(button为true时可用)
dictListArray[]选项列表
textFieldStringtext标签域属性名称
valueFieldStringvalue值域属性名称
  • 事件

(1) change事件: 值改变事件

参数名称数据类型是否必输参数含义
formCtxObject表单可操作对象
valueString/Number/Boolean当前值
  • 示例
{
  type: 'radio',
  id: 'radio1',
  name: 'radio1',
  width: 12,
  label: '单选框1',
  dictList: [{'text': 11, 'value': '1'}, {'text': 22, 'value': '2'}, {'text': 33, 'value': '3'}],
  default: '2'
}

3.5 Checkbox复选框

  • 属性
属性名称数据类型是否必输默认值含义
idString''组件ID
nameString''组件的name属性(v-model绑定值)
labelString''组件标题
visibleBooleantrue是否可见
widthNumber0宽度(0~24整数)
readonlyBooleanfalse是否只读
defaultArray[]默认值
buttonBooleanfalse是否采用按钮的方式显示
sizeString'medium'尺寸(可选值medium/small/mini)
textColorString'#FFFFFF'选项激活时文本的颜色(button为true时可用)
fillColorString'#409EFF'选项激活时填充颜色和边框颜色(button为true时可用)
dictListArray[]选项列表
textFieldStringtext标签域属性名称
valueFieldStringvalue值域属性名称
maxNumberdataDict数组的长度最多选择数量
minNumber0最少选择数量
  • 事件

(1) change事件: 值改变事件

参数名称数据类型是否必输参数含义
formCtxObject表单可操作对象
valueString/Number/Boolean当前值
  • 示例
{
  type: 'checkbox',
  id: 'checkbox1',
  name: 'checkbox1',
  width: 12,
  label: '复选框1',
  dictList: [{'text': 11, 'value': '1'}, {'text': 22, 'value': '2'}, {'text': 33, 'value': '3'}],
  default: ['1']
}

3.6 Select下拉框

  • 属性
属性名称数据类型是否必输默认值含义
idString''组件ID
nameString''组件的name属性(v-model绑定值)
labelString''组件标题
visibleBooleantrue是否可见
widthNumber0宽度(0~24整数)
readonlyBooleanfalse是否只读
defaultString/Array单选: ''; 多选: []默认值
multipleBooleanfalse是否开启多选
sizeString'medium'尺寸(可选值medium/small/mini)
clearableBooleantrue是否显示清空按钮
limitNumber0最多可选数量(多选时可用,为0时不限制)
placeholderString''占位文字(当值为空是默认显示的内容)
dictListArray[]选项列表
textFieldStringtext标签域属性名称
valueFieldStringvalue值域属性名称
  • 事件

(1) change事件: 值改变事件

参数名称数据类型是否必输参数含义
formCtxObject表单可操作对象
valueString/Number/Boolean当前值

(2) visible-change: 下拉框出现/隐藏事件

参数名称数据类型是否必输参数含义
formCtxObject表单可操作对象
flagBoolean显示为true,隐藏为false

(3) remove-tag: 移除选中tag(多选时可用)

参数名称数据类型是否必输参数含义
formCtxObject表单可操作对象
tagString/Number被移除的tag的值

(4) clear: 清空选中选项

参数名称数据类型是否必输参数含义
formCtxObject表单可操作对象

(5) blur: 失去焦点

参数名称数据类型是否必输参数含义
formCtxObject表单可操作对象
eEvent事件对象

(6) focus: 获得焦点

参数名称数据类型是否必输参数含义
formCtxObject表单可操作对象
eEvent事件对象
  • 示例
{
  type: 'select',
  id: 'multiselect1',
  name: 'multiselect1',
  width: 6,
  label: '复选框1',
  multiple: true,
  dictList: [
    {'text': 11, 'value': '1'}, 
    {'text': 22, 'value': '2'}, 
    {'text': 33, 'value': '3'},
    {'text': 44, 'value': '4'},
    {'text': 55, 'value': '5'},
  ],
  clearable: true,
  limit: 3,
  events: {
    'remove-tag'(formCtx, removeVal) {
      console.log('remove tag', removeVal)
    }
  }
}

3.7 Button按钮

  • 属性
属性名称数据类型是否必输默认值含义
idString''组件ID
nameString''组件的name属性(v-model绑定值)
visibleBooleantrue是否可见
widthNumber0宽度(0~24整数)
disabledBooleanfalse是否禁用
btnTypeString'primary'按钮类型
plainBooleanfalse是否为朴素按钮
roundBooleanfalse是否有圆角
sizeString'medium'尺寸(可选值medium/small/mini)
iconString''图标
  • 事件

(1) click: 点击事件

参数名称数据类型是否必输参数含义
formCtxObject表单可操作对象
  • 示例
{
  type: 'button',
  btnText: '按钮1',
  id: 'btn1',
  width: 4,
  size: 'medium',
  events: {
    click(formCtx) {
      formCtx.formData.switch1 = !formCtx.formData.switch1
      formCtx.formData.text1 = formCtx.formData.text1 + formCtx.formData.switch2
    }
  }
}

3.8 Timepicker时间选择器

  • 属性
属性名称数据类型是否必输默认值含义
idString''组件ID
nameString''组件的name属性(v-model绑定值)
labelString''组件标题
visibleBooleantrue是否可见
widthNumber0宽度(0~24整数)
readonlyBooleanfalse是否只读
defaultString/Array!isRange: '' isRange: '', ''默认值
isRangeBooleanfalse是否为时间范围选择
editableBooleanfalse文本框是否允许编辑
clearableBooleantrue是否显示清除按钮
sizeString'medium'尺寸(可选值medium/small/mini)
placeholderString'请选择时间'占位内容
startPlaceholderSting'请选择开始时间'开始时间的占位内容(isRange为true时可用)
endPlaceholderSting'请选择结束时间'结束时间的占位内容(isRange为true时可用)
pickerOptionsObject{}时间选择器的特殊选项
valueFormatString'HH:mm:ss'时间格式化的格式
rangeSeparatorString'-'分隔符(isRange为true时可用)
  • 事件

(1) change: 值改变事件

参数名称数据类型是否必输参数含义
formCtxObject表单可操作对象
valueString/Number/Boolean当前值

(2) focus事件: 聚焦事件

参数名称数据类型是否必输参数含义
formCtxObject表单可操作对象
componentVueComponent绑定的Vue组件实例

(3) blur事件: 失去焦点事件

参数名称数据类型是否必输参数含义
formCtxObject表单可操作对象
componentVueComponent绑定的Vue组件实例

3.9 Dimepicker日期选择器

  • 属性
属性名称数据类型是否必输默认值含义
idString''组件ID
nameString''组件的name属性(v-model绑定值)
labelString''组件标题
visibleBooleantrue是否可见
widthNumber0宽度(0~24整数)
readonlyBooleanfalse是否只读
defaultString/Arrayyear: ''month: ''date: ''dates: []week: ''datetime: ''datetimerange: '', ''daterange: '', ''monthrange: '', ''默认值
inputtypeStringdate日期选择器类型(同element官方文档的type)
editableBooleanfalse文本框是否允许编辑
clearableBooleantrue是否显示清除按钮
sizeString'medium'尺寸(可选值medium/small/mini)
placeholderString'请选择时间'占位内容
startPlaceholderSting'请选择开始时间'开始时间的占位内容(isRange为true时可用)
endPlaceholderSting'请选择结束时间'结束时间的占位内容(isRange为true时可用)
pickerOptionsObject{}时间选择器的特殊选项
valueFormatString根据inputtype类型决定日期格式化的格式
formatString和valueFormat相同输入框中显示的格式化规则(默认和valueFormat相同)
rangeSeparatorString'-'分隔符(isRange为true时可用)
defaultTimeArray'', ''选中日期所使用的的当日具体时刻(inputtype为daterange/datetimerange时可用)
  • 事件

(1) change: 值改变事件

参数名称数据类型是否必输参数含义
formCtxObject表单可操作对象
valueString/Number/Boolean当前值

(2) focus事件: 聚焦事件

参数名称数据类型是否必输参数含义
formCtxObject表单可操作对象
componentVueComponent绑定的Vue组件实例

(3) blur事件: 失去焦点事件

参数名称数据类型是否必输参数含义
formCtxObject表单可操作对象
componentVueComponent绑定的Vue组件实例

4. 自定义的表单控件

4.1 fill填充组件

  • 属性
参数名称数据类型是否必输参数含义
widthNumber宽度(0~24整数)
  • 示例

(1) 自适应宽度

{
  type: 'fill'
}

(2) 自定义宽度

{
  type: 'fill',
  width: 20
}
  • 备注

    这是个填充栏位,用于需要另起一行时使用
    可以不填写宽度,默认填充整行,下一个栏位直接另起一行
    没有任何和数据相关的属性,也不会影响表单的配置和数据