Skip to content

项目管理模块(yudao-module-project)功能方案设计与开发计划

生成日期:2026-03-26
用途:RuoYi Office 项目管理子模块的完整功能设计、数据库设计、前后端开发计划
参考:泛微 e-cology、蓝凌 MK 项目管理方案;本项目 OA、合同模块架构


一、需求概述与定位

1.1 产品定位

RuoYi Office 面向中小企业,项目管理模块的定位是:

  • 轻量化:不追求 Microsoft Project / JIRA 级别的重度功能,而是提供 80%+ 场景覆盖的实用功能
  • 一体化:与已有的合同管理、OA 审批、工作流引擎深度集成
  • 可视化:甘特图、里程碑看板、项目统计大屏等核心可视化能力
  • 协同化:任务分配、进度汇报、文档共享、工时统计形成闭环

1.2 核心用户角色

角色使用场景
项目经理创建项目、分解任务、跟踪进度、管理资源、控制成本
项目成员接收任务、填报工时、提交交付物、更新进度
部门领导审批立项、查看部门项目总览、资源协调
企业高管项目统计大屏、项目绩效分析

1.3 竞品功能对标分析

功能维度泛微 e-cology蓝凌 MK本系统(规划)
项目立项与审批✅ 流程驱动✅ BPM集成✅ Flowable BPM
项目分类/模板✅ 简化版
任务 WBS 分解✅ 多级✅ 多级✅ 3级(项目→阶段→任务)
甘特图✅ dhtmlx-gantt
里程碑管理
资源/成员管理✅ 复杂✅ 复杂✅ 简化版(成员角色)
工时管理
成本管理✅ 复杂✅ 复杂✅ 简化版(预算+实际)
风险管理✅ 简化版
文档管理✅ 独立模块✅ 独立模块✅ 复用 OA 云盘
项目变更✅ BPM审批
统计报表✅ 复杂✅ 复杂✅ 项目看板+统计
合同关联部分部分✅ 深度集成
移动端✅ UniApp

二、功能模块总览

项目管理 (project)
├── 1. 项目配置(基础数据)
│   ├── 1.1 项目分类管理
│   ├── 1.2 项目模板管理
│   └── 1.3 项目配置(编号规则、提醒等)

├── 2. 项目立项与管理
│   ├── 2.1 项目立项(含BPM审批)
│   ├── 2.2 项目信息维护
│   ├── 2.3 项目成员管理
│   ├── 2.4 项目变更(含BPM审批)
│   ├── 2.5 项目结项/归档
│   └── 2.6 项目与合同关联

├── 3. 任务管理
│   ├── 3.1 任务分解(WBS)
│   ├── 3.2 任务指派与执行
│   ├── 3.3 甘特图视图
│   ├── 3.4 看板视图(卡片拖拽)
│   └── 3.5 任务依赖关系

├── 4. 里程碑管理
│   ├── 4.1 里程碑定义
│   ├── 4.2 里程碑跟踪
│   └── 4.3 里程碑时间线视图

├── 5. 工时管理
│   ├── 5.1 工时填报
│   ├── 5.2 工时审核
│   └── 5.3 工时统计

├── 6. 成本与预算
│   ├── 6.1 项目预算
│   └── 6.2 实际成本记录

├── 7. 风险与问题
│   ├── 7.1 风险登记
│   └── 7.2 问题跟踪

├── 8. 项目文档
│   └── 8.1 项目文件夹(复用OA云盘)

└── 9. 统计与报表
    ├── 9.1 项目概览看板
    ├── 9.2 项目进度统计
    ├── 9.3 工时统计报表
    └── 9.4 成本分析报表

三、数据库设计

3.1 ER 关系概览

project_category (项目分类)


project_template (项目模板)


project_info (项目主表) ◄────── project_member (项目成员)
       │                            │
       ├──► project_milestone (里程碑)

       ├──► project_task (任务) ◄────── project_task_link (任务依赖)
       │         │
       │         ├──► project_worktime (工时)
       │         └──► project_task_comment (任务评论)

       ├──► project_budget (预算与成本)

       ├──► project_risk (风险/问题)

       ├──► project_change (项目变更)

       └──► contract_info (关联合同, 跨模块)
       
project_config (全局配置, 每租户一条)

3.2 表结构详细设计

3.2.1 project_category - 项目分类表

字段类型说明
idbigint PK分类ID
namevarchar(128)分类名称
codevarchar(64)分类编码
parent_idbigint父分类ID
sortint排序
statustinyint状态(0正常 1停用)
remarkvarchar(512)备注
公共字段creator/create_time/updater/update_time/deleted/tenant_id

3.2.2 project_template - 项目模板表

字段类型说明
idbigint PK模板ID
namevarchar(255)模板名称
category_idbigint FK项目分类ID
descriptiontext模板说明
default_daysint默认工期(天)
template_tasksjson模板任务列表(JSON,含阶段和任务结构)
statustinyint状态
sortint排序
公共字段

