npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

vue-element-form-generator

v1.0.0

Published

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

Downloads

7

Readme

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(输入框)

  • 属性

| 属性名称 | 数据类型 | 是否必输 | 默认值 | 含义 | | ----- | ----- | ----- | ----- | ----- | | id | String | 是 | '' | 组件ID | | name | String | 是 | '' | 组件的name属性(v-model绑定值) | | label | String | 是 | '' | 组件标题 | | visible | Boolean | 是 | true | 是否可见 | | width | Number | 是 | 0 | 宽度(0~24整数) | | readonly | Boolean | 否 | false | 是否只读 | | default | String | 否 | '' | 默认值 | | inputtype | String | 是 | 'text' | 类型包括H5默认的类型以及'textarea',不推荐使用number | | placeholder | String | 否 | '' | 占位文字(当值为空是默认显示的内容) | | clearable | Boolean | 否 | true | 是否显示清空按钮 | | showPassword | Boolean | 否 | false | 是否显示切换明文/密文按钮(仅当inputtype为'password'时可用) | | size | String | 否 | 'medium' | 尺寸(可选值有medium/small/mini) | | rows | Number | 否 | 3 | 文本行数(仅当inputtype为'textarea'时可用) |

  • 事件

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

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

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

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

  • 示例

一个普通的文本框

