5 Commity 25b4a688e6 ... 1904bda719

Autor SHA1 Wiadomość Data
  liyangzheng 1904bda719 5 1 rok temu
  liyangzheng fd4038d013 7 1 rok temu
  liling 66a9d11cff 编辑模型关系图时增加选区模式 1 rok temu
  “yueshang” c0fb623527 Merge branch 'master' of http://94.191.59.107:3000/houwenfeng/scd_tools_ui 1 rok temu
  “yueshang” 7fa47fc99f 修改bug 1 rok temu

+ 84 - 31
src/pages/components/draw/DrawDesigns.vue

@@ -391,27 +391,12 @@ export default {
                 getEdgeStyle() {
                     const stl = super.getEdgeStyle()
                     stl.stroke = '#255CE7'
-                    return stl
-                }
-            }
-            //粗边自定义
-            class SvEdge2 extends SvEdge { }
-            // 节点Model
-            class SvEdgeModel2 extends SvEdgeModel {
-                getEdgeStyle() {
-                    const stl = super.getEdgeStyle()
-                    stl.stroke = 'orange'
-                    stl.strokeWidth = 2
-                    return stl
-                }
-            }
-            class GooseEdge2 extends PolylineEdge { }
-            // 边Model
-            class GooseEdgeModel2 extends PolylineEdgeModel {
-                getEdgeStyle() {
-                    const stl = super.getEdgeStyle()
-                    stl.stroke = '#255CE7'
-                    stl.strokeWidth = 2
+                    /*
+                    console.log("this.isSelected:",this.isSelected)
+                    if (this.isSelected) {
+                        stl.strokeWidth = 3;
+                    }
+                    */
                     return stl
                 }
             }
