<template>
|
<BasicTable @register="registerTable">
|
<template #form-custom> custom-slot </template>
|
<template #headerTop>
|
<a-alert type="info" show-icon>
|
<template #message>
|
<template v-if="checkedKeys.length > 0">
|
<span>已选中{{ checkedKeys.length }}条记录(可跨页)</span>
|
<a-button type="link" @click="checkedKeys = []" size="small">清空</a-button>
|
</template>
|
<template v-else>
|
<span>未选中任何项目</span>
|
</template>
|
</template>
|
</a-alert>
|
</template>
|
<template #toolbar>
|
<a-button type="primary" @click="getFormValues">获取表单数据</a-button>
|
</template>
|
</BasicTable>
|
</template>
|
<script lang="ts">
|
import { defineComponent, ref } from 'vue';
|
import { BasicTable, useTable } from '/@/components/Table';
|
import { getBasicColumns, getFormConfig } from './tableData';
|
import { Alert } from 'ant-design-vue';
|
|
import { demoListApi } from '/@/api/demo/table';
|
|
export default defineComponent({
|
components: { BasicTable, AAlert: Alert },
|
setup() {
|
const checkedKeys = ref<Array<string | number>>([]);
|
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: checkedKeys,
|
onSelect: onSelect,
|
onSelectAll: onSelectAll,
|
},
|
});
|
|
function getFormValues() {
|
console.log(getForm().getFieldsValue());
|
}
|
|
function onSelect(record, selected) {
|
if (selected) {
|
checkedKeys.value = [...checkedKeys.value, record.id];
|
} else {
|
checkedKeys.value = checkedKeys.value.filter((id) => id !== record.id);
|
}
|
}
|
function onSelectAll(selected, selectedRows, changeRows) {
|
const changeIds = changeRows.map((item) => item.id);
|
if (selected) {
|
checkedKeys.value = [...checkedKeys.value, ...changeIds];
|
} else {
|
checkedKeys.value = checkedKeys.value.filter((id) => {
|
return !changeIds.includes(id);
|
});
|
}
|
}
|
|
return {
|
registerTable,
|
getFormValues,
|
checkedKeys,
|
onSelect,
|
onSelectAll,
|
};
|
},
|
});
|
</script>
|