3.2.3 project_info - 项目主表

字段类型说明
idbigint PK项目ID
project_codevarchar(64) UK项目编号
project_namevarchar(255)项目名称
category_idbigint FK项目分类ID
project_typetinyint项目类型(1内部项目 2外部项目 3研发项目 4实施项目 99其他)
prioritytinyint优先级(1低 2中 3高 4紧急)
statustinyint项目状态(0草稿 1立项审批中 2进行中 3暂停 4已完成 5已终止 6已归档)
descriptiontext项目描述
plan_start_datedate计划开始日期
plan_end_datedate计划结束日期
actual_start_datedate实际开始日期
actual_end_datedate实际结束日期
progressdecimal(5,2)总体进度(0-100%)
budget_amountdecimal(18,2)项目预算
actual_costdecimal(18,2)实际成本
manager_user_idbigint项目经理ID
manager_user_namevarchar(64)项目经理姓名
dept_idbigint所属部门ID
dept_namevarchar(128)所属部门名称
company_idbigint所属公司ID
company_namevarchar(255)所属公司名称
contract_idbigint关联合同ID(与合同模块对接)
contract_codevarchar(64)关联合同编号
contract_namevarchar(255)关联合同名称
customer_namevarchar(255)客户/甲方名称
process_instance_idvarchar(64)流程实例ID(立项审批)
process_statustinyint审批状态
file_urlsjson附件
remarktext备注
公共字段

索引: uk_project_code(project_code, tenant_id), idx_category_id, idx_status, idx_manager_user_id, idx_contract_id, idx_dept_id, idx_plan_end_date

3.2.4 project_member - 项目成员表

字段类型说明
idbigint PKID
project_idbigint FK项目ID
user_idbigint用户ID
user_namevarchar(64)用户姓名
role_typetinyint角色类型(1项目经理 2技术负责人 3项目成员 4观察者)
join_datedate加入日期
leave_datedate离开日期
statustinyint状态(0正常 1已移除)
remarkvarchar(512)备注
公共字段

索引: idx_project_id, uk_project_user(project_id, user_id)

3.2.5 project_task - 任务表

字段类型说明
idbigint PK任务ID
project_idbigint FK项目ID
parent_idbigint父任务ID(0为顶级,支持 项目→阶段→任务 三级)
task_namevarchar(255)任务名称
task_typetinyint任务类型(1阶段 2普通任务 3里程碑任务)
prioritytinyint优先级(1低 2中 3高 4紧急)
statustinyint状态(0待开始 1进行中 2已完成 3已取消 4已延期)
descriptiontext任务描述
assignee_user_idbigint负责人ID
assignee_user_namevarchar(64)负责人姓名
plan_start_datedatetime计划开始时间
plan_end_datedatetime计划结束时间
actual_start_datedatetime实际开始时间
actual_end_datedatetime实际结束时间
estimated_hoursdecimal(8,1)预估工时(小时)
actual_hoursdecimal(8,1)实际工时(汇总)
progressdecimal(5,2)完成进度(0-100%)
sortint排序(甘特图行序)
milestone_idbigint关联里程碑ID
file_urlsjson附件
remarktext备注
公共字段

索引: idx_project_id, idx_parent_id, idx_assignee_user_id, idx_status, idx_milestone_id

设计说明task_type=1 为阶段节点(甘特图中的 Summary Task),task_type=3 为里程碑任务(甘特图中的 Milestone,duration=0)。三级结构:项目 → 阶段(parent_id=0) → 任务(parent_id=阶段ID),足够覆盖中小企业场景。

字段类型说明
idbigint PKID
project_idbigint项目ID
source_task_idbigint FK前置任务ID
target_task_idbigint FK后置任务ID
link_typetinyint依赖类型(0 FS完成-开始 1 SS开始-开始 2 FF完成-完成 3 SF开始-完成)
lagint延迟天数(可为负)
公共字段

索引: idx_project_id, uk_link(source_task_id, target_task_id)

3.2.7 project_milestone - 里程碑表

字段类型说明
idbigint PK里程碑ID
project_idbigint FK项目ID
namevarchar(255)里程碑名称
descriptiontext里程碑描述
plan_datedate计划达成日期
actual_datedate实际达成日期
statustinyint状态(0未达成 1已达成 2已逾期 3已取消)
sortint排序
deliverablestext交付物说明
file_urlsjson附件
remarkvarchar(512)备注
公共字段

索引: idx_project_id, idx_plan_date, idx_status

3.2.8 project_worktime - 工时记录表

字段类型说明
idbigint PKID
project_idbigint FK项目ID
task_idbigint FK任务ID
user_idbigint填报人ID
user_namevarchar(64)填报人姓名
work_datedate工作日期
work_hoursdecimal(4,1)工作时长(小时)
work_contenttext工作内容
statustinyint状态(0待审核 1已通过 2已驳回)
reviewer_user_idbigint审核人ID
review_timedatetime审核时间
review_remarkvarchar(512)审核备注
公共字段

