feat: 开发任务和测试用例增加批量删除 + 单条删改

- DevTaskTab: 列表行前增加 checkbox,支持全选/批量删除
- DevTaskDetailDrawer: 顶部增加删除按钮(带确认)
- TestCaseTab: 同上,批量删除时校验关联 Bug(有 Bug 不可删)
- TestCaseDetailDrawer: 顶部增加删除按钮(有关联 Bug 时提示不可删)

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
Script Generator
2026-06-12 15:08:18 +08:00
parent bf229719ad
commit 3fc387eac5
4 changed files with 129 additions and 40 deletions

View File

@@ -1,7 +1,7 @@
'use client';
import { useState } from 'react';
import { X, AlertTriangle, Link2, ChevronRight, Clock, User, Tag, Calendar, Play } from 'lucide-react';
import { X, AlertTriangle, Link2, ChevronRight, Clock, User, Tag, Calendar, Play, Trash2, Pencil } from 'lucide-react';
import { StatusBadge } from './StatusBadge';
import { CategoryChip } from './CategoryChip';
import { useDevTaskStore } from '@/stores/useDevTaskStore';
@@ -17,7 +17,7 @@ interface Props {
}
export function DevTaskDetailDrawer({ taskId, allTaskIds, onClose }: Props) {
const { tasks, changeStatus, setBlocked } = useDevTaskStore();
const { tasks, changeStatus, setBlocked, deleteTask } = useDevTaskStore();
const { categories } = useTaskCategoryStore();
const { requirements } = useRequirementStore();
@@ -58,7 +58,10 @@ export function DevTaskDetailDrawer({ taskId, allTaskIds, onClose }: Props) {
<span className="text-[12px] font-mono text-[var(--ink-muted)]">{task.taskNo}</span>
<span className="text-[14px] font-semibold text-[var(--ink)] truncate max-w-[240px]">{task.title}</span>
</div>
<button onClick={onClose} className="p-1.5 rounded-lg hover:bg-[var(--bg-subtle)]"><X className="h-4 w-4 text-[var(--ink-muted)]" /></button>
<div className="flex items-center gap-1">
<button onClick={() => { if (confirm('确定删除此任务?')) { deleteTask(task.id); onClose(); } }} className="p-1.5 rounded-lg hover:bg-red-50 text-[var(--ink-muted)] hover:text-red-500" title="删除"><Trash2 className="h-4 w-4" /></button>
<button onClick={onClose} className="p-1.5 rounded-lg hover:bg-[var(--bg-subtle)]"><X className="h-4 w-4 text-[var(--ink-muted)]" /></button>
</div>
</div>
{/* 滚动区域 */}