vue-element-admin 封装的公共table

该代码示例展示了如何在Vue.js中创建一个带有动态列的表格组件。表格支持图片展示、启用/禁用开关、操作按钮以及时间格式化。每一列的类型可以通过props传递,允许自定义事件处理。
<template>
  <el-table
    :key="tableKey"
    v-loading="loading"
    :data="data"
    border
    fit
    highlight-current-row
    size="mini"
  >
    <el-table-column
      v-for="(item, index) in cols"
      :key="index"
      :label="item.title"
      :prop="item.field"
      :width="item.width"
      :fixed="item.fixed"
      align="center"
      size="mini"
    >
      <template slot-scope="scope">
        <!--          图片-->
        <span v-if="item.type === 'image'">
          <img
            :src="scope.row[item.field]"
            style="cursor: pointer"
            alt="图片"
            height="50"
            width="50"
            @click="item.event(index, scope.row)"
          >
        </span>

        <!--          启用/禁用-->
        <span v-else-if="item.type === 'enable'">
          <el-switch
            v-model="scope.row[item.field]"
            :active-value="1"
            :inactive-value="0"
            name="is_enable"
            @change="item.event(index, scope.row)"
          />
        </span>

        <!--          操作-->
        <el-button-group size="mini" v-else-if="item.type === 'operate'">
          <el-button
            v-for="(operate_item, operate_index) in item.buttons"
            :key="operate_index"
            @click="operate_item.event(index, scope.row)"
            type="primary"
            size="mini"
            round
          >{{ operate_item.name }}</el-button>
        </el-button-group>

        <!--          时间-->
        <span v-else-if="item.type === 'datetime'">{{ scope.row[item.field] | datetimeFormat }}</span>

        <!--          其他-->
        <span v-else>{{ scope.row[item.field] }}</span>
      </template>
    </el-table-column>
  </el-table>
</template>

<script>
import { format } from '@/common/format'
export default {
  name: 'ListTable',
  filters: format,
  props: {
    data: {
      type: Array,
      default() {
        return []
      }
    },
    cols: {
      type: Array,
      default() {
        return []
      }
    },
    loading: {
      type: Boolean,
      default: false
    },
    tableKey: {
      type: Number,
      default: 0
    }
  }
}
</script>

<style scoped>

</style>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值