58 lines
2.1 KiB
Markdown
58 lines
2.1 KiB
Markdown
---
|
||
title: Project 模块
|
||
created: 2026-04-13
|
||
updated: 2026-04-14
|
||
type: entity
|
||
tags: [module, project, backend, frontend]
|
||
sources: [packages/backend/src/modules/project/, packages/frontend/src/modules/project/]
|
||
---
|
||
|
||
# Project 模块
|
||
|
||
项目管理模块,支持甘特图、日历、看板、列表四种视图,含完整的工时记录系统。
|
||
|
||
## 后端数据模型(5个表)
|
||
|
||
| 表名 | 用途 |
|
||
|------|------|
|
||
| `project_info` | 项目信息 |
|
||
| `project_phase` | 项目阶段 |
|
||
| `project_task` | 任务(支持父子关系、优先级、负责人、工时、进度) |
|
||
| `project_task_dependency` | 任务依赖关系 |
|
||
| `project_time_log` | 工时记录(userId/logDate/hours/description) |
|
||
|
||
### project_task 关键字段
|
||
|
||
`estimatedHours`(decimal 8,1) | `actualHours`(decimal 8,1) | `progress`(0-100) | `color`(自定义颜色) | `status` | `priority` | `category` | `assigneeName` | `startDate` | `endDate` | `parentId`
|
||
|
||
## 后端 Service 核心方法
|
||
|
||
| 方法 | 功能 |
|
||
|------|------|
|
||
| `tree(projectId)` | 任务树(按阶段分组,含子任务层级) |
|
||
| `kanban(projectId)` | 看板数据(按状态分组:todo/inProgress/done/closed) |
|
||
| `kanbanSort(items)` | 看板排序/状态变更 |
|
||
| `cascadeUpdateFields(id, fields)` | 级联更新子任务字段(status/priority/category/assigneeName/dates/estimatedHours) |
|
||
| `hasChildren(id)` | 检查是否有子任务 |
|
||
|
||
## 前端四视图
|
||
|
||
| 视图 | 组件 | 依赖库 |
|
||
|------|------|--------|
|
||
| 甘特图 | `views/components/gantt.vue` | dhtmlx-gantt 9.1.3 |
|
||
| 日历 | `views/components/calendar.vue` | FullCalendar 6.1.20 |
|
||
| 看板 | `views/components/kanban.vue` | vuedraggable |
|
||
| 列表 | `views/components/table.vue` | Element Plus Table |
|
||
|
||
## 关键组件
|
||
|
||
- `task-drawer.vue`:任务详情侧抽屉(含工时显示:预估+实际自动计算、进度滑块、工时记录表)
|
||
- `phase-manager.vue`:阶段管理弹窗
|
||
- `time-log-dialog.vue`:工时记录弹窗(日期、工时、描述,提交后自动更新 actualHours)
|
||
|
||
## 相关页面
|
||
|
||
- [[project-overview]] — 项目总览
|
||
- [[cool-admin-framework]] — 自动 CRUD
|
||
- [[database-entity-overview]] — 5 个业务表
|