{
  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(开关)

  • 属性

| 属性名称 | 数据类型 | 是否必输 | 默认值 | 含义 | | ----- | ----- | ----- | ----- | ----- | | id | String | 是 | '' | 组件ID | | name | String | 是 | '' | 组件的name属性(v-model绑定值) | | label | String | 是 | '' | 组件标题 | | visible | Boolean | 是 | true | 是否可见 | | width | Number | 是 | 0 | 宽度(0~24整数) | | readonly | Boolean | 否 | false | 是否只读 | | default | String/Number/Boolean | 否 | inactiveValue的值 | 默认值 | | activeValue | String/Number/Boolean | 否 | true | 打开状态下的取值 | | inactiveValue | String/Number/Boolean | 否 | false | 关闭状态下的取值 |

  • 事件

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

| 参数名称 | 数据类型 | 是否必输 | 参数含义 | | ----- | ----- | ----- | ----- | | formCtx | Object | 是 | 表单可操作对象 | | value | String/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数字输入框

  • 属性

| 属性名称 | 数据类型 | 是否必输 | 默认值 | 含义 | | ----- | ----- | ----- | ----- | ----- | | id | String | 是 | '' | 组件ID | | name | String | 是 | '' | 组件的name属性(v-model绑定值) | | label | String | 是 | '' | 组件标题 | | visible | Boolean | 是 | true | 是否可见 | | width | Number | 是 | 0 | 宽度(0~24整数) | | readonly | Boolean | 否 | false | 是否只读 | | default | Number | 否 | 0 | 默认值 | | min | Number | 否 | - | 最小值 | | max | Number | 否 | - | 最大值 | | step | Number | 否 | 1 | 步长 | | precision | Number | 否 | 0 | 精确度 | | size | String | 否 | 'large' | 尺寸(可选值为large/small) | | controls | Boolean | 否 | true | 是否显示控制按钮 |

  • 事件

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

| 参数名称 | 数据类型 | 是否必输 | 参数含义 | | ----- | ----- | ----- | ----- | | formCtx | Object | 是 | 表单可操作对象 | | value | Number | 否 | 当前值 |

(2) focus事件: 聚焦事件

| 参数名称 | 数据类型 | 是否必输 | 参数含义 | | ----- | ----- | ----- | ----- | | formCtx | Object | 是 | 表单可操作对象 | | e | Event | 否 | 事件对象 |

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

| 参数名称 | 数据类型 | 是否必输 | 参数含义 | | ----- | ----- | ----- | ----- | | formCtx | Object | 是 | 表单可操作对象 | | e | Event | 否 | 事件对象 |

  • 示例

(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单选框

  • 属性

| 属性名称 | 数据类型 | 是否必输 | 默认值 | 含义 | | ----- | ----- | ----- | ----- | ----- | | id | String | 是 | '' | 组件ID | | name | String | 是 | '' | 组件的name属性(v-model绑定值) | | label | String | 是 | '' | 组件标题 | | visible | Boolean | 是 | true | 是否可见 | | width | Number | 是 | 0 | 宽度(0~24整数) | | readonly | Boolean | 否 | false | 是否只读 | | default | String/Number | 否 | '' | 默认值 | | button | Boolean | 否 | false | 是否采用按钮的方式显示 | | size | String | 否 | 'medium' | 尺寸(可选值medium/small/mini) | | textColor | String | 否 | '#FFFFFF' | 选项激活时文本的颜色(button为true时可用) | | fillColor | String | 否 | '#409EFF' | 选项激活时填充颜色和边框颜色(button为true时可用) | | dictList | Array | 是 | [] | 选项列表 | | textField | String | 是 | text | 标签域属性名称 | | valueField | String | 是 | value | 值域属性名称 |

  • 事件

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

| 参数名称 | 数据类型 | 是否必输 | 参数含义 | | ----- | ----- | ----- | ----- | | formCtx | Object | 是 | 表单可操作对象 | | value | String/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复选框

  • 属性

| 属性名称 | 数据类型 | 是否必输 | 默认值 | 含义 | | ----- | ----- | ----- | ----- | ----- | | id | String | 是 | '' | 组件ID | | name | String | 是 | '' | 组件的name属性(v-model绑定值) | | label | String | 是 | '' | 组件标题 | | visible | Boolean | 是 | true | 是否可见 | | width | Number | 是 | 0 | 宽度(0~24整数) | | readonly | Boolean | 否 | false | 是否只读 | | default | Array | 否 | [] | 默认值 | | button | Boolean | 否 | false | 是否采用按钮的方式显示 | | size | String | 否 | 'medium' | 尺寸(可选值medium/small/mini) | | textColor | String | 否 | '#FFFFFF' | 选项激活时文本的颜色(button为true时可用) | | fillColor | String | 否 | '#409EFF' | 选项激活时填充颜色和边框颜色(button为true时可用) | | dictList | Array | 是 | [] | 选项列表 | | textField | String | 是 | text | 标签域属性名称 | | valueField | String | 是 | value | 值域属性名称 | | max | Number | 否 | dataDict数组的长度 | 最多选择数量 | | min | Number | 否 | 0 | 最少选择数量 |

  • 事件

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

| 参数名称 | 数据类型 | 是否必输 | 参数含义 | | ----- | ----- | ----- | ----- | | formCtx | Object | 是 | 表单可操作对象 | | value | String/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下拉框

  • 属性

| 属性名称 | 数据类型 | 是否必输 | 默认值 | 含义 | | ----- | ----- | ----- | ----- | ----- | | id | String | 是 | '' | 组件ID | | name | String | 是 | '' | 组件的name属性(v-model绑定值) | | label | String | 是 | '' | 组件标题 | | visible | Boolean | 是 | true | 是否可见 | | width | Number | 是 | 0 | 宽度(0~24整数) | | readonly | Boolean | 否 | false | 是否只读 | | default | String/Array | 否 | 单选: ''; 多选: [] | 默认值 | | multiple | Boolean | 否 | false | 是否开启多选 | | size | String | 否 | 'medium' | 尺寸(可选值medium/small/mini) | | clearable | Boolean | 否 | true | 是否显示清空按钮 | | limit | Number | 否 | 0 | 最多可选数量(多选时可用,为0时不限制) | | placeholder | String | 否 | '' | 占位文字(当值为空是默认显示的内容) | | dictList | Array | 是 | [] | 选项列表 | | textField | String | 是 | text | 标签域属性名称 | | valueField | String | 是 | value | 值域属性名称 |

  • 事件

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

| 参数名称 | 数据类型 | 是否必输 | 参数含义 | | ----- | ----- | ----- | ----- | | formCtx | Object | 是 | 表单可操作对象 | | value | String/Number/Boolean | 否 | 当前值 |

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

| 参数名称 | 数据类型 | 是否必输 | 参数含义 | | ----- | ----- | ----- | ----- | | formCtx | Object | 是 | 表单可操作对象 | | flag | Boolean | 否 | 显示为true,隐藏为false |

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

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

(4) clear: 清空选中选项

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

(5) blur: 失去焦点

| 参数名称 | 数据类型 | 是否必输 | 参数含义 | | ----- | ----- | ----- | ----- | | formCtx | Object | 是 | 表单可操作对象 | | e | Event | 否 | 事件对象 |

(6) focus: 获得焦点

| 参数名称 | 数据类型 | 是否必输 | 参数含义 | | ----- | ----- | ----- | ----- | | formCtx | Object | 是 | 表单可操作对象 | | e | Event | 否 | 事件对象 |

  • 示例
{
  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按钮

  • 属性

| 属性名称 | 数据类型 | 是否必输 | 默认值 | 含义 | | ----- | ----- | ----- | ----- | ----- | | id | String | 是 | '' | 组件ID | | name | String | 是 | '' | 组件的name属性(v-model绑定值) | | visible | Boolean | 是 | true | 是否可见 | | width | Number | 是 | 0 | 宽度(0~24整数) | | disabled | Boolean | 否 | false | 是否禁用 | | btnType | String | 否 | 'primary' | 按钮类型 | | plain | Boolean | 否 | false | 是否为朴素按钮 | | round | Boolean | 否 | false | 是否有圆角 | | size | String | 否 | 'medium' | 尺寸(可选值medium/small/mini) | | icon | String | 否 | '' | 图标 |

  • 事件

(1) click: 点击事件

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

  • 示例
{
  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时间选择器

  • 属性

| 属性名称 | 数据类型 | 是否必输 | 默认值 | 含义 | | ----- | ----- | ----- | ----- | ----- | | id | String | 是 | '' | 组件ID | | name | String | 是 | '' | 组件的name属性(v-model绑定值) | | label | String | 是 | '' | 组件标题 | | visible | Boolean | 是 | true | 是否可见 | | width | Number | 是 | 0 | 宽度(0~24整数) | | readonly | Boolean | 否 | false | 是否只读 | | default | String/Array | 否 | !isRange: '' isRange: ['', ''] | 默认值 | | isRange | Boolean | 否 | false | 是否为时间范围选择 | | editable | Boolean | 否 | false | 文本框是否允许编辑 | | clearable | Boolean | 否 | true | 是否显示清除按钮 | | size | String | 否 | 'medium' | 尺寸(可选值medium/small/mini) | | placeholder | String | 否 | '请选择时间' | 占位内容 | | startPlaceholder | Sting | 否 | '请选择开始时间' | 开始时间的占位内容(isRange为true时可用) | | endPlaceholder | Sting | 否 | '请选择结束时间' | 结束时间的占位内容(isRange为true时可用) | | pickerOptions | Object | 否 | {} | 时间选择器的特殊选项 | | valueFormat | String | 否 | 'HH:mm:ss' | 时间格式化的格式 | | rangeSeparator | String | 否 | '-' | 分隔符(isRange为true时可用) |

  • 事件

(1) change: 值改变事件

| 参数名称 | 数据类型 | 是否必输 | 参数含义 | | ----- | ----- | ----- | ----- | | formCtx | Object | 是 | 表单可操作对象 | | value | String/Number/Boolean | 否 | 当前值 |

(2) focus事件: 聚焦事件

| 参数名称 | 数据类型 | 是否必输 | 参数含义 | | ----- | ----- | ----- | ----- | | formCtx | Object | 是 | 表单可操作对象 | | component | VueComponent | 否 | 绑定的Vue组件实例 |

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

| 参数名称 | 数据类型 | 是否必输 | 参数含义 | | ----- | ----- | ----- | ----- | | formCtx | Object | 是 | 表单可操作对象 | | component | VueComponent | 否 | 绑定的Vue组件实例 |

3.9 Dimepicker日期选择器

  • 属性

| 属性名称 | 数据类型 | 是否必输 | 默认值 | 含义 | | ----- | ----- | ----- | ----- | ----- | | id | String | 是 | '' | 组件ID | | name | String | 是 | '' | 组件的name属性(v-model绑定值) | | label | String | 是 | '' | 组件标题 | | visible | Boolean | 是 | true | 是否可见 | | width | Number | 是 | 0 | 宽度(0~24整数) | | readonly | Boolean | 否 | false | 是否只读 | | default | String/Array | 否 | year: ''month: ''date: ''dates: []week: ''datetime: ''datetimerange: ['', '']daterange: ['', '']monthrange: ['', ''] | 默认值 | | inputtype | String | 否 | date | 日期选择器类型(同element官方文档的type) | | editable | Boolean | 否 | false | 文本框是否允许编辑 | | clearable | Boolean | 否 | true | 是否显示清除按钮 | | size | String | 否 | 'medium' | 尺寸(可选值medium/small/mini) | | placeholder | String | 否 | '请选择时间' | 占位内容 | | startPlaceholder | Sting | 否 | '请选择开始时间' | 开始时间的占位内容(isRange为true时可用) | | endPlaceholder | Sting | 否 | '请选择结束时间' | 结束时间的占位内容(isRange为true时可用) | | pickerOptions | Object | 否 | {} | 时间选择器的特殊选项 | | valueFormat | String | 否 | 根据inputtype类型决定 | 日期格式化的格式 | | format | String | 否 | 和valueFormat相同 | 输入框中显示的格式化规则(默认和valueFormat相同) | | rangeSeparator | String | 否 | '-' | 分隔符(isRange为true时可用) | | defaultTime | Array | 否 | ['', ''] | 选中日期所使用的的当日具体时刻(inputtype为daterange/datetimerange时可用) |

  • 事件

(1) change: 值改变事件

| 参数名称 | 数据类型 | 是否必输 | 参数含义 | | ----- | ----- | ----- | ----- | | formCtx | Object | 是 | 表单可操作对象 | | value | String/Number/Boolean | 否 | 当前值 |

(2) focus事件: 聚焦事件

| 参数名称 | 数据类型 | 是否必输 | 参数含义 | | ----- | ----- | ----- | ----- | | formCtx | Object | 是 | 表单可操作对象 | | component | VueComponent | 否 | 绑定的Vue组件实例 |

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

| 参数名称 | 数据类型 | 是否必输 | 参数含义 | | ----- | ----- | ----- | ----- | | formCtx | Object | 是 | 表单可操作对象 | | component | VueComponent | 否 | 绑定的Vue组件实例 |

4. 自定义的表单控件

4.1 fill填充组件

  • 属性

| 参数名称 | 数据类型 | 是否必输 | 参数含义 | | ----- | ----- | ----- | ----- | | width | Number | 否 | 宽度(0~24整数) |

  • 示例

(1) 自适应宽度

{
  type: 'fill'
}

(2) 自定义宽度

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

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