FormTable.vue 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. <template>
  2. <BasicTable
  3. @register="registerTable"
  4. :rowSelection="{ type: 'checkbox', selectedRowKeys: checkedKeys, onChange: onSelectChange }"
  5. >
  6. <template #form-custom> custom-slot </template>
  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>
  20. <template #toolbar>
  21. <a-button type="primary" @click="getFormValues">获取表单数据</a-button>
  22. </template>
  23. </BasicTable>
  24. </template>
  25. <script lang="ts">
  26. import { defineComponent, ref } from 'vue';
  27. import { BasicTable, useTable } from '/@/components/Table';
  28. import { getBasicColumns, getFormConfig } from './tableData';
  29. import { Alert } from 'ant-design-vue';
  30. import { demoListApi } from '/@/api/demo/table';
  31. export default defineComponent({
  32. components: { BasicTable, AAlert: Alert },
  33. setup() {
  34. const checkedKeys = ref<Array<string | number>>([]);
  35. const [registerTable, { getForm }] = useTable({
  36. title: '开启搜索区域',
  37. api: demoListApi,
  38. columns: getBasicColumns(),
  39. useSearchForm: true,
  40. formConfig: getFormConfig(),
  41. showTableSetting: true,
  42. tableSetting: { fullScreen: true },
  43. showIndexColumn: false,
  44. rowKey: 'id',
  45. });
  46. function getFormValues() {
  47. console.log(getForm().getFieldsValue());
  48. }
  49. function onSelectChange(selectedRowKeys: (string | number)[]) {
  50. console.log(selectedRowKeys);
  51. checkedKeys.value = selectedRowKeys;
  52. }
  53. return {
  54. registerTable,
  55. getFormValues,
  56. checkedKeys,
  57. onSelectChange,
  58. };
  59. },
  60. });
  61. </script>