12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788 |
- <template>
- <el-table-v2
- :columns="columns"
- :data="data"
- :row-class="rowClass"
- :width="700"
- :height="400"
- />
- </template>
- <script lang="tsx" setup>
- import { ref } from 'vue'
- import dayjs from 'dayjs'
- import {
- ElButton,
- ElIcon,
- ElTag,
- ElTooltip,
- TableV2FixedDir,
- } from 'element-plus'
- import { Timer } from '@element-plus/icons-vue'
- import type { Column, RowClassNameGetter } from 'element-plus'
- let id = 0
- const dataGenerator = () => ({
- id: `random-id-${++id}`,
- name: 'Tom',
- date: '2020-10-1',
- })
- const columns: Column<any>[] = [
- {
- key: 'date',
- title: 'Date',
- dataKey: 'date',
- width: 150,
- fixed: TableV2FixedDir.LEFT,
- cellRenderer: ({ cellData: date }) => (
- <ElTooltip content={dayjs(date).format('YYYY/MM/DD')}>
- {
- <span class="flex items-center">
- <ElIcon class="mr-3">
- <Timer />
- </ElIcon>
- {dayjs(date).format('YYYY/MM/DD')}
- </span>
- }
- </ElTooltip>
- ),
- },
- {
- key: 'name',
- title: 'Name',
- dataKey: 'name',
- width: 150,
- align: 'center',
- cellRenderer: ({ cellData: name }) => <ElTag>{name}</ElTag>,
- },
- {
- key: 'operations',
- title: 'Operations',
- cellRenderer: () => (
- <>
- <ElButton size="small">Edit</ElButton>
- <ElButton size="small" type="danger">
- Delete
- </ElButton>
- </>
- ),
- width: 150,
- align: 'center',
- flexGrow: 1,
- },
- ]
- const data = ref(Array.from({ length: 200 }).map(dataGenerator))
- const rowClass = ({ rowIndex }: Parameters<RowClassNameGetter<any>>[0]) => {
- if (rowIndex % 10 === 5) {
- return 'bg-red-100'
- } else if (rowIndex % 10 === 0) {
- return 'bg-blue-200'
- }
- return ''
- }
- </script>
|