feat(survey): 勘察业务重构为设备树明细模式并新增勘察完成流转
- 设备树明细模式:customer_equipment 新增 parent_id 自引用与树形查询(getTree/tree 接口),勘察明细按设备节点挂接(survey_detail 新增 equip_id,saveDetails 全量替换),新增迁移 20261024_survey_equipment_tree.sql 并同步 db_init;客户拜访页发起勘察改为两步向导路由(CustomerVisitSurveyCreate),form.vue 重构为两步向导 - 勘察明细页(detail.vue):三栏布局(设备树/拓扑图/属性与勘察登记);设备拓扑图修复显示不完整(tree roam 拖拽缩放+全展开+弹窗增高);新增/编辑设备表单「所在位置」改为「所属建筑」下拉并增加「所在楼层」;选择建筑后按建筑地上/地下层数动态生成楼层下拉(负N层在前,切换建筑清空楼层) - 设备管理台账页:设备新增弹窗同步「所属建筑/所在楼层」动态下拉 - 台账页:进度跟踪主按钮改为跳转勘察明细页(DispatchSurveyDetail)而非编辑页;「审核测绘成果」按钮与复核弹窗标题改名「技术复核」 - 勘察完成流转:新增 PUT /api/survey-orders/:id/complete(现场勘察中→待技术复核,可见性校验+审计日志),勘察明细页新增「勘察完成」按钮(先保存明细再流转状态,成功后跳回台账页) - 验证:server tsc 与 client vue-tsc 编译通过;浏览器端到端验证通过(技术复核按钮/弹窗标题、勘察完成按钮仅勘察中显示、进度跟踪跳转数字id)
This commit is contained in:
1 parent
2d55947762
commit
dff366a823
19 files changed
+2095
-442
No files matched your search
+14
-8
@@ -438,6 +438,7 @@ CREATE TABLE customer_equipment (
|
||||
customer_id BIGINT NOT NULL REFERENCES customer(id),
|
||||
equip_name VARCHAR(128) NOT NULL,
|
||||
equip_type VARCHAR(32) NOT NULL,
|
||||
parent_id BIGINT REFERENCES customer_equipment(id),
|
||||
building_id BIGINT REFERENCES customer_building(id),
|
||||
floor_no VARCHAR(16),
|
||||
location VARCHAR(256),
|
||||
@@ -446,12 +447,13 @@ CREATE TABLE customer_equipment (
|
||||
photo_url VARCHAR(512),
|
||||
created_at TIMESTAMPTZ NOT NULL DEFAULT NOW()
|
||||
);
|
||||
COMMENT ON TABLE customer_equipment IS '客户智电改造设备信息表(配电间/井/箱)';
|
||||
COMMENT ON TABLE customer_equipment IS '客户智电改造设备信息表(配电间/井/箱/柜)';
|
||||
COMMENT ON COLUMN customer_equipment.id IS '自增主键';
|
||||
COMMENT ON COLUMN customer_equipment.equip_code IS '客户设备编码(唯一)';
|
||||
COMMENT ON COLUMN customer_equipment.customer_id IS '客户 ID(→ customer)';
|
||||
COMMENT ON COLUMN customer_equipment.equip_name IS '客户设备名称';
|
||||
COMMENT ON COLUMN customer_equipment.equip_type IS '设备类型:配电间/配电井/配电箱';
|
||||
COMMENT ON COLUMN customer_equipment.equip_type IS '设备类型:配电间/配电井/配电箱/配电柜';
|
||||
COMMENT ON COLUMN customer_equipment.parent_id IS '父设备 ID(自引用,→ customer_equipment,空为根设备)';
|
||||
COMMENT ON COLUMN customer_equipment.building_id IS '所属建筑 ID(→ customer_building)';
|
||||
COMMENT ON COLUMN customer_equipment.floor_no IS '所在楼层';
|
||||
COMMENT ON COLUMN customer_equipment.location IS '所在位置';
|
||||
@@ -461,6 +463,7 @@ COMMENT ON COLUMN customer_equipment.photo_url IS '未改造前设备照片';
|
||||
COMMENT ON COLUMN customer_equipment.created_at IS '创建时间';
|
||||
CREATE INDEX idx_equip_customer ON customer_equipment (customer_id);
|
||||
CREATE INDEX idx_equip_building ON customer_equipment (building_id);
|
||||
CREATE INDEX idx_equip_parent ON customer_equipment (parent_id);
|
||||
|
||||
-- 14. 客户访问账号表
|
||||
DROP TABLE IF EXISTS customer_account CASCADE;
|
||||
@@ -768,6 +771,7 @@ DROP TABLE IF EXISTS survey_detail CASCADE;
|
||||
CREATE TABLE survey_detail (
|
||||
id BIGSERIAL PRIMARY KEY,
|
||||
survey_order_id BIGINT NOT NULL REFERENCES survey_order(id) ON DELETE CASCADE,
|
||||
equip_id BIGINT REFERENCES customer_equipment(id),
|
||||
building_id BIGINT,
|
||||
building_name VARCHAR(128),
|
||||
floor_no VARCHAR(16),
|
||||
@@ -778,19 +782,21 @@ CREATE TABLE survey_detail (
|
||||
created_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
|
||||
updated_at TIMESTAMPTZ NOT NULL DEFAULT NOW()
|
||||
);
|
||||
COMMENT ON TABLE survey_detail IS '勘察工单明细表(建筑/楼层/房间 + 现场照片)';
|
||||
COMMENT ON TABLE survey_detail IS '勘察工单明细表(关联客户设备 + 现场照片)';
|
||||
COMMENT ON COLUMN survey_detail.id IS '自增主键';
|
||||
COMMENT ON COLUMN survey_detail.survey_order_id IS '勘察工单ID(→ survey_order)';
|
||||
COMMENT ON COLUMN survey_detail.building_id IS '建筑ID(→ customer_building)';
|
||||
COMMENT ON COLUMN survey_detail.building_name IS '建筑名称(冗余,客户拓扑变更后仍可读)';
|
||||
COMMENT ON COLUMN survey_detail.floor_no IS '所在楼层:正数为地上、负数为地下,如 1 / -1';
|
||||
COMMENT ON COLUMN survey_detail.room_id IS '房间ID(→ customer_room,可空)';
|
||||
COMMENT ON COLUMN survey_detail.room_name IS '房间名称(冗余,可空)';
|
||||
COMMENT ON COLUMN survey_detail.equip_id IS '客户设备ID(→ customer_equipment,勘察明细挂接到设备节点)';
|
||||
COMMENT ON COLUMN survey_detail.building_id IS '建筑ID(→ customer_building,兼容历史数据)';
|
||||
COMMENT ON COLUMN survey_detail.building_name IS '建筑名称(冗余,兼容历史数据)';
|
||||
COMMENT ON COLUMN survey_detail.floor_no IS '所在楼层:正数为地上、负数为地下,如 1 / -1(兼容历史数据)';
|
||||
COMMENT ON COLUMN survey_detail.room_id IS '房间ID(→ customer_room,可空,兼容历史数据)';
|
||||
COMMENT ON COLUMN survey_detail.room_name IS '房间名称(冗余,可空,兼容历史数据)';
|
||||
COMMENT ON COLUMN survey_detail.photos IS '现场照片对象key(JSON数组字符串)';
|
||||
COMMENT ON COLUMN survey_detail.remark IS '备注';
|
||||
COMMENT ON COLUMN survey_detail.created_at IS '创建时间';
|
||||
COMMENT ON COLUMN survey_detail.updated_at IS '更新时间';
|
||||
CREATE INDEX idx_survey_detail_order ON survey_detail (survey_order_id);
|
||||
CREATE INDEX idx_survey_detail_equip ON survey_detail (equip_id);
|
||||
CREATE TRIGGER trg_survey_detail_updated_at BEFORE UPDATE ON survey_detail
|
||||
FOR EACH ROW EXECUTE FUNCTION trigger_set_updated_at();
|
||||
|
||||
|
||||
@@ -0,0 +1,22 @@
|
||||
-- ============================================================
|
||||
-- 勘察派单重构:客户设备树形化 + 勘察明细关联设备
|
||||
-- 1) customer_equipment 增加 parent_id(自引用,树形层级:配电间→配电箱/井/柜,支持多级)
|
||||
-- 2) customer_equipment.equip_type 增加「配电柜」选项(注释同步)
|
||||
-- 3) survey_detail 增加 equip_id(关联 customer_equipment,明细照片/备注挂到设备节点)
|
||||
-- 幂等:仅新增缺失的列/索引,重复执行结果一致
|
||||
-- ============================================================
|
||||
|
||||
-- 1. customer_equipment.parent_id
|
||||
ALTER TABLE customer_equipment
|
||||
ADD COLUMN IF NOT EXISTS parent_id BIGINT REFERENCES customer_equipment(id);
|
||||
COMMENT ON COLUMN customer_equipment.parent_id IS '父设备ID(自引用,→ customer_equipment,空为根设备)';
|
||||
CREATE INDEX IF NOT EXISTS idx_equip_parent ON customer_equipment (parent_id);
|
||||
|
||||
-- 2. 设备类型注释补充「配电柜」
|
||||
COMMENT ON COLUMN customer_equipment.equip_type IS '设备类型:配电间/配电井/配电箱/配电柜';
|
||||
|
||||
-- 3. survey_detail.equip_id
|
||||
ALTER TABLE survey_detail
|
||||
ADD COLUMN IF NOT EXISTS equip_id BIGINT REFERENCES customer_equipment(id);
|
||||
COMMENT ON COLUMN survey_detail.equip_id IS '客户设备ID(→ customer_equipment,勘察明细挂接到设备节点)';
|
||||
CREATE INDEX IF NOT EXISTS idx_survey_detail_equip ON survey_detail (equip_id);
|
||||
Reference in new issue
Block a user