栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

proTable:基于elementUI2.x版本的高级表格

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

proTable:基于elementUI2.x版本的高级表格

【基于vue2+element+@vue/composition-api】
用过antd高级组件的应该有点印象,我这就是参考antd高级组件编写的,尽最大可能的把每个组件原有的element相关的属性方法都还原,已下功能是都有的也测试过了:

通过配置tableColumn,实现:

  1. 自动生成table表格

  2. 自动生成search表单

  3. 自动生成页码组件

  4. 单元格可编辑,可获取编辑后table数据,通过组件ref

  5. 内部翻页/页数修改/搜索等事件处理

  6. 可拦截翻页/页数修改

  7. 搜索栏默认收起,可展开

  8. 支持必填项搜索

  9. 支持表格单元/表头插槽

  10. 支持搜索表单单元联动

  11. 支持远程加载

  12. 支持搜索单元lable、value插槽

  13. 支持用户表格紧凑度改变

  14. 支持用户表格展示项改变

  15. 支持组件内部刷新

  16. 支持多种插槽

  17. 合并行/列

  18. 。。。

Attributes
参数说明类型必填默认
requestMethod数据获取的方法,接受一个promise返回的方法function是-
tableColumn表格table-item配置及搜索配置tableColumn是-
tableConfig表格table配置,透传table的Attributesobj否-
tableEvents表格table的events,此处注意:不可使用驼峰替换短横线obj否-
query额外参数,表格初始化需要的除current和pageSize之外的其他参数,如果搜索栏有必填,也需要传入obj否-
title左上角表格名称string否-
initBefore表格渲染前处理function否-
tableSourceKey表格source数组字段string否list
tableTotalKey表格分页组件total字段string否total
hideToolBar表格顶上区域隐藏boolean否false
rightToolBar表格头部右侧操作按钮展示,多个英文逗号分割,可选:column列布局,density紧凑,refresh刷新boolean/ string否true
pagination页码设置{current,pageSize},只有一页的时候隐藏不显示object否{current:1,pageSize:10}
paginationShow是否显示底部页码boolean否true
editBlur可编辑框失去焦点事件,返回五个参数:value当前值, event当前单元格编辑框, column当前column配置项, row当前行属性, table当前表格组件实例,可以获取到表格数据function否-

示例结构

[
    {
        fixed: 'left',  // 序号
        type: "index",
    },
    {
        fixed: 'left', // 展开行
        type: "expand",
    },
    {
        fixed: 'left', // 多选
        type: "selection",
    },
    {
        label: '姓名', // 表头
        prop: 'name', // 关键字
        width: 200, // 宽度
        // search: true, // 搜索区配置 bool / obj , bool时会根据是否有enum生成对应表单
        search: {
            unionProp: 'sex,age', // 下级关联字段,本字段数据更新,下级关联字段清空,string,多个英文逗号分割
            component: '', // 使用的组件,优先级高
            formProp: { // 透传proForm的属性
                component: 'Input', // 使用的组件
                options: { // 组件的配置信息
                    placeholder: '请输入',
                    clearable: true,
                },
                formItemOptions: {  // form-item的配置
                    // label: '姓名', // 可不写,前面的label一直,配置则按此处的显式在搜索区
                    rules: [
                        {
                            required: true,
                            message: '姓名必填!'
                        }
                    ]
                }
            },
            transform: (value) => ({ startTime: value[0], endTime: value[1] }), // 需要转换的字段,一般用于时间范围,级联等组件时使用
            requestMethods: statusChange,  // 当该项值发生变化后,需要处理的事件,比如修改相关select的下拉选项enum。回调:e-当前值,form-表单实例,statusChange应在配置前声明
        }, // 开启搜索,boolean / {transform},search字段会默认为false,需要成为搜索栏的要显式定义
        hideInTable: false, // 在表格中隐藏,hideInTable只会存在一级列表里面,主要用于需要在搜索栏展示不需要在表格展示的字段,或者同一类型的表格字段和搜索字段不一致的情况
        disabled: true, // 在表格中必须显示的列,针对的是表格右上角树形结构选项的用户自定义展示列
        order: 1, // search表单权重,越大越靠前
        enum: {  // 枚举,表格会根据枚举自动渲染,key:value格式
            1: '启用',
            0: '禁用'
        },
        edit: true,
        editBlur: (value, event, column, row, table) => {}
    },
]
tableColumn

主要的配置是el-table-item的prop,新增其他的配置项

属性说明类型必填默认
[table-item]可接收formItem组件的Attributes是
search字段的搜索区配置,值为true,的时候会根据是否含有enum字段生成input组件或select组件boolean / search否不生成搜索表单
hideInTable不在表格中显示的字段,该字段可能用于搜索区boolean否false
disabledtrue:在表格中必须显示的列,针对的是表格右上角树形结构选项的用户自定义展示列boolean否false
order在搜索区的权重,越大越靠前,同级按配置的先后展示number否-
enum枚举,{key:value}形式,主要在select组件时使用,会主动在搜索区生成select下拉选项,若表格数据返回的是一个key,那么会根据这个返回对应的值展示在表格上object否-
edit是否可编辑bool / function否false
editBlur可编辑框失去焦点事件,返回五个参数:value当前值, event当前单元格编辑框, column当前column配置项, row当前行属性, table当前表格组件实例,可以获取到表格数据function否-
tableColumn.search
属性说明类型必填默认
formProp接收的内容是proFom的配置数据groupFormItems[prop]下的配置{components,options,formItemOptions},其中相关的col已被组件写死,不可修改,若没有此字段,将会根据component(若有)选择组件,若没有component则会自动选择相关组件proForm:options.list.[groupKeyName].groupFormItems[prop]是-
component使用的组件名称,同formProp.component,优先级最高string否-
unionProp下级关联字段,本字段数据更新,下级关联字段清空,string,多个英文逗号分割string否-
transform需要转换的字段,一般用于时间范围,级联等组件时使用function否-
requestMethods当该项值发生变化后,需要处理的事件,比如修改相关select的下拉选项enum。回调:e-当前值,form-表单实例。相关事件应在配置前声明function否-
events
事件说明
currentChange页码改变时触发,返回当前值及一个callback,需要callback一个boolean告诉组件是否跳转,否则不跳转,并更改页面为点击前页码
sizeChange页数改变时触发,返回当前值及一个callback,需要callback一个boolean告诉组件是否修改,否则不修改,并更改页数为点击前页数
searchChange搜索表单值改变时触发,返回表单当前值
editBlur监听表格所有可编辑单元格的失去焦点事件,返回五个参数:value当前值, event当前单元格编辑框, item当前column配置项, data当前行属性, table当前表格组件实例,可以获取到表格数据
slot
slot说明
[prop]-default表格table-item的默认插槽
[prop]-header表格table-item的header插槽
expand-defoult展开行插槽
append表尾合计插槽
toolbar表格头部左侧插槽
toolbar-right表格头部右侧插槽
tool-handle搜索区下方,表格头部上方区域插槽
pagination-left分页区左侧插槽
footer组件底部插槽,在分页区下方
search-bar搜索区插槽,覆盖整个搜索区
[prop]搜索区表单组件插槽
[prop]-label搜索区表单组件label插槽
search-btn搜索区按钮插槽
使用方法 安装

npm i @mosowe2/element-pro

配置

main.js配置,因为是依赖@vue/composition-api和element-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文件中直接使用


代码示例
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1002801.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号