修复 : 数据为空的时候,创建按钮不显示

This commit is contained in:
zxr
2026-06-29 10:42:36 +08:00
parent fcaad4b3ae
commit 2107f77081
2 changed files with 89 additions and 62 deletions

View File

@@ -51,8 +51,17 @@
</a-col> </a-col>
</a-row> </a-row>
<!-- 表格 --> <!-- 表格主体状态占位与表格分离工具栏始终展示 -->
<PageState
:status="status"
:loading-text="loadingText"
:empty-text="emptyText"
:error-text="errorText"
:partial-text="partialText"
@retry="emit('retry')"
>
<a-table <a-table
v-if="status === 'success' || status === 'partial'"
row-key="id" row-key="id"
:loading="loading" :loading="loading"
:pagination="pagination" :pagination="pagination"
@@ -72,6 +81,7 @@
<slot :name="col.slotName" v-bind="slotProps" /> <slot :name="col.slotName" v-bind="slotProps" />
</template> </template>
</a-table> </a-table>
</PageState>
</div> </div>
</template> </template>
@@ -140,6 +150,26 @@ const props = defineProps({
type: Boolean, type: Boolean,
default: true, default: true,
}, },
status: {
type: String as PropType<'loading' | 'empty' | 'error' | 'success' | 'partial' | 'unauthorized'>,
default: 'success',
},
loadingText: {
type: String,
default: '加载中',
},
emptyText: {
type: String,
default: '暂无数据',
},
errorText: {
type: String,
default: '数据暂时不可用,请稍后重试。',
},
partialText: {
type: String,
default: '部分数据加载失败,当前页面展示可用数据。',
},
downloadButtonText: { downloadButtonText: {
type: String, type: String,
default: '下载', default: '下载',
@@ -167,6 +197,7 @@ const emit = defineEmits<{
(e: 'download'): void (e: 'download'): void
(e: 'density-change', size: SizeProps): void (e: 'density-change', size: SizeProps): void
(e: 'column-change', columns: TableColumnData[]): void (e: 'column-change', columns: TableColumnData[]): void
(e: 'retry'): void
}>() }>()
const size = ref<SizeProps>('medium') const size = ref<SizeProps>('medium')

View File

@@ -19,17 +19,8 @@
<a-divider style="margin-top: 0" /> <a-divider style="margin-top: 0" />
<!-- 数据表格 --> <!-- 数据表格工具栏始终展示表格主体随状态切换 -->
<PageState
:status="stateStatus"
:empty-text="emptyText"
:error-text="errorText"
:partial-text="partialText"
:loading-text="loadingText"
@retry="handleRefresh"
>
<DataTable <DataTable
v-if="stateStatus !== 'empty' && stateStatus !== 'error' && stateStatus !== 'unauthorized'"
:data="data" :data="data"
:columns="columns" :columns="columns"
:loading="loading" :loading="loading"
@@ -46,6 +37,11 @@
:refresh-tooltip-text="refreshTooltipText" :refresh-tooltip-text="refreshTooltipText"
:density-tooltip-text="densityTooltipText" :density-tooltip-text="densityTooltipText"
:column-setting-tooltip-text="columnSettingTooltipText" :column-setting-tooltip-text="columnSettingTooltipText"
:status="stateStatus"
:loading-text="loadingText"
:empty-text="emptyText"
:error-text="errorText"
:partial-text="partialText"
@page-change="handlePageChange" @page-change="handlePageChange"
@page-size-change="handlePageSizeChange" @page-size-change="handlePageSizeChange"
@selection-change="handleSelectionChange" @selection-change="handleSelectionChange"
@@ -54,6 +50,7 @@
@download="handleDownload" @download="handleDownload"
@density-change="handleDensityChange" @density-change="handleDensityChange"
@column-change="handleColumnChange" @column-change="handleColumnChange"
@retry="handleRefresh"
> >
<template #toolbar-left> <template #toolbar-left>
<slot name="toolbar-left" /> <slot name="toolbar-left" />
@@ -66,7 +63,6 @@
<slot :name="col.slotName" v-bind="slotProps" /> <slot :name="col.slotName" v-bind="slotProps" />
</template> </template>
</DataTable> </DataTable>
</PageState>
</a-card> </a-card>
</div> </div>
</template> </template>