vue+element实现表格可配置,排序,搜索,双击修改,键盘操作,拖动改变列宽等功能(持续更新中)

5 篇文章 0 订阅
5 篇文章 0 订阅

表格效果

vue+element 实现表格可配置,列排序,列搜索,单元格双击修改,单击行修改,键盘上下左右选中input,拖动改变列宽等功能
(持续更新中,欢迎大家提出宝贵意见)
在这里插入图片描述在这里插入图片描述
在这里插入图片描述

jst-table更新日志

时间废除新增
2020.02.12新增specialevent(特殊事件)参数:disabledEdit(禁止所有edit模板不可编辑);详见attrConfig
2020.01.10废除keyboard(键盘操作)
废除字段type(配置选择列,序号列)
废除字段operate{操作列)
新增specialcol(特殊列)详见attrConfig
新增specialevent(特殊事件)详见attrConfig
新增edit-row-save事件(单击行编辑状态)详见Events
2020.03.02新增input纯输入框模板详见template
2020.03.03新增列配置(详见colconfig)aline和headerAlign(列对齐和头部对齐方式),详见tableConfig
新增tableheight,分页是否不占高度,详见attrConfig
2020.03.09新增获取ref的方法get-ref,详见Events
2020.04.14新增选框选中行后数据更新,选框回选。reserverow: String(唯一属性的列名称)
2020.04.22废除size-change、current-change事件
废除pageconfig中的size字段
新增page-change事件(前两个废除事件的整合,无返回值)
新增pageconfig中的pageSize字段
2020.04.26新增模板image(可鼠标移入查看大图)
2020.05.07新增列配置排序可拖动排序
新增表格数据排序sort-change详见Events
2020.08.12新增合计功能(详见calc-prop)

jst-table表格组件使用方法

<jst-table 
:tabledata="tableData" 
:tableconfig="tableConfig" 
:pageconfig="pageConfig" 
:calc-prop="calcProp"
specialcol="selection,number,operate"
specialevent="keyboard,rowClickEdit"
@multi-select="multiSelect"
@edit-save="editSave"
@edit-row-save="editRowSave"
@press-key="pressKey" 
@lable-btn="lableBtn" 
@search-col="searchCol" 
@page-change="pageChange"
 >
	  <!--如果设置了operate(含有操作列,则需要自定义以下代码)-->
      <template slot="operate" slot-scope="data">
           <span class="cursorP F2263E5" @@click="editRow(data.rowdata)">编辑</span>
           <span class="cursorP F32735 marL15" @@click="deleteRow(data.rowdata)">删除</span>
      </template>
      <!--如果tableconfig(列配置项添加了非内定模板)则对应需要添加一下代码,slot须与tableconfig中的template对应-->
      <template slot="image" slot-scope="data">
      		<!--data.celldata   单元格数据-->
      		<!--data.rowdata    行数据-->
          这里写自有样式
      </template>
      <!--简单的计算列样例,此时slot的值要与tableconfig中的template对应
      (注意:数据库没有的列需要展示也需要配置到tableconfig中)-->
      <template slot="cal" slot-scope="data">
          <span>{{Number(data.rowdata.bi.value)+ Number(data.rowdata.yu.value)}}</span>
      </template>