索引: idx_project_id, idx_task_id, idx_user_id, idx_work_date

3.2.9 project_budget - 项目预算/成本表

字段类型说明
idbigint PKID
project_idbigint FK项目ID
budget_typetinyint类型(1预算 2实际成本)
cost_categorytinyint费用类别(1人工 2设备 3材料 4外包 5差旅 6其他)
amountdecimal(18,2)金额
occur_datedate发生日期
descriptionvarchar(512)说明
file_urlsjson附件凭证
related_bill_typevarchar(32)关联单据类型(合同/报销单等)
related_bill_idbigint关联单据ID
remarkvarchar(512)备注
公共字段

索引: idx_project_id, idx_budget_type, idx_cost_category

3.2.10 project_risk - 风险/问题登记表

字段类型说明
idbigint PKID
project_idbigint FK项目ID
typetinyint类型(1风险 2问题)
titlevarchar(255)标题
descriptiontext详细描述
leveltinyint等级(1低 2中 3高 4严重)
statustinyint状态(0待处理 1处理中 2已解决 3已关闭 4已忽略)
owner_user_idbigint负责人ID
owner_user_namevarchar(64)负责人姓名
plan_resolve_datedate计划解决日期
actual_resolve_datedate实际解决日期
solutiontext解决方案/应对措施
remarkvarchar(512)备注
公共字段

索引: idx_project_id, idx_type, idx_status, idx_owner_user_id

3.2.11 project_change - 项目变更表

字段类型说明
idbigint PKID
project_idbigint FK项目ID
change_codevarchar(64)变更编号
change_typetinyint变更类型(1范围 2进度 3预算 4人员 99其他)
change_reasontext变更原因
change_contenttext变更内容说明
original_valuetext变更前(快照)
new_valuetext变更后
process_instance_idvarchar(64)审批流程ID
process_statustinyint审批状态
file_urlsjson附件
remarktext备注
公共字段

索引: uk_change_code(change_code, tenant_id), idx_project_id

3.2.12 project_task_comment - 任务评论表

字段类型说明
idbigint PKID
project_idbigint项目ID
task_idbigint FK任务ID
contenttext评论内容
file_urlsjson附件
公共字段

索引: idx_task_id

3.2.13 project_config - 项目配置表

字段类型说明
idbigint PK配置ID
code_prefixvarchar(16)项目编号前缀(默认 'PJ')
code_date_formatvarchar(16)编号日期格式(默认 'yyyyMMdd')
code_seq_lengthint流水号位数(默认 4)
default_work_hoursdecimal(4,1)每日标准工时(默认 8.0)
overdue_notify_enabledbit是否开启逾期提醒
overdue_notify_daysint提前提醒天数(默认 3)
milestone_notify_enabledbit是否开启里程碑提醒
milestone_notify_daysint里程碑提前提醒天数(默认 7)
公共字段

3.3 表关系汇总

13 张表,核心关联关系:

关系说明
project_info → project_category分类归属
project_info → project_member一对多,项目成员
project_info → project_task一对多,项目任务(含阶段)
project_info → project_milestone一对多,里程碑
project_info → project_budget一对多,预算/成本
project_info → project_risk一对多,风险/问题
project_info → project_change一对多,变更记录
project_info → contract_info多对一,关联合同(跨模块)
project_task → project_task_link多对多,任务依赖
project_task → project_worktime一对多,工时记录
project_task → project_task_comment一对多,任务评论
project_task → project_milestone多对一,任务归属里程碑

四、与合同模块的关联对接设计

4.1 对接方式

采用松耦合的关联设计,通过以下两种方式对接:

方式一:project_info 直接冗余合同信息

project_info.contract_id      → contract_info.id
project_info.contract_code    → contract_info.contract_code(冗余)
project_info.contract_name    → contract_info.contract_name(冗余)
project_info.customer_name    → contract_info.party_b_name(冗余)

项目立项时通过「选择合同」弹窗关联,后续合同信息更新时不自动同步(冗余快照)。

方式二:contract_info 反向关联项目

合同主表已有 biz_type + biz_id 字段,可以在合同创建/编辑时反向关联项目:

contract_info.biz_type = 'project'
contract_info.biz_id   = project_info.id

4.2 API 对接

  1. project-server → contract-api:调用 ContractInfoApi.getContract() 获取合同详情
  2. contract-server → project-api:调用 ProjectInfoApi.getProjectByContractId() 获取项目信息
  3. project_budget 关联合同付款:通过 related_bill_type='contract_payment' + related_bill_id 关联合同收付款计划

4.3 业务联动场景

