element封装表格
<template>
<div>
<el-scrollbar class="table-wrap">
<el-table
v-loading="loading"
:data="tableData"
:height="height"
:stripe="stripe"
:border="border"
:max-height="maxHeight"
:header-cell-style="tabHeadStyle"
:cell-style="tabcellStyle"
:row-style="rowStyle"
style="width: 100%"
@selection-change="handleSelectionChange"
>
<!-- 多选 -->
<el-table-column
v-if="isSelection"
type="selection"
align="center"
:is-selection="selectable"
/>
<!-- 索引 -->
<el-table-column
v-if="isIndex"
:label="indexLabel"
type="index"
align="center"
width="50"
/>
<template v-for="(item, index) in tableCols">
<!-- 合并单元格 -->
<el-table-column
v-if="item.type == 'table_column'"
:key="index"
:label="item.label"
:width="item.width"
:min-width="item['min-width']"
:fixed="item.fixed"
:align="item.align"
:header-align="item['header-align'] || 'left'"
:show-overflow-tooltip="item['show-overflow-tooltip'] || true"
>
<!-- <el-table-column
v-for="(itema, index) in item.prop"
:key="index"
:label="itema.label"
:prop="itema.prop"
:width="itema.width"
:min-width="itema['min-width']"
:fixed="itema.fixed"
:align="itema.align"
:header-align="itema['header-align'] || 'left'"
:show-overflow-tooltip="itema['show-overflow-tooltip'] || true"
>
<template v-if="itema.slot" slot-scope="scope" :name="itema.slot">
<slot :name="itema.slot" :row="scope.row" />
</template>
</el-table-column> -->
<el-table-column
v-for="(itema, index) in item.prop"
:key="index"
:label="itema.label"
:prop="itema.prop"
:width="itema.width"
:min-width="itema['min-width']"
:fixed="itema.fixed"
:align="itema.align"
:header-align="itema['header-align'] || 'left'"
:show-overflow-tooltip="itema['show-overflow-tooltip'] || true"
/>
</el-table-column>
<!-- 需要插槽 -->
<el-table-column
v-if="item.slot && !item.type"
:key="index"
:label="item.label"
:prop="item.prop"
:width="item.width"
:min-width="item['min-width']"
:fixed="item.fixed"
:align="item.align"
:header-align="item['header-align'] || 'left'"
:show-overflow-tooltip="item['show-overflow-tooltip'] || true"
>
<template v-if="item.slot" slot-scope="scope" :name="item.slot">
<slot :name="item.slot" :row="scope.row" />
</template>
</el-table-column>
<!--不需要插槽-->
<el-table-column
v-if="!item.slot && !item.type"
:key="index"
:label="item.label"
:prop="item.prop"
:width="item.width"
:min-width="item['min-width']"
:fixed="item.fixed"
:align="item.align"
:header-align="item['header-align'] || 'left'"
:show-overflow-tooltip="item['show-overflow-tooltip'] || true"
/>
</template>
</el-table>
</el-scrollbar>
<el-pagination
v-if="pagInationIf"
:current-page="pagInation.pageNum"
:total="pagInation.count"
:page-size="pagInation.pageSize"
layout="prev, pager, next,total"
background
@current-change="handleCurrentChange"
/>
</div>
</template> <script type="text/ecmascript-6">
export default {
name: 'SirTable',
props: {
// 加载状态
loading: { type: Boolean, default: false },
// 表格列配置
tableCols: { type: [Array], default: () => [] },
// 表格内数据
tableData: { type: [Array], default: () => [] },
// 表格是否显示斑马线
stripe: { type: [Boolean, String], default: false },
// 表格边框
border: { type: [Boolean, String], default: false },
height: { type: [Number, String], default: null },
// 最大高度
maxHeight: { type: [Number, String], default: null },
// 是否显示表格复选框
isSelection: { type: [Boolean], default: false },
// 是否显示表格索引
isIndex: { type: Boolean, default: true },
// 索引lable
indexLabel: { type: String, default: '序号' },
// 分页数据
pagInation: { type: Object, default: () => ({ pageSize: 10, pageNo: 1, total: 0 }) },
pagInationIf: { type: [Boolean], default: true },
},
data() {
return {
// 表头样式
tabHeadStyle: {
'background-color': '#FAFAFA',
color: '#333333', 'font-weight': 'bold'
},
// 行样式
tabcellStyle: {
color: '#666'
},
rowStyle: {
height: '50px'
}
}
},
methods: {
// 据条件禁用某个列表项的选择框
selectable(row) {
if ((row.prohibit == null) || (row.prohibit == '')) {
return true
} else {
return false
}
},
// 多选事件,保存选择项到指定参数
handleSelectionChange(val) {
this.$emit('checkbox-data', val)
},
// 翻页触发
handleCurrentChange(val) {
this.pagInation.pageNum = val
this.$emit('refresh', this.pagInation) }
}
}
</script> <style lang="scss" scoped>
.el-table td {
/*min-height: 40px;*/
/*padding: 0 !important;*/
}
/deep/.el-table--enable-row-transition .el-table__body td {
min-height: 40px;
padding: 0;
}
/deep/.el-scrollbar__wrap {
height: $tableCalc;
}
/*分页*/
.el-pagination {
float: right;
margin-top: 25px;
}
/deep/.el-pagination.is-background {
.number,
.btn-prev,
.btn-next {
background-color: #fff;
border: 1px solid #ebedf0;
}
.el-pager li {
background-color: #fff;
}
}
/deep/.el-pagination.is-background .el-pager li:not(.disabled):hover {
color: #499bfc;
}
/deep/.el-pagination.is-background .el-pager li:not(.disabled).active {
background-color: #499bfc;
color: #fff;
}
</style>
element封装表格的更多相关文章
- element el-table表格的vue组件二次封装(附表格高度自适应)
基于vue的el-table表格二次封装组件方法 前言 在公司实习使用vue+element-ui框架进行前端开发,使用表格el-table较为多,有些业务逻辑比较相似,有些地方使用的重复性高,如果多 ...
- 前端枚举enum的应用(Element)封装
什么是枚举Enum 枚举 Enum是在众多语言中都有的一种数据类型,JavaScript中还没有(TypeScript有).用来表示一些特定类别的常量数据,如性别.学历.方向.账户状态等,项目开发中是 ...
- element ui 表格提交时获取所有选中的checkbox的数据
<el-table ref="multipleTable" :data="appList" @selection-change="changeF ...
- 封装一个优雅的element ui表格组件
现在做后台系统用vue + elementUI 的越来越多,那element ui的 el-table 组件肯定也离不开.虽然element ui的table组件很好.但是表格和分页是分离的.每次写表 ...
- vue2.0+Element UI 表格前端分页和后端分页
之前写过一篇博客,当时对element ui框架还不太了解,分页组件用 html + css 自己写的,比较麻烦,而且只提到了后端分页 (见 https://www.cnblogs.com/zdd20 ...
- vue + element ui 表格自定义表头,提供线上demo
前言:工作中用到 vue+element ui 的前端框架,需要使用自定义表头,需要使用 re.转载请注明出处:https://www.cnblogs.com/yuxiaole/p/9710826.h ...
- Element UI表格组件技巧:如何简洁实现跨页勾选、跨页统计功能
业务场景 在使用Element UI的Table组件时,常常面对这样的业务需求: 表格数据的每一项都要提供勾选框,当切换分页时,能够记忆所有页面勾选的数据,以实现批量提交不同页面勾选数据的功能.并且, ...
- element UI表格行高、padding等设置报错问题
element UI里面表格的行高需要自己调整高度和设置padding,直接写style是不行的,里面有 : 1.row-style (行的 style) 2.header-row-styl (表 ...
- 手把手教学~基于element封装tree树状下拉框
在日常项目开发中,树状下拉框的需求还是比较常见的,但是element并没有这种组件以供使用.在这里,小编就基于element如何封装一个树状下拉框做个详细的介绍. 通过这篇文章,你可以了解学习到一个树 ...
随机推荐
- C#LeetCode刷题之#342-4的幂(Power of Four)
问题 该文章的最新版本已迁移至个人博客[比特飞],单击链接 https://www.byteflying.com/archives/4058 访问. 给定一个整数 (32 位有符号整数),请编写一个函 ...
- JavaScript apply使用
call 和 apply 作用: 都是为了改变某个函数运行的context上下文而存在的,为了改变函数体内部 this的指向 JavaScript函数存在定义时上下文和运行时上下文, 上下文(cont ...
- golang 设计模式
前言 不做文字的搬运工,多做灵感性记录 这是平时学习总结的地方,用做知识库 平时看到其他文章的相关知识,也会增加到这里 随着学习深入,会进行知识拆分和汇总,所以文章会随时更新 参考的文章过多.很杂很乱 ...
- 用Python爬取股票数据,绘制K线和均线并用机器学习预测股价(来自我出的书)
最近我出了一本书,<基于股票大数据分析的Python入门实战 视频教学版>,京东链接:https://item.jd.com/69241653952.html,在其中用股票范例讲述Pyth ...
- Linux内核之 内核同步
上文我们介绍过进程调度,Linux内核从2.6版本开始支持内核抢占,所以内核很多代码也需要同步保护. 一.同步介绍 1.临界区与竞争条件 所谓临界区(critical regions)就是访问和操作共 ...
- 关于初次使用Thymeleaf遇到的问题 2020-08-11
关于初次使用Thymeleaf遇到的问题 环境: IDEA :2020.1 Maven:3.5.6 SpringBoot: 2.3.2 原做法: 按照视频教程,导入依赖,并修改报的版本为3.0.9,适 ...
- CODING DevOps 微服务项目实战系列最后一课,周四开讲!
随着软件工程越来越复杂化,如何在 Kubernetes 集群进行灰度发布成为了生产部署的"必修课",而如何实现安全可控.自动化的灰度发布也成为了持续部署重点关注的问题.CODING ...
- css3 属性 text-overflow 实现截取多余文字内容 以省略号来代替多余内容
css3 属性 text-overflow: ellipsis 前言 正文 结束语 前言 我们在设计网站的时候有时会遇到这样一个需求:因为页面空间大小的问题,需要将多余的文字隐藏起来,并以省略号代替, ...
- 团队作业3:需求改进&系统设计
一.需求&原型改进: 1.1 选题需求改进 用户:同学你好,有什么事我们能帮到你 我:我要说的事……(咽口水)你们千万别害怕 用户:我们是杠精,我们不会怕,您请说 我:我们要做一个roguel ...
- 第三篇 Scrum冲刺博客
一.会议图片 二.项目进展 成员 完成情况 今日任务 冯荣新 商品列表,商品详情轮播图 商品底部工具栏,购物车列表 陈泽佳 历史足迹,静态页面 渲染搜索结果,防抖的实现 徐伟浩 未完成 商品信息录入 ...