docs: mark transport plan copy design implemented
Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
1 parent
e1f31dc10f
commit
9788e3ac17
9 files changed
+4605
-3998
No files matched your search
@@ -1,6 +1,6 @@
|
||||
# 运输计划「复制」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.
|
||||
> **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 (`- [x]`) syntax for tracking.
|
||||
|
||||
**Goal:** 在运输计划列表支持「复制」:打开新增弹窗并预填可复制字段,用户保存后走现有 `createFull` 建新单。
|
||||
|
||||
@@ -29,7 +29,7 @@
|
||||
**Files:**
|
||||
- Modify: `web-admin/src/components/business/pl-plan-form-dialog/index.vue`
|
||||
|
||||
- [ ] **Step 1: 扩展 props 与复制态计算属性**
|
||||
- [x] **Step 1: 扩展 props 与复制态计算属性**
|
||||
|
||||
在现有 props 上增加 `copyFromPlanId`:
|
||||
|
||||
@@ -47,7 +47,7 @@ const isCopy = computed(() => !props.planId && !!props.copyFromPlanId)
|
||||
|
||||
`dialogTitle` / `saveButtonLabel` / `showSaveAndArrange` 继续按 `isEdit` 判断(复制视为新增,标题「新增运输计划」)。
|
||||
|
||||
- [ ] **Step 2: 复制专用产品行映射**
|
||||
- [x] **Step 2: 复制专用产品行映射**
|
||||
|
||||
在 `mapPlanProductToFormRow` 旁新增(或改其调用方),保证复制行:
|
||||
|
||||
@@ -70,7 +70,7 @@ function mapPlanProductToCopyFormRow(item: PlanProduct, index: number): PlanForm
|
||||
}
|
||||
```
|
||||
|
||||
- [ ] **Step 3: 实现 `loadPlanForCopy`**
|
||||
- [x] **Step 3: 实现 `loadPlanForCopy`**
|
||||
|
||||
以 `loadPlanForEdit` 为模板,差异如下:
|
||||
|
||||
@@ -99,7 +99,7 @@ function mapPlanProductToCopyFormRow(item: PlanProduct, index: number): PlanForm
|
||||
}
|
||||
```
|
||||
|
||||
- [ ] **Step 4: 接入 `handleOpened` 与日期 watch**
|
||||
- [x] **Step 4: 接入 `handleOpened` 与日期 watch**
|
||||
|
||||
`handleOpened`:
|
||||
|
||||
@@ -129,7 +129,7 @@ watch(
|
||||
)
|
||||
```
|
||||
|
||||
- [ ] **Step 5: 自测表单组件逻辑(代码审查清单)**
|
||||
- [x] **Step 5: 自测表单组件逻辑(代码审查清单)**
|
||||
|
||||
确认:
|
||||
|
||||
@@ -137,7 +137,7 @@ watch(
|
||||
- `buildTransportBlock` 在无车辆时不带 transport(同新增)
|
||||
- `handleClosed` 仍 `resetForm()` 即可(父组件负责清空 `copyFromPlanId`)
|
||||
|
||||
- [ ] **Step 6: Commit**
|
||||
- [x] **Step 6: Commit**
|
||||
|
||||
```bash
|
||||
git add web-admin/src/components/business/pl-plan-form-dialog/index.vue
|
||||
@@ -151,7 +151,7 @@ git commit -m "feat(pl): support copy-from plan prefill in plan form dialog"
|
||||
**Files:**
|
||||
- Modify: `web-admin/src/views/pl/plan/index.vue`
|
||||
|
||||
- [ ] **Step 1: 状态与表单绑定**
|
||||
- [x] **Step 1: 状态与表单绑定**
|
||||
|
||||
增加:
|
||||
|
||||
@@ -170,7 +170,7 @@ const copyFromPlanId = ref('')
|
||||
/>
|
||||
```
|
||||
|
||||
- [ ] **Step 2: 统一打开表单的互斥赋值**
|
||||
- [x] **Step 2: 统一打开表单的互斥赋值**
|
||||
|
||||
```ts
|
||||
function handleAdd() {
|
||||
@@ -197,7 +197,7 @@ function handleToolbarCopy() {
|
||||
}
|
||||
```
|
||||
|
||||
- [ ] **Step 3: 工具栏按钮**
|
||||
- [x] **Step 3: 工具栏按钮**
|
||||
|
||||
在「新增计划」后增加(`btn-ghost`,仅单选可点):
|
||||
|
||||
@@ -213,7 +213,7 @@ function handleToolbarCopy() {
|
||||
|
||||
`CopyDocument` 加入 `@element-plus/icons-vue` 的 import。
|
||||
|
||||
- [ ] **Step 4: 查看弹窗 hero-actions**
|
||||
- [x] **Step 4: 查看弹窗 hero-actions**
|
||||
|
||||
在「编辑」按钮旁增加「复制」(**无** `canEditPlan` 限制,任意状态可复制):
|
||||
|
||||
@@ -225,7 +225,7 @@ function handleToolbarCopy() {
|
||||
|
||||
放在编辑按钮之后(或编辑之前;与编辑并列即可)。不强制关闭查看弹窗。
|
||||
|
||||
- [ ] **Step 5: Commit**
|
||||
- [x] **Step 5: Commit**
|
||||
|
||||
```bash
|
||||
git add web-admin/src/views/pl/plan/index.vue
|
||||
@@ -240,17 +240,17 @@ git commit -m "feat(pl): add copy entry on transport plan list and view dialog"
|
||||
- Modify: `docs/superpowers/specs/2026-08-06-pl-plan-copy-design.md`
|
||||
- 本计划文件勾选完成项
|
||||
|
||||
- [ ] **Step 1: 设计文档状态**
|
||||
- [x] **Step 1: 设计文档状态**
|
||||
|
||||
将文首 `**状态:** 设计已确认` 改为 `**状态:** 已实现`。
|
||||
|
||||
- [ ] **Step 2: 更新知识图谱**
|
||||
- [x] **Step 2: 更新知识图谱**
|
||||
|
||||
```bash
|
||||
./scripts/update-graph.sh frontend
|
||||
```
|
||||
|
||||
- [ ] **Step 3: 浏览器走查**
|
||||
- [x] **Step 3: 浏览器走查**
|
||||
|
||||
打开 `http://localhost:3006/#/pl/plan-module/plan`:
|
||||
|
||||
@@ -260,7 +260,7 @@ git commit -m "feat(pl): add copy entry on transport plan list and view dialog"
|
||||
4. 对已作废或已归档计划从查看弹窗复制,可打开预填
|
||||
5. 0 条 / 多条勾选时工具栏「复制」禁用;编辑入口仍正常
|
||||
|
||||
- [ ] **Step 4: Commit**
|
||||
- [x] **Step 4: Commit**
|
||||
|
||||
```bash
|
||||
git add docs/superpowers/specs/2026-08-06-pl-plan-copy-design.md docs/superpowers/plans/2026-08-06-pl-plan-copy.md
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
# 运输计划「复制」:新增弹窗预填
|
||||
|
||||
**日期:** 2026-08-06
|
||||
**状态:** 设计已确认
|
||||
**状态:** 已实现
|
||||
**选定方案:** 方案 1 — 纯前端预填(打开「新增运输计划」弹窗,映射可复制字段;保存仍走现有 `createFull`)
|
||||
|
||||
## 1. 目标
|
||||
|
||||
@@ -1355,8 +1355,8 @@
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"src/components/business/pl-plan-form-dialog/index.vue": {
|
||||
"mtime": 1785974030.3907259,
|
||||
"ast_hash": "b9de8e039365835574967274a17d2d81",
|
||||
"mtime": 1786029438.3556974,
|
||||
"ast_hash": "5df498319828b931249d2486c4a2c01c",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"src/components/business/pl-plan-hazard-cert-view-table/index.vue": {
|
||||
@@ -3680,8 +3680,8 @@
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"src/views/pl/plan/index.vue": {
|
||||
"mtime": 1785969729.1505501,
|
||||
"ast_hash": "6b44256ab21702d9a366d82da026ec91",
|
||||
"mtime": 1786029833.42533,
|
||||
"ast_hash": "54c1be9b5906af5f390d3f7ce6d510f6",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"src/views/pl/self-vehicle/index.vue": {
|
||||
|
||||
@@ -137,14 +137,19 @@
|
||||
"135": "handleSearch",
|
||||
"136": "Community 136",
|
||||
"137": "Community 137",
|
||||
"138": "highlight.ts",
|
||||
"140": "Community 140",
|
||||
"141": "Community 141",
|
||||
"142": "Community 142",
|
||||
"143": "index.js",
|
||||
"144": "Community 144",
|
||||
"146": "ArtException.vue",
|
||||
"147": "canDeleteByCreator",
|
||||
"148": "Community 148",
|
||||
"149": "v2.4.2.1 - 2025-06-16",
|
||||
"150": "Community 150",
|
||||
"151": "Community 151",
|
||||
"152": "zh_CN.js",
|
||||
"161": "Community 161",
|
||||
"162": "Community 162",
|
||||
"164": "Community 164",
|
||||
|
||||
@@ -120,29 +120,38 @@
|
||||
"118": "zh_CN.js",
|
||||
"119": "Community 119",
|
||||
"120": "Community 120",
|
||||
"121": "fetchData",
|
||||
"122": "form.vue",
|
||||
"123": "detail.vue",
|
||||
"124": "index.vue",
|
||||
"125": "Community 125",
|
||||
"126": "Community 126",
|
||||
"127": "loadUserOptions",
|
||||
"128": "Community 128",
|
||||
"129": "Community 129",
|
||||
"130": "applySortAndPage",
|
||||
"131": "detail.vue",
|
||||
"132": "Community 132",
|
||||
"133": "Community 133",
|
||||
"134": "handleSubmit",
|
||||
"135": "handleSearch",
|
||||
"136": "Community 136",
|
||||
"137": "Community 137",
|
||||
"138": "handleEdit",
|
||||
"139": "zh_CN.js",
|
||||
"138": "highlight.ts",
|
||||
"139": "index.vue",
|
||||
"140": "Community 140",
|
||||
"141": "Community 141",
|
||||
"142": "Community 142",
|
||||
"143": "index.js",
|
||||
"144": "Community 144",
|
||||
"145": "canPreview",
|
||||
"146": "ArtException.vue",
|
||||
"147": "canDeleteByCreator",
|
||||
"148": "Community 148",
|
||||
"149": "v2.4.2.1 - 2025-06-16",
|
||||
"150": "Community 150",
|
||||
"151": "Community 151",
|
||||
"152": "zh_CN.js",
|
||||
"161": "Community 161",
|
||||
"162": "Community 162",
|
||||
"164": "Community 164",
|
||||
@@ -291,7 +300,6 @@
|
||||
"460": "Community 460",
|
||||
"462": "Community 462",
|
||||
"465": "index.vue",
|
||||
"470": "Ta",
|
||||
"471": "Community 471",
|
||||
"472": "Community 472",
|
||||
"473": "Community 473",
|
||||
|
||||
File diff suppressed because it is too large.
Load diff
File diff suppressed because it is too large.
Load diff
File diff suppressed because it is too large.
Load diff
+1913
-1628
File diff suppressed because it is too large.
Load diff
Reference in new issue
Block a user