feat(workbench): keep progress detail return context

This commit is contained in:
caoxiaozhu
2026-06-03 15:14:44 +08:00
parent 20cb60e247
commit 31052d0b98
11 changed files with 231 additions and 10 deletions

View File

@@ -0,0 +1,75 @@
# 工作台费用进度详情返回与类型列概念文档
## 功能一句话
让用户从首页费用进度进入单据详情后能返回首页,并在费用进度列表中直接看到每笔单据的费用类型。
## 背景与问题
当前首页费用进度点击单据后进入详情页,但详情页返回按钮默认回到单据中心,破坏了用户从首页查看进度的上下文。同时费用进度行只展示单号、标题、流程、状态和金额,用户需要点进详情才知道单据属于差旅、招待、办公等哪类费用。
## 目标与非目标
目标:
- 从首页费用进度进入详情时,详情页返回按钮回到个人工作台。
- 从单据中心进入详情时,原有返回单据中心逻辑不变。
- 在首页费用进度行新增“费用类型”列。
- 费用类型优先使用单据已有类型字段,缺失时按标题、场景和备注轻量归类。
非目标:
- 不修改详情页主体内容。
- 不新增后端接口。
- 不改变单据中心列表、审批详情和其他来源的返回逻辑。
## 用户与场景
个人员工在首页查看最近费用进度,点击某笔单据进入详情核对处理情况。查看完后点击返回,应回到刚才的首页工作台继续看其他进度项,而不是跳到单据中心列表。
## 功能能力
- 首页打开详情时带入 `returnTo=workbench` 来源标记。
- 详情页根据来源标记动态显示返回按钮文案并执行返回首页。
- 费用进度数据新增 `expenseTypeLabel`
- 费用类型列在桌面端作为独立列展示,窄屏下按移动端布局折行展示。
## 方案设计
前端实现:
- `PersonalWorkbench.vue``open-document` 事件 payload 中补 `source: 'workbench'``returnTo: 'workbench'`
- `AppShellRouteView.vue` 接收工作台来源并传给 `openRequestDetail`
- `useAppShell.js` 在打开详情时写入查询参数,在关闭详情时根据查询参数返回工作台或单据中心。
- `workbenchSummary.js``progressItems` 中补费用类型字段。
- `personal-workbench.css` 与响应式样式新增费用类型列。
## 算法与公式
当前功能不涉及复杂数学公式。
费用类型归类优先级:
1. 单据显式字段:`expenseCategory``expense_type``category` 等。
2. 文本规则:从场景、标题、备注和描述中匹配差旅、招待、办公、培训、市场等关键词。
3. 兜底为“其他费用”。
## 测试方案
- 源码测试确认首页费用进度打开详情时带 `returnTo=workbench`
- 源码测试确认详情返回文案和关闭逻辑支持工作台来源。
- 单元测试确认 `progressItems` 输出费用类型字段。
- 源码测试确认费用进度模板和样式包含费用类型列。
- 运行前端定向测试与构建。
## 指标与验收
- 从首页费用进度进入详情后,返回按钮回到个人工作台。
- 从单据中心进入详情后,返回按钮仍回到单据中心。
- 首页费用进度行可直接看到费用类型。
- 相关定向测试与前端构建通过。
## 风险与开放问题
- 当前费用类型归类仍是前端轻量归类。后续若后端已有稳定 ontology 类型字段,应优先接入 canonical 字段。
- 路由查询参数只用于详情返回来源,不应影响单据筛选和详情数据加载。

View File

@@ -0,0 +1,25 @@
# 工作台费用进度详情返回与类型列 TODO
## 调研与契约
- [x] 核对首页费用进度点击链路、详情页返回逻辑和当前进度行样式。[CONCEPT: 方案设计] 证据:已确认 `PersonalWorkbench.vue` 发出 `open-document``AppShellRouteView.vue` 转入详情,`useAppShell.js` 默认返回单据中心。
- [x] 明确来源标记与费用类型字段的前端契约。[CONCEPT: 功能能力] 证据:采用 `returnTo: 'workbench'``expenseTypeLabel`
## 前端实现
- [x] 首页费用进度打开详情时带入工作台返回来源。[CONCEPT: 方案设计] 证据:`PersonalWorkbench.vue``open-document` payload 已包含 `source``returnTo`
- [x] 详情页关闭逻辑按来源返回工作台或单据中心。[CONCEPT: 功能能力] 证据:`useAppShell.js` 根据 `route.query.returnTo` 选择 `app-workbench``app-documents`
- [x] 工作台进度汇总新增费用类型字段。[CONCEPT: 功能能力] 证据:`workbenchSummary.js``progressItems` 输出 `expenseTypeLabel`
- [x] 首页费用进度行新增费用类型列及响应式样式。[CONCEPT: 指标与验收] 证据:`PersonalWorkbench.vue` 新增 `progress-type`,样式和响应式布局已更新。
## 测试与验证
- [x] 补充详情返回来源源码测试。[CONCEPT: 测试方案] 证据:`node web/tests/workbench-detail-return.test.mjs` 通过。
- [x] 补充费用进度类型列源码测试。[CONCEPT: 测试方案] 证据:`node web/tests/personal-workbench-assistant.test.mjs` 通过。
- [x] 补充工作台汇总单元测试,覆盖费用类型字段。[CONCEPT: 测试方案] 证据:`node web/tests/workbench-summary.test.mjs` 通过。
- [x] 运行定向测试和前端构建。[CONCEPT: 指标与验收] 证据:以上定向测试和 `npm.cmd --prefix web run build` 均通过。
## 交付
- [x] 复查暂存范围,避免纳入无关工作区改动。[CONCEPT: 风险与开放问题] 证据:`git diff --cached --name-only` 仅包含本次工作台进度、返回来源、测试和开发文档。
- [ ] 提交并 push 本次功能分支。[CONCEPT: 指标与验收]