[feat]:[FL-90][优化表格操作列 - 状态列可点击+下拉菜单]

Co-authored-by: multica-agent <github@multica.ai>
This commit is contained in:
chengkai3
2026-06-12 22:17:51 +08:00
parent e56ee76610
commit dd7c1c45a1
+77 -66
View File
@@ -8,6 +8,7 @@ import {
Alert,
Button,
Descriptions,
Dropdown,
Empty,
Form,
Input,
@@ -638,7 +639,7 @@ export default function AdminElevationPage() {
title: "分析状态",
dataIndex: "analysis_status",
width: 120,
render: (value: string) => {
render: (value: string, row) => {
const colorMap: Record<string, string> = {
queued: "orange",
running: "processing",
@@ -646,14 +647,36 @@ export default function AdminElevationPage() {
failed: "red",
not_started: "default",
};
return <Tag color={colorMap[value] || "default"}>{value}</Tag>;
return (
<Tag
color={colorMap[value] || "default"}
style={{ cursor: "pointer" }}
onClick={() => {
setAnalysisDataset(row);
setAnalysisModalOpen(true);
}}
>
{value}
</Tag>
);
},
},
{
title: "地形状态",
dataIndex: "terrain_status",
width: 120,
render: (value: string) => <Tag color={terrainStatusTagColor(value)}>{terrainStatusLabel(value)}</Tag>,
render: (value: string, row) => (
<Tag
color={terrainStatusTagColor(value)}
style={{ cursor: "pointer" }}
onClick={() => {
setTerrainDataset(row);
setTerrainModalOpen(true);
}}
>
{terrainStatusLabel(value)}
</Tag>
),
},
{
title: "地形层级",
@@ -696,7 +719,15 @@ export default function AdminElevationPage() {
return <Typography.Text type="secondary">-</Typography.Text>;
}
return (
<Space direction="vertical" size={0}>
<Space
direction="vertical"
size={0}
style={{ cursor: "pointer" }}
onClick={() => {
setImportJob(latestJob);
setImportJobModalOpen(true);
}}
>
<Tag color={statusTagColor(latestJob.status)}>{importJobStatusLabel(latestJob.status)}</Tag>
<Typography.Text type="secondary">{importJobStageLabel(latestJob.current_stage)}</Typography.Text>
<Typography.Text type="secondary">{`${latestJob.progress_percent}%`}</Typography.Text>
@@ -708,7 +739,7 @@ export default function AdminElevationPage() {
title: "操作",
key: "actions",
fixed: "right",
width: 460,
width: 240,
render: (_, row) => (
<Space size="small" wrap>
<Typography.Link
@@ -740,67 +771,6 @@ export default function AdminElevationPage() {
>
</Typography.Link>
<Typography.Link
onClick={() => {
setDatasetFilesDataset(row);
setDatasetFiles([]);
setDatasetFilesModalOpen(true);
setDatasetFilesLoading(true);
datasetFilesMutation.mutate(row.id);
}}
>
</Typography.Link>
<Typography.Link
onClick={() => {
setAnalysisDataset(row);
setAnalysisModalOpen(true);
}}
>
</Typography.Link>
<Typography.Link
onClick={() => {
setTerrainDataset(row);
setTerrainModalOpen(true);
}}
>
</Typography.Link>
<Typography.Link
disabled={!latestImportJobByDataset.get(row.id)}
onClick={() => {
const latestJob = latestImportJobByDataset.get(row.id);
if (!latestJob) return;
setImportJob(latestJob);
setImportJobModalOpen(true);
}}
>
</Typography.Link>
<Typography.Link
disabled={
!canManage
|| terrainBuildMutation.isPending
|| row.terrain_status === "not_supported"
|| row.status !== "active"
}
onClick={() => {
if (
!canManage
|| terrainBuildMutation.isPending
|| row.terrain_status === "not_supported"
|| row.status !== "active"
) {
return;
}
setTerrainDataset(row);
setTerrainModalOpen(true);
terrainBuildMutation.mutate(row.id);
}}
>
{terrainBuildActionLabel(row.terrain_status)}
</Typography.Link>
<Typography.Link
disabled={!canManage || datasetDataImportMutation.isPending}
onClick={() => {
@@ -812,6 +782,47 @@ export default function AdminElevationPage() {
>
</Typography.Link>
<Dropdown
menu={{
items: [
{
key: "files",
label: "文件明细",
onClick: () => {
setDatasetFilesDataset(row);
setDatasetFiles([]);
setDatasetFilesModalOpen(true);
setDatasetFilesLoading(true);
datasetFilesMutation.mutate(row.id);
},
},
{
key: "terrain",
label: terrainBuildActionLabel(row.terrain_status),
disabled:
!canManage
|| terrainBuildMutation.isPending
|| row.terrain_status === "not_supported"
|| row.status !== "active",
onClick: () => {
if (
!canManage
|| terrainBuildMutation.isPending
|| row.terrain_status === "not_supported"
|| row.status !== "active"
) {
return;
}
setTerrainDataset(row);
setTerrainModalOpen(true);
terrainBuildMutation.mutate(row.id);
},
},
],
}}
>
<Typography.Link></Typography.Link>
</Dropdown>
<Typography.Link
disabled={!canManage || datasetDeleteMutation.isPending}
onClick={() => {