vue element table组件+页码pagination组件的组合使用

效果如图:

 

 代码:

<template>
  <div class="equipment">
    <div class="title">
      <div class="titleTop">
        <ul>
          <li>
            <div>装备名称:</div>
            <input class="ListTable_Text">
          </li>
          <li>
            <div>装备类型:</div>
            <input class="ListTable_Text ">
          </li>
          <li>
            <div>应急子类型:</div>
            <input class="ListTable_Text ">
          </li>
          <li>
            <div>距离:</div>
            <input class="ListTable_Text ">
          </li>
          <li> <button>搜索</button></li>
        </ul>
      </div>
    </div>
    <el-table
      :data="listTable"
      size="small"
      :header-cell-style='{"text-align":"center","background":"#054DAD","color":"#fff","border":"none","height":"30px;"}'
      :cell-style='{"text-align":"center","color":"#4BF3F9","border":"none","border-bottom":"1px solid #195fba !important",}'
      class="tableBox"
      :row-class-name="isShowBC"
    >
      <el-table-column
        label=""
        type="selection"
        :selectable='checkboxSelect'
      >
        <el-checkbox></el-checkbox>
      </el-table-column>
      <el-table-column
        type="index"
        label="序号"
      >

      </el-table-column>
      <el-table-column
        align="center"
        prop="equipName"
        label="装备名称"
        show-overflow-tooltip
      ></el-table-column>
      <el-table-column
        align="center"
        prop="equipFormationQuantity"
        label="总数量"
        show-overflow-tooltip
      ></el-table-column>
      <el-table-column
        align="center"
        prop=""
        label="联系人"
        show-overflow-tooltip
      >/</el-table-column>
      <el-table-column
        align="center"
        prop=""
        label="联系电话"
        show-overflow-tooltip
      >/</el-table-column>
      <el-table-column
        align="center"
        prop="equipVillageTown"
        label="所属队伍"
        show-overflow-tooltip
      ></el-table-column>
      <el-table-column
        align="center"
        prop="equipVillageTown"
        label="地址"
        show-overflow-tooltip
      ></el-table-column>
      <el-table-column
        align="center"
        prop="equipVillageTown"
        label="行政区划"
        show-overflow-tooltip
      >
      </el-table-column>
      <el-table-column
        align="center"
        prop=""
        label="直线距离"
        show-overflow-tooltip
      >/
      </el-table-column>
    </el-table>

    <div class="Msgpage">
      <el-pagination
        background
        layout="prev, pager, next"
        :page-size="11"
        :total="total"
        @current-change="pageChange"
      >
      <!-- page-size 每一页页码显示多少条数据 ,pageChange事件 点击页码时触发要触发的回调方法-->
      </el-pagination>
      <div class="MspageTol">共<span>{{total}}条</span></div>
    </div>
  </div>
