import { ref, reactive } from 'vue';
import { cloneDeep } from 'lodash';
export default () => {
const tableData = ref([]);
const tableLoading = ref(false);
const filterParams = ref({});
const cacheFilterParams = ref({});
const selectedKeys = ref([]);
const page = reactive({
page: 1,
pageSize: 10,
total: 0,
});
const rowSelection = reactive({
type: 'checkbox',
showCheckedAll: true,
onlyCurrent: true,
});
const search = (getList) => {
page.page = 1;
cacheFilterParams.value = cloneDeep(filterParams.value);
getList();
};
const reset = (getList) => {
filterParams.value = {};
search(getList);
};
const getApiList = (api, searchParams = {}, callback) => {
tableLoading.value = true;
api(searchParams)
.then((res) => {
callback(res);
})
.finally(() => {
tableLoading.value = false;
});
};
return {
rowSelection,
filterParams,
cacheFilterParams,
selectedKeys,
search,
reset,
getApiList,
tableData,
tableLoading,
page,
};
};