fix(frontend): 展示三个独立发布数据集

This commit is contained in:
caoxiaozhu
2026-07-25 17:04:21 +08:00
parent e9a121cfeb
commit 939a7f8e8f
8 changed files with 64 additions and 90 deletions

View File

@@ -1,6 +1,6 @@
<script setup lang="ts">
import { ref, onMounted, computed } from 'vue'
import { useRouter } from 'vue-router'
import { useRoute, useRouter } from 'vue-router'
import { ElMessage } from 'element-plus'
import DataTablePage from '@/components/DataTablePage.vue'
import { getDatasetList, deleteDataset, downloadDatasetUrl } from '@/api/modules/dataset'
@@ -8,10 +8,11 @@ import { DATASET_TYPE_MAP, STORAGE_MAP } from '@/constants'
import type { DatasetItem, DatasetSource } from '@/types'
const router = useRouter()
const route = useRoute()
const loading = ref(false)
const dataList = ref<DatasetItem[]>([])
const activeTab = ref<DatasetSource>('upload')
const activeTab = ref<DatasetSource>(route.query.tab === 'task' ? 'task' : 'upload')
const filteredDataList = computed(() => {
if (activeTab.value === 'task') {
@@ -21,17 +22,6 @@ const filteredDataList = computed(() => {
return dataList.value.filter((item) => item.source !== 'task')
})
const splitLabels = [
{ key: 'train', label: '训练', type: 'primary' },
{ key: 'validation', label: '验证', type: 'warning' },
{ key: 'test', label: '测试', type: 'success' },
] as const
function hasSplitCounts(row: Partial<DatasetItem>) {
return row.source === 'task'
&& Object.values(row.split_counts || {}).some((value) => Number(value) > 0)
}
async function loadData() {
loading.value = true
try {
@@ -98,17 +88,7 @@ onMounted(loadData)
<el-table-column label="数据集名称" prop="name" align="center" />
<el-table-column label="数据类型" align="center" width="110">
<template #default="{ row }">
<div v-if="hasSplitCounts(row)" class="split-tags">
<el-tag
v-for="item in splitLabels"
:key="item.key"
:type="item.type"
size="small"
>
{{ item.label }} {{ row.split_counts?.[item.key] || 0 }}
</el-tag>
</div>
<el-tag v-else type="primary" size="small">{{ DATASET_TYPE_MAP[String(row.type).toLowerCase()] || row.type || '-' }}</el-tag>
<el-tag type="primary" size="small">{{ DATASET_TYPE_MAP[String(row.type).toLowerCase()] || row.type || '-' }}</el-tag>
</template>
</el-table-column>
<el-table-column label="存储位置" align="center" width="110">
@@ -187,10 +167,4 @@ onMounted(loadData)
}
}
.split-tags {
display: flex;
flex-wrap: wrap;
justify-content: center;
gap: 4px;
}
</style>

View File

@@ -20,7 +20,6 @@ import DatasetVersionBar from './preview/DatasetVersionBar.vue'
import DatasetRecordTable from './preview/DatasetRecordTable.vue'
import DatasetRecordEditorDialog from './preview/DatasetRecordEditorDialog.vue'
import DatasetRawPreview from './preview/DatasetRawPreview.vue'
import DatasetSplitNavigator from './preview/DatasetSplitNavigator.vue'
import type { EditField } from './preview/types'
import type { DatasetFile, DatasetItem, DatasetVersion } from '@/types'
@@ -54,7 +53,6 @@ let versionRequestId = 0
const files = computed<DatasetFile[]>(() => dataset.value?.files || [])
const selectedFile = computed(() => files.value.find((file) => fileKey(file) === selectedFileId.value))
const splitCounts = computed(() => dataset.value?.split_counts || { train: 0, validation: 0, test: 0 })
const totalLines = computed(() => previewContent.value ? previewContent.value.split('\n').length : 0)
const recordResult = computed(() => parseDatasetRecords(previewContent.value, selectedFile.value?.name || ''))
const isRecordFile = computed(() => recordResult.value.supported)
@@ -83,13 +81,6 @@ function fileKey(file: DatasetFile) {
return String(file.id || file.name)
}
async function handleFileChange(file: DatasetFile) {
if (fileKey(file) === selectedFileId.value) return
if (!await confirmDiscardChanges('切换数据切分后,当前样本的未保存修改将丢失。')) return
selectedFileId.value = fileKey(file)
await loadVersions(file)
}
async function loadDataset() {
loading.value = true
try {
@@ -409,12 +400,6 @@ onBeforeUnmount(() => window.removeEventListener('beforeunload', handleBeforeUnl
<div class="overview-item overview-item-wide"><span>创建时间</span><strong>{{ createdAt }}</strong></div>
</section>
<DatasetSplitNavigator
v-if="Object.values(splitCounts).some((value) => value > 0)"
:files="files" :selected-file-id="selectedFileId" :split-counts="splitCounts"
@select="handleFileChange"
/>
<DatasetVersionBar
v-model="selectedVersionId"
:versions="versions"