Преглед изворни кода

Merge branch 'liyangzheng'

liyangzheng пре 1 година
родитељ
комит
38616a5f2d
30 измењених фајлова са 1641 додато и 734 уклоњено
  1. 155 36
      package-lock.json
  2. 8 0
      src/api/flashPower.js
  3. 3 0
      src/api/report.js
  4. 8 0
      src/api/scdCheck/scdCheck.js
  5. 19 0
      src/api/station/station.js
  6. 35 0
      src/api/task.js
  7. BIN
      src/assets/icon/DotsNine.png
  8. 16 15
      src/pages/login/LoginNow.vue
  9. 15 4
      src/pages/mission/MissionVue.vue
  10. 169 28
      src/pages/mission/components/CreateMis.vue
  11. 38 24
      src/pages/mission/components/HaveMis.vue
  12. 35 3
      src/pages/mission/components/StartMission.vue
  13. 94 0
      src/pages/mission/modalComp/FlashCreate.vue
  14. 1 1
      src/pages/mission/modalComp/LookScd.vue
  15. 81 59
      src/pages/mission/modalComp/ModelTree.vue
  16. 35 12
      src/pages/netStructPicture/components/CidTree.vue
  17. 2 2
      src/pages/netStructPicture/components/Gsix.vue
  18. 32 0
      src/pages/netStructPicture/components/ScdAdd.vue
  19. 19 0
      src/pages/netStructPicture/components/ScdDel.vue
  20. 19 0
      src/pages/netStructPicture/components/ScdEdit.vue
  21. 259 0
      src/pages/netStructPicture/components/ScdNow.vue
  22. 64 101
      src/pages/netStructPicture/components/scdMap.vue
  23. 3 0
      src/pages/netStructPicture/components/scdTree.vue
  24. 24 31
      src/pages/netStructPicture/index.vue
  25. 6 0
      src/pages/netStructPicture/modalCom/LookScd.vue
  26. 25 10
      src/pages/setting/components/ReportModule.vue
  27. 36 24
      src/pages/setting/modalComp/Addrm.vue
  28. 55 5
      src/pages/setting/modalComp/Delrm.vue
  29. 40 32
      src/pages/system/components/LineTree.vue
  30. 345 347
      yarn.lock

Разлика између датотеке није приказан због своје велике величине
+ 155 - 36
package-lock.json


+ 8 - 0
src/api/flashPower.js

@@ -23,8 +23,16 @@ function userArea(data) {
         params: data
     })
 }
+function createFlash(data){
+    return request({
+        url:`/basic_area/save`,
+        method:"post",
+        data
+    })
+}
 export default {
     getAllFlashPower,
     getAllArea,
     userArea,
+    createFlash,
 }

+ 3 - 0
src/api/report.js

@@ -11,6 +11,9 @@ function addReport(data) {
         url: `/report/tpl/save`,
         method: "post",
         data,
+        headers: {
+            'content-Type': 'multipart/form-data',
+        },
     })
 }
 function delReport(data) {

+ 8 - 0
src/api/scdCheck/scdCheck.js

@@ -41,6 +41,13 @@ function scdTree(data){
         params:data
     })
 }
+function lookCheck(data){//查询附件列表
+    return request({
+        url:`/attachment/list`,
+        method:"get",
+        params:data,
+    })
+}
 export default{
     scdStart,
     switchIed,
@@ -48,4 +55,5 @@ export default{
     scdResult,
     scdAll,
     scdTree,
+    lookCheck,
 }

+ 19 - 0
src/api/station/station.js

@@ -0,0 +1,19 @@
+import request from '../../utils/request'
+function getArea(data){
+    return request({
+        url:`/area/tree`,
+        method:"get",
+        params:data
+    })
+}
+function getFlashStation(data){//根据区域获取变电站
+    return request({
+        url:`/basic_area/list`,
+        method:"get",
+        params:data
+    })
+}
+export default{
+    getArea,
+    getFlashStation,
+}

+ 35 - 0
src/api/task.js

@@ -7,6 +7,41 @@ function getTask(data) {
         params: data
     })
 }
+// 开始检测
+function tackStart(data){
+    return request({
+        url:`/task/start`,
+        method:"post",
+        data
+    })
+}
+// 创建检测
+function createTask(data){
+    return request({
+        url:`/task/save`,
+        method:"post",
+        data,
+    })
+}
+// 取消检测
+function stopTask(data){
+    return request({
+        url:`/task/stop`,
+        method:"post",
+        data,
+    })
+}
+function delTask(data){
+    return request({
+        url:`/task/delete`,
+        method:"post",
+        data
+    })
+}
 export default {
     getTask,
+    tackStart,
+    createTask,
+    stopTask,
+    delTask,
 }

BIN
src/assets/icon/DotsNine.png


+ 16 - 15
src/pages/login/LoginNow.vue

