| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879 |
- <template>
- <BasicTable @register="registerTable">
- <template #form-custom> custom-slot </template>
- <template #headerTop>
- <Alert type="info" show-icon>
- <template #message>
- <template v-if="state.selectedRowKeys.length > 0">
- <span>已选中{{ state.selectedRowKeys.length }}条记录(可跨页)</span>
- <a-button type="link" @click="state.selectedRowKeys.splice(0)" size="small"
- >清空</a-button
- >
- </template>
- <template v-else>
- <span>未选中任何项目</span>
- </template>
- </template>
- </Alert>
- </template>
- <template #toolbar>
- <a-button type="primary" @click="getFormValues">获取表单数据</a-button>
- </template>
- </BasicTable>
- </template>
- <script lang="ts" setup>
- import { reactive } from 'vue';
- import { BasicTable, useTable } from '@/components/Table';
- import { getBasicColumns, getFormConfig } from './tableData';
- import { Alert } from 'ant-design-vue';
- import type { Key } from 'ant-design-vue/lib/table/interface';
- import { demoListApi } from '@/api/demo/table';
- const state = reactive<{
- selectedRowKeys: Key[];
- }>({
- selectedRowKeys: [],
- });
- const [registerTable, { getForm }] = useTable({
- title: '开启搜索区域',
- api: demoListApi,
- columns: getBasicColumns(),
- useSearchForm: true,
- formConfig: getFormConfig(),
- showTableSetting: true,
- tableSetting: { fullScreen: true },
- showIndexColumn: false,
- rowKey: 'id',
- rowSelection: {
- type: 'checkbox',
- selectedRowKeys: state.selectedRowKeys,
- onSelect: onSelect,
- onSelectAll: onSelectAll,
- },
- });
- function getFormValues() {
- console.log(getForm().getFieldsValue());
- }
- function onSelect(record, selected) {
- if (selected) {
- state.selectedRowKeys.push(record.id);
- } else {
- state.selectedRowKeys
- .splice(0)
- .push(...state.selectedRowKeys.filter((id) => id !== record.id));
- }
- }
- function onSelectAll(selected, selectedRows, changeRows) {
- const changeIds = changeRows.map((item) => item.id);
- if (selected) {
- state.selectedRowKeys.push(...changeIds);
- } else {
- state.selectedRowKeys.splice(0);
- }
- }
- </script>
|