@@ -470,16 +455,6 @@ export default {
                 model: GooseEdgeModel,
             })
             lf.value.register({
-                type: "svEdge2",
-                view: SvEdge2,
-                model: SvEdgeModel2,
-            })
-            lf.value.register({
-                type: "baseEdge2",
-                view: GooseEdge2,
-                model: GooseEdgeModel2,
-            })
-            lf.value.register({
                 type: "my-group",
                 model: MyGroupModel,
                 view: MyGroup,
@@ -673,6 +648,82 @@ export default {
                 lf.value.deleteNode(data.groupNodeId)
             }
         }
+        //切换选区模式
+        function selectMode(state){
+            if(state){
+                //开启
+                lf.value.extension.selectionSelect.openSelectionSelect();
+            }else{
+                //关闭
+                lf.value.extension.selectionSelect.closeSelectionSelect();
+                lf.value.clearSelectElements();//清除已框选的节点及边
+            }
+        }
+        //设置选择节点的对齐方式
+        //还有BUG...
+        function onAlignChange(v){
+            const elements = lf.value.getSelectElements(false);            
+            if(elements.nodes.length<2){
+                ElMessage({
+                    type: "info",
+                    message: "至少需要选中2个节点"
+                })
+                return
+            }
+            console.log(elements.nodes)
+            let calMax=function(){
+                let resultMax={"left":0,"right":0,"top":0,"bottom":0}
+                elements.nodes.forEach(ele => {
+                    const size=ele.properties.nodeSize
+                    if(resultMax.left==0 || ele.x<resultMax.left){
+                        //获取最小的left
+                        resultMax.left = ele.x
+                    }
+                    if(resultMax.right==0 || (ele.x+size.width)>resultMax.right){
+                        //获取最大的right
+                        resultMax.right = ele.x+size.width
+                    }
+                    if(resultMax.top==0 || ele.y<resultMax.top){
+                        //获取最小的topt
+                        resultMax.top = ele.y
+                    }
+                    if(resultMax.top==0 || (ele.y+size.height)>resultMax.top){
+                        //获取最大的topt
+                        resultMax.bottom = ele.y+size.height
+                    }
+                });                
+                return resultMax
+            }
+            const xyz=calMax()
+            console.log(xyz)
+            switch(v){
+                case "align_left":                    
+                    //位置调整
+                    elements.nodes.forEach(ele => {
+                        const size=ele.properties.nodeSize
+                        lf.value.getNodeModelById(ele.id).moveTo(xyz.left,ele.y)
+                    })
+                    break;
+                case "align_right":
+                    elements.nodes.forEach(ele => {
+                        const size=ele.properties.nodeSize
+                        lf.value.getNodeModelById(ele.id).moveTo(xyz.right-size.width,ele.y)
+                    })
+                    break;
+                case "align_center":
+                    break;
+                case "align_top":
+                    break;
+                case "align_bottom":
+                    break;
+                case "size_samewidth":
+                    break;
+                case "size_sameheight":
+                    break;
+                default:
+                    break;
+            }
+        }
         onBeforeUnmount(() => {
             // lf.value.remove()
             // coolObj.value = {}
@@ -688,6 +739,8 @@ export default {
             delLine,
             saveLine,
             cleanMap,
+            selectMode,
+            onAlignChange,
             nodeId,
             copyColor,
             copyId,

+ 14 - 5
src/pages/mission/components/HistoryMis.vue

@@ -30,6 +30,11 @@
                     </template>
                 </el-table-column>
                 <el-table-column prop="ct" label="创建时间" width="200" />
+                <el-table-column prop="start_time" label="开始检测时间" sortable width="200">
+                    <template #default="scoped">
+                        <span>{{ scoped.row.start_time == '1970-01-01 00:00:00' ? '暂无检测时间' : scoped.row.start_time }}</span>
+                    </template>
+                </el-table-column>
                 <el-table-column prop="scd_name" label="SCD名称" width="auto" />
                 <el-table-column prop="station_name" label="变电站" width="120" />
                 <el-table-column prop="username" label="创建人" width="120" />
@@ -38,14 +43,18 @@
                     <template #default="scoped">
                         <!-- <el-popconfirm title="你确定删除吗?" @confirm="sureDelMis">
                             <template #reference> -->
-                        <el-button v-if="scoped.row.state=='2'" link type="primary" size="small" @click="relady(scoped.row)">重新检测</el-button>
-                        <el-button v-if="scoped.row.state!='1'" link type="danger" size="small" @click="delMis(scoped.row)">删除</el-button>
+                        <el-button v-if="scoped.row.state == '2'" link type="primary" size="small"
+                            @click="relady(scoped.row)">重新检测</el-button>
+                        <el-button v-if="scoped.row.state != '1'" link type="danger" size="small"
+                            @click="delMis(scoped.row)">删除</el-button>
                         <!-- </template>
-                        </el-popconfirm> -->
+    </el-popconfirm> -->
                     </template>
                 </el-table-column>
             </el-table>
-            <PageNation :totals="totals" :pageNum="pageNum" :pageSize="pageSize" @pageBack="pageBack" @currentBack="currentBack"></PageNation>
+            <PageNation :totals="totals" :pageNum="pageNum" :pageSize="pageSize" @pageBack="pageBack"
+                @currentBack="currentBack">
+            </PageNation>
         </div>
         <DelHistory v-if="delModal" :delModal="delModal" :delId="delId" :reload="reload" @delBack="delBack">
         </DelHistory>
@@ -157,7 +166,7 @@ export default {
         function delBack(data) {
             delModal.value = data
         }
-        function currentBack(data){
+        function currentBack(data) {
             pageNum.value = data
         }
         onMounted(() => {

+ 73 - 25
src/pages/netStructPicture/components/CidTree.vue

@@ -13,16 +13,24 @@
       </div>
       <div class="tagBox">
         <div
-          class="cont-line tagP"
+          class="cont-line"
           :class="{ clicktag: tagChoose == index }"
           v-for="(item, index) in tagList"
           :key="index"
           @click="tagClick(item, index)"
+          @mouseover="startCounting(OpensclTrue?`(${item.ied_name})${item.ied_desc}`:`(${item.ied_name})${item.desc})`)"
+          @mouseleave="clearCounting"
         >
-          <span v-if="!OpensclTrue">{{
-            `(${item.ied_name})${item.desc}`
-          }}</span>
-          <span v-else>{{ `(${item.ied_name})${item.ied_desc}` }}</span>
+          <div class="tagP">
+            <span v-if="!OpensclTrue">{{
+              `(${item.ied_name})${item.desc}`
+            }}</span>
+            <span v-else>{{ `(${item.ied_name})${item.ied_desc}` }}</span>
+          </div>
+          <!-- 左下角全名提示 -->
+          <!-- <div class="tooltips" v-if="istooltip && tagChoose == index">
+             {{ nametip }}
+          </div> -->
         </div>
       </div>
       <div class="setting">
@@ -78,6 +86,11 @@ const props = defineProps({
     type: Array,
     default: () => [],
   },
+  upName: {
+    //用于判断上传的cid是否产生变化,如有变化清空装置列表的数据
+    type: String,
+    default: "",
+  },
 });
 const emit = defineEmits(["treeBack", "clickCode", "treeBackDefalut"]);
 let tagList = ref(props.iedRelation);
@@ -222,7 +235,7 @@ const codeStatic = async () => {
     ied_name: names,
     comptype: "u",
   });
-  if(!res) return;
+  if (!res) return;
   updateNum(treeData.value, res.data);
 };
 const updateNum = (treeNode, data) => {
@@ -232,7 +245,7 @@ const updateNum = (treeNode, data) => {
     if (data && data.hasOwnProperty(node.itemcode)) {
       node.num = parseInt(data[node.itemcode]);
     }
-    if (data && node.itemcode == "scd.ied.Relation"&&data["scd.ied.ExtRef"]) {
+    if (data && node.itemcode == "scd.ied.Relation" && data["scd.ied.ExtRef"]) {
       node.num = parseInt(data["scd.ied.ExtRef"]);
     }
     // 如果当前节点有子节点,递归处理子节点
@@ -244,7 +257,7 @@ const updateNum = (treeNode, data) => {
         .reduce((total, child) => total + child.num, 0);
     }
   }
-  loading.value = false
+  loading.value = false;
 };
 let defaultProps = ref({
   label: "label",
@@ -314,26 +327,38 @@ const reload = () => {
       tagList.value = res.data;
       tagChoose.value = res.data ? Object.keys(res.data)[0] : "";
       clickTage.value = res.data ? Object.values(res.data)[0] : "";
-      emit("treeBack", clickTage.value)
+      emit("treeBack", clickTage.value);
     });
   }
 };
 const clickTage = ref(null);
-const tagClick = (row, num) => {
-  loading.value = true;
-  treeData.value.forEach(item=>{
+watch(
+  () => props.upName,
+  (newValue) => {
+    if (newValue) {
+      results();
+    }
+  }
+);
+//重置装置列表数据
+const results = () => {
+  treeData.value.forEach((item) => {
     item.num = 0;
     item.childItemCid = [];
-    if(item.children){
-      item.children.forEach(key=>{
-        key.num=0;
+    if (item.children) {
+      item.children.forEach((key) => {
+        key.num = 0;
         key.childItemCid = [];
-      })
+      });
     }
-  })
+  });
+};
+const tagClick = (row, num) => {
+  loading.value = true;
+  results();
   tagChoose.value = num;
   clickTage.value = row;
-  emit("treeBack", row)
+  emit("treeBack", row);
   // cid
   //   .findFile({
   //     scd_id: route.query.id,
@@ -360,12 +385,12 @@ const tagClick = (row, num) => {
   //         emit("treeBack", row, fileInfo[0]);
   //       }
   //     }
-      //   let a = res.data.filter((item) => item.type_name == "CID");
-      //   if (a.length > 0) {
-      //     needName.value = a[0].file_name;
-      //     emit("treeBack", needName.value, a[0].id);
-      //   }
-    // });
+  //   let a = res.data.filter((item) => item.type_name == "CID");
+  //   if (a.length > 0) {
+  //     needName.value = a[0].file_name;
+  //     emit("treeBack", needName.value, a[0].id);
+  //   }
+  // });
   if (props.OpensclTrue) {
     codeStatic();
   }
@@ -385,6 +410,19 @@ const handleNodeClick = (e) => {
   clickItemcode.value = e.itemcode;
   emit("clickCode", e.itemcode, e);
 };
+const nametip = ref(null);
+const istooltip = ref(false);
+
+const startCounting = (nametips) => {
+  nametip.value =nametips;
+  setTimeout(() => {
+    istooltip.value = true;
+  }, 1500);
+};
+const clearCounting = () => {
+  istooltip.value = false;
+  nametip.value = ''
+};
 onMounted(() => {
   tagChoose.value = props.iedRelation ? Object.keys(props.iedRelation)[0] : "";
   clickTage.value = props.iedRelation
@@ -438,8 +476,9 @@ h3 {
   overflow: hidden;
   text-overflow: ellipsis;
   white-space: nowrap;
-  margin-top: 8px;
+  margin-top: 10px;
   font-size: 16px;
+
 }
 .setting {
   width: 92%;
@@ -485,6 +524,7 @@ h3 {
 .cont-line,
 :deep(.el-tree-node__label) {
   color: #1a2447;
+  position: relative;
   font-size: 14px;
 }
 .clicktag {
@@ -493,4 +533,12 @@ h3 {
 .tree-label {
   color: #134bea;
 }
+.tooltips {
+  position: absolute;
+  border: 1px solid #000;
+  background: #fff;
+  bottom: -57px;
+  right:0;
+  z-index: 999;
+}
 </style>

+ 3 - 3
src/pages/netStructPicture/components/Gsix.vue

@@ -50,7 +50,6 @@ watch(
   () => props.clickCodeInfoCid,
   (newValue) => {
     if (newValue) {
-      console.log("newValue", newValue);
       if (newValue.childItemCid && newValue.childItemCid.length != 0) {
         loading.value = true;
       } else {
@@ -157,6 +156,7 @@ const getData = async () => {
   dones();
   const ids = clickRow.value ? clickRow.value.id : "";
   const names = tagList.value ? tagList.value.ied_name : "";
+  loading.value = true;
   const res = await compResult({
     comp_id: ids,
     ied_name: names,
@@ -188,7 +188,6 @@ const getDataCid = () => {
   } else if (cClickCode.value != "scd.ied" && cidsnode && cidsnode.length > 0) {
     //除开装置信息
     mapList.value = cidsnode;
-    dones();
     if(!mapList.value) return;
     mapList.value.forEach((item) => {
       commonGetData(item);
@@ -449,6 +448,7 @@ const clickUpTypeImg = (arr, event) => {
     ) {
       if (typeof arr[0][key] === "object") {
         // 如果当前属性的值是另一个对象,则进一步检查
+        if(!arr[0][key]) return;
         for (let subKey in arr[0][key]) {
           //遍历当前对象的所有子属性。
           // 检查子属性是否存在于两个输入对象中,并且它们的值是否不同。
@@ -1499,7 +1499,7 @@ onMounted(() => {
   align-items: center;
   justify-content: center;
   margin-bottom: 45px;
-  width: 120px;
+  width: 141px;
   height: 23px;
 }
 .right-difference {

+ 3 - 2
src/pages/netStructPicture/components/SclUpdate.vue

@@ -97,7 +97,7 @@ onMounted(() => {});
     <el-dialog
       @close="cancelClick"
       v-model="OpensclTrue"
-      width="93vw"
+      width="96vw"
       append-to-body
       draggable
       top="5vh"
@@ -109,6 +109,7 @@ onMounted(() => {});
         </div>
       </template>
       <div class="right-main">
+       <div style="width:15%;">
         <CidTree
           :UPdate="UPdate"
           @treeBack="treeBack"
@@ -118,6 +119,7 @@ onMounted(() => {});
           :OpensclTrue="OpensclTrue"
           :iedRelation="iedRelation"
         ></CidTree>
+       </div>
         <div class="right-title">
           <div class="abBox">
             <div>
@@ -183,7 +185,6 @@ onMounted(() => {});
   .right-title {
     width: 85%;
     margin: 20px 0 0 16px;
-
     background: #f7f8fb;
   }
   .abBox {

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

@@ -373,6 +373,7 @@ const getNav = async () => {
     ied_name: props.checkData.ied_name,
     name: "DataSet",
   });
+  if(!navRes) return;
   navList.value = navRes.data;
 };
 const getMainTitle = async () => {

+ 1 - 1
src/pages/netStructPicture/components/netWork.vue

@@ -1,5 +1,5 @@
 <template>
-  <div class="container-bg" v-loading="loading" v-if="loadDating">
+  <div class="container-bg" v-loading="loading" element-loading-text="加载数据中" v-if="loading||loadDating">
     <el-container class="main-layout">
       <el-container class="right-plate">
         <el-main class="main-cont">

+ 22 - 7
src/pages/netStructPicture/index.vue

@@ -41,6 +41,7 @@
             @treeBack="treeBack"
             @clickCode="clickCode"
             :allCidStart="allCidStart"
+            :upName="upName"
           ></CidTree>
         </div>
         <!-- 右侧展示图 -->
@@ -89,13 +90,17 @@
           </div>
           <div v-if="!upName" class="tips-cid">请上传CID文件进行对比</div>
           <Gsix
-            v-if="upName && clickCodeValue != 'scd.ied.Relation'"
+            v-if="upName && clickCodeValue != 'scd.ied.Relation'&&!isContrast"
             @clickCode="clickCode"
             :clickList="backName"
             :clickCodeInfoCid="clickCodeInfoCid"
             :isCid="isCid"
             :clickCodeValue="clickCodeValue"
           ></Gsix>
+          <!-- 对比失败 -->
+          <div v-else-if="isContrast" class="fail-contrast">
+            {{ isContrastDes }}
+          </div>
         </div>
       </div>
       <!-- SCD一致性校核========= -->
@@ -174,6 +179,8 @@ import scdCheck from "@/api/scdCheck/scdCheck";
 let route = useRoute();
 const isCid = ref(true); //判断是否是CID界面
 const isCidLoading = ref(false); //判断是否正在解析CID文件
+const isContrast =ref(false);//判断是否对比成功
+const isContrastDes =ref(false);//对比错误的描述
 const activeName = ref("first"); //默认展示网络结构图
 const navtopData = ref([
   { name: "CID一致性校核", code: "CID" },
@@ -226,7 +233,10 @@ const handleClick = (val) => {
   clickNavCode.value = "";
 };
 //点击左侧装置列表树返回的信息,
+const newChicken = ref(""); //基准文件
 const treeBack = (data, val) => {
+  newChicken.value = `(${data.ied_name}${data.desc})`;
+  isContrast.value = ''
   upName.value = "";
   backName.value = data; //返回的点击行的信息
   arrName.value = data;
@@ -286,12 +296,12 @@ const nowUpload = (file, e) => {
                 });
                 allCidStart.value = res.data.list;
                 isCidLoading.value = false;
+                isContrast.value = res.data&&res.data.list?false:true;//对比成功并且有数据
+                isContrastDes.value = res.data&&res.data.list?'':'两个对比的CID没有差异'
               } else {
-                ElMessage({
-                  type: "error",
-                  message: res.msg,
-                });
                 isCidLoading.value = false;
+                isContrast.value = true;//对比失败
+                isContrastDes.value =  res.msg
               }
             });
         } else {
@@ -352,10 +362,9 @@ const portExcel = () => {
       }
     });
 };
-const newChicken = ref(""); //基准文件
+
 onMounted(() => {
   reload();
-  newChicken.value = route.query.stationName;
   // Object.values(props.iedRelation)[0]
 });
 </script>
@@ -522,4 +531,10 @@ $height: 40px;
   font-size: 14px;
   margin: 20px 0;
 }
+.fail-contrast{
+  text-align: center;
+  margin-top: 30px;
+  color: red;
+  font-size: 16px;
+}
 </style>

+ 54 - 5
src/pages/system/components/InsideModule.vue

@@ -16,12 +16,17 @@
                                 <span class="goose" :style="{ opacity: lineMenuColor == 'orange' ? 0.4 : 1 }"
                                     @click="gooseClick">GOOSE</span>
                             </div>
-                            <div style="display: flex;width: calc(15%);">
+                            <div style="display: flex;width: calc(20%);">
                                 <span style="font-size: 14px;color: #7484AB;margin-left: 20px;">操作:</span>
-                                <div class="cutPoint">
-                                    <!-- <img style="width: 22px;height: 22px;display: block;"
+                                <div v-if="!selectModeState" class="cutPoint"  style="border: 1px dashed #ccc;" @click="selectMode">                                    
+                                    <img style="width: 22px;height: 22px;display: block;opacity: 0.3;"
                                         src="../../../assets/icon/iorn_pen.png" alt="">
-                                    <span style="display: block;">控点</span> -->
+                                    <span style="display: block;color: #ccc;">选区模式</span>
+                                </div>
+                                <div v-if="selectModeState" class="cutPoint" style="border: 1px dashed #255CE7;"  @click="selectMode">                                    
+                                    <img style="width: 22px;height: 22px;display: block;"
+                                        src="../../../assets/icon/iorn_pen.png" alt="">
+                                    <span style="display: block;">选区模式</span>
                                 </div>
                                 <div class="deletePoint" @click="delClick">
                                     <img style="width: 22px;height: 22px;display: block;"
@@ -29,6 +34,18 @@
                                     <span style="display: block;">删除</span>
                                 </div>
                             </div>
+                            <!--
+                            <div style="display: flex;width: 15%;">
+                                <div>
+                                    <span style="font-size: 14px;color: #7484AB;">对齐:</span>
+                                </div>
+                                <div>
+                                    <el-select class="coord" v-model="alignListValue" @change="onAlignChange">
+                                        <el-option v-for="item in alignList" :key="item.id" :label="item.name" :value="item.id"></el-option>
+                                    </el-select>
+                                </div>
+                            </div>
+                            -->
                             <div style="display: flex;width: 20%;">
                                 <div>
                                     <span style="font-size: 14px;color: #7484AB;">位置:</span>
@@ -69,7 +86,7 @@
                     <div class="tableBox">
                         <!-- 建议使用这个 -->
                         <DrawDesigns ref="designsRef" :lineMenuColor="lineMenuColor" :needObj="needObj" :fatX="fatX"
-                            :fatY="fatY" :nowLook="nowLook" :cleanAll="cleanAll" :needId="needId" :needName="needName"
+                            :fatY="fatY" :nowLook="nowLook" :cleanAll="cleanAll" :selectMode="selectMode" :onAlignChange="onAlignChange" :needId="needId" :needName="needName"
                             :searchModule="searchModule" :coolObj="coolObj" :svOrGoose="svOrGoose" @backxy="backxy"
                             @drawCor="drawCor"></DrawDesigns>
                     </div>
@@ -130,6 +147,17 @@ export default {
         let flashLevel = ref("")//抬头显示的电压等级
         let linkStyle = ref("")//抬头显示的接线方式
         let copyType = ref(false)//copyload.vue打开或关闭
+        let selectModeState = ref(false)
+        let alignList = ref([
+            {id:"align_left",name:"左对齐"},
+            {id:"align_right",name:"右对齐"},
+            {id:"align_center",name:"水平居中"},
+            {id:"align_top",name:"顶部对齐"},
+            {id:"align_bottom",name:"底部对齐"},
+            {id:"size_samewidth",name:"相同宽度"},
+            {id:"size_sameheight",name:"相同高度"},
+        ])
+        let alignListValue = ref("")
         watch(() => props.tfType, (newVal) => {
             nowLook.value = newVal
         })
@@ -207,6 +235,18 @@ export default {
             flashLevel.value = row[0].voltage_level_name
             linkStyle.value = row[0].line_link_style_name
         }
+        //切换选区模式
+        function selectMode(){
+            selectModeState.value=!selectModeState.value
+            designsRef.value.selectMode(selectModeState.value)
+        }
+        //应用对齐选项
+        function onAlignChange(){
+            if(alignListValue.value==""){
+                return
+            }
+            designsRef.value.onAlignChange(alignListValue.value)
+        }
         onMounted(() => {
             searchModule()
         })
@@ -220,6 +260,7 @@ export default {
             delClick,
             saveMap,
             cleanAll,
+            onAlignChange,
             fatX,
             fatY,
             backxy,
@@ -239,6 +280,10 @@ export default {
             linkStyle,
             copyType,//copyload.vue打开或关闭
             copyMap,//打开copyload模态框
+            selectMode,
+            selectModeState,
+            alignList,
+            alignListValue,
         }
     },
     components: {
@@ -323,8 +368,12 @@ export default {
     align-items: center;
     font-size: 14px;
     text-align: center;
+    margin-left: 10px;
     margin-right: 10px;
     cursor: pointer;
+    line-height: 20px;
+    height: 30px;
+    margin-top: 20px;
 }
 
 .deletePoint {

+ 67 - 6
src/pages/system/modalComp/CopyLoad.vue

@@ -6,6 +6,20 @@
                     <el-form-item label="名称" prop="name">
                         <el-input v-model="copyForm.name" />
                     </el-form-item>
+                    <el-form-item label="电压等级" prop="flashLevel">
+                        <el-select @change="flashChange" v-model="copyForm.flashLevel" placeholder="不选择默认当前电压等级"
+                            size="mini" style="width: 240px">
+                            <el-option v-for="item in flashList" :key="item.value" :label="item.label"
+                                :value="item.value" />
+                        </el-select>
+                    </el-form-item>
+                    <el-form-item label="接线方式" prop="flashLevel">
+                        <el-select @change="lineChange" v-model="copyForm.lineType" placeholder="不选择默认当前接线方式"
+                            size="mini" style="width: 240px">
+                            <el-option v-for="item in lineList" :key="item.value" :label="item.label"
+                                :value="item.value" />
+                        </el-select>
+                    </el-form-item>
                 </el-form>
             </div>
             <template #footer>
@@ -23,6 +37,8 @@
 <script>
 import { ref, watch, onMounted, onBeforeUnmount, reactive } from 'vue'
 import flow from '@/api/flow/flow';
+import litLine from '@/api/litLine';
+import systemRow from '@/api/systemRow';
 import { ElLoading, ElMessage } from 'element-plus';
 export default {
     props: {
@@ -38,41 +54,74 @@ export default {
     setup(props, { emit }) {
         let dialogVisible = ref(false)//模态框打开或关闭
         let copyForm = ref({
-            name: ""
+            name: "",
+            flashLevel: "",
+            lineType: "",
         })//表单内容项
         let copyRules = reactive({
             name: [{ required: true, message: '请输入名称', trigger: 'blur' },]
         })//表单验证
         let copyRef = ref(null)//表单ref
-        let receive = ref({})//接收insidemodule传过来的模型数据
+        let receive = ref({})//接收insidemodule传过来的模型数据l
+        let flashList = ref([])//电压等级列表
+        let lineList = ref([])//接线方式列表
         // 初始化本组件函数
         function reload() {
-            dialogVisible.value = props.copyType
-            receive.value = props.coolObj
+            dialogVisible.value = props.copyType//变为true打开模态框
+            receive.value = props.coolObj//接受的接线方式信息,为对象
+            // 获取所有接线方式
+            litLine.getAllLine({ pageno: 1, pagesize: 999999 }).then(res => {
+                if (res.data) {
+                    lineList.value = res.data.map(item => {
+                        return {
+                            label: item.name,
+                            value: item.id
+                        }
+                    })
+                }
+            })
+            // 获取所有电压等级
+            systemRow.getChildren({ code: "voltage_level" }).then(res => {
+                if (res.data) {
+                    flashList.value = res.data.map(item => {
+                        return {
+                            label: item.name,
+                            value: item.id
+                        }
+                    })
+                }
+            })
         }
         // 模态框关闭
         function modalClose() {
             dialogVisible.value = false
             emit("copyBack", dialogVisible.value)
-        }//模态框确认
+        }
+        //模态框确认
         function modalSure() {
             copyRef.value.validate((val) => {
                 if (val) {
+                    // 打开加载动画
                     const loading = ElLoading.service({
                         lock: true,
                         text: '复制中',
                         background: 'rgba(0, 0, 0, 0.7)',
                     })
+                    // 调用后台接口
                     flow.copyNowMap({
                         id: receive.value.id - 0,
-                        newname: copyForm.value.name
+                        newname: copyForm.value.name,
+                        vol_id: copyForm.value.flashLevel - 0,
+                        link_style_id: copyForm.value.lineType - 0,
                     }).then(res => {
                         if (res.code == 0) {
                             ElMessage({
                                 message: "复制成功!",
                                 type: "success"
                             })
+                            // 关闭加载动画
                             loading.close()
+                            // 关闭模态框
                             dialogVisible.value = false
                             emit("copyBack", dialogVisible.value)
                         } else {
@@ -90,6 +139,14 @@ export default {
                 }
             })
         }
+        // 电压等级的选择器change方法
+        function flashChange(e) {
+            copyForm.value.flashLevel = e
+        }
+        // 接线方式的选择器的change方法
+        function lineChange(e) {
+            copyForm.value.lineType = e
+        }
         // 生命周期函数
         onMounted(() => {
             reload()//初始化
@@ -104,6 +161,10 @@ export default {
             copyRef,//表单ref
             copyRules,//表单验证项
             receive,//接收穿过来的模型数据
+            flashList,//电压等级列表
+            lineList,//接线方式列表
+            flashChange,// 电压等级的选择器change方法
+            lineChange,// 接线方式的选择器的change方法
         }
     }
 }