Jelajahi Sumber

CID的图形展示,差异最外层的数据还未显示,上传时其他禁用未做

“yueshang” 1 tahun lalu
induk
melakukan
7a292f2728

+ 54 - 21
src/pages/netStructPicture/components/CidTree.vue

@@ -39,7 +39,7 @@
             ><span
               :class="{ 'tree-label': clickItemcode == data.itemcode }"
               style="position: absolute; right: 10px"
-              >{{ data.num }}</span
+              ><span v-if="OpensclTrue">{{ data.num }}</span><span v-else>{{ data.childItemCid?data.childItemCid.length:0 }}</span></span
             >
           </template>
         </el-tree>
@@ -73,6 +73,10 @@ const props = defineProps({
     type: Object,
     default: () => {},
   },
+  allCidStart: {
+    type: Array,
+    default: () => [],
+  },
 });
 const emit = defineEmits(["treeBack", "clickCode", "treeBackDefalut"]);
 let tagList = ref(props.iedRelation);
@@ -110,16 +114,13 @@ let treeData = ref([
         itemcode: "scd.ied.Communication.GSE",
         num: 0,
       },
-      {
-        label: "SV 通信参数",
-        itemcode: "scd.ied.Communication.SMV",
-        num: 0,
-      },
+      { label: "SV 通信参数", itemcode: "scd.ied.Communication.SMV", num: 0 },
     ],
   },
   {
     label: "测点信息",
     itemcode: "Point",
+    num: 0,
     children: [
       {
         label: "遥信",
@@ -258,10 +259,43 @@ watch(
   (newValue) => {
     if (newValue) {
       tagList.value = newValue;
-      console.log("firsttagList.value", tagList.value);
     }
   }
 );
+const allCidStartProps = ref(null);
+watch(
+  //CID一致性校验左侧的数据处理
+  () => props.allCidStart,
+  (newValue) => {
+    if (newValue && newValue.length) {
+      allCidStartProps.value = newValue;
+      treeData.value.forEach((node) => {
+        addChildItems(node, newValue);
+      });
+      console.log("treeData.value==========", treeData.value);
+    }
+  }
+);
+
+//使用递归
+const addChildItems = (node, data) => {
+  if (!node.childItemCid) {
+    node.childItemCid = [];
+  }
+  data.forEach((item) => {
+    if (node.itemcode === item.diff_object_type) {
+      let text;
+      text = item.diff_desc.replace(/[\r|\n|\t]/g, ""); //处理返回的数据中换行等,整理好规整数据
+      item.diff_desc = JSON.parse(text);
+      node.childItemCid.push(item);
+    }
+  });
+  if (node.children) {
+    node.children.forEach((childNode) => {
+      addChildItems(childNode, data);
+    });
+  }
+};
 const reload = () => {
   if (!props.OpensclTrue) {
     //网络结构体点击CID一致性校核打开获取的装置列表
@@ -269,8 +303,6 @@ const reload = () => {
       tagList.value = res.data;
       tagChoose.value = res.data ? Object.keys(res.data)[0] : "";
       clickTage.value = res.data ? Object.values(res.data)[0] : "";
-      console.log('tagList.value', tagList.value)
-      codeStatic();
       console.log("tageList.value", tagList.value);
     });
   }
@@ -312,7 +344,9 @@ const tagClick = (row, num) => {
       //     emit("treeBack", needName.value, a[0].id);
       //   }
     });
-  codeStatic();
+  if (props.OpensclTrue) {
+    codeStatic();
+  }
 };
 const clickRow = ref(props.clickRowDatas);
 //对比文件:头部对比的单个数据
@@ -326,22 +360,21 @@ watch(
 );
 const clickItemcode = ref("");
 const handleNodeClick = (e) => {
+  console.log('e', e)
   clickItemcode.value = e.itemcode;
-  emit("clickCode", e.itemcode);
+  emit("clickCode", e.itemcode,e);
 };
 onMounted(() => {
-  if (!props.OpensclTrue) {
-    tagChoose.value = props.iedRelation
-      ? Object.keys(props.iedRelation)[0]
-      : "";
-    clickTage.value = props.iedRelation
-      ? Object.values(props.iedRelation)[0]
-      : "";
-    codeStatic();
-  }
+  console.log("props.iedRelation", props.iedRelation);
+  tagChoose.value = props.iedRelation ? Object.keys(props.iedRelation)[0] : "";
+  clickTage.value = props.iedRelation
+    ? Object.values(props.iedRelation)[0]
+    : "";
   emit("treeBackDefalut", clickTage.value);
   reload();
-
+  if (props.OpensclTrue) {
+    codeStatic();
+  }
 });
 </script>
 

+ 94 - 29
src/pages/netStructPicture/components/Gsix.vue

@@ -10,8 +10,10 @@ import newly0 from "@/assets/image/CID/newly0.png";
 import LeaderLine from "../../../../public/leader-line.min.js";
 import AnimEvent from "../../../../public/anim-event.min.js";
 import { hiddenLine2, hiddenLineDialog } from "@/utils/linesPosition";
+import cid from "@/api/cid/cid";
 import jiantou from "@/assets/image/CID/jiantou.png";
-import { translate } from "element-plus";
+import { useRoute } from "vue-router";
+const route = useRoute();
 const props = defineProps({
   clickRowDatas: {
     type: Object,
@@ -29,10 +31,27 @@ const props = defineProps({
     type: String,
     default: "",
   },
+  //在CID处点击差异得到的数据
+  clickCodeInfoCid: {
+    type: Array,
+    default: () => {},
+  },
 });
 
 const clickRow = ref(props.clickRowDatas);
 let tagList = ref(null); //左侧更改的设备列表
+
+//CID数据,点击差异的每一条数据
+const CodeInfoCid = ref(props.clickCodeInfoCid);
+watch(
+  () => props.clickCodeInfoCid,
+  (newValue) => {
+    if (newValue) {
+      CodeInfoCid.value = newValue;
+      getDataCid();
+    }
+  }
+);
 //对比文件:头部对比的单个数据
 watch(
   () => props.clickRowDatas,
@@ -50,7 +69,11 @@ watch(
       tagList.value = newValue;
       clickLineResult();
       clickLineResultMain();
-      getData();
+      if (clickRow.value && clickRow.value.id) {
+        getData();
+      } else if (CodeInfoCid.value) {
+        getDataCid();
+      }
       nextTick(() => {
         setTimeout(() => {
           setLeaderlineMain();
@@ -77,7 +100,11 @@ watch(
       clickLineResult(); //重置
       clickLineResultMain(); //重置
       loading.value = true;
-      getData();
+      if (clickRow.value && clickRow.value.id) {
+        getData();
+      } else if (CodeInfoCid.value) {
+        getDataCid();
+      }
       nextTick(() => {
         //一来左右两侧展示的线条
         setTimeout(() => {
@@ -130,19 +157,7 @@ const getData = async () => {
       let text;
       text = item.diff_desc.replace(/[\r|\n|\t]/g, ""); //处理返回的数据中换行等,整理好规整数据
       item.diff_desc = JSON.parse(text);
-      isDiffdescUpAdd.value = false;
-      isDiffdescUpDel.value = false;
-      switch (item.diff_opt) {
-        case "i": //新增
-          leftI.value.push(item);
-          break;
-        case "d":
-          rightD.value.push(item);
-          break;
-        case "u": //修改
-          dataU.value.push(item);
-          break;
-      }
+      commonGetData(item);
     });
   }
   mapList.value = res.data;
@@ -152,6 +167,40 @@ const getData = async () => {
   });
   // loading.value = false;
 };
+const getDataCid = () => {
+  console.log("clickCodeValue", cClickCode.value);
+  const cidsnode = CodeInfoCid.value.childItemCid;
+  if (cClickCode.value == "scd.ied" && cidsnode && cidsnode.length > 0) {
+    mapList.value = cidsnode[0].diff_desc;
+  } else if (cidsnode) {
+    mapList.value = cidsnode;
+    mapList.value.forEach((item) => {
+      commonGetData(item);
+    });
+  }
+  console.log("leftI.value", leftI.value);
+  console.log("leftI.value", rightD.value);
+  nextTick(() => {
+    middleLine.value.style.height = 0;
+    middleLine.value.style.height = mianItem.value.scrollHeight + "px";
+  });
+};
+const commonGetData = (item) => {
+  isDiffdescUpAdd.value = false;
+  isDiffdescUpDel.value = false;
+  dones();
+  switch (item.diff_opt) {
+    case "i": //新增
+      leftI.value.push(item);
+      break;
+    case "d":
+      rightD.value.push(item);
+      break;
+    case "u": //修改
+      dataU.value.push(item);
+      break;
+  }
+};
 //点击新增或删除的图片
 const DelClick = ref({});
 const clickTypeImg = (item, event) => {
@@ -274,12 +323,12 @@ const clickUpTypeImgUpDel = (arr, event) => {
     let found = false;
     arr[0].DAI.forEach((item2) => {
       if (item1.Name === item2.Name) {
-        CommunicationS1.value.push({...item1,upAndDel:true});
+        CommunicationS1.value.push({ ...item1, upAndDel: true });
         found = true;
       }
     });
     if (!found) {
-      CommunicationS1.value.push({ ...item1, del: true,upAndDel:true });
+      CommunicationS1.value.push({ ...item1, del: true, upAndDel: true });
     }
   });
   CommunicationS1.value.sort((a, b) => {
@@ -825,13 +874,16 @@ watch(
     }
   }
 );
+//CID右侧数据
 //连线===
 onMounted(() => {
   CodeImg(props.clickCodeValue);
   if (props.iedRelation) {
     tagList.value = Object.values(props.iedRelation)[0];
   }
-  getData();
+  if (clickRow.value && clickRow.value.id) {
+    getData();
+  }
 });
 </script>
 
@@ -1082,7 +1134,10 @@ onMounted(() => {
           v-for="(value, key) in CommunicationS1"
           :key="key"
           class="middle-frame"
-          :class="{ 'del-middle-frame': value.del,'add-middle-frame': value.add}"
+          :class="{
+            'del-middle-frame': value.del,
+            'add-middle-frame': value.add,
+          }"
         >
           <!-- 是修改的,!value.add 是修改加新增的  !value.del是修改加删除的  -->
           <div
@@ -1091,8 +1146,10 @@ onMounted(() => {
             :ref="(el) => setdomUPLeftName(el, key)"
           >
             <!-- 左侧类型修改 -->
-            <span v-if="value.Type&&!value.upAndDel">  {{ value.Type }}</span>
-          <span v-else-if="value.Name&&value.upAndDel">  {{ value.Name }}</span>
+            <span v-if="value.Type && !value.upAndDel"> {{ value.Type }}</span>
+            <span v-else-if="value.Name && value.upAndDel">
+              {{ value.Name }}</span
+            >
           </div>
           <div
             v-if="value.add"
@@ -1132,18 +1189,24 @@ onMounted(() => {
           >
             <div class="middle-left">
               <div class="type-text up-type-text wraps middle-up-type-text">
-                <span v-if="value.InnerText&&!value.upAndDel">{{ value.InnerText }}</span>
-                <span v-else-if="value.Val&&value.upAndDel">{{ value.Val.InnerText }}</span>
+                <span v-if="value.InnerText && !value.upAndDel">{{
+                  value.InnerText
+                }}</span>
+                <span v-else-if="value.Val && value.upAndDel">{{
+                  value.Val.InnerText
+                }}</span>
                 <span v-else>【空】</span>
               </div>
             </div>
             <img :src="jiantou" alt="" style="width: 40px" />
             <div class="middle-right">
               <div class="type-text up-type-text wraps middle-up-type-text">
-                <span v-if="value.nnerTextRight != '空'&!value.upAndDel">{{
+                <span v-if="(value.nnerTextRight != '空') & !value.upAndDel">{{
                   value.nnerTextRight
                 }}</span>
-                <span v-else-if="value.Val&&value.upAndDel">{{ value.Val.InnerText }}</span>
+                <span v-else-if="value.Val && value.upAndDel">{{
+                  value.Val.InnerText
+                }}</span>
                 <span v-else>【空】</span>
               </div>
             </div>
@@ -1184,8 +1247,10 @@ onMounted(() => {
             class="middle-type-text"
             :ref="(el) => setdomUpRightName(el, key)"
           >
-          <span v-if="value.Type&&!value.upAndDel">  {{ value.Type }}</span>
-          <span v-else-if="value.Name&&value.upAndDel">  {{ value.Name }}</span>
+            <span v-if="value.Type && !value.upAndDel"> {{ value.Type }}</span>
+            <span v-else-if="value.Name && value.upAndDel">
+              {{ value.Name }}</span
+            >
           </div>
         </div>
       </div>
@@ -1461,7 +1526,7 @@ onMounted(() => {
   .add-middle-frame {
     width: 50%;
   }
-  .del-middle-frame{
+  .del-middle-frame {
     width: 50%;
     position: absolute;
     right: 20px;

+ 1 - 0
src/pages/netStructPicture/components/SclUpdate.vue

@@ -84,6 +84,7 @@ const treeBack = (data, val) => {
 const treeBackDefalut = (data) => {
   // clickList.value = data;
 };
+//点击差异项的code
 const clickCodeValue = ref(null);
 const clickCode = (code) => {
   clickCodeValue.value = code;

+ 29 - 11
src/pages/netStructPicture/index.vue

@@ -33,7 +33,9 @@
         <!-- 左侧树形数据 -->
         <div style="width: 15%">
           <CidTree 
-          @treeBack="treeBack" 
+          @treeBack="treeBack"
+          @clickCode="clickCode"
+          :allCidStart="allCidStart"
           ></CidTree>
         </div>
         <!-- 右侧展示图 -->
@@ -80,13 +82,14 @@
               </el-upload>
             </div>
           </div>
+          <!-- :clickRowDatas="clickRowDatas"
+            :iedRelation="iedRelation"" -->
           <Gsix
-            :activeName="activeName"
-            :activeNav="activeNav"
-            :backName="backName"
-            :mustVal="mustVal"
-            :arrName="arrName"
-            :upName="upName"
+            v-if="clickCodeValue != 'scd.ied.Relation'"
+            @clickCode="clickCode"
+            :clickList="backName"
+            :clickCodeInfoCid="clickCodeInfoCid"
+            :clickCodeValue="clickCodeValue"
           ></Gsix>
         </div>
       </div>
@@ -163,7 +166,6 @@ import cid from "@/api/cid/cid";
 import { ElMessage, ElMessageBox, ElNotification } from "element-plus";
 import systemRow from "@/api/systemRow";
 import scdCheck from "@/api/scdCheck/scdCheck";
-import virtualRelation from "./components/virtualRelation.vue"; //虚端
 let route = useRoute();
 
 const activeName = ref("first"); //默认展示网络结构图
@@ -175,7 +177,7 @@ const navtopData = ref([
   { name: "虚端子关系图", code: "virtual" },
 ]);
 const activeNav = ref(null);
-const backName = ref(""); //树组件返回名称
+const backName = ref({}); //树组件返回名称
 let mustVal = ref(false);
 let upName = ref(""); //上传的文件名称
 let arrName = ref(""); //基准的文件名称
@@ -218,7 +220,7 @@ const handleClick = (val) => {
 };
 //点击树返回的信息,
 const treeBack = (data, val) => {
-  console.log("data", val.file_type);
+  console.log("data",data);
   backName.value = data; //返回的点击行的信息
   arrName.value = data;
   backId.value = val.id;
@@ -227,9 +229,11 @@ const closeX = () => {
   activeName.value = "first";
   activeNav.value = null;
 };
+const allCidStart = ref([]);
 const nowUpload = (file, e) => {
   upFile.value = file.file;
   upName.value = file.file.name;
+  clickCodeInfoCid.value={};
   ElMessageBox.confirm(
     "该操作耗时较长,校验开始后将清除原有校验结果且无法中止,确定开始吗?",
     "Warning",
@@ -253,7 +257,8 @@ const nowUpload = (file, e) => {
       })
       .then((res) => {
         if (res.code == 0) {
-          let idp = `${"CG1102"},${res.data.fileid}`;
+          allCidStart.value = [];
+          let idp = `${backName.value.ied_name},${res.data.fileid}`;
           scdCheck
             .scdStart({
               type: "CID",
@@ -268,6 +273,8 @@ const nowUpload = (file, e) => {
                 type: "success",
                 message: "对比成功!",
               });
+              allCidStart.value = res.data.list;
+              console.log('allCidStart.value', allCidStart.value)
             })
             .catch((err) => {
               ElMessage({
@@ -298,6 +305,17 @@ const clickView = ref(null);
 const scdView = (row) => {
   clickView.value = row;
 };
+//点击差异项的code
+const clickCodeValue = ref(null);
+const clickCodeInfoCid = ref({});
+const clickCode = (code,e) => {
+  clickCodeValue.value = code;
+  if(e){
+    clickCodeInfoCid.value = e;
+    console.log('esssssssss', e)
+  }
+  allCidStart.value = [];
+};
 const sclBack = (num) => {
   activeName.value = "first";
   activeNav.value = null;