场景处理方式
项目立项时选择合同弹窗选择合同,自动填充预算金额、客户信息
合同详情查看关联项目contract_info 页面增加「关联项目」Tab
合同履约与项目里程碑联动项目里程碑达成时自动创建合同履约记录
项目成本与合同付款计划对比预算分析报表中关联展示合同付款进度

五、甘特图与里程碑技术实现方案

5.1 甘特图技术选型

方案协议下载量Vue3支持功能丰富度推荐度
dhtmlx-ganttGPL-2.020K/周✅ 官方指南⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐
vue-ganttasticMIT6K/周✅ 原生Vue3⭐⭐⭐⭐⭐⭐
gantt-elasticMIT-❌ Vue2⭐⭐⭐⭐⭐

推荐方案:dhtmlx-gantt(Standard 版)

理由:

  • GPL-2.0 开源协议,项目自用无问题
  • 功能最完整:任务依赖4种类型、拖拽调整、自动排程、关键路径(PRO版)、智能渲染
  • 20K 周下载量,社区活跃,文档完善
  • 官方提供 Vue 集成指南
  • 7 种主题皮肤,与 Ant Design 风格可融合

5.2 甘特图数据交互设计

后端 API(/project/gantt

GET  /project/gantt/data?projectId={id}     → 返回甘特图数据(任务+链接)
POST /project/gantt/task                     → 新增任务
PUT  /project/gantt/task                     → 更新任务(拖拽修改)
DELETE /project/gantt/task?id={id}           → 删除任务
POST /project/gantt/link                     → 新增依赖
DELETE /project/gantt/link?id={id}           → 删除依赖

甘特图数据格式(与 dhtmlx-gantt 兼容)

json
{
  "data": [
    {
      "id": 1,
      "text": "阶段一:需求分析",
      "start_date": "2026-04-01",
      "duration": 10,
      "progress": 0.6,
      "parent": 0,
      "type": "project",
      "open": true
    },
    {
      "id": 2,
      "text": "需求调研",
      "start_date": "2026-04-01",
      "duration": 5,
      "progress": 1.0,
      "parent": 1,
      "type": "task",
      "assignee": "张三"
    },
    {
      "id": 3,
      "text": "需求评审",
      "start_date": "2026-04-08",
      "duration": 0,
      "parent": 1,
      "type": "milestone"
    }
  ],
  "links": [
    { "id": 1, "source": 2, "target": 3, "type": "0" }
  ]
}

5.3 里程碑视图设计

提供两种里程碑视图:

  1. 时间线视图:横向时间轴,用标记点标注每个里程碑,颜色区分状态
  2. 列表视图:表格展示里程碑名称、计划日期、实际日期、状态、偏差天数

里程碑在甘特图中以菱形标记(duration=0)显示,与 dhtmlx-gantt 的 milestone 类型天然兼容。

5.4 移动端方案

移动端不使用甘特图(横屏体验差),替代方案:

  • 任务列表:卡片式列表,按状态筛选
  • 里程碑时间线:纵向时间线组件展示
  • 进度环形图:项目整体进度用环形进度条展示

六、后端 API 设计

6.1 Controller 路由规划

Controller路径前缀说明
ProjectCategoryController/project/category分类 CRUD
ProjectTemplateController/project/template模板 CRUD
ProjectInfoController/project/info项目台账(CRUD、审批、统计)
ProjectMemberController/project/member成员管理
ProjectTaskController/project/task任务 CRUD
ProjectGanttController/project/gantt甘特图数据接口
ProjectMilestoneController/project/milestone里程碑 CRUD
ProjectWorktimeController/project/worktime工时管理
ProjectBudgetController/project/budget预算/成本
ProjectRiskController/project/risk风险/问题
ProjectChangeController/project/change变更管理
ProjectStatsController/project/stats统计报表
ProjectConfigController/project/config项目配置

6.2 核心 API 接口列表

项目信息

接口方法路径说明
分页列表GET/project/info/page支持状态、分类、经理等筛选
详情GET/project/info/get?id=返回项目详情含成员列表
保存草稿POST/project/info/save保存/新建项目
提交审批POST/project/info/submit提交立项审批
更新PUT/project/info/update更新项目信息
删除DELETE/project/info/delete?id=删除项目
完成结项PUT/project/info/complete?id=项目结项
生成编号GET/project/info/generate-code自动生成项目编号
精简列表GET/project/info/simple-list下拉选择用
导出GET/project/info/export-excelExcel 导出

任务管理

接口方法路径说明
任务树GET/project/task/tree?projectId=按项目获取任务树
任务列表GET/project/task/page分页+筛选
我的任务GET/project/task/my-page当前用户的任务
创建POST/project/task/create新增任务
更新PUT/project/task/update更新任务
更新进度PUT/project/task/update-progress快速更新进度
更新状态PUT/project/task/update-status快速更新状态
删除DELETE/project/task/delete?id=删除任务
批量排序PUT/project/task/batch-sort甘特图拖拽后批量更新排序

甘特图

接口方法路径说明
获取数据GET/project/gantt/data?projectId=返回 dhtmlx-gantt 格式数据
更新任务PUT/project/gantt/task甘特图拖拽更新
创建链接POST/project/gantt/link新增依赖关系
删除链接DELETE/project/gantt/link?id=删除依赖关系

工时

接口方法路径说明
填报POST/project/worktime/create填报工时
我的工时GET/project/worktime/my-page查看我的工时
审核PUT/project/worktime/review审核工时
统计GET/project/worktime/statistics工时统计

统计

接口方法路径说明
概览GET/project/stats/overview项目总数、进行中、延期等
进度统计GET/project/stats/progress各项目进度对比
工时统计GET/project/stats/worktime部门/人员工时分布
成本分析GET/project/stats/cost预算vs实际成本分析

七、前端页面设计

7.1 PC 端页面结构(web-antd)

views/project/
├── category/                    # 项目分类
│   ├── index.vue               # 树形列表(参考合同分类)
│   ├── data.ts
│   └── modules/form.vue

├── template/                    # 项目模板
│   ├── index.vue               # 列表
│   ├── data.ts
│   └── modules/form.vue

├── info/                        # 项目台账
│   ├── list/                   # 项目列表
│   │   ├── index.vue           # VxeGrid + 筛选
│   │   └── data.ts
│   └── detail/                 # 项目详情(Tab页签布局)
│       ├── index.vue           # 详情主页面
│       ├── data.ts
│       └── components/
│           ├── basic-info.vue          # 基本信息Tab
│           ├── member-list.vue         # 成员管理Tab
│           ├── gantt-view.vue          # 甘特图Tab(dhtmlx-gantt)
│           ├── task-board.vue          # 看板视图Tab
│           ├── milestone-list.vue      # 里程碑Tab
│           ├── worktime-list.vue       # 工时Tab
│           ├── budget-list.vue         # 预算/成本Tab
│           ├── risk-list.vue           # 风险/问题Tab
│           ├── change-list.vue         # 变更记录Tab
│           ├── document-list.vue       # 项目文档Tab
│           └── contract-info.vue       # 关联合同Tab

├── task/                        # 我的任务(个人视角)
│   ├── list/
│   │   ├── index.vue
│   │   └── data.ts
│   └── info/
│       ├── index.vue           # 任务详情/编辑
│       └── data.ts

├── worktime/                    # 工时管理
│   ├── fill/                   # 工时填报
│   │   ├── index.vue
│   │   └── data.ts
│   └── review/                 # 工时审核
│       ├── index.vue
│       └── data.ts

├── change/                      # 项目变更(BPM)
│   ├── list/
│   │   ├── index.vue
│   │   └── data.ts
│   └── info/
│       ├── index.vue
│       └── data.ts

├── stats/                       # 统计报表
│   ├── index.vue               # 项目看板/大屏
│   └── data.ts

├── config/                      # 项目配置
│   ├── index.vue
│   └── data.ts

└── components/                  # 公共组件
    ├── project-select-modal.vue        # 项目选择弹窗
    ├── project-select-data.ts
    ├── contract-select-modal.vue       # 合同选择弹窗
    ├── contract-select-data.ts
    ├── member-select-modal.vue         # 成员选择弹窗
    ├── task-status-tag.vue             # 任务状态标签
    └── index.ts

7.2 前端 API 结构

api/project/
├── index.ts                    # 模块导出
├── category/index.ts           # 分类 API
├── template/index.ts           # 模板 API
├── info/index.ts               # 项目 API
├── member/index.ts             # 成员 API
├── task/index.ts               # 任务 API
├── gantt/index.ts              # 甘特图 API
├── milestone/index.ts          # 里程碑 API
├── worktime/index.ts           # 工时 API
├── budget/index.ts             # 预算 API
├── risk/index.ts               # 风险 API
├── change/index.ts             # 变更 API
├── stats/index.ts              # 统计 API
└── config/index.ts             # 配置 API

7.3 移动端页面结构(UniApp)

pages-project/                   # 分包
├── index.vue                   # 项目列表
├── create/index.vue            # 创建项目
├── detail/index.vue            # 项目详情(Tab:基础/任务/里程碑/成员)
├── task/
│   ├── index.vue               # 任务列表(按项目筛选)
│   └── detail/index.vue        # 任务详情(支持嵌入审批)
├── worktime/
│   ├── index.vue               # 工时填报列表
│   └── fill/index.vue          # 工时填报表单
├── milestone/
│   └── index.vue               # 里程碑时间线
└── components/
    └── search-form.vue         # 搜索表单

api/project/
├── index.ts                    # 项目列表/详情 API
├── task/index.ts               # 任务 API
├── worktime/index.ts           # 工时 API
└── milestone/index.ts          # 里程碑 API

7.4 项目详情页核心交互设计

项目详情页采用 Tab 页签 布局,这是项目管理的核心页面:

┌─────────────────────────────────────────────────────────────┐
│  项目详情:XXX项目                                [编辑] [更多▼]  │
├─────────────────────────────────────────────────────────────┤
│  项目编号:PJ20260401001    状态:进行中    进度:65%           │
│  项目经理:张三    部门:技术部    预算:50万 / 实际:32万       │
│  计划:2026-04-01 ~ 2026-12-31    合同:HT20260301001        │
├─────────────────────────────────────────────────────────────┤
│ [基本信息] [甘特图] [看板] [任务] [里程碑] [成员] [工时]      │
│ [预算/成本] [风险/问题] [变更] [文档] [关联合同]              │
├─────────────────────────────────────────────────────────────┤
│                                                             │
│  ┌─ 甘特图视图 ──────────────────────────────────────────┐  │
│  │ 任务名称         │ 4月      5月      6月      7月     │  │
│  │ ├ 阶段一:需求    │ ████████                          │  │
│  │ │ ├ 需求调研     │ ████                               │  │
│  │ │ ├ 需求评审 ◆   │     ◆                              │  │
│  │ │ └ 需求文档     │   ████                             │  │
│  │ ├ 阶段二:开发    │         ████████████               │  │
│  │ │ ├ 后端开发     │         ████████                    │  │
│  │ │ ├ 前端开发     │           ██████                    │  │
│  │ │ └ 联调测试     │                 ████                │  │
│  │ └ 阶段三:上线    │                      ██████        │  │
│  └───────────────────────────────────────────────────────┘  │
└─────────────────────────────────────────────────────────────┘

八、后端包结构设计

cn.iocoder.yudao.module.project
├── controller/admin/
│   ├── category/
│   │   ├── ProjectCategoryController.java
│   │   └── vo/
│   ├── template/
│   │   ├── ProjectTemplateController.java
│   │   └── vo/
│   ├── info/
│   │   ├── ProjectInfoController.java
│   │   └── vo/
│   ├── member/
│   │   ├── ProjectMemberController.java
│   │   └── vo/
│   ├── task/
│   │   ├── ProjectTaskController.java
│   │   └── vo/
│   ├── gantt/
│   │   ├── ProjectGanttController.java
│   │   └── vo/
│   ├── milestone/
│   │   ├── ProjectMilestoneController.java
│   │   └── vo/
│   ├── worktime/
│   │   ├── ProjectWorktimeController.java
│   │   └── vo/
│   ├── budget/
│   │   ├── ProjectBudgetController.java
│   │   └── vo/
│   ├── risk/
│   │   ├── ProjectRiskController.java
│   │   └── vo/
│   ├── change/
│   │   ├── ProjectChangeController.java
│   │   └── vo/
│   ├── stats/
│   │   ├── ProjectStatsController.java
│   │   └── vo/
│   └── config/
│       ├── ProjectConfigController.java
│       └── vo/
├── service/
│   ├── category/
│   ├── template/
│   ├── info/
│   ├── member/
│   ├── task/
│   ├── gantt/
│   ├── milestone/
│   ├── worktime/
│   ├── budget/
│   ├── risk/
│   ├── change/
│   ├── stats/
│   └── config/
├── dal/
│   ├── dataobject/
│   │   ├── category/ProjectCategoryDO.java
│   │   ├── template/ProjectTemplateDO.java
│   │   ├── info/ProjectInfoDO.java
│   │   ├── member/ProjectMemberDO.java
│   │   ├── task/ProjectTaskDO.java
│   │   ├── task/ProjectTaskLinkDO.java
│   │   ├── task/ProjectTaskCommentDO.java
│   │   ├── milestone/ProjectMilestoneDO.java
│   │   ├── worktime/ProjectWorktimeDO.java
│   │   ├── budget/ProjectBudgetDO.java
│   │   ├── risk/ProjectRiskDO.java
│   │   ├── change/ProjectChangeDO.java
│   │   └── config/ProjectConfigDO.java
│   └── mysql/
│       ├── category/ProjectCategoryMapper.java
│       ├── template/ProjectTemplateMapper.java
│       ├── info/ProjectInfoMapper.java
│       ├── member/ProjectMemberMapper.java
│       ├── task/ProjectTaskMapper.java
│       ├── task/ProjectTaskLinkMapper.java
│       ├── task/ProjectTaskCommentMapper.java
│       ├── milestone/ProjectMilestoneMapper.java
│       ├── worktime/ProjectWorktimeMapper.java
│       ├── budget/ProjectBudgetMapper.java
│       ├── risk/ProjectRiskMapper.java
│       ├── change/ProjectChangeMapper.java
│       └── config/ProjectConfigMapper.java
├── convert/
│   └── (MapStruct 转换器,按需创建)
├── framework/
│   ├── rpc/config/RpcConfiguration.java
│   └── security/config/SecurityConfiguration.java
└── process/
    ├── local/ProjectLocalNotificationListener.java
    └── feign/ProjectFeignNotificationController.java

九、开发计划与迭代安排

9.1 整体规划

阶段内容预估工期优先级
P0 基础设施数据库建表、DO/Mapper/基础CRUD3天最高
P1 核心功能项目立项(含BPM)、任务管理、甘特图8天最高
P2 协同功能成员管理、工时管理、里程碑5天
P3 管控功能预算成本、风险问题、项目变更4天
P4 看板统计项目看板、统计报表、导出3天
P5 合同对接与合同模块的关联对接2天
P6 移动端UniApp 移动端页面5天
P7 配置完善分类模板、项目配置、权限菜单2天

总预估:32 个工作日(约 6.5 周)

9.2 详细迭代计划

迭代一:P0 基础设施(第1-3天)

目标:搭建数据层,所有表结构就绪,基础 CRUD 可用

序号任务输出物工期
1.1数据库建表脚本(13张表)SQL 文件0.5天
1.2DO 类开发(13个)Java DO0.5天
1.3Mapper 接口(13个)Java Mapper0.5天
1.4项目分类 CRUD(前后端)Controller + Service + 前端页面0.5天
1.5项目模板 CRUD(前后端)Controller + Service + 前端页面0.5天
1.6项目配置功能(前后端)Controller + Service + 前端页面0.5天

迭代二:P1 核心功能(第4-11天)

目标:项目立项全流程跑通,甘特图可用

序号任务输出物工期
2.1项目信息后端 CRUDService + Controller + VO1天
2.2项目列表前端页面VxeGrid 列表 + 筛选0.5天
2.3项目详情页框架(Tab布局)详情主页面 + 基本信息Tab1天
2.4项目立项 BPM 集成保存/提交/审批回调1天
2.5任务管理后端 CRUDService + Controller + VO1天
2.6任务前端页面(列表+详情)任务列表 + 任务详情/编辑1天
2.7dhtmlx-gantt 集成Vue3 组件封装0.5天
2.8甘特图 Tab 页面开发数据加载 + 拖拽交互 + 保存1.5天
2.9任务依赖关系(Link)后端 + 甘特图依赖线0.5天

迭代三:P2 协同功能(第12-16天)

目标:项目成员、工时填报、里程碑管理可用

序号任务输出物工期
3.1项目成员管理(前后端)成员 Tab + 成员增删1天
3.2里程碑管理后端Service + Controller0.5天
3.3里程碑前端(列表+时间线)里程碑 Tab + 时间线视图1天
3.4工时管理后端Service + Controller0.5天
3.5工时填报前端工时填报 + 我的工时1天
3.6工时审核前端审核列表 + 审核操作0.5天
3.7任务评论功能后端 + 前端评论组件0.5天

迭代四:P3 管控功能(第17-20天)

目标:预算成本、风险管理、项目变更功能完成

序号任务输出物工期
4.1预算/成本管理(前后端)预算 Tab1天
4.2风险/问题管理(前后端)风险 Tab1天
4.3项目变更管理(含BPM)变更单 + BPM审批1.5天
4.4项目结项/归档结项流程0.5天

迭代五:P4 看板统计(第21-23天)

目标:项目管理驾驶舱可用

序号任务输出物工期
5.1项目概览看板后端统计接口0.5天
5.2项目看板前端卡片看板 + 图表1.5天
5.3看板视图(任务拖拽)Kanban 卡片视图0.5天
5.4Excel 导出功能项目列表 + 任务列表导出0.5天

迭代六:P5 合同对接(第24-25天)

目标:与合同模块数据联通

序号任务输出物工期
6.1project-api 提供 RPC 接口ProjectInfoApi0.5天
6.2项目立项关联合同选择合同选择弹窗 + 数据填充0.5天
6.3合同详情增加关联项目展示合同详情增加 Tab0.5天
6.4里程碑→合同履约联动自动创建履约记录0.5天

迭代七:P6 移动端(第26-30天)

目标:移动端核心流程可用

序号任务输出物工期
7.1移动端 API 层api/project/*0.5天
7.2项目列表页pages-project/index.vue0.5天
7.3项目详情页pages-project/detail/index.vue1天
7.4任务列表 + 详情pages-project/task/*1天
7.5工时填报移动端pages-project/worktime/*0.5天
7.6里程碑时间线pages-project/milestone/*0.5天
7.7BPM 审批集成(立项/变更)bpm-menu-config + form-detail 注册0.5天
7.8工作台菜单注册menu-config.ts 添加项目管理分组0.5天

迭代八:P7 配置完善(第31-32天)

目标:菜单权限、数据字典配置就绪

序号任务输出物工期
8.1系统菜单 SQLINSERT system_menu0.5天
8.2数据字典 SQL项目类型/状态/优先级等字典0.5天
8.3权限码整理与测试各接口 PreAuthorize 权限0.5天
8.4整体联调测试全流程走通验证0.5天

十、权限设计

10.1 菜单结构

项目管理 (project)
├── 项目台账 (/project/info)
│   ├── project:info:query         查询
│   ├── project:info:create        创建
│   ├── project:info:update        编辑
│   ├── project:info:delete        删除
│   └── project:info:export        导出
├── 我的任务 (/project/task)
│   ├── project:task:query
│   ├── project:task:create
│   ├── project:task:update
│   └── project:task:delete
├── 工时管理 (/project/worktime)
│   ├── 工时填报 (/project/worktime/fill)
│   │   ├── project:worktime:create
│   │   └── project:worktime:query
│   └── 工时审核 (/project/worktime/review)
│       └── project:worktime:review
├── 项目变更 (/project/change)
│   ├── project:change:query
│   ├── project:change:create
│   └── project:change:delete
├── 项目统计 (/project/stats)
│   └── project:stats:query
├── 项目分类 (/project/category)
│   ├── project:category:query
│   ├── project:category:create
│   ├── project:category:update
│   └── project:category:delete
├── 项目模板 (/project/template)
│   ├── project:template:query
│   ├── project:template:create
│   ├── project:template:update
│   └── project:template:delete
└── 项目配置 (/project/config)
    ├── project:config:query
    └── project:config:update

十一、技术要点与注意事项

11.1 甘特图集成要点

  1. dhtmlx-gantt 安装npm install dhtmlx-gantt(Standard GPL 版本)
  2. Vue3 封装:创建 GanttChart.vue 组件,在 onMountedgantt.init(),在 onBeforeUnmountgantt.destructor()
  3. 数据同步:监听 onAfterTaskDragonAfterLinkAddonAfterLinkDelete 等事件,实时调用后端 API
  4. 智能渲染:开启 gantt.config.smart_rendering = true,支持大量任务
  5. 中文化:加载 dhtmlx-gantt/codebase/locale/locale_cn.js
  6. 皮肤:使用 Material 主题,与 Ant Design 风格协调

11.2 BPM 流程集成

  1. 项目立项审批:参考 OA 用车申请的 save/submit 模式
  2. 项目变更审批:参考合同变更的 BPM 集成
  3. 流程回调处理ProjectLocalNotificationListenerProjectFeignNotificationController
  4. 流程定义 Keyproject_create(立项)、project_change(变更)

11.3 进度自动计算

  • 阶段进度 = 子任务进度加权平均(按预估工时加权)
  • 项目总进度 = 所有阶段进度加权平均
  • 任务更新进度时,自动触发父级和项目进度重算

11.4 数据权限

  • 项目数据权限:基于 dept_id 字段,配合 @DataPermission 注解
  • 任务查看权限:项目成员可见本项目所有任务
  • 工时:仅本人可填报,项目经理可审核

11.5 与 OA 模块的复用

  • 文档管理:直接复用 OA 云盘的文件管理功能,通过 biz_type='project' + biz_id=项目ID 关联
  • 审批流程:复用 BPM 模块的 Flowable 工作流引擎
  • 组织架构:复用系统模块的用户/部门/公司数据

十二、数据字典设计

字典类型字典编码字典值
项目类型project_type1内部项目 2外部项目 3研发项目 4实施项目 99其他
项目状态project_status0草稿 1立项审批中 2进行中 3暂停 4已完成 5已终止 6已归档
项目优先级project_priority1低 2中 3高 4紧急
任务类型project_task_type1阶段 2普通任务 3里程碑任务
任务状态project_task_status0待开始 1进行中 2已完成 3已取消 4已延期
成员角色project_member_role1项目经理 2技术负责人 3项目成员 4观察者
里程碑状态project_milestone_status0未达成 1已达成 2已逾期 3已取消
工时状态project_worktime_status0待审核 1已通过 2已驳回
费用类别project_cost_category1人工 2设备 3材料 4外包 5差旅 6其他
风险等级project_risk_level1低 2中 3高 4严重
风险/问题类型project_risk_type1风险 2问题
风险/问题状态project_risk_status0待处理 1处理中 2已解决 3已关闭 4已忽略
变更类型project_change_type1范围 2进度 3预算 4人员 99其他
任务依赖类型project_link_type0 FS 1 SS 2 FF 3 SF
预算类型project_budget_type1预算 2实际成本

附录:关键技术依赖

依赖版本用途安装方式
dhtmlx-gantt9.x甘特图组件npm install dhtmlx-gantt
dayjs已有日期处理已集成
echarts已有统计图表已集成
VxeTable已有表格组件已集成
Ant Design Vue已有UI 框架已集成
form-create已有动态表单已集成
联系我们

获取报价、演示和二开方案

微信咨询二维码

微信咨询

17156169080

添加时备注「RuoYi Office」

在线体验商业版