</template>
<script>
export default {
  data: () => ({
    flag: false,
    total: 0,
    listTable: [],
    totalPage: [],
    pageSize: 10,
    currentPage: 1,
  }),
  mounted() {
    this.getData();
  },
  methods: {
    getData() {
      let params = {
        orgCode: 330881003,
        pageNo: this.currentPage ? this.currentPage : 1,
        pageSize: 11,
        bigType: '',
        name: ''
      }
      this.$api.natureEquipementData(params).then(res => {
        console.log(res);
        this.total = res.total
        this.listTable = res.rows;
      })
    },
    checkboxSelect(row, rowIndex) {

    },
    isShowBC(row) {
      //根据row.index来根据行数改变背景颜色
      if (row.rowIndex % 2 !== 0) {
        return 'bcGround'
      } else {
        return ''
      }
    },
    pageChange(val) {
      //给接口传入当前页码值,并二次请求来更新对应页码的数据
      this.currentPage = val;
      this.getData()
    },
  }
}
</script>
<style lang="less" >
.equipment {
  padding: 0 30px;
  margin-top: 20px;
  .title {
    margin-bottom: 20px;
    .titleTop {
      color: #53e1fd;
      ul {
        list-style: none;
        display: flex;
        justify-content: space-between;
        li {
          display: flex;
          align-items: center;
          div {
            margin-right: 10px;
          }
          button {
            width: 68px;
            height: 30px;
            background: rgba(83, 225, 253, 1);
            border: none;
            cursor: pointer;
          }
        }
      }
    }
    .ListTable_Text {
      width: 110px;
      height: 30px;
      border: 1px solid #2d96ff !important;
      line-height: 38px;
      text-align: left;
      text-indent: 10px;
      background: rgba(45, 150, 255, 0.5);
      outline: 0;
      // caret-color: #58d5e2;
      color: white;
    }
    input::-webkit-input-placeholder {
      color: white;
    }
  }
  .Msgpage {
    display: flex;
    justify-content: right;
    align-items: center;
    margin-top: 16px;
    .el-pager {
      li {
        margin: 0;
        border: 1px solid #195fba;
        background: transparent;
        border-right: 0;
        color: #17a9cc;
        border-right: 0;
        width: 10%;
      }
    }

    .el-pagination {
      button {
        margin: 0;
        border: 1px solid #195fba;
        background: transparent;
        color: #17a9cc;
      }
    }

    .MspageTol {
      line-height: 50px;
      color: #17a9cc;
    }

    .MspageActice {
      background-color: #0c93ff !important;
      color: white;
    }
  }

  .el-icon-arrow-up {
    line-height: 30px;
    color: #22e0fe !important;
  }

  .el-input__inner {
    color: #22e0fe;
    width: 80px !important;
  }

  .bcGround {
    background: #002872 !important;
    border-top: 1px solid #195fba;
    border-bottom: 1px solid #195fba;
  }
  .tableBox {
    tr {
      padding: 0px !important;
      height: 30px;
      background-color: #01194f;
    }
    td {
      padding: 0px !important;
      height: 30px;
    }
    .el-button {
      height: 20px;
      background-color: #01194f;
      border: 1px solid #195fba !important;
      color: #1eceee !important;
      display: flex;
      align-items: center;
      margin-left: 40px;
    }
  }
  .el-table--border::after,
  .el-table--group::after,
  .el-table::before {
    position: absolute;
    z-index: -1111 !important;
  }
  .el-table__empty-block {
    height: 330px !important;
    position: relative;
    background-color: #01194f;
    span {
      position: absolute;
      top: 0;
      bottom: 0;
      left: 0;
      right: 0;
      margin: auto;
      z-index: 999;
      margin-top: 140px;
      color: #19b5d7;
      font-size: 20px;
      font-weight: bold;
    }
  }
  .el-table--enable-row-hover .el-table__body tr:hover > td {
    background-color: #ff99004a;
  }
  .el-table__header th {
    padding: 0;
  }
  .el-table {
    height: 360px;
    background-color: #002872;
  }
}
</style>

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Vue3语法糖使用 ElementUI 实现表格分页的方法与 Vue2 差别不大,主要是在引入 ElementUI 和定义组件的方式上有些不同。 1. 在 setup 引入 ElementUI 组件: ``` import { ref } from 'vue'; import { ElTable, ElTableColumn, ElPagination } from 'element-plus'; export default { setup() { const currentPage = ref(1); // 当前页码 const pageSize = ref(10); // 每页显示条目数 const total = ref(0); // 总条目数 const tableData = ref([]); // 表格数据 const handleCurrentChange = (val) => { currentPage.value = val; getData(); } const getData = async () => { const res = await axios.get('/api/data', { params: { page: currentPage.value, size: pageSize.value } }); tableData.value = res.data.list; total.value = res.data.total; } getData(); return { currentPage, pageSize, total, tableData, handleCurrentChange } }, components: { ElTable, ElTableColumn, ElPagination } } ``` 2. 在 template 使用 ElementUI 组件: ``` <template> <div> <el-pagination :current-page="currentPage" :page-size="pageSize" :total="total" @current-change="handleCurrentChange"> </el-pagination> <el-table :data="tableData" border> <el-table-column prop="name" label="姓名"></el-table-column> <el-table-column prop="age" label="年龄"></el-table-column> <el-table-column prop="address" label="地址"></el-table-column> </el-table> </div> </template> ``` 需要注意的是,Vue3 使用 ElementUI 组件时需要在组件选项声明组件,而不是在 template 通过 import 引入。另外,由于 Vue3 没有了 this,需要使用 ref 来定义响应式数据。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值