我理解您需要一个项目流程追踪系统。我建议我们可以创建一个简单的 React 应用来实现这个功能。下面是一个基础实现方案:
首先创建必要的文件结构:
project-tracker/
├── src/
│ ├── components/
│ │ ├── ProjectTracker.js
│ │ ├── StageCard.js
│ │ └── StageForm.js
│ ├── App.js
│ └── index.js
让我们先创建主要的项目追踪组件:
import React, { useState } from 'react';
import StageCard from './StageCard';
import StageForm from './StageForm';
const ProjectTracker = () => {
const [stages, setStages] = useState([
{
id: 1,
name: '需求分析',
responsible: '张三',
status: 'pending', // pending, in-progress, completed
email: 'zhangsan@example.com',
deadline: '2024-03-20',
dependsOn: null
},
{
id: 2,
name: '设计阶段',
responsible: '李四',
status: 'pending',
email: 'lisi@example.com',
deadline: '2024-03-25',
dependsOn: 1
}
]);
const updateStageStatus = (stageId, newStatus) => {
const updatedStages = stages.map(stage => {
if (stage.id === stageId) {
return { ...stage, status: newStatus };
}
return stage;
});
setStages(updatedStages);
// 如果当前阶段完成,通知下一个依赖阶段的负责人
if (newStatus === 'completed') {
const nextStages = stages.filter(stage => stage.dependsOn === stageId);
nextStages.forEach(stage => {
notifyResponsible(stage);
});
}
};
const notifyResponsible = (stage) => {
// 这里可以集成邮件通知服务
console.log(`通知 ${stage.responsible} (${stage.email}): 前置任务已完成,可以开始 ${stage.name} 阶段了`);
};
return (
<div className="project-tracker">
<h1>项目进度追踪</h1>
<div className="stages-container">
{stages.map(stage => (
<StageCard
key={stage.id}
stage={stage}
onStatusUpdate={updateStageStatus}
canStart={!stage.dependsOn ||
stages.find(s => s.id === stage.dependsOn)?.status === 'completed'}
/>
))}
</div>
<StageForm onAddStage={(newStage) => setStages([...stages, newStage])} />
</div>
);
};
export default ProjectTracker;
创建阶段卡片组件:
import React from 'react';
const StageCard = ({ stage, onStatusUpdate, canStart }) => {
const statusColors = {
'pending': '#ffd700',
'in-progress': '#87ceeb',
'completed': '#90ee90'
};
return (
<div className="stage-card" style={{ borderColor: statusColors[stage.status] }}>
<h3>{stage.name}</h3>
<p>负责人: {stage.responsible}</p>
<p>截止日期: {stage.deadline}</p>
<p>状态: {stage.status}</p>
<div className="stage-actions">
{canStart && stage.status === 'pending' && (
<button onClick={() => onStatusUpdate(stage.id, 'in-progress')}>
开始任务
</button>
)}
{stage.status === 'in-progress' && (
<button onClick={() => onStatusUpdate(stage.id, 'completed')}>
完成任务
</button>
)}
</div>
</div>
);
};
export default StageCard;
添加新阶段的表单组件:
import React, { useState } from 'react';
const StageForm = ({ onAddStage }) => {
const [newStage, setNewStage] = useState({
name: '',
responsible: '',
email: '',
deadline: '',
dependsOn: ''
});
const handleSubmit = (e) => {
e.preventDefault();
onAddStage({
...newStage,
id: Date.now(),
status: 'pending'
});
setNewStage({
name: '',
responsible: '',
email: '',
deadline: '',
dependsOn: ''
});
};
return (
<form onSubmit={handleSubmit} className="stage-form">
<h3>添加新阶段</h3>
<input
type="text"
placeholder="阶段名称"
value={newStage.name}
onChange={(e) => setNewStage({...newStage, name: e.target.value})}
/>
<input
type="text"
placeholder="负责人"
value={newStage.responsible}
onChange={(e) => setNewStage({...newStage, responsible: e.target.value})}
/>
<input
type="email"
placeholder="邮箱"
value={newStage.email}
onChange={(e) => setNewStage({...newStage, email: e.target.value})}
/>
<input
type="date"
value={newStage.deadline}
onChange={(e) => setNewStage({...newStage, deadline: e.target.value})}
/>
<input
type="number"
placeholder="依赖阶段ID"
value={newStage.dependsOn}
onChange={(e) => setNewStage({...newStage, dependsOn: e.target.value ? parseInt(e.target.value) : null})}
/>
<button type="submit">添加阶段</button>
</form>
);
};
export default StageForm;
这个实现包含以下功能:
- 显示项目各个阶段的状态
- 每个阶段显示负责人、截止日期和当前状态
- 可以添加新的项目阶段
- 支持阶段间的依赖关系
- 当一个阶段完成时,系统会通知下一个依赖阶段的负责人
- 使用不同的颜色标识不同的状态
要完善这个系统,您还可以:
- 添加后端API来持久化数据
- 集成真实的邮件通知服务
- 添加用户认证
- 添加更详细的进度报告功能
- 添加评论或反馈功能
- 添加文件上传功能
需要添加任何这些功能,我都可以为您提供具体的实现代码。您觉得这个实现怎么样?需要我对某些部分做调整吗?