docs(specs): 新增现场勘察业务相关 spec 文档

- rework-survey-equipment-tree:勘察设备树明细模式重构
- fix-equipment-topology-display:设备拓扑图完整显示修复
- survey-detail-building-select:勘察明细所属建筑下拉
- generate-floor-options-from-building:按建筑楼层生成楼层下拉
- survey-progress-track-detail:进度跟踪跳转勘察明细页
- survey-complete-to-tech-review:勘察完成提交技术复核与复核按钮改名
This commit is contained in:
wk authored and trae-solo-agent committed 2026-10-25 02:34:18 +08:00
1 parent dff366a823
commit 7c915f8946
18 files changed
+553

No files matched your search

@@ -0,0 +1,10 @@
# Checklist
- [x] 勘察明细页右侧节点属性面板「所在楼层」为下拉,选项按所选建筑地上/地下层数生成(负N层/N层),未选建筑无选项并提示
- [x] 勘察明细页新增/编辑设备弹窗「所在楼层」为下拉,行为同上
- [x] 设备管理台账页「所在楼层」为下拉,行为同上
- [x] 切换「所属建筑」时清空已选「所在楼层」(三处表单均生效)
- [x] 建筑列表加载保留 `floorCount/floorDownCount`,楼层选项来自所选建筑的层数(非固定值)
- [x] `floorNo` 存储值格式为 `-N`/`N`(与空间拓扑页一致)
- [x] `client` 编译通过(`npm run check`)
- [x] 浏览器实测:三处表单选择建筑后楼层选项正确(含地下层),切换建筑清空楼层,未选建筑无选项
@@ -0,0 +1,69 @@
# 勘察明细设备表单:所在位置改为所属建筑下拉 Spec
## Why
勘察明细页新增/编辑设备时,「所在位置」目前是自由文本输入,无法与客户建筑体系关联,与设备管理台账页的「所属建筑」下拉选择不一致。
## What Changes
* 勘察明细页(`views/dispatch/survey/detail.vue`)两处设备表单(①新增/编辑客户设备弹窗 equipForm;②右侧节点属性面板 nodeForm):
* 「所在位置」文本输入 → 「所属建筑」下拉选择(`buildingId`,按工单客户过滤建筑,可清空选填)
* 同时增加「所在楼层」输入(`floorNo`,文本,选填)
* 「具体位置」(`location`)保留为可选文本输入
* 建筑下拉数据源:`customerBuildingApi.getList({ customerId, page: 1, pageSize: 999 })`,在工单详情加载成功与设备树刷新时按工单客户加载
* 提交与回显:新增/编辑设备与保存节点属性时携带 `buildingId`/`floorNo`/`location`;编辑选中节点与打开编辑弹窗时回显
* 与设备管理台账页「位置信息」区块保持一致(所属建筑/所在楼层/具体位置三件套,均为选填)
## Impact
* Affected specs: 勘察派单重构(rework-survey-equipment-tree)交付的勘察明细页设备维护能力
* Affected code:
* `client/src/views/dispatch/survey/detail.vue`(两处表单模板 + equipForm/nodeForm 数据模型 + 提交/回显/加载逻辑)
* 不改动:后端 `customer_equipment.service.ts`(create/update 已透传 buildingId/floorNo)、`api/customerEquipment.ts`(类型已含 buildingId/floorNo/location)、设备管理台账页、空间拓扑页
## ADDED Requirements
### Requirement: 设备表单按所属建筑选择位置
勘察明细页新增/编辑设备时,系统 SHALL 提供「所属建筑」下拉(按当前工单客户过滤建筑,可清空),并同时提供「所在楼层」与「具体位置」可选输入。
#### Scenario: 新增/编辑设备
* **WHEN** 用户在勘察明细页新增或编辑客户设备
* **THEN** 表单显示「所属建筑」下拉(选项为该客户的建筑)、「所在楼层」输入、「具体位置」输入,保存后设备携带 `buildingId`/`floorNo`/`location`,再次编辑时正确回显
## MODIFIED Requirements
### Requirement: 设备表单「所在位置」字段
* 原「所在位置」文本输入由「所属建筑」下拉 +「所在楼层」输入 +「具体位置」输入替代(两处表单均生效)
* `location` 数据保留可维护,「所属建筑」「所在楼层」为新增可维护字段
## REMOVED Requirements
### Requirement: 无 —— 仅调整勘察明细页设备表单的位置信息录入方式
**Reason**: 无移除
**Migration**: 无
## 假设(已与用户确认)
* 两处表单都改(弹窗 + 右侧属性面板)
* 「具体位置」(location)保留为可选文本输入
* 同时增加「所在楼层」(floorNo)输入
* 所属建筑/所在楼层/具体位置均为选填(与设备管理台账页一致,必填仍为设备名称/类型)
@@ -0,0 +1,25 @@
# Tasks
## 勘察明细页(`client/src/views/dispatch/survey/detail.vue`,两处表单)
- [x] Task 1: 楼层选项生成与表单改造
- [x] 1.1 楼层选项工具:新增 `buildFloorOptions(building)`(地下 负N层=值 -N → 地上 N层=值 N,无建筑返回空数组),与空间拓扑页惯例一致
- [x] 1.2 `loadBuildingOptions` 加载时保留完整建筑信息(新增 `buildingList: CustomerBuildingInfo[]` ref,供楼层计算使用;buildingOptions 仍映射 label/value)
- [x] 1.3 新增两个 computed:`nodeFloorOptions`(按 `nodeForm.buildingId` 从 buildingList 匹配)与 `equipFloorOptions`(按 `equipForm.buildingId`)
- [x] 1.4 模板两处「所在楼层」由 `a-input` 改为 `a-select`(`v-model` 绑定 `nodeForm.floorNo` / `equipForm.floorNo`,`:options` 对应 computed,`:not-found-content` 未选建筑时提示「请先选择所属建筑」,allow-clear)
- [x] 1.5 两处「所属建筑」`a-select` 增加 `@change` 清空对应 `floorNo`(切换建筑重置楼层)
## 设备管理台账页(`client/src/views/device/equipment/index.vue`)
- [x] Task 2: 楼层选项生成与表单改造
- [x] 2.1 `loadBuildingOptions` 加载时保留完整建筑信息(`buildingList` ref);新增 `buildFloorOptions` 工具(与 Task 1 同规则)
- [x] 2.2 新增 computed `floorOptions`(按 `formData.buildingId` 匹配)
- [x] 2.3 模板「所在楼层」由 `a-input` 改为 `a-select`(绑定 `formData.floorNo`,`:options`,未选建筑提示「请先选择所属建筑」,allow-clear)
- [x] 2.4 「所属建筑」`a-select` 增加 `@change` 清空 `formData.floorNo`(切换建筑重置楼层)
## 验证
- [x] Task 3: 编译 + 浏览器实测
- [x] 3.1 `client` 编译通过(`npm run check`,vue-tsc)
- [x] 3.2 浏览器实测:勘察明细页与设备台账页选择「所属建筑」后,「所在楼层」下拉按该建筑地上/地下层数生成(如地上 3 层/地下 1 层 → 负1层、1层、2层、3层);切换建筑清空楼层;未选建筑无选项
# Task Dependencies
- Task 1 与 Task 2 文件独立,可并行
- Task 3 依赖 Task 1、2