소스 검색

解决合并冲突

liuQiang 2 년 전
부모
커밋
c43b00d6fd
6개의 변경된 파일144개의 추가작업 그리고 91개의 파일을 삭제
  1. 0 22
      src/api/common-action.js
  2. 1 1
      src/layout/components/SideBar/UserIcon.vue
  3. 1 1
      src/router/index.js
  4. 4 0
      src/styles/index.scss
  5. 90 54
      src/views/dashboard/components/Association.vue
  6. 48 13
      src/views/dashboard/index.vue

+ 0 - 22
src/api/common-action.js

@@ -1,27 +1,5 @@
 import request from '@/utils/request'
 
-
-
-// 修改可编辑表格中的某行数据
-export function editRow(editPath, editData) {
-  // console.log('提交修改数据', editData)
-  editData = editData || {}
-  // console.log(editPath)
-  return request({
-    url: editPath,
-    method: 'put',
-    data: editData
-  })
-}
-
-// 获取选择框选项
-export function getOptions(opPath) {
-  return request({
-    url: opPath,
-    method: 'get'
-  })
-}
-
 // 获取 get 请求 数据
 export function httpGet(getPath) {
   return request({

+ 1 - 1
src/layout/components/SideBar/UserIcon.vue

@@ -84,7 +84,7 @@ export default {
   },
   beforeDestroy() {
     // 组件销毁前清除定时器
-    clearInterval(timer)
+    clearInterval(this.timer)
   },
 
   methods: {

+ 1 - 1
src/router/index.js

@@ -20,7 +20,7 @@ const routes = [
       {
         path: 'dashboard',
         component: () => import('@/views/dashboard/index'),
-        name: 'Dashboard2',
+        name: 'Dashboard',
         meta: { title: '首页', icon: 'el-icon-s-home', affix: true }
       }
     ]

+ 4 - 0
src/styles/index.scss

@@ -20,6 +20,10 @@ body {
     height: 100%;
     // overflow-y: hidden;
   }
+  // leaderline线条的层级要大于dialog
+ .leader-line {
+    z-index: 9999 !important
+  }
   
   *,
   *:before,

+ 90 - 54
src/views/dashboard/components/Association.vue

@@ -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;

+ 48 - 13
src/views/dashboard/index.vue

@@ -13,7 +13,7 @@
                         <button @click="detailsModal = true">测试打开模态框</button>
                         <!-- 详细信息 -->
                         <div>
-                            <el-dialog :visible.sync="detailsModal" width="98%" top="1vh" :height="ceshi">
+                            <el-dialog :visible.sync="detailsModal" @opened="openDialog" @close="closeDialog" width="98%" top="1vh" :height="ceshi">
                                 <div class="detailsTittle">
                                     <span>xxx-详细信息</span>
                                 </div>
@@ -38,8 +38,9 @@
                                                 </p>
                                             </template>
                                         </div>
+                                        <AssociationVue v-if="insideOrOutside == '1'" :relation="thisRelation" ref="association" @getLineArr = "getLineArr"></AssociationVue>
                                         <!-- 输入输出控制块 -->
-                                        <div v-if="insideOrOutside">
+                                        <div v-if="insideOrOutside == '2'">
                                             <!-- 导航栏 -->
                                             <div>
                                                 <div class="caseNavBox">
@@ -68,8 +69,10 @@
 <script>
 import { getscdlist, getiedmse } from "@/api/ied/ied"
 import { forGround } from "@/api/basic/basic"
+import AssociationVue from './components/Association.vue'
 export default {
-    name: 'ScdProjectIndex',
+    components:{AssociationVue},
+    name:'Dashboard',
     data() {
         return {
             detailsModal: false,
@@ -109,7 +112,7 @@ export default {
             ceshi: "500px",
             modelLeftList: [],//模态框内列表
             stationCid: "",
-            insideOrOutside: false,//输入输出控制块盒子
+            insideOrOutside: '1',//输入输出控制块盒子
             inOrOutList: [
                 {
                     name: "关联图",
@@ -131,9 +134,15 @@ export default {
                     name: "GOOSE接收",
                     class: "gooseout"
                 }
-            ]
+            ],
+            lineArr : [], //leaderline数据
+            relationList:{},//终端列表
+            thisRelation:{} //当前选中终端
         };
-    },
+           
+        
+        },
+
 
     mounted() {
 
@@ -141,16 +150,18 @@ export default {
     created() {
         this.forMesTo()
         this.getAllIedLink()
+        this.getRelationlist()
     },
     methods: {
         goUrl(item, index) {
             this.selectedIndex = index;
             console.log(item,'item1');
-            if(item.name == "输入输出控制块"){
-                this.insideOrOutside = true
-            }else{
-                this.insideOrOutside = false
-            }
+            this.insideOrOutside = index+1
+            // if(item.name == "输入输出控制块"){
+            //     this.insideOrOutside = true
+            // }else{
+            //     this.insideOrOutside = false
+            // }
             // 执行你的跳转逻辑
         },
         // 拿到首页左侧站点
@@ -176,9 +187,32 @@ export default {
         // 输入与输出控制块切换盒子
         boxChange(row, num) {
             this.selectedIndexOne = num
+            },
+        // 获取终端信息列表
+        async getRelationlist(){
+            let res = await getiedmse({scd_id:'8000003'})
+            this.relationList = res.data
+            this.thisRelation = this.relationList['CE1101']
+            console.log('thisRelation = ',this.thisRelation);
+        },
+        // 拿到子组件的leaderline数据
+        getLineArr(arr){
+            this.lineArr =  arr
+        },
+         // 打开dialog时画leaderline
+        openDialog(){
+            this.$refs.association.setLeaderline()
+        },
+        // 关闭dialog时删除leaderline
+        closeDialog(){
+            console.log('lineArr',this.lineArr);
+             this.lineArr.forEach((item) => {
+             item.remove();
+            });
         }
-    },
-}
+    
+     }
+ }
 </script>
 
 <style scoped>
@@ -314,4 +348,5 @@ p {
     text-align: center;
     line-height: 20px;
 }
+
 </style>