element纯前端table分页

本文介绍了使用Vue.js和ElementUI构建的一个应用,展示了一舟储能设备的峰谷收益统计数据,通过表格形式呈现了输入电量、成本、收益等关键指标,实现了分页浏览功能。
摘要由CSDN通过智能技术生成

 

<template>
    <div class="boxs">
        <div class="close" @click="closeShow()"><img src="./image/close.png"></div>
        <div class="title">一舟储能峰谷收益统计数据</div>
        <div class="box">
            <div style="position: relative;width: 100%;height: 100%;">
                <el-table border :data="tableData.slice(startIndex, endIndex)" style="width: 100%">
                    <el-table-column width="100" prop="data1" label="统计时间">
                    </el-table-column>
                    <el-table-column prop="data2" label="储能输入电量">
                    </el-table-column>
                    <el-table-column prop="data3" label="储能输入成本">
                    </el-table-column>
                    <el-table-column prop="data4" label="储能输入电量">
                    </el-table-column>
                    <el-table-column prop="data5" label="储能输出收益">
                    </el-table-column>
                    <el-table-column prop="data6" label="充电次数">
                    </el-table-column>
                    <el-table-column prop="data7" label="放电次数">
                    </el-table-column>
                    <el-table-column prop="data8" label="尖充电量">
                    </el-table-column>
                    <el-table-column prop="data9" label="峰充电量">
                    </el-table-column>
                    <el-table-column prop="data10" label="平充电量">
                    </el-table-column>
                    <el-table-column prop="data11" label="谷充电量">
                    </el-table-column>
                    <el-table-column prop="data12" label="尖放电量">
                    </el-table-column>
                    <el-table-column prop="data13" label="峰放电量">
                    </el-table-column>
                    <el-table-column prop="data14" label="平放电量">
                    </el-table-column>
                    <el-table-column prop="data15" label="谷放电量">
                    </el-table-column>
                    <el-table-column prop="data16" label="电池峰谷价差收益">
                    </el-table-column>
                </el-table>
                <el-pagination style="position: absolute;left: 50%;transform: translateX(-50%);bottom: 20px;" background
                    layout="prev, pager, next" :total="tableData.length" :page-size="pageSize"
                    @current-change="handlePageChange">
                </el-pagination>
            </div>
        </div>
    </div>
</template>

<script>
export default {
    name: 'App',
    data() {
        return {
            tableData: [],   //表格数据
            currentPage: 1,  //正在第几页
            pageSize: 12,    //每页数量
            totalDataCount: 0 //总页码数
        }
    },
    components: {

    },
    methods: {
        closeShow() {
            this.$emit('showClose2');
        },
        getData() {
            var tableData = [];
            for (var i = 0; i < 200; i++) {
                var data = {
                    data1: '202308' + (i + 1).toString().padStart(2, '0'),
                    data2: (Math.random() * 100).toFixed(1),
                    data3: (Math.random() * 30).toFixed(2),
                    data4: (Math.random() * 60).toFixed(1),
                    data5: (Math.random() * 20).toFixed(2),
                    data6: (Math.random() * 1).toFixed(1),
                    data7: (Math.random() * 1).toFixed(1),
                    data8: (Math.random() * 1).toFixed(1),
                    data9: (Math.random() * 1).toFixed(1),
                    data10: (Math.random() * 1).toFixed(1),
                    data11: (Math.random() * 100).toFixed(1),
                    data12: (Math.random() * 1).toFixed(1),
                    data13: (Math.random() * 20).toFixed(1),
                    data14: (Math.random() * 40).toFixed(1),
                    data15: (Math.random() * 1).toFixed(1),
                    data16: (Math.random() * -10).toFixed(2)
                };
                tableData.push(data);
            }
            this.tableData = tableData;
            this.totalDataCount = Math.ceil(this.tableData.length / this.pageSize);
        },
        handlePageChange(currentPage) {
            this.currentPage = currentPage;
        }
    },
    computed: {
        startIndex() {
            return (this.currentPage - 1) * this.pageSize;
        },
        endIndex() {
            return this.currentPage * this.pageSize;
        }
    },
    mounted() {
        this.getData()
    },
}
</script>

<style scoped lang="less">
.close {
    cursor: pointer;
    position: absolute;
    right: -18px;
    top: -20px;
    z-index: 9999;
}

@font-face {
    font-family: 'digifaw';
    src: url('../../font/digifaw.ttf') format('woff2'),
        url('../../font/digifaw.ttf') format('woff');
    font-weight: normal;
    font-style: normal;
}

.digifaw {
    font-family: digifaw !important;
    font-size: 28px !important;
}

.boxs {
    position: absolute;
    z-index: 999;
    top: 53%;
    left: 50%;
    transform: translate(-50%, -50%);
    width: 1364.5px;
    height: 842px;
    background: url("../../images/tjTable.png");
    background-size: contain;
}

.title {
    position: absolute;
    display: flex;
    align-items: center;
    justify-content: left;
    left: 44%;
    transform: translateX(-50%);
    width: 77.3%;
    height: 55px;
    top: 23px;
    color: #fff;
    font-size: 16px;
}

.box {
    position: absolute;
    left: 50%;
    transform: translateX(-50%);
    background-color: green;
    width: 95.3%;
    height: 86%;
    top: 94px;
    overflow-y: auto;
}
</style> 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
要实现前端报表分页,可以使用JavaScript来操作DOM元素,根据每页显示的数据量和总数据量,计算出需要显示多少页,然后根据当前页码,动态生成对应的分页按钮。 具体实现步骤如下: 1. 定义每页显示的数据量和当前页码。 2. 根据总数据量和每页显示的数据量,计算出共有多少页。 3. 动态生成分页按钮,通过添加、删除HTML元素来实现。 4. 监听分页按钮的点击事件,根据点击的按钮来切换当前页码。 5. 根据当前页码,计算出需要显示的数据范围,在HTML中动态生成相应的数据。 以下是一个简单的示例代码,供参考: ```javascript // 定义每页显示的数据量和当前页码 var pageSize = 10; var currentPage = 1; // 假设有100条数据 var total = 100; // 根据总数据量和每页显示的数据量,计算出共有多少页 var pageCount = Math.ceil(total / pageSize); // 动态生成分页按钮 for (var i = 1; i <= pageCount; i++) { var btn = document.createElement("button"); btn.innerText = i; btn.onclick = function() { currentPage = parseInt(this.innerText); renderTable(); } document.getElementById("page-buttons").appendChild(btn); } // 根据当前页码,计算出需要显示的数据范围 function getRange() { var start = (currentPage - 1) * pageSize; var end = Math.min(start + pageSize, total); return {start: start, end: end}; } // 在HTML中动态生成相应的数据 function renderTable() { var range = getRange(); for (var i = range.start; i < range.end; i++) { var row = document.createElement("tr"); var cell1 = document.createElement("td"); cell1.innerText = "Data " + i; row.appendChild(cell1); document.getElementById("data-table").appendChild(row); } } // 初始化页面 renderTable(); ``` 在HTML中,需要有一个用于显示数据的表格,以及一个用于显示分页按钮的容器。示例代码中,我们将数据表格的ID设置为"data-table",将分页按钮容器的ID设置为"page-buttons"。你可以根据实际情况进行修改。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

web网页精选

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

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

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

打赏作者

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

抵扣说明:

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

余额充值