mirror of
https://github.com/soybeanjs/soybean-admin.git
synced 2025-11-12 03:33:41 +08:00
84 lines
1.8 KiB
Vue
84 lines
1.8 KiB
Vue
<template>
|
|
<div>
|
|
<n-card title="表格" class="h-full shadow-sm rounded-16px">
|
|
<n-space :vertical="true">
|
|
<n-space>
|
|
<n-button @click="getDataSource">有数据</n-button>
|
|
<n-button @click="getEmptyDataSource">空数据</n-button>
|
|
</n-space>
|
|
<loading-empty-wrapper class="h-480px" :loading="loading" :empty="empty">
|
|
<n-data-table :columns="columns" :data="dataSource" :flex-height="true" class="h-480px" />
|
|
</loading-empty-wrapper>
|
|
</n-space>
|
|
</n-card>
|
|
</div>
|
|
</template>
|
|
|
|
<script setup lang="ts">
|
|
import { ref, onMounted } from 'vue';
|
|
import type { DataTableColumn } from 'naive-ui';
|
|
import { useLoadingEmpty } from '@/hooks';
|
|
import { getRandomInteger } from '@/utils';
|
|
|
|
interface DataSource {
|
|
name: string;
|
|
age: number;
|
|
address: string;
|
|
}
|
|
|
|
const { loading, startLoading, endLoading, empty, setEmpty } = useLoadingEmpty();
|
|
|
|
const columns: DataTableColumn[] = [
|
|
{
|
|
title: 'Name',
|
|
key: 'name',
|
|
align: 'center'
|
|
},
|
|
{
|
|
title: 'Age',
|
|
key: 'age'
|
|
},
|
|
{
|
|
title: 'Address',
|
|
key: 'address'
|
|
}
|
|
];
|
|
|
|
const dataSource = ref<DataSource[]>([]);
|
|
|
|
function createDataSource(): DataSource[] {
|
|
return Array(100)
|
|
.fill(1)
|
|
.map((_item, index) => {
|
|
return {
|
|
name: `Name${index}`,
|
|
age: getRandomInteger(30, 20),
|
|
address: '中国'
|
|
};
|
|
});
|
|
}
|
|
|
|
function getDataSource() {
|
|
startLoading();
|
|
setTimeout(() => {
|
|
dataSource.value = createDataSource();
|
|
endLoading();
|
|
setEmpty(!dataSource.value.length);
|
|
}, 1000);
|
|
}
|
|
|
|
function getEmptyDataSource() {
|
|
startLoading();
|
|
setTimeout(() => {
|
|
dataSource.value = [];
|
|
endLoading();
|
|
setEmpty(!dataSource.value.length);
|
|
}, 1000);
|
|
}
|
|
|
|
onMounted(() => {
|
|
getDataSource();
|
|
});
|
|
</script>
|
|
<style scoped></style>
|