@mosowe2/element-pro:【proForm】基于elementUI2.x版本的高级表单

proForm

通过配置自动生成表单页面:

  1. 自动生成布局

  2. 支持远程

  3. 支持联动

  4. 支持原有属性事件

  5. select多选自动加全部,选择全部其他不可选

Attributes

参数说明类型必填默认
options配置,optionsobject
value默认值,键值对,key为options里面的propobject
footer是否显示组件提交、重置按钮booleantrue
justShow是否只读,可编辑时,上下间距为15px,只读时为10pxbooleanfalse

示例结构,[prop]为数据关键字,[groupKeyName]为分栏关键字,均唯一:

// 配置
options = {
    form: {
        labelWidth: '100px',
        labelPosition: 'left'
    },
    list: {
        [groupKeyName]: {
            groupTitle: '第二个组件',
            groupTitleIcon: 'el-icon-s-finance',
            groupCol: { span: 24 },
            groupFormItems: {
                [prop]: {
                    component: 'Input',
                    options: { // component options
                        placeholder: '请输入',
                        clearable: true,
                        prefixIcon: 'el-icon-user-solid',
                        col: { span: 12 },
                    },
                    formItemOptions: {
                        label: '姓名',
                        col: { span: 12 },
                        slotAfter: '测试的文字',
                        isHidden: false,
                        rules: [
                            {
                                required: false,
                                message: '必填!'
                            }
                        ]
                    }
                },
            }
        },
    },
    events: {
        [prop]: {
            change: (e, form) => {
                console.log(form)
            }
        }
    }
}
// 默认值
const value = {

    [prop]: '小红'

}
proForm options
属性说明类型必填
formform组件的配置,支持所有属性,model已被单独提出来作为value传入object
list分栏配置,子元素[groupKeyName]为分栏的标识且唯一,开发者自定义,list.[groupKeyName]object
events组件单元的事件,eventsobject
options.list.[groupKeyName]
属性说明类型必填
groupTitle分栏标题,为空则不显示string
groupTitleClass分栏标题的classstring
groupTitleIcon分栏标签文字前面的iconstring
groupCol分栏所占栅栏数,支持Layout布局的col所有属性object
groupFormItems分栏表单的单元配置,子元素[prop]为表单的输出字段且唯一,也是form-item的prop属性,groupFormItemsstring
options.list.[groupKeyName].groupFormItems
属性说明类型必填
component组件类型,可选:Cascader, Checkbox, Date, Input, InputNumber,InputAutoComplete, Radio, Select, Switch, Timestring
options对应该组件的Attributes,其中,select的remoteMethod远程搜索方法增加一个form实例,及一个回调函数,回调函数接收一个enum类似的格式:remoteMethod(query,form,callback)=>{}options
formItemOptionsformItem组件的Attributes,新增col,formItem所占父级的栅栏数,支持Layout布局的col所有属性,prop属性可以不写,写的话需要与groupFormItems[prop]的prop一致,新增isHidden属性,是否隐藏表单object
groupFormItems.options
属性说明类型必填
对应表单元素的属性---
col表单组件所占父级的栅栏数,支持Layout布局的col所有属性object
enum可以使key-value键值对,也可以是{label,value}组成的数组,多选时自动添加第一项全部object/array
notAllselect组件多选情况下,无论有没有数据都不展示全部,即下拉没有全部选项boolean
noDateNoAllselect组件多选情况下,没有数据且默认值不为全部时不展示全部选项,有数据时展示全部,如果默认值时全部,name就不需要配置此项,全部的固定关键字是allboolean
options.events
事件说明回调参数
[prop].focus组件focus事件,若原组件有(e,form,callback)e是组件元素,form为组件实例,callback返回一个列表,将会赋值到该组件enum上,主要是select使用
[prop].blur组件blur事件,若原组件有(e,form)e是组件元素,form为组件实例
[prop].clear组件clear事件,若原组件有(e,form)e是组件当前值,form为组件实例
[prop].input组件input事件,若原组件有(e,form)e是组件当前值,form为组件实例
[prop].change组件change事件,若原组件有(e,form,callback)e是组件当前值,form为组件实例,callback返回一个列表,将会赋值到该组件enum上,主要是select使用
[prop].select组件select事件,若原组件有,目前就InputAutoComplete组件有(e,form)e是组件当前值,form为组件实例
[prop].visibleChange组件下拉展开、隐藏事件(e,form,callback)e是boolean类型,true展开,false隐藏,form为组件实例,callback返回一个列表,将会赋值到该组件enum上,主要是select使用
[prop].removeTag组件多选时,移除已选项触发(e,form,callback)e是boolean类型,true展开,false隐藏,form为组件实例,callback返回一个列表,将会赋值到该组件enum上,主要是select使用
[prop].expandChange级联组件展开下一级事件(e,form)e是各父级选项值组成的数组,form为组件实例

proForm events

方法说明参数
submit内部提交按钮点击事件,已校验rules表单数据
reset内部重置按钮点击事件表单数据

proForm slot

slot说明
[prop]formItem的默认插槽
[prop]-labelformItem的label插槽
[prop]-afterformItem后面的插槽,不在formItem内
form-title-[groupKeyName]分栏标题插槽,参数:title={title,className,icon}
form-afterform组件后置插槽,紧跟formItem组件,在form组件内,可以使用col组件进行自适应,参数:events={submitForm,resetForm}
使用方法
安装

npm i @mosowe2/element-pro

配置

main.js配置,因为是依赖@vue/composition-apielement-ui,所以这两个也是要安装和配置的

import Vue from 'vue';
import VueCompositionApi from '@vue/composition-api';
import ElementUI from 'element-ui';
import 'element-ui/lib/theme-chalk/index.css';
import App from './App.vue';
import router from './router';
import ElementPro from '@mosowe2/element-pro' // 引入


Vue.config.productionTip = false;
Vue.config.silent = true;
Vue.use(VueCompositionApi);
Vue.use(ElementUI,{size:'mini'});
Vue.use(ElementPro) // 配置

new Vue({
  router,
  render: (h) => h(App),
}).$mount('#app');

使用

.vue文件中直接使用

<proForm
...配置
></proForm>
代码示例
ppt配置详解
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Mosowe

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值