Browse Source

fix: 修复 左侧列表>删除设备类/空间时,样式信息没有删除的问题

yunxing 3 years ago
parent
commit
6d46a191d5

+ 39 - 10
src/components/editview/basePlanEditer.vue

@@ -126,6 +126,7 @@ export default {
             "INITOBJEXTINFO",
             "ADDSTYLE",
             "SETOUTLINE",
+            "DELETESTYLE",
         ]),
 
         // 清空画布
@@ -177,8 +178,11 @@ export default {
                 // 画板是否可拖动;
                 this.scene.addItem(imgItem);
                 this.view.DragMove = true;
-                this.planLoading = false;
                 this.view.fitSceneToView();
+                // 接口无规则字段时,在底图加载完成后关闭loading
+                if (!this.planContent?.ruleList) {
+                    this.planLoading = false;
+                }
             });
         },
         // 解析数据并注入 scene 类中
@@ -252,7 +256,10 @@ export default {
             // 画板是否可拖动
             this.view.DragMove = true;
             this.view.fitSceneToView();
-            this.planLoading = false;
+            // 接口无规则字段时,在底图加载完成后关闭loading
+            if (!this.planContent?.ruleList) {
+                this.planLoading = false;
+            }
             // 设置初始化缩放比例
             this.initScale = this.view.scale;
             bus.$emit("initScale", this.view.scale);
@@ -360,8 +367,8 @@ export default {
             });
             // 手动删除设备实例
             bus.$off("removeEquipment");
-            bus.$on("removeEquipment", (classCode) => {
-                this.removeEquipment(classCode);
+            bus.$on("removeEquipment", (classCode, delClassCode) => {
+                this.removeEquipment(classCode, delClassCode);
             });
             // 手动添加空间实例
             bus.$off("addZone");
@@ -370,8 +377,8 @@ export default {
             });
             // 手动删除空间实例
             bus.$off("removeZone");
-            bus.$on("removeZone", (classCode) => {
-                this.removeZone(classCode);
+            bus.$on("removeZone", (classCode, delClassCode) => {
+                this.removeZone(classCode, delClassCode);
             });
             // 更改设备信息点
             bus.$off("changeEquipMsgPoint");
@@ -618,8 +625,9 @@ export default {
          * 删除设备实例
          *
          * @param { string }  classCode 删除的设备类code值
+         * @param { string }  delClassCode 是否删除的设备类的样式值
          */
-        removeEquipment(classCode) {
+        removeEquipment(classCode, delClassCode = false) {
             for (const key in this.equipItemMap) {
                 const equipItem = this.equipItemMap[key];
                 if (equipItem?.legendData?.classCode === classCode) {
@@ -627,8 +635,16 @@ export default {
                     this.REMOVEEQUIP(equipItem);
                     // 删除图上的设备实例
                     this.scene.removeItem(equipItem);
+                    // 点击左侧列表删除设备类,触发删除 vuex 设备类样式
+                    if (delClassCode) {
+                        this.DELETESTYLE(equipItem?.legendData?.id);
+                    }
                 }
             }
+            // 点击左侧列表删除设备类,触发删除 vuex 设备类样式
+            if (delClassCode) {
+                this.DELETESTYLE(classCode);
+            }
             this.view.update();
             this.loadedRuleNum++;
             if (this.ruleNum === this.loadedRuleNum) this.loadMarkRelation();
@@ -662,11 +678,12 @@ export default {
             if (this.ruleNum === this.loadedRuleNum) this.loadMarkRelation();
         },
         /**
-         * 删除设备实例
+         * 删除空间实例
          *
-         * @param { string }  classCode 删除的设备类code值
+         * @param { string }  classCode 删除的空间类code值
+         * @param { string }  delClassCode 是否删除的设备类的样式值
          */
-        removeZone(classCode) {
+        removeZone(classCode, delClassCode = false) {
             for (const key in this.zoneIteMap) {
                 const zoneItem = this.zoneIteMap[key];
                 if (zoneItem?.legendData?.classCode === classCode) {
@@ -674,8 +691,16 @@ export default {
                     this.REMOVEZONE(zoneItem);
                     // 删除图上的空间实例
                     this.scene.removeItem(zoneItem);
+                    //  点击左侧列表删除空间类,触发删除 vuex 空间类样式
+                    if (delClassCode) {
+                        this.DELETESTYLE(zoneItem?.legendData?.id);
+                    }
                 }
             }
+            // 点击左侧列表删除空间类,触发删除 vuex 设备类样式
+            if (delClassCode) {
+                this.DELETESTYLE(classCode);
+            }
             this.view.update();
             this.loadedRuleNum++;
             if (this.ruleNum === this.loadedRuleNum) this.loadMarkRelation();
@@ -743,6 +768,10 @@ export default {
                 this.scene.addItem(t);
             });
             if (this.view?.scene) this.view.fitSceneToView();
+            // 接口有规则字段时,在使用rule接口查询,删除设备/空间后, 关闭loading
+            if (this.planContent?.ruleList) {
+                this.planLoading = false;
+            }
             // 设置初始化缩放比例
             this.initScale = this.view.scale;
             bus.$emit("initScale", this.view.scale);

+ 3 - 4
src/components/editview/leftToolBar/equipmentList.vue

@@ -103,7 +103,6 @@ export default {
         ...mapState(["equipItemMap", "equipItemNum", "id", "graphId"]),
     },
     watch: {
-
         equipItemNum(newV, oldV) {
             this.getEquipmentList();
         },
@@ -171,7 +170,7 @@ export default {
                             returnType: "equip", // 返回类型(equip: 设备, equipGroup: 设备组, zone: 空间)
                             commond: "delete", // 命令类型(query: 查询, delete: 删除)
                             params: {
-                                classCode: items.classCode
+                                classCode: items.classCode,
                             },
                         },
                     ],
@@ -183,7 +182,7 @@ export default {
                         // 在vuex中添加 删除的规则
                         this.ADDRULE(res.entityList[0]);
                         // 发出删除设备指令
-                        bus.$emit("removeEquipment", items.classCode);
+                        bus.$emit("removeEquipment", items.classCode, true);
                     }
                 } else {
                     this.$message.error(res.message || "删除失败");
@@ -224,7 +223,7 @@ export default {
             });
         },
         //
-        changeItem() { },
+        changeItem() {},
         // 搜索回车操作
         pressEnter() {
             const list = [];

+ 2 - 2
src/components/editview/leftToolBar/spaceList.vue

@@ -181,7 +181,7 @@ export default {
                             returnType: "zone", // 返回类型(equip: 设备, equipGroup: 设备组, zone: 空间)
                             commond: "delete", // 命令类型(query: 查询, delete: 删除)
                             params: {
-                                classCode: items.classCode
+                                classCode: items.classCode,
                             },
                         },
                     ],
@@ -193,7 +193,7 @@ export default {
                         // 在vuex中添加 删除的规则
                         this.ADDRULE(res.entityList[0]);
                         // 发出删除设备指令
-                        bus.$emit("removeZone", items.classCode);
+                        bus.$emit("removeZone", items.classCode, true);
                     }
                 } else {
                     this.$message.error(res.message || "删除失败");

+ 5 - 0
src/store/index.ts

@@ -150,6 +150,11 @@ export default new Vuex.Store({
             // @ts-ignore
             state.styleMap[id] = style;
         },
+        // 删除样式信息
+        DELETESTYLE(state, key) {
+            // @ts-ignore
+            delete state.styleMap[key];
+        },
         // 添加对象实例信息
         // 增加设备实例item
         ADDEQUIP(state, item): void {