fix(frontend): 保持重新生成退出前详情
This commit is contained in:
@@ -1,5 +1,5 @@
|
||||
import { computed, nextTick, ref, type Reactive, type Ref } from 'vue'
|
||||
import { useRoute } from 'vue-router'
|
||||
import { useRoute, useRouter } from 'vue-router'
|
||||
import {
|
||||
getDataProcessPreview,
|
||||
getDataProcessSourceContent,
|
||||
@@ -81,6 +81,7 @@ async function loadAllPreviews(taskId: string, mapPreviewItem: RegenerationBindi
|
||||
|
||||
export function useDataProcessRegeneration(bindings: RegenerationBindings) {
|
||||
const route = useRoute()
|
||||
const router = useRouter()
|
||||
const sourceTaskId = computed(() => (
|
||||
route.name === 'data-process-regenerate' ? String(route.params.id || '') : ''
|
||||
))
|
||||
@@ -169,7 +170,7 @@ export function useDataProcessRegeneration(bindings: RegenerationBindings) {
|
||||
if (!changed || currentSignature === confirmedPreviewConfigSignature.value) return true
|
||||
const confirmed = await openConfirm({
|
||||
title: '确认修改切分配置?',
|
||||
message: '修改预处理或切分配置将删除现有切片和生成结果;已发布三数据集暂时保留,直到重新发布后才会更新。',
|
||||
message: '修改预处理或切分配置后,将按新配置重新切分。在点击“开始生成”前,原生成结果和已发布数据会继续保留。',
|
||||
confirmText: '确认并继续',
|
||||
cancelText: '返回检查',
|
||||
tone: 'warning',
|
||||
@@ -209,13 +210,47 @@ export function useDataProcessRegeneration(bindings: RegenerationBindings) {
|
||||
}
|
||||
} catch (error) {
|
||||
initializationError.value = error instanceof Error
|
||||
? `任务已进入重新生成状态,但工作区恢复失败:${error.message}`
|
||||
: '任务已进入重新生成状态,但工作区恢复失败,请重试加载原任务'
|
||||
? `重新生成配置已保存,但工作区恢复失败:${error.message}`
|
||||
: '重新生成配置已保存,但工作区恢复失败,请重试加载原任务'
|
||||
throw error
|
||||
}
|
||||
return regenerated
|
||||
}
|
||||
|
||||
async function confirmStartGeneration(
|
||||
openConfirm: (options: ConfirmOptions) => Promise<boolean | undefined>,
|
||||
syncPreviewChanges: () => Promise<void>,
|
||||
) {
|
||||
if (isRegeneration.value) {
|
||||
const confirmed = await openConfirm({
|
||||
title: '开始重新生成?',
|
||||
message: '点击开始后,当前生成结果将被替换。已发布数据集会继续保留,直到重新发布。',
|
||||
confirmText: '开始生成',
|
||||
cancelText: '继续检查',
|
||||
tone: 'warning',
|
||||
})
|
||||
if (!confirmed) return false
|
||||
}
|
||||
await syncPreviewChanges()
|
||||
return true
|
||||
}
|
||||
|
||||
async function returnToDetail() {
|
||||
if (!sourceTaskId.value) return false
|
||||
await router.replace({ name: 'data-process-detail', params: { id: sourceTaskId.value } })
|
||||
return true
|
||||
}
|
||||
|
||||
function leaveWarning(generationStatus: string) {
|
||||
if (isRegeneration.value && regenerationPrepared.value && generationStatus === 'idle') {
|
||||
return '重新生成配置已保存,但尚未开始生成;现在返回详情不会替换原生成结果或已发布数据,可稍后继续。'
|
||||
}
|
||||
if (isRegeneration.value && regenerationPrepared.value) {
|
||||
return '重新生成已开始;离开页面不会停止服务端处理,已提交的修改不会撤销。'
|
||||
}
|
||||
return '当前存在未保存修改,离开后这些修改将不会保留。'
|
||||
}
|
||||
|
||||
return {
|
||||
sourceTaskId,
|
||||
isRegeneration,
|
||||
@@ -228,5 +263,8 @@ export function useDataProcessRegeneration(bindings: RegenerationBindings) {
|
||||
loadSource,
|
||||
confirmPreviewConfigChange,
|
||||
prepareRegeneration,
|
||||
confirmStartGeneration,
|
||||
returnToDetail,
|
||||
leaveWarning,
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user