diff --git a/web/hwlab-cloud-web/src/components/tasktree/TaskTreeDetailPanel.vue b/web/hwlab-cloud-web/src/components/tasktree/TaskTreeDetailPanel.vue index e9c2addd..be4b6ab9 100644 --- a/web/hwlab-cloud-web/src/components/tasktree/TaskTreeDetailPanel.vue +++ b/web/hwlab-cloud-web/src/components/tasktree/TaskTreeDetailPanel.vue @@ -56,7 +56,7 @@ const combinedMarkdown = computed(() => { }); function plainTitle(task: TaskTreeTask) { - return task.title.replace(/\[([^\]]+)\]\([^)]+\)/gu, "$1").replace(/`([^`]+)`/gu, "$1").trim(); + return task.title.replace(/^R\d+(?:\.\d+){0,2}\s+/u, "").replace(/\[([^\]]+)\]\([^)]+\)/gu, "$1").replace(/`([^`]+)`/gu, "$1").trim(); } function plainReportTitle(report: TaskTreeReport) { return report.title.replace(/\[([^\]]+)\]\([^)]+\)/gu, "$1").replace(/`([^`]+)`/gu, "$1").trim(); diff --git a/web/hwlab-cloud-web/src/views/projects/TaskTreeView.vue b/web/hwlab-cloud-web/src/views/projects/TaskTreeView.vue index 061037a3..9fe59623 100644 --- a/web/hwlab-cloud-web/src/views/projects/TaskTreeView.vue +++ b/web/hwlab-cloud-web/src/views/projects/TaskTreeView.vue @@ -357,6 +357,7 @@ function tickClass(date: Date) { }; } function statusLabel(status: string) { return ({ pending: "待处理", in_progress: "进行中", completed: "已完成", blocked: "阻塞" } as Record)[status] || status; } +function displayTaskTitle(task: TaskTreeTask) { return task.title.replace(/^R\d+(?:\.\d+){0,2}\s+/u, ""); } function taskKindLabel(kind: TaskTreeTask["kind"]) { return ({ task: "Task", subtask: "Subtask", subsubtask: "Subsubtask" })[kind]; } function plainTaskTitle(task: TaskTreeTask | null) { return String(task?.title || "任务详情").replace(/\[([^\]]+)\]\([^)]+\)/gu, "$1").replace(/`([^`]+)`/gu, "$1").trim(); @@ -462,9 +463,9 @@ function syncSelectedTaskFromRoute() {