Skip to content
On this page

Table 表格

用于展示多层次结构的数据,可自定义并保持高度灵活。

基础用法

table 表格基本使用示例,需要一个主要的 options 参数。

ID
姓名
地址
电话
1
张三
山东青岛
13812312312
2
李四
山东济南
13812312312
3
王五
北京
13812312312
4
赵六
上海
13812312312
展开查看
vue
<template>
  <tass-table :options="options"></tass-table>
</template>

<script lang="ts" setup>
  import { reactive } from "vue";
  const state = reactive({
      options:{
        fileds:[
          {field:'id',title:'ID',align:'center'},
          {field:'name',title:'姓名',align:'center'},
          {field:'address',title:'地址',align:'center'},
          {field:'telephone',title:'电话',align:'center'}
        ],
        datas:[
          {id:1,name:'张三',address:'山东青岛',telephone:"13812312312"},
          {id:2,name:'李四',address:'山东济南',telephone:"13812312312"},
          {id:3,name:'王五',address:'北京',telephone:"13812312312"},
          {id:4,name:'赵六',address:'上海',telephone:"13812312312"},
        ]
        },
    });
  const { options } = state;
</script>

不同大小

你可以传入一个 size 来确定表格的不同大小,以适配不同的应用场景

small

ID
姓名
地址
电话
1
张三
山东青岛
13812312312
2
李四
山东济南
13812312312
3
王五
北京
13812312312
4
赵六
上海
13812312312

mini

ID
姓名
地址
电话
1
张三
山东青岛
13812312312
2
李四
山东济南
13812312312
3
王五
北京
13812312312
4
赵六
上海
13812312312
展开查看
vue
<template>
  <p>small</p>
  <tass-table :options="options" size="small"></tass-table>
  <p>mini</p>
  <tass-table :options="options" size="mini"></tass-table>
</template>

<script lang="ts" setup>
  import { reactive } from "vue";
  const state = reactive({
    options:{
        fileds:[
          {field:'id',title:'ID',align:'center'},
          {field:'name',title:'姓名',align:'center'},
          {field:'address',title:'地址',align:'center'},
          {field:'telephone',title:'电话',align:'center'}
        ],
        datas:[
          {id:1,name:'张三',address:'山东青岛',telephone:"13812312312"},
          {id:2,name:'李四',address:'山东济南',telephone:"13812312312"},
          {id:3,name:'王五',address:'北京',telephone:"13812312312"},
          {id:4,name:'赵六',address:'上海',telephone:"13812312312"},
        ]
    }
  });
  const { options } = state;
</script>

自定义插槽内容

根据需要自定义表格的插槽内容,插槽接受需要定义表格列的 field 并返回当前行的数据 rowItem ,如果是定义表头,需要在插槽名加上 head- 前缀作为识别符

ID
姓名
地址
电话
操作
1
张三
山东青岛
13812312312
2
李四
山东济南
13812312312
3
王五
北京
13812312312
4
赵六
上海
13812312312
展开查看
vue
<template>
  <tass-table :options="options">
    <template #id="item">
      <div style="color: #008dff">{{ item.scope.row.id }}</div>
    </template>
    <template #action="item">
      <tass-button type="primary" size="small" :disabled="item.scope.rowIndex % 2 == 0" >编辑</tass-button >
      <tass-button type="danger" size="small" >删除</tass-button >
    </template>
  </tass-table>
</template>

<script lang="ts" setup>
  import { reactive } from "vue";
  const state = reactive({
    options:{
        fileds:[
          {field:'id',title:'ID',align:'center'},
          {field:'name',title:'姓名',align:'center'},
          {field:'address',title:'地址',align:'center'},
          {field:'telephone',title:'电话',align:'center'},
          {field:'action',title:'操作',align:'center'}
        ],
        datas:[
          {id:1,name:'张三',address:'山东青岛',telephone:"13812312312"},
          {id:2,name:'李四',address:'山东济南',telephone:"13812312312"},
          {id:3,name:'王五',address:'北京',telephone:"13812312312"},
          {id:4,name:'赵六',address:'上海',telephone:"13812312312"},
        ]
    }
  });
  const dropchange = (item, index) => {
    console.log(item, index);
  };
  const { options, dorpoptions } = state;
</script>

自定义表头及表格样式

使用 headStyle 自定义表头的样式,使用 rowStyle 自定义表格内容区域的样式

ID
姓名
地址
电话
1
张三
山东青岛
13812312312
2
李四
山东济南
13812312312
3
王五
北京
13812312312
4
赵六
上海
13812312312
展开查看
vue
<template>
  <tass-table :options="options" :headStyle="headStyle" :rowStyle="rowStyle" size="mini" ></tass-table>
</template>

<script lang="ts" setup>
  import { reactive, ref } from "vue";
  const state = reactive({
    options:{
        fileds:[
          {field:'id',title:'ID',align:'center'},
          {field:'name',title:'姓名',align:'center'},
          {field:'address',title:'地址',align:'center'},
          {field:'telephone',title:'电话',align:'center'},
        ],
        datas:[
          {id:1,name:'张三',address:'山东青岛',telephone:"13812312312"},
          {id:2,name:'李四',address:'山东济南',telephone:"13812312312"},
          {id:3,name:'王五',address:'北京',telephone:"13812312312"},
          {id:4,name:'赵六',address:'上海',telephone:"13812312312"},
        ]
    },
    headStyle: {
      color: "#fff",
      borderColor: "#855E42",
      backgroundColor: "#9090c0",
    },
    rowStyle: {
      borderColor: "#855E42",
    },
  });
  const { options, headStyle, rowStyle } = state;
</script>

Released under the MIT License.