123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107 |
- <script setup lang="ts">
- import { ContentWrap } from '@/components/ContentWrap'
- import { useI18n } from '@/hooks/web/useI18n'
- import { Table } from '@/components/Table'
- import { getTableListApi } from '@/api/table'
- import { TableData } from '@/api/table/types'
- import { ref, h } from 'vue'
- import { ElTag, ElButton } from 'element-plus'
- import { TableColumn, TableSlotDefault } from '@/types/table'
- interface Params {
- pageIndex?: number
- pageSize?: number
- }
- const { t } = useI18n()
- const columns: TableColumn[] = [
- {
- field: 'index',
- label: t('tableDemo.index'),
- type: 'index'
- },
- {
- field: 'title',
- label: t('tableDemo.title')
- },
- {
- field: 'author',
- label: t('tableDemo.author')
- },
- {
- field: 'display_time',
- label: t('tableDemo.displayTime'),
- sortable: true
- },
- {
- field: 'importance',
- label: t('tableDemo.importance'),
- formatter: (_: Recordable, __: TableColumn, cellValue: number) => {
- return h(
- ElTag,
- {
- type: cellValue === 1 ? 'success' : cellValue === 2 ? 'warning' : 'danger'
- },
- () =>
- cellValue === 1
- ? t('tableDemo.important')
- : cellValue === 2
- ? t('tableDemo.good')
- : t('tableDemo.commonly')
- )
- }
- },
- {
- field: 'pageviews',
- label: t('tableDemo.pageviews')
- },
- {
- field: 'action',
- label: t('tableDemo.action')
- }
- ]
- const loading = ref(true)
- let tableDataList = ref<TableData[]>([])
- const getTableList = async (params?: Params) => {
- const res = await getTableListApi(
- params || {
- pageIndex: 1,
- pageSize: 10
- }
- )
- .catch(() => {})
- .finally(() => {
- loading.value = false
- })
- if (res) {
- tableDataList.value = res.data.list
- }
- }
- getTableList()
- const actionFn = (data: TableSlotDefault) => {
- console.log(data)
- }
- </script>
- <template>
- <ContentWrap :title="t('tableDemo.table')" :message="t('tableDemo.tableDes')">
- <Table
- :columns="columns"
- :data="tableDataList"
- :loading="loading"
- :defaultSort="{ prop: 'display_time', order: 'descending' }"
- >
- <template #action="data">
- <ElButton type="primary" @click="actionFn(data as TableSlotDefault)">
- {{ t('tableDemo.action') }}
- </ElButton>
- </template>
- </Table>
- </ContentWrap>
- </template>
|