</jst-table>
var vue= new Vue({
        el: '#app',
        components: {
            'jstTable': jstTable,
        }
}
attrConfig

属性配置

事件名说明参数
tabledata表格数据Object
tableconfig表格列配置Object
pageconfig分页配置Object
height表格高度number
specialcol特殊列配置(选框,序号,操作)string(selection,number,operate)
specialevent特殊事件(键盘操作,单击行编辑(若需双击单个修改不配置即可),禁止所有edit模板不可编辑)string(keyboard,rowClickEdit,disabledEdit)
tableheight分页是否占据高度Boolean(默认false)
colconfig列配置设置功能Object
calc-prop合计功能(需要合计列的key)Array
tabledata

表格数据(根据现有需求结合vue暂定表格数据格式)

交互效果原数据现数据
只控制显示address1:‘上海市普陀区金沙江路 1518 弄’address1: {value:‘上海市普陀区金沙江路 1518 弄’,isShow:false},
包含小按钮+弹出框ouderNum: 20215719ouderNum: {value: 20215719,content: ‘详’,modal: ‘tableDetails’},
显示不同样式status: ‘deliverying’,status: {value: ‘deliverying’, name: ‘发货中’, color: ‘#F94406’},
colconfig

列配置设置

参数说明类型可选值
elementId对应表格id(为区分一个页面多个表格)string选填(多个表格时必填)
key区分某一页的列配置string必填(一般用路由)
tableConfig

列配置

参数说明类型可选值
prop对应数据string必填
label对应数据列名称string必填
isShow该列是否显示boolean必填
fixed列固定boolean非必填
sortable列排序boolean非必填
isSearch列搜索boolean非必填
aline内容对齐方式string非必填(left/center/right)
headerAlign表头对齐方式
(若不传参数,则使用aline对齐方式)
string非必填(left/center/right)
template渲染模板string见templat模板介绍
template

内置模板

模板名说明所需数据
default默认只展示String
hover-modul鼠标移入出操作按钮(图示2)Object
({ouderNum: 20215719,content: ‘详’,modal: ‘tableDetails’})
label标签模板(默认包含鼠标移入操作按钮,图示3)Array
[{status: ‘defult’,name: ‘复制订单’},{status: ‘icon’,name: ‘purple’,color: ‘#E836FD’}]
double上下双行数据(图示4)Array
[‘12321312’,‘栗鼠’]
status带图标+颜色(图示5)Object
{color: “#FF06A4”, status: “Delivering”, name: “发货中”, msg: “平台快递公司未映射”, describe: “描述”}
edit双击修改当前单元格(图示6)Object
{value: ‘上海市普陀区金沙江路 1518 弄’,isShow: false,isDisabled:false},
input纯输入框(数据格式 name:value,若传递时对象则支持设置不可编辑)String,Object({isDisabled:true,value:‘21’})
image图片模板(鼠标移入可查看大图)(图示7)String

图示:
在这里插入图片描述
在这里插入图片描述在这里插入图片描述

pageconfig

分页配置

事件名说明参数
total总条数number
pageSize每页显示条number
pageIndex当前页number
sizes每页显示个数选择器的选项设置arr
Events

操作事件

事件名触发的事件返回值
row-click单击行时选中行数据
multi-select多选框勾选时选中行数据
edit-save输入框修改完成时(数据有修改才会触发)行Id,列名称,修改后的值
edit-row-save选中其他行或再次单击行时触发(数据有修改才会触发)修改后行数据
press-key键盘上下左右键选中当前选中行数据
lable-btn小按钮“详”,“改”等点击事件当前选中行数据,对应弹出框名称
search-col列搜索,点击搜索按钮时触发的事件列名称,搜索内容
page-change分页选择每页/条,页面切换时触发
get-ref抛出ref
sort-change点击列上的排序按钮时{列名,排序方向}

jstTable.vue下载地址(涵盖数据样板)

链接: https://gitee.com/lishu_fs/lsTable

数据样板
tableData: [{
                    id: '00001',
                    date: {
                        ouderNum: 20215719,
                        content: '详',
                        modal: 'tableDetails'
                    },
                    label: [{
                        status: 'defult',
                        name: '复制订单'
                    },
                    {
                        status: 'icon',
                        name: 'purple',
                        color: '#E836FD'
                    }],
                    goods: [{
                        id: 00000,
                        name: '商品1',
                        num: 100,
                        imgurl: 'https://img.alicdn.com/imgextra/i2/1046707508/TB2xwsghCtYBeNjSspkXXbU8VXa_!!1046707508.jpg_430x430q90.jpg',
                        skus: [{
                            id: 424225262622,
                            status: '线上锁定',
                            befor_amount: 0.01,
                            num: 1,
                            amount: 0.01,
                            name: '测试用-【集单】测试商品请不要拍',
                            imgurl: 'https://img.alicdn.com/imgextra/i2/1046707508/TB2xwsghCtYBeNjSspkXXbU8VXa_!!1046707508.jpg_430x430q90.jpg',
                            color: '白色',
                            size: 'S',
                            weight: 0,
                            inventory: 0
                        }]
                    }],
                    accountAndstore: ['113267147', '乐迪'],
                    status: {
                        status: 'paymented',
                        name: '待付款',
                        color: '#1642F3'
                    },
                    address1: {
                        value: '上海市普陀区金沙江路 1518 弄',
                        isShow: false
                    },
                    address2: '上海市普陀区金沙江路 1518 弄',
                    zip: {
                        value: 200333,
                        isShow: false
                    },
}]
tableConfig: [{
                    prop: "date", //对应数据
                    label: "内部订单号", //列名称
                    width: '120', //列宽
                    isShow:true,//是否显示
                    fixed: true, //是否固定
                    sortable: true, //是否排序
                    isSearch: false, //是否下拉搜索
                    template: "hover-modul", //ui模板(hover-modul,label,double,status,default,edit)
}]
  • 8
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值