|
|
@@ -6,7 +6,7 @@
|
|
|
class="small_terminal"
|
|
|
v-for="item in leftList"
|
|
|
:key="item.ref_ied_id"
|
|
|
- :ref="`termina${item.ref_ied_id}`"
|
|
|
+ :ref="`termina${item.ref_ied_id}_arrow${item.ref_type}`"
|
|
|
>
|
|
|
<span class="small_icon"></span>
|
|
|
<div class="small_terminal_font">
|
|
|
@@ -14,28 +14,14 @@
|
|
|
<span>{{ item.ref_ied_desc }}</span>
|
|
|
</div>
|
|
|
</div>
|
|
|
- <!-- <div class="small_terminal" ref="termina2">
|
|
|
- <span class="small_icon"></span>
|
|
|
- <div class="small_terminal_font">
|
|
|
- <span>MT3501A</span>
|
|
|
- <span>#1主变中压侧测控PCS-9705A-D-H2</span>
|
|
|
- </div>
|
|
|
- </div>
|
|
|
- <div class="small_terminal">
|
|
|
- <span class="small_icon"></span>
|
|
|
- <div class="small_terminal_font">
|
|
|
- <span>MT3501A</span>
|
|
|
- <span>#1主变中压侧测控PCS-9705A-D-H2</span>
|
|
|
- </div>
|
|
|
- </div> -->
|
|
|
</div>
|
|
|
<!-- 中间的当前终端 -->
|
|
|
<div class="center_row" ref="terminaBig">
|
|
|
<div class="big_terminal">
|
|
|
<span class="big_icon"></span>
|
|
|
<div class="big_terminal_font">
|
|
|
- <span>MT3501A</span>
|
|
|
- <span>#1主变中压侧测控PCS-9705A-D-H2</span>
|
|
|
+ <span>{{ relation.ied_name }}</span>
|
|
|
+ <span>{{ relation.desc }}</span>
|
|
|
</div>
|
|
|
</div>
|
|
|
</div>
|
|
|
@@ -45,7 +31,7 @@
|
|
|
class="small_terminal"
|
|
|
v-for="item in rightList"
|
|
|
:key="item.ref_ied_id"
|
|
|
- :ref="`termina${item.ref_ied_id}`"
|
|
|
+ :ref="`termina${item.ref_ied_id}_arrow${item.ref_type}`"
|
|
|
>
|
|
|
<span class="small_icon"></span>
|
|
|
<div class="small_terminal_font">
|
|
|
@@ -53,20 +39,6 @@
|
|
|
<span>{{ item.ref_ied_desc }}</span>
|
|
|
</div>
|
|
|
</div>
|
|
|
- <!-- <div class="small_terminal">
|
|
|
- <span class="small_icon"></span>
|
|
|
- <div class="small_terminal_font">
|
|
|
- <span>MT3501A</span>
|
|
|
- <span>#1主变中压侧测控PCS-9705A-D-H2</span>
|
|
|
- </div>
|
|
|
- </div>
|
|
|
- <div class="small_terminal">
|
|
|
- <span class="small_icon"></span>
|
|
|
- <div class="small_terminal_font">
|
|
|
- <span>MT3501A</span>
|
|
|
- <span>#1主变中压侧测控PCS-9705A-D-H2</span>
|
|
|
- </div>
|
|
|
- </div> -->
|
|
|
</div>
|
|
|
</div>
|
|
|
</template>
|
|
|
@@ -76,6 +48,14 @@
|
|
|
import LeaderLine from "leader-line";
|
|
|
import router from "@/router";
|
|
|
export default {
|
|
|
+ props: {
|
|
|
+ relation: {
|
|
|
+ type: Object,
|
|
|
+ default: function () {
|
|
|
+ return;
|
|
|
+ },
|
|
|
+ },
|
|
|
+ },
|
|
|
data() {
|
|
|
return {
|
|
|
//模拟数据
|
|
|
@@ -151,6 +131,7 @@ export default {
|
|
|
node_id: 8371048,
|
|
|
},
|
|
|
},
|
|
|
+ listArr: [],
|
|
|
// 左右节点
|
|
|
leftList: [],
|
|
|
rightList: [],
|
|
|
@@ -161,54 +142,109 @@ export default {
|
|
|
|
|
|
mounted() {
|
|
|
// 将设备列表分成两份
|
|
|
- const listArr = [...this.list.CE1101.list];
|
|
|
- const arrlenght = listArr.length;
|
|
|
+ this.listArr = JSON.parse(JSON.stringify(this.relation.list));
|
|
|
+ // console.log("this.relation", this.relation.list);
|
|
|
+ // console.log("listArr", this.listArr);
|
|
|
+ // 对数组进项处理 双向箭头的type为2,其他不变
|
|
|
+ const formatArr = this.processArray(this.listArr);
|
|
|
+ // console.log("formatArr", formatArr[0]);
|
|
|
+ const arrlenght = formatArr.length;
|
|
|
const long1 = Math.ceil(arrlenght / 2);
|
|
|
- this.leftList = listArr.splice(0, long1);
|
|
|
- this.rightList = listArr.splice(0);
|
|
|
+ this.leftList = formatArr.splice(0, long1);
|
|
|
+ this.rightList = formatArr.splice(0);
|
|
|
// console.log("ref", this.$refs);
|
|
|
// console.log("leftList", this.leftList);
|
|
|
// console.log("rightList", this.rightList);
|
|
|
|
|
|
- this.$nextTick(() => {
|
|
|
+ // this.$nextTick(() => {
|
|
|
+ // 调用画线方法
|
|
|
+ // this.setLeaderline()
|
|
|
+ // });
|
|
|
+ // 循环画线
|
|
|
+ // line.color = '#51637F'; // 颜色
|
|
|
+ // line.size=2 //宽度
|
|
|
+ // line.path = 'straight' //类型
|
|
|
+ // line.endPlug = 'arrow1' //箭头
|
|
|
+ },
|
|
|
+ beforeDestroy() {
|
|
|
+ // 需要在跳转页面之前销毁连线
|
|
|
+ // console.log(this.line);
|
|
|
+ this.lineArr.forEach((item) => {
|
|
|
+ item.remove();
|
|
|
+ });
|
|
|
+ },
|
|
|
+ methods: {
|
|
|
+ // 画线函数
|
|
|
+ setLeaderline() {
|
|
|
+ this.lineArr = [];
|
|
|
//线条样式
|
|
|
- const lineStyle = {
|
|
|
+ const lineStyle0 = {
|
|
|
color: "#51637F",
|
|
|
size: 2,
|
|
|
path: "straight",
|
|
|
endPlug: "arrow1",
|
|
|
};
|
|
|
+ // const lineStyle1 = {
|
|
|
+ // color: "#51637F",
|
|
|
+ // size: 2,
|
|
|
+ // path: "straight",
|
|
|
+ // startPlug: "arrow1",
|
|
|
+ // };
|
|
|
+ const lineStyle2 = {
|
|
|
+ color: "#134BEA",
|
|
|
+ size: 2,
|
|
|
+ path: "straight",
|
|
|
+ startPlug: "arrow1",
|
|
|
+ endPlug: "arrow1",
|
|
|
+ };
|
|
|
//循环画线
|
|
|
+ // console.log("ref", this.$refs);
|
|
|
for (const key in this.$refs) {
|
|
|
- console.log("ref", this.$refs);
|
|
|
if (key !== "terminaBig") {
|
|
|
const start = this.$refs.terminaBig;
|
|
|
const endDom = this.$refs[key][0];
|
|
|
- const line = new LeaderLine(start, endDom, lineStyle);
|
|
|
+ let line
|
|
|
+ if (key.includes("arrow0")) {
|
|
|
+ line = new LeaderLine(start, endDom, lineStyle0);
|
|
|
+ } else if (key.includes("arrow1")) {
|
|
|
+ line = new LeaderLine(endDom, start, lineStyle0);
|
|
|
+ } else if (key.includes("arrow2")) {
|
|
|
+ line = new LeaderLine(start, endDom, lineStyle2);
|
|
|
+ }
|
|
|
// 保存进数组,方便进行遍历删除
|
|
|
this.lineArr.push(line);
|
|
|
}
|
|
|
}
|
|
|
- });
|
|
|
- // 循环画线
|
|
|
- // line.color = '#51637F'; // 颜色
|
|
|
- // line.size=2 //宽度
|
|
|
- // line.path = 'straight' //类型
|
|
|
- // line.endPlug = 'arrow1' //箭头
|
|
|
- },
|
|
|
- beforeDestroy() {
|
|
|
- // 需要在跳转页面之前销毁连线
|
|
|
- console.log(this.line);
|
|
|
- this.lineArr.forEach((item) => {
|
|
|
- item.remove();
|
|
|
- });
|
|
|
+ this.$emit("getLineArr", this.lineArr);
|
|
|
+ },
|
|
|
+ // list数组处理函数
|
|
|
+ processArray(arr) {
|
|
|
+ var uniqueObjects = {};
|
|
|
+
|
|
|
+ // 遍历数组
|
|
|
+ for (var i = 0; i < arr.length; i++) {
|
|
|
+ var obj = arr[i];
|
|
|
+
|
|
|
+ // 如果当前对象的 ref_ied_id 属性已经存在于 uniqueObjects 中
|
|
|
+ if (uniqueObjects.hasOwnProperty(obj.ref_ied_id)) {
|
|
|
+ // 将对应对象的 ref_type 属性设为 2
|
|
|
+ uniqueObjects[obj.ref_ied_id].ref_type = 2;
|
|
|
+ } else {
|
|
|
+ // 否则,将当前对象添加到 uniqueObjects 中
|
|
|
+ uniqueObjects[obj.ref_ied_id] = obj;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ // 将 uniqueObjects 中的值转为数组并返回
|
|
|
+ return Object.values(uniqueObjects);
|
|
|
+ },
|
|
|
},
|
|
|
- methods: {},
|
|
|
};
|
|
|
</script>
|
|
|
|
|
|
<style lang="scss" scoped>
|
|
|
.association_box {
|
|
|
+ height: 100%;
|
|
|
position: relative;
|
|
|
display: flex;
|
|
|
justify-content: space-between;
|