el-table实现动态表头,自定义斑马纹等功能

这篇具有很好参考价值的文章主要介绍了el-table实现动态表头,自定义斑马纹等功能。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

需求:1.根据选择的日期时间,实现表头的动态显示功能

           2.修改默认表头灰色样式,

           3.斑马纹偶数灰色改为奇数为灰色

           4.表格某一行加分割线区分

1.效果

el-table实现动态表头,自定义斑马纹等功能,vue,vue.js,elementui,javascript

 2.动态表格实现

1.height:表格的高度设置,内容超出后会显示滚动条,高度固定

2.:row-class-name:行类名,用作设置斑马纹

这俩个就是时间了一个开始一个结束时间,在表头显示

  <div v-if="scope.column.property === 'start' && contrastTime.length > 0">
                            {{ startdata }}
                        </div>
                        <div v-else-if="scope.column.property === 'end' && contrastTime.length > 0">
                            {{ enddata }}
                        </div>

1.type="datetimerange":表示是时间日期选择器

2.:picker-options="pickerOptions",给选择器加上个快捷的日期选项,最近一周,最近一个月,最近三个月

3.    value-format="yyyy-MM-dd HH:mm:ss",选择好后自动把时间和日期改为"yyyy-MM-dd HH:mm:ss这种格式

  <el-date-picker
                    v-model="contrastTime"
                    type="datetimerange"
                    align="right"
                    range-separator="至"
                    start-placeholder="开始日期"
                    end-placeholder="结束日期"
                    @change="updateTableHeader"
                    :picker-options="pickerOptions"
                    value-format="yyyy-MM-dd HH:mm:ss"
                ></el-date-picker>

斑马纹根据行的index来选择奇数或者偶数的类名是什么

       setRowClassName({ rowIndex }) {
            return rowIndex % 2 === 0 ? 'even-row' : 'odd-row';
        },

3.完整代码

<!--
 * @Descripttion: el-table实现动态表头,自定义斑马纹等功能
 * @Author: 叫我欧皇大人
 * @email: 13071200550@163.com
 * @Date: 2023-07-14 
-->
<template>
    <div class="content-box">
        <div class="container">
            <div class="header">
                <el-date-picker
                    v-model="contrastTime"
                    type="datetimerange"
                    align="right"
                    range-separator="至"
                    start-placeholder="开始日期"
                    end-placeholder="结束日期"
                    @change="updateTableHeader"
                    :picker-options="pickerOptions"
                    value-format="yyyy-MM-dd HH:mm:ss"
                ></el-date-picker>
            </div>

            <el-table :data="tableData" height="calc(100vh - 64px - 130px - 200px)" :row-class-name="setRowClassName">
                <el-table-column
                    v-for="(header, index) in tableHeaders"
                    :key="header.prop"
                    :prop="header.prop"
                    :label="header.label"
                    :width="header.width"
                    align="center"
                >
                    <template slot="header" slot-scope="scope">
                        <div>{{ header.label }}</div>
                        <div v-if="scope.column.property === 'start' && contrastTime.length > 0">
                            {{ startdata }}
                        </div>
                        <div v-else-if="scope.column.property === 'end' && contrastTime.length > 0">
                            {{ enddata }}
                        </div>
                    </template>
                </el-table-column>
            </el-table>
        </div>
    </div>
</template>

<script>
export default {
    data() {
        return {
            startdata: '',
            enddata: '',
            tableData: [
                { name: '数据1', start: 'A-B-C', end: '结束数据', age: 18 },
                { name: '数据1', start: 'A-B-C', end: '结束数据', age: 18 },
                { name: '数据1', start: 'A-B-C', end: '结束数据', age: 18 },
                { name: '数据1', start: 'A-B-C', end: '结束数据', age: 18 }
            ],
            tableHeaders: [
                { prop: 'name', label: '姓名', width: '200' },
                { prop: 'start', label: '开始', width: '200' },
                { prop: 'end', label: '结束', width: '200' },
                { prop: 'age', label: '年龄', width: '80' }
            ],
            contrastTime: [],
            pickerOptions: {
                shortcuts: [
                    {
                        text: '最近一周',
                        onClick(picker) {
                            const end = new Date();
                            const start = new Date();
                            start.setTime(start.getTime() - 3600 * 1000 * 24 * 7);
                            picker.$emit('pick', [start, end]);
                        }
                    },
                    {
                        text: '最近一个月',
                        onClick(picker) {
                            const end = new Date();
                            const start = new Date();
                            start.setTime(start.getTime() - 3600 * 1000 * 24 * 30);
                            picker.$emit('pick', [start, end]);
                        }
                    },
                    {
                        text: '最近三个月',
                        onClick(picker) {
                            const end = new Date();
                            const start = new Date();
                            start.setTime(start.getTime() - 3600 * 1000 * 24 * 90);
                            picker.$emit('pick', [start, end]);
                        }
                    }
                ]
            }
        };
    },
    mounted() {},
    methods: {
        // 斑马纹
        setRowClassName({ rowIndex }) {
            return rowIndex % 2 === 0 ? 'even-row' : 'odd-row';
        },
        updateTableHeader() {
            this.startdata = this.contrastTime[0];
            this.enddata = this.contrastTime[1];
        }
    }
};
</script>

<style lang="scss" scoped>
.header {
    margin-bottom: 50px;
    margin-left: 300px;
}
/deep/ .el-table thead th {
    background-color: #fff !important;
    color: #000000;
    font-weight: bold;
}
// 斑马纹
/deep/ .even-row {
    background-color: #f5f5f5; /* 偶数行为灰色 */
}

/deep/ .odd-row {
    background-color: #fff; /* 奇数行为白色 */
}
// 给表格加竖线
/deep/ .el-table tbody tr td:nth-child(1) {
    border-right: 1px solid #e2e3e6;
}
</style>

文章到此结束,希望对你有所帮助~文章来源地址https://www.toymoban.com/news/detail-562952.html

到了这里,关于el-table实现动态表头,自定义斑马纹等功能的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包