关于el-table的组件使用

本文介绍了一个名为myTable的子组件,它允许用户自定义表格样式、列配置,支持多选和表格操作列。通过实例展示了如何设置数据、列属性以及响应用户选择事件。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

子组件myTable

<template>
  <el-table
    :data="tableData"
    size="small"
    border
    :cell-style="cellStyle"
    :header-cell-style="headerStyle"
    class="table"
    :max-height="tableHeight"
    @selection-change="handleSelection"
  >
    <el-table-column v-if="showSelection" type="selection" />
    <el-table-column v-for="item in columnList" :key="item.prop" :label="item.label" :prop="item.prop"  :width="item.width?item.width:null" 
    :formatter="item.formatter?item.formatter: null" />
    <!--表格操作列插槽-->
    <slot  name="tableControl" v-if="showTableControl" />
  </el-table>
</template>

<script>
import constants from '~/plugins/constants'
export default {
  name: 'MyTable',
  props: {
  // 表格数据
    tableData: {
      type: Array,
      default: () => []
    },
    // 是否显示多选列表
    showSelection: {
      type: Boolean,
      default: false
    },
    // 列的数据 lable prop等
    columnList: {
      type: Array,
      default: () => []
    },
    // 是否显示表格操作列
    showTableControl: {
		type: Boolean,
		default: false
	}
  },
  data () {
    return {
      tableHeight: 0
    }
  },
  mounted () {
    this.$nextTick(() => {
      this.tableHeight = this.setTableHeight()
    })
  },
  methods: {
  // 设置表格最大高度
  setTableHeight () {
    const table = document.querySelector('.table')
    const top = table.offsetTop
    return window.innerHeight - top - 70
    // return result
  },
    cellStyle () {
      return {
      		textAlign: 'center'
		}
    },
    headerStyle () {
      return {
			textAlign: 'center',
			backGroundColor: 'red'
		}
    },
    handleSelection (val) {
      this.$emit('handleSelection', val)
    }
  }
}
</script>

<style scoped>

</style>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值