| | |
| | | <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'; |
| | | <script lang="ts" setup> |
| | | import { BasicTable, useTable } from '@/components/Table'; |
| | | import { getBasicColumns, getFormConfig } from './tableData'; |
| | | import { Alert } from 'ant-design-vue'; |
| | | |
| | | import { demoListApi } from '/@/api/demo/table'; |
| | | 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, |
| | | }; |
| | | 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', |
| | | }, |
| | | showSelectionBar: true, // 显示多选状态栏 |
| | | }); |
| | | |
| | | function getFormValues() { |
| | | console.log(getForm().getFieldsValue()); |
| | | } |
| | | </script> |