|
@@ -25,6 +25,7 @@ import {
|
|
PTopoParser,
|
|
PTopoParser,
|
|
PTopoView,
|
|
PTopoView,
|
|
} from "@/components/editClass/persagy-edit";
|
|
} from "@/components/editClass/persagy-edit";
|
|
|
|
+import { SBaseEquipment } from "@persagy-web/big-edit";
|
|
import topoTooltip from "./topoTooltip.vue";
|
|
import topoTooltip from "./topoTooltip.vue";
|
|
import zoom from "./zoom";
|
|
import zoom from "./zoom";
|
|
import { mapState, mapMutations } from "vuex";
|
|
import { mapState, mapMutations } from "vuex";
|
|
@@ -66,6 +67,8 @@ export default {
|
|
autoSave: null, // 自动保存定时器
|
|
autoSave: null, // 自动保存定时器
|
|
isLock: false, //右键item是否锁定
|
|
isLock: false, //右键item是否锁定
|
|
viewScale: 0, //视图缩放比例
|
|
viewScale: 0, //视图缩放比例
|
|
|
|
+ changeScaleByClick: false, //区分滚轮,点击 事件改变的缩放比例
|
|
|
|
+ initScale: 1,
|
|
};
|
|
};
|
|
},
|
|
},
|
|
computed: {
|
|
computed: {
|
|
@@ -120,6 +123,7 @@ export default {
|
|
"EDITEQUIPITEM",
|
|
"EDITEQUIPITEM",
|
|
"SETVERSION",
|
|
"SETVERSION",
|
|
"SETVBACKGROUND",
|
|
"SETVBACKGROUND",
|
|
|
|
+ "SYNCSCENCEEQUIp",
|
|
]),
|
|
]),
|
|
// 恢复命令状态
|
|
// 恢复命令状态
|
|
clearCmdStatus() {
|
|
clearCmdStatus() {
|
|
@@ -169,11 +173,15 @@ export default {
|
|
bus.$off("topoUndo");
|
|
bus.$off("topoUndo");
|
|
bus.$on("topoUndo", (val) => {
|
|
bus.$on("topoUndo", (val) => {
|
|
this.scene.undo();
|
|
this.scene.undo();
|
|
|
|
+ //撤销后 scence中设备与vuex设备数组做同步
|
|
|
|
+ this.SyncVuex();
|
|
});
|
|
});
|
|
// 重做
|
|
// 重做
|
|
bus.$off("topoRedo");
|
|
bus.$off("topoRedo");
|
|
bus.$on("topoRedo", (val) => {
|
|
bus.$on("topoRedo", (val) => {
|
|
this.scene.redo();
|
|
this.scene.redo();
|
|
|
|
+ //撤销后 scence中设备与vuex设备数组做同步
|
|
|
|
+ this.SyncVuex();
|
|
});
|
|
});
|
|
// 删除
|
|
// 删除
|
|
bus.$off("deleteItem");
|
|
bus.$off("deleteItem");
|
|
@@ -251,6 +259,27 @@ export default {
|
|
bus.$on("changeBackgroundColor", (val) => {
|
|
bus.$on("changeBackgroundColor", (val) => {
|
|
this.scene.changeBackgroundColor(val);
|
|
this.scene.changeBackgroundColor(val);
|
|
});
|
|
});
|
|
|
|
+ // 比例缩放
|
|
|
|
+ bus.$off("scale");
|
|
|
|
+ bus.$on("scale", (newV, oldV) => {
|
|
|
|
+ this.changeScaleByClick = true;
|
|
|
|
+ this.view.scaleByPoint(
|
|
|
|
+ newV / oldV,
|
|
|
|
+ this.canvasWidth / 2,
|
|
|
|
+ this.canvasHeight / 2
|
|
|
|
+ );
|
|
|
|
+ this.changeScaleByClick = false;
|
|
|
|
+ });
|
|
|
|
+ },
|
|
|
|
+ // 同步场景与vuex设备数据
|
|
|
|
+ SyncVuex() {
|
|
|
|
+ const arr = [];
|
|
|
|
+ this.scene.root.children.forEach((item) => {
|
|
|
|
+ if (item instanceof SBaseEquipment) {
|
|
|
|
+ arr.push(item);
|
|
|
|
+ }
|
|
|
|
+ });
|
|
|
|
+ this.SYNCSCENCEEQUIp(arr);
|
|
},
|
|
},
|
|
// 读取拓扑图
|
|
// 读取拓扑图
|
|
readtopoMsg() {
|
|
readtopoMsg() {
|
|
@@ -355,6 +384,9 @@ export default {
|
|
});
|
|
});
|
|
// 读取完成后默认走保存一次
|
|
// 读取完成后默认走保存一次
|
|
this.saveTopoDraft();
|
|
this.saveTopoDraft();
|
|
|
|
+ // 设置初始化缩放比例
|
|
|
|
+ this.initScale = this.view.scale;
|
|
|
|
+ bus.$emit("initScale", this.view.scale);
|
|
},
|
|
},
|
|
// 生成快照并保存草稿
|
|
// 生成快照并保存草稿
|
|
saveTopoDraft() {
|
|
saveTopoDraft() {
|
|
@@ -573,6 +605,15 @@ export default {
|
|
},
|
|
},
|
|
deep: true,
|
|
deep: true,
|
|
},
|
|
},
|
|
|
|
+ // 监听scale的变化
|
|
|
|
+ "view.scale": {
|
|
|
|
+ handler(scale) {
|
|
|
|
+ // 滚轮触发的缩放
|
|
|
|
+ if (!this.changeScaleByClick) {
|
|
|
|
+ bus.$emit("mouseScale", scale / this.initScale);
|
|
|
|
+ }
|
|
|
|
+ },
|
|
|
|
+ },
|
|
},
|
|
},
|
|
created() {
|
|
created() {
|
|
this.SETPROJECT(this.$route.query);
|
|
this.SETPROJECT(this.$route.query);
|