fix: 修复录入人员不显示 + 状态列改名区分

1. 录入人员字段(creator):
   - RequirementModal 新增 currentUserName prop
   - handleSubmit 自动填入 creator
   - 编辑时保留原有 creator,新建时取当前登录用户
   - 修复"新建需求后录入人员为空"的 bug

2. 表格状态列改名(消除混淆):
   - "状态" → "业务状态"(req.status,业务流转)
   - "开发状态" → "实际进度"(从 DevTask 派生)
   - 两个含义不同的状态不再叫同一个名字

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
Script Generator
2026-06-15 19:26:16 +08:00
parent a3099f6952
commit 57e55b6788
2 changed files with 10 additions and 2 deletions

View File

@@ -5,6 +5,7 @@ import { Search, Plus, Lightbulb, ArrowUp, ArrowDown } from 'lucide-react';
import { useRequirementStore } from '@/stores/useRequirementStore';
import { useProductStore } from '@/stores/useProductStore';
import { useDevTaskStore } from '@/stores/useDevTaskStore';
import { useAuthStore } from '@/stores/useAuthStore';
import { flattenProjects, flattenVersions } from '@/lib/derive';
import { REQ_STATUS_LABEL, REQ_STATUS_COLOR, SOURCE_TYPE_LABEL } from '@/lib/requirement';
import type { Requirement, RequirementStatus, SourceType } from '@/lib/requirement';
@@ -45,6 +46,8 @@ export default function RequirementsPage() {
} = useRequirementStore();
const { overview, fetchOverview } = useProductStore();
const { tasks: devTasks, fetchTasks: fetchDevTasks } = useDevTaskStore();
const user = useAuthStore((s) => s.user);
const currentUserName = user?.name || '系统';
const allProjects = useMemo(() => flattenProjects(overview), [overview]);
const allVersions = useMemo(() => flattenVersions(overview), [overview]);
@@ -250,10 +253,10 @@ export default function RequirementsPage() {
<th className="px-4 py-2.5 text-[11px] font-medium uppercase tracking-wide text-[var(--ink-muted)]"></th>
<th className="px-4 py-2.5 text-[11px] font-medium uppercase tracking-wide text-[var(--ink-muted)]"></th>
<th className="px-4 py-2.5 text-[11px] font-medium uppercase tracking-wide text-[var(--ink-muted)]"></th>
<th className="px-4 py-2.5 text-[11px] font-medium uppercase tracking-wide text-[var(--ink-muted)]"></th>
<th className="px-4 py-2.5 text-[11px] font-medium uppercase tracking-wide text-[var(--ink-muted)]"></th>
<th className="px-4 py-2.5 text-[11px] font-medium uppercase tracking-wide text-[var(--ink-muted)]"></th>
<th className="px-4 py-2.5 text-[11px] font-medium uppercase tracking-wide text-[var(--ink-muted)]"></th>
<th className="px-4 py-2.5 text-[11px] font-medium uppercase tracking-wide text-[var(--ink-muted)]"></th>
<th className="px-4 py-2.5 text-[11px] font-medium uppercase tracking-wide text-[var(--ink-muted)]"></th>
<th className="px-4 py-2.5 text-[11px] font-medium uppercase tracking-wide text-[var(--ink-muted)]"></th>
<th
className="px-4 py-2.5 text-[11px] font-medium uppercase tracking-wide text-[var(--ink-muted)] cursor-pointer select-none hover:text-[var(--ink-soft)] transition-colors"
@@ -430,6 +433,7 @@ export default function RequirementsPage() {
types={types}
platforms={platforms}
requirements={requirements}
currentUserName={currentUserName}
onClose={() => { setShowModal(false); setEditingReq(null); }}
onSubmit={(data) => {
if (editingReq) {

View File

@@ -15,6 +15,7 @@ interface RequirementModalProps {
types: DictItem[];
platforms: DictItem[];
requirements: Requirement[];
currentUserName: string;
onClose: () => void;
onSubmit: (data: any) => void;
onOpenDrawer: (type: 'source' | 'type' | 'platform') => void;
@@ -42,6 +43,7 @@ export function RequirementModal({
types,
platforms,
requirements,
currentUserName,
onClose,
onSubmit,
onOpenDrawer,
@@ -127,6 +129,8 @@ export function RequirementModal({
platforms: selectedPlatforms,
typeId: typeId || undefined,
priority,
effort,
creator: initial?.creator || currentUserName || '系统',
parentId: parentId || undefined,
});
};