@@ -44,30 +44,31 @@ export default {
         let isLogin = ref(false)
         let router = useRouter()
         function encryptPassword(password) {
-            let val = SmCrypto.doSm3AndSm2Encrypt(password) + '0000'
-            let ascCode = 0
-            for (var i = 0; i < password.length; i++) {
-                ascCode = password.charCodeAt(i).toString(16);
-                // console.log(ascCode,'asc');
-                if (ascCode.length == 1) {
-                    val += '00' + ascCode
-                } else if (ascCode.length == 2) {
-                    val += '0' + ascCode
-                } else {
-                    val += ascCode
+            if (typeof SmCrypto == 'undefined') {
+                window.location.reload()
+            } else {
+                let val = SmCrypto.doSm3AndSm2Encrypt(password) + '0000'
+                let ascCode = 0
+                for (var i = 0; i < password.length; i++) {
+                    ascCode = password.charCodeAt(i).toString(16);
+                    // console.log(ascCode,'asc');
+                    if (ascCode.length == 1) {
+                        val += '00' + ascCode
+                    } else if (ascCode.length == 2) {
+                        val += '0' + ascCode
+                    } else {
+                        val += ascCode
+                    }
                 }
+                return val
             }
-            console.log(val, 'val');
-            return val
         }
         function sureLog() {
             let kis = encryptPassword(loginForm.value.userpass)
-
             login.LoginNow({
                 login_account: loginForm.value.username,
                 pwd: kis
             }).then(res => {
-                console.log(res, 'login');
                 if (res.returncode === 200) {
                     isLogin.value = true
                     sessionStorage.setItem("loginStatus", isLogin.value)

+ 15 - 4
src/pages/mission/MissionVue.vue

@@ -15,11 +15,11 @@
                 <NoBox v-if="btnSelect == 0 && taskList.length == 0 && sizeNum == 0" :btnSelect="btnSelect"
                     :taskList="taskList" @backToMission="backToMission"></NoBox>
                 <!-- 有检测任务的盒子 -->
-                <HaveMis v-if="btnSelect == 0 && taskList.length != 0 && sizeNum == 0"  @hmBack="hmBack"></HaveMis>
+                <HaveMis v-if="btnSelect == 0 && taskList.length != 0 && sizeNum == 0"  @hmBack="hmBack" @haveBack="haveBack"></HaveMis>
                 <!-- 新建任务盒子 -->
-                <CreateNew v-if="btnSelect == 1" :btnSelect="btnSelect" :taskList="taskList"></CreateNew>
+                <CreateNew v-if="btnSelect == 1" :btnSelect="btnSelect" :taskList="taskList" @createBack="createBack"></CreateNew>
                 <!-- 正在检测盒子 -->
-                <StartMission v-if="btnSelect == 0 && sizeNum == 1" @smBack="smBack"></StartMission>
+                <StartMission v-if="btnSelect == 0 && sizeNum == 1" @smBack="smBack" :startMis="startMis"></StartMission>
             </div>
         </div>
     </div>
@@ -56,6 +56,7 @@ export default {
             }
         ])//任务表单
         let btnSelect = ref(0)//选择的菜单
+        let startMis = ref({})//开始检测
         function searchAllTask() {
             task.getTask({}).then(res => {
                 if (res.data) {
@@ -72,12 +73,19 @@ export default {
         function backToMission(data) {
             btnSelect.value = data
         }
-        function hmBack(data) {
+        function hmBack(data,obj) {
+            startMis.value = obj
             sizeNum.value = data
         }
         function smBack(data){
             sizeNum.value = data
         }
+        function createBack(data){
+            btnSelect.value = data
+        }
+        function haveBack(data){
+            taskList.value = data
+        }
         onMounted(() => {
             searchAllTask()
         })
@@ -92,6 +100,9 @@ export default {
             sizeNum,//判断是否开始检测
             hmBack,//开始检测子组件返回
             smBack,//
+            haveBack,
+            createBack,//createMix.vue返回的菜单栏
+            startMis,//需要检测的任务名称
         }
     },
     components: {

+ 169 - 28
src/pages/mission/components/CreateMis.vue

@@ -9,31 +9,40 @@
                     style="width: 1200px;margin: 0 auto;" :rules="missionRules" require-asterisk-position="right"
                     label-width="500px">
                     <el-form-item label="检测任务名称" prop="misName">
-                        <el-input class="bestInput" v-model="newMission.misName" placeholder="Approved by" clearable />
+                        <el-input class="bestInput" v-model="newMission.misName" placeholder="请输入任务名称" clearable />
                     </el-form-item>
                     <el-form-item label="任务编号" prop="misNum">
-                        <el-input class="bestInput" v-model="newMission.misNum" placeholder="Approved by" clearable />
+                        <el-input class="bestInput" disabled v-model="newMission.misNum" placeholder="自动生成任务编号..."
+                            clearable />
                     </el-form-item>
                     <el-form-item label="检测变电站" prop="flashId">
-                        <el-select style="width: 512px;" v-model="newMission.flashId" placeholder="请选择变电站" clearable
+                        <el-select style="width: 340px;" v-model="newMission.flashId" placeholder="请选择变电站" clearable
                             @change="flashChange">
                             <template v-for="(item, index) in flashList">
                                 <el-option :label="item.label" :value="item.value" />
                             </template>
                         </el-select>
-                        <img style="width: 40px;height: 40px;" src="../../../assets/icon/create_misBtn.png" alt="">
+                        <img @click="addFlash" style="width: 40px;height: 40px;"
+                            src="../../../assets/icon/create_misBtn.png" alt="">
+                    </el-form-item>
+                    <el-form-item label="检测模型" prop="">
+                        <el-input class="bestInput" style="width: 600px;" disabled placeholder="输入内容"
+                            v-model="cmodel"></el-input>
+                        <el-button @click="modelOpen" style="height: 40px;margin-left: 5px;" type="primary"
+                            plain>选择模型</el-button>
                     </el-form-item>
                     <el-form-item label="报告模板" prop="reportNow">
-                        <el-select class="bestInput" v-model="newMission.reportNow" placeholder="Activity zone" clearable>
-                            <el-option label="Zone one" value="shanghai" />
-                            <el-option label="Zone two" value="beijing" />
+                        <el-select class="bestInput" style="width: 400px;" @chang="bmChange" v-model="newMission.reportNow"
+                            placeholder="请选择模板" clearable>
+                            <el-option v-for="(item, index) in rmList" :label="item.name" :value="item.id" />
                         </el-select>
                     </el-form-item>
                     <el-form-item label="任务说明" prop="misMes">
                         <el-input style="width: 1136px;" v-model="newMission.misMes"></el-input>
                     </el-form-item>
                     <el-form-item label="SCD文件">
-                        <el-button style="width: 954px;" @click="chooseScdFile">{{ btnName }}</el-button>
+                        <el-button style="width: 954px;" @click="chooseScdFile" type="primary" plain>{{ btnName
+                        }}</el-button>
                         <span>正在进行间隔装置分析
                             <el-icon>
                                 <Loading />
@@ -46,22 +55,47 @@
             <div class="gapAndUnit">
                 <!-- 间隔列表 -->
                 <div class="gapBox">
-
+                    <div style="display: flex;justify-content: flex-start;align-items: center;margin: 5px;">
+                        <div>
+                            <img src="../../../assets/icon/DotsNine.png" alt="">
+                        </div>
+                        <div>
+                            <span>间隔列表</span>
+                        </div>
+                    </div>
+                    <p :class="jgSelect == index ? 'result' : ''" v-for="(item, index) in jgList"
+                        style="text-align: left;cursor: pointer;" @click="jgClick(item, index)">
+                        {{ item.name }}
+                    </p>
                 </div>
                 <!-- 装置列表 -->
                 <div class="unitBox">
-                    <el-button @click="modelOpen">打开测试</el-button>
+                    <div style="display: flex;justify-content: flex-start;align-items: center;margin: 10px 10px;">
+                        <div>
+                            <img src="../../../assets/icon/HardDrives.png" alt="">
+                        </div>
+                        <div style="margin-left: 5px;">
+                            <span>装置列表——间隔:<em>{{ jg }}</em></span>
+                        </div>
+                        <div style="margin-left: 5px;">
+                            <span>检测模型:<em v-for="(item, index) in mx">{{ mx[index] }}</em></span>
+                        </div>
+                    </div>
+                    <div style="display: flex;justify-content: flex-start;align-items: center;">
+                        <p class="chooseSpan" v-for="(item, index) in mx">{{ mx[index] }}</p>
+                    </div>
                 </div>
             </div>
             <div>
-                <el-button>返回</el-button>
-                <el-button>保存</el-button>
+                <el-button style="width: 200px;height: 30px;" @click="backMent">返回</el-button>
+                <el-button style="width: 200px;height: 30px;" @click="saveMent" type="primary">保存</el-button>
             </div>
         </div>
         <!-- 模态框组件 -->
         <div>
-            <LookScd v-if="scdLooks" :scdLooks="scdLooks" @nowBack="nowBack"></LookScd>
-            <ModelTree v-if="treeMool" :treeMool="treeMool" @treeBack="treeBack"></ModelTree>
+            <LookScd v-if="scdLooks" :scdLooks="scdLooks" @nowBack="nowBack" @lookNum="lookNum"></LookScd>
+            <ModelTree v-if="treeMool" :treeMool="treeMool" @treeBack="treeBack" @treeNum="treeNum"></ModelTree>
+            <FlashCreate v-if="fcModal" :fcModal="fcModal" @fcBack="fcBack"></FlashCreate>
         </div>
     </div>
 </template>
@@ -69,9 +103,16 @@
 <script>
 import { ref, onMounted, reactive } from 'vue';
 import flashPower from '../../../api/flashPower'
-import scd from "../../../api/scd"
+import systemRow from '@/api/systemRow'
+import litLine from '@/api/litLine';
+import report from '@/api/report';
+import scd from "@/api/scd"
+import task from '@/api/task';
+import station from '@/api/station/station'
 import LookScd from '../modalComp/LookScd.vue';
 import ModelTree from '../modalComp/ModelTree.vue';
+import FlashCreate from '../modalComp/FlashCreate.vue';
+import { ElMessage } from 'element-plus';
 export default {
     props: {
         btnSelect: {
@@ -115,6 +156,18 @@ export default {
         let scdLooks = ref(false)//选择scd文件时的显示与否
         let treeMool = ref(false)//选择模型模态框
         let btnName = ref('点击选择scd文件')
+        let jg = ref("请选择")
+        let jgList = ref([])//间隔列表
+        let jgSelect = ref()//选择间隔
+        let jgid = ref("")//间隔id
+        let mx = ref([])
+        let mxList = ref([])//模型列表
+        let mxId = ref("")//模型id
+        let rmList = ref([])//报告模板list
+        let scdId = ref('')//lookscd.vue返回的scdid
+        let scdName = ref('')//lookscd.vue返回的scdname
+        let cmodel = ref('')
+        let fcModal = ref(false)//创建变电站模态框
         function searchAllFlash() {
             flashPower.getAllArea({}).then(res => {
                 flashPower.getAllFlashPower({ pid: res.data[0].pid }).then(res => {
@@ -124,15 +177,27 @@ export default {
                             value: item.id
                         }
                     })
-                    // console.log(flashList.value, 'value');
                 })
             })
+            scd.getScdMiddle({ scd_id: 312000086 }).then(res => {
+                jgList.value = res.data
+            })
+            report.getReport({}).then(res => {
+                rmList.value = res.data
+            })
         }
-
         //变电站下拉框change事件
         function flashChange(e) {
             // searchScd(e)
         }
+        function bmChange(e) {
+            newMission.value.reportNow = e.id
+        }
+        function jgClick(row, num) {
+            jg.value = row.name
+            jgSelect.value = num
+            jgid.value = row.id
+        }
         // 选择scd文件
         function chooseScdFile() {
             scdLooks.value = true
@@ -143,20 +208,56 @@ export default {
             if (names && sid) {
                 newMission.value.scdFolder = sid
                 btnName.value = names
-                scd.getScdMiddle({scd_id:sid}).then(res=>{
-                    console.log(res,'sid');
+                scd.getScdMiddle({ scd_id: sid }).then(res => {
+                    console.log(res, 'sid');
                 })
-                scd.getIedMiddle({scd_id:sid}).then(res=>{
-                    console.log(res,'ied');
+                scd.getIedMiddle({ scd_id: sid }).then(res => {
+                    console.log(res, 'ied');
                 })
             }
         }
-        function treeBack(data){
+        function saveMent() {//保存检测任务
+            task.createTask({
+                name: newMission.value.misName,
+                station_id: 861,
+                memo: newMission.value.misMes,
+                report_id: newMission.value.reportNow - 0,
+                scd_id: scdId.value - 0,
+                modelids: mxId.value.toString()
+            }).then(res => {
+                if (res.code == 0) {
+                    ElMessage({
+                        message: "创建成功",
+                        type: "success"
+                    })
+                    emit("createBack", 0)
+                }
+            })
+        }
+        function addFlash() {
+            fcModal.value = true
+        }
+        function backMent() {
+            emit("createBack", 0)
+        }
+        function treeBack(data) {
             treeMool.value = data
         }
-        function modelOpen(){
+        function modelOpen() {
             treeMool.value = true
         }
+        function treeNum(data, name) {
+            mxId.value = data
+            mx.value = name
+            cmodel.value = name.toString()
+        }
+        function lookNum(name, id) {
+            scdId.value = id
+            scdName.value = name
+        }
+        function fcBack(data) {
+            fcModal.value = data
+        }
         onMounted(() => {
             searchAllFlash()
         })
@@ -175,16 +276,43 @@ export default {
             treeMool,//选择模型显示与否
             treeBack,//modeltree传回数据
             modelOpen,//选择模型打开模态框
+            jg,//间隔
+            jgList,//间隔列表
+            jgSelect,//选择
+            jgClick,//间隔点击
+            jgid,//间隔id
+            mx,//模型
+            mxList,//模型列表
+            treeNum,//modelTree.vue返回的id函数
+            mxId,//模型id
+            lookNum,//lookscd.vue返回的scd名称和id函数
+            rmList,//报告模板列表
+            scdId,//lookscd.vue返回的数据
+            scdName,//lookscd.vue返回的数据
+            saveMent,//保存检测任务
+            bmChange,
+            backMent,//返回切换
+            cmodel,
+            addFlash,//新建变电站
+            fcModal,//创建变电站模态框
+            fcBack,//flashcreate.vue返回的模态框值
         }
     },
     components: {
         LookScd,
         ModelTree,//选择模型
+        FlashCreate,//创建变电站
     }
 }
 </script>
 
 <style scoped>
+em {
+    font-style: normal;
+    color: #5779D7;
+    margin-right: 5px;
+}
+
 .createMisBox {
     width: 100%;
     height: calc(100vh - 150px);
@@ -201,14 +329,14 @@ export default {
 }
 
 .bestInput {
-    width: 550px;
+    width: 340px;
     height: 40px;
     border-radius: 2px 2px 2px 2px;
 }
 
 .gapAndUnit {
     width: 1136px;
-    height: 150px;
+    /* height: 150px; */
     /* border: 1px solid black; */
     margin: 5px auto;
     display: flex;
@@ -218,15 +346,28 @@ export default {
 
 .gapBox {
     width: 288px;
-    height: 142px;
+    height: calc(100vh - 600px);
     overflow-y: auto;
     border: 1px solid #5779D7;
 }
 
 .unitBox {
     width: 832px;
-    height: 142px;
+    height: calc(100vh - 600px);
     overflow-y: auto;
     border: 1px solid #5779D7;
+    position: relative;
+}
+
+.result {
+    color: #5779D7;
 }
-</style>
+
+.chooseSpan {
+    width: 150px;
+    height: 30px;
+    margin-left: 10px;
+    border: 1px solid blue;
+    text-align: center;
+    line-height: 30px;
+}</style>

+ 38 - 24
src/pages/mission/components/HaveMis.vue

@@ -7,9 +7,7 @@
         <p class="createDate">创建日期:2000-00-00</p>
         <img src="../../../assets/image/start_btn.png" alt="" />
         <p class="nowModel">
-          当前模型:<em class="nowEm"
-            >110kv线路保护<img src="../../../assets/icon/pencil.png" alt=""
-          /></em>
+          当前模型:<em class="nowEm">110kv线路保护<img src="../../../assets/icon/pencil.png" alt="" /></em>
         </p>
       </div>
       <!-- 待检测任务 -->
@@ -17,29 +15,26 @@
         <div>
           <p class="norep">待检测任务</p>
         </div>
-        <div>
+        <div style="display: flex;justify-content: flex-start;align-items: center;overflow-x: auto;">
           <!-- <template> -->
-          <div
-            class="intBox"
-            :style="{ 'background-image': `url(${imgBack})` }"
-          >
+          <div class="intBox" v-for="(item,index) in misList" :style="{ 'background-image': `url(${imgBack})` }">
             <div class="intBoxOne">
               <p class="intOne">
-                <span>检测任务名称</span>
+                <span>{{ item.name }}</span>
                 <span>详情→</span>
               </p>
               <p>
                 <img src="../../../assets/icon/white_flash.png" alt="" />
-                <span class="commonSpan">某个变电站</span>
+                <span class="commonSpan">{{ item.station_name }}</span>
               </p>
               <p>
                 <img src="../../../assets/icon//white_clock.png" alt="" />
-                <span class="commonSpan">2000-00-00</span>
+                <span class="commonSpan">{{ item.ut }}</span>
               </p>
             </div>
             <!-- 点击检测 -->
             <div class="setNow">
-              <span class="setnowspan" @click="startNow">立即检测</span>
+              <span class="setnowspan" @click="startNow(item,index)">立即检测</span>
             </div>
           </div>
           <!-- </template> -->
@@ -52,10 +47,7 @@
         </div>
         <div>
           <!-- <template> -->
-          <div
-            class="intBox"
-            :style="{ 'background-image': `url(${imgBack})` }"
-          >
+          <div class="intBox" :style="{ 'background-image': `url(${imgBack})` }">
             <div class="intBoxOne">
               <p class="intOne">
                 <span>检测任务名称</span>
@@ -72,9 +64,7 @@
             </div>
             <!-- 点击检测 -->
             <div class="setNow">
-              <span class="setnowspan" @click="goNetStructPicture"
-                >scd可视化</span
-              >
+              <span class="setnowspan" @click="goNetStructPicture">scd可视化</span>
               <span class="setnowspan">|</span>
               <span class="setnowspan">检测结果</span>
             </div>
@@ -89,19 +79,20 @@
 <script>
 import { ref, onMounted, computed, toRefs } from "vue";
 import { useRouter } from "vue-router";
+import task from "@/api/task"
 import imgs from "../jscom/img";
 export default {
   setup(props, { emit }) {
-    let { startNow } = toRefs(props);
     let imgBack = ref(require("@/assets/image/card_blue.png"));
     let router = useRouter();
     let sizeNum = ref(1);
+    let misList = ref([])//任务列表
     function scdLink() {
       router.push("/home/scdMap");
     }
-    function getStart() {
+    function startNow(row,num) {
       sizeNum.value = 1;
-      emit("hmBack", sizeNum.value);
+      emit("hmBack", sizeNum.value,row);
     }
     function goNetStructPicture() {
       router.push({
@@ -112,12 +103,34 @@ export default {
         },
       });
     }
+    function getList(){
+      // 0为待检测
+      task.getTask({pageno:1,pagesize:10,state:0}).then(res=>{
+        misList.value = res.data
+        emit("haveBack",misList.value)
+      })
+      // 2为完成检测
+      task.getTask({pageno:1,pagesize:10,state:2}).then(res=>{
+        // misList.value = res.data
+        console.log(res,'完成');
+      })
+      // 1为正在检测
+      task.getTask({pageno:1,pagesize:10,state:1}).then(res=>{
+        // misList.value = res.data
+        console.log(res,'正在');
+      })
+    }
+    onMounted(()=>{
+      getList()
+    })
     return {
       imgBack,
       scdLink,
-      startNow: getStart,
+      startNow,
       sizeNum,
       goNetStructPicture,
+      getList,
+      misList,
     };
   },
 };
@@ -201,6 +214,7 @@ p {
   line-height: 20px;
   background-repeat: no-repeat;
   background-size: 100% 100%;
+  margin-right: 5px;
   /* border: 1px solid brown; */
   /* background-image: url(../../../assets/image/card_blue.png); */
 }
@@ -210,7 +224,7 @@ p {
 }
 
 .intOne span:nth-child(2) {
-  margin-left: 100px;
+  margin-left: 70px;
   font-size: 14px;
   color: white;
 }

+ 35 - 3
src/pages/mission/components/StartMission.vue

@@ -3,8 +3,8 @@
         <div class="bigBox">
             <!-- 检测任务信息 -->
             <div class="missionBox">
-                <p class="nowMis">正在检测的任务名称</p>
-                <p class="dateMis">创建日期:2000-00-00</p>
+                <p class="nowMis">{{ loadingMis.name }}</p>
+                <p class="dateMis">创建日期:{{ loadingMis.ct }}</p>
                 <img src="../../../assets/image/start_mission.png" style="width: 200px;height: 200px;" alt="">
                 <p class="loading1">请耐心等待检测完成</p>
                 <el-button type="primary" @click="misDown">取消</el-button>
@@ -25,17 +25,49 @@
 </template>
 
 <script>
-import { ref, onMounted, toRefs } from 'vue';
+import { ref, onMounted, toRefs,watch } from 'vue';
 import StepMethod from './StepMethod.vue';
+import task from '@/api/task';
+import { ElMessage } from 'element-plus';
 export default {
+    props:{
+        startMis:{
+            type:Object,
+            required:true
+        }
+    },
     setup(props, { emit }) {
         let arrow = ref(0)
+        let loadingMis = ref({})
+        watch(()=>props.startMis,(newVal)=>{
+            loadingMis.value = newVal
+            console.log(loadingMis.value,'watch');
+        })
         function misDown() {
+            task.stopTask({id:loadingMis.value.id}).then(res=>{
+                if(res.code == 0){
+                    ElMessage({
+                        message:"取消成功",
+                        type:"success"
+                    })
+                }
+            })
             emit("smBack", arrow.value)
         }
+        function picReload(){
+            loadingMis.value = props.startMis
+            task.tackStart({id:loadingMis.value.id}).then(res=>{
+                console.log(res,'开始');
+            })
+        }
+        onMounted(()=>{
+            picReload()
+        })
         return {
             arrow,
             misDown,
+            loadingMis,//传递过来的任务名称
+            picReload,//初始化组件
         }
     },
     components: {

+ 94 - 0
src/pages/mission/modalComp/FlashCreate.vue

@@ -0,0 +1,94 @@
+<template>
+    <div>
+        <el-dialog v-model="dialogVisible" title="选择模型" width="30%" @close="sureclose">
+            <el-form :model="formData" label-width="120px" :rules="dataRule">
+                <el-form-item label="区域名称" prop="areaName">
+                    <el-input v-model="formData.areaName" />
+                </el-form-item>
+                <el-form-item label="父级区域">
+                    <el-select v-model="formData.pids" placeholder="请选择父级区域">
+                        <el-option v-for="(item, index) in fatherArea" :label="item.title" :value="item.pid" />
+                    </el-select>
+                </el-form-item>
+                <el-form-item label="区域类型" prop="areaType">
+                    <el-input v-model="formData.areaType" />
+                </el-form-item>
+            </el-form>
+            <template #footer>
+                <span class="dialog-footer">
+                    <el-button @click="cleanBox">取消</el-button>
+                    <el-button type="primary" @click="sureArr">
+                        确认
+                    </el-button>
+                </span>
+            </template>
+        </el-dialog>
+    </div>
+</template>
+
+<script>
+import { ref, onMounted, toRefs, watch, onBeforeUnmount, reactive } from 'vue'
+import flashPower from '@/api/flashPower'
+export default {
+    props: {
+        fcModal: {
+            type: Boolean,
+            required: true
+        }
+    },
+    setup(props, { emit }) {
+        let dialogVisible = ref(false)
+        let formData = ref({
+            pids: "",
+            areaType: "",
+            areaName: ""
+        })
+        let fatherArea = ref([])
+        let dataRule = reactive({
+            areaName: [
+                { required: true, message: '请输入区域名称', trigger: 'blur' },
+            ],
+            areaType: [
+                { required: true, message: '请输入区域类型', trigger: 'blur' },
+            ],
+        })
+        function reload() {
+            dialogVisible.value = props.fcModal
+            flashPower.getAllArea({}).then(res => {
+                fatherArea.value = res.data
+                console.log(fatherArea.value);
+            })
+        }
+        function modalClose() {
+            dialogVisible.value = false
+            emit("fcBack", dialogVisible.value)
+        }
+        function modalTrue() {
+            flashPower.createFlash({
+                pid: formData.value.pids - 0,
+                area_type: formData.value.areaType - 0,
+                area_name: formData.value.areaName,
+            }).then(res => {
+                console.log(res, 'tianjia');
+            })
+            dialogVisible.value = false
+            emit("fcBack", dialogVisible.value)
+        }
+        onMounted(() => {
+            reload()
+        })
+        return {
+            dialogVisible,//模态框状态
+            sureclose: modalClose,
+            cleanBox: modalClose,
+            sureArr: modalTrue,
+            reload,//初始化页面
+            formData,//表单数据
+            fatherArea,//父级区域
+            dataRule,
+        }
+    }
+}
+</script>
+
+<style scoped></style>

+ 1 - 1
src/pages/mission/modalComp/LookScd.vue

@@ -60,9 +60,9 @@ export default {
             emit("nowBack", dialogVisible.value)
         }
         function handleNodeClick(e) {
-            console.log(e, 'emit');
             scdName.value = e.scd_name
             chooseScdid.value = e.id
+            emit("lookNum",scdName.value,chooseScdid.value)
         }
         onMounted(() => {
             searchScd()

+ 81 - 59
src/pages/mission/modalComp/ModelTree.vue

@@ -1,9 +1,10 @@
 <template>
     <div>
         <div class="bigBox">
-            <el-dialog v-model="dialogVisible" title="选择数据" width="30%" @close="sureclose">
-                <el-tree :data="treeData" show-checkbox node-key="id" default-expand-all :expand-on-click-node="false"
-                    :props="{ class: customNodeClass }" />
+            <el-dialog v-loading="loading" v-model="dialogVisible" title="选择模型" width="30%" @close="sureclose">
+                <el-tree :data="treeData" style="height: calc(100vh - 500px);overflow-y: auto;" show-checkbox node-key="id"
+                    @check-change="handleCheckChange" :check-strictly="true" default-expand-all
+                    :expand-on-click-node="false" :props="defaultProps" />
                 <template #footer>
                     <span class="dialog-footer">
                         <el-button @click="cleanBox">取消</el-button>
@@ -14,12 +15,18 @@
                 </template>
             </el-dialog>
         </div>
+        <div id="lord" v-loading="loading" element-loading-text="加载数据中"
+            style="width: 100vw;height: 100vh;position: fixed;top: 0px;left: 0px;z-index: 3000;">
 
+        </div>
     </div>
 </template>
 
 <script>
 import { ref, onMounted, toRefs } from 'vue';
+import litLine from '@/api/litLine';
+import systemRow from '@/api/systemRow';
+import { ElLoading } from 'element-plus';
 export default {
     props: {
         treeMool: {
@@ -28,70 +35,77 @@ export default {
         }
     },
     setup(props, { emit }) {
+        let loading = ref(true)
         let treeData = ref([
-            {
-                id: 1,
-                label: 'Level one 1',
-                children: [
-                    {
-                        id: 4,
-                        label: 'Level two 1-1',
-                        isPenultimate: true,
-                        children: [
-                            {
-                                id: 9,
-                                label: 'Level three 1-1-1',
-                            },
-                            {
-                                id: 10,
-                                label: 'Level three 1-1-2',
-                            },
-                        ],
-                    },
-                ],
-            },
-            {
-                id: 2,
-                label: 'Level one 2',
-                isPenultimate: true,
-                children: [
-                    {
-                        id: 5,
-                        label: 'Level two 2-1',
-                    },
-                    {
-                        id: 6,
-                        label: 'Level two 2-2',
-                    },
-                ],
-            },
-            {
-                id: 3,
-                label: 'Level one 3',
-                isPenultimate: true,
-                children: [
-                    {
-                        id: 7,
-                        label: 'Level two 3-1',
-                    },
-                    {
-                        id: 8,
-                        label: 'Level two 3-2',
-                    },
-                ],
-            },
         ])
+        let defaultProps = ref({
+            label: "model_name",
+            children: "children",
+            id: "id"
+        })
         let result = props.treeMool
+        let mdId = ref([])//模型id
+        let mdName = ref([])
         let { cleanBox, sureArr } = toRefs(props)
         let dialogVisible = ref(false)
         function getLine() {
+            let lord = document.getElementById("lord")
+            loading.value = true
+            let level = [] // 电压等级
+            let line = [] // 接线方式
+            let mine = [] // 所有模型
             dialogVisible.value = result
+            // 用 Promise.all 等待所有异步操作完成
+            Promise.all([
+                litLine.getAllLine({ pageno: 1, pagesize: 30 }),
+                litLine.getAllm({ pageno: 1, pagesize: 100 }),
+                systemRow.getChildren({ code: "voltage_level" })
+            ]).then(([lineRes, mineRes, levelRes]) => {
+                line = lineRes.data
+                mine = mineRes.data
+                level = levelRes.data
+                if (level.length > 0 && line.length > 0 && mine.length > 0) {
+                    let a = level.map(item => {
+                        let filteredLine = line.filter(param => item.name === param.vol_level_name);
+                        if (filteredLine.length > 0) {
+                            let children = filteredLine.map(filteredItem => {
+                                let filteredMine = mine.filter(mineItem => mineItem.line_link_style_name === filteredItem.name);
+                                return {
+                                    model_name: filteredItem.name,
+                                    children: filteredMine
+                                };
+                            });
+                            return {
+                                model_name: item.name,
+                                children
+                            };
+                        }
+                        return null;
+                    }).filter(item => item !== null);
+                    treeData.value = a
+                    loading.value = false
+                    lord.style.display = 'none'
+                }
+            }).catch(error => {
+                // 处理错误
+                console.error("Error:", error);
+            });
+
         }
-        function customNodeClass(data, node) {
-            if (data.isPenultimate) {
-                return 'is-penultimate'
+
+        function handleCheckChange(e) {
+            const id = e.id;
+            const model_name = e.model_name;
+
+            if (!mdId.value.includes(id)) {
+                mdId.value.push(id);
+                mdName.value.push(model_name);
+            } else {
+                const idIndex = mdId.value.indexOf(id);
+                mdId.value.splice(idIndex, 1);
+                mdName.value.splice(idIndex, 1);
             }
-            return null
+            emit("treeNum", mdId.value, mdName.value);
         }
         function getBack() {
             dialogVisible.value = false
@@ -110,13 +124,16 @@ export default {
         })
         return {
             treeData,
-            customNodeClass,
             dialogVisible,
             cleanBox: getBack,
             sureArr: nowBack,
             sureclose,
             getLine,
             result,
+            defaultProps,
+            handleCheckChange,
+            mdName,
+            loading,
         }
     }
 }
@@ -135,4 +152,9 @@ export default {
 .is-penultimate>.el-tree-node__children>div {
     width: 25%;
 }
+
+/* :deep(.el-tree-node.is-expanded>.el-tree-node__children) {
+    display: flex;
+    flex-wrap: wrap;
+} */
 </style>

+ 35 - 12
src/pages/netStructPicture/components/CidTree.vue

@@ -25,11 +25,12 @@
 <script>
 import { ref, onMounted, toRefs } from 'vue';
 import cid from "@/api/cid/cid"
+import scdCheck from '@/api/scdCheck/scdCheck';
 export default {
     props: {
 
     },
-    setup(props,{emit}) {
+    setup(props, { emit }) {
         let tagList = ref([])
         let tagChoose = ref(0)
         let treeData = ref([
@@ -71,22 +72,41 @@ export default {
         ])
         let needName = ref('')
         let defaultProps = ref({
-            label:"label",
-            children:"children"
+            label: "label",
+            children: "children"
         })
         function tagClick(row, num) {
+            console.log(row, 'row');
             tagChoose.value = num
-            needName.value = row.desc
-            cid.findFile({scd_id:316000086,ied_name:row.desc,pageno:1,pagesize:10,station_id:861}).then(res=>{
-                console.log(res,'文件');
+            cid.findFile({
+                scd_id: 276000076,
+                ied_name: row.desc,
+                pageno: 1,
+                pagesize: 10,
+                station_id: 861
+            }).then(res => {
+                console.log(res, '文件');
+            })
+            scdCheck.lookCheck({
+                pageindex: 1,
+                pagesize: 10,
+                station_id: 861,
+                scd_id: 276000076,
+                is_checkin: 2,
+                ied_name: row.ied_name
+            }).then(res => {
+                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)
+                }
             })
-            emit('treeBack',needName.value)
         }
-        function handleNodeClick(e){
-            console.log(e,'eee');
+        function handleNodeClick(e) {
+            console.log(e, 'eee');
         }
         onMounted(() => {
-            cid.getAll({ scd_id: 316000086, ied_name: "" }).then(res => {
+            cid.getAll({ scd_id: 276000076, ied_name: "" }).then(res => {
                 tagList.value = res.data
             })
         })
@@ -104,10 +124,12 @@ export default {
 </script>
 
 <style scoped>
-p,h3{
+p,
+h3 {
     margin: 0;
     padding: 0;
 }
+
 .bigBox {
     width: 100%;
     height: calc(100vh - 270px);
@@ -150,4 +172,5 @@ p,h3{
     height: calc(100vh - 670px);
     /* border: 1px solid skyblue; */
     margin: 2px auto;
-}</style>
+}
+</style>

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

@@ -137,7 +137,7 @@ export default {
         let leaderLines = [];//控制线条显示
         let iedName = ref('')
         let antherName = ref('')
-        watch(() => props.arrName, (newVal) => {
+        watch(() => props.backName, (newVal) => {
             iedName.value = newVal
         })
         watch(() => props.upName, (newVal) => {
@@ -154,7 +154,7 @@ export default {
             }
         }
         onMounted(() => {
-            iedName.value = props.arrName
+            iedName.value = props.backName
             antherName.value = props.upName
             let goose = document.getElementById('goose')//左盒子开始元素
             let mainOne = document.getElementById('mainOne')//左盒子中部上半区元素

+ 32 - 0
src/pages/netStructPicture/components/ScdAdd.vue

@@ -0,0 +1,32 @@
+<template>
+    <div class="bigBox">
+        <div class="left">
+
+        </div>
+        <div class="right">
+            
+        </div>
+    </div>
+</template>
+
+<script>
+import { ref, onMounted, onBeforeUnmount, toRefs, watch } from 'vue'
+import LeaderLine from '../../../../public/leader-line.min.js';
+export default {
+    props:{
+        arrNew:{
+            type:Array,
+            required:true
+        }
+    },
+    setup() {
+        let lineRide = []//线条数组
+        onMounted(()=>{
+
+        })
+        return {}
+    }
+}
+</script>
+
+<style></style>

+ 19 - 0
src/pages/netStructPicture/components/ScdDel.vue

@@ -0,0 +1,19 @@
+<template>
+    <div>
+        <h1>删除scd</h1>
+    </div>
+</template>
+
+<script>
+export default {
+    setup () {
+        
+
+        return {}
+    }
+}
+</script>
+
+<style lang="scss" scoped>
+
+</style>

+ 19 - 0
src/pages/netStructPicture/components/ScdEdit.vue

@@ -0,0 +1,19 @@
+<template>
+    <div>
+        <h1>修改scd</h1>
+    </div>
+</template>
+
+<script>
+export default {
+    setup () {
+        
+
+        return {}
+    }
+}
+</script>
+
+<style lang="scss" scoped>
+
+</style>

+ 259 - 0
src/pages/netStructPicture/components/ScdNow.vue

@@ -0,0 +1,259 @@
+<template>
+    <div style="display: flex;justify-content: space-around; align-items: center;">
+        <div class="scdBox">
+            <div>
+                <img src="../../../assets/image/squer_scd.png" alt="">
+                <p>SCD版本</p>
+            </div>
+            <div>
+                <div id="oldScd">
+                    <img src="../../../assets/icon/cilce_gray.png" alt="">
+                    <span>V1.1.0</span>
+                </div>
+                <div id="newScd">
+                    <img src="../../../assets/icon/clice_blue.png" alt="">
+                    <span>V1.1.1</span>
+                </div>
+            </div>
+        </div>
+        <div class="crcBox">
+            <div>
+                <img src="../../../assets/image/squer_crc.png" alt="">
+                <p>CRC</p>
+            </div>
+            <div>
+                <div id="oldCrc">
+                    <img src="../../../assets/icon/cilce_gray.png" alt="">
+                    <span>1000000111100000</span>
+                </div>
+                <div id="newCrc">
+                    <img src="../../../assets/icon/clice_blue.png" alt="">
+                    <span>1000000111100022</span>
+                </div>
+            </div>
+        </div>
+        <div class="iedBox">
+            <div id="oldIed">
+                <img src="../../../assets/image/squer_ied.png" alt="">
+                <p>IED</p>
+            </div>
+            <div id="newIed">
+                <p id="addId" @click="lookAdd">
+                    <el-icon style="color: #1D48E8;font-size: 18px;display: block;">
+                        <CirclePlus />
+                    </el-icon>
+                    <span style="display: block;color: #1D48E8;">新增(5)</span>
+                </p>
+                <p id="editId" @click="lookEdit">
+                    <el-icon style="color: #FECC2A;font-size: 18px;display: block;">
+                        <EditPen />
+                    </el-icon>
+                    <span style="display: block;color: #FECC2A;">修改(10)</span>
+                </p>
+                <p id="delId" @click="lookDel">
+                    <el-icon style="color: red;font-size: 18px;display: block;">
+                        <Delete />
+                    </el-icon>
+                    <span style="display: block;color: red;">删除(2)</span>
+                </p>
+            </div>
+        </div>
+    </div>
+</template>
+
+<script>
+import { ref, onMounted, toRefs, watch, onBeforeUnmount } from 'vue';
+import LeaderLine from '../../../../public/leader-line.min.js';
+export default {
+    setup(props,{emit}) {
+        let lineList = []
+        let lookType = ref(0)
+        function lineWrite() {
+            let oldScd = document.getElementById("oldScd")
+            let newScd = document.getElementById("newScd")
+            let oldCrc = document.getElementById("oldCrc")
+            let newCrc = document.getElementById("newCrc")
+            let oldIed = document.getElementById("oldIed")
+            let newIed = document.getElementById("newIed")
+            let addId = document.getElementById("addId")
+            let editId = document.getElementById('editId')
+            let delId = document.getElementById("delId")
+            lineList.push(new LeaderLine(oldScd, newScd, {
+                color: "blue",//连接线颜色
+                size: 10,//连接线宽度
+                path: "straight",//连接线样式
+                startSocket: "bottom",//开始链接元素位置
+                endSocket: "top",//结束链接元素位置
+                dash: {
+                    // 绘制线的长度 'auto'=size*2
+                    len: 1,
+                    // 绘制线之间的间隙 'auto'=size
+                    gap: 6,
+                    // 线条滚动 true 是(或者{duration: 1000, timing: 'linear'},详见动画选项), false 否(默认)
+                    animation: {
+                        duration: 800,//动画速度
+                        timing: "linear",
+                    },
+                },//动画开启
+                endPlug: 'arrow3',//结束箭头
+                endPlugSize: 0.5,//结束箭头size
+            }))
+            lineList.push(new LeaderLine(oldCrc, newCrc, {
+                color: "blue",//连接线颜色
+                size: 10,//连接线宽度
+                path: "straight",//连接线样式
+                startSocket: "bottom",//开始链接元素位置
+                endSocket: "top",//结束链接元素位置
+                dash: {
+                    // 绘制线的长度 'auto'=size*2
+                    len: 1,
+                    // 绘制线之间的间隙 'auto'=size
+                    gap: 6,
+                    // 线条滚动 true 是(或者{duration: 1000, timing: 'linear'},详见动画选项), false 否(默认)
+                    animation: {
+                        duration: 800,//动画速度
+                        timing: "linear",
+                    },
+                },//动画开启
+                endPlug: 'arrow3',//结束箭头
+                endPlugSize: 0.5,//结束箭头size
+            }))
+            lineList.push(new LeaderLine(oldIed, addId, {
+                color: "gray",//连接线颜色
+                size: 2,//连接线宽度
+                path: "grid",//连接线样式
+                startSocket: "bottom",//开始链接元素位置
+                endSocket: "left",//结束链接元素位置
+                endPlug: 'disc',//结束箭头
+                endPlugSize: 2,//结束箭头size
+            }))
+            lineList.push(new LeaderLine(oldIed, editId, {
+                color: "gray",//连接线颜色
+                size: 2,//连接线宽度
+                path: "grid",//连接线样式
+                startSocket: "bottom",//开始链接元素位置
+                endSocket: "left",//结束链接元素位置
+                endPlug: 'disc',//结束箭头
+                endPlugSize: 2,//结束箭头size
+            }))
+            lineList.push(new LeaderLine(oldIed, delId, {
+                color: "gray",//连接线颜色
+                size: 2,//连接线宽度
+                path: "grid",//连接线样式
+                startSocket: "bottom",//开始链接元素位置
+                endSocket: "left",//结束链接元素位置
+                endPlug: 'disc',//结束箭头
+                endPlugSize: 2,//结束箭头size
+            }))
+        }
+        function lookAdd() {
+            lookType.value = 1
+            emit('nowBack',lookType.value)
+        }
+        function lookEdit() {
+            lookType.value = 2
+            emit('nowBack',lookType.value)
+        }
+        function lookDel() {
+            lookType.value = 3
+            emit('nowBack',lookType.value)
+        }
+        onMounted(()=>{
+            setTimeout(()=>{
+                lineWrite()
+            },1500)
+        })
+        onBeforeUnmount(()=>{
+            lineList.forEach(item=>item.remove())
+        })
+        return {
+            lineWrite,
+            lineList,
+            lookType,
+            lookAdd,//查看新增
+            lookDel,//查看删除
+            lookEdit,//查看修改
+        }
+    }
+}
+</script>
+
+<style>
+p {
+    margin: 0;
+    padding: 0;
+}
+.scdBox {
+    width: 33%;
+    height: auto;
+    text-align: center;
+    /* border: 1px solid red; */
+}
+
+.crcBox {
+    width: 33%;
+    height: auto;
+    text-align: center;
+    /* border: 1px solid red; */
+}
+
+.iedBox {
+    width: 33%;
+    height: auto;
+    text-align: center;
+    /* border: 1px solid red; */
+    position: relative;
+}
+#newIed {
+    position: absolute;
+    top: 100px;
+    right: -10px;
+}
+
+#oldScd {
+    margin-bottom: 40px;
+}
+
+#oldCrc {
+    margin-bottom: 40px;
+}
+
+#addId {
+    display: flex;
+    justify-content: center;
+    align-items: center;
+    width: 112px;
+    height: 40px;
+    border: 1px dashed #1D48E8;
+    background-color: rgb(239, 243, 255);
+    border-radius: 5px;
+    margin-bottom: 20px;
+    cursor: pointer;
+}
+
+#editId {
+    display: flex;
+    justify-content: center;
+    align-items: center;
+    width: 112px;
+    height: 40px;
+    border: 1px dashed #FECC2A;
+    background-color: rgb(255, 251, 242);
+    border-radius: 5px;
+    margin-bottom: 20px;
+    cursor: pointer;
+}
+
+#delId {
+    display: flex;
+    justify-content: center;
+    align-items: center;
+    width: 112px;
+    height: 40px;
+    border: 1px dashed red;
+    background-color: rgb(255, 236, 236);
+    border-radius: 5px;
+    margin-bottom: 20px;
+    cursor: pointer;
+}
+</style>

+ 64 - 101
src/pages/netStructPicture/components/scdMap.vue

@@ -8,8 +8,8 @@
                 <span>对比文件:{{ kun }}</span>
             </div>
         </div>
-        <div class="mapBox">
-            <div class="scdBox">
+        <!-- <div class="mapBox" v-if="lookType == 0"> -->
+        <!-- <div class="scdBox">
                 <div>
                     <img src="../../../assets/image/squer_scd.png" alt="">
                     <p>SCD版本</p>
@@ -47,27 +47,31 @@
                     <p>IED</p>
                 </div>
                 <div id="newIed">
-                    <p id="addId">
+                    <p id="addId" @click="lookAdd">
                         <el-icon style="color: #1D48E8;font-size: 18px;display: block;">
                             <CirclePlus />
                         </el-icon>
                         <span style="display: block;color: #1D48E8;">新增(5)</span>
                     </p>
-                    <p id="editId">
+                    <p id="editId" @click="lookEdit">
                         <el-icon style="color: #FECC2A;font-size: 18px;display: block;">
                             <EditPen />
                         </el-icon>
                         <span style="display: block;color: #FECC2A;">修改(10)</span>
                     </p>
-                    <p id="delId">
+                    <p id="delId" @click="lookDel">
                         <el-icon style="color: red;font-size: 18px;display: block;">
                             <Delete />
                         </el-icon>
                         <span style="display: block;color: red;">删除(2)</span>
                     </p>
                 </div>
-            </div>
-        </div>
+            </div> -->
+        <!-- </div> -->
+        <ScdNow v-if="lookType == 0" @nowBack="nowBack" :arrNew="arrNew"></ScdNow>
+        <ScdAdd v-if="lookType == 1" :arrNew="arrNew"></ScdAdd>
+        <ScdDel v-if="lookType == 3" :arrNew="arrNew"></ScdDel>
+        <ScdEdit v-if="lookType == 2" :arrNew="arrNew"></ScdEdit>
     </div>
 </template>
 
@@ -76,124 +80,75 @@ import { ref, onMounted, toRefs, watch, onBeforeUnmount } from 'vue';
 import LeaderLine from '../../../../public/leader-line.min.js';
 import scdCheck from '@/api/scdCheck/scdCheck'
 import image from "../utils/image"
+import ScdAdd from './ScdAdd.vue';
+import ScdDel from './ScdDel.vue';
+import ScdEdit from './ScdEdit.vue';
+import ScdNow from './ScdNow.vue';
+import { ElLoading } from 'element-plus';
 export default {
     props: {
         antherBack: {
             type: Array,
             required: true
         },
+        activeNav: {
+            type: Number,
+            required: true
+        }
     },
     setup(props, { emit }) {
         let arrNew = ref([])
         let chicken = ref('')
         let kun = ref('')
         let lineList = []//线条显示
+        let lookType = ref(0)//0为查看整体,1为新增,2为修改,3为删除
         watch(() => props.antherBack, (newVal) => {
             arrNew.value = newVal//监听传递数据变化
-            if (arrNew.value.length == 1) {
-                chicken.value = arrNew.value[0].scd_name
-            }
-            if (arrNew.value.length == 2) {
-                chicken.value = arrNew.value[0].scd_name
-                kun.value = arrNew.value[1].scd_name
+            if (!arrNew.value || !newVal) {
+                return
+            } else {
+                if (arrNew.value.length == 1) {
+                    chicken.value = arrNew.value[0].scd_name
+                }
+                if (arrNew.value.length == 2) {
+                    chicken.value = arrNew.value[0].scd_name
+                    kun.value = arrNew.value[1].scd_name
+                }
             }
+
         })
         function lastList() {//初始化数据
+            lookType.value = 0
             arrNew.value = props.antherBack
-            if (arrNew.value.length == 1) {
-                chicken.value = arrNew.value[0].scd_name
-            }
-            if (arrNew.value.length == 2) {
-                chicken.value = arrNew.value[0].scd_name
-                kun.value = arrNew.value[1].scd_name
+            if (!arrNew.value || !props.antherBack) {
+                if (arrNew.value.length == 1) {
+                    chicken.value = arrNew.value[0].scd_name
+                }
+                if (arrNew.value.length == 2) {
+                    chicken.value = arrNew.value[0].scd_name
+                    kun.value = arrNew.value[1].scd_name
+                }
             }
         }
-        function lineWrite() {
-            let oldScd = document.getElementById("oldScd")
-            let newScd = document.getElementById("newScd")
-            let oldCrc = document.getElementById("oldCrc")
-            let newCrc = document.getElementById("newCrc")
-            let oldIed = document.getElementById("oldIed")
-            let newIed = document.getElementById("newIed")
-            let addId = document.getElementById("addId")
-            let editId = document.getElementById('editId')
-            let delId = document.getElementById("delId")
-            lineList.push(new LeaderLine(oldScd, newScd, {
-                color: "blue",//连接线颜色
-                size: 10,//连接线宽度
-                path: "straight",//连接线样式
-                startSocket: "bottom",//开始链接元素位置
-                endSocket: "top",//结束链接元素位置
-                dash: {
-                    // 绘制线的长度 'auto'=size*2
-                    len: 1,
-                    // 绘制线之间的间隙 'auto'=size
-                    gap: 6,
-                    // 线条滚动 true 是(或者{duration: 1000, timing: 'linear'},详见动画选项), false 否(默认)
-                    animation: {
-                        duration: 800,//动画速度
-                        timing: "linear",
-                    },
-                },//动画开启
-                endPlug: 'arrow3',//结束箭头
-                endPlugSize: 0.5,//结束箭头size
-            }))
-            lineList.push(new LeaderLine(oldCrc, newCrc, {
-                color: "blue",//连接线颜色
-                size: 10,//连接线宽度
-                path: "straight",//连接线样式
-                startSocket: "bottom",//开始链接元素位置
-                endSocket: "top",//结束链接元素位置
-                dash: {
-                    // 绘制线的长度 'auto'=size*2
-                    len: 1,
-                    // 绘制线之间的间隙 'auto'=size
-                    gap: 6,
-                    // 线条滚动 true 是(或者{duration: 1000, timing: 'linear'},详见动画选项), false 否(默认)
-                    animation: {
-                        duration: 800,//动画速度
-                        timing: "linear",
-                    },
-                },//动画开启
-                endPlug: 'arrow3',//结束箭头
-                endPlugSize: 0.5,//结束箭头size
-            }))
-            lineList.push(new LeaderLine(oldIed, addId, {
-                color: "gray",//连接线颜色
-                size: 2,//连接线宽度
-                path: "grid",//连接线样式
-                startSocket: "bottom",//开始链接元素位置
-                endSocket: "left",//结束链接元素位置
-                endPlug: 'disc',//结束箭头
-                endPlugSize: 2,//结束箭头size
-            }))
-            lineList.push(new LeaderLine(oldIed, editId, {
-                color: "gray",//连接线颜色
-                size: 2,//连接线宽度
-                path: "grid",//连接线样式
-                startSocket: "bottom",//开始链接元素位置
-                endSocket: "left",//结束链接元素位置
-                endPlug: 'disc',//结束箭头
-                endPlugSize: 2,//结束箭头size
-            }))
-            lineList.push(new LeaderLine(oldIed, delId, {
-                color: "gray",//连接线颜色
-                size: 2,//连接线宽度
-                path: "grid",//连接线样式
-                startSocket: "bottom",//开始链接元素位置
-                endSocket: "left",//结束链接元素位置
-                endPlug: 'disc',//结束箭头
-                endPlugSize: 2,//结束箭头size
-            }))
+        function nowBack(data) {
+            lookType.value = data
+        }
+        const openFullScreen2 = () => {
+            const loading = ElLoading.service({
+                lock: true,
+                text: '正在加载',
+                background: 'rgba(0, 0, 0, 0.7)',
+            })
+            setTimeout(() => {
+                loading.close()
+            }, 2000)
         }
         onMounted(() => {
             lastList()
-            // lineWrite()
-            setTimeout(()=>{
-                lineWrite()
-            },1000)
+            openFullScreen2()
         })
         onBeforeUnmount(() => {
+            lookType.value = 0
             lineList.forEach(line => line.remove());//清除连线
         })
         return {
@@ -202,8 +157,16 @@ export default {
             arrNew,//传递数组
             lastList,//初始化数据
             lineList,//线条显示
-            lineWrite,//画线函数
+            lookType,//0为查看整体,1为新增,2为修改,3为删除
+            nowBack,
+            openFullScreen2,//加载
         }
+    },
+    components: {
+        ScdAdd,
+        ScdDel,
+        ScdEdit,
+        ScdNow
     }
 }
 </script>

+ 3 - 0
src/pages/netStructPicture/components/scdTree.vue

@@ -85,6 +85,9 @@ export default {
             scdCheck.scdResult({comp_id:row.id}).then(res=>{
                 console.log(res,'对比详细');
             })
+            scdCheck.scdAll({comp_id:row.id}).then(res=>{
+                console.log(res,'阿拉蕾');
+            })
         }
         function lookScdBack(data,row) {//选择scd文件模态框返回数据
             lookScdModal.value = data

+ 24 - 31
src/pages/netStructPicture/index.vue

@@ -57,7 +57,7 @@
               <scdTree @scdTreeBack="scdTreeBack"></scdTree>
             </div>
             <div class="scdMap">
-              <scdMap :antherBack="antherBack"></scdMap>
+              <scdMap :antherBack="antherBack" :activeNav="activeNav"></scdMap>
             </div>
           </div>
         </div>
@@ -82,6 +82,7 @@ import { useRoute } from 'vue-router';
 import cid from "@/api/cid/cid";
 import { ElMessage } from "element-plus";
 import systemRow from "@/api/systemRow";
+import scdCheck from "@/api/scdCheck/scdCheck";
 const activeName = ref("first");//默认展示网络结构图
 const navtopData = ref([
   { name: "CID一致性校核" },
@@ -93,11 +94,10 @@ const navtopData = ref([
 const activeNav = ref(null);
 const backName = ref('')//树组件返回名称
 let mustVal = ref(false)
-let fileWater = ref({})//基准文件流
-let fileCase = ref({})//对比文件流
 let upName = ref('')//上传的文件名称
 let arrName = ref('')//基准的文件名称
-let fileArr = ref([])//一对文件
+let upFile = ref({})//上传文件流
+let backId = ref('')//返回id
 let antherBack = ref([])
 watch(() => antherBack.value, (newVal) => {
   antherBack.value = newVal
@@ -113,43 +113,34 @@ const handleClick = (val) => {
     activeName.value = val.props.name
   }
 }
-const treeBack = (data) => {
+const treeBack = (data, ids) => {
   backName.value = data
+  arrName.value = data
+  backId.value = ids
+  console.log(ids, 'ids');
 }
 const closeX = () => {
   activeName.value = 'first'
   activeNav.value = null
 }
 const nowUpload = (file, e) => {
-  if (fileArr.value.length == 2) {
-    ElMessage({
-      type: "error",
-      message: "已经有两个对比文件了!"
-    })
-
-  } else {
-    fileArr.value.push(file.file)
-    fileWater.value = fileArr.value[0]//基准文件
-    arrName.value = fileArr.value[0].name
-    cid.fileUpload({ station_id: 1, file: fileWater.value }).then(res => {
-      console.log(res, '文件上传1');
-    })
-    if (fileArr.value.length == 2) {
-      upName.value = fileArr.value[1].name//对比文件
-      fileCase.value = fileArr.value[1]
-      cid.fileUpload({ station_id: 1, file: fileCase.value }).then(res => {
-        console.log(res, '文件上传2');
+  upFile.value = file.file
+  upName.value = file.file.name
+  cid.fileUpload({ station_id: 861, file: upFile.value,data_type:"cid" }).then(res => {
+    if (res.code == 0) {
+      let idp = `${file.file.uid},${backId.value}`
+      ElMessage({
+        type: 'success',
+        message: "上传成功!"
       })
-      systemRow.scdLockNow({
-        type: "cid",
-        station_id: 1,
-        ids: fileCase.value.uid + ',' + fileWater.value.uid
-      }).then(res => {
-        console.log(res, '对比');
+      scdCheck.scdStart({type:'cid',station_id:861,ids:idp}).then(res=>{
+        console.log(res,'show');
       })
     }
-  }
-}
+  })
+
+};
+
 const handleRemove = (file, e) => {
   console.log(file, e, '删除');
 }
@@ -173,6 +164,8 @@ const portExcel = () => {
     }
   })
 }
+onMounted(()=>{
+})
 </script>
 
 <style scoped lang="scss">

+ 6 - 0
src/pages/netStructPicture/modalCom/LookScd.vue

@@ -82,6 +82,12 @@ export default {
                         props.aktType()
                         dialogVisible.value = false
                         emit("lookScdBack", dialogVisible.value,scdid.value)
+                    }else{
+                        loading.value = false
+                        ElMessage({
+                            type:"error",
+                            message:"错误"
+                        })
                     }
                 })
             }

+ 25 - 10
src/pages/setting/components/ReportModule.vue

@@ -35,11 +35,15 @@
                     <el-table ref="multipleTableRef" :data="reportList" style="width: 100%;height: calc(100vh - 240px);"
                         @selection-change="handleSelectionChange">
                         <el-table-column type="selection" width="55" />
-                        <el-table-column property="name" label="编号" width="auto" />
-                        <el-table-column property="address" label="模板名称" width="auto" show-overflow-tooltip />
-                        <el-table-column property="address" label="模板描述" width="auto" show-overflow-tooltip />
-                        <el-table-column property="address" label="上传时间" width="auto" show-overflow-tooltip />
-                        <el-table-column fixed="right" label="操作" width="120">
+                        <el-table-column label="编号" width="auto">
+                            <template #default="scope">
+                                {{ scope.$index + 1 }}
+                            </template>
+                        </el-table-column>
+                        <el-table-column property="name" label="模板名称" width="auto" show-overflow-tooltip />
+                        <el-table-column property="memo" label="模板描述" width="auto" show-overflow-tooltip />
+                        <el-table-column property="ct" label="上传时间" width="auto" show-overflow-tooltip />
+                        <el-table-column fixed="right" label="操作" width="180">
                             <template #default="scope">
                                 <el-button link type="primary" size="small" @click="openAdd(1, scope.row)">
                                     <el-icon>
@@ -49,7 +53,7 @@
                                     <el-icon>
                                         <Download />
                                     </el-icon>下载</el-button>
-                                <el-button style="color: red;" link type="primary" size="small">
+                                <el-button style="color: red;" link type="primary" size="small" @click="openDel(scope.row)">
                                     <el-icon style="color: red;">
                                         <Delete />
                                     </el-icon>删除</el-button>
@@ -62,9 +66,9 @@
                 <Pagination :tLength="totals"></Pagination>
             </div>
             <div class="modalBox">
-                <Addrm v-if="addModal" :addModal="addModal" :addOrEdit="addOrEdit" :editRow="editRow" @armBack="armBack">
+                <Addrm v-if="addModal" :addModal="addModal" :addOrEdit="addOrEdit" :editRow="editRow" :searchReport="searchReport" @armBack="armBack">
                 </Addrm>
-                <Delrm v-if="delModal" :delModal="delModal"></Delrm>
+                <Delrm v-if="delModal" :delModal="delModal" :delId="delId" :searchReport="searchReport" @delrmBack="delrmBack"></Delrm>
             </div>
         </div>
     </div>
@@ -89,8 +93,10 @@ export default {
         let totals = ref(0)//总条数
         let addOrEdit = ref(0)//0为新增,1为修改
         let editRow = ref({})//需要回显的对象
+        let delId = ref('')//需要删除的id
         function searchReport() {//查询所有报告模板
-            report.getReport({}).then(res => {
+            report.getReport({ pageno: 1, pagesize: 20 }).then(res => {
+                console.log(res, 'sss');
                 reportList.value = res.data
                 totals.value = res.count
             })
@@ -101,16 +107,22 @@ export default {
         function timeChange(e) {//时间选择器change事件
             let a = moment(e[0]).format("YYYY-MM-DD HH:mm:ss")//开始时间
             let b = moment(e[1]).format("YYYY-MM-DD HH:mm:ss")//结束时间
-            console.log(a, b, 'aaa');
         }
         function openAdd(num, row) {//打开,新增编辑模态框
             addOrEdit.value = num
             editRow.value = row
             addModal.value = true
         }
+        function openDel(row) {
+            delModal.value = true
+            delId.value = row.id
+        }
         function armBack(data) {//新增编辑模态框返回数据
             addModal.value = data
         }
+        function delrmBack(data) {
+            delModal.value = data
+        }
         onMounted(() => {
             searchReport()
         })
@@ -130,6 +142,9 @@ export default {
             openAdd,//打开新增编辑模态框
             addOrEdit,//0新增,1修改
             editRow,//需要回显的对象
+            openDel,//打开删除模态框
+            delId,//需要删除的id
+            delrmBack,//delrm.vue返回模态框状态
         }
     },
     components: {

+ 36 - 24
src/pages/setting/modalComp/Addrm.vue

@@ -36,6 +36,7 @@
 <script>
 import { ref, onMounted, toRefs, reactive } from 'vue';
 import report from '@/api/report';
+import cid from '@/api/cid/cid';
 import { ElMessage } from 'element-plus';
 export default {
     props: {
@@ -50,6 +51,10 @@ export default {
         editRow: {
             type: Object,
             required: true
+        },
+        searchReport:{
+            type:Function,
+            required:true
         }
     },
     setup(props, { emit }) {
@@ -88,38 +93,45 @@ export default {
             dialogVisible.value = result
         }
         function uploadFile(e) {
-            addForm.value.docid = e.file.uid
             addForm.value.docName = e.file.name
             filesCacl.value = e.file
-            console.log(e, 'file');
+            cid.fileUpload({ station_id: 861, file: filesCacl.value,attachment_type:'tpl' }).then(res => {
+                addForm.value.docid = res.data.fileid
+            })
         }
         function getCancel() {
             dialogVisible.value = false
             emit("armBack", dialogVisible.value)
         }
         function getSure() {
-         if(tipsNow == 0){
-            report.addReport({
-                name: addForm.value.name,
-                doc_id: addForm.value.docid,
-                memo: addForm.value.memos,
-                state: addForm.value.states
-            }).then(res => {
-                dialogVisible.value = false
-                emit("armBack", dialogVisible.value)
-            })
-         }else if(tipsNow == 1){
-            report.addReport({
-                id:"id",
-                name: addForm.value.name,
-                doc_id: addForm.value.docid,
-                memo: addForm.value.memos,
-                state: addForm.value.states
-            }).then(res => {
-                dialogVisible.value = false
-                emit("armBack", dialogVisible.value)
-            })
-         }
+            if (tipsNow == 0) {
+                report.addReport({
+                    name: addForm.value.name,
+                    doc_id: addForm.value.docid - 0,
+                    memo: addForm.value.memos,
+                    state: addForm.value.states - 0,
+                }).then(res => {
+                    ElMessage({
+                        type:"success",
+                        message:"新增成功"
+                    })
+                    props.searchReport()
+                    dialogVisible.value = false
+                    emit("armBack", dialogVisible.value)
+                })
+            } else if (tipsNow == 1) {
+                report.addReport({
+                    id: "id",
+                    name: addForm.value.name,
+                    doc_id: addForm.value.docid - 0,
+                    memo: addForm.value.memos,
+                    state: addForm.value.states - 0,
+                }).then(res => {
+                    props.searchReport()
+                    dialogVisible.value = false
+                    emit("armBack", dialogVisible.value)
+                })
+            }
 
         }
         onMounted(() => {

+ 55 - 5
src/pages/setting/modalComp/Delrm.vue

@@ -13,13 +13,63 @@
 </template>
 
 <script>
-import { ref, onMounted, toRefs } from 'vue'
+import { ref, onMounted, toRefs, watch } from 'vue'
+import report from '@/api/report'
+import { ElMessage } from 'element-plus'
 export default {
-    setup() {
+    props: {
+        delModal: {
+            type: Boolean,
+            required: true
+        },
+        delId: {
+            type: String,
+            required: true
+        },
+        searchReport:{
+            type:Function,
+            required:true
+        }
+    },
+    setup(props, { emit }) {
         let dialogVisible = ref(false)
-        
-
-        return {}
+        let result = props.delModal
+        let resultId = props.delId
+        let lete = ref('')
+        watch(() => props.delId, (newVal) => {
+            lete.value = newVal
+        })
+        function reload() {
+            dialogVisible.value = result
+            lete.value = props.delId
+        }
+        function allClose() {
+            dialogVisible.value = false
+            emit("delrmBack", dialogVisible.value)
+        }
+        function allTrue() {
+            report.delReport({ id: lete.value - 0 }).then(res => {
+                if (res.code == 0) {
+                    ElMessage({
+                        type: "success",
+                        message: "删除成功"
+                    })
+                    props.searchReport()
+                    dialogVisible.value = false
+                    emit("delrmBack", dialogVisible.value)
+                }
+            })
+        }
+        onMounted(() => {
+            reload()
+        })
+        return {
+            dialogVisible,
+            reload,
+            closes: allClose,
+            cancels: allClose,
+            sureAdd: allTrue,
+        }
     }
 }
 </script>

+ 40 - 32
src/pages/system/components/LineTree.vue

@@ -1,18 +1,22 @@
 <template>
     <div>
         <div class="traBox">
-            <span style="line-height: 22px;height: 22px;float: left;width: 92%;margin: 4%;font-weight: bold;border-bottom: 1px solid #e4e2e2;">
-                <img style="width: 20px;height: 20px;margin-right: 5px;float: left;" src="../../../assets/icon/pice_set.png" alt="">
+            <span
+                style="line-height: 22px;height: 22px;float: left;width: 92%;margin: 4%;font-weight: bold;border-bottom: 1px solid #e4e2e2;">
+                <img style="width: 20px;height: 20px;margin-right: 5px;float: left;" src="../../../assets/icon/pice_set.png"
+                    alt="">
                 <span style="float: left;">接线方式</span>
             </span>
-            <el-tree v-if="vif" node-key="id" style="float: left;width: 100%;margin: 0 auto;background-color: #F7F8FB;" :data="lineData" :props="defaultProps"
-                @node-click="handleNodeClick" />
-            <el-tree v-else node-key="id" style="float: left;width: 100%;margin: 0 auto;background-color: #F7F8FB;" :data="lineData" :props="defaultProps"
-                @node-click="handleModelNodeClick" ref="tree2">
-                <template #default="{node,data}">
+            <el-tree v-if="vif" node-key="id" style="float: left;width: 100%;margin: 0 auto;background-color: #F7F8FB;"
+                :data="lineData" :props="defaultProps" @node-click="handleNodeClick" />
+            <el-tree v-else node-key="id" style="float: left;width: 100%;margin: 0 auto;background-color: #F7F8FB;"
+                :data="lineData" :props="defaultProps" @node-click="handleModelNodeClick" ref="tree2">
+                <template #default="{ node, data }">
                     <span>
                         <!-- 正常情况 -->
-                        <span v-if="data.datatype=='linkstyle'"><img style="width: 20px;height: 20px;margin-right: 5px;float: left;" src="../../../assets/icon/pice_set.png" alt=""/></span>
+                        <span v-if="data.datatype == 'linkstyle'"><img
+                                style="width: 20px;height: 20px;margin-right: 5px;float: left;"
+                                src="../../../assets/icon/pice_set.png" alt="" /></span>
                         <span>
                             {{ node.label }}
                         </span>
@@ -65,24 +69,24 @@ export default {
         }
         function searchFlashLel() {//拿到电压等级
             systemRow.getChildren({ code: "voltage_level" }).then(res => {
-                vif.value = true            
+                vif.value = true
                 if (props.selectIndex == 1) {
                     vif.value = false
                     // 获取每个电压等级下的接线方式
                     litLine.getAllLine({ pageno: 1, pagesize: 1000 }).then(res2 => {
-                        for(let i=0; i<res2.data.length; i++){
+                        for (let i = 0; i < res2.data.length; i++) {
                             const vol_level_id = res2.data[i].vol_level_id
-                            res.data.filter((item)=>{ 
-                                if (item.id==vol_level_id) {
+                            res.data.filter((item) => {
+                                if (item.id == vol_level_id) {
                                     res2.data[i]['datatype'] = 'linkstyle'
-                                    item['children']==null ?  item['children']=[res2.data[i]] : item['children'].push(res2.data[i])                                    
+                                    item['children'] == null ? item['children'] = [res2.data[i]] : item['children'].push(res2.data[i])
                                     return item
                                 }
-                            })                            
+                            })
                         }
                         lineData.value = res.data
                     })
-                }else{
+                } else {
                     lineData.value = res.data
                 }
             })
@@ -91,28 +95,28 @@ export default {
             litLine.getAllLine({ pageno: 1, pagesize: 20, vol_id: e.id - 0 }).then(res => {
                 // console.log(res, 'asdasdasd');
                 pushList.value = res.data
-                emit("listBack",res.data)
+                emit("listBack", res.data)
             })
         }
         function handleModelNodeClick(e) {
             // 模型管理       
-            if(e.datatype==='linkstyle') {
+            if (e.datatype === 'linkstyle') {
                 // 接线方式
-                litLine.getAllm({pageno: 1, pagesize: 20,line_link_style:e.id}).then(res => {
-                    emit("listBack",res.data,e.id)
+                litLine.getAllm({ pageno: 1, pagesize: 20, line_link_style: e.id }).then(res => {
+                    emit("listBack", res.data, e.id)
                 })
-            }else{
+            } else {
                 // 电压等级
-                litLine.getAllm({pageno: 1, pagesize: 20,vol_id:e.id}).then(res => {
-                    emit("volBack",res.data,e.id)
+                litLine.getAllm({ pageno: 1, pagesize: 20, vol_id: e.id }).then(res => {
+                    emit("volBack", res.data, e.id)
                 })
             }
         }
-        function pClick(row,num){
+        function pClick(row, num) {
             selectIndex.value = num
             litLine.getAllLine({ pageno: 1, pagesize: 10, vol_id: row.id - 0 }).then(res => {
                 pushList.value = res.data
-                emit("listBack",pushList.value,row.id)
+                emit("listBack", pushList.value, row.id)
             })
         }
         onMounted(() => {
@@ -140,28 +144,32 @@ export default {
 }
 </script>
 
-<style>
+<style scoped>
 .traBox {
     text-align: center;
 }
-.result{
+
+.result {
     font-size: 12px;
     color: #5D7FDA;
 }
-.chooseP{
+
+.chooseP {
     font-size: 12px;
 }
-.el-tree{
-    --el-tree-node-content-height:32px;
+
+.el-tree {
+    --el-tree-node-content-height: 32px;
     --el-tree-node-hover-bg-color: #b2b4ef80 !important;
 }
-.el-tree-node:hover{
+
+.el-tree-node:hover {
     background-color: #b2b4ef80 !important;
     color: #fff;
 }
+
 .is-current {
     background: #b2b4ef !important;
     color: #fff !important;
     font-weight: bold;
-}
-</style>
+}</style>

Разлика између датотеке није приказан због своје велике величине
+ 345 - 347
yarn.lock


Неке датотеке нису приказане због велике количине промена