提交
This commit is contained in:
1 parent
0e1b750457
commit
8c49021d38
93 files changed
+22731
-12107
No files matched your search
@@ -0,0 +1,41 @@
|
||||
# OA Detail Header Stamp Implementation Plan
|
||||
|
||||
> **For agentic workers:** REQUIRED SUB-SKILL: Use superpowers:subagent-driven-development (recommended) or superpowers:executing-plans to implement this plan task-by-task. Steps use checkbox (`- [ ]`) syntax for tracking.
|
||||
|
||||
**Goal:** Remove duplicate title on mobile OA detail and show a 72px dingding-style status stamp at the form top-right.
|
||||
|
||||
**Architecture:** Extract `resolveStamp` to a shared module; add `OaStatusStamp.vue`; overlay it in `OaDetail.vue` over the form host.
|
||||
|
||||
**Tech Stack:** Vue 3, mobile-oa-h5, Node assert tests
|
||||
|
||||
**Spec:** `docs/superpowers/specs/2026-08-13-oa-detail-header-stamp-design.md`
|
||||
|
||||
---
|
||||
|
||||
### Task 1: Extract `resolveStamp`
|
||||
|
||||
**Files:**
|
||||
- Create: `mobile-oa-h5/src/oa/oa-status-stamp.js`
|
||||
- Create: `mobile-oa-h5/src/oa/oa-status-stamp.test.js`
|
||||
- Modify: `mobile-oa-h5/src/oa/print/exportOaApprovalPdf.js` (re-export / import)
|
||||
|
||||
- [x] Write failing tests for stamp mapping
|
||||
- [x] Implement `resolveStamp`
|
||||
- [x] Point print module at shared export
|
||||
|
||||
### Task 2: `OaStatusStamp` component
|
||||
|
||||
**Files:**
|
||||
- Create: `mobile-oa-h5/src/oa/components/OaStatusStamp.vue`
|
||||
|
||||
- [x] Dingding stamp DOM + 72px CSS (demo `.sm`)
|
||||
- [x] Props: `status` → uses `resolveStamp`
|
||||
|
||||
### Task 3: Wire `OaDetail`
|
||||
|
||||
**Files:**
|
||||
- Modify: `mobile-oa-h5/src/views/OaDetail.vue`
|
||||
|
||||
- [x] Remove header title + status tag
|
||||
- [x] Wrap form in relative host; render stamp when `detail.status`
|
||||
- [x] Drop unused `statusText` / `statusTone` imports if unused
|
||||
@@ -32,7 +32,7 @@
|
||||
- Create: `mobile-h5/utils/oa-corner-index.js`
|
||||
- Create: `mobile-h5/utils/oa-corner-index.test.js`
|
||||
|
||||
- [ ] **Step 1: 写失败单测**
|
||||
- [x] **Step 1: 写失败单测**
|
||||
|
||||
```js
|
||||
// mobile-h5/utils/oa-corner-index.test.js
|
||||
|
||||
@@ -0,0 +1,39 @@
|
||||
# 待办中心批量通过/打回 Implementation Plan
|
||||
|
||||
> **For agentic workers:** REQUIRED SUB-SKILL: Use superpowers:subagent-driven-development (recommended) or superpowers:executing-plans to implement this plan task-by-task. Steps use checkbox (`- [ ]`) syntax for tracking.
|
||||
|
||||
**Goal:** 在 mobile-h5 待办中心支持标题栏管理多选,并批量通过 / 打回。
|
||||
|
||||
**Architecture:** 自定义顶栏对齐草稿箱;多选与批量栏对齐抄送/草稿;意见弹层后串行调用现有单条 approve/return API,不新增后端批量接口。
|
||||
|
||||
**Tech Stack:** uni-app (mobile-h5)、现有 oa-api / request 封装
|
||||
|
||||
---
|
||||
|
||||
### Task 1: API 封装
|
||||
|
||||
**Files:**
|
||||
- Modify: `mobile-h5/utils/oa-api.js`
|
||||
|
||||
- [x] 增加 `fetchApproveOaTask(taskId, comment)`、`fetchReturnOaTask(taskId, comment)`
|
||||
|
||||
### Task 2: 路由自定义导航
|
||||
|
||||
**Files:**
|
||||
- Modify: `mobile-h5/pages.json`(pending)
|
||||
|
||||
- [x] `navigationStyle: custom`,保留标题文案与下拉刷新配置
|
||||
|
||||
### Task 3: 待办页 UI + 批量逻辑
|
||||
|
||||
**Files:**
|
||||
- Modify: `mobile-h5/pages/oa/pending/index.vue`
|
||||
|
||||
- [x] 自定义顶栏(返回 / 标题 / 管理)
|
||||
- [x] 管理态勾选 + 批量栏
|
||||
- [x] 意见弹层(通过可空、打回必填)
|
||||
- [x] 串行提交与结果 toast、刷新列表
|
||||
|
||||
### Task 4: 手工验收
|
||||
|
||||
- [ ] 对照 spec §5 清单自测关键路径
|
||||
@@ -0,0 +1,21 @@
|
||||
# OA 附件:Vant 缩略图美化
|
||||
|
||||
> 状态:已确认(2026-08-13)
|
||||
|
||||
## 决策
|
||||
|
||||
保留 `van-uploader` 交互(格子预览、删除、非图点按下载、详情 disabled 无删除),仅美化样式:
|
||||
|
||||
1. 预览格 84px、14px 圆角、浅绿描边、轻阴影
|
||||
2. 删除钮改为圆形半透明
|
||||
3. 非图封面:类型色小图标 + 短文件名 + 品牌绿「点击下载」条(不展示「图片/PDF」标签)
|
||||
4. 添加格:虚线框 + 绿色渐变 + 号
|
||||
5. **详情只读**(`disabled` / form-create 禁用):不展示添加格、不展示右上角删除;附件仅可预览/下载
|
||||
|
||||
## Demo
|
||||
|
||||
`mobile-ui/zkxw-mobile-oa-attachment-actions-demo.html`
|
||||
|
||||
## 落点
|
||||
|
||||
`mobile-oa-h5/src/oa/components/OaUploadField.vue`
|
||||
@@ -0,0 +1,24 @@
|
||||
# OA 详情头区:去掉重复标题 + 状态印章
|
||||
|
||||
> 状态:已确认(2026-08-13)
|
||||
|
||||
## 背景
|
||||
|
||||
移动端 OA 详情(`mobile-oa-h5` `OaDetail`,经 `mobile-h5` web-view 打开)内容区顶部重复展示流程标题(顶栏已有),状态为胶囊 Tag,与 web 打印钉钉风印章不一致。
|
||||
|
||||
## 决策
|
||||
|
||||
1. **去掉**内容区顶部流程标题 `h1`(顶栏已展示)。
|
||||
2. **状态 Tag 改为** web 打印同款钉钉风圆形印章(结构:外圈 / 上下弧 / `OA审批` / 主文案 / `approval`),`absolute` 叠在表单区域右上角,旋转约 `-18°`。
|
||||
3. **尺寸 72px**(相对 web 打印 118px 明显缩小,遮挡更少)。
|
||||
4. **文案/色类**复用 `resolveStamp(status)`(如 `completed` →「已通过」/`ok`)。
|
||||
5. **范围**:`mobile-oa-h5` 详情页;列表页、关联审批弹层不在本次范围。
|
||||
|
||||
## 非目标
|
||||
|
||||
- 不改 web-admin 打印印章尺寸
|
||||
- 不改移动端 PDF/系统打印 HTML 里的简化印章(仍为另一套实现)
|
||||
|
||||
## Demo
|
||||
|
||||
`mobile-ui/zkxw-mobile-oa-detail-header-stamp-demo.html`
|
||||
@@ -0,0 +1,70 @@
|
||||
# 待办中心 · 批量通过 / 打回
|
||||
|
||||
| 项 | 内容 |
|
||||
|----|------|
|
||||
| 状态 | 已确认 |
|
||||
| 日期 | 2026-08-13 |
|
||||
| 范围 | `mobile-h5` 待办中心列表页批量审批 |
|
||||
| Demo | `mobile-ui/zkxw-mobile-oa-pending-batch-actions-demo.html` |
|
||||
| 对齐 | 草稿箱自定义顶栏「管理」;抄送多选 / 批量栏交互 |
|
||||
|
||||
---
|
||||
|
||||
## 1. 目标
|
||||
|
||||
在移动端「待办中心」支持勾选多条待办,**批量通过**与**批量打回**,减少逐条进入详情审批的操作成本。
|
||||
|
||||
## 2. 非目标
|
||||
|
||||
- 不做批量拒绝(降低误操作风险)
|
||||
- 不新增后端批量 approve/return API(本期前端串行调用现有单条接口)
|
||||
- 不做跨页 / 全库全选
|
||||
- 不改造 web-admin 待办页
|
||||
|
||||
## 3. 交互(SHALL)
|
||||
|
||||
### 3.1 顶栏
|
||||
|
||||
- 待办页使用 **自定义导航栏**(`navigationStyle: custom`),结构对齐草稿箱:
|
||||
- 左侧返回、居中标题「待办中心」、右侧「管理」/「完成」
|
||||
- 搜索区仅保留关键词检索,**不**再放管理按钮
|
||||
|
||||
### 3.2 管理态
|
||||
|
||||
- 点「管理」进入多选;点「完成」退出并清空勾选
|
||||
- 管理态卡片左侧圆形勾选;选中卡片描边高亮
|
||||
- 管理态点卡片 = 切换勾选;非管理态点卡片 = 进入审批详情(现有 webview)
|
||||
- 已勾选时展示批量栏:「已选 N 项」+「批量打回」+「批量通过」
|
||||
- 未勾选时批量按钮禁用或隐藏批量栏(与 Demo 一致:无勾选则不展示栏)
|
||||
|
||||
### 3.3 意见弹层
|
||||
|
||||
| 动作 | 标题 | 默认意见 | 校验 |
|
||||
|------|------|----------|------|
|
||||
| 批量通过 | 批量通过 | 「同意」 | 可改、可空(与单条同意一致) |
|
||||
| 批量打回 | 批量打回 | 空 | **必填**,否则 toast「打回意见必填」 |
|
||||
|
||||
弹层提示:将对 N 条待办执行操作。同一意见应用于本次选中的全部任务。
|
||||
|
||||
### 3.4 提交与结果
|
||||
|
||||
- 对选中 `taskId` **串行**调用:
|
||||
- 通过:`POST /web/admin/oa-approval/tasks/{id}/approve`
|
||||
- 打回:`POST /web/admin/oa-approval/tasks/{id}/return`
|
||||
- 结束后 toast 汇总:`成功 n,失败 m`(若全部成功可用更短文案如「已通过 n 条」)
|
||||
- 成功后退出管理态、清空勾选、刷新列表
|
||||
|
||||
## 4. 实现要点
|
||||
|
||||
- API 封装:`mobile-h5/utils/oa-api.js` 增加 `fetchApproveOaTask` / `fetchReturnOaTask`
|
||||
- 页面:`mobile-h5/pages/oa/pending/index.vue`(顶栏、多选、批量栏、意见弹层)
|
||||
- 路由:`mobile-h5/pages.json` 待办页 `navigationStyle: custom`
|
||||
- 视觉 Token:三墙绿 `#0a9f6d` 等,对齐现有草稿箱 / 抄送页
|
||||
|
||||
## 5. 验收
|
||||
|
||||
1. 标题栏有「管理」,搜索区无管理按钮
|
||||
2. 管理态可勾选多条,批量通过默认「同意」且可空提交
|
||||
3. 批量打回空意见被拦截
|
||||
4. 部分失败时提示成功/失败数,列表刷新
|
||||
5. 非管理态点卡片仍进审批详情
|
||||
@@ -0,0 +1,26 @@
|
||||
# OA 撤销后进度展示(方案 B)
|
||||
|
||||
> 日期:2026-08-13
|
||||
> Demo:`mobile-ui/zkxw-mobile-oa-progress-withdraw-cancelled-demo.html` 方案 B
|
||||
> 关联:`docs/superpowers/specs/2026-07-15-oa-approval-progress-timeline-design.md`
|
||||
> 打印:`web-admin` `buildFlowItems` / 移动端 `exportOaApprovalPdf.buildFlowItems` 须同映射
|
||||
|
||||
## 问题
|
||||
|
||||
发起人撤销后,引擎将待办任务置为 `cancelled`。进度轴把该状态直接展示为「已撤销」,误挂在「直接主管」等未审批节点上,语义像「主管撤销」。打印 PDF「审批流程」区同样存在该问题。
|
||||
|
||||
## 决策(方案 B)
|
||||
|
||||
| 位置 | 展示 |
|
||||
|------|------|
|
||||
| 任务 `status=cancelled`(清待办) | 节点徽章/打印头「无需处理」、人员行「无需处理」、mute、**不展示时间**(对齐或签 `done`) |
|
||||
| 实例终态 `kind=terminal` + `cancelled` | 标题/徽章「已撤销」;人员为发起人 + 文案「发起人撤销」+ 撤销时间 |
|
||||
| 库表 | **不改**:任务仍存 `cancelled`,仅投影/前端映射调整 |
|
||||
|
||||
打回时其它人的 `cancelled` 任务同样映射为「无需处理」;打回结论仍落在操作人任务节点。
|
||||
|
||||
## 非目标
|
||||
|
||||
- 不隐藏已到达的主管节点(方案 C)
|
||||
- 不改撤回/打回写库逻辑
|
||||
- 实例印章「已撤销」、列表「已撤销」不变
|
||||
Reference in new issue
Block a user