fix(dataset): 统一大小与版本元数据

This commit is contained in:
caoxiaozhu
2026-07-27 12:26:09 +08:00
parent e486d36a80
commit bce586697b
8 changed files with 345 additions and 31 deletions

View File

@@ -5,6 +5,7 @@ import { ElMessage, ElMessageBox } from 'element-plus'
import DataTablePage from '@/components/DataTablePage.vue'
import { getDatasetList, deleteDataset, downloadDatasetUrl } from '@/api/modules/dataset'
import { DATASET_TYPE_MAP, STORAGE_MAP } from '@/constants'
import { formatMegabytes } from '@/utils/fileSize'
import type { DatasetItem, DatasetSource } from '@/types'
const router = useRouter()
@@ -107,6 +108,36 @@ function handleDownload(row: any) {
window.open(downloadDatasetUrl(row.id), '_blank')
}
function formatSizeMb(row: DatasetItem) {
return formatMegabytes(row.size_bytes, row.size)
}
function currentVersionNumbers(row: DatasetItem) {
const values = row.current_version_nos?.length
? row.current_version_nos
: [
row.current_version_no,
...(row.files || []).map((file) => file.current_version_no),
]
return [...new Set(
values
.map((value) => Number(value))
.filter((value) => Number.isInteger(value) && value > 0),
)].sort((a, b) => a - b)
}
function versionLabel(row: DatasetItem) {
const versions = currentVersionNumbers(row)
return versions.length ? versions.map((value) => `V${value}`).join(' / ') : '-'
}
function versionDescription(row: DatasetItem) {
const fileCount = row.files?.length || 0
const historyCount = Number(row.version_count || 0)
if (!fileCount) return '当前数据集没有文件版本'
return `${fileCount} 个文件,共 ${historyCount || fileCount} 个版本记录`
}
watch(activeTab, exitBatchMode)
onMounted(loadData)
</script>
@@ -118,7 +149,7 @@ onMounted(loadData)
:data="filteredDataList"
:loading="loading"
searchable
:search-fields="['task_id', 'name', 'description']"
:search-fields="['task_id', 'name']"
:multi-select="activeTab === 'task' && batchMode"
:show-batch-bar="false"
:create-text="activeTab === 'upload' ? '上传数据集' : ''"
@@ -181,16 +212,26 @@ onMounted(loadData)
</el-tag>
</template>
</el-table-column>
<el-table-column label="大小" align="center" width="100">
<el-table-column label="大小" align="center" width="120">
<template #default="{ row }">
{{ row.size && row.size !== '0 B' && row.size !== '0' ? row.size : '-' }}
<span class="numeric-cell">{{ formatSizeMb(row as DatasetItem) }}</span>
</template>
</el-table-column>
<el-table-column label="数据条数" align="center" width="100">
<template #default="{ row }">{{ row.count || 0 }}</template>
</el-table-column>
<el-table-column label="描述" align="center" show-overflow-tooltip>
<template #default="{ row }">{{ row.description || '-' }}</template>
<el-table-column label="版本" align="center" width="120">
<template #default="{ row }">
<el-tooltip
:content="versionDescription(row as DatasetItem)"
placement="top"
:show-after="350"
>
<el-tag size="small" type="info" effect="plain">
{{ versionLabel(row as DatasetItem) }}
</el-tag>
</el-tooltip>
</template>
</el-table-column>
<el-table-column label="创建时间" align="center" width="180">
<template #default="{ row }">
@@ -257,4 +298,9 @@ onMounted(loadData)
}
}
.numeric-cell {
font-variant-numeric: tabular-nums;
white-space: nowrap;
}
</style>