From d4c7cdba6f73514ebd8fe04e7e2536f5cc051d07 Mon Sep 17 00:00:00 2001 From: kuaifan Date: Thu, 1 Oct 2026 01:21:30 +0000 Subject: [PATCH] =?UTF-8?q?feat(project):=20=E9=A1=B9=E7=9B=AE=E9=A1=B5?= =?UTF-8?q?=E7=AD=9B=E9=80=89=E4=B8=8B=E6=8B=89=E6=94=AF=E6=8C=81=E5=A4=9A?= =?UTF-8?q?=E9=80=89=E7=BB=84=E5=90=88?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 顶部筛选由 Cascader 单选改为分组复选下拉:状态(含未计划)/ 标签 / 负责人,同组为「或」、跨组为「且」 - 勾选时下拉不关闭;顶部显示已选数量与「清空」,每组可单独清除,按钮上的 × 一键清空 - 按钮显示:未筛选「全部 (n)」、单选显示该项(状态带颜色)、多选按组汇总如「状态·2 / 负责人·1 (n)」 - 弹层宽度随内容自适应(180–320px),内容区内部滚动;负责人超过 10 人时显示搜索框 - 抽出 utils/projectFlowFilter 统一看板、列表、甘特图的过滤逻辑,修复甘特图未按标签和未计划过滤 - 勾选「已完成」类状态仍自动开启显示已完成,切换项目重置筛选 - 同步 ai-kb 视图筛选相关说明 --- language/original-web.txt | 4 + resources/ai-kb/zh/concept/view/entry.md | 4 +- resources/ai-kb/zh/faq/view/mobile.md | 4 +- resources/ai-kb/zh/howto/view/filter.md | 45 ++-- resources/ai-kb/zh/howto/view/flow.md | 30 +-- resources/ai-kb/zh/howto/view/gantt.md | 4 +- resources/ai-kb/zh/howto/view/list.md | 6 +- resources/ai-kb/zh/howto/view/switch.md | 4 +- .../components/ProjectFlowFilterDropdown.vue | 94 +++++++ .../pages/manage/components/ProjectGantt.vue | 15 +- .../pages/manage/components/ProjectPanel.vue | 233 +++++++++--------- .../assets/js/utils/projectFlowFilter.js | 32 +++ .../sass/pages/components/project-panel.scss | 173 ++++++++++--- 13 files changed, 436 insertions(+), 212 deletions(-) create mode 100644 resources/assets/js/pages/manage/components/ProjectFlowFilterDropdown.vue create mode 100644 resources/assets/js/utils/projectFlowFilter.js diff --git a/language/original-web.txt b/language/original-web.txt index b4d7205bf..e7c1fac28 100644 --- a/language/original-web.txt +++ b/language/original-web.txt @@ -2784,3 +2784,7 @@ WebDAV 路径冲突 部门总览 全部部门 团队成员 (*) 人 +已选(*)项 +未筛选 +清除 +无匹配成员 diff --git a/resources/ai-kb/zh/concept/view/entry.md b/resources/ai-kb/zh/concept/view/entry.md index 5a2f0f38f..3edc4f0e4 100644 --- a/resources/ai-kb/zh/concept/view/entry.md +++ b/resources/ai-kb/zh/concept/view/entry.md @@ -19,7 +19,7 @@ negative: - 移动端 / 触屏端不支持拖拽(看板、甘特图的拖动改状态在 touch 设备被禁用) - 没有「日历视图」「卡片墙视图」等,4 种为全集 - 工作流视图(workflow)不是顶部切换的项目视图,是设置项目工作流时的可视化弹窗 -last_verified: v1.7.90 +last_verified: v1.9.36 --- # 项目视图概览(4 种) @@ -42,5 +42,5 @@ DooTask 的项目详情页提供 4 种任务视图,用同一份任务数据按 ## 与"筛选"的关系 - 视图:决定数据怎么排版 -- 筛选(顶部 Cascader):决定显示哪些任务 +- 筛选(顶部筛选下拉,可多选组合):决定显示哪些任务 - 两者正交:任意视图都能叠加筛选 diff --git a/resources/ai-kb/zh/faq/view/mobile.md b/resources/ai-kb/zh/faq/view/mobile.md index f860a5b07..fa6bbfebb 100644 --- a/resources/ai-kb/zh/faq/view/mobile.md +++ b/resources/ai-kb/zh/faq/view/mobile.md @@ -18,7 +18,7 @@ negative: - 移动端 / 触屏端拖拽全部禁用(列、任务、甘特图都不能拖) - 工作流的「待办 → 完成」必须从任务详情页改字段 - 移动端甘特图体验受限(屏宽不够),适合临时查看而非编辑 -last_verified: v1.7.90 +last_verified: v1.9.36 --- # 移动端能用哪些视图 @@ -33,7 +33,7 @@ DooTask 的项目视图组件在前端检测 `$isEEUIApp`(移动端壳)和 ` - **看板视图**:可正常查看每列任务;点击卡片进入详情;不能拖任务也不能拖列 - **列表视图**:完整可用;点击表头排序、点击行进入详情都可用 - **甘特图**:可查看时间轴和悬停信息;不能拖动改时间,需进任务详情页改字段 -- **工作流筛选**:顶部 Cascader 可用,与桌面一致 +- **工作流筛选**:顶部筛选下拉可用(点击展开、可多选),与桌面一致 ## 状态变更怎么办 1. 点开任务详情 diff --git a/resources/ai-kb/zh/howto/view/filter.md b/resources/ai-kb/zh/howto/view/filter.md index 3d85f6b21..f56712f4f 100644 --- a/resources/ai-kb/zh/howto/view/filter.md +++ b/resources/ai-kb/zh/howto/view/filter.md @@ -12,49 +12,66 @@ aliases: - 按标签筛选 - 怎么过滤任务 - 项目筛选条件 + - 多选筛选 + - 组合筛选 related_tools: [list_tasks] related_pages: [project_detail] prerequisites: [] negative: - 筛选条件不持久化(刷新或换项目会重置为「全部」) - - 一次只能选一个筛选条件(不支持「负责人 A + 标签 B」组合) - - 移动端的筛选 Cascader 与桌面端共用,但下拉空间有限 + - 同一组内多选是「或」,不是「且」(选两个负责人 = 任一人负责的任务,不是两人共同负责) - 没有「保存常用筛选」功能 -last_verified: v1.9.18 +last_verified: v1.9.36 --- # 视图筛选条件 ## 入口 -- 桌面端 Web:项目详情页顶部,视图切换条左侧的 Cascader(默认显示「全部 (n)」) +- 桌面端 Web:项目详情页顶部,视图切换条左侧的筛选按钮(未筛选时显示「全部 (n)」) - 桌面非触屏端:鼠标悬停展开,移入下拉菜单保持展开,移出入口与菜单后延迟关闭 - 触屏设备和 App:项目详情页顶部同位置,点击展开 +- 勾选选项时下拉不关闭,可以连续多选;点击外部关闭 ## 可用筛选维度 -- **全部**:不筛选 -- **未计划**:start_at 为空且未完成 -- **工作流状态**:选某个工作流的某个具体状态(flow_item_id 命中) -- **标签**:选某个项目标签(前缀 `tag:` 内部标识) -- **负责人**:选项目内某个成员(前缀 `user:`,显示其在该项目的任务数) +下拉按三组排列,每组都可多选: -筛选项含人数计数(如「张三 (5)」表示张三作为负责人有 5 个任务)。 +- **状态**:「未计划」(start_at 为空的任务)+ 各工作流状态(flow_item_id 命中);项目有多条工作流时按工作流分小节 +- **标签**:项目内任务用到的标签 +- **负责人**:项目内有负责任务的成员,当前用户排第一;负责人超过 10 人时组内显示「搜索成员」输入框 + +每项后面显示任务数(如「张三 5」表示张三作为负责人有 5 个任务)。 + +## 组合规则 +- **同组内为「或」**:状态选「进行中」「待测试」= 处于任一状态的任务 +- **不同组之间为「且」**:状态选「进行中」+ 负责人选「张三」= 张三负责且进行中的任务 +- 例:状态 (待处理 或 进行中) 且 标签 (前端) 且 负责人 (张三 或 李四) + +## 清除筛选 +- 下拉顶部显示「已选 n 项」,点「清空」清除全部条件 +- 每组标题旁的「清除」只清除该组 +- 筛选按钮上的 × 图标一键清空 + +## 筛选按钮的显示 +- 未筛选:「全部 (n)」 +- 只选一项:显示该项名称和数量,选的是工作流状态时带状态颜色 +- 选了多项:按组汇总,如「状态·2 / 负责人·1 (n)」,n 为命中任务数 ## 与"显示已完成"的关系 - 顶部「显示已完成」复选框控制是否展示 complete_at 非空的任务 -- 当选工作流的「结束色」状态(end)时,「显示已完成」会被自动勾上 +- 勾选工作流的「结束色」状态(end)时,「显示已完成」会被自动勾上 - 在不显示已完成的情况下,负责人筛选只统计未完成任务 ## 与"搜索"的关系 - 顶部还有搜索输入框,按任务名 / 描述 / ID 模糊匹配 -- 搜索与 Cascader 筛选会叠加(先按 Cascader 过滤,再按搜索词二次过滤) +- 搜索与筛选会叠加(先按筛选条件过滤,再按搜索词二次过滤) ## 应用范围 - 看板视图:每列只显示命中任务(列本身仍全部展示,空列也保留) - 列表视图:每个分段都按筛选过滤 -- 甘特图:未命中的任务隐藏 +- 甘特图:未命中的任务隐藏(状态、标签、负责人、未计划均生效) ## 不支持 -- 不支持多条件组合筛选(如「负责人=A AND 标签=B」) +- 不支持同组内「且」组合(如「必须同时带标签 A 和标签 B」) - 不支持保存自定义筛选 / 我的筛选 - 不支持按截止时间区间筛选 - 不支持按创建时间筛选 diff --git a/resources/ai-kb/zh/howto/view/flow.md b/resources/ai-kb/zh/howto/view/flow.md index b0284895a..fe1c8eb12 100644 --- a/resources/ai-kb/zh/howto/view/flow.md +++ b/resources/ai-kb/zh/howto/view/flow.md @@ -17,42 +17,38 @@ related_pages: [project_detail] prerequisites: - 项目已配置工作流(至少一条 flow) negative: - - 工作流视图不是独立视图按钮,是通过顶部「工作流」Cascader 在看板视图上叠加的筛选 - - 一个项目可以有多条工作流,但筛选 Cascader 一次只能选一个工作流的某个状态 - - 项目未配置工作流时筛选下拉只显示「全部」与「未计划」 + - 工作流视图不是独立视图按钮,是通过顶部筛选下拉在看板视图上叠加的筛选 + - 项目未配置工作流时筛选下拉的「状态」组只有「未计划」 - 工作流状态(flow_item)不等于看板列(column),两者独立 -last_verified: v1.9.18 +last_verified: v1.9.36 --- # 按工作流状态分栏查看任务 ## 入口 -- 桌面端 Web:项目详情页顶部「工作流」Cascader(默认显示「全部 (n)」) -- 桌面非触屏端悬停展开下拉;触屏设备和 App 点击展开,再选择某个工作流的某个状态(如「评审 → 评审中」) +- 桌面端 Web:项目详情页顶部筛选按钮(默认显示「全部 (n)」) +- 桌面非触屏端悬停展开下拉;触屏设备和 App 点击展开,在「状态」组勾选一个或多个工作流状态;项目有多条工作流时按工作流分小节(如「评审」小节下的「评审中」) ## 操作步骤 1. 确保项目已配置工作流(项目设置 → 工作流设置;详见 [[project.flow.howto.create]]) -2. 在顶部「工作流」Cascader 中选择目标状态 +2. 在顶部筛选下拉的「状态」组勾选目标状态(可多选,多个状态之间为「或」) 3. 当前视图(看板 / 列表 / 甘特图)立即过滤,只展示 flow_item_id 命中的任务 -4. 选择「全部」回到无筛选状态 +4. 点下拉顶部「清空」或按钮上的 × 回到无筛选状态 ## 可选筛选维度 -工作流 Cascader 下拉里除了工作流状态,还混合了: +筛选下拉分三组,组内多选为「或」,跨组为「且」(详见 [[view.filter.howto]]): -- **全部 (n)**:取消筛选,显示所有任务 -- **未计划 (n)**:start_at 为空且未完成的任务 -- **某工作流的某状态**:按 `flow_item_id` 过滤 -- **某标签**:按任务标签筛选(`tag:xxx`) -- **某负责人**:按 owner 过滤(`user:userid`) +- **状态**:「未计划」(start_at 为空)+ 各工作流状态(按 `flow_item_id` 过滤) +- **标签**:按任务标签筛选 +- **负责人**:按 owner 过滤 ## 状态着色 工作流状态有三档着色(status 字段): - `start`(起步色):常用作「待办」「待评审」 - 中间状态:自定义颜色 -- `end`(结束色):常用作「已完成」「已通过」;选这种状态时若未开启「显示已完成」会自动打开 +- `end`(结束色):常用作「已完成」「已通过」;勾选这种状态时若未开启「显示已完成」会自动打开 ## 不支持 -- 不支持同时选择多个状态进行联合筛选 -- 不支持跨工作流的状态合并 +- 不支持跨工作流的状态合并(可以同时勾选多条工作流里的状态,但它们仍是不同状态) - 不支持把工作流分栏当成视图独立保存(每次进入仍是 column / table / gantt 视图) diff --git a/resources/ai-kb/zh/howto/view/gantt.md b/resources/ai-kb/zh/howto/view/gantt.md index db8473550..851e43c3c 100644 --- a/resources/ai-kb/zh/howto/view/gantt.md +++ b/resources/ai-kb/zh/howto/view/gantt.md @@ -20,7 +20,7 @@ negative: - 子任务在甘特图中独立显示,不会自动归并到父任务 - 不支持任务依赖关系(A 完成才能开始 B 这种) - 移动端 / 触屏端不支持拖拽改时间,只能查看 -last_verified: v1.7.90 +last_verified: v1.9.36 --- # 使用甘特图视图 @@ -43,7 +43,7 @@ last_verified: v1.7.90 - **缩放**:顶部按钮切换日 / 周 / 月粒度 ## 与筛选的联动 -顶部 Cascader 筛选条件(按工作流状态 / 负责人 / 标签)在甘特图同样生效,未命中的任务隐藏。 +顶部筛选条件(状态 / 标签 / 负责人,支持多选组合)在甘特图同样生效,未命中的任务隐藏。 ## 不显示的任务 - 没有 start_at 的任务(未排期) diff --git a/resources/ai-kb/zh/howto/view/list.md b/resources/ai-kb/zh/howto/view/list.md index 7cb2813bb..9c1d79aa5 100644 --- a/resources/ai-kb/zh/howto/view/list.md +++ b/resources/ai-kb/zh/howto/view/list.md @@ -24,7 +24,7 @@ negative: - 没有 Excel 式选区批量操作 - 行内排序仅 优先级 / 到期时间 两列可点 - 至少保留一个分组,不能全部取消 -last_verified: v1.9.18 +last_verified: v1.9.36 --- # 使用列表视图查看任务 @@ -34,7 +34,7 @@ last_verified: v1.9.18 - 视图切换记忆在 `cacheParameter.menuType='table'`,下次进入同一项目仍是列表视图 ## 列表分段 -先切换到表格模式,鼠标悬停视图切换组前的设置齿轮图标,下拉菜单中可复选分组。菜单与项目筛选使用一致的弹层外观,无箭头和标题栏。触屏先切换表格,再点击齿轮打开选择。表格图标仅切换视图,悬停或点击都不会打开分组菜单。看板和甘特图模式不显示设置齿轮;切走表格时菜单关闭。 +先切换到表格模式,鼠标悬停视图切换组前的设置齿轮图标,下拉菜单中可复选分组。菜单为无箭头、无标题栏的弹层。触屏先切换表格,再点击齿轮打开选择。表格图标仅切换视图,悬停或点击都不会打开分组菜单。看板和甘特图模式不显示设置齿轮;切走表格时菜单关闭。 | 分组 | 默认显示 | 范围 | |---|---|---| @@ -75,4 +75,4 @@ last_verified: v1.9.18 - 不能自定义列(增删 / 改顺序 / 改宽度) - 不能多选批量改字段(如批量改负责人) - 表头排序只对优先级 / 到期时间生效 -- 没有筛选器(用顶部 Cascader 筛选) +- 没有独立筛选器(用顶部筛选下拉筛选) diff --git a/resources/ai-kb/zh/howto/view/switch.md b/resources/ai-kb/zh/howto/view/switch.md index 95b7be9f2..461a3c140 100644 --- a/resources/ai-kb/zh/howto/view/switch.md +++ b/resources/ai-kb/zh/howto/view/switch.md @@ -18,8 +18,8 @@ negative: - 视图选择按项目持久化(cacheParameter.menuType),换项目不会自动跟随 - 没有快捷键切换视图 - 移动端视图切换按钮位置与桌面一致,但小屏更靠右 - - 工作流视图不是这里切换,是通过工作流筛选 Cascader 叠加 -last_verified: v1.9.18 + - 工作流视图不是这里切换,是通过顶部筛选下拉的「状态」组叠加 +last_verified: v1.9.36 --- # 切换看板 / 列表 / 甘特图视图 diff --git a/resources/assets/js/pages/manage/components/ProjectFlowFilterDropdown.vue b/resources/assets/js/pages/manage/components/ProjectFlowFilterDropdown.vue new file mode 100644 index 000000000..4a4c7caf8 --- /dev/null +++ b/resources/assets/js/pages/manage/components/ProjectFlowFilterDropdown.vue @@ -0,0 +1,94 @@ + + + diff --git a/resources/assets/js/pages/manage/components/ProjectGantt.vue b/resources/assets/js/pages/manage/components/ProjectGantt.vue index 6972fb8e3..4f50fb755 100644 --- a/resources/assets/js/pages/manage/components/ProjectGantt.vue +++ b/resources/assets/js/pages/manage/components/ProjectGantt.vue @@ -45,6 +45,7 @@