feat: 添加 @pureadmin/table 表格动态列示例

This commit is contained in:
xiaoxian521 2022-12-09 22:31:10 +08:00
parent 3933f34883
commit 60e33f3782
3 changed files with 51 additions and 9 deletions

View File

@ -16,7 +16,7 @@ export const list = [
{ {
key: "page", key: "page",
content: rendContent("page"), content: rendContent("page"),
title: "分页、加载动画", title: "分页、加载动画、动态列",
component: Page component: Page
}, },
{ {

View File

@ -6,19 +6,25 @@ import type { PaginationProps, LoadingConfig, Align } from "@pureadmin/table";
export function useColumns() { export function useColumns() {
const dataList = ref([]); const dataList = ref([]);
const loading = ref(true); const loading = ref(true);
const hideVal = ref("nohide");
const tableSize = ref("default");
const paginationSmall = ref(false);
const paginationAlign = ref("right"); const paginationAlign = ref("right");
const columns: TableColumnList = [ const columns: TableColumnList = [
{ {
label: "日期", label: "日期",
prop: "date" prop: "date",
hide: () => (hideVal.value === "hideDate" ? true : false)
}, },
{ {
label: "姓名", label: "姓名",
prop: "name" prop: "name",
hide: () => (hideVal.value === "hideName" ? true : false)
}, },
{ {
label: "地址", label: "地址",
prop: "address" prop: "address",
hide: () => (hideVal.value === "hideAddress" ? true : false)
} }
]; ];
@ -29,7 +35,8 @@ export function useColumns() {
pageSizes: [10, 15, 20], pageSizes: [10, 15, 20],
total: 0, total: 0,
align: "right", align: "right",
background: true background: true,
small: false
}); });
/** 加载动画配置 */ /** 加载动画配置 */
@ -50,6 +57,10 @@ export function useColumns() {
// background: rgba() // background: rgba()
}); });
function onChange(val) {
pagination.small = val;
}
function onSizeChange(val) { function onSizeChange(val) {
console.log("onSizeChange", val); console.log("onSizeChange", val);
} }
@ -82,9 +93,13 @@ export function useColumns() {
loading, loading,
columns, columns,
dataList, dataList,
hideVal,
tableSize,
pagination, pagination,
loadingConfig, loadingConfig,
paginationAlign, paginationAlign,
paginationSmall,
onChange,
onSizeChange, onSizeChange,
onCurrentChange onCurrentChange
}; };

View File

@ -5,9 +5,13 @@ const {
loading, loading,
columns, columns,
dataList, dataList,
hideVal,
tableSize,
pagination, pagination,
loadingConfig, loadingConfig,
paginationAlign, paginationAlign,
paginationSmall,
onChange,
onSizeChange, onSizeChange,
onCurrentChange onCurrentChange
} = useColumns(); } = useColumns();
@ -15,22 +19,45 @@ const {
<template> <template>
<div> <div>
<el-space class="float-right mb-2"> <el-space class="float-right mb-4">
<p>分页的对齐方式</p> <p class="text-sm">动态列</p>
<el-radio-group v-model="paginationAlign"> <el-radio-group v-model="hideVal" size="small">
<el-radio-button label="nohide">不隐藏</el-radio-button>
<el-radio-button label="hideDate">隐藏日期</el-radio-button>
<el-radio-button label="hideName">隐藏姓名</el-radio-button>
<el-radio-button label="hideAddress">隐藏地址</el-radio-button>
</el-radio-group>
<el-divider direction="vertical" />
<p class="text-sm">表格大小</p>
<el-radio-group v-model="tableSize" size="small">
<el-radio-button label="large">large</el-radio-button>
<el-radio-button label="default">default</el-radio-button>
<el-radio-button label="small">small</el-radio-button>
</el-radio-group>
<el-divider direction="vertical" />
<p class="text-sm">分页大小</p>
<el-radio-group v-model="paginationSmall" size="small" @change="onChange">
<el-radio-button :label="false">no small</el-radio-button>
<el-radio-button :label="true">small</el-radio-button>
</el-radio-group>
<el-divider direction="vertical" />
<p class="text-sm">分页的对齐方式</p>
<el-radio-group v-model="paginationAlign" size="small">
<el-radio-button label="right">right</el-radio-button> <el-radio-button label="right">right</el-radio-button>
<el-radio-button label="center">center</el-radio-button> <el-radio-button label="center">center</el-radio-button>
<el-radio-button label="left">left</el-radio-button> <el-radio-button label="left">left</el-radio-button>
</el-radio-group> </el-radio-group>
</el-space> </el-space>
<pure-table <pure-table
border border
row-key="id" row-key="id"
alignWhole="center" alignWhole="center"
showOverflowTooltip showOverflowTooltip
:size="tableSize"
:loading="loading" :loading="loading"
:loading-config="loadingConfig" :loading-config="loadingConfig"
:height="440" :height="tableSize === 'small' ? 352 : 440"
:data=" :data="
dataList.slice( dataList.slice(
(pagination.currentPage - 1) * pagination.pageSize, (pagination.currentPage - 1) * pagination.pageSize,