# Tasks ## 数据层变更 - [x] Task 1: DB 表结构变更(树形化 + 配电柜 + 明细关联设备) - [x] 1.1 新增 `database/migrations/2026xxxx_survey_equipment_tree.sql`:`customer_equipment` 增 `parent_id BIGINT REFERENCES customer_equipment(id)` + 索引;`survey_detail` 增 `equip_id BIGINT REFERENCES customer_equipment(id)` + 索引;更新 `equip_type` 注释含「配电柜」;幂等可重跑 - [x] 1.2 同步 `database/db_init.sql` 的建表语句与注释 - [x] 1.3 更新 `server/src/entity/customer_equipment.entity.ts`(加 parentId 列)与 `server/src/entity/survey_detail.entity.ts`(加 equipId 列) - [x] 1.4 同步设计文档 `系统设计/表结构新增及变更.md` ## 后端能力 - [x] Task 2: customer_equipment 树接口与父级校验 - [x] 2.1 `customer_equipment.service.ts`:create/update 支持 `parentId`,校验父设备存在、同属客户、非自身/非子节点(防循环);新增 `tree(customerId)` 组装嵌套树,权限过滤与 list 一致 - [x] 2.2 `customer_equipment.controller.ts`:注册 `GET /api/customer-equipments/tree`(置于 `/:id` 之前) - [x] Task 3: survey_detail 关联设备 + 详情返回设备树 - [x] 3.1 `survey_order.service.ts` 的 `saveDetails` 接收 `equipId`,校验设备属于该工单客户,全量替换明细 - [x] 3.2 详情接口返回时附带该工单的设备树数据(供拓扑图渲染) - [x] 3.3 `dto/survey_order.dto.ts` 增加/调整明细校验(equipId 必填、photos/remark 约束) ## 前端:向导迁移与两步化 - [x] Task 4: 向导路由迁移 + 两步化 + 台账入口收敛(可并行,但依赖路由与表单同改) - [x] 4.1 `router/index.ts`:新增 `/customer/visit/survey/create`(meta 父级=客户拜访),移除 `/dispatch/survey/create`;保留 `/dispatch/survey/edit/:id` - [x] 4.2 `views/dispatch/survey/form.vue`:STEPS 改 2 步,删除第2步「勘察明细」区块与明细表单/`buildDetails`,提交不再携带 details - [x] 4.3 `views/customer/visit/index.vue`:`handleSurvey` 直跳 `/customer/visit/survey/create?customerId=xx` - [x] 4.4 `views/dispatch/survey/index.vue`:移除页头「发起勘察派单」按钮(handleAdd)与 onMounted 的 `?customerId` 自动跳转;行操作「更多」新增「勘察明细」菜单项(跳 `/dispatch/survey/:id/details`) ## 前端:勘察明细页面(新) - [x] Task 5: 新建勘察明细页 `views/dispatch/survey/detail.vue`(参考空间拓扑与用电架构模式) - [x] 5.1 左侧设备树:调用 `GET /customer-equipments/tree?customerId=` 渲染树 - [x] 5.2 中间拓扑图 + 右侧节点属性:设备详情、照片/备注维护(保存走 `saveDetails(id, [{equipId, photos, remark}])`) - [x] 5.3 新增/编辑/删除设备:支持选择父节点、设备类型含「配电柜」;新增接口带 parentId - [x] 5.4 路由 `/dispatch/survey/:id/details` 注册;如缺 `api/customerEquipment.ts` 则补齐 tree/CRUD API - [x] Task 6: 台账详情拓扑图 - [x] 6.1 `views/dispatch/survey/index.vue` 详情弹窗:新增拓扑图区块,按设备树渲染勘察明细(节点带照片/备注),无数据时给空态 - [x] Task 7: 设备管理台账类型扩展 - [x] 7.1 `views/device/equipment/index.vue`:`equipTypeOptions` 增加「配电柜」;设备新增/编辑表单支持选择父设备(parentId) ## 验证 - [x] Task 8: 编译 + 接口 + 浏览器端到端验证 - [x] 8.1 `server` 编译通过;`client` 构建通过 - [x] 8.2 接口实测:tree 接口、带 equipId 的 saveDetails、create 带 parentId - [x] 8.3 浏览器验证:客户拜访发起派单直跳两步向导;台账无发起按钮、行内「勘察明细」进入新页并新增/维护设备;详情弹窗拓扑图正确显示 - [x] 8.4 生产库应用迁移(经确认后) # Task Dependencies - Task 2 依赖 Task 1(表结构/实体先行) - Task 3 依赖 Task 1(survey_detail 实体加列) - Task 4 依赖 Task 1(后端不动,可并行;路由与表单同批改动) - Task 5 依赖 Task 2、3(tree 接口、saveDetails equipId) - Task 6 依赖 Task 3(详情返回设备树) - Task 8 依赖全部 Task