Commit 540423ecf741a815d28d7a6baa1541ac884efe95
1 parent
9cf070dd
feat(table): add `headerTop` slot
为表格添加`headerTop`插槽(表格头部的标题之上),以及相关演示 close: #881
Showing
5 changed files
with
59 additions
and
19 deletions
CHANGELOG.zh_CN.md
src/components/Table/src/components/TableHeader.vue
1 | 1 | <template> |
2 | - <slot name="tableTitle" v-if="$slots.tableTitle"></slot> | |
3 | - | |
4 | - <TableTitle :helpMessage="titleHelpMessage" :title="title" v-if="!$slots.tableTitle && title" /> | |
5 | - | |
6 | - <div :class="`${prefixCls}__toolbar`"> | |
7 | - <slot name="toolbar"></slot> | |
8 | - <Divider type="vertical" v-if="$slots.toolbar && showTableSetting" /> | |
9 | - <TableSetting | |
10 | - :setting="tableSetting" | |
11 | - v-if="showTableSetting" | |
12 | - @columns-change="handleColumnChange" | |
13 | - /> | |
2 | + <div style="width: 100%"> | |
3 | + <div v-if="$slots.headerTop" style="margin: 5px"> | |
4 | + <slot name="headerTop"></slot> | |
5 | + </div> | |
6 | + <div style="width: 100%; display: flex"> | |
7 | + <slot name="tableTitle" v-if="$slots.tableTitle"></slot> | |
8 | + <TableTitle | |
9 | + :helpMessage="titleHelpMessage" | |
10 | + :title="title" | |
11 | + v-if="!$slots.tableTitle && title" | |
12 | + /> | |
13 | + <div :class="`${prefixCls}__toolbar`"> | |
14 | + <slot name="toolbar"></slot> | |
15 | + <Divider type="vertical" v-if="$slots.toolbar && showTableSetting" /> | |
16 | + <TableSetting | |
17 | + :setting="tableSetting" | |
18 | + v-if="showTableSetting" | |
19 | + @columns-change="handleColumnChange" | |
20 | + /> | |
21 | + </div> | |
22 | + </div> | |
14 | 23 | </div> |
15 | 24 | </template> |
16 | 25 | <script lang="ts"> | ... | ... |
src/components/Table/src/hooks/useTableHeader.ts
src/views/demo/table/FormTable.vue
1 | 1 | <template> |
2 | - <BasicTable @register="registerTable"> | |
2 | + <BasicTable | |
3 | + @register="registerTable" | |
4 | + :rowSelection="{ type: 'checkbox', selectedRowKeys: checkedKeys, onChange: onSelectChange }" | |
5 | + > | |
3 | 6 | <template #form-custom> custom-slot </template> |
4 | - | |
7 | + <template #headerTop> | |
8 | + <a-alert type="info" show-icon> | |
9 | + <template #message> | |
10 | + <template v-if="checkedKeys.length > 0"> | |
11 | + <span>已选中{{ checkedKeys.length }}条记录(可跨页)</span> | |
12 | + <a-button type="link" @click="checkedKeys = []" size="small">清空</a-button> | |
13 | + </template> | |
14 | + <template v-else> | |
15 | + <span>未选中任何项目</span> | |
16 | + </template> | |
17 | + </template> | |
18 | + </a-alert> | |
19 | + </template> | |
5 | 20 | <template #toolbar> |
6 | 21 | <a-button type="primary" @click="getFormValues">获取表单数据</a-button> |
7 | 22 | </template> |
8 | 23 | </BasicTable> |
9 | 24 | </template> |
10 | 25 | <script lang="ts"> |
11 | - import { defineComponent } from 'vue'; | |
26 | + import { defineComponent, ref } from 'vue'; | |
12 | 27 | import { BasicTable, useTable } from '/@/components/Table'; |
13 | 28 | import { getBasicColumns, getFormConfig } from './tableData'; |
29 | + import { Alert } from 'ant-design-vue'; | |
14 | 30 | |
15 | 31 | import { demoListApi } from '/@/api/demo/table'; |
16 | 32 | |
17 | 33 | export default defineComponent({ |
18 | - components: { BasicTable }, | |
34 | + components: { BasicTable, AAlert: Alert }, | |
19 | 35 | setup() { |
36 | + const checkedKeys = ref<Array<string | number>>([]); | |
20 | 37 | const [registerTable, { getForm }] = useTable({ |
21 | 38 | title: '开启搜索区域', |
22 | 39 | api: demoListApi, |
... | ... | @@ -24,16 +41,24 @@ |
24 | 41 | useSearchForm: true, |
25 | 42 | formConfig: getFormConfig(), |
26 | 43 | showTableSetting: true, |
27 | - rowSelection: { type: 'checkbox' }, | |
44 | + showIndexColumn: false, | |
45 | + rowKey: 'id', | |
28 | 46 | }); |
29 | 47 | |
30 | 48 | function getFormValues() { |
31 | 49 | console.log(getForm().getFieldsValue()); |
32 | 50 | } |
33 | 51 | |
52 | + function onSelectChange(selectedRowKeys: (string | number)[]) { | |
53 | + console.log(selectedRowKeys); | |
54 | + checkedKeys.value = selectedRowKeys; | |
55 | + } | |
56 | + | |
34 | 57 | return { |
35 | 58 | registerTable, |
36 | 59 | getFormValues, |
60 | + checkedKeys, | |
61 | + onSelectChange, | |
37 | 62 | }; |
38 | 63 | }, |
39 | 64 | }); | ... | ... |
src/views/demo/table/tableData.tsx
... | ... | @@ -31,13 +31,13 @@ export function getBasicColumns(): BasicColumn[] { |
31 | 31 | }, |
32 | 32 | { |
33 | 33 | title: '开始时间', |
34 | - width: 120, | |
34 | + width: 150, | |
35 | 35 | sorter: true, |
36 | 36 | dataIndex: 'beginTime', |
37 | 37 | }, |
38 | 38 | { |
39 | 39 | title: '结束时间', |
40 | - width: 120, | |
40 | + width: 150, | |
41 | 41 | sorter: true, |
42 | 42 | dataIndex: 'endTime', |
43 | 43 | }, | ... | ... |