|
@@ -4,9 +4,11 @@
|
|
|
<template #headerTop>
|
|
|
<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 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>
|
|
@@ -20,7 +22,7 @@
|
|
|
</BasicTable>
|
|
|
</template>
|
|
|
<script lang="ts" setup>
|
|
|
- import { ref } from 'vue';
|
|
|
+ import { reactive } from 'vue';
|
|
|
import { BasicTable, useTable } from '@/components/Table';
|
|
|
import { getBasicColumns, getFormConfig } from './tableData';
|
|
|
import { Alert } from 'ant-design-vue';
|
|
@@ -28,7 +30,12 @@
|
|
|
|
|
|
import { demoListApi } from '@/api/demo/table';
|
|
|
|
|
|
- const checkedKeys = ref<Key[]>([]);
|
|
|
+ const state = reactive<{
|
|
|
+ selectedRowKeys: Key[];
|
|
|
+ }>({
|
|
|
+ selectedRowKeys: [],
|
|
|
+ });
|
|
|
+
|
|
|
const [registerTable, { getForm }] = useTable({
|
|
|
title: '开启搜索区域',
|
|
|
api: demoListApi,
|
|
@@ -41,7 +48,7 @@
|
|
|
rowKey: 'id',
|
|
|
rowSelection: {
|
|
|
type: 'checkbox',
|
|
|
- selectedRowKeys: checkedKeys.value,
|
|
|
+ selectedRowKeys: state.selectedRowKeys,
|
|
|
onSelect: onSelect,
|
|
|
onSelectAll: onSelectAll,
|
|
|
},
|
|
@@ -53,19 +60,20 @@
|
|
|
|
|
|
function onSelect(record, selected) {
|
|
|
if (selected) {
|
|
|
- checkedKeys.value = [...checkedKeys.value, record.id];
|
|
|
+ state.selectedRowKeys.push(record.id);
|
|
|
} else {
|
|
|
- checkedKeys.value = checkedKeys.value.filter((id) => id !== record.id);
|
|
|
+ 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) {
|
|
|
- checkedKeys.value = [...checkedKeys.value, ...changeIds];
|
|
|
+ state.selectedRowKeys.push(...changeIds);
|
|
|
} else {
|
|
|
- checkedKeys.value = checkedKeys.value.filter((id) => {
|
|
|
- return !changeIds.includes(id);
|
|
|
- });
|
|
|
+ state.selectedRowKeys.splice(0);
|
|
|
}
|
|
|
}
|
|
|
</script>
|