fix(dev-task): 修复优先级无法手动选择的问题
优先级默认继承需求,用户手动修改后不再被覆盖。 Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -37,7 +37,8 @@ export function DevTaskCreateModal({ versionId, requirementIds, versionDeadline,
|
|||||||
const [requirementId, setRequirementId] = useState(versionReqs[0]?.id || '');
|
const [requirementId, setRequirementId] = useState(versionReqs[0]?.id || '');
|
||||||
const [categoryId, setCategoryId] = useState(categories[0]?.id || '');
|
const [categoryId, setCategoryId] = useState(categories[0]?.id || '');
|
||||||
const [assigneeId, setAssigneeId] = useState(user?.name || '');
|
const [assigneeId, setAssigneeId] = useState(user?.name || '');
|
||||||
const [priority, setPriority] = useState<Priority>('P2');
|
const [priority, setPriority] = useState<Priority>(versionReqs[0]?.priority || 'P2');
|
||||||
|
const [priorityManuallySet, setPriorityManuallySet] = useState(false);
|
||||||
const [estimateHours, setEstimateHours] = useState<number>(8);
|
const [estimateHours, setEstimateHours] = useState<number>(8);
|
||||||
const [dueDate, setDueDate] = useState('');
|
const [dueDate, setDueDate] = useState('');
|
||||||
const [predecessorIds, setPredecessorIds] = useState<string[]>([]);
|
const [predecessorIds, setPredecessorIds] = useState<string[]>([]);
|
||||||
@@ -45,7 +46,7 @@ export function DevTaskCreateModal({ versionId, requirementIds, versionDeadline,
|
|||||||
const [overdueReason, setOverdueReason] = useState('');
|
const [overdueReason, setOverdueReason] = useState('');
|
||||||
|
|
||||||
const selectedReq = versionReqs.find((r) => r.id === requirementId);
|
const selectedReq = versionReqs.find((r) => r.id === requirementId);
|
||||||
const effectivePriority = selectedReq?.priority || priority;
|
const effectivePriority = priorityManuallySet ? priority : (selectedReq?.priority || priority);
|
||||||
const isOverdue = !!(dueDate && versionDeadline && dueDate > versionDeadline);
|
const isOverdue = !!(dueDate && versionDeadline && dueDate > versionDeadline);
|
||||||
const canSubmit = title.trim() && requirementId && categoryId && assigneeId && estimateHours > 0 && (!isOverdue || overdueReason.trim());
|
const canSubmit = title.trim() && requirementId && categoryId && assigneeId && estimateHours > 0 && (!isOverdue || overdueReason.trim());
|
||||||
|
|
||||||
@@ -89,7 +90,7 @@ export function DevTaskCreateModal({ versionId, requirementIds, versionDeadline,
|
|||||||
</div>
|
</div>
|
||||||
<div>
|
<div>
|
||||||
<label className="block text-[12px] text-[var(--ink-soft)] mb-1">所属需求 *</label>
|
<label className="block text-[12px] text-[var(--ink-soft)] mb-1">所属需求 *</label>
|
||||||
<select value={requirementId} onChange={(e) => { setRequirementId(e.target.value); const r = versionReqs.find((x) => x.id === e.target.value); if (r) setPriority(r.priority); }} className="h-9 w-full rounded-lg border border-[var(--line)] bg-[var(--bg)] px-3 text-[13px] focus:border-[var(--accent)] focus:outline-none">
|
<select value={requirementId} onChange={(e) => { setRequirementId(e.target.value); const r = versionReqs.find((x) => x.id === e.target.value); if (r && !priorityManuallySet) setPriority(r.priority); }} className="h-9 w-full rounded-lg border border-[var(--line)] bg-[var(--bg)] px-3 text-[13px] focus:border-[var(--accent)] focus:outline-none">
|
||||||
{versionReqs.map((r) => <option key={r.id} value={r.id}>{r.code} {r.title}</option>)}
|
{versionReqs.map((r) => <option key={r.id} value={r.id}>{r.code} {r.title}</option>)}
|
||||||
</select>
|
</select>
|
||||||
</div>
|
</div>
|
||||||
@@ -111,7 +112,7 @@ export function DevTaskCreateModal({ versionId, requirementIds, versionDeadline,
|
|||||||
<div className="grid grid-cols-3 gap-3">
|
<div className="grid grid-cols-3 gap-3">
|
||||||
<div>
|
<div>
|
||||||
<label className="block text-[12px] text-[var(--ink-soft)] mb-1">优先级</label>
|
<label className="block text-[12px] text-[var(--ink-soft)] mb-1">优先级</label>
|
||||||
<select value={effectivePriority} onChange={(e) => setPriority(e.target.value as Priority)} className="h-9 w-full rounded-lg border border-[var(--line)] bg-[var(--bg)] px-3 text-[13px] focus:border-[var(--accent)] focus:outline-none">
|
<select value={effectivePriority} onChange={(e) => { setPriority(e.target.value as Priority); setPriorityManuallySet(true); }} className="h-9 w-full rounded-lg border border-[var(--line)] bg-[var(--bg)] px-3 text-[13px] focus:border-[var(--accent)] focus:outline-none">
|
||||||
{(['P0','P1','P2','P3'] as Priority[]).map((p) => <option key={p} value={p}>{p}</option>)}
|
{(['P0','P1','P2','P3'] as Priority[]).map((p) => <option key={p} value={p}>{p}</option>)}
|
||||||
</select>
|
</select>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
Reference in New Issue
Block a user