table.md 5.64 KB

Table 表格

拓展ElementUI的el-table

6a3e9fa03a9e62888fd3096196dcc68e3e3bb90a/examples/views/docs/component/table.md#">基础用法

基本参数与ElementUI的el-table相同。

::: snippet 支持来自表单的size继承

<template>
  <el-form size="mini">
    <eagle-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="gender" label="性别"></el-table-column>
    </eagle-table>
  </el-form>
</template>

<script>
export default {
  data() {
    return {
      tableData: [
        { name: '张三', age: '31', gender: '男' },
        { name: '李四', age: '27', gender: '女' },
        { name: '王五', age: '16', gender: '男' },
      ],
    };
  },
}
</script>

:::

6a3e9fa03a9e62888fd3096196dcc68e3e3bb90a/examples/views/docs/component/table.md#">配置项

可以通过配置项列表快速生成表格列

::: snippet 设置columns配置表格列,插槽header-列字段名可自定义表头的内容,插槽cell-列字段名可自定义列单元格的内容。

<template>
  <eagle-table :data="tableData" border size="small" :columns="columns">
    <template #header-age>年龄 <i class="el-icon-question"></i></template>
    <template #cell-gender="{ value }">
      <el-tag size="mini">{{ value }}</el-tag>
    </template>
  </eagle-table>
</template>

<script>
export default {
  data() {
    return {
      tableData: [
        { name: '张三', age: '31', gender: '男' },
        { name: '李四', age: '27', gender: '女' },
        { name: '王五', age: '16', gender: '男' },
      ],
      columns: [
        { prop: 'name', label: '姓名' },
        { prop: 'age', label: '年龄' },
        { prop: 'gender', label: '性别' },
      ]
    };
  },
}
</script>

:::

6a3e9fa03a9e62888fd3096196dcc68e3e3bb90a/examples/views/docs/component/table.md#">追加列

使用配置项时,新增的列则默认追加在配置项列之后,使用left插槽可在表格的最左侧插入列,顺序在配置项列之前

::: snippet 设置columns配置表格列,插槽header-列字段名可自定义表头的内容,插槽cell-列字段名可自定义列单元格的内容。

<template>
  <eagle-table :data="tableData" border size="small" :columns="columns">
    <template #left>
      <el-table-column type="selection" width="40"></el-table-column>
      <el-table-column label="左侧的列">
        <template #default="{ $index }">
          内容 {{ $index }}
        </template>
      </el-table-column>
    </template>
    <el-table-column label="新增的列" width="80">
      <template #default>
        <el-button type="text">编辑</el-button>
      </template>
    </el-table-column>
  </eagle-table>
</template>

<script>
export default {
  data() {
    return {
      tableData: [
        { name: '张三', age: '31', gender: '男' },
        { name: '李四', age: '27', gender: '女' },
        { name: '王五', age: '16', gender: '男' },
      ],
      columns: [
        { prop: 'name', label: '姓名' },
        { prop: 'age', label: '年龄' },
        { prop: 'gender', label: '性别' },
      ]
    };
  },
}
</script>

:::

6a3e9fa03a9e62888fd3096196dcc68e3e3bb90a/examples/views/docs/component/table.md#">可编辑表格

一般用于表格的静态数据编辑,设置editable开启可编辑模式,设置clickable开启双击编辑

::: snippet 编辑功能只支持通过columns配置的列,editable设置该列是否可编辑,默认开启;插槽editor-列字段名可自定义列单元格的编辑器,通过解构作用域插槽获取的valueonInput改变表格的绑定值,不支持直接写v-model

<template>
  <div>
    <eagle-form span="6">
      <eagle-form-item>编辑模式:<el-switch v-model="editable"></el-switch></eagle-form-item>
      <eagle-form-item>编辑全部:<el-switch v-model="editall"></el-switch></eagle-form-item>
      <eagle-form-item>双击编辑:<el-switch v-model="clickable"></el-switch></eagle-form-item>
    </eagle-form>
    <eagle-table v-model="tableData" size="mini" :editable="editable" :columns="columns" border :clickable="clickable" @cell-edit-confirm="onCellEditConfirm" :editall="editall">
      <template #editor-gender="{ value, onInput, index }">
        <el-radio-group size="mini" :value="value" @input="onInput">
          <el-radio-button label="男">男</el-radio-button>
          <el-radio-button label="女">女</el-radio-button>
        </el-radio-group>
      </template>
      <template #cell-gender="{ value }">
        <el-tag size="mini" type="info" disable-transitions>{{ value }}</el-tag>
      </template>
      <el-table-column label="操作" width="80">
        <template #default="{ $index }">
          <el-button type="text" @click="deleteRow($index)">删除</el-button>
        </template>
      </el-table-column>
    </eagle-table>
  </div>
</template>

<script>
export default {
  data() {
    return {
      editall: false,
      editable: true,
      clickable: true,
      tableData: [
        { name: '张三', age: 31, gender: '男', remark: '' },
        { name: '李四', age: 27, gender: '女', remark: '' },
        { name: '王五', age: 16, gender: '男', remark: '' },
      ],
      columns: [
        { prop: 'name', label: '姓名', editable: false },
        { component: 'el-input-number', prop: 'age', label: '年龄' },
        { prop: 'gender', label: '性别' },
        { prop: 'remark', label: '备注' },
      ]
    };
  },
  methods: {
    deleteRow(index) {
      this.tableData.splice(index, 1);
    },
    onCellEditConfirm(data) {
      console.log(data);
    }
  }
}
</script>

:::

API

Attribute 属性

参数|说明|类型|可选值|默认值 -|-|-|-|- data | 表格数据 | Array | - | - value | 表格数据(支持v-model) | Array | - | [] columns | 表格列配置 | Array | - | [] type | 表格类型 | String | normal、editable | normal